X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=drm-lease-manager%2Ftest%2Ftest-drm-device.c;h=1d1e0968a4a2c69156f772f944c54f5c50780712;hb=e39cb4f5d10e162bc7a5a5a173581c1924d475ea;hp=c024d6e25c2b639e3a54fb46ac6eae31197ec752;hpb=e81466892689b6814d5e9bf0e80b792bfee47c83;p=src%2Fdrm-lease-manager.git diff --git a/drm-lease-manager/test/test-drm-device.c b/drm-lease-manager/test/test-drm-device.c index c024d6e..1d1e096 100644 --- a/drm-lease-manager/test/test-drm-device.c +++ b/drm-lease-manager/test/test-drm-device.c @@ -76,6 +76,13 @@ void reset_drm_test_device(void) free(test_device.resources.encoders); free(test_device.plane_resources.planes); free(test_device.leases.lessee_ids); + + if (test_device.layout.free_on_reset) { + free(test_device.layout.connectors); + free(test_device.layout.encoders); + free(test_device.layout.planes); + } + memset(&test_device, 0, sizeof(test_device)); } @@ -87,6 +94,42 @@ void setup_test_device_layout(drmModeConnector *connectors, test_device.layout.planes = planes; } +void setup_layout_simple_test_device(int conn_cnt, int plane_cnt) +{ + drmModeConnector *connectors; + drmModeEncoder *encoders; + drmModePlane *planes = NULL; + + ck_assert_int_ge(conn_cnt, 1); + + setup_drm_test_device(conn_cnt, conn_cnt, conn_cnt, plane_cnt); + + ck_assert_ptr_ne( + connectors = calloc(sizeof(drmModeConnector), conn_cnt), NULL); + ck_assert_ptr_ne(encoders = calloc(sizeof(drmModeEncoder), conn_cnt), + NULL); + + if (plane_cnt > 0) + ck_assert_ptr_ne( + planes = calloc(sizeof(drmModePlane), plane_cnt), NULL); + + int crtc_mask = (1 << conn_cnt) - 1; + for (int i = 0; i < conn_cnt; i++) { + connectors[i] = (drmModeConnector)CONNECTOR( + CONNECTOR_ID(i), ENCODER_ID(i), &ENCODER_ID(i), 1); + encoders[i] = (drmModeEncoder)ENCODER(ENCODER_ID(i), CRTC_ID(i), + crtc_mask); + } + + for (int i = 0; i < plane_cnt; i++) { + planes[i] = + (drmModePlane)PLANE(PLANE_ID(i), 1 << (i % conn_cnt)); + } + + setup_test_device_layout(connectors, encoders, planes); + test_device.layout.free_on_reset = true; +} + #define GET_DRM_RESOURCE_FN(Res, res, RES, container) \ drmMode##Res##Ptr get_##res(int fd, uint32_t id) \ { \