* [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion
@ 2023-09-18 7:54 Swati Sharma
2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 1/6] tests/kms_atomic: cosmetic changes Swati Sharma
` (9 more replies)
0 siblings, 10 replies; 18+ messages in thread
From: Swati Sharma @ 2023-09-18 7:54 UTC (permalink / raw)
To: igt-dev
In this patch series, code rework is done. Also, subtests are
converted to dynamic subtests. Flexibility is added to run subtests
on all valid pipe/output combinations.
Swati Sharma (6):
tests/kms_atomic: cosmetic changes
tests/kms_atomic: rename subtest
tests/kms_atomic: test cleanup
tests/kms_atomic: convert subtests to dynamic subtests
tests/kms_atomic: check validity of pipe-output combo
tests/kms_atomic: add flexibility to run tests on all pipes
tests/kms_atomic.c | 1070 ++++++++++++++++++++++++--------------------
1 file changed, 595 insertions(+), 475 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 18+ messages in thread* [igt-dev] [PATCH i-g-t 1/6] tests/kms_atomic: cosmetic changes 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma @ 2023-09-18 7:54 ` Swati Sharma 2023-09-26 16:37 ` Modem, Bhanuprakash 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 2/6] tests/kms_atomic: rename subtest Swati Sharma ` (8 subsequent siblings) 9 siblings, 1 reply; 18+ messages in thread From: Swati Sharma @ 2023-09-18 7:54 UTC (permalink / raw) To: igt-dev Removed unnecessary newlines. Corrected multi-line comments. Signed-off-by: Swati Sharma <swati2.sharma@intel.com> --- tests/kms_atomic.c | 101 +++++++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 44 deletions(-) diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c index d1511716a..951014685 100644 --- a/tests/kms_atomic.c +++ b/tests/kms_atomic.c @@ -74,7 +74,6 @@ static inline int damage_rect_height(struct drm_mode_rect *r) return r->y2 - r->y1; } - static bool plane_filter(enum igt_atomic_plane_properties prop) { if ((1 << prop) & IGT_PLANE_COORD_CHANGED_MASK) @@ -121,8 +120,10 @@ static void plane_check_current_state(igt_plane_t *plane, const uint64_t *values plane_get_current_state(plane, current_values); - /* Legacy cursor ioctls create their own, unknowable, internal - * framebuffer which we can't reason about. */ + /* + * Legacy cursor ioctls create their own, unknowable, internal + * framebuffer which we can't reason about. + */ if (relax & PLANE_RELAX_FB) current_values[IGT_PLANE_FB_ID] = values[IGT_PLANE_FB_ID]; @@ -188,7 +189,6 @@ static void crtc_check_current_state(igt_pipe_t *pipe, if (pipe_values[IGT_CRTC_MODE_ID]) { mode_prop = drmModeGetPropertyBlob(pipe->display->drm_fd, pipe_values[IGT_CRTC_MODE_ID]); - igt_assert(mode_prop); igt_assert_eq(mode_prop->length, @@ -220,9 +220,11 @@ static void crtc_check_current_state(igt_pipe_t *pipe, crtc_get_current_state(pipe, current_pipe_values); - /* Optionally relax the check for MODE_ID: using the legacy SetCrtc + /* + * Optionally relax the check for MODE_ID: using the legacy SetCrtc * API can potentially change MODE_ID even if the mode itself remains - * unchanged. */ + * unchanged. + */ if (relax & CRTC_RELAX_MODE && mode && current_pipe_values[IGT_CRTC_MODE_ID] && current_pipe_values[IGT_CRTC_MODE_ID] != pipe_values[IGT_CRTC_MODE_ID]) { drmModePropertyBlobRes *cur_prop = @@ -475,8 +477,8 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, igt_assert(fb_id_upper); /* - * checking only pairs of plane in increasing fashion - * to avoid combinatorial explosion + * Checking only pairs of plane in increasing fashion + * to avoid combinatorial explosion. */ for (int i = 0; i < n_planes - 1; i++) { igt_plane_t *plane_lower, *plane_upper; @@ -555,8 +557,10 @@ static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *p igt_plane_set_fb(plane, &fb); igt_plane_set_position(plane, w/2, h/2); - /* Enable the overlay plane using the atomic API, and double-check - * state is what we think it should be. */ + /* + * Enable the overlay plane using the atomic API, and double-check + * state is what we think it should be. + */ plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* Disable the plane and check the state matches the old. */ @@ -564,14 +568,18 @@ static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *p igt_plane_set_position(plane, 0, 0); plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); - /* Re-enable the plane through the legacy plane API, and verify through - * atomic. */ + /* + * Re-enable the plane through the legacy plane API, and verify through + * atomic. + */ igt_plane_set_fb(plane, &fb); igt_plane_set_position(plane, w/2, h/2); plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE); - /* Restore the plane to its original settings through the legacy plane - * API, and verify through atomic. */ + /* + * Restore the plane to its original settings through the legacy plane + * API, and verify through atomic. + */ igt_plane_set_fb(plane, NULL); igt_plane_set_position(plane, 0, 0); plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE); @@ -588,8 +596,10 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, &fb2); - /* Flip the primary plane using the atomic API, and double-check - * state is what we think it should be. */ + /* + * Flip the primary plane using the atomic API, and double-check + * state is what we think it should be. + */ igt_plane_set_fb(plane, &fb2); crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); @@ -597,18 +607,24 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f igt_plane_set_fb(plane, fb); crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); - /* Set the plane through the legacy CRTC/primary-plane API, and - * verify through atomic. */ + /* + * Set the plane through the legacy CRTC/primary-plane API, and + * verify through atomic. + */ igt_plane_set_fb(plane, &fb2); crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); - /* Restore the plane to its original settings through the legacy CRTC - * API, and verify through atomic. */ + /* + * Restore the plane to its original settings through the legacy CRTC + * API, and verify through atomic. + */ igt_plane_set_fb(plane, fb); crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); - /* Set the plane through the universal setplane API, and - * verify through atomic. */ + /* + * Set the plane through the universal setplane API, and + * verify through atomic. + */ igt_plane_set_fb(plane, &fb2); plane_commit(plane, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE); } @@ -623,7 +639,8 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f * Test category: functionality test */ -/* test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the +/* + * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the * free-standing state objects and nothing else. */ static void test_only(igt_pipe_t *pipe_obj, @@ -703,8 +720,10 @@ static void plane_cursor(igt_pipe_t *pipe_obj, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 0.0, &fb); - /* Flip the cursor plane using the atomic API, and double-check - * state is what we think it should be. */ + /* + * Flip the cursor plane using the atomic API, and double-check + * state is what we think it should be. + */ igt_plane_set_fb(cursor, &fb); igt_plane_set_position(cursor, x, y); plane_commit(cursor, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); @@ -714,8 +733,10 @@ static void plane_cursor(igt_pipe_t *pipe_obj, igt_plane_set_position(cursor, 0, 0); plane_commit(cursor, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); - /* Re-enable the plane through the legacy cursor API, and verify - * through atomic. */ + /* + * Re-enable the plane through the legacy cursor API, and verify + * through atomic. + */ igt_plane_set_fb(cursor, &fb); igt_plane_set_position(cursor, x, y); plane_commit(cursor, COMMIT_LEGACY, PLANE_RELAX_FB); @@ -724,8 +745,10 @@ static void plane_cursor(igt_pipe_t *pipe_obj, igt_plane_set_position(cursor, x - 16, y - 16); plane_commit(cursor, COMMIT_LEGACY, PLANE_RELAX_FB); - /* Restore the plane to its original settings through the legacy cursor - * API, and verify through atomic. */ + /* + * Restore the plane to its original settings through the legacy cursor + * API, and verify through atomic. + */ igt_plane_set_fb(cursor, NULL); igt_plane_set_position(cursor, 0, 0); plane_commit(cursor, COMMIT_LEGACY, ATOMIC_RELAX_NONE); @@ -1004,8 +1027,10 @@ static void crtc_invalid_params_fence(igt_pipe_t *pipe, * Test category: functionality test */ -/* Abuse the atomic ioctl directly in order to test various invalid conditions, - * which the libdrm wrapper won't allow us to create. */ +/* + * Abuse the atomic ioctl directly in order to test various invalid conditions, + * which the libdrm wrapper won't allow us to create. + */ static void atomic_invalid_params(igt_pipe_t *pipe, igt_plane_t *plane, igt_output_t *output, @@ -1088,7 +1113,6 @@ static void atomic_invalid_params(igt_pipe_t *pipe, do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); /* Valid property, valid value. */ - for (i = 0; i < ARRAY_SIZE(props_raw); i++) { props_raw[i] = pipe->props[IGT_CRTC_MODE_ID]; values_raw[i] = pipe->values[IGT_CRTC_MODE_ID]; @@ -1227,7 +1251,7 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt * NOTE: This will result in no update on plane as damage is outside, so * will see no change on the screen. */ - /* Reszie fb_1 to be bigger than plane */ + /* Resize fb_1 to be bigger than plane */ igt_remove_fb(pipe->display->drm_fd, &fb_1); igt_create_color_fb(pipe->display->drm_fd, fb->width * 2, fb->height, fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, @@ -1390,9 +1414,7 @@ igt_main igt_fixture { display.drm_fd = drm_open_driver_master(DRIVER_ANY); - kmstest_set_vt_graphics_mode(); - igt_display_require(&display, display.drm_fd); igt_require(display.is_atomic); igt_display_require_output(&display); @@ -1424,7 +1446,6 @@ igt_main igt_subtest("plane-overlay-legacy") { igt_plane_t *overlay = igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); - igt_require(overlay); atomic_setup(&display, pipe, output, primary, &fb); @@ -1435,7 +1456,6 @@ igt_main "the legacy and atomic interfaces."); igt_subtest("plane-primary-legacy") { atomic_setup(&display, pipe, output, primary, &fb); - plane_primary(pipe_obj, primary, &fb); } @@ -1491,7 +1511,6 @@ igt_main igt_subtest("plane-cursor-legacy") { igt_plane_t *cursor = igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_CURSOR); - igt_require(cursor); atomic_setup(&display, pipe, output, primary, &fb); @@ -1501,28 +1520,24 @@ igt_main igt_describe("Test error handling when invalid plane parameters are passed"); igt_subtest("plane-invalid-params") { atomic_setup(&display, pipe, output, primary, &fb); - plane_invalid_params(pipe_obj, output, primary, &fb); } igt_describe("Test error handling when invalid plane fence parameters are passed"); igt_subtest("plane-invalid-params-fence") { atomic_setup(&display, pipe, output, primary, &fb); - plane_invalid_params_fence(pipe_obj, output, primary); } igt_describe("Test error handling when invalid crtc parameters are passed"); igt_subtest("crtc-invalid-params") { atomic_setup(&display, pipe, output, primary, &fb); - crtc_invalid_params(pipe_obj, output, primary, &fb); } igt_describe("Test error handling when invalid crtc fence parameters are passed"); igt_subtest("crtc-invalid-params-fence") { atomic_setup(&display, pipe, output, primary, &fb); - crtc_invalid_params_fence(pipe_obj, output, primary, &fb); } @@ -1531,7 +1546,6 @@ igt_main "allow us to create."); igt_subtest("atomic-invalid-params") { atomic_setup(&display, pipe, output, primary, &fb); - atomic_invalid_params(pipe_obj, primary, output, &fb); } @@ -1540,7 +1554,6 @@ igt_main igt_require(igt_plane_has_prop(primary, IGT_PLANE_FB_DAMAGE_CLIPS)); atomic_setup(&display, pipe, output, primary, &fb); - atomic_plane_damage(pipe_obj, primary, &fb); } -- 2.25.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 1/6] tests/kms_atomic: cosmetic changes 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 1/6] tests/kms_atomic: cosmetic changes Swati Sharma @ 2023-09-26 16:37 ` Modem, Bhanuprakash 0 siblings, 0 replies; 18+ messages in thread From: Modem, Bhanuprakash @ 2023-09-26 16:37 UTC (permalink / raw) To: Swati Sharma, igt-dev On Mon-18-09-2023 01:24 pm, Swati Sharma wrote: > Removed unnecessary newlines. Corrected multi-line comments. Reviewed-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com> > > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > --- > tests/kms_atomic.c | 101 +++++++++++++++++++++++++-------------------- > 1 file changed, 57 insertions(+), 44 deletions(-) > > diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c > index d1511716a..951014685 100644 > --- a/tests/kms_atomic.c > +++ b/tests/kms_atomic.c > @@ -74,7 +74,6 @@ static inline int damage_rect_height(struct drm_mode_rect *r) > return r->y2 - r->y1; > } > > - > static bool plane_filter(enum igt_atomic_plane_properties prop) > { > if ((1 << prop) & IGT_PLANE_COORD_CHANGED_MASK) > @@ -121,8 +120,10 @@ static void plane_check_current_state(igt_plane_t *plane, const uint64_t *values > > plane_get_current_state(plane, current_values); > > - /* Legacy cursor ioctls create their own, unknowable, internal > - * framebuffer which we can't reason about. */ > + /* > + * Legacy cursor ioctls create their own, unknowable, internal > + * framebuffer which we can't reason about. > + */ > if (relax & PLANE_RELAX_FB) > current_values[IGT_PLANE_FB_ID] = values[IGT_PLANE_FB_ID]; > > @@ -188,7 +189,6 @@ static void crtc_check_current_state(igt_pipe_t *pipe, > if (pipe_values[IGT_CRTC_MODE_ID]) { > mode_prop = drmModeGetPropertyBlob(pipe->display->drm_fd, > pipe_values[IGT_CRTC_MODE_ID]); > - > igt_assert(mode_prop); > > igt_assert_eq(mode_prop->length, > @@ -220,9 +220,11 @@ static void crtc_check_current_state(igt_pipe_t *pipe, > > crtc_get_current_state(pipe, current_pipe_values); > > - /* Optionally relax the check for MODE_ID: using the legacy SetCrtc > + /* > + * Optionally relax the check for MODE_ID: using the legacy SetCrtc > * API can potentially change MODE_ID even if the mode itself remains > - * unchanged. */ > + * unchanged. > + */ > if (relax & CRTC_RELAX_MODE && mode && current_pipe_values[IGT_CRTC_MODE_ID] && > current_pipe_values[IGT_CRTC_MODE_ID] != pipe_values[IGT_CRTC_MODE_ID]) { > drmModePropertyBlobRes *cur_prop = > @@ -475,8 +477,8 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, > igt_assert(fb_id_upper); > > /* > - * checking only pairs of plane in increasing fashion > - * to avoid combinatorial explosion > + * Checking only pairs of plane in increasing fashion > + * to avoid combinatorial explosion. > */ > for (int i = 0; i < n_planes - 1; i++) { > igt_plane_t *plane_lower, *plane_upper; > @@ -555,8 +557,10 @@ static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *p > igt_plane_set_fb(plane, &fb); > igt_plane_set_position(plane, w/2, h/2); > > - /* Enable the overlay plane using the atomic API, and double-check > - * state is what we think it should be. */ > + /* > + * Enable the overlay plane using the atomic API, and double-check > + * state is what we think it should be. > + */ > plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* Disable the plane and check the state matches the old. */ > @@ -564,14 +568,18 @@ static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *p > igt_plane_set_position(plane, 0, 0); > plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > - /* Re-enable the plane through the legacy plane API, and verify through > - * atomic. */ > + /* > + * Re-enable the plane through the legacy plane API, and verify through > + * atomic. > + */ > igt_plane_set_fb(plane, &fb); > igt_plane_set_position(plane, w/2, h/2); > plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE); > > - /* Restore the plane to its original settings through the legacy plane > - * API, and verify through atomic. */ > + /* > + * Restore the plane to its original settings through the legacy plane > + * API, and verify through atomic. > + */ > igt_plane_set_fb(plane, NULL); > igt_plane_set_position(plane, 0, 0); > plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE); > @@ -588,8 +596,10 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f > fb->drm_format, DRM_FORMAT_MOD_LINEAR, > 0.2, 0.2, 0.2, &fb2); > > - /* Flip the primary plane using the atomic API, and double-check > - * state is what we think it should be. */ > + /* > + * Flip the primary plane using the atomic API, and double-check > + * state is what we think it should be. > + */ > igt_plane_set_fb(plane, &fb2); > crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > @@ -597,18 +607,24 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f > igt_plane_set_fb(plane, fb); > crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > - /* Set the plane through the legacy CRTC/primary-plane API, and > - * verify through atomic. */ > + /* > + * Set the plane through the legacy CRTC/primary-plane API, and > + * verify through atomic. > + */ > igt_plane_set_fb(plane, &fb2); > crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); > > - /* Restore the plane to its original settings through the legacy CRTC > - * API, and verify through atomic. */ > + /* > + * Restore the plane to its original settings through the legacy CRTC > + * API, and verify through atomic. > + */ > igt_plane_set_fb(plane, fb); > crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); > > - /* Set the plane through the universal setplane API, and > - * verify through atomic. */ > + /* > + * Set the plane through the universal setplane API, and > + * verify through atomic. > + */ > igt_plane_set_fb(plane, &fb2); > plane_commit(plane, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE); > } > @@ -623,7 +639,8 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f > * Test category: functionality test > */ > > -/* test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the > +/* > + * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the > * free-standing state objects and nothing else. > */ > static void test_only(igt_pipe_t *pipe_obj, > @@ -703,8 +720,10 @@ static void plane_cursor(igt_pipe_t *pipe_obj, > DRM_FORMAT_MOD_LINEAR, > 0.0, 0.0, 0.0, &fb); > > - /* Flip the cursor plane using the atomic API, and double-check > - * state is what we think it should be. */ > + /* > + * Flip the cursor plane using the atomic API, and double-check > + * state is what we think it should be. > + */ > igt_plane_set_fb(cursor, &fb); > igt_plane_set_position(cursor, x, y); > plane_commit(cursor, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > @@ -714,8 +733,10 @@ static void plane_cursor(igt_pipe_t *pipe_obj, > igt_plane_set_position(cursor, 0, 0); > plane_commit(cursor, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > - /* Re-enable the plane through the legacy cursor API, and verify > - * through atomic. */ > + /* > + * Re-enable the plane through the legacy cursor API, and verify > + * through atomic. > + */ > igt_plane_set_fb(cursor, &fb); > igt_plane_set_position(cursor, x, y); > plane_commit(cursor, COMMIT_LEGACY, PLANE_RELAX_FB); > @@ -724,8 +745,10 @@ static void plane_cursor(igt_pipe_t *pipe_obj, > igt_plane_set_position(cursor, x - 16, y - 16); > plane_commit(cursor, COMMIT_LEGACY, PLANE_RELAX_FB); > > - /* Restore the plane to its original settings through the legacy cursor > - * API, and verify through atomic. */ > + /* > + * Restore the plane to its original settings through the legacy cursor > + * API, and verify through atomic. > + */ > igt_plane_set_fb(cursor, NULL); > igt_plane_set_position(cursor, 0, 0); > plane_commit(cursor, COMMIT_LEGACY, ATOMIC_RELAX_NONE); > @@ -1004,8 +1027,10 @@ static void crtc_invalid_params_fence(igt_pipe_t *pipe, > * Test category: functionality test > */ > > -/* Abuse the atomic ioctl directly in order to test various invalid conditions, > - * which the libdrm wrapper won't allow us to create. */ > +/* > + * Abuse the atomic ioctl directly in order to test various invalid conditions, > + * which the libdrm wrapper won't allow us to create. > + */ > static void atomic_invalid_params(igt_pipe_t *pipe, > igt_plane_t *plane, > igt_output_t *output, > @@ -1088,7 +1113,6 @@ static void atomic_invalid_params(igt_pipe_t *pipe, > do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > > /* Valid property, valid value. */ > - > for (i = 0; i < ARRAY_SIZE(props_raw); i++) { > props_raw[i] = pipe->props[IGT_CRTC_MODE_ID]; > values_raw[i] = pipe->values[IGT_CRTC_MODE_ID]; > @@ -1227,7 +1251,7 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > * NOTE: This will result in no update on plane as damage is outside, so > * will see no change on the screen. > */ > - /* Reszie fb_1 to be bigger than plane */ > + /* Resize fb_1 to be bigger than plane */ > igt_remove_fb(pipe->display->drm_fd, &fb_1); > igt_create_color_fb(pipe->display->drm_fd, fb->width * 2, fb->height, > fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, > @@ -1390,9 +1414,7 @@ igt_main > > igt_fixture { > display.drm_fd = drm_open_driver_master(DRIVER_ANY); > - > kmstest_set_vt_graphics_mode(); > - > igt_display_require(&display, display.drm_fd); > igt_require(display.is_atomic); > igt_display_require_output(&display); > @@ -1424,7 +1446,6 @@ igt_main > igt_subtest("plane-overlay-legacy") { > igt_plane_t *overlay = > igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); > - > igt_require(overlay); > > atomic_setup(&display, pipe, output, primary, &fb); > @@ -1435,7 +1456,6 @@ igt_main > "the legacy and atomic interfaces."); > igt_subtest("plane-primary-legacy") { > atomic_setup(&display, pipe, output, primary, &fb); > - > plane_primary(pipe_obj, primary, &fb); > } > > @@ -1491,7 +1511,6 @@ igt_main > igt_subtest("plane-cursor-legacy") { > igt_plane_t *cursor = > igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_CURSOR); > - > igt_require(cursor); > > atomic_setup(&display, pipe, output, primary, &fb); > @@ -1501,28 +1520,24 @@ igt_main > igt_describe("Test error handling when invalid plane parameters are passed"); > igt_subtest("plane-invalid-params") { > atomic_setup(&display, pipe, output, primary, &fb); > - > plane_invalid_params(pipe_obj, output, primary, &fb); > } > > igt_describe("Test error handling when invalid plane fence parameters are passed"); > igt_subtest("plane-invalid-params-fence") { > atomic_setup(&display, pipe, output, primary, &fb); > - > plane_invalid_params_fence(pipe_obj, output, primary); > } > > igt_describe("Test error handling when invalid crtc parameters are passed"); > igt_subtest("crtc-invalid-params") { > atomic_setup(&display, pipe, output, primary, &fb); > - > crtc_invalid_params(pipe_obj, output, primary, &fb); > } > > igt_describe("Test error handling when invalid crtc fence parameters are passed"); > igt_subtest("crtc-invalid-params-fence") { > atomic_setup(&display, pipe, output, primary, &fb); > - > crtc_invalid_params_fence(pipe_obj, output, primary, &fb); > } > > @@ -1531,7 +1546,6 @@ igt_main > "allow us to create."); > igt_subtest("atomic-invalid-params") { > atomic_setup(&display, pipe, output, primary, &fb); > - > atomic_invalid_params(pipe_obj, primary, output, &fb); > } > > @@ -1540,7 +1554,6 @@ igt_main > igt_require(igt_plane_has_prop(primary, IGT_PLANE_FB_DAMAGE_CLIPS)); > > atomic_setup(&display, pipe, output, primary, &fb); > - > atomic_plane_damage(pipe_obj, primary, &fb); > } > ^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH i-g-t 2/6] tests/kms_atomic: rename subtest 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 1/6] tests/kms_atomic: cosmetic changes Swati Sharma @ 2023-09-18 7:54 ` Swati Sharma 2023-09-26 16:38 ` Modem, Bhanuprakash 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 3/6] tests/kms_atomic: test cleanup Swati Sharma ` (7 subsequent siblings) 9 siblings, 1 reply; 18+ messages in thread From: Swati Sharma @ 2023-09-18 7:54 UTC (permalink / raw) To: igt-dev Follow IGT rules, to use '-' instead of '_' for subtest naming. Signed-off-by: Swati Sharma <swati2.sharma@intel.com> --- tests/kms_atomic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c index 951014685..f984d34f0 100644 --- a/tests/kms_atomic.c +++ b/tests/kms_atomic.c @@ -1170,7 +1170,7 @@ static void atomic_invalid_params(igt_pipe_t *pipe, } /** - * SUBTEST: atomic_plane_damage + * SUBTEST: atomic-plane-damage * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property * Driver requirement: i915, xe * Functionality: kms_core, plane @@ -1550,7 +1550,7 @@ igt_main } igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane property"); - igt_subtest("atomic_plane_damage") { + igt_subtest("atomic-plane-damage") { igt_require(igt_plane_has_prop(primary, IGT_PLANE_FB_DAMAGE_CLIPS)); atomic_setup(&display, pipe, output, primary, &fb); -- 2.25.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 2/6] tests/kms_atomic: rename subtest 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 2/6] tests/kms_atomic: rename subtest Swati Sharma @ 2023-09-26 16:38 ` Modem, Bhanuprakash 0 siblings, 0 replies; 18+ messages in thread From: Modem, Bhanuprakash @ 2023-09-26 16:38 UTC (permalink / raw) To: Swati Sharma, igt-dev On Mon-18-09-2023 01:24 pm, Swati Sharma wrote: > Follow IGT rules, to use '-' instead of '_' for subtest naming. Reviewed-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com> > > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > --- > tests/kms_atomic.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c > index 951014685..f984d34f0 100644 > --- a/tests/kms_atomic.c > +++ b/tests/kms_atomic.c > @@ -1170,7 +1170,7 @@ static void atomic_invalid_params(igt_pipe_t *pipe, > } > > /** > - * SUBTEST: atomic_plane_damage > + * SUBTEST: atomic-plane-damage > * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property > * Driver requirement: i915, xe > * Functionality: kms_core, plane > @@ -1550,7 +1550,7 @@ igt_main > } > > igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane property"); > - igt_subtest("atomic_plane_damage") { > + igt_subtest("atomic-plane-damage") { > igt_require(igt_plane_has_prop(primary, IGT_PLANE_FB_DAMAGE_CLIPS)); > > atomic_setup(&display, pipe, output, primary, &fb); ^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH i-g-t 3/6] tests/kms_atomic: test cleanup 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 1/6] tests/kms_atomic: cosmetic changes Swati Sharma 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 2/6] tests/kms_atomic: rename subtest Swati Sharma @ 2023-09-18 7:54 ` Swati Sharma 2023-09-27 3:32 ` Karthik B S 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 4/6] tests/kms_atomic: convert subtests to dynamic subtests Swati Sharma ` (6 subsequent siblings) 9 siblings, 1 reply; 18+ messages in thread From: Swati Sharma @ 2023-09-18 7:54 UTC (permalink / raw) To: igt-dev Use atomic_clear() for all subtests. Signed-off-by: Swati Sharma <swati2.sharma@intel.com> --- tests/kms_atomic.c | 49 ++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c index f984d34f0..c55cb5b2f 100644 --- a/tests/kms_atomic.c +++ b/tests/kms_atomic.c @@ -393,27 +393,23 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, */ static void plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, - igt_output_t *output) + igt_output_t *output, igt_plane_t *primary, int n_planes) { cairo_t *cr; struct igt_fb fb_ref; - igt_plane_t *primary; drmModeModeInfo *mode; igt_pipe_crc_t *pipe_crc; igt_crc_t ref_crc, new_crc; int fb_id_lower, fb_id_upper; - int n_planes = pipe->n_planes; igt_plane_t *plane_ptr[n_planes]; struct igt_fb fb_lower, fb_upper; uint32_t w_lower, h_lower, w_upper, h_upper; memset(plane_ptr, 0, n_planes * sizeof(igt_plane_t *)); - igt_require(n_planes >= 2); igt_require_pipe_crc(display->drm_fd); mode = igt_output_get_mode(output); - primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY); /* for lower plane */ w_lower = mode->hdisplay; @@ -643,17 +639,13 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the * free-standing state objects and nothing else. */ -static void test_only(igt_pipe_t *pipe_obj, - igt_plane_t *primary, - igt_output_t *output) +static void test_only(igt_pipe_t *pipe_obj, igt_plane_t *primary, + igt_output_t *output, uint32_t format) { drmModeModeInfo *mode = igt_output_get_mode(output); - uint32_t format = plane_get_igt_format(primary); struct igt_fb fb; uint64_t old_plane_values[IGT_NUM_PLANE_PROPS], old_crtc_values[IGT_NUM_CRTC_PROPS]; - igt_require(format != 0); - plane_get_current_state(primary, old_plane_values); crtc_get_current_state(pipe_obj, old_crtc_values); @@ -1388,7 +1380,8 @@ static void atomic_setup(igt_display_t *display, enum pipe pipe, igt_output_t *o crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); } -static void atomic_clear(igt_display_t *display, enum pipe pipe, igt_plane_t *primary, igt_output_t *output) +static void atomic_clear(igt_display_t *display, enum pipe pipe, igt_plane_t *primary, + igt_output_t *output, struct igt_fb *fb) { igt_plane_t *plane; @@ -1399,6 +1392,7 @@ static void atomic_clear(igt_display_t *display, enum pipe pipe, igt_plane_t *pr igt_output_set_pipe(output, PIPE_NONE); crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_remove_fb(display->drm_fd, fb); } igt_main @@ -1450,6 +1444,7 @@ igt_main atomic_setup(&display, pipe, output, primary, &fb); plane_overlay(pipe_obj, output, overlay); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Test for KMS atomic modesetting on primary plane and ensure coherency between " @@ -1457,6 +1452,7 @@ igt_main igt_subtest("plane-primary-legacy") { atomic_setup(&display, pipe, output, primary, &fb); plane_primary(pipe_obj, primary, &fb); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Verify that the overlay plane can cover the primary one (and "\ @@ -1464,14 +1460,14 @@ igt_main igt_subtest("plane-primary-overlay-mutable-zpos") { uint32_t format_primary = DRM_FORMAT_ARGB8888; uint32_t format_overlay = DRM_FORMAT_ARGB1555; - igt_plane_t *overlay; + igt_plane_t *overlay = + igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); + igt_require(overlay); igt_info("Using (pipe %s + %s) to run the subtest.\n", kmstest_pipe_name(pipe), igt_output_name(output)); igt_display_reset(&display); - overlay = igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); - igt_require(overlay); igt_require(igt_plane_has_prop(primary, IGT_PLANE_ZPOS)); igt_require(igt_plane_has_prop(overlay, IGT_PLANE_ZPOS)); @@ -1482,28 +1478,35 @@ igt_main igt_output_set_pipe(output, pipe); plane_primary_overlay_mutable_zpos(pipe_obj, output, primary, overlay, format_primary, format_overlay); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Verify the reported zpos property of planes by making sure "\ "only higher zpos planes cover the lower zpos ones."); igt_subtest("plane-immutable-zpos") { + int n_planes = pipe_obj->n_planes; + igt_require(n_planes >= 2); + igt_info("Using (pipe %s + %s) to run the subtest.\n", kmstest_pipe_name(pipe), igt_output_name(output)); igt_display_reset(&display); igt_output_set_pipe(output, pipe); - plane_immutable_zpos(&display, pipe_obj, output); + plane_immutable_zpos(&display, pipe_obj, output, primary, n_planes); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches " "the free-standing state objects and nothing else."); igt_subtest("test-only") { - atomic_clear(&display, pipe, primary, output); + uint32_t format = plane_get_igt_format(primary); + igt_require(format != 0); igt_info("Using (pipe %s + %s) to run the subtest.\n", kmstest_pipe_name(pipe), igt_output_name(output)); - test_only(pipe_obj, primary, output); + atomic_clear(&display, pipe, primary, output, &fb); + test_only(pipe_obj, primary, output, format); } igt_describe("Test for KMS atomic modesetting on cursor plane and ensure coherency between " @@ -1515,30 +1518,35 @@ igt_main atomic_setup(&display, pipe, output, primary, &fb); plane_cursor(pipe_obj, output, cursor); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Test error handling when invalid plane parameters are passed"); igt_subtest("plane-invalid-params") { atomic_setup(&display, pipe, output, primary, &fb); plane_invalid_params(pipe_obj, output, primary, &fb); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Test error handling when invalid plane fence parameters are passed"); igt_subtest("plane-invalid-params-fence") { atomic_setup(&display, pipe, output, primary, &fb); plane_invalid_params_fence(pipe_obj, output, primary); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Test error handling when invalid crtc parameters are passed"); igt_subtest("crtc-invalid-params") { atomic_setup(&display, pipe, output, primary, &fb); crtc_invalid_params(pipe_obj, output, primary, &fb); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Test error handling when invalid crtc fence parameters are passed"); igt_subtest("crtc-invalid-params-fence") { atomic_setup(&display, pipe, output, primary, &fb); crtc_invalid_params_fence(pipe_obj, output, primary, &fb); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Test abuse the atomic ioctl directly in order to test " @@ -1547,6 +1555,7 @@ igt_main igt_subtest("atomic-invalid-params") { atomic_setup(&display, pipe, output, primary, &fb); atomic_invalid_params(pipe_obj, primary, output, &fb); + atomic_clear(&display, pipe, primary, output, &fb); } igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane property"); @@ -1555,12 +1564,10 @@ igt_main atomic_setup(&display, pipe, output, primary, &fb); atomic_plane_damage(pipe_obj, primary, &fb); + atomic_clear(&display, pipe, primary, output, &fb); } igt_fixture { - atomic_clear(&display, pipe, primary, output); - igt_remove_fb(display.drm_fd, &fb); - igt_display_fini(&display); drm_close_driver(display.drm_fd); } -- 2.25.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 3/6] tests/kms_atomic: test cleanup 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 3/6] tests/kms_atomic: test cleanup Swati Sharma @ 2023-09-27 3:32 ` Karthik B S 2023-10-10 5:47 ` Sharma, Swati2 0 siblings, 1 reply; 18+ messages in thread From: Karthik B S @ 2023-09-27 3:32 UTC (permalink / raw) To: Swati Sharma, igt-dev On 9/18/2023 1:24 PM, Swati Sharma wrote: > Use atomic_clear() for all subtests. Hi, Overall the patch looks good to me. But as we're doing a little more than only using atomic_clear() in all subtests, could you could split the patch into two? Or if you see that the other changes are too trivial for a separate patch, please update the commit message mentioning that few checks are moved around in the functions. I'm fine with either approach. Thanks, Karthik.B.S > > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > --- > tests/kms_atomic.c | 49 ++++++++++++++++++++++++++-------------------- > 1 file changed, 28 insertions(+), 21 deletions(-) > > diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c > index f984d34f0..c55cb5b2f 100644 > --- a/tests/kms_atomic.c > +++ b/tests/kms_atomic.c > @@ -393,27 +393,23 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, > */ > static void > plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, > - igt_output_t *output) > + igt_output_t *output, igt_plane_t *primary, int n_planes) > { > cairo_t *cr; > struct igt_fb fb_ref; > - igt_plane_t *primary; > drmModeModeInfo *mode; > igt_pipe_crc_t *pipe_crc; > igt_crc_t ref_crc, new_crc; > int fb_id_lower, fb_id_upper; > - int n_planes = pipe->n_planes; > igt_plane_t *plane_ptr[n_planes]; > struct igt_fb fb_lower, fb_upper; > uint32_t w_lower, h_lower, w_upper, h_upper; > > memset(plane_ptr, 0, n_planes * sizeof(igt_plane_t *)); > > - igt_require(n_planes >= 2); > igt_require_pipe_crc(display->drm_fd); > > mode = igt_output_get_mode(output); > - primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY); > > /* for lower plane */ > w_lower = mode->hdisplay; > @@ -643,17 +639,13 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f > * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the > * free-standing state objects and nothing else. > */ > -static void test_only(igt_pipe_t *pipe_obj, > - igt_plane_t *primary, > - igt_output_t *output) > +static void test_only(igt_pipe_t *pipe_obj, igt_plane_t *primary, > + igt_output_t *output, uint32_t format) > { > drmModeModeInfo *mode = igt_output_get_mode(output); > - uint32_t format = plane_get_igt_format(primary); > struct igt_fb fb; > uint64_t old_plane_values[IGT_NUM_PLANE_PROPS], old_crtc_values[IGT_NUM_CRTC_PROPS]; > > - igt_require(format != 0); > - > plane_get_current_state(primary, old_plane_values); > crtc_get_current_state(pipe_obj, old_crtc_values); > > @@ -1388,7 +1380,8 @@ static void atomic_setup(igt_display_t *display, enum pipe pipe, igt_output_t *o > crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > } > > -static void atomic_clear(igt_display_t *display, enum pipe pipe, igt_plane_t *primary, igt_output_t *output) > +static void atomic_clear(igt_display_t *display, enum pipe pipe, igt_plane_t *primary, > + igt_output_t *output, struct igt_fb *fb) > { > igt_plane_t *plane; > > @@ -1399,6 +1392,7 @@ static void atomic_clear(igt_display_t *display, enum pipe pipe, igt_plane_t *pr > > igt_output_set_pipe(output, PIPE_NONE); > crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_remove_fb(display->drm_fd, fb); > } > > igt_main > @@ -1450,6 +1444,7 @@ igt_main > > atomic_setup(&display, pipe, output, primary, &fb); > plane_overlay(pipe_obj, output, overlay); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Test for KMS atomic modesetting on primary plane and ensure coherency between " > @@ -1457,6 +1452,7 @@ igt_main > igt_subtest("plane-primary-legacy") { > atomic_setup(&display, pipe, output, primary, &fb); > plane_primary(pipe_obj, primary, &fb); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Verify that the overlay plane can cover the primary one (and "\ > @@ -1464,14 +1460,14 @@ igt_main > igt_subtest("plane-primary-overlay-mutable-zpos") { > uint32_t format_primary = DRM_FORMAT_ARGB8888; > uint32_t format_overlay = DRM_FORMAT_ARGB1555; > - igt_plane_t *overlay; > + igt_plane_t *overlay = > + igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); > + igt_require(overlay); > > igt_info("Using (pipe %s + %s) to run the subtest.\n", > kmstest_pipe_name(pipe), igt_output_name(output)); > > igt_display_reset(&display); > - overlay = igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); > - igt_require(overlay); > > igt_require(igt_plane_has_prop(primary, IGT_PLANE_ZPOS)); > igt_require(igt_plane_has_prop(overlay, IGT_PLANE_ZPOS)); > @@ -1482,28 +1478,35 @@ igt_main > igt_output_set_pipe(output, pipe); > plane_primary_overlay_mutable_zpos(pipe_obj, output, primary, overlay, > format_primary, format_overlay); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Verify the reported zpos property of planes by making sure "\ > "only higher zpos planes cover the lower zpos ones."); > igt_subtest("plane-immutable-zpos") { > + int n_planes = pipe_obj->n_planes; > + igt_require(n_planes >= 2); > + > igt_info("Using (pipe %s + %s) to run the subtest.\n", > kmstest_pipe_name(pipe), igt_output_name(output)); > > igt_display_reset(&display); > igt_output_set_pipe(output, pipe); > - plane_immutable_zpos(&display, pipe_obj, output); > + plane_immutable_zpos(&display, pipe_obj, output, primary, n_planes); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches " > "the free-standing state objects and nothing else."); > igt_subtest("test-only") { > - atomic_clear(&display, pipe, primary, output); > + uint32_t format = plane_get_igt_format(primary); > + igt_require(format != 0); > > igt_info("Using (pipe %s + %s) to run the subtest.\n", > kmstest_pipe_name(pipe), igt_output_name(output)); > > - test_only(pipe_obj, primary, output); > + atomic_clear(&display, pipe, primary, output, &fb); > + test_only(pipe_obj, primary, output, format); > } > > igt_describe("Test for KMS atomic modesetting on cursor plane and ensure coherency between " > @@ -1515,30 +1518,35 @@ igt_main > > atomic_setup(&display, pipe, output, primary, &fb); > plane_cursor(pipe_obj, output, cursor); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Test error handling when invalid plane parameters are passed"); > igt_subtest("plane-invalid-params") { > atomic_setup(&display, pipe, output, primary, &fb); > plane_invalid_params(pipe_obj, output, primary, &fb); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Test error handling when invalid plane fence parameters are passed"); > igt_subtest("plane-invalid-params-fence") { > atomic_setup(&display, pipe, output, primary, &fb); > plane_invalid_params_fence(pipe_obj, output, primary); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Test error handling when invalid crtc parameters are passed"); > igt_subtest("crtc-invalid-params") { > atomic_setup(&display, pipe, output, primary, &fb); > crtc_invalid_params(pipe_obj, output, primary, &fb); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Test error handling when invalid crtc fence parameters are passed"); > igt_subtest("crtc-invalid-params-fence") { > atomic_setup(&display, pipe, output, primary, &fb); > crtc_invalid_params_fence(pipe_obj, output, primary, &fb); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Test abuse the atomic ioctl directly in order to test " > @@ -1547,6 +1555,7 @@ igt_main > igt_subtest("atomic-invalid-params") { > atomic_setup(&display, pipe, output, primary, &fb); > atomic_invalid_params(pipe_obj, primary, output, &fb); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane property"); > @@ -1555,12 +1564,10 @@ igt_main > > atomic_setup(&display, pipe, output, primary, &fb); > atomic_plane_damage(pipe_obj, primary, &fb); > + atomic_clear(&display, pipe, primary, output, &fb); > } > > igt_fixture { > - atomic_clear(&display, pipe, primary, output); > - igt_remove_fb(display.drm_fd, &fb); > - > igt_display_fini(&display); > drm_close_driver(display.drm_fd); > } ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 3/6] tests/kms_atomic: test cleanup 2023-09-27 3:32 ` Karthik B S @ 2023-10-10 5:47 ` Sharma, Swati2 0 siblings, 0 replies; 18+ messages in thread From: Sharma, Swati2 @ 2023-10-10 5:47 UTC (permalink / raw) To: Karthik B S, igt-dev Hi Karthik, On 27-Sep-23 9:02 AM, Karthik B S wrote: > > On 9/18/2023 1:24 PM, Swati Sharma wrote: >> Use atomic_clear() for all subtests. > > Hi, > > Overall the patch looks good to me. But as we're doing a little more > than only using atomic_clear() in all subtests, could you could split > the patch into two? Or if you see that the other changes are too trivial > for a separate patch, please update the commit message mentioning that > few checks are moved around in the functions. I'm fine with either > approach. > > Thanks, > Karthik.B.S Updated commit message since other changes were trivial. >> >> Signed-off-by: Swati Sharma <swati2.sharma@intel.com> >> --- >> tests/kms_atomic.c | 49 ++++++++++++++++++++++++++-------------------- >> 1 file changed, 28 insertions(+), 21 deletions(-) >> >> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c >> index f984d34f0..c55cb5b2f 100644 >> --- a/tests/kms_atomic.c >> +++ b/tests/kms_atomic.c >> @@ -393,27 +393,23 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t >> *pipe, igt_output_t *output, >> */ >> static void >> plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, >> - igt_output_t *output) >> + igt_output_t *output, igt_plane_t *primary, int n_planes) >> { >> cairo_t *cr; >> struct igt_fb fb_ref; >> - igt_plane_t *primary; >> drmModeModeInfo *mode; >> igt_pipe_crc_t *pipe_crc; >> igt_crc_t ref_crc, new_crc; >> int fb_id_lower, fb_id_upper; >> - int n_planes = pipe->n_planes; >> igt_plane_t *plane_ptr[n_planes]; >> struct igt_fb fb_lower, fb_upper; >> uint32_t w_lower, h_lower, w_upper, h_upper; >> memset(plane_ptr, 0, n_planes * sizeof(igt_plane_t *)); >> - igt_require(n_planes >= 2); >> igt_require_pipe_crc(display->drm_fd); >> mode = igt_output_get_mode(output); >> - primary = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY); >> /* for lower plane */ >> w_lower = mode->hdisplay; >> @@ -643,17 +639,13 @@ static void plane_primary(igt_pipe_t *pipe, >> igt_plane_t *plane, struct igt_fb *f >> * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches >> the >> * free-standing state objects and nothing else. >> */ >> -static void test_only(igt_pipe_t *pipe_obj, >> - igt_plane_t *primary, >> - igt_output_t *output) >> +static void test_only(igt_pipe_t *pipe_obj, igt_plane_t *primary, >> + igt_output_t *output, uint32_t format) >> { >> drmModeModeInfo *mode = igt_output_get_mode(output); >> - uint32_t format = plane_get_igt_format(primary); >> struct igt_fb fb; >> uint64_t old_plane_values[IGT_NUM_PLANE_PROPS], >> old_crtc_values[IGT_NUM_CRTC_PROPS]; >> - igt_require(format != 0); >> - >> plane_get_current_state(primary, old_plane_values); >> crtc_get_current_state(pipe_obj, old_crtc_values); >> @@ -1388,7 +1380,8 @@ static void atomic_setup(igt_display_t *display, >> enum pipe pipe, igt_output_t *o >> crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> } >> -static void atomic_clear(igt_display_t *display, enum pipe pipe, >> igt_plane_t *primary, igt_output_t *output) >> +static void atomic_clear(igt_display_t *display, enum pipe pipe, >> igt_plane_t *primary, >> + igt_output_t *output, struct igt_fb *fb) >> { >> igt_plane_t *plane; >> @@ -1399,6 +1392,7 @@ static void atomic_clear(igt_display_t *display, >> enum pipe pipe, igt_plane_t *pr >> igt_output_set_pipe(output, PIPE_NONE); >> crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> + igt_remove_fb(display->drm_fd, fb); >> } >> igt_main >> @@ -1450,6 +1444,7 @@ igt_main >> atomic_setup(&display, pipe, output, primary, &fb); >> plane_overlay(pipe_obj, output, overlay); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Test for KMS atomic modesetting on primary plane >> and ensure coherency between " >> @@ -1457,6 +1452,7 @@ igt_main >> igt_subtest("plane-primary-legacy") { >> atomic_setup(&display, pipe, output, primary, &fb); >> plane_primary(pipe_obj, primary, &fb); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Verify that the overlay plane can cover the >> primary one (and "\ >> @@ -1464,14 +1460,14 @@ igt_main >> igt_subtest("plane-primary-overlay-mutable-zpos") { >> uint32_t format_primary = DRM_FORMAT_ARGB8888; >> uint32_t format_overlay = DRM_FORMAT_ARGB1555; >> - igt_plane_t *overlay; >> + igt_plane_t *overlay = >> + igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); >> + igt_require(overlay); >> igt_info("Using (pipe %s + %s) to run the subtest.\n", >> kmstest_pipe_name(pipe), igt_output_name(output)); >> igt_display_reset(&display); >> - overlay = igt_pipe_get_plane_type(pipe_obj, >> DRM_PLANE_TYPE_OVERLAY); >> - igt_require(overlay); >> igt_require(igt_plane_has_prop(primary, IGT_PLANE_ZPOS)); >> igt_require(igt_plane_has_prop(overlay, IGT_PLANE_ZPOS)); >> @@ -1482,28 +1478,35 @@ igt_main >> igt_output_set_pipe(output, pipe); >> plane_primary_overlay_mutable_zpos(pipe_obj, output, >> primary, overlay, >> format_primary, format_overlay); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Verify the reported zpos property of planes by >> making sure "\ >> "only higher zpos planes cover the lower zpos ones."); >> igt_subtest("plane-immutable-zpos") { >> + int n_planes = pipe_obj->n_planes; >> + igt_require(n_planes >= 2); >> + >> igt_info("Using (pipe %s + %s) to run the subtest.\n", >> kmstest_pipe_name(pipe), igt_output_name(output)); >> igt_display_reset(&display); >> igt_output_set_pipe(output, pipe); >> - plane_immutable_zpos(&display, pipe_obj, output); >> + plane_immutable_zpos(&display, pipe_obj, output, primary, >> n_planes); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY >> really only touches " >> "the free-standing state objects and nothing else."); >> igt_subtest("test-only") { >> - atomic_clear(&display, pipe, primary, output); >> + uint32_t format = plane_get_igt_format(primary); >> + igt_require(format != 0); >> igt_info("Using (pipe %s + %s) to run the subtest.\n", >> kmstest_pipe_name(pipe), igt_output_name(output)); >> - test_only(pipe_obj, primary, output); >> + atomic_clear(&display, pipe, primary, output, &fb); >> + test_only(pipe_obj, primary, output, format); >> } >> igt_describe("Test for KMS atomic modesetting on cursor plane >> and ensure coherency between " >> @@ -1515,30 +1518,35 @@ igt_main >> atomic_setup(&display, pipe, output, primary, &fb); >> plane_cursor(pipe_obj, output, cursor); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Test error handling when invalid plane parameters >> are passed"); >> igt_subtest("plane-invalid-params") { >> atomic_setup(&display, pipe, output, primary, &fb); >> plane_invalid_params(pipe_obj, output, primary, &fb); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Test error handling when invalid plane fence >> parameters are passed"); >> igt_subtest("plane-invalid-params-fence") { >> atomic_setup(&display, pipe, output, primary, &fb); >> plane_invalid_params_fence(pipe_obj, output, primary); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Test error handling when invalid crtc parameters >> are passed"); >> igt_subtest("crtc-invalid-params") { >> atomic_setup(&display, pipe, output, primary, &fb); >> crtc_invalid_params(pipe_obj, output, primary, &fb); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Test error handling when invalid crtc fence >> parameters are passed"); >> igt_subtest("crtc-invalid-params-fence") { >> atomic_setup(&display, pipe, output, primary, &fb); >> crtc_invalid_params_fence(pipe_obj, output, primary, &fb); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Test abuse the atomic ioctl directly in order to >> test " >> @@ -1547,6 +1555,7 @@ igt_main >> igt_subtest("atomic-invalid-params") { >> atomic_setup(&display, pipe, output, primary, &fb); >> atomic_invalid_params(pipe_obj, primary, output, &fb); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane >> property"); >> @@ -1555,12 +1564,10 @@ igt_main >> atomic_setup(&display, pipe, output, primary, &fb); >> atomic_plane_damage(pipe_obj, primary, &fb); >> + atomic_clear(&display, pipe, primary, output, &fb); >> } >> igt_fixture { >> - atomic_clear(&display, pipe, primary, output); >> - igt_remove_fb(display.drm_fd, &fb); >> - >> igt_display_fini(&display); >> drm_close_driver(display.drm_fd); >> } ^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH i-g-t 4/6] tests/kms_atomic: convert subtests to dynamic subtests 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma ` (2 preceding siblings ...) 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 3/6] tests/kms_atomic: test cleanup Swati Sharma @ 2023-09-18 7:54 ` Swati Sharma 2023-09-27 3:39 ` Karthik B S 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 5/6] tests/kms_atomic: check validity of pipe-output combo Swati Sharma ` (5 subsequent siblings) 9 siblings, 1 reply; 18+ messages in thread From: Swati Sharma @ 2023-09-18 7:54 UTC (permalink / raw) To: igt-dev Subtests are converted to dynamic subtests. From the fixture for_each_pipe_with_valid_output() is removed and put at subtest level to give flexibility to user to test all pipes/output combinations. However, restricted to 1pipe/1output combination as originally written in the test. Code rework is done to accommodate above changes. Signed-off-by: Swati Sharma <swati2.sharma@intel.com> --- tests/kms_atomic.c | 907 +++++++++++++++++++++++---------------------- 1 file changed, 467 insertions(+), 440 deletions(-) diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c index c55cb5b2f..e9159ded2 100644 --- a/tests/kms_atomic.c +++ b/tests/kms_atomic.c @@ -58,6 +58,15 @@ IGT_TEST_DESCRIPTION("Test atomic modesetting API"); +/* Common test data. */ +typedef struct { + igt_display_t display; + igt_plane_t *primary; + igt_pipe_t *pipe; + int drm_fd; + igt_fb_t fb; +} data_t; + enum kms_atomic_check_relax { ATOMIC_RELAX_NONE = 0, CRTC_RELAX_MODE = (1 << 0), @@ -301,8 +310,7 @@ static uint32_t plane_get_igt_format(igt_plane_t *plane) * Test category: functionality test */ static void -plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, - igt_plane_t *primary, igt_plane_t *overlay, +plane_primary_overlay_mutable_zpos(data_t *data, igt_output_t *output, igt_plane_t *overlay, uint32_t format_primary, uint32_t format_overlay) { struct igt_fb fb_primary, fb_overlay; @@ -317,17 +325,17 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, uint32_t w_overlay = mode->hdisplay / 2; uint32_t h_overlay = mode->vdisplay / 2; - igt_create_color_pattern_fb(pipe->display->drm_fd, + igt_create_color_pattern_fb(data->drm_fd, w, h, format_primary, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, &fb_primary); - igt_create_color_pattern_fb(pipe->display->drm_fd, + igt_create_color_pattern_fb(data->drm_fd, w_overlay, h_overlay, format_overlay, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, &fb_overlay); /* Draw a hole in the overlay */ - cr = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_overlay); + cr = igt_get_cairo_ctx(data->drm_fd, &fb_overlay); cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); igt_paint_color_alpha(cr, w_overlay / 4, h_overlay / 4, w_overlay / 2, h_overlay / 2, @@ -335,33 +343,33 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, cairo_set_operator(cr, CAIRO_OPERATOR_OVER); igt_put_cairo_ctx(cr); - igt_plane_set_fb(primary, &fb_primary); + igt_plane_set_fb(data->primary, &fb_primary); igt_plane_set_fb(overlay, &fb_overlay); igt_plane_set_position(overlay, w_overlay / 2, h_overlay / 2); - igt_plane_set_prop_value(primary, IGT_PLANE_ZPOS, 0); + igt_plane_set_prop_value(data->primary, IGT_PLANE_ZPOS, 0); igt_plane_set_prop_value(overlay, IGT_PLANE_ZPOS, 1); igt_info("Committing with overlay on top, it has a hole "\ "through which the primary should be seen\n"); - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); - igt_assert_eq_u64(igt_plane_get_prop(primary, IGT_PLANE_ZPOS), 0); + igt_assert_eq_u64(igt_plane_get_prop(data->primary, IGT_PLANE_ZPOS), 0); igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 1); - igt_plane_set_prop_value(primary, IGT_PLANE_ZPOS, 1); + igt_plane_set_prop_value(data->primary, IGT_PLANE_ZPOS, 1); igt_plane_set_prop_value(overlay, IGT_PLANE_ZPOS, 0); igt_info("Committing with primary on top, only the primary "\ "should be visible\n"); - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); - igt_assert_eq_u64(igt_plane_get_prop(primary, IGT_PLANE_ZPOS), 1); + igt_assert_eq_u64(igt_plane_get_prop(data->primary, IGT_PLANE_ZPOS), 1); igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 0); /* Draw a hole in the primary exactly on top of the overlay plane */ - cr = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_primary); + cr = igt_get_cairo_ctx(data->drm_fd, &fb_primary); cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); igt_paint_color_alpha(cr, w_overlay / 2, h_overlay / 2, w_overlay, h_overlay, @@ -371,14 +379,14 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, igt_info("Committing with a hole in the primary through "\ "which the underlay should be seen\n"); - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* reset it back to initial state */ - igt_plane_set_prop_value(primary, IGT_PLANE_ZPOS, 0); + igt_plane_set_prop_value(data->primary, IGT_PLANE_ZPOS, 0); igt_plane_set_prop_value(overlay, IGT_PLANE_ZPOS, 1); - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); - igt_assert_eq_u64(igt_plane_get_prop(primary, IGT_PLANE_ZPOS), 0); + igt_assert_eq_u64(igt_plane_get_prop(data->primary, IGT_PLANE_ZPOS), 0); igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 1); } @@ -392,8 +400,7 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, * Test category: functionality test */ static void -plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, - igt_output_t *output, igt_plane_t *primary, int n_planes) +plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe pipe, int n_planes) { cairo_t *cr; struct igt_fb fb_ref; @@ -406,8 +413,7 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, uint32_t w_lower, h_lower, w_upper, h_upper; memset(plane_ptr, 0, n_planes * sizeof(igt_plane_t *)); - - igt_require_pipe_crc(display->drm_fd); + igt_require_pipe_crc(data->drm_fd); mode = igt_output_get_mode(output); @@ -419,36 +425,36 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, w_upper = 64; h_upper = 64; - igt_create_color_fb(display->drm_fd, + igt_create_color_fb(data->drm_fd, w_lower, h_lower, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 0.0, &fb_ref); /* create reference image */ - cr = igt_get_cairo_ctx(display->drm_fd, &fb_ref); + cr = igt_get_cairo_ctx(data->drm_fd, &fb_ref); igt_assert(cairo_status(cr) == 0); igt_paint_color(cr, 0, 0, w_lower, h_lower, 0.0, 0.0, 1.0); igt_paint_color(cr, w_upper / 2, h_upper / 2, w_upper, h_upper, 1.0, 1.0, 0.0); igt_put_cairo_ctx(cr); - igt_plane_set_fb(primary, &fb_ref); - igt_display_commit2(display, COMMIT_ATOMIC); + igt_plane_set_fb(data->primary, &fb_ref); + igt_display_commit2(&data->display, COMMIT_ATOMIC); /* create the pipe_crc object for this pipe */ - pipe_crc = igt_pipe_crc_new(pipe->display->drm_fd, pipe->pipe, + pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, IGT_PIPE_CRC_SOURCE_AUTO); /* get reference crc */ igt_pipe_crc_start(pipe_crc); - igt_pipe_crc_get_current(display->drm_fd, pipe_crc, &ref_crc); + igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &ref_crc); - igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(data->primary, NULL); for (int k = 0; k < n_planes; k++) { int zpos; igt_plane_t *temp; - temp = &display->pipes[pipe->pipe].planes[k]; + temp = &data->display.pipes[pipe].planes[k]; if (!igt_plane_has_prop(temp, IGT_PLANE_ZPOS)) continue; @@ -458,14 +464,14 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, plane_ptr[zpos] = temp; } - fb_id_lower = igt_create_color_fb(display->drm_fd, + fb_id_lower = igt_create_color_fb(data->drm_fd, w_lower, h_lower, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &fb_lower); igt_assert(fb_id_lower); - fb_id_upper = igt_create_color_fb(display->drm_fd, + fb_id_upper = igt_create_color_fb(data->drm_fd, w_upper, h_upper, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR, @@ -508,8 +514,8 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, igt_info("Committing with the plane[%d] underneath "\ "plane[%d]\n", i, (i + 1)); - igt_display_commit2(display, COMMIT_ATOMIC); - igt_pipe_crc_get_current(pipe->display->drm_fd, pipe_crc, &new_crc); + igt_display_commit2(&data->display, COMMIT_ATOMIC); + igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &new_crc); igt_assert_crc_equal(&ref_crc, &new_crc); @@ -517,9 +523,9 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, igt_plane_set_fb(plane_upper, NULL); } - igt_remove_fb(display->drm_fd, &fb_ref); - igt_remove_fb(display->drm_fd, &fb_lower); - igt_remove_fb(display->drm_fd, &fb_upper); + igt_remove_fb(data->drm_fd, &fb_ref); + igt_remove_fb(data->drm_fd, &fb_lower); + igt_remove_fb(data->drm_fd, &fb_upper); } /** @@ -537,17 +543,15 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, * @overlay: Overlay plane * @primary: Primary plane */ -static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *plane) +static void plane_overlay(data_t *data, igt_output_t *output, igt_plane_t *plane, + uint32_t format) { - drmModeModeInfo *mode = igt_output_get_mode(output); - uint32_t format = plane_get_igt_format(plane); struct igt_fb fb; + drmModeModeInfo *mode = igt_output_get_mode(output); uint32_t w = mode->hdisplay / 2; uint32_t h = mode->vdisplay / 2; - igt_require(format != 0); - - igt_create_pattern_fb(pipe->display->drm_fd, w, h, + igt_create_pattern_fb(data->drm_fd, w, h, format, DRM_FORMAT_MOD_LINEAR, &fb); igt_plane_set_fb(plane, &fb); @@ -580,49 +584,49 @@ static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *p igt_plane_set_position(plane, 0, 0); plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE); - igt_remove_fb(pipe->display->drm_fd, &fb); + igt_remove_fb(data->drm_fd, &fb); } -static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *fb) +static void plane_primary(data_t *data) { struct igt_fb fb2; - igt_create_color_pattern_fb(pipe->display->drm_fd, - fb->width, fb->height, - fb->drm_format, DRM_FORMAT_MOD_LINEAR, + igt_create_color_pattern_fb(data->drm_fd, + data->fb.width, data->fb.height, + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, &fb2); /* * Flip the primary plane using the atomic API, and double-check * state is what we think it should be. */ - igt_plane_set_fb(plane, &fb2); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_plane_set_fb(data->primary, &fb2); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* Restore the primary plane and check the state matches the old. */ - igt_plane_set_fb(plane, fb); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_plane_set_fb(data->primary, &data->fb); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* * Set the plane through the legacy CRTC/primary-plane API, and * verify through atomic. */ - igt_plane_set_fb(plane, &fb2); - crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); + igt_plane_set_fb(data->primary, &data->fb); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* * Restore the plane to its original settings through the legacy CRTC * API, and verify through atomic. */ - igt_plane_set_fb(plane, fb); - crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); + igt_plane_set_fb(data->primary, &data->fb); + crtc_commit(data->pipe, data->primary, COMMIT_LEGACY, CRTC_RELAX_MODE); /* * Set the plane through the universal setplane API, and * verify through atomic. */ - igt_plane_set_fb(plane, &fb2); - plane_commit(plane, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE); + igt_plane_set_fb(data->primary, &fb2); + plane_commit(data->primary, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE); } /** @@ -639,61 +643,58 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the * free-standing state objects and nothing else. */ -static void test_only(igt_pipe_t *pipe_obj, igt_plane_t *primary, - igt_output_t *output, uint32_t format) +static void test_only(data_t *data, igt_output_t *output, enum pipe pipe, uint32_t format) { - drmModeModeInfo *mode = igt_output_get_mode(output); struct igt_fb fb; uint64_t old_plane_values[IGT_NUM_PLANE_PROPS], old_crtc_values[IGT_NUM_CRTC_PROPS]; + drmModeModeInfo *mode = igt_output_get_mode(output); - plane_get_current_state(primary, old_plane_values); - crtc_get_current_state(pipe_obj, old_crtc_values); + plane_get_current_state(data->primary, old_plane_values); + crtc_get_current_state(data->pipe, old_crtc_values); igt_assert(!old_crtc_values[IGT_CRTC_MODE_ID]); - igt_create_pattern_fb(pipe_obj->display->drm_fd, - mode->hdisplay, mode->vdisplay, - format, DRM_FORMAT_MOD_LINEAR, &fb); - igt_plane_set_fb(primary, &fb); - igt_output_set_pipe(output, pipe_obj->pipe); + igt_create_pattern_fb(data->drm_fd, + mode->hdisplay, mode->vdisplay, + format, I915_TILING_NONE, &fb); + igt_plane_set_fb(data->primary, &fb); + igt_output_set_pipe(output, pipe); - igt_display_commit_atomic(pipe_obj->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); + igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); /* check the state, should still be old state */ - crtc_check_current_state(pipe_obj, old_crtc_values, old_plane_values, ATOMIC_RELAX_NONE); - plane_check_current_state(primary, old_plane_values, ATOMIC_RELAX_NONE); + crtc_check_current_state(data->pipe, old_crtc_values, old_plane_values, ATOMIC_RELAX_NONE); + plane_check_current_state(data->primary, old_plane_values, ATOMIC_RELAX_NONE); /* * Enable the plane through the legacy CRTC/primary-plane API, and * verify through atomic. */ - crtc_commit(pipe_obj, primary, COMMIT_LEGACY, CRTC_RELAX_MODE); + crtc_commit(data->pipe, data->primary, COMMIT_LEGACY, CRTC_RELAX_MODE); /* Same for disable.. */ - plane_get_current_state(primary, old_plane_values); - crtc_get_current_state(pipe_obj, old_crtc_values); + plane_get_current_state(data->primary, old_plane_values); + crtc_get_current_state(data->pipe, old_crtc_values); - igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(data->primary, NULL); igt_output_set_pipe(output, PIPE_NONE); - igt_display_commit_atomic(pipe_obj->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); + igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); /* for extra stress, go through dpms off/on cycle */ kmstest_set_connector_dpms(output->display->drm_fd, output->config.connector, DRM_MODE_DPMS_OFF); kmstest_set_connector_dpms(output->display->drm_fd, output->config.connector, DRM_MODE_DPMS_ON); /* check the state, should still be old state */ - crtc_check_current_state(pipe_obj, old_crtc_values, old_plane_values, ATOMIC_RELAX_NONE); - plane_check_current_state(primary, old_plane_values, ATOMIC_RELAX_NONE); + crtc_check_current_state(data->pipe, old_crtc_values, old_plane_values, ATOMIC_RELAX_NONE); + plane_check_current_state(data->primary, old_plane_values, ATOMIC_RELAX_NONE); /* And disable the pipe and remove fb, test complete */ - crtc_commit(pipe_obj, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); - igt_remove_fb(pipe_obj->display->drm_fd, &fb); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_remove_fb(data->drm_fd, &fb); } -static void plane_cursor(igt_pipe_t *pipe_obj, - igt_output_t *output, - igt_plane_t *cursor) +static void plane_cursor(data_t *data, igt_output_t *output, igt_plane_t *cursor) { drmModeModeInfo *mode = igt_output_get_mode(output); struct igt_fb fb; @@ -702,12 +703,12 @@ static void plane_cursor(igt_pipe_t *pipe_obj, int y = mode->vdisplay / 2; /* Any kernel new enough for atomic, also has the cursor size caps. */ - do_or_die(drmGetCap(pipe_obj->display->drm_fd, + do_or_die(drmGetCap(data->drm_fd, DRM_CAP_CURSOR_WIDTH, &width)); - do_or_die(drmGetCap(pipe_obj->display->drm_fd, + do_or_die(drmGetCap(data->drm_fd, DRM_CAP_CURSOR_HEIGHT, &height)); - igt_create_color_fb(pipe_obj->display->drm_fd, + igt_create_color_fb(data->drm_fd, width, height, DRM_FORMAT_ARGB8888, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 0.0, &fb); @@ -759,69 +760,64 @@ static void plane_cursor(igt_pipe_t *pipe_obj, * @params: plane parameters * @params-fence: plane fence parameters */ -static void plane_invalid_params(igt_pipe_t *pipe, - igt_output_t *output, - igt_plane_t *plane, - struct igt_fb *fb) +static void plane_invalid_params(data_t *data, igt_output_t *output) { struct igt_fb fb2; /* Pass a series of invalid object IDs for the FB ID. */ - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, plane->drm_plane->plane_id); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, data->primary->drm_plane->plane_id); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, pipe->crtc_id); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, data->pipe->crtc_id); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, output->id); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, output->id); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, pipe->values[IGT_CRTC_MODE_ID]); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, data->pipe->values[IGT_CRTC_MODE_ID]); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); /* Valid, but invalid because CRTC_ID is set. */ - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, 0); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, 0); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_plane_set_fb(plane, fb); - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_plane_set_fb(data->primary, &data->fb); + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* Pass a series of invalid object IDs for the CRTC ID. */ - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, plane->drm_plane->plane_id); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, data->primary->drm_plane->plane_id); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, fb->fb_id); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, data->fb.fb_id); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, output->id); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, output->id); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, pipe->values[IGT_CRTC_MODE_ID]); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, data->pipe->values[IGT_CRTC_MODE_ID]); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); /* Valid, but invalid because FB_ID is set. */ - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, 0); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, 0); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_plane_set_fb(plane, fb); - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_plane_set_fb(data->primary, &data->fb); + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* Create a framebuffer too small for the plane configuration. */ - igt_create_pattern_fb(pipe->display->drm_fd, - fb->width - 1, fb->height - 1, - fb->drm_format, DRM_FORMAT_MOD_LINEAR, &fb2); + igt_create_pattern_fb(data->drm_fd, + data->fb.width - 1, data->fb.height - 1, + data->fb.drm_format, I915_TILING_NONE, &fb2); - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, fb2.fb_id); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, ENOSPC); + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, fb2.fb_id); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, ENOSPC); /* Restore the primary plane and check the state matches the old. */ - igt_plane_set_fb(plane, fb); - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_plane_set_fb(data->primary, &data->fb); + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); } -static void plane_invalid_params_fence(igt_pipe_t *pipe, - igt_output_t *output, - igt_plane_t *plane) +static void plane_invalid_params_fence(data_t *data, igt_output_t *output) { int timeline, fence_fd; @@ -830,19 +826,19 @@ static void plane_invalid_params_fence(igt_pipe_t *pipe, timeline = sw_sync_timeline_create(); /* invalid fence fd */ - igt_plane_set_fence_fd(plane, pipe->display->drm_fd); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_fence_fd(data->primary, data->drm_fd); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); /* Valid fence_fd but invalid CRTC */ fence_fd = sw_sync_timeline_create_fence(timeline, 1); - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, ~0); - igt_plane_set_fence_fd(plane, fence_fd); - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, ~0); + igt_plane_set_fence_fd(data->primary, fence_fd); + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); sw_sync_timeline_inc(timeline, 1); - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, pipe->crtc_id); - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, data->pipe->crtc_id); + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); close(fence_fd); close(timeline); @@ -861,62 +857,55 @@ static void plane_invalid_params_fence(igt_pipe_t *pipe, * @params: crtc parameters * @params-fence: crtc fence parameters */ -static void crtc_invalid_params(igt_pipe_t *pipe, - igt_output_t *output, - igt_plane_t *plane, - struct igt_fb *fb) +static void crtc_invalid_params(data_t *data, igt_output_t *output) { - uint64_t old_mode_id = pipe->values[IGT_CRTC_MODE_ID]; + uint64_t old_mode_id = data->pipe->values[IGT_CRTC_MODE_ID]; drmModeModeInfo *mode = igt_output_get_mode(output); /* Pass a series of invalid object IDs for the mode ID. */ - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, plane->drm_plane->plane_id); - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, data->primary->drm_plane->plane_id); + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, pipe->crtc_id); - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, data->pipe->crtc_id); + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, output->id); - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, data->fb.fb_id); + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, fb->fb_id); - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, old_mode_id); + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); /* Can we restore mode? */ - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, old_mode_id); - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, old_mode_id); + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); /* * TEST_ONLY cannot be combined with DRM_MODE_PAGE_FLIP_EVENT, * but DRM_MODE_PAGE_FLIP_EVENT will always generate EINVAL * without valid crtc, so test it here. */ - crtc_commit_atomic_flags_err(pipe, plane, + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_PAGE_FLIP_EVENT, ATOMIC_RELAX_NONE, EINVAL); /* Create a blob which is the wrong size to be a valid mode. */ - igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode) - 1); - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); - - igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode) + 1); - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); + igt_pipe_obj_replace_prop_blob(data->pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode) - 1); + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); + igt_pipe_obj_replace_prop_blob(data->pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode) + 1); + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); /* Restore the CRTC and check the state matches the old. */ - igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode)); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_pipe_obj_replace_prop_blob(data->pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode)); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); } -static void crtc_invalid_params_fence(igt_pipe_t *pipe, - igt_output_t *output, - igt_plane_t *plane, - struct igt_fb *fb) +static void crtc_invalid_params_fence(data_t *data, igt_output_t *output) { int timeline, fence_fd; void *map; const ptrdiff_t PAGE_SIZE = sysconf(_SC_PAGE_SIZE); - uint64_t old_mode_id = pipe->values[IGT_CRTC_MODE_ID]; + uint64_t old_mode_id = data->pipe->values[IGT_CRTC_MODE_ID]; igt_require_sw_sync(); @@ -926,86 +915,86 @@ static void crtc_invalid_params_fence(igt_pipe_t *pipe, map = mmap(NULL, PAGE_SIZE, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); igt_assert(map != MAP_FAILED); - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EFAULT); munmap(map, PAGE_SIZE); /* invalid out_fence_ptr */ map = mmap(NULL, PAGE_SIZE, PROT_EXEC, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); igt_assert(map != MAP_FAILED); - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EFAULT); munmap(map, PAGE_SIZE); /* invalid out_fence_ptr */ map = mmap(NULL, PAGE_SIZE, PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); igt_assert(map != MAP_FAILED); - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EFAULT); munmap(map, PAGE_SIZE); /* valid in fence but not allowed prop on crtc */ fence_fd = sw_sync_timeline_create_fence(timeline, 1); - igt_plane_set_fence_fd(plane, fence_fd); + igt_plane_set_fence_fd(data->primary, fence_fd); - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_ACTIVE, 0); - igt_pipe_obj_clear_prop_changed(pipe, IGT_CRTC_OUT_FENCE_PTR); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_ACTIVE, 0); + igt_pipe_obj_clear_prop_changed(data->pipe, IGT_CRTC_OUT_FENCE_PTR); - crtc_commit_atomic_flags_err(pipe, plane, 0, ATOMIC_RELAX_NONE, EINVAL); + crtc_commit_atomic_flags_err(data->pipe, data->primary, 0, ATOMIC_RELAX_NONE, EINVAL); /* valid out fence ptr and flip event but not allowed prop on crtc */ - igt_pipe_request_out_fence(pipe); - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, + igt_pipe_request_out_fence(data->pipe); + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_PAGE_FLIP_EVENT, ATOMIC_RELAX_NONE, EINVAL); /* valid flip event but not allowed prop on crtc */ - igt_pipe_obj_clear_prop_changed(pipe, IGT_CRTC_OUT_FENCE_PTR); - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, + igt_pipe_request_out_fence(data->pipe); + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_PAGE_FLIP_EVENT, ATOMIC_RELAX_NONE, EINVAL); - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_ACTIVE, 1); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_ACTIVE, 1); /* Configuration should be valid again */ - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); /* Set invalid prop */ - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, fb->fb_id); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, data->fb.fb_id); /* valid out fence but invalid prop on crtc */ - igt_pipe_request_out_fence(pipe); - crtc_commit_atomic_flags_err(pipe, plane, 0, + igt_pipe_request_out_fence(data->pipe); + crtc_commit_atomic_flags_err(data->pipe, data->primary, 0, ATOMIC_RELAX_NONE, EINVAL); /* valid out fence ptr and flip event but invalid prop on crtc */ - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_PAGE_FLIP_EVENT, ATOMIC_RELAX_NONE, EINVAL); /* valid page flip event but invalid prop on crtc */ - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_PAGE_FLIP_EVENT, ATOMIC_RELAX_NONE, EINVAL); /* successful TEST_ONLY with fences set */ - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, old_mode_id); - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, old_mode_id); + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); - igt_assert(pipe->out_fence_fd == -1); + igt_assert(data->pipe->out_fence_fd == -1); close(fence_fd); close(timeline); /* reset fences */ - igt_plane_set_fence_fd(plane, -1); - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, 0); - igt_pipe_obj_clear_prop_changed(pipe, IGT_CRTC_OUT_FENCE_PTR); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_plane_set_fence_fd(data->primary, -1); + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, 0); + igt_pipe_obj_clear_prop_changed(data->pipe, IGT_CRTC_OUT_FENCE_PTR); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* out fence ptr but not page flip event */ - igt_pipe_request_out_fence(pipe); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_pipe_request_out_fence(data->pipe); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); - igt_assert(pipe->out_fence_fd != -1); + igt_assert(data->pipe->out_fence_fd != -1); } /** @@ -1023,12 +1012,8 @@ static void crtc_invalid_params_fence(igt_pipe_t *pipe, * Abuse the atomic ioctl directly in order to test various invalid conditions, * which the libdrm wrapper won't allow us to create. */ -static void atomic_invalid_params(igt_pipe_t *pipe, - igt_plane_t *plane, - igt_output_t *output, - struct igt_fb *fb) +static void atomic_invalid_params(data_t *data, igt_output_t *output) { - igt_display_t *display = pipe->display; struct drm_mode_atomic ioc; uint32_t obj_raw[16]; /* array of objects (sized by count_objs) */ uint32_t num_props_raw[16]; /* array of num props per obj (ditto) */ @@ -1039,7 +1024,7 @@ static void atomic_invalid_params(igt_pipe_t *pipe, memset(&ioc, 0, sizeof(ioc)); /* An empty request should do nothing. */ - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); for (i = 0; i < ARRAY_SIZE(obj_raw); i++) obj_raw[i] = 0; @@ -1056,109 +1041,109 @@ static void atomic_invalid_params(igt_pipe_t *pipe, ioc.prop_values_ptr = (uintptr_t) values_raw; /* Valid pointers, but still should copy nothing. */ - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); /* Valid noop, but with event set should fail. */ ioc.flags = DRM_MODE_PAGE_FLIP_EVENT; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); /* Nonsense flags. */ ioc.flags = 0xdeadbeef; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); ioc.flags = 0; /* Safety check that flags is reset properly. */ - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); /* Reserved/MBZ. */ ioc.reserved = 1; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); ioc.reserved = 0; - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); /* Zero is not a valid object ID. */ ioc.count_objs = ARRAY_SIZE(obj_raw); - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); /* Invalid object type (not a thing we can set properties on). */ ioc.count_objs = 1; - obj_raw[0] = pipe->values[IGT_CRTC_MODE_ID]; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); - obj_raw[0] = fb->fb_id; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); + obj_raw[0] = data->pipe->values[IGT_CRTC_MODE_ID]; + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); + obj_raw[0] = data->fb.fb_id; + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); /* Filled object but with no properties; no-op. */ for (i = 0; i < ARRAY_SIZE(obj_raw); i++) - obj_raw[i] = pipe->crtc_id; - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); + obj_raw[i] = data->pipe->crtc_id; + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); /* Pass in all sorts of things other than the property ID. */ num_props_raw[0] = 1; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); - props_raw[0] = pipe->crtc_id; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); - props_raw[0] = plane->drm_plane->plane_id; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); + props_raw[0] = data->pipe->crtc_id; + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); + props_raw[0] = data->primary->drm_plane->plane_id; + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); props_raw[0] = output->id; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); - props_raw[0] = pipe->values[IGT_CRTC_MODE_ID]; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); + props_raw[0] = data->pipe->values[IGT_CRTC_MODE_ID]; + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); /* Valid property, valid value. */ for (i = 0; i < ARRAY_SIZE(props_raw); i++) { - props_raw[i] = pipe->props[IGT_CRTC_MODE_ID]; - values_raw[i] = pipe->values[IGT_CRTC_MODE_ID]; + props_raw[i] = data->pipe->props[IGT_CRTC_MODE_ID]; + values_raw[i] = data->pipe->values[IGT_CRTC_MODE_ID]; } - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); /* Setting the same thing multiple times is OK. */ for (i = 0; i < ARRAY_SIZE(obj_raw); i++) num_props_raw[i] = ARRAY_SIZE(props_raw) / ARRAY_SIZE(obj_raw); - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); ioc.count_objs = ARRAY_SIZE(obj_raw); - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); /* Pass a series of outlandish addresses. */ ioc.objs_ptr = 0; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); ioc.objs_ptr = (uintptr_t) obj_raw; ioc.count_props_ptr = 0; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); ioc.count_props_ptr = (uintptr_t) num_props_raw; ioc.props_ptr = 0; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); ioc.props_ptr = (uintptr_t) props_raw; ioc.prop_values_ptr = 0; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); ioc.prop_values_ptr = (uintptr_t) values_raw; - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); /* Attempt to overflow and/or trip various boundary conditions. */ ioc.count_objs = UINT32_MAX / sizeof(uint32_t); - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); ioc.count_objs = ARRAY_SIZE(obj_raw); ioc.objs_ptr = UINT64_MAX - sizeof(uint32_t); - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); ioc.count_objs = 1; ioc.objs_ptr = UINT64_MAX - sizeof(uint32_t); - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); num_props_raw[0] = UINT32_MAX / sizeof(uint32_t); - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); num_props_raw[0] = UINT32_MAX - 1; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); for (i = 0; i < ARRAY_SIZE(obj_raw); i++) num_props_raw[i] = (UINT32_MAX / ARRAY_SIZE(obj_raw)) + 1; - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); for (i = 0; i < ARRAY_SIZE(obj_raw); i++) num_props_raw[i] = ARRAY_SIZE(props_raw) / ARRAY_SIZE(obj_raw); - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); } /** @@ -1169,27 +1154,27 @@ static void atomic_invalid_params(igt_pipe_t *pipe, * Mega feature: General Display Features * Test category: functionality test */ -static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *fb) +static void atomic_plane_damage(data_t *data) { struct drm_mode_rect damage[2]; struct igt_fb fb_1, fb_2; cairo_t *cr_1, *cr_2; /* Color fb with white rect at center */ - igt_create_color_fb(pipe->display->drm_fd, fb->width, fb->height, - fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, + igt_create_color_fb(data->drm_fd, data->fb.width, data->fb.height, + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, &fb_1); - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); - igt_paint_color(cr_1, fb->width/4, fb->height/4, fb->width/2, - fb->height/2, 1.0, 1.0, 1.0); + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); + igt_paint_color(cr_1, data->fb.width/4, data->fb.height/4, data->fb.width/2, + data->fb.height/2, 1.0, 1.0, 1.0); igt_put_cairo_ctx(cr_1); /* * Flip the primary plane to new color fb using atomic API and check the * state. */ - igt_plane_set_fb(plane, &fb_1); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_plane_set_fb(data->primary, &fb_1); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* * Change the color of top left clip from center and issue plane update @@ -1197,35 +1182,35 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt */ damage[0].x1 = 0; damage[0].y1 = 0; - damage[0].x2 = fb->width/2; - damage[0].y2 = fb->height/2; + damage[0].x2 = data->fb.width/2; + damage[0].y2 = data->fb.height/2; - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); igt_paint_color(cr_1, damage[0].x1, damage[0].y1, damage_rect_width(&damage[0]), damage_rect_height(&damage[0]), 1.0, 0, 0); igt_put_cairo_ctx(cr_1); - igt_plane_set_fb(plane, &fb_1); - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, + igt_plane_set_fb(data->primary, &fb_1); + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, sizeof(*damage)); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* * Change the color of top left and bottom right clip from center and * issue plane update with damage and verify the state. */ - igt_create_color_fb(pipe->display->drm_fd, fb->width, fb->height, - fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, + igt_create_color_fb(data->drm_fd, data->fb.width, data->fb.height, + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, &fb_2); - damage[0].x1 = fb->width/2; + damage[0].x1 = data->fb.width/2; damage[0].y1 = 0; - damage[0].x2 = fb->width; - damage[0].y2 = fb->height/2; + damage[0].x2 = data->fb.width; + damage[0].y2 = data->fb.height/2; - cr_2 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_2); - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); + cr_2 = igt_get_cairo_ctx(data->drm_fd, &fb_2); + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); cairo_set_source_surface(cr_2, fb_1.cairo_surface, 0, 0); cairo_paint(cr_2); igt_paint_color(cr_2, damage[0].x1, damage[0].y1, @@ -1233,10 +1218,10 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt damage_rect_height(&damage[0]), 0, 1.0, 0); igt_put_cairo_ctx(cr_1); igt_put_cairo_ctx(cr_2); - igt_plane_set_fb(plane, &fb_2); - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, + igt_plane_set_fb(data->primary, &fb_2); + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, sizeof(*damage)); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* * Issue plane update with damage with a clip outside of plane src. @@ -1244,18 +1229,18 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt * will see no change on the screen. */ /* Resize fb_1 to be bigger than plane */ - igt_remove_fb(pipe->display->drm_fd, &fb_1); - igt_create_color_fb(pipe->display->drm_fd, fb->width * 2, fb->height, - fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, + igt_remove_fb(data->drm_fd, &fb_1); + igt_create_color_fb(data->drm_fd, data->fb.width * 2, data->fb.height, + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, &fb_1); - damage[0].x1 = fb->width; + damage[0].x1 = data->fb.width; damage[0].y1 = 0; - damage[0].x2 = fb->width + fb->width/2; - damage[0].y2 = fb->height/2; + damage[0].x2 = data->fb.width + data->fb.width/2; + damage[0].y2 = data->fb.height/2; - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); - cr_2 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_2); + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); + cr_2 = igt_get_cairo_ctx(data->drm_fd, &fb_2); cairo_set_source_surface(cr_1, fb_2.cairo_surface, 0, 0); cairo_paint(cr_1); igt_paint_color(cr_1, damage[0].x1, damage[0].y1, @@ -1263,13 +1248,13 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt damage_rect_height(&damage[0]), 0, 1.0, 0); igt_put_cairo_ctx(cr_2); igt_put_cairo_ctx(cr_1); - igt_plane_set_fb(plane, &fb_1); - igt_plane_set_size(plane, fb->width, fb->height); - igt_fb_set_position(&fb_1, plane, 0, 0); - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, + igt_plane_set_fb(data->primary, &fb_1); + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); + igt_fb_set_position(&fb_1, data->primary, 0, 0); + igt_fb_set_size(&fb_1, data->primary, data->fb.width, data->fb.height); + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, sizeof(*damage)); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* * Issue a plane update with damage with a clip that overlap with plane @@ -1277,23 +1262,23 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt * NOTE: Here drm core should take care of intersecting the clip to * plane src. */ - damage[0].x1 = fb->width/2; + damage[0].x1 = data->fb.width/2; damage[0].y1 = 0; - damage[0].x2 = fb->width/2 + fb->width; - damage[0].y2 = fb->height/2; + damage[0].x2 = data->fb.width/2 + data->fb.width; + damage[0].y2 = data->fb.height/2; - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); igt_paint_color(cr_1, damage[0].x1, damage[0].y1, damage_rect_width(&damage[0]), damage_rect_height(&damage[0]), 1.0, 1.0, 0); igt_put_cairo_ctx(cr_1); - igt_plane_set_fb(plane, &fb_1); - igt_plane_set_size(plane, fb->width, fb->height); - igt_fb_set_position(&fb_1, plane, 0, 0); - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, + igt_plane_set_fb(data->primary, &fb_1); + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); + igt_fb_set_position(&fb_1, data->primary, 0, 0); + igt_fb_set_size(&fb_1, data->primary, data->fb.width, data->fb.height); + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, sizeof(*damage)); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* * Issue a plane update with damage with two clips one inside plane src @@ -1301,16 +1286,16 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt * NOTE: This will result in plane update with clip inside plane src. */ damage[0].x1 = 0; - damage[0].y1 = fb->height/2; - damage[0].x2 = fb->width/2; - damage[0].y2 = fb->height; + damage[0].y1 = data->fb.height/2; + damage[0].x2 = data->fb.width/2; + damage[0].y2 = data->fb.height; - damage[1].x1 = fb->width + fb->width/2; - damage[1].y1 = fb->height/2; - damage[1].x2 = fb->width * 2; - damage[1].y2 = fb->height; + damage[1].x1 = data->fb.width + data->fb.width/2; + damage[1].y1 = data->fb.height/2; + damage[1].x2 = data->fb.width * 2; + damage[1].y2 = data->fb.height; - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); igt_paint_color(cr_1, damage[0].x1, damage[0].y1, damage_rect_width(&damage[0]), damage_rect_height(&damage[0]), 0, 1.0, 1.0); @@ -1318,13 +1303,13 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt damage_rect_width(&damage[1]), damage_rect_height(&damage[1]), 0, 1.0, 0); igt_put_cairo_ctx(cr_1); - igt_plane_set_fb(plane, &fb_1); - igt_plane_set_size(plane, fb->width, fb->height); - igt_fb_set_position(&fb_1, plane, 0, 0); - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, + igt_plane_set_fb(data->primary, &fb_1); + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); + igt_fb_set_position(&fb_1, data->primary, 0, 0); + igt_fb_set_size(&fb_1, data->primary, data->fb.width, data->fb.height); + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, sizeof(*damage) * 2); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* * Issue a plane update with overlapping damage clips. White rect in @@ -1335,15 +1320,15 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt */ damage[0].x1 = 0; damage[0].y1 = 0; - damage[0].x2 = fb->width/2; - damage[0].y2 = fb->height/2; + damage[0].x2 = data->fb.width/2; + damage[0].y2 = data->fb.height/2; - damage[1].x1 = fb->width/4; - damage[1].y1 = fb->height/4; - damage[1].x2 = fb->width/4 + fb->width/2; - damage[1].y2 = fb->height/4 + fb->height/2; + damage[1].x1 = data->fb.width/4; + damage[1].y1 = data->fb.height/4; + damage[1].x2 = data->fb.width/4 + data->fb.width/2; + damage[1].y2 = data->fb.height/4 + data->fb.height/2; - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); igt_paint_color(cr_1, damage[0].x1, damage[0].y1, damage_rect_width(&damage[0]), damage_rect_height(&damage[0]), 1.0, 0, 0); @@ -1351,224 +1336,266 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt damage_rect_width(&damage[1]), damage_rect_height(&damage[1]), 1.0, 1.0, 1.0); igt_put_cairo_ctx(cr_1); - igt_plane_set_fb(plane, &fb_1); - igt_plane_set_size(plane, fb->width, fb->height); - igt_fb_set_position(&fb_1, plane, 0, 0); - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, + igt_plane_set_fb(data->primary, &fb_1); + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); + igt_fb_set_position(&fb_1, data->primary, 0, 0); + igt_fb_set_size(&fb_1, data->primary, data->fb.width, data->fb.height); + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, sizeof(*damage) * 2); - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* Restore the primary plane */ - igt_plane_set_fb(plane, fb); - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_plane_set_fb(data->primary, &data->fb); + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); /* Remove the fb created for this test */ - igt_remove_fb(pipe->display->drm_fd, &fb_1); - igt_remove_fb(pipe->display->drm_fd, &fb_2); + igt_remove_fb(data->drm_fd, &fb_1); + igt_remove_fb(data->drm_fd, &fb_2); } -static void atomic_setup(igt_display_t *display, enum pipe pipe, igt_output_t *output, igt_plane_t *primary, struct igt_fb *fb) +static void atomic_setup(data_t *data, enum pipe pipe, igt_output_t *output) { - igt_info("Using (pipe %s + %s) to run the subtest.\n", - kmstest_pipe_name(pipe), igt_output_name(output)); - - igt_display_reset(display); + drmModeModeInfo *mode; + igt_display_reset(&data->display); igt_output_set_pipe(output, pipe); - igt_plane_set_fb(primary, fb); - crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + data->primary = igt_pipe_get_plane_type(&data->display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY); + data->pipe = &data->display.pipes[pipe]; + mode = igt_output_get_mode(output); + + igt_create_pattern_fb(data->drm_fd, + mode->hdisplay, mode->vdisplay, + plane_get_igt_format(data->primary), + DRM_FORMAT_MOD_LINEAR, &data->fb); + + igt_plane_set_fb(data->primary, &data->fb); + + crtc_commit(data->primary->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); } -static void atomic_clear(igt_display_t *display, enum pipe pipe, igt_plane_t *primary, - igt_output_t *output, struct igt_fb *fb) +static void atomic_clear(data_t *data, enum pipe pipe, igt_output_t *output) { igt_plane_t *plane; - for_each_plane_on_pipe(display, pipe, plane) { + for_each_plane_on_pipe(&data->display, pipe, plane) { igt_plane_set_fb(plane, NULL); igt_plane_set_position(plane, 0, 0); } igt_output_set_pipe(output, PIPE_NONE); - crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); - igt_remove_fb(display->drm_fd, fb); + crtc_commit(data->primary->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); + igt_remove_fb(data->drm_fd, &data->fb); +} + +/* Returns true if plane supports zpos property. */ +static bool has_zpos(igt_plane_t *plane) +{ + return igt_plane_has_prop(plane, IGT_PLANE_ZPOS); } igt_main { - igt_display_t display; enum pipe pipe = PIPE_NONE; - igt_pipe_t *pipe_obj; igt_output_t *output = NULL; - igt_plane_t *primary = NULL; - drmModeModeInfo *mode; - struct igt_fb fb; - bool valid_config = false; + data_t data = { 0 }; igt_fixture { - display.drm_fd = drm_open_driver_master(DRIVER_ANY); + data.drm_fd = drm_open_driver_master(DRIVER_ANY); kmstest_set_vt_graphics_mode(); - igt_display_require(&display, display.drm_fd); - igt_require(display.is_atomic); - igt_display_require_output(&display); - - for_each_pipe_with_valid_output(&display, pipe, output) { - igt_display_reset(&display); - - igt_output_set_pipe(output, pipe); - if (i915_pipe_output_combo_valid(&display)) { - valid_config = true; - break; - } - } - igt_require(valid_config); - - pipe_obj = &display.pipes[pipe]; - primary = igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_PRIMARY); - - mode = igt_output_get_mode(output); - - igt_create_pattern_fb(display.drm_fd, - mode->hdisplay, mode->vdisplay, - plane_get_igt_format(primary), - DRM_FORMAT_MOD_LINEAR, &fb); + igt_display_require(&data.display, data.drm_fd); + igt_require(data.display.is_atomic); + igt_display_require_output(&data.display); } igt_describe("Test for KMS atomic modesetting on overlay plane and ensure coherency between " "the legacy and atomic interfaces."); - igt_subtest("plane-overlay-legacy") { - igt_plane_t *overlay = - igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); - igt_require(overlay); - - atomic_setup(&display, pipe, output, primary, &fb); - plane_overlay(pipe_obj, output, overlay); - atomic_clear(&display, pipe, primary, output, &fb); + igt_subtest_with_dynamic("plane-overlay-legacy") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + igt_plane_t *overlay = + igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY); + uint32_t format = plane_get_igt_format(overlay); + + if (!overlay || !format) + continue; + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_setup(&data, pipe, output); + plane_overlay(&data, output, overlay, format); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Test for KMS atomic modesetting on primary plane and ensure coherency between " "the legacy and atomic interfaces."); - igt_subtest("plane-primary-legacy") { - atomic_setup(&display, pipe, output, primary, &fb); - plane_primary(pipe_obj, primary, &fb); - atomic_clear(&display, pipe, primary, output, &fb); + igt_subtest_with_dynamic("plane-primary-legacy") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_setup(&data, pipe, output); + plane_primary(&data); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Verify that the overlay plane can cover the primary one (and "\ "vice versa) by changing their zpos property."); - igt_subtest("plane-primary-overlay-mutable-zpos") { - uint32_t format_primary = DRM_FORMAT_ARGB8888; - uint32_t format_overlay = DRM_FORMAT_ARGB1555; - igt_plane_t *overlay = - igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); - igt_require(overlay); - - igt_info("Using (pipe %s + %s) to run the subtest.\n", - kmstest_pipe_name(pipe), igt_output_name(output)); + igt_subtest_with_dynamic("plane-primary-overlay-mutable-zpos") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + igt_plane_t *overlay = + igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY); - igt_display_reset(&display); - - igt_require(igt_plane_has_prop(primary, IGT_PLANE_ZPOS)); - igt_require(igt_plane_has_prop(overlay, IGT_PLANE_ZPOS)); - - igt_require(igt_plane_has_format_mod(primary, format_primary, 0x0)); - igt_require(igt_plane_has_format_mod(overlay, format_overlay, 0x0)); - - igt_output_set_pipe(output, pipe); - plane_primary_overlay_mutable_zpos(pipe_obj, output, primary, overlay, - format_primary, format_overlay); - atomic_clear(&display, pipe, primary, output, &fb); + atomic_setup(&data, pipe, output); + if (!overlay) + continue; + if (!has_zpos(data.primary) || !has_zpos(overlay)) + continue; + if (!igt_plane_has_format_mod(data.primary, DRM_FORMAT_ARGB8888, 0x0) || + !igt_plane_has_format_mod(overlay, DRM_FORMAT_ARGB1555, 0x0)) + continue; + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + plane_primary_overlay_mutable_zpos(&data, output, overlay, + DRM_FORMAT_ARGB8888, DRM_FORMAT_ARGB1555); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Verify the reported zpos property of planes by making sure "\ "only higher zpos planes cover the lower zpos ones."); - igt_subtest("plane-immutable-zpos") { - int n_planes = pipe_obj->n_planes; - igt_require(n_planes >= 2); + igt_subtest_with_dynamic("plane-immutable-zpos") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + int n_planes = data.display.pipes[pipe].n_planes; - igt_info("Using (pipe %s + %s) to run the subtest.\n", - kmstest_pipe_name(pipe), igt_output_name(output)); - - igt_display_reset(&display); - igt_output_set_pipe(output, pipe); - plane_immutable_zpos(&display, pipe_obj, output, primary, n_planes); - atomic_clear(&display, pipe, primary, output, &fb); + if (n_planes < 2) + continue; + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_setup(&data, pipe, output); + plane_immutable_zpos(&data, output, pipe, n_planes); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches " "the free-standing state objects and nothing else."); - igt_subtest("test-only") { - uint32_t format = plane_get_igt_format(primary); - igt_require(format != 0); + igt_subtest_with_dynamic("test-only") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + uint32_t format; - igt_info("Using (pipe %s + %s) to run the subtest.\n", - kmstest_pipe_name(pipe), igt_output_name(output)); + atomic_setup(&data, pipe, output); + format = plane_get_igt_format(data.primary); - atomic_clear(&display, pipe, primary, output, &fb); - test_only(pipe_obj, primary, output, format); + if (!format) + continue; + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_clear(&data, pipe, output); + test_only(&data, output, pipe, format); + } + break; + } } igt_describe("Test for KMS atomic modesetting on cursor plane and ensure coherency between " "legacy and atomic interfaces."); - igt_subtest("plane-cursor-legacy") { - igt_plane_t *cursor = - igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_CURSOR); - igt_require(cursor); - - atomic_setup(&display, pipe, output, primary, &fb); - plane_cursor(pipe_obj, output, cursor); - atomic_clear(&display, pipe, primary, output, &fb); + igt_subtest_with_dynamic("plane-cursor-legacy") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + igt_plane_t *cursor = + igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR); + + if (!cursor) + continue; + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_setup(&data, pipe, output); + plane_cursor(&data, output, cursor); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Test error handling when invalid plane parameters are passed"); - igt_subtest("plane-invalid-params") { - atomic_setup(&display, pipe, output, primary, &fb); - plane_invalid_params(pipe_obj, output, primary, &fb); - atomic_clear(&display, pipe, primary, output, &fb); + igt_subtest_with_dynamic("plane-invalid-params") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_setup(&data, pipe, output); + plane_invalid_params(&data, output); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Test error handling when invalid plane fence parameters are passed"); - igt_subtest("plane-invalid-params-fence") { - atomic_setup(&display, pipe, output, primary, &fb); - plane_invalid_params_fence(pipe_obj, output, primary); - atomic_clear(&display, pipe, primary, output, &fb); + igt_subtest_with_dynamic("plane-invalid-params-fence") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_setup(&data, pipe, output); + plane_invalid_params_fence(&data, output); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Test error handling when invalid crtc parameters are passed"); - igt_subtest("crtc-invalid-params") { - atomic_setup(&display, pipe, output, primary, &fb); - crtc_invalid_params(pipe_obj, output, primary, &fb); - atomic_clear(&display, pipe, primary, output, &fb); + igt_subtest_with_dynamic("crtc-invalid-params") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_setup(&data, pipe, output); + crtc_invalid_params(&data, output); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Test error handling when invalid crtc fence parameters are passed"); - igt_subtest("crtc-invalid-params-fence") { - atomic_setup(&display, pipe, output, primary, &fb); - crtc_invalid_params_fence(pipe_obj, output, primary, &fb); - atomic_clear(&display, pipe, primary, output, &fb); + igt_subtest_with_dynamic("crtc-invalid-params-fence") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_setup(&data, pipe, output); + crtc_invalid_params_fence(&data, output); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Test abuse the atomic ioctl directly in order to test " "various invalid conditions which the libdrm wrapper won't " "allow us to create."); - igt_subtest("atomic-invalid-params") { - atomic_setup(&display, pipe, output, primary, &fb); - atomic_invalid_params(pipe_obj, primary, output, &fb); - atomic_clear(&display, pipe, primary, output, &fb); + igt_subtest_with_dynamic("atomic-invalid-params") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_setup(&data, pipe, output); + atomic_invalid_params(&data, output); + atomic_clear(&data, pipe, output); + } + break; + } } igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane property"); - igt_subtest("atomic-plane-damage") { - igt_require(igt_plane_has_prop(primary, IGT_PLANE_FB_DAMAGE_CLIPS)); + igt_subtest_with_dynamic("atomic-plane-damage") { + for_each_pipe_with_single_output(&data.display, pipe, output) { + atomic_setup(&data, pipe, output); - atomic_setup(&display, pipe, output, primary, &fb); - atomic_plane_damage(pipe_obj, primary, &fb); - atomic_clear(&display, pipe, primary, output, &fb); + if (!igt_plane_has_prop(data.primary, IGT_PLANE_FB_DAMAGE_CLIPS)) + continue; + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { + atomic_plane_damage(&data); + atomic_clear(&data, pipe, output); + } + break; + } } igt_fixture { - igt_display_fini(&display); - drm_close_driver(display.drm_fd); + igt_display_fini(&data.display); + drm_close_driver(data.drm_fd); } } -- 2.25.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 4/6] tests/kms_atomic: convert subtests to dynamic subtests 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 4/6] tests/kms_atomic: convert subtests to dynamic subtests Swati Sharma @ 2023-09-27 3:39 ` Karthik B S 2023-10-10 5:54 ` Sharma, Swati2 0 siblings, 1 reply; 18+ messages in thread From: Karthik B S @ 2023-09-27 3:39 UTC (permalink / raw) To: Swati Sharma, igt-dev On 9/18/2023 1:24 PM, Swati Sharma wrote: > Subtests are converted to dynamic subtests. From the fixture > for_each_pipe_with_valid_output() is removed and put at > subtest level to give flexibility to user to test all pipes/output > combinations. However, restricted to 1pipe/1output combination > as originally written in the test. Code rework is done to > accommodate above changes. > > Signed-off-by: Swati Sharma <swati2.sharma@intel.com> > --- > tests/kms_atomic.c | 907 +++++++++++++++++++++++---------------------- > 1 file changed, 467 insertions(+), 440 deletions(-) > > diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c > index c55cb5b2f..e9159ded2 100644 > --- a/tests/kms_atomic.c > +++ b/tests/kms_atomic.c > @@ -58,6 +58,15 @@ > > IGT_TEST_DESCRIPTION("Test atomic modesetting API"); > > +/* Common test data. */ > +typedef struct { > + igt_display_t display; > + igt_plane_t *primary; > + igt_pipe_t *pipe; > + int drm_fd; > + igt_fb_t fb; > +} data_t; > + Hi, Could you please split the patch into two. One just having the addition of data_t structure and its usage, and the second one having the changes for converting the subtests into dynamic subtests. Thanks, Karthik.B.S > enum kms_atomic_check_relax { > ATOMIC_RELAX_NONE = 0, > CRTC_RELAX_MODE = (1 << 0), > @@ -301,8 +310,7 @@ static uint32_t plane_get_igt_format(igt_plane_t *plane) > * Test category: functionality test > */ > static void > -plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, > - igt_plane_t *primary, igt_plane_t *overlay, > +plane_primary_overlay_mutable_zpos(data_t *data, igt_output_t *output, igt_plane_t *overlay, > uint32_t format_primary, uint32_t format_overlay) > { > struct igt_fb fb_primary, fb_overlay; > @@ -317,17 +325,17 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, > uint32_t w_overlay = mode->hdisplay / 2; > uint32_t h_overlay = mode->vdisplay / 2; > > - igt_create_color_pattern_fb(pipe->display->drm_fd, > + igt_create_color_pattern_fb(data->drm_fd, > w, h, format_primary, DRM_FORMAT_MOD_LINEAR, > 0.2, 0.2, 0.2, &fb_primary); > > - igt_create_color_pattern_fb(pipe->display->drm_fd, > + igt_create_color_pattern_fb(data->drm_fd, > w_overlay, h_overlay, > format_overlay, DRM_FORMAT_MOD_LINEAR, > 0.2, 0.2, 0.2, &fb_overlay); > > /* Draw a hole in the overlay */ > - cr = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_overlay); > + cr = igt_get_cairo_ctx(data->drm_fd, &fb_overlay); > cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); > igt_paint_color_alpha(cr, w_overlay / 4, h_overlay / 4, > w_overlay / 2, h_overlay / 2, > @@ -335,33 +343,33 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, > cairo_set_operator(cr, CAIRO_OPERATOR_OVER); > igt_put_cairo_ctx(cr); > > - igt_plane_set_fb(primary, &fb_primary); > + igt_plane_set_fb(data->primary, &fb_primary); > igt_plane_set_fb(overlay, &fb_overlay); > > igt_plane_set_position(overlay, w_overlay / 2, h_overlay / 2); > > - igt_plane_set_prop_value(primary, IGT_PLANE_ZPOS, 0); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_ZPOS, 0); > igt_plane_set_prop_value(overlay, IGT_PLANE_ZPOS, 1); > > igt_info("Committing with overlay on top, it has a hole "\ > "through which the primary should be seen\n"); > - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > - igt_assert_eq_u64(igt_plane_get_prop(primary, IGT_PLANE_ZPOS), 0); > + igt_assert_eq_u64(igt_plane_get_prop(data->primary, IGT_PLANE_ZPOS), 0); > igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 1); > > - igt_plane_set_prop_value(primary, IGT_PLANE_ZPOS, 1); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_ZPOS, 1); > igt_plane_set_prop_value(overlay, IGT_PLANE_ZPOS, 0); > > igt_info("Committing with primary on top, only the primary "\ > "should be visible\n"); > - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > - igt_assert_eq_u64(igt_plane_get_prop(primary, IGT_PLANE_ZPOS), 1); > + igt_assert_eq_u64(igt_plane_get_prop(data->primary, IGT_PLANE_ZPOS), 1); > igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 0); > > /* Draw a hole in the primary exactly on top of the overlay plane */ > - cr = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_primary); > + cr = igt_get_cairo_ctx(data->drm_fd, &fb_primary); > cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); > igt_paint_color_alpha(cr, w_overlay / 2, h_overlay / 2, > w_overlay, h_overlay, > @@ -371,14 +379,14 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, > > igt_info("Committing with a hole in the primary through "\ > "which the underlay should be seen\n"); > - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* reset it back to initial state */ > - igt_plane_set_prop_value(primary, IGT_PLANE_ZPOS, 0); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_ZPOS, 0); > igt_plane_set_prop_value(overlay, IGT_PLANE_ZPOS, 1); > - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > - igt_assert_eq_u64(igt_plane_get_prop(primary, IGT_PLANE_ZPOS), 0); > + igt_assert_eq_u64(igt_plane_get_prop(data->primary, IGT_PLANE_ZPOS), 0); > igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 1); > } > > @@ -392,8 +400,7 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t *output, > * Test category: functionality test > */ > static void > -plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, > - igt_output_t *output, igt_plane_t *primary, int n_planes) > +plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe pipe, int n_planes) > { > cairo_t *cr; > struct igt_fb fb_ref; > @@ -406,8 +413,7 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, > uint32_t w_lower, h_lower, w_upper, h_upper; > > memset(plane_ptr, 0, n_planes * sizeof(igt_plane_t *)); > - > - igt_require_pipe_crc(display->drm_fd); > + igt_require_pipe_crc(data->drm_fd); > > mode = igt_output_get_mode(output); > > @@ -419,36 +425,36 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, > w_upper = 64; > h_upper = 64; > > - igt_create_color_fb(display->drm_fd, > + igt_create_color_fb(data->drm_fd, > w_lower, h_lower, > DRM_FORMAT_XRGB8888, > DRM_FORMAT_MOD_LINEAR, > 0.0, 0.0, 0.0, &fb_ref); > > /* create reference image */ > - cr = igt_get_cairo_ctx(display->drm_fd, &fb_ref); > + cr = igt_get_cairo_ctx(data->drm_fd, &fb_ref); > igt_assert(cairo_status(cr) == 0); > igt_paint_color(cr, 0, 0, w_lower, h_lower, 0.0, 0.0, 1.0); > igt_paint_color(cr, w_upper / 2, h_upper / 2, w_upper, h_upper, 1.0, 1.0, 0.0); > igt_put_cairo_ctx(cr); > - igt_plane_set_fb(primary, &fb_ref); > - igt_display_commit2(display, COMMIT_ATOMIC); > + igt_plane_set_fb(data->primary, &fb_ref); > + igt_display_commit2(&data->display, COMMIT_ATOMIC); > > /* create the pipe_crc object for this pipe */ > - pipe_crc = igt_pipe_crc_new(pipe->display->drm_fd, pipe->pipe, > + pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, > IGT_PIPE_CRC_SOURCE_AUTO); > > /* get reference crc */ > igt_pipe_crc_start(pipe_crc); > - igt_pipe_crc_get_current(display->drm_fd, pipe_crc, &ref_crc); > + igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &ref_crc); > > - igt_plane_set_fb(primary, NULL); > + igt_plane_set_fb(data->primary, NULL); > > for (int k = 0; k < n_planes; k++) { > int zpos; > igt_plane_t *temp; > > - temp = &display->pipes[pipe->pipe].planes[k]; > + temp = &data->display.pipes[pipe].planes[k]; > > if (!igt_plane_has_prop(temp, IGT_PLANE_ZPOS)) > continue; > @@ -458,14 +464,14 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, > plane_ptr[zpos] = temp; > } > > - fb_id_lower = igt_create_color_fb(display->drm_fd, > + fb_id_lower = igt_create_color_fb(data->drm_fd, > w_lower, h_lower, > DRM_FORMAT_XRGB8888, > DRM_FORMAT_MOD_LINEAR, > 0.0, 0.0, 1.0, &fb_lower); > igt_assert(fb_id_lower); > > - fb_id_upper = igt_create_color_fb(display->drm_fd, > + fb_id_upper = igt_create_color_fb(data->drm_fd, > w_upper, h_upper, > DRM_FORMAT_XRGB8888, > DRM_FORMAT_MOD_LINEAR, > @@ -508,8 +514,8 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, > > igt_info("Committing with the plane[%d] underneath "\ > "plane[%d]\n", i, (i + 1)); > - igt_display_commit2(display, COMMIT_ATOMIC); > - igt_pipe_crc_get_current(pipe->display->drm_fd, pipe_crc, &new_crc); > + igt_display_commit2(&data->display, COMMIT_ATOMIC); > + igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &new_crc); > > igt_assert_crc_equal(&ref_crc, &new_crc); > > @@ -517,9 +523,9 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, > igt_plane_set_fb(plane_upper, NULL); > } > > - igt_remove_fb(display->drm_fd, &fb_ref); > - igt_remove_fb(display->drm_fd, &fb_lower); > - igt_remove_fb(display->drm_fd, &fb_upper); > + igt_remove_fb(data->drm_fd, &fb_ref); > + igt_remove_fb(data->drm_fd, &fb_lower); > + igt_remove_fb(data->drm_fd, &fb_upper); > } > > /** > @@ -537,17 +543,15 @@ plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, > * @overlay: Overlay plane > * @primary: Primary plane > */ > -static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *plane) > +static void plane_overlay(data_t *data, igt_output_t *output, igt_plane_t *plane, > + uint32_t format) > { > - drmModeModeInfo *mode = igt_output_get_mode(output); > - uint32_t format = plane_get_igt_format(plane); > struct igt_fb fb; > + drmModeModeInfo *mode = igt_output_get_mode(output); > uint32_t w = mode->hdisplay / 2; > uint32_t h = mode->vdisplay / 2; > > - igt_require(format != 0); > - > - igt_create_pattern_fb(pipe->display->drm_fd, w, h, > + igt_create_pattern_fb(data->drm_fd, w, h, > format, DRM_FORMAT_MOD_LINEAR, &fb); > > igt_plane_set_fb(plane, &fb); > @@ -580,49 +584,49 @@ static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *p > igt_plane_set_position(plane, 0, 0); > plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE); > > - igt_remove_fb(pipe->display->drm_fd, &fb); > + igt_remove_fb(data->drm_fd, &fb); > } > > -static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *fb) > +static void plane_primary(data_t *data) > { > struct igt_fb fb2; > > - igt_create_color_pattern_fb(pipe->display->drm_fd, > - fb->width, fb->height, > - fb->drm_format, DRM_FORMAT_MOD_LINEAR, > + igt_create_color_pattern_fb(data->drm_fd, > + data->fb.width, data->fb.height, > + data->fb.drm_format, I915_TILING_NONE, > 0.2, 0.2, 0.2, &fb2); > > /* > * Flip the primary plane using the atomic API, and double-check > * state is what we think it should be. > */ > - igt_plane_set_fb(plane, &fb2); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_plane_set_fb(data->primary, &fb2); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* Restore the primary plane and check the state matches the old. */ > - igt_plane_set_fb(plane, fb); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_plane_set_fb(data->primary, &data->fb); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* > * Set the plane through the legacy CRTC/primary-plane API, and > * verify through atomic. > */ > - igt_plane_set_fb(plane, &fb2); > - crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); > + igt_plane_set_fb(data->primary, &data->fb); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* > * Restore the plane to its original settings through the legacy CRTC > * API, and verify through atomic. > */ > - igt_plane_set_fb(plane, fb); > - crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); > + igt_plane_set_fb(data->primary, &data->fb); > + crtc_commit(data->pipe, data->primary, COMMIT_LEGACY, CRTC_RELAX_MODE); > > /* > * Set the plane through the universal setplane API, and > * verify through atomic. > */ > - igt_plane_set_fb(plane, &fb2); > - plane_commit(plane, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE); > + igt_plane_set_fb(data->primary, &fb2); > + plane_commit(data->primary, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE); > } > > /** > @@ -639,61 +643,58 @@ static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *f > * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches the > * free-standing state objects and nothing else. > */ > -static void test_only(igt_pipe_t *pipe_obj, igt_plane_t *primary, > - igt_output_t *output, uint32_t format) > +static void test_only(data_t *data, igt_output_t *output, enum pipe pipe, uint32_t format) > { > - drmModeModeInfo *mode = igt_output_get_mode(output); > struct igt_fb fb; > uint64_t old_plane_values[IGT_NUM_PLANE_PROPS], old_crtc_values[IGT_NUM_CRTC_PROPS]; > + drmModeModeInfo *mode = igt_output_get_mode(output); > > - plane_get_current_state(primary, old_plane_values); > - crtc_get_current_state(pipe_obj, old_crtc_values); > + plane_get_current_state(data->primary, old_plane_values); > + crtc_get_current_state(data->pipe, old_crtc_values); > > igt_assert(!old_crtc_values[IGT_CRTC_MODE_ID]); > > - igt_create_pattern_fb(pipe_obj->display->drm_fd, > - mode->hdisplay, mode->vdisplay, > - format, DRM_FORMAT_MOD_LINEAR, &fb); > - igt_plane_set_fb(primary, &fb); > - igt_output_set_pipe(output, pipe_obj->pipe); > + igt_create_pattern_fb(data->drm_fd, > + mode->hdisplay, mode->vdisplay, > + format, I915_TILING_NONE, &fb); > + igt_plane_set_fb(data->primary, &fb); > + igt_output_set_pipe(output, pipe); > > - igt_display_commit_atomic(pipe_obj->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); > + igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); > > /* check the state, should still be old state */ > - crtc_check_current_state(pipe_obj, old_crtc_values, old_plane_values, ATOMIC_RELAX_NONE); > - plane_check_current_state(primary, old_plane_values, ATOMIC_RELAX_NONE); > + crtc_check_current_state(data->pipe, old_crtc_values, old_plane_values, ATOMIC_RELAX_NONE); > + plane_check_current_state(data->primary, old_plane_values, ATOMIC_RELAX_NONE); > > /* > * Enable the plane through the legacy CRTC/primary-plane API, and > * verify through atomic. > */ > - crtc_commit(pipe_obj, primary, COMMIT_LEGACY, CRTC_RELAX_MODE); > + crtc_commit(data->pipe, data->primary, COMMIT_LEGACY, CRTC_RELAX_MODE); > > /* Same for disable.. */ > - plane_get_current_state(primary, old_plane_values); > - crtc_get_current_state(pipe_obj, old_crtc_values); > + plane_get_current_state(data->primary, old_plane_values); > + crtc_get_current_state(data->pipe, old_crtc_values); > > - igt_plane_set_fb(primary, NULL); > + igt_plane_set_fb(data->primary, NULL); > igt_output_set_pipe(output, PIPE_NONE); > > - igt_display_commit_atomic(pipe_obj->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); > + igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); > > /* for extra stress, go through dpms off/on cycle */ > kmstest_set_connector_dpms(output->display->drm_fd, output->config.connector, DRM_MODE_DPMS_OFF); > kmstest_set_connector_dpms(output->display->drm_fd, output->config.connector, DRM_MODE_DPMS_ON); > > /* check the state, should still be old state */ > - crtc_check_current_state(pipe_obj, old_crtc_values, old_plane_values, ATOMIC_RELAX_NONE); > - plane_check_current_state(primary, old_plane_values, ATOMIC_RELAX_NONE); > + crtc_check_current_state(data->pipe, old_crtc_values, old_plane_values, ATOMIC_RELAX_NONE); > + plane_check_current_state(data->primary, old_plane_values, ATOMIC_RELAX_NONE); > > /* And disable the pipe and remove fb, test complete */ > - crtc_commit(pipe_obj, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > - igt_remove_fb(pipe_obj->display->drm_fd, &fb); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_remove_fb(data->drm_fd, &fb); > } > > -static void plane_cursor(igt_pipe_t *pipe_obj, > - igt_output_t *output, > - igt_plane_t *cursor) > +static void plane_cursor(data_t *data, igt_output_t *output, igt_plane_t *cursor) > { > drmModeModeInfo *mode = igt_output_get_mode(output); > struct igt_fb fb; > @@ -702,12 +703,12 @@ static void plane_cursor(igt_pipe_t *pipe_obj, > int y = mode->vdisplay / 2; > > /* Any kernel new enough for atomic, also has the cursor size caps. */ > - do_or_die(drmGetCap(pipe_obj->display->drm_fd, > + do_or_die(drmGetCap(data->drm_fd, > DRM_CAP_CURSOR_WIDTH, &width)); > - do_or_die(drmGetCap(pipe_obj->display->drm_fd, > + do_or_die(drmGetCap(data->drm_fd, > DRM_CAP_CURSOR_HEIGHT, &height)); > > - igt_create_color_fb(pipe_obj->display->drm_fd, > + igt_create_color_fb(data->drm_fd, > width, height, DRM_FORMAT_ARGB8888, > DRM_FORMAT_MOD_LINEAR, > 0.0, 0.0, 0.0, &fb); > @@ -759,69 +760,64 @@ static void plane_cursor(igt_pipe_t *pipe_obj, > * @params: plane parameters > * @params-fence: plane fence parameters > */ > -static void plane_invalid_params(igt_pipe_t *pipe, > - igt_output_t *output, > - igt_plane_t *plane, > - struct igt_fb *fb) > +static void plane_invalid_params(data_t *data, igt_output_t *output) > { > struct igt_fb fb2; > > /* Pass a series of invalid object IDs for the FB ID. */ > - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, plane->drm_plane->plane_id); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, data->primary->drm_plane->plane_id); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, pipe->crtc_id); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, data->pipe->crtc_id); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, output->id); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, output->id); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, pipe->values[IGT_CRTC_MODE_ID]); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, data->pipe->values[IGT_CRTC_MODE_ID]); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > /* Valid, but invalid because CRTC_ID is set. */ > - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, 0); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, 0); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_plane_set_fb(plane, fb); > - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_plane_set_fb(data->primary, &data->fb); > + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* Pass a series of invalid object IDs for the CRTC ID. */ > - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, plane->drm_plane->plane_id); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, data->primary->drm_plane->plane_id); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, fb->fb_id); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, data->fb.fb_id); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, output->id); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, output->id); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, pipe->values[IGT_CRTC_MODE_ID]); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, data->pipe->values[IGT_CRTC_MODE_ID]); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > /* Valid, but invalid because FB_ID is set. */ > - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, 0); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, 0); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_plane_set_fb(plane, fb); > - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_plane_set_fb(data->primary, &data->fb); > + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* Create a framebuffer too small for the plane configuration. */ > - igt_create_pattern_fb(pipe->display->drm_fd, > - fb->width - 1, fb->height - 1, > - fb->drm_format, DRM_FORMAT_MOD_LINEAR, &fb2); > + igt_create_pattern_fb(data->drm_fd, > + data->fb.width - 1, data->fb.height - 1, > + data->fb.drm_format, I915_TILING_NONE, &fb2); > > - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, fb2.fb_id); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, ENOSPC); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, fb2.fb_id); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, ENOSPC); > > /* Restore the primary plane and check the state matches the old. */ > - igt_plane_set_fb(plane, fb); > - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_plane_set_fb(data->primary, &data->fb); > + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > } > > -static void plane_invalid_params_fence(igt_pipe_t *pipe, > - igt_output_t *output, > - igt_plane_t *plane) > +static void plane_invalid_params_fence(data_t *data, igt_output_t *output) > { > int timeline, fence_fd; > > @@ -830,19 +826,19 @@ static void plane_invalid_params_fence(igt_pipe_t *pipe, > timeline = sw_sync_timeline_create(); > > /* invalid fence fd */ > - igt_plane_set_fence_fd(plane, pipe->display->drm_fd); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_fence_fd(data->primary, data->drm_fd); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > /* Valid fence_fd but invalid CRTC */ > fence_fd = sw_sync_timeline_create_fence(timeline, 1); > > - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, ~0); > - igt_plane_set_fence_fd(plane, fence_fd); > - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, ~0); > + igt_plane_set_fence_fd(data->primary, fence_fd); > + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); > > sw_sync_timeline_inc(timeline, 1); > - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, pipe->crtc_id); > - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, data->pipe->crtc_id); > + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > close(fence_fd); > close(timeline); > @@ -861,62 +857,55 @@ static void plane_invalid_params_fence(igt_pipe_t *pipe, > * @params: crtc parameters > * @params-fence: crtc fence parameters > */ > -static void crtc_invalid_params(igt_pipe_t *pipe, > - igt_output_t *output, > - igt_plane_t *plane, > - struct igt_fb *fb) > +static void crtc_invalid_params(data_t *data, igt_output_t *output) > { > - uint64_t old_mode_id = pipe->values[IGT_CRTC_MODE_ID]; > + uint64_t old_mode_id = data->pipe->values[IGT_CRTC_MODE_ID]; > drmModeModeInfo *mode = igt_output_get_mode(output); > > /* Pass a series of invalid object IDs for the mode ID. */ > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, plane->drm_plane->plane_id); > - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, data->primary->drm_plane->plane_id); > + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, pipe->crtc_id); > - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, data->pipe->crtc_id); > + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, output->id); > - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, data->fb.fb_id); > + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); > > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, fb->fb_id); > - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, old_mode_id); > + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); > > /* Can we restore mode? */ > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, old_mode_id); > - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, old_mode_id); > + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); > > /* > * TEST_ONLY cannot be combined with DRM_MODE_PAGE_FLIP_EVENT, > * but DRM_MODE_PAGE_FLIP_EVENT will always generate EINVAL > * without valid crtc, so test it here. > */ > - crtc_commit_atomic_flags_err(pipe, plane, > + crtc_commit_atomic_flags_err(data->pipe, data->primary, > DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_PAGE_FLIP_EVENT, > ATOMIC_RELAX_NONE, EINVAL); > > /* Create a blob which is the wrong size to be a valid mode. */ > - igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode) - 1); > - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); > - > - igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode) + 1); > - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); > + igt_pipe_obj_replace_prop_blob(data->pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode) - 1); > + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); > > + igt_pipe_obj_replace_prop_blob(data->pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode) + 1); > + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EINVAL); > > /* Restore the CRTC and check the state matches the old. */ > - igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode)); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_pipe_obj_replace_prop_blob(data->pipe, IGT_CRTC_MODE_ID, mode, sizeof(*mode)); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > } > > -static void crtc_invalid_params_fence(igt_pipe_t *pipe, > - igt_output_t *output, > - igt_plane_t *plane, > - struct igt_fb *fb) > +static void crtc_invalid_params_fence(data_t *data, igt_output_t *output) > { > int timeline, fence_fd; > void *map; > const ptrdiff_t PAGE_SIZE = sysconf(_SC_PAGE_SIZE); > - uint64_t old_mode_id = pipe->values[IGT_CRTC_MODE_ID]; > + uint64_t old_mode_id = data->pipe->values[IGT_CRTC_MODE_ID]; > > igt_require_sw_sync(); > > @@ -926,86 +915,86 @@ static void crtc_invalid_params_fence(igt_pipe_t *pipe, > map = mmap(NULL, PAGE_SIZE, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); > igt_assert(map != MAP_FAILED); > > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); > - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); > + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EFAULT); > munmap(map, PAGE_SIZE); > > /* invalid out_fence_ptr */ > map = mmap(NULL, PAGE_SIZE, PROT_EXEC, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); > igt_assert(map != MAP_FAILED); > > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); > - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); > + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EFAULT); > munmap(map, PAGE_SIZE); > > /* invalid out_fence_ptr */ > map = mmap(NULL, PAGE_SIZE, PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); > igt_assert(map != MAP_FAILED); > > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); > - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, (ptrdiff_t)map); > + crtc_commit_atomic_err(data->pipe, data->primary, ATOMIC_RELAX_NONE, EFAULT); > munmap(map, PAGE_SIZE); > > /* valid in fence but not allowed prop on crtc */ > fence_fd = sw_sync_timeline_create_fence(timeline, 1); > - igt_plane_set_fence_fd(plane, fence_fd); > + igt_plane_set_fence_fd(data->primary, fence_fd); > > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_ACTIVE, 0); > - igt_pipe_obj_clear_prop_changed(pipe, IGT_CRTC_OUT_FENCE_PTR); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_ACTIVE, 0); > + igt_pipe_obj_clear_prop_changed(data->pipe, IGT_CRTC_OUT_FENCE_PTR); > > - crtc_commit_atomic_flags_err(pipe, plane, 0, ATOMIC_RELAX_NONE, EINVAL); > + crtc_commit_atomic_flags_err(data->pipe, data->primary, 0, ATOMIC_RELAX_NONE, EINVAL); > > /* valid out fence ptr and flip event but not allowed prop on crtc */ > - igt_pipe_request_out_fence(pipe); > - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, > + igt_pipe_request_out_fence(data->pipe); > + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_PAGE_FLIP_EVENT, > ATOMIC_RELAX_NONE, EINVAL); > > /* valid flip event but not allowed prop on crtc */ > - igt_pipe_obj_clear_prop_changed(pipe, IGT_CRTC_OUT_FENCE_PTR); > - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, > + igt_pipe_request_out_fence(data->pipe); > + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_PAGE_FLIP_EVENT, > ATOMIC_RELAX_NONE, EINVAL); > > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_ACTIVE, 1); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_ACTIVE, 1); > > /* Configuration should be valid again */ > - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, > + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_ATOMIC_TEST_ONLY, > ATOMIC_RELAX_NONE, 0); > > /* Set invalid prop */ > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, fb->fb_id); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, data->fb.fb_id); > > /* valid out fence but invalid prop on crtc */ > - igt_pipe_request_out_fence(pipe); > - crtc_commit_atomic_flags_err(pipe, plane, 0, > + igt_pipe_request_out_fence(data->pipe); > + crtc_commit_atomic_flags_err(data->pipe, data->primary, 0, > ATOMIC_RELAX_NONE, EINVAL); > > /* valid out fence ptr and flip event but invalid prop on crtc */ > - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, > + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_PAGE_FLIP_EVENT, > ATOMIC_RELAX_NONE, EINVAL); > > /* valid page flip event but invalid prop on crtc */ > - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, > + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_PAGE_FLIP_EVENT, > ATOMIC_RELAX_NONE, EINVAL); > > /* successful TEST_ONLY with fences set */ > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, old_mode_id); > - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, old_mode_id); > + crtc_commit_atomic_flags_err(data->pipe, data->primary, DRM_MODE_ATOMIC_TEST_ONLY, > ATOMIC_RELAX_NONE, 0); > - igt_assert(pipe->out_fence_fd == -1); > + igt_assert(data->pipe->out_fence_fd == -1); > close(fence_fd); > close(timeline); > > /* reset fences */ > - igt_plane_set_fence_fd(plane, -1); > - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, 0); > - igt_pipe_obj_clear_prop_changed(pipe, IGT_CRTC_OUT_FENCE_PTR); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_plane_set_fence_fd(data->primary, -1); > + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, 0); > + igt_pipe_obj_clear_prop_changed(data->pipe, IGT_CRTC_OUT_FENCE_PTR); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* out fence ptr but not page flip event */ > - igt_pipe_request_out_fence(pipe); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_pipe_request_out_fence(data->pipe); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > - igt_assert(pipe->out_fence_fd != -1); > + igt_assert(data->pipe->out_fence_fd != -1); > } > > /** > @@ -1023,12 +1012,8 @@ static void crtc_invalid_params_fence(igt_pipe_t *pipe, > * Abuse the atomic ioctl directly in order to test various invalid conditions, > * which the libdrm wrapper won't allow us to create. > */ > -static void atomic_invalid_params(igt_pipe_t *pipe, > - igt_plane_t *plane, > - igt_output_t *output, > - struct igt_fb *fb) > +static void atomic_invalid_params(data_t *data, igt_output_t *output) > { > - igt_display_t *display = pipe->display; > struct drm_mode_atomic ioc; > uint32_t obj_raw[16]; /* array of objects (sized by count_objs) */ > uint32_t num_props_raw[16]; /* array of num props per obj (ditto) */ > @@ -1039,7 +1024,7 @@ static void atomic_invalid_params(igt_pipe_t *pipe, > memset(&ioc, 0, sizeof(ioc)); > > /* An empty request should do nothing. */ > - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > > for (i = 0; i < ARRAY_SIZE(obj_raw); i++) > obj_raw[i] = 0; > @@ -1056,109 +1041,109 @@ static void atomic_invalid_params(igt_pipe_t *pipe, > ioc.prop_values_ptr = (uintptr_t) values_raw; > > /* Valid pointers, but still should copy nothing. */ > - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > > /* Valid noop, but with event set should fail. */ > ioc.flags = DRM_MODE_PAGE_FLIP_EVENT; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); > > /* Nonsense flags. */ > ioc.flags = 0xdeadbeef; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); > > ioc.flags = 0; > /* Safety check that flags is reset properly. */ > - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > > /* Reserved/MBZ. */ > ioc.reserved = 1; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); > ioc.reserved = 0; > - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > > /* Zero is not a valid object ID. */ > ioc.count_objs = ARRAY_SIZE(obj_raw); > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > > /* Invalid object type (not a thing we can set properties on). */ > ioc.count_objs = 1; > - obj_raw[0] = pipe->values[IGT_CRTC_MODE_ID]; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > - obj_raw[0] = fb->fb_id; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > + obj_raw[0] = data->pipe->values[IGT_CRTC_MODE_ID]; > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > + obj_raw[0] = data->fb.fb_id; > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > > /* Filled object but with no properties; no-op. */ > for (i = 0; i < ARRAY_SIZE(obj_raw); i++) > - obj_raw[i] = pipe->crtc_id; > - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > + obj_raw[i] = data->pipe->crtc_id; > + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > > /* Pass in all sorts of things other than the property ID. */ > num_props_raw[0] = 1; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > - props_raw[0] = pipe->crtc_id; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > - props_raw[0] = plane->drm_plane->plane_id; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > + props_raw[0] = data->pipe->crtc_id; > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > + props_raw[0] = data->primary->drm_plane->plane_id; > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > props_raw[0] = output->id; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > - props_raw[0] = pipe->values[IGT_CRTC_MODE_ID]; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > + props_raw[0] = data->pipe->values[IGT_CRTC_MODE_ID]; > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > > /* Valid property, valid value. */ > for (i = 0; i < ARRAY_SIZE(props_raw); i++) { > - props_raw[i] = pipe->props[IGT_CRTC_MODE_ID]; > - values_raw[i] = pipe->values[IGT_CRTC_MODE_ID]; > + props_raw[i] = data->pipe->props[IGT_CRTC_MODE_ID]; > + values_raw[i] = data->pipe->values[IGT_CRTC_MODE_ID]; > } > - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > > /* Setting the same thing multiple times is OK. */ > for (i = 0; i < ARRAY_SIZE(obj_raw); i++) > num_props_raw[i] = ARRAY_SIZE(props_raw) / ARRAY_SIZE(obj_raw); > - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > ioc.count_objs = ARRAY_SIZE(obj_raw); > - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > > /* Pass a series of outlandish addresses. */ > ioc.objs_ptr = 0; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > > ioc.objs_ptr = (uintptr_t) obj_raw; > ioc.count_props_ptr = 0; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > > ioc.count_props_ptr = (uintptr_t) num_props_raw; > ioc.props_ptr = 0; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > > ioc.props_ptr = (uintptr_t) props_raw; > ioc.prop_values_ptr = 0; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > > ioc.prop_values_ptr = (uintptr_t) values_raw; > - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); > > /* Attempt to overflow and/or trip various boundary conditions. */ > ioc.count_objs = UINT32_MAX / sizeof(uint32_t); > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); > > ioc.count_objs = ARRAY_SIZE(obj_raw); > ioc.objs_ptr = UINT64_MAX - sizeof(uint32_t); > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > ioc.count_objs = 1; > ioc.objs_ptr = UINT64_MAX - sizeof(uint32_t); > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > > num_props_raw[0] = UINT32_MAX / sizeof(uint32_t); > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > num_props_raw[0] = UINT32_MAX - 1; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > > for (i = 0; i < ARRAY_SIZE(obj_raw); i++) > num_props_raw[i] = (UINT32_MAX / ARRAY_SIZE(obj_raw)) + 1; > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > for (i = 0; i < ARRAY_SIZE(obj_raw); i++) > num_props_raw[i] = ARRAY_SIZE(props_raw) / ARRAY_SIZE(obj_raw); > - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); > } > > /** > @@ -1169,27 +1154,27 @@ static void atomic_invalid_params(igt_pipe_t *pipe, > * Mega feature: General Display Features > * Test category: functionality test > */ > -static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *fb) > +static void atomic_plane_damage(data_t *data) > { > struct drm_mode_rect damage[2]; > struct igt_fb fb_1, fb_2; > cairo_t *cr_1, *cr_2; > > /* Color fb with white rect at center */ > - igt_create_color_fb(pipe->display->drm_fd, fb->width, fb->height, > - fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, > + igt_create_color_fb(data->drm_fd, data->fb.width, data->fb.height, > + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, > &fb_1); > - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); > - igt_paint_color(cr_1, fb->width/4, fb->height/4, fb->width/2, > - fb->height/2, 1.0, 1.0, 1.0); > + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); > + igt_paint_color(cr_1, data->fb.width/4, data->fb.height/4, data->fb.width/2, > + data->fb.height/2, 1.0, 1.0, 1.0); > igt_put_cairo_ctx(cr_1); > > /* > * Flip the primary plane to new color fb using atomic API and check the > * state. > */ > - igt_plane_set_fb(plane, &fb_1); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_plane_set_fb(data->primary, &fb_1); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* > * Change the color of top left clip from center and issue plane update > @@ -1197,35 +1182,35 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > */ > damage[0].x1 = 0; > damage[0].y1 = 0; > - damage[0].x2 = fb->width/2; > - damage[0].y2 = fb->height/2; > + damage[0].x2 = data->fb.width/2; > + damage[0].y2 = data->fb.height/2; > > - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); > + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); > igt_paint_color(cr_1, damage[0].x1, damage[0].y1, > damage_rect_width(&damage[0]), > damage_rect_height(&damage[0]), 1.0, 0, 0); > igt_put_cairo_ctx(cr_1); > > - igt_plane_set_fb(plane, &fb_1); > - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > + igt_plane_set_fb(data->primary, &fb_1); > + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > sizeof(*damage)); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* > * Change the color of top left and bottom right clip from center and > * issue plane update with damage and verify the state. > */ > - igt_create_color_fb(pipe->display->drm_fd, fb->width, fb->height, > - fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, > + igt_create_color_fb(data->drm_fd, data->fb.width, data->fb.height, > + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, > &fb_2); > > - damage[0].x1 = fb->width/2; > + damage[0].x1 = data->fb.width/2; > damage[0].y1 = 0; > - damage[0].x2 = fb->width; > - damage[0].y2 = fb->height/2; > + damage[0].x2 = data->fb.width; > + damage[0].y2 = data->fb.height/2; > > - cr_2 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_2); > - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); > + cr_2 = igt_get_cairo_ctx(data->drm_fd, &fb_2); > + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); > cairo_set_source_surface(cr_2, fb_1.cairo_surface, 0, 0); > cairo_paint(cr_2); > igt_paint_color(cr_2, damage[0].x1, damage[0].y1, > @@ -1233,10 +1218,10 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > damage_rect_height(&damage[0]), 0, 1.0, 0); > igt_put_cairo_ctx(cr_1); > igt_put_cairo_ctx(cr_2); > - igt_plane_set_fb(plane, &fb_2); > - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > + igt_plane_set_fb(data->primary, &fb_2); > + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > sizeof(*damage)); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* > * Issue plane update with damage with a clip outside of plane src. > @@ -1244,18 +1229,18 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > * will see no change on the screen. > */ > /* Resize fb_1 to be bigger than plane */ > - igt_remove_fb(pipe->display->drm_fd, &fb_1); > - igt_create_color_fb(pipe->display->drm_fd, fb->width * 2, fb->height, > - fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, > + igt_remove_fb(data->drm_fd, &fb_1); > + igt_create_color_fb(data->drm_fd, data->fb.width * 2, data->fb.height, > + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, > &fb_1); > > - damage[0].x1 = fb->width; > + damage[0].x1 = data->fb.width; > damage[0].y1 = 0; > - damage[0].x2 = fb->width + fb->width/2; > - damage[0].y2 = fb->height/2; > + damage[0].x2 = data->fb.width + data->fb.width/2; > + damage[0].y2 = data->fb.height/2; > > - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); > - cr_2 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_2); > + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); > + cr_2 = igt_get_cairo_ctx(data->drm_fd, &fb_2); > cairo_set_source_surface(cr_1, fb_2.cairo_surface, 0, 0); > cairo_paint(cr_1); > igt_paint_color(cr_1, damage[0].x1, damage[0].y1, > @@ -1263,13 +1248,13 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > damage_rect_height(&damage[0]), 0, 1.0, 0); > igt_put_cairo_ctx(cr_2); > igt_put_cairo_ctx(cr_1); > - igt_plane_set_fb(plane, &fb_1); > - igt_plane_set_size(plane, fb->width, fb->height); > - igt_fb_set_position(&fb_1, plane, 0, 0); > - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); > - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > + igt_plane_set_fb(data->primary, &fb_1); > + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); > + igt_fb_set_position(&fb_1, data->primary, 0, 0); > + igt_fb_set_size(&fb_1, data->primary, data->fb.width, data->fb.height); > + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > sizeof(*damage)); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* > * Issue a plane update with damage with a clip that overlap with plane > @@ -1277,23 +1262,23 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > * NOTE: Here drm core should take care of intersecting the clip to > * plane src. > */ > - damage[0].x1 = fb->width/2; > + damage[0].x1 = data->fb.width/2; > damage[0].y1 = 0; > - damage[0].x2 = fb->width/2 + fb->width; > - damage[0].y2 = fb->height/2; > + damage[0].x2 = data->fb.width/2 + data->fb.width; > + damage[0].y2 = data->fb.height/2; > > - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); > + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); > igt_paint_color(cr_1, damage[0].x1, damage[0].y1, > damage_rect_width(&damage[0]), > damage_rect_height(&damage[0]), 1.0, 1.0, 0); > igt_put_cairo_ctx(cr_1); > - igt_plane_set_fb(plane, &fb_1); > - igt_plane_set_size(plane, fb->width, fb->height); > - igt_fb_set_position(&fb_1, plane, 0, 0); > - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); > - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > + igt_plane_set_fb(data->primary, &fb_1); > + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); > + igt_fb_set_position(&fb_1, data->primary, 0, 0); > + igt_fb_set_size(&fb_1, data->primary, data->fb.width, data->fb.height); > + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > sizeof(*damage)); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* > * Issue a plane update with damage with two clips one inside plane src > @@ -1301,16 +1286,16 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > * NOTE: This will result in plane update with clip inside plane src. > */ > damage[0].x1 = 0; > - damage[0].y1 = fb->height/2; > - damage[0].x2 = fb->width/2; > - damage[0].y2 = fb->height; > + damage[0].y1 = data->fb.height/2; > + damage[0].x2 = data->fb.width/2; > + damage[0].y2 = data->fb.height; > > - damage[1].x1 = fb->width + fb->width/2; > - damage[1].y1 = fb->height/2; > - damage[1].x2 = fb->width * 2; > - damage[1].y2 = fb->height; > + damage[1].x1 = data->fb.width + data->fb.width/2; > + damage[1].y1 = data->fb.height/2; > + damage[1].x2 = data->fb.width * 2; > + damage[1].y2 = data->fb.height; > > - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); > + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); > igt_paint_color(cr_1, damage[0].x1, damage[0].y1, > damage_rect_width(&damage[0]), > damage_rect_height(&damage[0]), 0, 1.0, 1.0); > @@ -1318,13 +1303,13 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > damage_rect_width(&damage[1]), > damage_rect_height(&damage[1]), 0, 1.0, 0); > igt_put_cairo_ctx(cr_1); > - igt_plane_set_fb(plane, &fb_1); > - igt_plane_set_size(plane, fb->width, fb->height); > - igt_fb_set_position(&fb_1, plane, 0, 0); > - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); > - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > + igt_plane_set_fb(data->primary, &fb_1); > + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); > + igt_fb_set_position(&fb_1, data->primary, 0, 0); > + igt_fb_set_size(&fb_1, data->primary, data->fb.width, data->fb.height); > + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > sizeof(*damage) * 2); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* > * Issue a plane update with overlapping damage clips. White rect in > @@ -1335,15 +1320,15 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > */ > damage[0].x1 = 0; > damage[0].y1 = 0; > - damage[0].x2 = fb->width/2; > - damage[0].y2 = fb->height/2; > + damage[0].x2 = data->fb.width/2; > + damage[0].y2 = data->fb.height/2; > > - damage[1].x1 = fb->width/4; > - damage[1].y1 = fb->height/4; > - damage[1].x2 = fb->width/4 + fb->width/2; > - damage[1].y2 = fb->height/4 + fb->height/2; > + damage[1].x1 = data->fb.width/4; > + damage[1].y1 = data->fb.height/4; > + damage[1].x2 = data->fb.width/4 + data->fb.width/2; > + damage[1].y2 = data->fb.height/4 + data->fb.height/2; > > - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); > + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); > igt_paint_color(cr_1, damage[0].x1, damage[0].y1, > damage_rect_width(&damage[0]), > damage_rect_height(&damage[0]), 1.0, 0, 0); > @@ -1351,224 +1336,266 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt > damage_rect_width(&damage[1]), > damage_rect_height(&damage[1]), 1.0, 1.0, 1.0); > igt_put_cairo_ctx(cr_1); > - igt_plane_set_fb(plane, &fb_1); > - igt_plane_set_size(plane, fb->width, fb->height); > - igt_fb_set_position(&fb_1, plane, 0, 0); > - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); > - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > + igt_plane_set_fb(data->primary, &fb_1); > + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); > + igt_fb_set_position(&fb_1, data->primary, 0, 0); > + igt_fb_set_size(&fb_1, data->primary, data->fb.width, data->fb.height); > + igt_plane_replace_prop_blob(data->primary, IGT_PLANE_FB_DAMAGE_CLIPS, damage, > sizeof(*damage) * 2); > - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* Restore the primary plane */ > - igt_plane_set_fb(plane, fb); > - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_plane_set_fb(data->primary, &data->fb); > + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > > /* Remove the fb created for this test */ > - igt_remove_fb(pipe->display->drm_fd, &fb_1); > - igt_remove_fb(pipe->display->drm_fd, &fb_2); > + igt_remove_fb(data->drm_fd, &fb_1); > + igt_remove_fb(data->drm_fd, &fb_2); > } > > -static void atomic_setup(igt_display_t *display, enum pipe pipe, igt_output_t *output, igt_plane_t *primary, struct igt_fb *fb) > +static void atomic_setup(data_t *data, enum pipe pipe, igt_output_t *output) > { > - igt_info("Using (pipe %s + %s) to run the subtest.\n", > - kmstest_pipe_name(pipe), igt_output_name(output)); > - > - igt_display_reset(display); > + drmModeModeInfo *mode; > + igt_display_reset(&data->display); > igt_output_set_pipe(output, pipe); > - igt_plane_set_fb(primary, fb); > > - crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + data->primary = igt_pipe_get_plane_type(&data->display.pipes[pipe], DRM_PLANE_TYPE_PRIMARY); > + data->pipe = &data->display.pipes[pipe]; > + mode = igt_output_get_mode(output); > + > + igt_create_pattern_fb(data->drm_fd, > + mode->hdisplay, mode->vdisplay, > + plane_get_igt_format(data->primary), > + DRM_FORMAT_MOD_LINEAR, &data->fb); > + > + igt_plane_set_fb(data->primary, &data->fb); > + > + crtc_commit(data->primary->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > } > > -static void atomic_clear(igt_display_t *display, enum pipe pipe, igt_plane_t *primary, > - igt_output_t *output, struct igt_fb *fb) > +static void atomic_clear(data_t *data, enum pipe pipe, igt_output_t *output) > { > igt_plane_t *plane; > > - for_each_plane_on_pipe(display, pipe, plane) { > + for_each_plane_on_pipe(&data->display, pipe, plane) { > igt_plane_set_fb(plane, NULL); > igt_plane_set_position(plane, 0, 0); > } > > igt_output_set_pipe(output, PIPE_NONE); > - crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > - igt_remove_fb(display->drm_fd, fb); > + crtc_commit(data->primary->pipe, data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); > + igt_remove_fb(data->drm_fd, &data->fb); > +} > + > +/* Returns true if plane supports zpos property. */ > +static bool has_zpos(igt_plane_t *plane) > +{ > + return igt_plane_has_prop(plane, IGT_PLANE_ZPOS); > } > > igt_main > { > - igt_display_t display; > enum pipe pipe = PIPE_NONE; > - igt_pipe_t *pipe_obj; > igt_output_t *output = NULL; > - igt_plane_t *primary = NULL; > - drmModeModeInfo *mode; > - struct igt_fb fb; > - bool valid_config = false; > + data_t data = { 0 }; > > igt_fixture { > - display.drm_fd = drm_open_driver_master(DRIVER_ANY); > + data.drm_fd = drm_open_driver_master(DRIVER_ANY); > kmstest_set_vt_graphics_mode(); > - igt_display_require(&display, display.drm_fd); > - igt_require(display.is_atomic); > - igt_display_require_output(&display); > - > - for_each_pipe_with_valid_output(&display, pipe, output) { > - igt_display_reset(&display); > - > - igt_output_set_pipe(output, pipe); > - if (i915_pipe_output_combo_valid(&display)) { > - valid_config = true; > - break; > - } > - } > - igt_require(valid_config); > - > - pipe_obj = &display.pipes[pipe]; > - primary = igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_PRIMARY); > - > - mode = igt_output_get_mode(output); > - > - igt_create_pattern_fb(display.drm_fd, > - mode->hdisplay, mode->vdisplay, > - plane_get_igt_format(primary), > - DRM_FORMAT_MOD_LINEAR, &fb); > + igt_display_require(&data.display, data.drm_fd); > + igt_require(data.display.is_atomic); > + igt_display_require_output(&data.display); > } > > igt_describe("Test for KMS atomic modesetting on overlay plane and ensure coherency between " > "the legacy and atomic interfaces."); > - igt_subtest("plane-overlay-legacy") { > - igt_plane_t *overlay = > - igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); > - igt_require(overlay); > - > - atomic_setup(&display, pipe, output, primary, &fb); > - plane_overlay(pipe_obj, output, overlay); > - atomic_clear(&display, pipe, primary, output, &fb); > + igt_subtest_with_dynamic("plane-overlay-legacy") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + igt_plane_t *overlay = > + igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY); > + uint32_t format = plane_get_igt_format(overlay); > + > + if (!overlay || !format) > + continue; > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_setup(&data, pipe, output); > + plane_overlay(&data, output, overlay, format); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Test for KMS atomic modesetting on primary plane and ensure coherency between " > "the legacy and atomic interfaces."); > - igt_subtest("plane-primary-legacy") { > - atomic_setup(&display, pipe, output, primary, &fb); > - plane_primary(pipe_obj, primary, &fb); > - atomic_clear(&display, pipe, primary, output, &fb); > + igt_subtest_with_dynamic("plane-primary-legacy") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_setup(&data, pipe, output); > + plane_primary(&data); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Verify that the overlay plane can cover the primary one (and "\ > "vice versa) by changing their zpos property."); > - igt_subtest("plane-primary-overlay-mutable-zpos") { > - uint32_t format_primary = DRM_FORMAT_ARGB8888; > - uint32_t format_overlay = DRM_FORMAT_ARGB1555; > - igt_plane_t *overlay = > - igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); > - igt_require(overlay); > - > - igt_info("Using (pipe %s + %s) to run the subtest.\n", > - kmstest_pipe_name(pipe), igt_output_name(output)); > + igt_subtest_with_dynamic("plane-primary-overlay-mutable-zpos") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + igt_plane_t *overlay = > + igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY); > > - igt_display_reset(&display); > - > - igt_require(igt_plane_has_prop(primary, IGT_PLANE_ZPOS)); > - igt_require(igt_plane_has_prop(overlay, IGT_PLANE_ZPOS)); > - > - igt_require(igt_plane_has_format_mod(primary, format_primary, 0x0)); > - igt_require(igt_plane_has_format_mod(overlay, format_overlay, 0x0)); > - > - igt_output_set_pipe(output, pipe); > - plane_primary_overlay_mutable_zpos(pipe_obj, output, primary, overlay, > - format_primary, format_overlay); > - atomic_clear(&display, pipe, primary, output, &fb); > + atomic_setup(&data, pipe, output); > + if (!overlay) > + continue; > + if (!has_zpos(data.primary) || !has_zpos(overlay)) > + continue; > + if (!igt_plane_has_format_mod(data.primary, DRM_FORMAT_ARGB8888, 0x0) || > + !igt_plane_has_format_mod(overlay, DRM_FORMAT_ARGB1555, 0x0)) > + continue; > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + plane_primary_overlay_mutable_zpos(&data, output, overlay, > + DRM_FORMAT_ARGB8888, DRM_FORMAT_ARGB1555); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Verify the reported zpos property of planes by making sure "\ > "only higher zpos planes cover the lower zpos ones."); > - igt_subtest("plane-immutable-zpos") { > - int n_planes = pipe_obj->n_planes; > - igt_require(n_planes >= 2); > + igt_subtest_with_dynamic("plane-immutable-zpos") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + int n_planes = data.display.pipes[pipe].n_planes; > > - igt_info("Using (pipe %s + %s) to run the subtest.\n", > - kmstest_pipe_name(pipe), igt_output_name(output)); > - > - igt_display_reset(&display); > - igt_output_set_pipe(output, pipe); > - plane_immutable_zpos(&display, pipe_obj, output, primary, n_planes); > - atomic_clear(&display, pipe, primary, output, &fb); > + if (n_planes < 2) > + continue; > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_setup(&data, pipe, output); > + plane_immutable_zpos(&data, output, pipe, n_planes); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches " > "the free-standing state objects and nothing else."); > - igt_subtest("test-only") { > - uint32_t format = plane_get_igt_format(primary); > - igt_require(format != 0); > + igt_subtest_with_dynamic("test-only") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + uint32_t format; > > - igt_info("Using (pipe %s + %s) to run the subtest.\n", > - kmstest_pipe_name(pipe), igt_output_name(output)); > + atomic_setup(&data, pipe, output); > + format = plane_get_igt_format(data.primary); > > - atomic_clear(&display, pipe, primary, output, &fb); > - test_only(pipe_obj, primary, output, format); > + if (!format) > + continue; > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_clear(&data, pipe, output); > + test_only(&data, output, pipe, format); > + } > + break; > + } > } > > igt_describe("Test for KMS atomic modesetting on cursor plane and ensure coherency between " > "legacy and atomic interfaces."); > - igt_subtest("plane-cursor-legacy") { > - igt_plane_t *cursor = > - igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_CURSOR); > - igt_require(cursor); > - > - atomic_setup(&display, pipe, output, primary, &fb); > - plane_cursor(pipe_obj, output, cursor); > - atomic_clear(&display, pipe, primary, output, &fb); > + igt_subtest_with_dynamic("plane-cursor-legacy") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + igt_plane_t *cursor = > + igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR); > + > + if (!cursor) > + continue; > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_setup(&data, pipe, output); > + plane_cursor(&data, output, cursor); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Test error handling when invalid plane parameters are passed"); > - igt_subtest("plane-invalid-params") { > - atomic_setup(&display, pipe, output, primary, &fb); > - plane_invalid_params(pipe_obj, output, primary, &fb); > - atomic_clear(&display, pipe, primary, output, &fb); > + igt_subtest_with_dynamic("plane-invalid-params") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_setup(&data, pipe, output); > + plane_invalid_params(&data, output); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Test error handling when invalid plane fence parameters are passed"); > - igt_subtest("plane-invalid-params-fence") { > - atomic_setup(&display, pipe, output, primary, &fb); > - plane_invalid_params_fence(pipe_obj, output, primary); > - atomic_clear(&display, pipe, primary, output, &fb); > + igt_subtest_with_dynamic("plane-invalid-params-fence") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_setup(&data, pipe, output); > + plane_invalid_params_fence(&data, output); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Test error handling when invalid crtc parameters are passed"); > - igt_subtest("crtc-invalid-params") { > - atomic_setup(&display, pipe, output, primary, &fb); > - crtc_invalid_params(pipe_obj, output, primary, &fb); > - atomic_clear(&display, pipe, primary, output, &fb); > + igt_subtest_with_dynamic("crtc-invalid-params") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_setup(&data, pipe, output); > + crtc_invalid_params(&data, output); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Test error handling when invalid crtc fence parameters are passed"); > - igt_subtest("crtc-invalid-params-fence") { > - atomic_setup(&display, pipe, output, primary, &fb); > - crtc_invalid_params_fence(pipe_obj, output, primary, &fb); > - atomic_clear(&display, pipe, primary, output, &fb); > + igt_subtest_with_dynamic("crtc-invalid-params-fence") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_setup(&data, pipe, output); > + crtc_invalid_params_fence(&data, output); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Test abuse the atomic ioctl directly in order to test " > "various invalid conditions which the libdrm wrapper won't " > "allow us to create."); > - igt_subtest("atomic-invalid-params") { > - atomic_setup(&display, pipe, output, primary, &fb); > - atomic_invalid_params(pipe_obj, primary, output, &fb); > - atomic_clear(&display, pipe, primary, output, &fb); > + igt_subtest_with_dynamic("atomic-invalid-params") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_setup(&data, pipe, output); > + atomic_invalid_params(&data, output); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane property"); > - igt_subtest("atomic-plane-damage") { > - igt_require(igt_plane_has_prop(primary, IGT_PLANE_FB_DAMAGE_CLIPS)); > + igt_subtest_with_dynamic("atomic-plane-damage") { > + for_each_pipe_with_single_output(&data.display, pipe, output) { > + atomic_setup(&data, pipe, output); > > - atomic_setup(&display, pipe, output, primary, &fb); > - atomic_plane_damage(pipe_obj, primary, &fb); > - atomic_clear(&display, pipe, primary, output, &fb); > + if (!igt_plane_has_prop(data.primary, IGT_PLANE_FB_DAMAGE_CLIPS)) > + continue; > + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { > + atomic_plane_damage(&data); > + atomic_clear(&data, pipe, output); > + } > + break; > + } > } > > igt_fixture { > - igt_display_fini(&display); > - drm_close_driver(display.drm_fd); > + igt_display_fini(&data.display); > + drm_close_driver(data.drm_fd); > } > } ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 4/6] tests/kms_atomic: convert subtests to dynamic subtests 2023-09-27 3:39 ` Karthik B S @ 2023-10-10 5:54 ` Sharma, Swati2 0 siblings, 0 replies; 18+ messages in thread From: Sharma, Swati2 @ 2023-10-10 5:54 UTC (permalink / raw) To: Karthik B S, igt-dev Hi Karthik, On 27-Sep-23 9:09 AM, Karthik B S wrote: > > On 9/18/2023 1:24 PM, Swati Sharma wrote: >> Subtests are converted to dynamic subtests. From the fixture >> for_each_pipe_with_valid_output() is removed and put at >> subtest level to give flexibility to user to test all pipes/output >> combinations. However, restricted to 1pipe/1output combination >> as originally written in the test. Code rework is done to >> accommodate above changes. >> >> Signed-off-by: Swati Sharma <swati2.sharma@intel.com> >> --- >> tests/kms_atomic.c | 907 +++++++++++++++++++++++---------------------- >> 1 file changed, 467 insertions(+), 440 deletions(-) >> >> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c >> index c55cb5b2f..e9159ded2 100644 >> --- a/tests/kms_atomic.c >> +++ b/tests/kms_atomic.c >> @@ -58,6 +58,15 @@ >> IGT_TEST_DESCRIPTION("Test atomic modesetting API"); >> +/* Common test data. */ >> +typedef struct { >> + igt_display_t display; >> + igt_plane_t *primary; >> + igt_pipe_t *pipe; >> + int drm_fd; >> + igt_fb_t fb; >> +} data_t; >> + > > Hi, > > Could you please split the patch into two. One just having the addition > of data_t structure and its usage, and the second one having the changes > for converting the subtests into dynamic subtests. > > Thanks, > Karthik.B.S This patch is difficult to split. I need to update callers and then in next patch remove those and update again. If its okay, can we have one patch only? >> enum kms_atomic_check_relax { >> ATOMIC_RELAX_NONE = 0, >> CRTC_RELAX_MODE = (1 << 0), >> @@ -301,8 +310,7 @@ static uint32_t plane_get_igt_format(igt_plane_t >> *plane) >> * Test category: functionality test >> */ >> static void >> -plane_primary_overlay_mutable_zpos(igt_pipe_t *pipe, igt_output_t >> *output, >> - igt_plane_t *primary, igt_plane_t *overlay, >> +plane_primary_overlay_mutable_zpos(data_t *data, igt_output_t >> *output, igt_plane_t *overlay, >> uint32_t format_primary, uint32_t format_overlay) >> { >> struct igt_fb fb_primary, fb_overlay; >> @@ -317,17 +325,17 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t >> *pipe, igt_output_t *output, >> uint32_t w_overlay = mode->hdisplay / 2; >> uint32_t h_overlay = mode->vdisplay / 2; >> - igt_create_color_pattern_fb(pipe->display->drm_fd, >> + igt_create_color_pattern_fb(data->drm_fd, >> w, h, format_primary, DRM_FORMAT_MOD_LINEAR, >> 0.2, 0.2, 0.2, &fb_primary); >> - igt_create_color_pattern_fb(pipe->display->drm_fd, >> + igt_create_color_pattern_fb(data->drm_fd, >> w_overlay, h_overlay, >> format_overlay, DRM_FORMAT_MOD_LINEAR, >> 0.2, 0.2, 0.2, &fb_overlay); >> /* Draw a hole in the overlay */ >> - cr = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_overlay); >> + cr = igt_get_cairo_ctx(data->drm_fd, &fb_overlay); >> cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); >> igt_paint_color_alpha(cr, w_overlay / 4, h_overlay / 4, >> w_overlay / 2, h_overlay / 2, >> @@ -335,33 +343,33 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t >> *pipe, igt_output_t *output, >> cairo_set_operator(cr, CAIRO_OPERATOR_OVER); >> igt_put_cairo_ctx(cr); >> - igt_plane_set_fb(primary, &fb_primary); >> + igt_plane_set_fb(data->primary, &fb_primary); >> igt_plane_set_fb(overlay, &fb_overlay); >> igt_plane_set_position(overlay, w_overlay / 2, h_overlay / 2); >> - igt_plane_set_prop_value(primary, IGT_PLANE_ZPOS, 0); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_ZPOS, 0); >> igt_plane_set_prop_value(overlay, IGT_PLANE_ZPOS, 1); >> igt_info("Committing with overlay on top, it has a hole "\ >> "through which the primary should be seen\n"); >> - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> - igt_assert_eq_u64(igt_plane_get_prop(primary, IGT_PLANE_ZPOS), 0); >> + igt_assert_eq_u64(igt_plane_get_prop(data->primary, >> IGT_PLANE_ZPOS), 0); >> igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 1); >> - igt_plane_set_prop_value(primary, IGT_PLANE_ZPOS, 1); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_ZPOS, 1); >> igt_plane_set_prop_value(overlay, IGT_PLANE_ZPOS, 0); >> igt_info("Committing with primary on top, only the primary "\ >> "should be visible\n"); >> - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> - igt_assert_eq_u64(igt_plane_get_prop(primary, IGT_PLANE_ZPOS), 1); >> + igt_assert_eq_u64(igt_plane_get_prop(data->primary, >> IGT_PLANE_ZPOS), 1); >> igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 0); >> /* Draw a hole in the primary exactly on top of the overlay >> plane */ >> - cr = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_primary); >> + cr = igt_get_cairo_ctx(data->drm_fd, &fb_primary); >> cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); >> igt_paint_color_alpha(cr, w_overlay / 2, h_overlay / 2, >> w_overlay, h_overlay, >> @@ -371,14 +379,14 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t >> *pipe, igt_output_t *output, >> igt_info("Committing with a hole in the primary through "\ >> "which the underlay should be seen\n"); >> - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> /* reset it back to initial state */ >> - igt_plane_set_prop_value(primary, IGT_PLANE_ZPOS, 0); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_ZPOS, 0); >> igt_plane_set_prop_value(overlay, IGT_PLANE_ZPOS, 1); >> - plane_commit(primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> - igt_assert_eq_u64(igt_plane_get_prop(primary, IGT_PLANE_ZPOS), 0); >> + igt_assert_eq_u64(igt_plane_get_prop(data->primary, >> IGT_PLANE_ZPOS), 0); >> igt_assert_eq_u64(igt_plane_get_prop(overlay, IGT_PLANE_ZPOS), 1); >> } >> @@ -392,8 +400,7 @@ plane_primary_overlay_mutable_zpos(igt_pipe_t >> *pipe, igt_output_t *output, >> * Test category: functionality test >> */ >> static void >> -plane_immutable_zpos(igt_display_t *display, igt_pipe_t *pipe, >> - igt_output_t *output, igt_plane_t *primary, int n_planes) >> +plane_immutable_zpos(data_t *data, igt_output_t *output, enum pipe >> pipe, int n_planes) >> { >> cairo_t *cr; >> struct igt_fb fb_ref; >> @@ -406,8 +413,7 @@ plane_immutable_zpos(igt_display_t *display, >> igt_pipe_t *pipe, >> uint32_t w_lower, h_lower, w_upper, h_upper; >> memset(plane_ptr, 0, n_planes * sizeof(igt_plane_t *)); >> - >> - igt_require_pipe_crc(display->drm_fd); >> + igt_require_pipe_crc(data->drm_fd); >> mode = igt_output_get_mode(output); >> @@ -419,36 +425,36 @@ plane_immutable_zpos(igt_display_t *display, >> igt_pipe_t *pipe, >> w_upper = 64; >> h_upper = 64; >> - igt_create_color_fb(display->drm_fd, >> + igt_create_color_fb(data->drm_fd, >> w_lower, h_lower, >> DRM_FORMAT_XRGB8888, >> DRM_FORMAT_MOD_LINEAR, >> 0.0, 0.0, 0.0, &fb_ref); >> /* create reference image */ >> - cr = igt_get_cairo_ctx(display->drm_fd, &fb_ref); >> + cr = igt_get_cairo_ctx(data->drm_fd, &fb_ref); >> igt_assert(cairo_status(cr) == 0); >> igt_paint_color(cr, 0, 0, w_lower, h_lower, 0.0, 0.0, 1.0); >> igt_paint_color(cr, w_upper / 2, h_upper / 2, w_upper, h_upper, >> 1.0, 1.0, 0.0); >> igt_put_cairo_ctx(cr); >> - igt_plane_set_fb(primary, &fb_ref); >> - igt_display_commit2(display, COMMIT_ATOMIC); >> + igt_plane_set_fb(data->primary, &fb_ref); >> + igt_display_commit2(&data->display, COMMIT_ATOMIC); >> /* create the pipe_crc object for this pipe */ >> - pipe_crc = igt_pipe_crc_new(pipe->display->drm_fd, pipe->pipe, >> + pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, >> IGT_PIPE_CRC_SOURCE_AUTO); >> /* get reference crc */ >> igt_pipe_crc_start(pipe_crc); >> - igt_pipe_crc_get_current(display->drm_fd, pipe_crc, &ref_crc); >> + igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &ref_crc); >> - igt_plane_set_fb(primary, NULL); >> + igt_plane_set_fb(data->primary, NULL); >> for (int k = 0; k < n_planes; k++) { >> int zpos; >> igt_plane_t *temp; >> - temp = &display->pipes[pipe->pipe].planes[k]; >> + temp = &data->display.pipes[pipe].planes[k]; >> if (!igt_plane_has_prop(temp, IGT_PLANE_ZPOS)) >> continue; >> @@ -458,14 +464,14 @@ plane_immutable_zpos(igt_display_t *display, >> igt_pipe_t *pipe, >> plane_ptr[zpos] = temp; >> } >> - fb_id_lower = igt_create_color_fb(display->drm_fd, >> + fb_id_lower = igt_create_color_fb(data->drm_fd, >> w_lower, h_lower, >> DRM_FORMAT_XRGB8888, >> DRM_FORMAT_MOD_LINEAR, >> 0.0, 0.0, 1.0, &fb_lower); >> igt_assert(fb_id_lower); >> - fb_id_upper = igt_create_color_fb(display->drm_fd, >> + fb_id_upper = igt_create_color_fb(data->drm_fd, >> w_upper, h_upper, >> DRM_FORMAT_XRGB8888, >> DRM_FORMAT_MOD_LINEAR, >> @@ -508,8 +514,8 @@ plane_immutable_zpos(igt_display_t *display, >> igt_pipe_t *pipe, >> igt_info("Committing with the plane[%d] underneath "\ >> "plane[%d]\n", i, (i + 1)); >> - igt_display_commit2(display, COMMIT_ATOMIC); >> - igt_pipe_crc_get_current(pipe->display->drm_fd, pipe_crc, >> &new_crc); >> + igt_display_commit2(&data->display, COMMIT_ATOMIC); >> + igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &new_crc); >> igt_assert_crc_equal(&ref_crc, &new_crc); >> @@ -517,9 +523,9 @@ plane_immutable_zpos(igt_display_t *display, >> igt_pipe_t *pipe, >> igt_plane_set_fb(plane_upper, NULL); >> } >> - igt_remove_fb(display->drm_fd, &fb_ref); >> - igt_remove_fb(display->drm_fd, &fb_lower); >> - igt_remove_fb(display->drm_fd, &fb_upper); >> + igt_remove_fb(data->drm_fd, &fb_ref); >> + igt_remove_fb(data->drm_fd, &fb_lower); >> + igt_remove_fb(data->drm_fd, &fb_upper); >> } >> /** >> @@ -537,17 +543,15 @@ plane_immutable_zpos(igt_display_t *display, >> igt_pipe_t *pipe, >> * @overlay: Overlay plane >> * @primary: Primary plane >> */ >> -static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, >> igt_plane_t *plane) >> +static void plane_overlay(data_t *data, igt_output_t *output, >> igt_plane_t *plane, >> + uint32_t format) >> { >> - drmModeModeInfo *mode = igt_output_get_mode(output); >> - uint32_t format = plane_get_igt_format(plane); >> struct igt_fb fb; >> + drmModeModeInfo *mode = igt_output_get_mode(output); >> uint32_t w = mode->hdisplay / 2; >> uint32_t h = mode->vdisplay / 2; >> - igt_require(format != 0); >> - >> - igt_create_pattern_fb(pipe->display->drm_fd, w, h, >> + igt_create_pattern_fb(data->drm_fd, w, h, >> format, DRM_FORMAT_MOD_LINEAR, &fb); >> igt_plane_set_fb(plane, &fb); >> @@ -580,49 +584,49 @@ static void plane_overlay(igt_pipe_t *pipe, >> igt_output_t *output, igt_plane_t *p >> igt_plane_set_position(plane, 0, 0); >> plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE); >> - igt_remove_fb(pipe->display->drm_fd, &fb); >> + igt_remove_fb(data->drm_fd, &fb); >> } >> -static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, >> struct igt_fb *fb) >> +static void plane_primary(data_t *data) >> { >> struct igt_fb fb2; >> - igt_create_color_pattern_fb(pipe->display->drm_fd, >> - fb->width, fb->height, >> - fb->drm_format, DRM_FORMAT_MOD_LINEAR, >> + igt_create_color_pattern_fb(data->drm_fd, >> + data->fb.width, data->fb.height, >> + data->fb.drm_format, I915_TILING_NONE, >> 0.2, 0.2, 0.2, &fb2); >> /* >> * Flip the primary plane using the atomic API, and double-check >> * state is what we think it should be. >> */ >> - igt_plane_set_fb(plane, &fb2); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_plane_set_fb(data->primary, &fb2); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* Restore the primary plane and check the state matches the >> old. */ >> - igt_plane_set_fb(plane, fb); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_plane_set_fb(data->primary, &data->fb); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* >> * Set the plane through the legacy CRTC/primary-plane API, and >> * verify through atomic. >> */ >> - igt_plane_set_fb(plane, &fb2); >> - crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); >> + igt_plane_set_fb(data->primary, &data->fb); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* >> * Restore the plane to its original settings through the legacy >> CRTC >> * API, and verify through atomic. >> */ >> - igt_plane_set_fb(plane, fb); >> - crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); >> + igt_plane_set_fb(data->primary, &data->fb); >> + crtc_commit(data->pipe, data->primary, COMMIT_LEGACY, >> CRTC_RELAX_MODE); >> /* >> * Set the plane through the universal setplane API, and >> * verify through atomic. >> */ >> - igt_plane_set_fb(plane, &fb2); >> - plane_commit(plane, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE); >> + igt_plane_set_fb(data->primary, &fb2); >> + plane_commit(data->primary, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE); >> } >> /** >> @@ -639,61 +643,58 @@ static void plane_primary(igt_pipe_t *pipe, >> igt_plane_t *plane, struct igt_fb *f >> * Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY really only touches >> the >> * free-standing state objects and nothing else. >> */ >> -static void test_only(igt_pipe_t *pipe_obj, igt_plane_t *primary, >> - igt_output_t *output, uint32_t format) >> +static void test_only(data_t *data, igt_output_t *output, enum pipe >> pipe, uint32_t format) >> { >> - drmModeModeInfo *mode = igt_output_get_mode(output); >> struct igt_fb fb; >> uint64_t old_plane_values[IGT_NUM_PLANE_PROPS], >> old_crtc_values[IGT_NUM_CRTC_PROPS]; >> + drmModeModeInfo *mode = igt_output_get_mode(output); >> - plane_get_current_state(primary, old_plane_values); >> - crtc_get_current_state(pipe_obj, old_crtc_values); >> + plane_get_current_state(data->primary, old_plane_values); >> + crtc_get_current_state(data->pipe, old_crtc_values); >> igt_assert(!old_crtc_values[IGT_CRTC_MODE_ID]); >> - igt_create_pattern_fb(pipe_obj->display->drm_fd, >> - mode->hdisplay, mode->vdisplay, >> - format, DRM_FORMAT_MOD_LINEAR, &fb); >> - igt_plane_set_fb(primary, &fb); >> - igt_output_set_pipe(output, pipe_obj->pipe); >> + igt_create_pattern_fb(data->drm_fd, >> + mode->hdisplay, mode->vdisplay, >> + format, I915_TILING_NONE, &fb); >> + igt_plane_set_fb(data->primary, &fb); >> + igt_output_set_pipe(output, pipe); >> - igt_display_commit_atomic(pipe_obj->display, >> DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); >> + igt_display_commit_atomic(&data->display, >> DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); >> /* check the state, should still be old state */ >> - crtc_check_current_state(pipe_obj, old_crtc_values, >> old_plane_values, ATOMIC_RELAX_NONE); >> - plane_check_current_state(primary, old_plane_values, >> ATOMIC_RELAX_NONE); >> + crtc_check_current_state(data->pipe, old_crtc_values, >> old_plane_values, ATOMIC_RELAX_NONE); >> + plane_check_current_state(data->primary, old_plane_values, >> ATOMIC_RELAX_NONE); >> /* >> * Enable the plane through the legacy CRTC/primary-plane API, and >> * verify through atomic. >> */ >> - crtc_commit(pipe_obj, primary, COMMIT_LEGACY, CRTC_RELAX_MODE); >> + crtc_commit(data->pipe, data->primary, COMMIT_LEGACY, >> CRTC_RELAX_MODE); >> /* Same for disable.. */ >> - plane_get_current_state(primary, old_plane_values); >> - crtc_get_current_state(pipe_obj, old_crtc_values); >> + plane_get_current_state(data->primary, old_plane_values); >> + crtc_get_current_state(data->pipe, old_crtc_values); >> - igt_plane_set_fb(primary, NULL); >> + igt_plane_set_fb(data->primary, NULL); >> igt_output_set_pipe(output, PIPE_NONE); >> - igt_display_commit_atomic(pipe_obj->display, >> DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); >> + igt_display_commit_atomic(&data->display, >> DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); >> /* for extra stress, go through dpms off/on cycle */ >> kmstest_set_connector_dpms(output->display->drm_fd, >> output->config.connector, DRM_MODE_DPMS_OFF); >> kmstest_set_connector_dpms(output->display->drm_fd, >> output->config.connector, DRM_MODE_DPMS_ON); >> /* check the state, should still be old state */ >> - crtc_check_current_state(pipe_obj, old_crtc_values, >> old_plane_values, ATOMIC_RELAX_NONE); >> - plane_check_current_state(primary, old_plane_values, >> ATOMIC_RELAX_NONE); >> + crtc_check_current_state(data->pipe, old_crtc_values, >> old_plane_values, ATOMIC_RELAX_NONE); >> + plane_check_current_state(data->primary, old_plane_values, >> ATOMIC_RELAX_NONE); >> /* And disable the pipe and remove fb, test complete */ >> - crtc_commit(pipe_obj, primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> - igt_remove_fb(pipe_obj->display->drm_fd, &fb); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> + igt_remove_fb(data->drm_fd, &fb); >> } >> -static void plane_cursor(igt_pipe_t *pipe_obj, >> - igt_output_t *output, >> - igt_plane_t *cursor) >> +static void plane_cursor(data_t *data, igt_output_t *output, >> igt_plane_t *cursor) >> { >> drmModeModeInfo *mode = igt_output_get_mode(output); >> struct igt_fb fb; >> @@ -702,12 +703,12 @@ static void plane_cursor(igt_pipe_t *pipe_obj, >> int y = mode->vdisplay / 2; >> /* Any kernel new enough for atomic, also has the cursor size >> caps. */ >> - do_or_die(drmGetCap(pipe_obj->display->drm_fd, >> + do_or_die(drmGetCap(data->drm_fd, >> DRM_CAP_CURSOR_WIDTH, &width)); >> - do_or_die(drmGetCap(pipe_obj->display->drm_fd, >> + do_or_die(drmGetCap(data->drm_fd, >> DRM_CAP_CURSOR_HEIGHT, &height)); >> - igt_create_color_fb(pipe_obj->display->drm_fd, >> + igt_create_color_fb(data->drm_fd, >> width, height, DRM_FORMAT_ARGB8888, >> DRM_FORMAT_MOD_LINEAR, >> 0.0, 0.0, 0.0, &fb); >> @@ -759,69 +760,64 @@ static void plane_cursor(igt_pipe_t *pipe_obj, >> * @params: plane parameters >> * @params-fence: plane fence parameters >> */ >> -static void plane_invalid_params(igt_pipe_t *pipe, >> - igt_output_t *output, >> - igt_plane_t *plane, >> - struct igt_fb *fb) >> +static void plane_invalid_params(data_t *data, igt_output_t *output) >> { >> struct igt_fb fb2; >> /* Pass a series of invalid object IDs for the FB ID. */ >> - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, >> plane->drm_plane->plane_id); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, >> data->primary->drm_plane->plane_id); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, pipe->crtc_id); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, >> data->pipe->crtc_id); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, output->id); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, >> output->id); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, >> pipe->values[IGT_CRTC_MODE_ID]); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, >> data->pipe->values[IGT_CRTC_MODE_ID]); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> /* Valid, but invalid because CRTC_ID is set. */ >> - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, 0); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, 0); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> - igt_plane_set_fb(plane, fb); >> - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_plane_set_fb(data->primary, &data->fb); >> + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> /* Pass a series of invalid object IDs for the CRTC ID. */ >> - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, >> plane->drm_plane->plane_id); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, >> data->primary->drm_plane->plane_id); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, fb->fb_id); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, >> data->fb.fb_id); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, output->id); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, >> output->id); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, >> pipe->values[IGT_CRTC_MODE_ID]); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, >> data->pipe->values[IGT_CRTC_MODE_ID]); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> /* Valid, but invalid because FB_ID is set. */ >> - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, 0); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, 0); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> - igt_plane_set_fb(plane, fb); >> - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_plane_set_fb(data->primary, &data->fb); >> + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> /* Create a framebuffer too small for the plane configuration. */ >> - igt_create_pattern_fb(pipe->display->drm_fd, >> - fb->width - 1, fb->height - 1, >> - fb->drm_format, DRM_FORMAT_MOD_LINEAR, &fb2); >> + igt_create_pattern_fb(data->drm_fd, >> + data->fb.width - 1, data->fb.height - 1, >> + data->fb.drm_format, I915_TILING_NONE, &fb2); >> - igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, fb2.fb_id); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, ENOSPC); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_FB_ID, fb2.fb_id); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, ENOSPC); >> /* Restore the primary plane and check the state matches the >> old. */ >> - igt_plane_set_fb(plane, fb); >> - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_plane_set_fb(data->primary, &data->fb); >> + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> } >> -static void plane_invalid_params_fence(igt_pipe_t *pipe, >> - igt_output_t *output, >> - igt_plane_t *plane) >> +static void plane_invalid_params_fence(data_t *data, igt_output_t >> *output) >> { >> int timeline, fence_fd; >> @@ -830,19 +826,19 @@ static void >> plane_invalid_params_fence(igt_pipe_t *pipe, >> timeline = sw_sync_timeline_create(); >> /* invalid fence fd */ >> - igt_plane_set_fence_fd(plane, pipe->display->drm_fd); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_fence_fd(data->primary, data->drm_fd); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> /* Valid fence_fd but invalid CRTC */ >> fence_fd = sw_sync_timeline_create_fence(timeline, 1); >> - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, ~0); >> - igt_plane_set_fence_fd(plane, fence_fd); >> - plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, ~0); >> + igt_plane_set_fence_fd(data->primary, fence_fd); >> + plane_commit_atomic_err(data->primary, ATOMIC_RELAX_NONE, EINVAL); >> sw_sync_timeline_inc(timeline, 1); >> - igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, pipe->crtc_id); >> - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_plane_set_prop_value(data->primary, IGT_PLANE_CRTC_ID, >> data->pipe->crtc_id); >> + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> close(fence_fd); >> close(timeline); >> @@ -861,62 +857,55 @@ static void >> plane_invalid_params_fence(igt_pipe_t *pipe, >> * @params: crtc parameters >> * @params-fence: crtc fence parameters >> */ >> -static void crtc_invalid_params(igt_pipe_t *pipe, >> - igt_output_t *output, >> - igt_plane_t *plane, >> - struct igt_fb *fb) >> +static void crtc_invalid_params(data_t *data, igt_output_t *output) >> { >> - uint64_t old_mode_id = pipe->values[IGT_CRTC_MODE_ID]; >> + uint64_t old_mode_id = data->pipe->values[IGT_CRTC_MODE_ID]; >> drmModeModeInfo *mode = igt_output_get_mode(output); >> /* Pass a series of invalid object IDs for the mode ID. */ >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, >> plane->drm_plane->plane_id); >> - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, >> data->primary->drm_plane->plane_id); >> + crtc_commit_atomic_err(data->pipe, data->primary, >> ATOMIC_RELAX_NONE, EINVAL); >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, pipe->crtc_id); >> - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, >> data->pipe->crtc_id); >> + crtc_commit_atomic_err(data->pipe, data->primary, >> ATOMIC_RELAX_NONE, EINVAL); >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, output->id); >> - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, >> data->fb.fb_id); >> + crtc_commit_atomic_err(data->pipe, data->primary, >> ATOMIC_RELAX_NONE, EINVAL); >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, fb->fb_id); >> - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, >> old_mode_id); >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, >> DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); >> /* Can we restore mode? */ >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, old_mode_id); >> - crtc_commit_atomic_flags_err(pipe, plane, >> DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, >> old_mode_id); >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, >> DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); >> /* >> * TEST_ONLY cannot be combined with DRM_MODE_PAGE_FLIP_EVENT, >> * but DRM_MODE_PAGE_FLIP_EVENT will always generate EINVAL >> * without valid crtc, so test it here. >> */ >> - crtc_commit_atomic_flags_err(pipe, plane, >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, >> DRM_MODE_ATOMIC_TEST_ONLY | >> DRM_MODE_PAGE_FLIP_EVENT, >> ATOMIC_RELAX_NONE, EINVAL); >> /* Create a blob which is the wrong size to be a valid mode. */ >> - igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_MODE_ID, mode, >> sizeof(*mode) - 1); >> - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); >> - >> - igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_MODE_ID, mode, >> sizeof(*mode) + 1); >> - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); >> + igt_pipe_obj_replace_prop_blob(data->pipe, IGT_CRTC_MODE_ID, >> mode, sizeof(*mode) - 1); >> + crtc_commit_atomic_err(data->pipe, data->primary, >> ATOMIC_RELAX_NONE, EINVAL); >> + igt_pipe_obj_replace_prop_blob(data->pipe, IGT_CRTC_MODE_ID, >> mode, sizeof(*mode) + 1); >> + crtc_commit_atomic_err(data->pipe, data->primary, >> ATOMIC_RELAX_NONE, EINVAL); >> /* Restore the CRTC and check the state matches the old. */ >> - igt_pipe_obj_replace_prop_blob(pipe, IGT_CRTC_MODE_ID, mode, >> sizeof(*mode)); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_pipe_obj_replace_prop_blob(data->pipe, IGT_CRTC_MODE_ID, >> mode, sizeof(*mode)); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> } >> -static void crtc_invalid_params_fence(igt_pipe_t *pipe, >> - igt_output_t *output, >> - igt_plane_t *plane, >> - struct igt_fb *fb) >> +static void crtc_invalid_params_fence(data_t *data, igt_output_t >> *output) >> { >> int timeline, fence_fd; >> void *map; >> const ptrdiff_t PAGE_SIZE = sysconf(_SC_PAGE_SIZE); >> - uint64_t old_mode_id = pipe->values[IGT_CRTC_MODE_ID]; >> + uint64_t old_mode_id = data->pipe->values[IGT_CRTC_MODE_ID]; >> igt_require_sw_sync(); >> @@ -926,86 +915,86 @@ static void crtc_invalid_params_fence(igt_pipe_t >> *pipe, >> map = mmap(NULL, PAGE_SIZE, PROT_READ, MAP_ANONYMOUS | >> MAP_PRIVATE, -1, 0); >> igt_assert(map != MAP_FAILED); >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, >> (ptrdiff_t)map); >> - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, >> (ptrdiff_t)map); >> + crtc_commit_atomic_err(data->pipe, data->primary, >> ATOMIC_RELAX_NONE, EFAULT); >> munmap(map, PAGE_SIZE); >> /* invalid out_fence_ptr */ >> map = mmap(NULL, PAGE_SIZE, PROT_EXEC, MAP_ANONYMOUS | >> MAP_PRIVATE, -1, 0); >> igt_assert(map != MAP_FAILED); >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, >> (ptrdiff_t)map); >> - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, >> (ptrdiff_t)map); >> + crtc_commit_atomic_err(data->pipe, data->primary, >> ATOMIC_RELAX_NONE, EFAULT); >> munmap(map, PAGE_SIZE); >> /* invalid out_fence_ptr */ >> map = mmap(NULL, PAGE_SIZE, PROT_NONE, MAP_ANONYMOUS | >> MAP_PRIVATE, -1, 0); >> igt_assert(map != MAP_FAILED); >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, >> (ptrdiff_t)map); >> - crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, >> (ptrdiff_t)map); >> + crtc_commit_atomic_err(data->pipe, data->primary, >> ATOMIC_RELAX_NONE, EFAULT); >> munmap(map, PAGE_SIZE); >> /* valid in fence but not allowed prop on crtc */ >> fence_fd = sw_sync_timeline_create_fence(timeline, 1); >> - igt_plane_set_fence_fd(plane, fence_fd); >> + igt_plane_set_fence_fd(data->primary, fence_fd); >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_ACTIVE, 0); >> - igt_pipe_obj_clear_prop_changed(pipe, IGT_CRTC_OUT_FENCE_PTR); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_ACTIVE, 0); >> + igt_pipe_obj_clear_prop_changed(data->pipe, IGT_CRTC_OUT_FENCE_PTR); >> - crtc_commit_atomic_flags_err(pipe, plane, 0, ATOMIC_RELAX_NONE, >> EINVAL); >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, 0, >> ATOMIC_RELAX_NONE, EINVAL); >> /* valid out fence ptr and flip event but not allowed prop on >> crtc */ >> - igt_pipe_request_out_fence(pipe); >> - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, >> + igt_pipe_request_out_fence(data->pipe); >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, >> DRM_MODE_PAGE_FLIP_EVENT, >> ATOMIC_RELAX_NONE, EINVAL); >> /* valid flip event but not allowed prop on crtc */ >> - igt_pipe_obj_clear_prop_changed(pipe, IGT_CRTC_OUT_FENCE_PTR); >> - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, >> + igt_pipe_request_out_fence(data->pipe); >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, >> DRM_MODE_PAGE_FLIP_EVENT, >> ATOMIC_RELAX_NONE, EINVAL); >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_ACTIVE, 1); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_ACTIVE, 1); >> /* Configuration should be valid again */ >> - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, >> DRM_MODE_ATOMIC_TEST_ONLY, >> ATOMIC_RELAX_NONE, 0); >> /* Set invalid prop */ >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, fb->fb_id); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, >> data->fb.fb_id); >> /* valid out fence but invalid prop on crtc */ >> - igt_pipe_request_out_fence(pipe); >> - crtc_commit_atomic_flags_err(pipe, plane, 0, >> + igt_pipe_request_out_fence(data->pipe); >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, 0, >> ATOMIC_RELAX_NONE, EINVAL); >> /* valid out fence ptr and flip event but invalid prop on crtc */ >> - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, >> DRM_MODE_PAGE_FLIP_EVENT, >> ATOMIC_RELAX_NONE, EINVAL); >> /* valid page flip event but invalid prop on crtc */ >> - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, >> DRM_MODE_PAGE_FLIP_EVENT, >> ATOMIC_RELAX_NONE, EINVAL); >> /* successful TEST_ONLY with fences set */ >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, old_mode_id); >> - crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_MODE_ID, >> old_mode_id); >> + crtc_commit_atomic_flags_err(data->pipe, data->primary, >> DRM_MODE_ATOMIC_TEST_ONLY, >> ATOMIC_RELAX_NONE, 0); >> - igt_assert(pipe->out_fence_fd == -1); >> + igt_assert(data->pipe->out_fence_fd == -1); >> close(fence_fd); >> close(timeline); >> /* reset fences */ >> - igt_plane_set_fence_fd(plane, -1); >> - igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_OUT_FENCE_PTR, 0); >> - igt_pipe_obj_clear_prop_changed(pipe, IGT_CRTC_OUT_FENCE_PTR); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_plane_set_fence_fd(data->primary, -1); >> + igt_pipe_obj_set_prop_value(data->pipe, IGT_CRTC_OUT_FENCE_PTR, 0); >> + igt_pipe_obj_clear_prop_changed(data->pipe, IGT_CRTC_OUT_FENCE_PTR); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* out fence ptr but not page flip event */ >> - igt_pipe_request_out_fence(pipe); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_pipe_request_out_fence(data->pipe); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> - igt_assert(pipe->out_fence_fd != -1); >> + igt_assert(data->pipe->out_fence_fd != -1); >> } >> /** >> @@ -1023,12 +1012,8 @@ static void >> crtc_invalid_params_fence(igt_pipe_t *pipe, >> * Abuse the atomic ioctl directly in order to test various invalid >> conditions, >> * which the libdrm wrapper won't allow us to create. >> */ >> -static void atomic_invalid_params(igt_pipe_t *pipe, >> - igt_plane_t *plane, >> - igt_output_t *output, >> - struct igt_fb *fb) >> +static void atomic_invalid_params(data_t *data, igt_output_t *output) >> { >> - igt_display_t *display = pipe->display; >> struct drm_mode_atomic ioc; >> uint32_t obj_raw[16]; /* array of objects (sized by count_objs) */ >> uint32_t num_props_raw[16]; /* array of num props per obj >> (ditto) */ >> @@ -1039,7 +1024,7 @@ static void atomic_invalid_params(igt_pipe_t *pipe, >> memset(&ioc, 0, sizeof(ioc)); >> /* An empty request should do nothing. */ >> - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> for (i = 0; i < ARRAY_SIZE(obj_raw); i++) >> obj_raw[i] = 0; >> @@ -1056,109 +1041,109 @@ static void atomic_invalid_params(igt_pipe_t >> *pipe, >> ioc.prop_values_ptr = (uintptr_t) values_raw; >> /* Valid pointers, but still should copy nothing. */ >> - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> /* Valid noop, but with event set should fail. */ >> ioc.flags = DRM_MODE_PAGE_FLIP_EVENT; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); >> /* Nonsense flags. */ >> ioc.flags = 0xdeadbeef; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); >> ioc.flags = 0; >> /* Safety check that flags is reset properly. */ >> - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> /* Reserved/MBZ. */ >> ioc.reserved = 1; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EINVAL); >> ioc.reserved = 0; >> - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> /* Zero is not a valid object ID. */ >> ioc.count_objs = ARRAY_SIZE(obj_raw); >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> /* Invalid object type (not a thing we can set properties on). */ >> ioc.count_objs = 1; >> - obj_raw[0] = pipe->values[IGT_CRTC_MODE_ID]; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> - obj_raw[0] = fb->fb_id; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> + obj_raw[0] = data->pipe->values[IGT_CRTC_MODE_ID]; >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> + obj_raw[0] = data->fb.fb_id; >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> /* Filled object but with no properties; no-op. */ >> for (i = 0; i < ARRAY_SIZE(obj_raw); i++) >> - obj_raw[i] = pipe->crtc_id; >> - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> + obj_raw[i] = data->pipe->crtc_id; >> + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> /* Pass in all sorts of things other than the property ID. */ >> num_props_raw[0] = 1; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> - props_raw[0] = pipe->crtc_id; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> - props_raw[0] = plane->drm_plane->plane_id; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> + props_raw[0] = data->pipe->crtc_id; >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> + props_raw[0] = data->primary->drm_plane->plane_id; >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> props_raw[0] = output->id; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> - props_raw[0] = pipe->values[IGT_CRTC_MODE_ID]; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> + props_raw[0] = data->pipe->values[IGT_CRTC_MODE_ID]; >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> /* Valid property, valid value. */ >> for (i = 0; i < ARRAY_SIZE(props_raw); i++) { >> - props_raw[i] = pipe->props[IGT_CRTC_MODE_ID]; >> - values_raw[i] = pipe->values[IGT_CRTC_MODE_ID]; >> + props_raw[i] = data->pipe->props[IGT_CRTC_MODE_ID]; >> + values_raw[i] = data->pipe->values[IGT_CRTC_MODE_ID]; >> } >> - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> /* Setting the same thing multiple times is OK. */ >> for (i = 0; i < ARRAY_SIZE(obj_raw); i++) >> num_props_raw[i] = ARRAY_SIZE(props_raw) / ARRAY_SIZE(obj_raw); >> - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> ioc.count_objs = ARRAY_SIZE(obj_raw); >> - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> /* Pass a series of outlandish addresses. */ >> ioc.objs_ptr = 0; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> ioc.objs_ptr = (uintptr_t) obj_raw; >> ioc.count_props_ptr = 0; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> ioc.count_props_ptr = (uintptr_t) num_props_raw; >> ioc.props_ptr = 0; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> ioc.props_ptr = (uintptr_t) props_raw; >> ioc.prop_values_ptr = 0; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> ioc.prop_values_ptr = (uintptr_t) values_raw; >> - do_ioctl(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> + do_ioctl(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc); >> /* Attempt to overflow and/or trip various boundary conditions. */ >> ioc.count_objs = UINT32_MAX / sizeof(uint32_t); >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, ENOENT); >> ioc.count_objs = ARRAY_SIZE(obj_raw); >> ioc.objs_ptr = UINT64_MAX - sizeof(uint32_t); >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> ioc.count_objs = 1; >> ioc.objs_ptr = UINT64_MAX - sizeof(uint32_t); >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> num_props_raw[0] = UINT32_MAX / sizeof(uint32_t); >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> num_props_raw[0] = UINT32_MAX - 1; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> for (i = 0; i < ARRAY_SIZE(obj_raw); i++) >> num_props_raw[i] = (UINT32_MAX / ARRAY_SIZE(obj_raw)) + 1; >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> for (i = 0; i < ARRAY_SIZE(obj_raw); i++) >> num_props_raw[i] = ARRAY_SIZE(props_raw) / ARRAY_SIZE(obj_raw); >> - do_ioctl_err(display->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> + do_ioctl_err(data->drm_fd, DRM_IOCTL_MODE_ATOMIC, &ioc, EFAULT); >> } >> /** >> @@ -1169,27 +1154,27 @@ static void atomic_invalid_params(igt_pipe_t >> *pipe, >> * Mega feature: General Display Features >> * Test category: functionality test >> */ >> -static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, >> struct igt_fb *fb) >> +static void atomic_plane_damage(data_t *data) >> { >> struct drm_mode_rect damage[2]; >> struct igt_fb fb_1, fb_2; >> cairo_t *cr_1, *cr_2; >> /* Color fb with white rect at center */ >> - igt_create_color_fb(pipe->display->drm_fd, fb->width, fb->height, >> - fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, >> + igt_create_color_fb(data->drm_fd, data->fb.width, data->fb.height, >> + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, >> &fb_1); >> - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); >> - igt_paint_color(cr_1, fb->width/4, fb->height/4, fb->width/2, >> - fb->height/2, 1.0, 1.0, 1.0); >> + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); >> + igt_paint_color(cr_1, data->fb.width/4, data->fb.height/4, >> data->fb.width/2, >> + data->fb.height/2, 1.0, 1.0, 1.0); >> igt_put_cairo_ctx(cr_1); >> /* >> * Flip the primary plane to new color fb using atomic API and >> check the >> * state. >> */ >> - igt_plane_set_fb(plane, &fb_1); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_plane_set_fb(data->primary, &fb_1); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* >> * Change the color of top left clip from center and issue plane >> update >> @@ -1197,35 +1182,35 @@ static void atomic_plane_damage(igt_pipe_t >> *pipe, igt_plane_t *plane, struct igt >> */ >> damage[0].x1 = 0; >> damage[0].y1 = 0; >> - damage[0].x2 = fb->width/2; >> - damage[0].y2 = fb->height/2; >> + damage[0].x2 = data->fb.width/2; >> + damage[0].y2 = data->fb.height/2; >> - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); >> + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); >> igt_paint_color(cr_1, damage[0].x1, damage[0].y1, >> damage_rect_width(&damage[0]), >> damage_rect_height(&damage[0]), 1.0, 0, 0); >> igt_put_cairo_ctx(cr_1); >> - igt_plane_set_fb(plane, &fb_1); >> - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, >> damage, >> + igt_plane_set_fb(data->primary, &fb_1); >> + igt_plane_replace_prop_blob(data->primary, >> IGT_PLANE_FB_DAMAGE_CLIPS, damage, >> sizeof(*damage)); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* >> * Change the color of top left and bottom right clip from >> center and >> * issue plane update with damage and verify the state. >> */ >> - igt_create_color_fb(pipe->display->drm_fd, fb->width, fb->height, >> - fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, >> + igt_create_color_fb(data->drm_fd, data->fb.width, data->fb.height, >> + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, >> &fb_2); >> - damage[0].x1 = fb->width/2; >> + damage[0].x1 = data->fb.width/2; >> damage[0].y1 = 0; >> - damage[0].x2 = fb->width; >> - damage[0].y2 = fb->height/2; >> + damage[0].x2 = data->fb.width; >> + damage[0].y2 = data->fb.height/2; >> - cr_2 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_2); >> - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); >> + cr_2 = igt_get_cairo_ctx(data->drm_fd, &fb_2); >> + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); >> cairo_set_source_surface(cr_2, fb_1.cairo_surface, 0, 0); >> cairo_paint(cr_2); >> igt_paint_color(cr_2, damage[0].x1, damage[0].y1, >> @@ -1233,10 +1218,10 @@ static void atomic_plane_damage(igt_pipe_t >> *pipe, igt_plane_t *plane, struct igt >> damage_rect_height(&damage[0]), 0, 1.0, 0); >> igt_put_cairo_ctx(cr_1); >> igt_put_cairo_ctx(cr_2); >> - igt_plane_set_fb(plane, &fb_2); >> - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, >> damage, >> + igt_plane_set_fb(data->primary, &fb_2); >> + igt_plane_replace_prop_blob(data->primary, >> IGT_PLANE_FB_DAMAGE_CLIPS, damage, >> sizeof(*damage)); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* >> * Issue plane update with damage with a clip outside of plane src. >> @@ -1244,18 +1229,18 @@ static void atomic_plane_damage(igt_pipe_t >> *pipe, igt_plane_t *plane, struct igt >> * will see no change on the screen. >> */ >> /* Resize fb_1 to be bigger than plane */ >> - igt_remove_fb(pipe->display->drm_fd, &fb_1); >> - igt_create_color_fb(pipe->display->drm_fd, fb->width * 2, >> fb->height, >> - fb->drm_format, DRM_FORMAT_MOD_LINEAR, 0.2, 0.2, 0.2, >> + igt_remove_fb(data->drm_fd, &fb_1); >> + igt_create_color_fb(data->drm_fd, data->fb.width * 2, >> data->fb.height, >> + data->fb.drm_format, I915_TILING_NONE, 0.2, 0.2, 0.2, >> &fb_1); >> - damage[0].x1 = fb->width; >> + damage[0].x1 = data->fb.width; >> damage[0].y1 = 0; >> - damage[0].x2 = fb->width + fb->width/2; >> - damage[0].y2 = fb->height/2; >> + damage[0].x2 = data->fb.width + data->fb.width/2; >> + damage[0].y2 = data->fb.height/2; >> - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); >> - cr_2 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_2); >> + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); >> + cr_2 = igt_get_cairo_ctx(data->drm_fd, &fb_2); >> cairo_set_source_surface(cr_1, fb_2.cairo_surface, 0, 0); >> cairo_paint(cr_1); >> igt_paint_color(cr_1, damage[0].x1, damage[0].y1, >> @@ -1263,13 +1248,13 @@ static void atomic_plane_damage(igt_pipe_t >> *pipe, igt_plane_t *plane, struct igt >> damage_rect_height(&damage[0]), 0, 1.0, 0); >> igt_put_cairo_ctx(cr_2); >> igt_put_cairo_ctx(cr_1); >> - igt_plane_set_fb(plane, &fb_1); >> - igt_plane_set_size(plane, fb->width, fb->height); >> - igt_fb_set_position(&fb_1, plane, 0, 0); >> - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); >> - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, >> damage, >> + igt_plane_set_fb(data->primary, &fb_1); >> + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); >> + igt_fb_set_position(&fb_1, data->primary, 0, 0); >> + igt_fb_set_size(&fb_1, data->primary, data->fb.width, >> data->fb.height); >> + igt_plane_replace_prop_blob(data->primary, >> IGT_PLANE_FB_DAMAGE_CLIPS, damage, >> sizeof(*damage)); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* >> * Issue a plane update with damage with a clip that overlap >> with plane >> @@ -1277,23 +1262,23 @@ static void atomic_plane_damage(igt_pipe_t >> *pipe, igt_plane_t *plane, struct igt >> * NOTE: Here drm core should take care of intersecting the clip to >> * plane src. >> */ >> - damage[0].x1 = fb->width/2; >> + damage[0].x1 = data->fb.width/2; >> damage[0].y1 = 0; >> - damage[0].x2 = fb->width/2 + fb->width; >> - damage[0].y2 = fb->height/2; >> + damage[0].x2 = data->fb.width/2 + data->fb.width; >> + damage[0].y2 = data->fb.height/2; >> - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); >> + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); >> igt_paint_color(cr_1, damage[0].x1, damage[0].y1, >> damage_rect_width(&damage[0]), >> damage_rect_height(&damage[0]), 1.0, 1.0, 0); >> igt_put_cairo_ctx(cr_1); >> - igt_plane_set_fb(plane, &fb_1); >> - igt_plane_set_size(plane, fb->width, fb->height); >> - igt_fb_set_position(&fb_1, plane, 0, 0); >> - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); >> - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, >> damage, >> + igt_plane_set_fb(data->primary, &fb_1); >> + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); >> + igt_fb_set_position(&fb_1, data->primary, 0, 0); >> + igt_fb_set_size(&fb_1, data->primary, data->fb.width, >> data->fb.height); >> + igt_plane_replace_prop_blob(data->primary, >> IGT_PLANE_FB_DAMAGE_CLIPS, damage, >> sizeof(*damage)); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* >> * Issue a plane update with damage with two clips one inside >> plane src >> @@ -1301,16 +1286,16 @@ static void atomic_plane_damage(igt_pipe_t >> *pipe, igt_plane_t *plane, struct igt >> * NOTE: This will result in plane update with clip inside plane >> src. >> */ >> damage[0].x1 = 0; >> - damage[0].y1 = fb->height/2; >> - damage[0].x2 = fb->width/2; >> - damage[0].y2 = fb->height; >> + damage[0].y1 = data->fb.height/2; >> + damage[0].x2 = data->fb.width/2; >> + damage[0].y2 = data->fb.height; >> - damage[1].x1 = fb->width + fb->width/2; >> - damage[1].y1 = fb->height/2; >> - damage[1].x2 = fb->width * 2; >> - damage[1].y2 = fb->height; >> + damage[1].x1 = data->fb.width + data->fb.width/2; >> + damage[1].y1 = data->fb.height/2; >> + damage[1].x2 = data->fb.width * 2; >> + damage[1].y2 = data->fb.height; >> - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); >> + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); >> igt_paint_color(cr_1, damage[0].x1, damage[0].y1, >> damage_rect_width(&damage[0]), >> damage_rect_height(&damage[0]), 0, 1.0, 1.0); >> @@ -1318,13 +1303,13 @@ static void atomic_plane_damage(igt_pipe_t >> *pipe, igt_plane_t *plane, struct igt >> damage_rect_width(&damage[1]), >> damage_rect_height(&damage[1]), 0, 1.0, 0); >> igt_put_cairo_ctx(cr_1); >> - igt_plane_set_fb(plane, &fb_1); >> - igt_plane_set_size(plane, fb->width, fb->height); >> - igt_fb_set_position(&fb_1, plane, 0, 0); >> - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); >> - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, >> damage, >> + igt_plane_set_fb(data->primary, &fb_1); >> + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); >> + igt_fb_set_position(&fb_1, data->primary, 0, 0); >> + igt_fb_set_size(&fb_1, data->primary, data->fb.width, >> data->fb.height); >> + igt_plane_replace_prop_blob(data->primary, >> IGT_PLANE_FB_DAMAGE_CLIPS, damage, >> sizeof(*damage) * 2); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* >> * Issue a plane update with overlapping damage clips. White >> rect in >> @@ -1335,15 +1320,15 @@ static void atomic_plane_damage(igt_pipe_t >> *pipe, igt_plane_t *plane, struct igt >> */ >> damage[0].x1 = 0; >> damage[0].y1 = 0; >> - damage[0].x2 = fb->width/2; >> - damage[0].y2 = fb->height/2; >> + damage[0].x2 = data->fb.width/2; >> + damage[0].y2 = data->fb.height/2; >> - damage[1].x1 = fb->width/4; >> - damage[1].y1 = fb->height/4; >> - damage[1].x2 = fb->width/4 + fb->width/2; >> - damage[1].y2 = fb->height/4 + fb->height/2; >> + damage[1].x1 = data->fb.width/4; >> + damage[1].y1 = data->fb.height/4; >> + damage[1].x2 = data->fb.width/4 + data->fb.width/2; >> + damage[1].y2 = data->fb.height/4 + data->fb.height/2; >> - cr_1 = igt_get_cairo_ctx(pipe->display->drm_fd, &fb_1); >> + cr_1 = igt_get_cairo_ctx(data->drm_fd, &fb_1); >> igt_paint_color(cr_1, damage[0].x1, damage[0].y1, >> damage_rect_width(&damage[0]), >> damage_rect_height(&damage[0]), 1.0, 0, 0); >> @@ -1351,224 +1336,266 @@ static void atomic_plane_damage(igt_pipe_t >> *pipe, igt_plane_t *plane, struct igt >> damage_rect_width(&damage[1]), >> damage_rect_height(&damage[1]), 1.0, 1.0, 1.0); >> igt_put_cairo_ctx(cr_1); >> - igt_plane_set_fb(plane, &fb_1); >> - igt_plane_set_size(plane, fb->width, fb->height); >> - igt_fb_set_position(&fb_1, plane, 0, 0); >> - igt_fb_set_size(&fb_1, plane, fb->width, fb->height); >> - igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, >> damage, >> + igt_plane_set_fb(data->primary, &fb_1); >> + igt_plane_set_size(data->primary, data->fb.width, data->fb.height); >> + igt_fb_set_position(&fb_1, data->primary, 0, 0); >> + igt_fb_set_size(&fb_1, data->primary, data->fb.width, >> data->fb.height); >> + igt_plane_replace_prop_blob(data->primary, >> IGT_PLANE_FB_DAMAGE_CLIPS, damage, >> sizeof(*damage) * 2); >> - crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + crtc_commit(data->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> /* Restore the primary plane */ >> - igt_plane_set_fb(plane, fb); >> - plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> + igt_plane_set_fb(data->primary, &data->fb); >> + plane_commit(data->primary, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); >> /* Remove the fb created for this test */ >> - igt_remove_fb(pipe->display->drm_fd, &fb_1); >> - igt_remove_fb(pipe->display->drm_fd, &fb_2); >> + igt_remove_fb(data->drm_fd, &fb_1); >> + igt_remove_fb(data->drm_fd, &fb_2); >> } >> -static void atomic_setup(igt_display_t *display, enum pipe pipe, >> igt_output_t *output, igt_plane_t *primary, struct igt_fb *fb) >> +static void atomic_setup(data_t *data, enum pipe pipe, igt_output_t >> *output) >> { >> - igt_info("Using (pipe %s + %s) to run the subtest.\n", >> - kmstest_pipe_name(pipe), igt_output_name(output)); >> - >> - igt_display_reset(display); >> + drmModeModeInfo *mode; >> + igt_display_reset(&data->display); >> igt_output_set_pipe(output, pipe); >> - igt_plane_set_fb(primary, fb); >> - crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> + data->primary = >> igt_pipe_get_plane_type(&data->display.pipes[pipe], >> DRM_PLANE_TYPE_PRIMARY); >> + data->pipe = &data->display.pipes[pipe]; >> + mode = igt_output_get_mode(output); >> + >> + igt_create_pattern_fb(data->drm_fd, >> + mode->hdisplay, mode->vdisplay, >> + plane_get_igt_format(data->primary), >> + DRM_FORMAT_MOD_LINEAR, &data->fb); >> + >> + igt_plane_set_fb(data->primary, &data->fb); >> + >> + crtc_commit(data->primary->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> } >> -static void atomic_clear(igt_display_t *display, enum pipe pipe, >> igt_plane_t *primary, >> - igt_output_t *output, struct igt_fb *fb) >> +static void atomic_clear(data_t *data, enum pipe pipe, igt_output_t >> *output) >> { >> igt_plane_t *plane; >> - for_each_plane_on_pipe(display, pipe, plane) { >> + for_each_plane_on_pipe(&data->display, pipe, plane) { >> igt_plane_set_fb(plane, NULL); >> igt_plane_set_position(plane, 0, 0); >> } >> igt_output_set_pipe(output, PIPE_NONE); >> - crtc_commit(primary->pipe, primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> - igt_remove_fb(display->drm_fd, fb); >> + crtc_commit(data->primary->pipe, data->primary, COMMIT_ATOMIC, >> ATOMIC_RELAX_NONE); >> + igt_remove_fb(data->drm_fd, &data->fb); >> +} >> + >> +/* Returns true if plane supports zpos property. */ >> +static bool has_zpos(igt_plane_t *plane) >> +{ >> + return igt_plane_has_prop(plane, IGT_PLANE_ZPOS); >> } >> igt_main >> { >> - igt_display_t display; >> enum pipe pipe = PIPE_NONE; >> - igt_pipe_t *pipe_obj; >> igt_output_t *output = NULL; >> - igt_plane_t *primary = NULL; >> - drmModeModeInfo *mode; >> - struct igt_fb fb; >> - bool valid_config = false; >> + data_t data = { 0 }; >> igt_fixture { >> - display.drm_fd = drm_open_driver_master(DRIVER_ANY); >> + data.drm_fd = drm_open_driver_master(DRIVER_ANY); >> kmstest_set_vt_graphics_mode(); >> - igt_display_require(&display, display.drm_fd); >> - igt_require(display.is_atomic); >> - igt_display_require_output(&display); >> - >> - for_each_pipe_with_valid_output(&display, pipe, output) { >> - igt_display_reset(&display); >> - >> - igt_output_set_pipe(output, pipe); >> - if (i915_pipe_output_combo_valid(&display)) { >> - valid_config = true; >> - break; >> - } >> - } >> - igt_require(valid_config); >> - >> - pipe_obj = &display.pipes[pipe]; >> - primary = igt_pipe_get_plane_type(pipe_obj, >> DRM_PLANE_TYPE_PRIMARY); >> - >> - mode = igt_output_get_mode(output); >> - >> - igt_create_pattern_fb(display.drm_fd, >> - mode->hdisplay, mode->vdisplay, >> - plane_get_igt_format(primary), >> - DRM_FORMAT_MOD_LINEAR, &fb); >> + igt_display_require(&data.display, data.drm_fd); >> + igt_require(data.display.is_atomic); >> + igt_display_require_output(&data.display); >> } >> igt_describe("Test for KMS atomic modesetting on overlay plane >> and ensure coherency between " >> "the legacy and atomic interfaces."); >> - igt_subtest("plane-overlay-legacy") { >> - igt_plane_t *overlay = >> - igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); >> - igt_require(overlay); >> - >> - atomic_setup(&display, pipe, output, primary, &fb); >> - plane_overlay(pipe_obj, output, overlay); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + igt_subtest_with_dynamic("plane-overlay-legacy") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + igt_plane_t *overlay = >> + igt_pipe_get_plane_type(&data.display.pipes[pipe], >> DRM_PLANE_TYPE_OVERLAY); >> + uint32_t format = plane_get_igt_format(overlay); >> + >> + if (!overlay || !format) >> + continue; >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_setup(&data, pipe, output); >> + plane_overlay(&data, output, overlay, format); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Test for KMS atomic modesetting on primary plane >> and ensure coherency between " >> "the legacy and atomic interfaces."); >> - igt_subtest("plane-primary-legacy") { >> - atomic_setup(&display, pipe, output, primary, &fb); >> - plane_primary(pipe_obj, primary, &fb); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + igt_subtest_with_dynamic("plane-primary-legacy") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_setup(&data, pipe, output); >> + plane_primary(&data); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Verify that the overlay plane can cover the >> primary one (and "\ >> "vice versa) by changing their zpos property."); >> - igt_subtest("plane-primary-overlay-mutable-zpos") { >> - uint32_t format_primary = DRM_FORMAT_ARGB8888; >> - uint32_t format_overlay = DRM_FORMAT_ARGB1555; >> - igt_plane_t *overlay = >> - igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY); >> - igt_require(overlay); >> - >> - igt_info("Using (pipe %s + %s) to run the subtest.\n", >> - kmstest_pipe_name(pipe), igt_output_name(output)); >> + igt_subtest_with_dynamic("plane-primary-overlay-mutable-zpos") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + igt_plane_t *overlay = >> + igt_pipe_get_plane_type(&data.display.pipes[pipe], >> DRM_PLANE_TYPE_OVERLAY); >> - igt_display_reset(&display); >> - >> - igt_require(igt_plane_has_prop(primary, IGT_PLANE_ZPOS)); >> - igt_require(igt_plane_has_prop(overlay, IGT_PLANE_ZPOS)); >> - >> - igt_require(igt_plane_has_format_mod(primary, format_primary, >> 0x0)); >> - igt_require(igt_plane_has_format_mod(overlay, format_overlay, >> 0x0)); >> - >> - igt_output_set_pipe(output, pipe); >> - plane_primary_overlay_mutable_zpos(pipe_obj, output, primary, >> overlay, >> - format_primary, format_overlay); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + atomic_setup(&data, pipe, output); >> + if (!overlay) >> + continue; >> + if (!has_zpos(data.primary) || !has_zpos(overlay)) >> + continue; >> + if (!igt_plane_has_format_mod(data.primary, >> DRM_FORMAT_ARGB8888, 0x0) || >> + !igt_plane_has_format_mod(overlay, >> DRM_FORMAT_ARGB1555, 0x0)) >> + continue; >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + plane_primary_overlay_mutable_zpos(&data, output, >> overlay, >> + DRM_FORMAT_ARGB8888, >> DRM_FORMAT_ARGB1555); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Verify the reported zpos property of planes by >> making sure "\ >> "only higher zpos planes cover the lower zpos ones."); >> - igt_subtest("plane-immutable-zpos") { >> - int n_planes = pipe_obj->n_planes; >> - igt_require(n_planes >= 2); >> + igt_subtest_with_dynamic("plane-immutable-zpos") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + int n_planes = data.display.pipes[pipe].n_planes; >> - igt_info("Using (pipe %s + %s) to run the subtest.\n", >> - kmstest_pipe_name(pipe), igt_output_name(output)); >> - >> - igt_display_reset(&display); >> - igt_output_set_pipe(output, pipe); >> - plane_immutable_zpos(&display, pipe_obj, output, primary, >> n_planes); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + if (n_planes < 2) >> + continue; >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_setup(&data, pipe, output); >> + plane_immutable_zpos(&data, output, pipe, n_planes); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Test to ensure that DRM_MODE_ATOMIC_TEST_ONLY >> really only touches " >> "the free-standing state objects and nothing else."); >> - igt_subtest("test-only") { >> - uint32_t format = plane_get_igt_format(primary); >> - igt_require(format != 0); >> + igt_subtest_with_dynamic("test-only") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + uint32_t format; >> - igt_info("Using (pipe %s + %s) to run the subtest.\n", >> - kmstest_pipe_name(pipe), igt_output_name(output)); >> + atomic_setup(&data, pipe, output); >> + format = plane_get_igt_format(data.primary); >> - atomic_clear(&display, pipe, primary, output, &fb); >> - test_only(pipe_obj, primary, output, format); >> + if (!format) >> + continue; >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_clear(&data, pipe, output); >> + test_only(&data, output, pipe, format); >> + } >> + break; >> + } >> } >> igt_describe("Test for KMS atomic modesetting on cursor plane >> and ensure coherency between " >> "legacy and atomic interfaces."); >> - igt_subtest("plane-cursor-legacy") { >> - igt_plane_t *cursor = >> - igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_CURSOR); >> - igt_require(cursor); >> - >> - atomic_setup(&display, pipe, output, primary, &fb); >> - plane_cursor(pipe_obj, output, cursor); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + igt_subtest_with_dynamic("plane-cursor-legacy") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + igt_plane_t *cursor = >> + igt_pipe_get_plane_type(&data.display.pipes[pipe], >> DRM_PLANE_TYPE_CURSOR); >> + >> + if (!cursor) >> + continue; >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_setup(&data, pipe, output); >> + plane_cursor(&data, output, cursor); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Test error handling when invalid plane parameters >> are passed"); >> - igt_subtest("plane-invalid-params") { >> - atomic_setup(&display, pipe, output, primary, &fb); >> - plane_invalid_params(pipe_obj, output, primary, &fb); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + igt_subtest_with_dynamic("plane-invalid-params") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_setup(&data, pipe, output); >> + plane_invalid_params(&data, output); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Test error handling when invalid plane fence >> parameters are passed"); >> - igt_subtest("plane-invalid-params-fence") { >> - atomic_setup(&display, pipe, output, primary, &fb); >> - plane_invalid_params_fence(pipe_obj, output, primary); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + igt_subtest_with_dynamic("plane-invalid-params-fence") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_setup(&data, pipe, output); >> + plane_invalid_params_fence(&data, output); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Test error handling when invalid crtc parameters >> are passed"); >> - igt_subtest("crtc-invalid-params") { >> - atomic_setup(&display, pipe, output, primary, &fb); >> - crtc_invalid_params(pipe_obj, output, primary, &fb); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + igt_subtest_with_dynamic("crtc-invalid-params") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_setup(&data, pipe, output); >> + crtc_invalid_params(&data, output); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Test error handling when invalid crtc fence >> parameters are passed"); >> - igt_subtest("crtc-invalid-params-fence") { >> - atomic_setup(&display, pipe, output, primary, &fb); >> - crtc_invalid_params_fence(pipe_obj, output, primary, &fb); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + igt_subtest_with_dynamic("crtc-invalid-params-fence") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_setup(&data, pipe, output); >> + crtc_invalid_params_fence(&data, output); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Test abuse the atomic ioctl directly in order to >> test " >> "various invalid conditions which the libdrm wrapper >> won't " >> "allow us to create."); >> - igt_subtest("atomic-invalid-params") { >> - atomic_setup(&display, pipe, output, primary, &fb); >> - atomic_invalid_params(pipe_obj, primary, output, &fb); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + igt_subtest_with_dynamic("atomic-invalid-params") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_setup(&data, pipe, output); >> + atomic_invalid_params(&data, output); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane >> property"); >> - igt_subtest("atomic-plane-damage") { >> - igt_require(igt_plane_has_prop(primary, >> IGT_PLANE_FB_DAMAGE_CLIPS)); >> + igt_subtest_with_dynamic("atomic-plane-damage") { >> + for_each_pipe_with_single_output(&data.display, pipe, output) { >> + atomic_setup(&data, pipe, output); >> - atomic_setup(&display, pipe, output, primary, &fb); >> - atomic_plane_damage(pipe_obj, primary, &fb); >> - atomic_clear(&display, pipe, primary, output, &fb); >> + if (!igt_plane_has_prop(data.primary, >> IGT_PLANE_FB_DAMAGE_CLIPS)) >> + continue; >> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), >> igt_output_name(output)) { >> + atomic_plane_damage(&data); >> + atomic_clear(&data, pipe, output); >> + } >> + break; >> + } >> } >> igt_fixture { >> - igt_display_fini(&display); >> - drm_close_driver(display.drm_fd); >> + igt_display_fini(&data.display); >> + drm_close_driver(data.drm_fd); >> } >> } ^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH i-g-t 5/6] tests/kms_atomic: check validity of pipe-output combo 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma ` (3 preceding siblings ...) 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 4/6] tests/kms_atomic: convert subtests to dynamic subtests Swati Sharma @ 2023-09-18 7:54 ` Swati Sharma 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 6/6] tests/kms_atomic: add flexibility to run tests on all pipes Swati Sharma ` (4 subsequent siblings) 9 siblings, 0 replies; 18+ messages in thread From: Swati Sharma @ 2023-09-18 7:54 UTC (permalink / raw) To: igt-dev Check validity of pipe-output combination. Signed-off-by: Swati Sharma <swati2.sharma@intel.com> --- tests/kms_atomic.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c index e9159ded2..bed468e4b 100644 --- a/tests/kms_atomic.c +++ b/tests/kms_atomic.c @@ -1393,6 +1393,22 @@ static bool has_zpos(igt_plane_t *plane) return igt_plane_has_prop(plane, IGT_PLANE_ZPOS); } +static bool +pipe_output_combo_valid(igt_display_t *display, + enum pipe pipe, igt_output_t *output) +{ + bool ret = true; + + igt_display_reset(display); + + igt_output_set_pipe(output, pipe); + if (!i915_pipe_output_combo_valid(display)) + ret = false; + igt_output_set_pipe(output, PIPE_NONE); + + return ret; +} + igt_main { enum pipe pipe = PIPE_NONE; @@ -1415,6 +1431,8 @@ igt_main igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY); uint32_t format = plane_get_igt_format(overlay); + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; if (!overlay || !format) continue; igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { @@ -1430,6 +1448,8 @@ igt_main "the legacy and atomic interfaces."); igt_subtest_with_dynamic("plane-primary-legacy") { for_each_pipe_with_single_output(&data.display, pipe, output) { + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { atomic_setup(&data, pipe, output); plane_primary(&data); @@ -1446,6 +1466,9 @@ igt_main igt_plane_t *overlay = igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_OVERLAY); + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; + atomic_setup(&data, pipe, output); if (!overlay) continue; @@ -1469,6 +1492,8 @@ igt_main for_each_pipe_with_single_output(&data.display, pipe, output) { int n_planes = data.display.pipes[pipe].n_planes; + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; if (n_planes < 2) continue; igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { @@ -1486,6 +1511,9 @@ igt_main for_each_pipe_with_single_output(&data.display, pipe, output) { uint32_t format; + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; + atomic_setup(&data, pipe, output); format = plane_get_igt_format(data.primary); @@ -1506,6 +1534,8 @@ igt_main igt_plane_t *cursor = igt_pipe_get_plane_type(&data.display.pipes[pipe], DRM_PLANE_TYPE_CURSOR); + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; if (!cursor) continue; igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { @@ -1520,6 +1550,8 @@ igt_main igt_describe("Test error handling when invalid plane parameters are passed"); igt_subtest_with_dynamic("plane-invalid-params") { for_each_pipe_with_single_output(&data.display, pipe, output) { + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { atomic_setup(&data, pipe, output); plane_invalid_params(&data, output); @@ -1532,6 +1564,8 @@ igt_main igt_describe("Test error handling when invalid plane fence parameters are passed"); igt_subtest_with_dynamic("plane-invalid-params-fence") { for_each_pipe_with_single_output(&data.display, pipe, output) { + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { atomic_setup(&data, pipe, output); plane_invalid_params_fence(&data, output); @@ -1544,6 +1578,8 @@ igt_main igt_describe("Test error handling when invalid crtc parameters are passed"); igt_subtest_with_dynamic("crtc-invalid-params") { for_each_pipe_with_single_output(&data.display, pipe, output) { + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { atomic_setup(&data, pipe, output); crtc_invalid_params(&data, output); @@ -1556,6 +1592,8 @@ igt_main igt_describe("Test error handling when invalid crtc fence parameters are passed"); igt_subtest_with_dynamic("crtc-invalid-params-fence") { for_each_pipe_with_single_output(&data.display, pipe, output) { + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { atomic_setup(&data, pipe, output); crtc_invalid_params_fence(&data, output); @@ -1570,6 +1608,8 @@ igt_main "allow us to create."); igt_subtest_with_dynamic("atomic-invalid-params") { for_each_pipe_with_single_output(&data.display, pipe, output) { + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) { atomic_setup(&data, pipe, output); atomic_invalid_params(&data, output); @@ -1582,6 +1622,9 @@ igt_main igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane property"); igt_subtest_with_dynamic("atomic-plane-damage") { for_each_pipe_with_single_output(&data.display, pipe, output) { + if (!pipe_output_combo_valid(&data.display, pipe, output)) + continue; + atomic_setup(&data, pipe, output); if (!igt_plane_has_prop(data.primary, IGT_PLANE_FB_DAMAGE_CLIPS)) -- 2.25.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH i-g-t 6/6] tests/kms_atomic: add flexibility to run tests on all pipes 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma ` (4 preceding siblings ...) 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 5/6] tests/kms_atomic: check validity of pipe-output combo Swati Sharma @ 2023-09-18 7:54 ` Swati Sharma 2023-09-18 11:54 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_atomic: Test cleanup and dynamic conversion Patchwork ` (3 subsequent siblings) 9 siblings, 0 replies; 18+ messages in thread From: Swati Sharma @ 2023-09-18 7:54 UTC (permalink / raw) To: igt-dev Extra flag in command line is passed to run subtests on all pipe/output combinations. However, by default execution is restricted to 1pipe/1output combination. Signed-off-by: Swati Sharma <swati2.sharma@intel.com> Reviewed-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com> --- tests/kms_atomic.c | 56 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c index bed468e4b..c7190c6bd 100644 --- a/tests/kms_atomic.c +++ b/tests/kms_atomic.c @@ -58,6 +58,8 @@ IGT_TEST_DESCRIPTION("Test atomic modesetting API"); +static bool all_pipes = false; + /* Common test data. */ typedef struct { igt_display_t display; @@ -1409,7 +1411,23 @@ pipe_output_combo_valid(igt_display_t *display, return ret; } -igt_main +static int opt_handler(int opt, int opt_index, void *_data) +{ + switch (opt) { + case 'e': + all_pipes = true; + break; + default: + return IGT_OPT_HANDLER_ERROR; + } + + return IGT_OPT_HANDLER_SUCCESS; +} + +static const char *help_str = + " -e \tRun on all pipes. (By default subtests will run only on one pipe)\n"; + +igt_main_args("e", NULL, help_str, opt_handler, NULL) { enum pipe pipe = PIPE_NONE; igt_output_t *output = NULL; @@ -1440,7 +1458,8 @@ igt_main plane_overlay(&data, output, overlay, format); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1455,7 +1474,8 @@ igt_main plane_primary(&data); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1482,7 +1502,8 @@ igt_main DRM_FORMAT_ARGB8888, DRM_FORMAT_ARGB1555); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1501,7 +1522,8 @@ igt_main plane_immutable_zpos(&data, output, pipe, n_planes); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1523,7 +1545,8 @@ igt_main atomic_clear(&data, pipe, output); test_only(&data, output, pipe, format); } - break; + if (!all_pipes) + break; } } @@ -1543,7 +1566,8 @@ igt_main plane_cursor(&data, output, cursor); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1557,7 +1581,8 @@ igt_main plane_invalid_params(&data, output); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1571,7 +1596,8 @@ igt_main plane_invalid_params_fence(&data, output); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1585,7 +1611,8 @@ igt_main crtc_invalid_params(&data, output); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1599,7 +1626,8 @@ igt_main crtc_invalid_params_fence(&data, output); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1615,7 +1643,8 @@ igt_main atomic_invalid_params(&data, output); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } @@ -1633,7 +1662,8 @@ igt_main atomic_plane_damage(&data); atomic_clear(&data, pipe, output); } - break; + if (!all_pipes) + break; } } -- 2.25.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_atomic: Test cleanup and dynamic conversion 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma ` (5 preceding siblings ...) 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 6/6] tests/kms_atomic: add flexibility to run tests on all pipes Swati Sharma @ 2023-09-18 11:54 ` Patchwork 2023-09-18 11:57 ` [igt-dev] ✗ CI.xeBAT: " Patchwork ` (2 subsequent siblings) 9 siblings, 0 replies; 18+ messages in thread From: Patchwork @ 2023-09-18 11:54 UTC (permalink / raw) To: Swati Sharma; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 6365 bytes --] == Series Details == Series: tests/kms_atomic: Test cleanup and dynamic conversion URL : https://patchwork.freedesktop.org/series/123846/ State : failure == Summary == CI Bug Log - changes from CI_DRM_13647 -> IGTPW_9813 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with IGTPW_9813 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_9813, please notify your bug team (lgci.bug.filing@intel.com) to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/index.html Participating hosts (38 -> 38) ------------------------------ Additional (2): fi-kbl-soraka fi-pnv-d510 Missing (2): bat-dg2-8 fi-snb-2520m Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_9813: ### IGT changes ### #### Possible regressions #### * igt@dmabuf@all-tests@dma_fence: - fi-pnv-d510: NOTRUN -> [DMESG-FAIL][1] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-pnv-d510/igt@dmabuf@all-tests@dma_fence.html * igt@dmabuf@all-tests@sanitycheck: - fi-pnv-d510: NOTRUN -> [ABORT][2] [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-pnv-d510/igt@dmabuf@all-tests@sanitycheck.html Known issues ------------ Here are the changes found in IGTPW_9813 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_huc_copy@huc-copy: - fi-kbl-soraka: NOTRUN -> [SKIP][3] ([fdo#109271] / [i915#2190]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-kbl-soraka/igt@gem_huc_copy@huc-copy.html * igt@gem_lmem_swapping@basic: - fi-kbl-soraka: NOTRUN -> [SKIP][4] ([fdo#109271] / [i915#4613]) +3 other tests skip [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-kbl-soraka/igt@gem_lmem_swapping@basic.html * igt@i915_selftest@live@gt_pm: - fi-kbl-soraka: NOTRUN -> [DMESG-FAIL][5] ([i915#1886] / [i915#7913]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-kbl-soraka/igt@i915_selftest@live@gt_pm.html * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy: - fi-hsw-4770: NOTRUN -> [SKIP][6] ([fdo#109271]) +13 other tests skip [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-hsw-4770/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html * igt@kms_dsc@dsc-basic: - fi-kbl-soraka: NOTRUN -> [SKIP][7] ([fdo#109271]) +9 other tests skip [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-kbl-soraka/igt@kms_dsc@dsc-basic.html * igt@kms_frontbuffer_tracking@basic: - fi-bsw-nick: [PASS][8] -> [FAIL][9] ([i915#9276]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/fi-bsw-nick/igt@kms_frontbuffer_tracking@basic.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-bsw-nick/igt@kms_frontbuffer_tracking@basic.html * igt@kms_pipe_crc_basic@nonblocking-crc: - bat-dg2-11: NOTRUN -> [SKIP][10] ([i915#1845]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc.html * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-vga-1: - fi-hsw-4770: NOTRUN -> [DMESG-WARN][11] ([i915#8841]) +6 other tests dmesg-warn [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-hsw-4770/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-vga-1.html * igt@kms_psr@primary_page_flip: - fi-pnv-d510: NOTRUN -> [SKIP][12] ([fdo#109271]) +31 other tests skip [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-pnv-d510/igt@kms_psr@primary_page_flip.html * igt@kms_psr@sprite_plane_onoff: - fi-hsw-4770: NOTRUN -> [SKIP][13] ([fdo#109271] / [i915#1072]) +3 other tests skip [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-hsw-4770/igt@kms_psr@sprite_plane_onoff.html #### Possible fixes #### * igt@gem_exec_suspend@basic-s0@smem: - bat-dg2-9: [INCOMPLETE][14] ([i915#8797] / [i915#9275]) -> [PASS][15] [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/bat-dg2-9/igt@gem_exec_suspend@basic-s0@smem.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/bat-dg2-9/igt@gem_exec_suspend@basic-s0@smem.html * igt@i915_selftest@live@hangcheck: - fi-skl-guc: [DMESG-FAIL][16] -> [PASS][17] [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/fi-skl-guc/igt@i915_selftest@live@hangcheck.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-skl-guc/igt@i915_selftest@live@hangcheck.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072 [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845 [i915#1886]: https://gitlab.freedesktop.org/drm/intel/issues/1886 [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913 [i915#8797]: https://gitlab.freedesktop.org/drm/intel/issues/8797 [i915#8841]: https://gitlab.freedesktop.org/drm/intel/issues/8841 [i915#9275]: https://gitlab.freedesktop.org/drm/intel/issues/9275 [i915#9276]: https://gitlab.freedesktop.org/drm/intel/issues/9276 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7493 -> IGTPW_9813 CI-20190529: 20190529 CI_DRM_13647: 926e8f4826a93750b5a9355a0e8934702edf55b8 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_9813: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/index.html IGT_7493: 2517e42d612e0c1ca096acf8b5f6177f7ef4bce7 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Testlist changes ---------------- +igt@i915_hwmon@hwmon-read +igt@i915_hwmon@hwmon-write +igt@kms_atomic@atomic-plane-damage -igt@intel_hwmon@hwmon-read -igt@intel_hwmon@hwmon-write -igt@kms_atomic@atomic_plane_damage == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/index.html [-- Attachment #2: Type: text/html, Size: 7704 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] ✗ CI.xeBAT: failure for tests/kms_atomic: Test cleanup and dynamic conversion 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma ` (6 preceding siblings ...) 2023-09-18 11:54 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_atomic: Test cleanup and dynamic conversion Patchwork @ 2023-09-18 11:57 ` Patchwork 2023-09-21 6:50 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork 2023-09-21 16:39 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork 9 siblings, 0 replies; 18+ messages in thread From: Patchwork @ 2023-09-18 11:57 UTC (permalink / raw) To: Swati Sharma; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 2240 bytes --] == Series Details == Series: tests/kms_atomic: Test cleanup and dynamic conversion URL : https://patchwork.freedesktop.org/series/123846/ State : failure == Summary == CI Bug Log - changes from XEIGT_7493_BAT -> XEIGTPW_9813_BAT ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with XEIGTPW_9813_BAT absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in XEIGTPW_9813_BAT, please notify your bug team (lgci.bug.filing@intel.com) to allow them to document this new failure mode, which will reduce false positives in CI. Participating hosts (4 -> 4) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in XEIGTPW_9813_BAT: ### IGT changes ### #### Possible regressions #### * igt@xe_module_load@load: - bat-dg2-oem2: [PASS][1] -> [INCOMPLETE][2] [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7493/bat-dg2-oem2/igt@xe_module_load@load.html [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_9813/bat-dg2-oem2/igt@xe_module_load@load.html Known issues ------------ Here are the changes found in XEIGTPW_9813_BAT that come from known issues: ### IGT changes ### {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [Intel XE#524]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/524 Build changes ------------- * IGT: IGT_7493 -> IGTPW_9813 * Linux: xe-376-9da40abcc0ccdf8fdfed4e21d76060bfcd35fe7d -> xe-377-717f01815b20bde3f081a18f42f31673ce1f107f IGTPW_9813: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/index.html IGT_7493: 2517e42d612e0c1ca096acf8b5f6177f7ef4bce7 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git xe-376-9da40abcc0ccdf8fdfed4e21d76060bfcd35fe7d: 9da40abcc0ccdf8fdfed4e21d76060bfcd35fe7d xe-377-717f01815b20bde3f081a18f42f31673ce1f107f: 717f01815b20bde3f081a18f42f31673ce1f107f == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_9813/index.html [-- Attachment #2: Type: text/html, Size: 2770 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_atomic: Test cleanup and dynamic conversion 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma ` (7 preceding siblings ...) 2023-09-18 11:57 ` [igt-dev] ✗ CI.xeBAT: " Patchwork @ 2023-09-21 6:50 ` Patchwork 2023-09-21 16:39 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork 9 siblings, 0 replies; 18+ messages in thread From: Patchwork @ 2023-09-21 6:50 UTC (permalink / raw) To: Sharma, Swati2; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 6036 bytes --] == Series Details == Series: tests/kms_atomic: Test cleanup and dynamic conversion URL : https://patchwork.freedesktop.org/series/123846/ State : success == Summary == CI Bug Log - changes from CI_DRM_13647 -> IGTPW_9813 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/index.html Participating hosts (38 -> 38) ------------------------------ Additional (2): fi-kbl-soraka fi-pnv-d510 Missing (2): bat-dg2-8 fi-snb-2520m Known issues ------------ Here are the changes found in IGTPW_9813 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@dmabuf@all-tests@dma_fence: - fi-pnv-d510: NOTRUN -> [DMESG-FAIL][1] ([i915#8189]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-pnv-d510/igt@dmabuf@all-tests@dma_fence.html * igt@dmabuf@all-tests@sanitycheck: - fi-pnv-d510: NOTRUN -> [ABORT][2] ([i915#9387]) [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-pnv-d510/igt@dmabuf@all-tests@sanitycheck.html * igt@gem_huc_copy@huc-copy: - fi-kbl-soraka: NOTRUN -> [SKIP][3] ([fdo#109271] / [i915#2190]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-kbl-soraka/igt@gem_huc_copy@huc-copy.html * igt@gem_lmem_swapping@basic: - fi-kbl-soraka: NOTRUN -> [SKIP][4] ([fdo#109271] / [i915#4613]) +3 other tests skip [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-kbl-soraka/igt@gem_lmem_swapping@basic.html * igt@i915_selftest@live@gt_pm: - fi-kbl-soraka: NOTRUN -> [DMESG-FAIL][5] ([i915#1886] / [i915#7913]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-kbl-soraka/igt@i915_selftest@live@gt_pm.html * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy: - fi-hsw-4770: NOTRUN -> [SKIP][6] ([fdo#109271]) +13 other tests skip [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-hsw-4770/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html * igt@kms_dsc@dsc-basic: - fi-kbl-soraka: NOTRUN -> [SKIP][7] ([fdo#109271]) +9 other tests skip [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-kbl-soraka/igt@kms_dsc@dsc-basic.html * igt@kms_frontbuffer_tracking@basic: - fi-bsw-nick: [PASS][8] -> [FAIL][9] ([i915#9276]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/fi-bsw-nick/igt@kms_frontbuffer_tracking@basic.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-bsw-nick/igt@kms_frontbuffer_tracking@basic.html * igt@kms_pipe_crc_basic@nonblocking-crc: - bat-dg2-11: NOTRUN -> [SKIP][10] ([i915#1845]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc.html * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-vga-1: - fi-hsw-4770: NOTRUN -> [DMESG-WARN][11] ([i915#8841]) +6 other tests dmesg-warn [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-hsw-4770/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-vga-1.html * igt@kms_psr@primary_page_flip: - fi-pnv-d510: NOTRUN -> [SKIP][12] ([fdo#109271]) +31 other tests skip [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-pnv-d510/igt@kms_psr@primary_page_flip.html * igt@kms_psr@sprite_plane_onoff: - fi-hsw-4770: NOTRUN -> [SKIP][13] ([fdo#109271] / [i915#1072]) +3 other tests skip [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-hsw-4770/igt@kms_psr@sprite_plane_onoff.html #### Possible fixes #### * igt@gem_exec_suspend@basic-s0@smem: - bat-dg2-9: [INCOMPLETE][14] ([i915#8797] / [i915#9275]) -> [PASS][15] [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/bat-dg2-9/igt@gem_exec_suspend@basic-s0@smem.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/bat-dg2-9/igt@gem_exec_suspend@basic-s0@smem.html * igt@i915_selftest@live@hangcheck: - fi-skl-guc: [DMESG-FAIL][16] -> [PASS][17] [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/fi-skl-guc/igt@i915_selftest@live@hangcheck.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/fi-skl-guc/igt@i915_selftest@live@hangcheck.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072 [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845 [i915#1886]: https://gitlab.freedesktop.org/drm/intel/issues/1886 [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913 [i915#8189]: https://gitlab.freedesktop.org/drm/intel/issues/8189 [i915#8797]: https://gitlab.freedesktop.org/drm/intel/issues/8797 [i915#8841]: https://gitlab.freedesktop.org/drm/intel/issues/8841 [i915#9275]: https://gitlab.freedesktop.org/drm/intel/issues/9275 [i915#9276]: https://gitlab.freedesktop.org/drm/intel/issues/9276 [i915#9387]: https://gitlab.freedesktop.org/drm/intel/issues/9387 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7493 -> IGTPW_9813 CI-20190529: 20190529 CI_DRM_13647: 926e8f4826a93750b5a9355a0e8934702edf55b8 @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_9813: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/index.html IGT_7493: 2517e42d612e0c1ca096acf8b5f6177f7ef4bce7 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Testlist changes ---------------- +igt@i915_hwmon@hwmon-read +igt@i915_hwmon@hwmon-write +igt@kms_atomic@atomic-plane-damage -igt@intel_hwmon@hwmon-read -igt@intel_hwmon@hwmon-write -igt@kms_atomic@atomic_plane_damage == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/index.html [-- Attachment #2: Type: text/html, Size: 7351 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_atomic: Test cleanup and dynamic conversion 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma ` (8 preceding siblings ...) 2023-09-21 6:50 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork @ 2023-09-21 16:39 ` Patchwork 9 siblings, 0 replies; 18+ messages in thread From: Patchwork @ 2023-09-21 16:39 UTC (permalink / raw) To: Sharma, Swati2; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 100272 bytes --] == Series Details == Series: tests/kms_atomic: Test cleanup and dynamic conversion URL : https://patchwork.freedesktop.org/series/123846/ State : failure == Summary == CI Bug Log - changes from CI_DRM_13647_full -> IGTPW_9813_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with IGTPW_9813_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in IGTPW_9813_full, please notify your bug team (lgci.bug.filing@intel.com) to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/index.html Participating hosts (10 -> 9) ------------------------------ Missing (1): shard-tglu0 Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_9813_full: ### IGT changes ### #### Possible regressions #### * igt@gem_ctx_exec@basic-nohangcheck: - shard-mtlp: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-6/igt@gem_ctx_exec@basic-nohangcheck.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-3/igt@gem_ctx_exec@basic-nohangcheck.html * igt@gem_ppgtt@blt-vs-render-ctxn: - shard-rkl: [PASS][3] -> [DMESG-FAIL][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-4/igt@gem_ppgtt@blt-vs-render-ctxn.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-4/igt@gem_ppgtt@blt-vs-render-ctxn.html * igt@kms_frontbuffer_tracking@fbc-2p-indfb-fliptrack-mmap-gtt: - shard-mtlp: NOTRUN -> [SKIP][5] +9 other tests skip [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@kms_frontbuffer_tracking@fbc-2p-indfb-fliptrack-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt: - shard-dg2: NOTRUN -> [SKIP][6] +18 other tests skip [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt.html - shard-dg1: NOTRUN -> [SKIP][7] +3 other tests skip [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt.html #### Warnings #### * igt@kms_atomic@plane-primary-overlay-mutable-zpos: - shard-dg2: [SKIP][8] ([i915#404]) -> [SKIP][9] [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg2-7/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html - shard-rkl: [SKIP][10] ([i915#404]) -> [SKIP][11] [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-2/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html - shard-dg1: [SKIP][12] ([i915#404]) -> [SKIP][13] [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-16/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html - shard-tglu: [SKIP][14] ([i915#404]) -> [SKIP][15] [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-tglu-4/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-8/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc: - shard-dg2: [SKIP][16] ([i915#8708]) -> [SKIP][17] +55 other tests skip [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc: - shard-dg1: [SKIP][18] ([i915#8708]) -> [SKIP][19] +100 other tests skip [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-19/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt: - shard-mtlp: [SKIP][20] ([i915#8708]) -> [SKIP][21] +17 other tests skip [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-6/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt.html [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt.html New tests --------- New tests have been introduced between CI_DRM_13647_full and IGTPW_9813_full: ### New IGT tests (60) ### * igt@kms_atomic@atomic-invalid-params@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-invalid-params@pipe-a-edp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-invalid-params@pipe-a-hdmi-a-1: - Statuses : 2 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-invalid-params@pipe-a-hdmi-a-2: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-invalid-params@pipe-a-hdmi-a-3: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-invalid-params@pipe-a-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-invalid-params@pipe-a-vga-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-plane-damage: - Statuses : 3 skip(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-plane-damage@pipe-a-edp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-plane-damage@pipe-a-hdmi-a-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-plane-damage@pipe-a-hdmi-a-2: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-plane-damage@pipe-a-hdmi-a-3: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@atomic-plane-damage@pipe-a-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params-fence@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params-fence@pipe-a-edp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params-fence@pipe-a-hdmi-a-1: - Statuses : 2 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params-fence@pipe-a-hdmi-a-2: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params-fence@pipe-a-hdmi-a-3: - Statuses : 2 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params-fence@pipe-a-vga-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params@pipe-a-hdmi-a-1: - Statuses : 2 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params@pipe-a-hdmi-a-2: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params@pipe-a-hdmi-a-3: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params@pipe-a-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@crtc-invalid-params@pipe-a-vga-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-cursor-legacy@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-cursor-legacy@pipe-a-edp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-cursor-legacy@pipe-a-hdmi-a-1: - Statuses : 5 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-cursor-legacy@pipe-a-hdmi-a-3: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-immutable-zpos@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-immutable-zpos@pipe-a-edp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-immutable-zpos@pipe-a-hdmi-a-1: - Statuses : 3 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-immutable-zpos@pipe-a-hdmi-a-2: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-immutable-zpos@pipe-a-hdmi-a-3: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-immutable-zpos@pipe-a-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params-fence@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params-fence@pipe-a-hdmi-a-1: - Statuses : 2 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params-fence@pipe-a-hdmi-a-2: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params-fence@pipe-a-hdmi-a-3: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params-fence@pipe-a-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params-fence@pipe-a-vga-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params@pipe-a-hdmi-a-1: - Statuses : 3 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params@pipe-a-hdmi-a-2: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-invalid-params@pipe-a-vga-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-overlay-legacy@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-overlay-legacy@pipe-a-hdmi-a-1: - Statuses : 3 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-overlay-legacy@pipe-a-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-overlay-legacy@pipe-a-vga-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-primary-legacy@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-primary-legacy@pipe-a-edp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-primary-legacy@pipe-a-hdmi-a-1: - Statuses : 2 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-primary-legacy@pipe-a-hdmi-a-2: - Statuses : 2 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-primary-legacy@pipe-a-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@plane-primary-legacy@pipe-a-vga-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@test-only@pipe-a-dp-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_atomic@test-only@pipe-a-hdmi-a-1: - Statuses : 4 pass(s) - Exec time: [0.0] s * igt@kms_atomic@test-only@pipe-a-hdmi-a-4: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_lease@page_flip_implicit_plane@pipe-a-vga-1: - Statuses : 1 pass(s) - Exec time: [0.0] s * igt@kms_lease@page_flip_implicit_plane@pipe-b-vga-1: - Statuses : 1 pass(s) - Exec time: [0.0] s Known issues ------------ Here are the changes found in IGTPW_9813_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@api_intel_bb@blit-reloc-keep-cache: - shard-mtlp: NOTRUN -> [SKIP][22] ([i915#8411]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-6/igt@api_intel_bb@blit-reloc-keep-cache.html * igt@drm_fdinfo@all-busy-check-all: - shard-mtlp: NOTRUN -> [SKIP][23] ([i915#8414]) +1 other test skip [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@drm_fdinfo@all-busy-check-all.html * igt@drm_fdinfo@busy@ccs0: - shard-dg2: NOTRUN -> [SKIP][24] ([i915#8414]) +19 other tests skip [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-3/igt@drm_fdinfo@busy@ccs0.html * igt@drm_fdinfo@busy@vcs1: - shard-dg1: NOTRUN -> [SKIP][25] ([i915#8414]) +5 other tests skip [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-16/igt@drm_fdinfo@busy@vcs1.html * igt@gem_ccs@block-multicopy-compressed: - shard-mtlp: NOTRUN -> [SKIP][26] ([i915#9323]) [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-7/igt@gem_ccs@block-multicopy-compressed.html * igt@gem_close_race@multigpu-basic-threads: - shard-dg2: NOTRUN -> [SKIP][27] ([i915#7697]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@gem_close_race@multigpu-basic-threads.html * igt@gem_create@create-ext-cpu-access-big: - shard-mtlp: NOTRUN -> [SKIP][28] ([i915#6335]) [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@gem_create@create-ext-cpu-access-big.html * igt@gem_create@create-ext-cpu-access-sanity-check: - shard-tglu: NOTRUN -> [SKIP][29] ([i915#6335]) [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-7/igt@gem_create@create-ext-cpu-access-sanity-check.html * igt@gem_ctx_persistence@engines-hostile@vcs0: - shard-mtlp: NOTRUN -> [FAIL][30] ([i915#2410]) +2 other tests fail [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@gem_ctx_persistence@engines-hostile@vcs0.html * igt@gem_ctx_persistence@hang: - shard-mtlp: NOTRUN -> [SKIP][31] ([i915#8555]) +2 other tests skip [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@gem_ctx_persistence@hang.html * igt@gem_ctx_persistence@heartbeat-close: - shard-dg2: NOTRUN -> [SKIP][32] ([i915#8555]) [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@gem_ctx_persistence@heartbeat-close.html * igt@gem_ctx_persistence@legacy-engines-persistence: - shard-snb: NOTRUN -> [SKIP][33] ([fdo#109271] / [i915#1099]) +2 other tests skip [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-snb4/igt@gem_ctx_persistence@legacy-engines-persistence.html * igt@gem_ctx_persistence@saturated-hostile-nopreempt@ccs0: - shard-dg2: NOTRUN -> [SKIP][34] ([i915#5882]) +9 other tests skip [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@gem_ctx_persistence@saturated-hostile-nopreempt@ccs0.html * igt@gem_ctx_sseu@invalid-args: - shard-dg2: NOTRUN -> [SKIP][35] ([i915#280]) [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@gem_ctx_sseu@invalid-args.html * igt@gem_eio@hibernate: - shard-dg2: NOTRUN -> [ABORT][36] ([i915#7975] / [i915#8213]) [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-7/igt@gem_eio@hibernate.html * igt@gem_eio@reset-stress: - shard-dg2: [PASS][37] -> [FAIL][38] ([i915#5784]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg2-1/igt@gem_eio@reset-stress.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@gem_eio@reset-stress.html * igt@gem_eio@unwedge-stress: - shard-dg1: [PASS][39] -> [FAIL][40] ([i915#5784]) [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-15/igt@gem_eio@unwedge-stress.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@gem_eio@unwedge-stress.html * igt@gem_exec_balancer@bonded-sync: - shard-mtlp: NOTRUN -> [SKIP][41] ([i915#4771]) [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-8/igt@gem_exec_balancer@bonded-sync.html * igt@gem_exec_balancer@parallel-keep-submit-fence: - shard-rkl: NOTRUN -> [SKIP][42] ([i915#4525]) [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@gem_exec_balancer@parallel-keep-submit-fence.html * igt@gem_exec_fair@basic-none-solo@rcs0: - shard-apl: [PASS][43] -> [FAIL][44] ([i915#2842]) [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-apl7/igt@gem_exec_fair@basic-none-solo@rcs0.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-apl3/igt@gem_exec_fair@basic-none-solo@rcs0.html * igt@gem_exec_fair@basic-pace-share: - shard-dg2: NOTRUN -> [SKIP][45] ([i915#3539] / [i915#4852]) +4 other tests skip [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@gem_exec_fair@basic-pace-share.html - shard-mtlp: NOTRUN -> [SKIP][46] ([i915#4473] / [i915#4771]) [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@gem_exec_fair@basic-pace-share.html * igt@gem_exec_fair@basic-pace-share@rcs0: - shard-rkl: [PASS][47] -> [FAIL][48] ([i915#2842]) [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-7/igt@gem_exec_fair@basic-pace-share@rcs0.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@gem_exec_fair@basic-pace-share@rcs0.html * igt@gem_exec_fence@concurrent: - shard-mtlp: NOTRUN -> [SKIP][49] ([i915#4812]) +3 other tests skip [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@gem_exec_fence@concurrent.html * igt@gem_exec_fence@submit67: - shard-dg2: NOTRUN -> [SKIP][50] ([i915#4812]) +2 other tests skip [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@gem_exec_fence@submit67.html - shard-dg1: NOTRUN -> [SKIP][51] ([i915#4812]) [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-16/igt@gem_exec_fence@submit67.html * igt@gem_exec_flush@basic-uc-set-default: - shard-dg2: NOTRUN -> [SKIP][52] ([i915#3539]) +2 other tests skip [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@gem_exec_flush@basic-uc-set-default.html * igt@gem_exec_flush@basic-wb-set-default: - shard-dg1: NOTRUN -> [SKIP][53] ([i915#3539] / [i915#4852]) [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-19/igt@gem_exec_flush@basic-wb-set-default.html * igt@gem_exec_params@rsvd2-dirt: - shard-mtlp: NOTRUN -> [SKIP][54] ([i915#5107]) [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@gem_exec_params@rsvd2-dirt.html - shard-dg2: NOTRUN -> [SKIP][55] ([fdo#109283] / [i915#5107]) [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@gem_exec_params@rsvd2-dirt.html * igt@gem_exec_reloc@basic-cpu-noreloc: - shard-dg2: NOTRUN -> [SKIP][56] ([i915#3281]) +10 other tests skip [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@gem_exec_reloc@basic-cpu-noreloc.html * igt@gem_exec_reloc@basic-cpu-read-noreloc: - shard-mtlp: NOTRUN -> [SKIP][57] ([i915#3281]) +9 other tests skip [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-6/igt@gem_exec_reloc@basic-cpu-read-noreloc.html * igt@gem_exec_reloc@basic-gtt-read: - shard-rkl: NOTRUN -> [SKIP][58] ([i915#3281]) +3 other tests skip [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-4/igt@gem_exec_reloc@basic-gtt-read.html * igt@gem_exec_reloc@basic-write-cpu-active: - shard-dg1: NOTRUN -> [SKIP][59] ([i915#3281]) +2 other tests skip [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-16/igt@gem_exec_reloc@basic-write-cpu-active.html * igt@gem_exec_schedule@preempt-queue-contexts-chain: - shard-dg2: NOTRUN -> [SKIP][60] ([i915#4537] / [i915#4812]) [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@gem_exec_schedule@preempt-queue-contexts-chain.html * igt@gem_exec_suspend@basic-s3@smem: - shard-mtlp: NOTRUN -> [ABORT][61] ([i915#9262]) +6 other tests abort [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-8/igt@gem_exec_suspend@basic-s3@smem.html * igt@gem_exec_suspend@basic-s4-devices@smem: - shard-rkl: NOTRUN -> [ABORT][62] ([i915#7975] / [i915#8213]) [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@gem_exec_suspend@basic-s4-devices@smem.html * igt@gem_fence_thrash@bo-write-verify-none: - shard-mtlp: NOTRUN -> [SKIP][63] ([i915#4860]) +2 other tests skip [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@gem_fence_thrash@bo-write-verify-none.html * igt@gem_fence_thrash@bo-write-verify-threaded-none: - shard-dg2: NOTRUN -> [SKIP][64] ([i915#4860]) [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@gem_fence_thrash@bo-write-verify-threaded-none.html * igt@gem_fenced_exec_thrash@2-spare-fences: - shard-dg1: NOTRUN -> [SKIP][65] ([i915#4860]) [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-17/igt@gem_fenced_exec_thrash@2-spare-fences.html * igt@gem_lmem_swapping@parallel-random-verify: - shard-mtlp: NOTRUN -> [SKIP][66] ([i915#4613]) +4 other tests skip [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@gem_lmem_swapping@parallel-random-verify.html * igt@gem_lmem_swapping@random: - shard-tglu: NOTRUN -> [SKIP][67] ([i915#4613]) [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-5/igt@gem_lmem_swapping@random.html * igt@gem_madvise@dontneed-before-exec: - shard-mtlp: NOTRUN -> [SKIP][68] ([i915#3282]) +6 other tests skip [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@gem_madvise@dontneed-before-exec.html * igt@gem_mmap@big-bo: - shard-dg1: NOTRUN -> [SKIP][69] ([i915#4083]) +1 other test skip [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-13/igt@gem_mmap@big-bo.html * igt@gem_mmap_gtt@close-race: - shard-dg1: NOTRUN -> [SKIP][70] ([i915#4077]) +4 other tests skip [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-16/igt@gem_mmap_gtt@close-race.html * igt@gem_mmap_gtt@cpuset-big-copy: - shard-dg2: NOTRUN -> [SKIP][71] ([i915#4077]) +7 other tests skip [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@gem_mmap_gtt@cpuset-big-copy.html * igt@gem_mmap_gtt@cpuset-medium-copy-odd: - shard-mtlp: NOTRUN -> [SKIP][72] ([i915#4077]) +20 other tests skip [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-8/igt@gem_mmap_gtt@cpuset-medium-copy-odd.html * igt@gem_mmap_wc@bad-offset: - shard-mtlp: NOTRUN -> [SKIP][73] ([i915#4083]) +5 other tests skip [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@gem_mmap_wc@bad-offset.html * igt@gem_mmap_wc@coherency: - shard-dg2: NOTRUN -> [SKIP][74] ([i915#4083]) +4 other tests skip [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@gem_mmap_wc@coherency.html * igt@gem_partial_pwrite_pread@writes-after-reads-display: - shard-dg2: NOTRUN -> [SKIP][75] ([i915#3282]) +2 other tests skip [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-7/igt@gem_partial_pwrite_pread@writes-after-reads-display.html * igt@gem_pread@snoop: - shard-dg1: NOTRUN -> [SKIP][76] ([i915#3282]) [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@gem_pread@snoop.html * igt@gem_pxp@create-protected-buffer: - shard-tglu: NOTRUN -> [SKIP][77] ([i915#4270]) [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-2/igt@gem_pxp@create-protected-buffer.html * igt@gem_pxp@create-valid-protected-context: - shard-mtlp: NOTRUN -> [SKIP][78] ([i915#4270]) +3 other tests skip [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@gem_pxp@create-valid-protected-context.html * igt@gem_pxp@display-protected-crc: - shard-dg2: NOTRUN -> [SKIP][79] ([i915#4270]) +4 other tests skip [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@gem_pxp@display-protected-crc.html - shard-dg1: NOTRUN -> [SKIP][80] ([i915#4270]) +1 other test skip [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-15/igt@gem_pxp@display-protected-crc.html * igt@gem_pxp@regular-baseline-src-copy-readible: - shard-rkl: NOTRUN -> [SKIP][81] ([i915#4270]) [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@gem_pxp@regular-baseline-src-copy-readible.html * igt@gem_render_copy@linear-to-vebox-y-tiled: - shard-mtlp: NOTRUN -> [SKIP][82] ([i915#8428]) +9 other tests skip [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-7/igt@gem_render_copy@linear-to-vebox-y-tiled.html * igt@gem_render_copy@x-tiled@smem: - shard-glk: [PASS][83] -> [DMESG-WARN][84] ([i915#118]) +1 other test dmesg-warn [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-glk2/igt@gem_render_copy@x-tiled@smem.html [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-glk7/igt@gem_render_copy@x-tiled@smem.html * igt@gem_set_tiling_vs_gtt: - shard-dg1: NOTRUN -> [SKIP][85] ([i915#4079]) [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@gem_set_tiling_vs_gtt.html - shard-dg2: NOTRUN -> [SKIP][86] ([i915#4079]) +1 other test skip [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@gem_set_tiling_vs_gtt.html * igt@gem_softpin@evict-snoop-interruptible: - shard-mtlp: NOTRUN -> [SKIP][87] ([i915#4885]) [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-8/igt@gem_softpin@evict-snoop-interruptible.html * igt@gem_tiled_pread_basic: - shard-mtlp: NOTRUN -> [SKIP][88] ([i915#4079]) +2 other tests skip [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-6/igt@gem_tiled_pread_basic.html * igt@gem_userptr_blits@mmap-offset-banned@gtt: - shard-mtlp: NOTRUN -> [SKIP][89] ([i915#3297]) +3 other tests skip [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@gem_userptr_blits@mmap-offset-banned@gtt.html * igt@gem_userptr_blits@unsync-overlap: - shard-dg2: NOTRUN -> [SKIP][90] ([i915#3297]) +4 other tests skip [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@gem_userptr_blits@unsync-overlap.html * igt@gem_userptr_blits@vma-merge: - shard-dg2: NOTRUN -> [FAIL][91] ([i915#3318]) [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@gem_userptr_blits@vma-merge.html - shard-tglu: NOTRUN -> [FAIL][92] ([i915#3318]) [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-4/igt@gem_userptr_blits@vma-merge.html - shard-mtlp: NOTRUN -> [FAIL][93] ([i915#3318]) [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-7/igt@gem_userptr_blits@vma-merge.html * igt@gen3_render_tiledy_blits: - shard-mtlp: NOTRUN -> [SKIP][94] ([fdo#109289]) +6 other tests skip [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-3/igt@gen3_render_tiledy_blits.html * igt@gen7_exec_parse@basic-allocation: - shard-rkl: NOTRUN -> [SKIP][95] ([fdo#109289]) [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@gen7_exec_parse@basic-allocation.html * igt@gen7_exec_parse@basic-rejected: - shard-dg1: NOTRUN -> [SKIP][96] ([fdo#109289]) [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-13/igt@gen7_exec_parse@basic-rejected.html * igt@gen9_exec_parse@basic-rejected: - shard-dg1: NOTRUN -> [SKIP][97] ([i915#2527]) [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-16/igt@gen9_exec_parse@basic-rejected.html * igt@gen9_exec_parse@basic-rejected-ctx-param: - shard-snb: NOTRUN -> [SKIP][98] ([fdo#109271]) +149 other tests skip [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-snb6/igt@gen9_exec_parse@basic-rejected-ctx-param.html * igt@gen9_exec_parse@bb-large: - shard-mtlp: NOTRUN -> [SKIP][99] ([i915#2856]) +2 other tests skip [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@gen9_exec_parse@bb-large.html * igt@gen9_exec_parse@bb-start-far: - shard-dg2: NOTRUN -> [SKIP][100] ([i915#2856]) +3 other tests skip [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@gen9_exec_parse@bb-start-far.html * igt@gen9_exec_parse@bb-start-param: - shard-rkl: NOTRUN -> [SKIP][101] ([i915#2527]) [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-1/igt@gen9_exec_parse@bb-start-param.html * igt@i915_pm_rpm@dpms-mode-unset-lpsp: - shard-rkl: NOTRUN -> [SKIP][102] ([i915#1397]) [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-6/igt@i915_pm_rpm@dpms-mode-unset-lpsp.html * igt@i915_pm_rpm@modeset-lpsp: - shard-dg2: NOTRUN -> [SKIP][103] ([i915#1397]) [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@i915_pm_rpm@modeset-lpsp.html * igt@i915_pm_rpm@modeset-lpsp-stress: - shard-dg1: [PASS][104] -> [SKIP][105] ([i915#1397]) [104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-19/igt@i915_pm_rpm@modeset-lpsp-stress.html [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-18/igt@i915_pm_rpm@modeset-lpsp-stress.html * igt@i915_pm_rpm@modeset-non-lpsp: - shard-rkl: [PASS][106] -> [SKIP][107] ([i915#1397]) [106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-3/igt@i915_pm_rpm@modeset-non-lpsp.html [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@i915_pm_rpm@modeset-non-lpsp.html * igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait: - shard-mtlp: NOTRUN -> [SKIP][108] ([i915#1397]) [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait.html * igt@i915_pm_rpm@modeset-pc8-residency-stress: - shard-mtlp: NOTRUN -> [SKIP][109] ([fdo#109293]) [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-3/igt@i915_pm_rpm@modeset-pc8-residency-stress.html * igt@i915_pm_rps@thresholds-idle-park@gt0: - shard-mtlp: NOTRUN -> [SKIP][110] ([i915#8925]) +1 other test skip [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@i915_pm_rps@thresholds-idle-park@gt0.html * igt@i915_pm_rps@thresholds-idle@gt0: - shard-dg2: NOTRUN -> [SKIP][111] ([i915#8925]) +1 other test skip [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@i915_pm_rps@thresholds-idle@gt0.html * igt@i915_query@hwconfig_table: - shard-dg1: NOTRUN -> [SKIP][112] ([i915#6245]) [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-13/igt@i915_query@hwconfig_table.html * igt@i915_suspend@basic-s3-without-i915: - shard-dg2: [PASS][113] -> [INCOMPLETE][114] ([i915#4817] / [i915#9136]) [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg2-7/igt@i915_suspend@basic-s3-without-i915.html [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-5/igt@i915_suspend@basic-s3-without-i915.html * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling: - shard-mtlp: NOTRUN -> [SKIP][115] ([i915#4212]) +1 other test skip [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html * igt@kms_addfb_basic@basic-x-tiled-legacy: - shard-dg2: NOTRUN -> [SKIP][116] ([i915#4212]) +1 other test skip [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_addfb_basic@basic-x-tiled-legacy.html * igt@kms_addfb_basic@invalid-smem-bo-on-discrete: - shard-tglu: NOTRUN -> [SKIP][117] ([i915#3826]) [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-2/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html - shard-mtlp: NOTRUN -> [SKIP][118] ([i915#3826]) [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-4-y-rc_ccs: - shard-dg1: NOTRUN -> [SKIP][119] ([i915#8502]) +7 other tests skip [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-17/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-4-y-rc_ccs.html * igt@kms_async_flips@crc@pipe-c-hdmi-a-1: - shard-dg1: NOTRUN -> [FAIL][120] ([i915#8247]) +3 other tests fail [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-19/igt@kms_async_flips@crc@pipe-c-hdmi-a-1.html * igt@kms_async_flips@crc@pipe-d-dp-4: - shard-dg2: NOTRUN -> [FAIL][121] ([i915#8247]) +3 other tests fail [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_async_flips@crc@pipe-d-dp-4.html * igt@kms_async_flips@invalid-async-flip: - shard-dg2: NOTRUN -> [SKIP][122] ([i915#6228]) [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_async_flips@invalid-async-flip.html - shard-mtlp: NOTRUN -> [SKIP][123] ([i915#6228]) [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@kms_async_flips@invalid-async-flip.html * igt@kms_async_flips@test-cursor: - shard-mtlp: NOTRUN -> [SKIP][124] ([i915#6229]) [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-8/igt@kms_async_flips@test-cursor.html * igt@kms_big_fb@4-tiled-16bpp-rotate-90: - shard-dg2: NOTRUN -> [SKIP][125] ([fdo#111614]) +4 other tests skip [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-3/igt@kms_big_fb@4-tiled-16bpp-rotate-90.html * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip: - shard-dg1: NOTRUN -> [SKIP][126] ([i915#4538] / [i915#5286]) +2 other tests skip [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-18/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip: - shard-mtlp: [PASS][127] -> [FAIL][128] ([i915#5138]) +1 other test fail [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180: - shard-rkl: NOTRUN -> [SKIP][129] ([i915#5286]) +1 other test skip [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180.html * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip: - shard-tglu: NOTRUN -> [SKIP][130] ([fdo#111615] / [i915#5286]) +1 other test skip [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html - shard-mtlp: NOTRUN -> [FAIL][131] ([i915#5138]) [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html * igt@kms_big_fb@x-tiled-32bpp-rotate-90: - shard-dg1: NOTRUN -> [SKIP][132] ([i915#3638]) [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html * igt@kms_big_fb@x-tiled-8bpp-rotate-270: - shard-mtlp: NOTRUN -> [SKIP][133] ([fdo#111614]) +5 other tests skip [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html - shard-rkl: NOTRUN -> [SKIP][134] ([fdo#111614] / [i915#3638]) [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html * igt@kms_big_fb@y-tiled-addfb-size-overflow: - shard-mtlp: NOTRUN -> [SKIP][135] ([i915#6187]) +2 other tests skip [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_big_fb@y-tiled-addfb-size-overflow.html * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip: - shard-mtlp: NOTRUN -> [SKIP][136] ([fdo#111615]) +17 other tests skip [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip: - shard-dg2: NOTRUN -> [SKIP][137] ([i915#5190]) +11 other tests skip [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html * igt@kms_big_fb@yf-tiled-16bpp-rotate-180: - shard-dg1: NOTRUN -> [SKIP][138] ([i915#4538]) +2 other tests skip [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-19/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html * igt@kms_big_fb@yf-tiled-32bpp-rotate-180: - shard-dg2: NOTRUN -> [SKIP][139] ([i915#4538] / [i915#5190]) +7 other tests skip [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html - shard-rkl: NOTRUN -> [SKIP][140] ([fdo#110723]) +1 other test skip [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html * igt@kms_big_fb@yf-tiled-addfb: - shard-dg1: NOTRUN -> [SKIP][141] ([fdo#111615]) [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-15/igt@kms_big_fb@yf-tiled-addfb.html * igt@kms_big_fb@yf-tiled-addfb-size-overflow: - shard-rkl: NOTRUN -> [SKIP][142] ([fdo#111615]) [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0: - shard-tglu: NOTRUN -> [SKIP][143] ([fdo#111615]) +1 other test skip [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0.html * igt@kms_big_joiner@basic: - shard-mtlp: NOTRUN -> [SKIP][144] ([i915#2705]) [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@kms_big_joiner@basic.html * igt@kms_big_joiner@invalid-modeset: - shard-dg2: NOTRUN -> [SKIP][145] ([i915#2705]) [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@kms_big_joiner@invalid-modeset.html - shard-rkl: NOTRUN -> [SKIP][146] ([i915#2705]) [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-4/igt@kms_big_joiner@invalid-modeset.html * igt@kms_ccs@pipe-a-bad-aux-stride-y_tiled_gen12_mc_ccs: - shard-dg1: NOTRUN -> [SKIP][147] ([i915#3689] / [i915#3886] / [i915#5354] / [i915#6095]) +1 other test skip [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-19/igt@kms_ccs@pipe-a-bad-aux-stride-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs: - shard-mtlp: NOTRUN -> [SKIP][148] ([i915#3886] / [i915#6095]) +8 other tests skip [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_mc_ccs: - shard-rkl: NOTRUN -> [SKIP][149] ([i915#3886] / [i915#5354] / [i915#6095]) [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-6/igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs: - shard-mtlp: NOTRUN -> [SKIP][150] ([i915#6095]) +43 other tests skip [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs.html * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc: - shard-mtlp: NOTRUN -> [SKIP][151] ([i915#3886] / [i915#5354] / [i915#6095]) [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc.html * igt@kms_ccs@pipe-b-bad-pixel-format-4_tiled_dg2_rc_ccs_cc: - shard-tglu: NOTRUN -> [SKIP][152] ([i915#3689] / [i915#5354] / [i915#6095]) +4 other tests skip [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-8/igt@kms_ccs@pipe-b-bad-pixel-format-4_tiled_dg2_rc_ccs_cc.html * igt@kms_ccs@pipe-b-bad-pixel-format-y_tiled_gen12_mc_ccs: - shard-glk: NOTRUN -> [SKIP][153] ([fdo#109271] / [i915#3886]) [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-glk1/igt@kms_ccs@pipe-b-bad-pixel-format-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-b-ccs-on-another-bo-4_tiled_mtl_mc_ccs: - shard-tglu: NOTRUN -> [SKIP][154] ([i915#5354] / [i915#6095]) +3 other tests skip [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-4/igt@kms_ccs@pipe-b-ccs-on-another-bo-4_tiled_mtl_mc_ccs.html * igt@kms_ccs@pipe-b-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc: - shard-rkl: NOTRUN -> [SKIP][155] ([i915#5354] / [i915#6095]) +2 other tests skip [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@kms_ccs@pipe-b-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc.html * igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc: - shard-dg2: NOTRUN -> [SKIP][156] ([i915#3689] / [i915#3886] / [i915#5354]) +9 other tests skip [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-3/igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc.html * igt@kms_ccs@pipe-c-bad-pixel-format-yf_tiled_ccs: - shard-tglu: NOTRUN -> [SKIP][157] ([fdo#111615] / [i915#3689] / [i915#5354] / [i915#6095]) +2 other tests skip [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-9/igt@kms_ccs@pipe-c-bad-pixel-format-yf_tiled_ccs.html * igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_ccs: - shard-glk: NOTRUN -> [SKIP][158] ([fdo#109271]) +10 other tests skip [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-glk7/igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_ccs.html * igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_gen12_mc_ccs: - shard-tglu: NOTRUN -> [SKIP][159] ([i915#3689] / [i915#3886] / [i915#5354] / [i915#6095]) [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-5/igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_gen12_mc_ccs.html * igt@kms_ccs@pipe-d-crc-primary-basic-y_tiled_gen12_rc_ccs: - shard-dg2: NOTRUN -> [SKIP][160] ([i915#3689] / [i915#5354]) +20 other tests skip [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-3/igt@kms_ccs@pipe-d-crc-primary-basic-y_tiled_gen12_rc_ccs.html * igt@kms_ccs@pipe-d-crc-primary-rotation-180-4_tiled_mtl_mc_ccs: - shard-dg1: NOTRUN -> [SKIP][161] ([i915#5354] / [i915#6095]) +6 other tests skip [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-17/igt@kms_ccs@pipe-d-crc-primary-rotation-180-4_tiled_mtl_mc_ccs.html * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs: - shard-rkl: NOTRUN -> [SKIP][162] ([i915#5354]) +7 other tests skip [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-1/igt@kms_ccs@pipe-d-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs.html * igt@kms_ccs@pipe-d-random-ccs-data-yf_tiled_ccs: - shard-dg1: NOTRUN -> [SKIP][163] ([i915#3689] / [i915#5354] / [i915#6095]) +6 other tests skip [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-17/igt@kms_ccs@pipe-d-random-ccs-data-yf_tiled_ccs.html * igt@kms_cdclk@mode-transition@pipe-b-edp-1: - shard-mtlp: NOTRUN -> [SKIP][164] ([i915#7213] / [i915#9010]) +3 other tests skip [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-3/igt@kms_cdclk@mode-transition@pipe-b-edp-1.html * igt@kms_cdclk@plane-scaling: - shard-dg1: NOTRUN -> [SKIP][165] ([i915#3742]) [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@kms_cdclk@plane-scaling.html * igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3: - shard-dg2: NOTRUN -> [SKIP][166] ([i915#4087]) +3 other tests skip [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3.html * igt@kms_chamelium_color@ctm-0-50: - shard-tglu: NOTRUN -> [SKIP][167] ([fdo#111827]) [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-8/igt@kms_chamelium_color@ctm-0-50.html * igt@kms_chamelium_color@ctm-blue-to-red: - shard-mtlp: NOTRUN -> [SKIP][168] ([fdo#111827]) +2 other tests skip [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@kms_chamelium_color@ctm-blue-to-red.html * igt@kms_chamelium_color@gamma: - shard-dg2: NOTRUN -> [SKIP][169] ([fdo#111827]) +1 other test skip [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_chamelium_color@gamma.html * igt@kms_chamelium_frames@dp-crc-single: - shard-dg1: NOTRUN -> [SKIP][170] ([i915#7828]) +3 other tests skip [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-19/igt@kms_chamelium_frames@dp-crc-single.html * igt@kms_chamelium_frames@hdmi-cmp-planar-formats: - shard-dg2: NOTRUN -> [SKIP][171] ([i915#7828]) +11 other tests skip [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-5/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html * igt@kms_chamelium_frames@vga-frame-dump: - shard-tglu: NOTRUN -> [SKIP][172] ([i915#7828]) [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-9/igt@kms_chamelium_frames@vga-frame-dump.html * igt@kms_chamelium_hpd@dp-hpd-after-suspend: - shard-rkl: NOTRUN -> [SKIP][173] ([i915#7828]) +2 other tests skip [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html * igt@kms_chamelium_hpd@dp-hpd-for-each-pipe: - shard-mtlp: NOTRUN -> [SKIP][174] ([i915#7828]) +11 other tests skip [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html * igt@kms_color@deep-color: - shard-tglu: NOTRUN -> [SKIP][175] ([i915#3555]) +2 other tests skip [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-9/igt@kms_color@deep-color.html * igt@kms_content_protection@atomic-dpms: - shard-rkl: NOTRUN -> [SKIP][176] ([i915#7118]) [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_content_protection@atomic-dpms.html * igt@kms_content_protection@dp-mst-type-0: - shard-dg2: NOTRUN -> [SKIP][177] ([i915#3299]) [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@kms_content_protection@dp-mst-type-0.html - shard-dg1: NOTRUN -> [SKIP][178] ([i915#3299]) [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-15/igt@kms_content_protection@dp-mst-type-0.html * igt@kms_content_protection@legacy: - shard-dg1: NOTRUN -> [SKIP][179] ([i915#7116]) [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-18/igt@kms_content_protection@legacy.html * igt@kms_content_protection@legacy@pipe-a-dp-4: - shard-dg2: NOTRUN -> [TIMEOUT][180] ([i915#7173]) +1 other test timeout [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_content_protection@legacy@pipe-a-dp-4.html * igt@kms_content_protection@lic: - shard-dg2: NOTRUN -> [SKIP][181] ([i915#7118]) [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@kms_content_protection@lic.html * igt@kms_content_protection@uevent: - shard-mtlp: NOTRUN -> [SKIP][182] ([i915#6944]) +1 other test skip [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@kms_content_protection@uevent.html * igt@kms_content_protection@uevent@pipe-a-dp-4: - shard-dg2: NOTRUN -> [FAIL][183] ([i915#1339]) [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_content_protection@uevent@pipe-a-dp-4.html * igt@kms_cursor_crc@cursor-onscreen-512x512: - shard-dg1: NOTRUN -> [SKIP][184] ([i915#3359]) [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-15/igt@kms_cursor_crc@cursor-onscreen-512x512.html * igt@kms_cursor_crc@cursor-random-512x170: - shard-tglu: NOTRUN -> [SKIP][185] ([i915#3359]) [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-6/igt@kms_cursor_crc@cursor-random-512x170.html * igt@kms_cursor_crc@cursor-random-512x512: - shard-dg2: NOTRUN -> [SKIP][186] ([i915#3359]) +2 other tests skip [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@kms_cursor_crc@cursor-random-512x512.html - shard-mtlp: NOTRUN -> [SKIP][187] ([i915#3359]) [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_cursor_crc@cursor-random-512x512.html * igt@kms_cursor_crc@cursor-sliding-32x10: - shard-dg2: NOTRUN -> [SKIP][188] ([i915#3555]) +8 other tests skip [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@kms_cursor_crc@cursor-sliding-32x10.html - shard-dg1: NOTRUN -> [SKIP][189] ([i915#3555]) +6 other tests skip [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@kms_cursor_crc@cursor-sliding-32x10.html - shard-mtlp: NOTRUN -> [SKIP][190] ([i915#3555] / [i915#8814]) +2 other tests skip [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-3/igt@kms_cursor_crc@cursor-sliding-32x10.html * igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1: - shard-snb: NOTRUN -> [DMESG-WARN][191] ([i915#8841]) +1 other test dmesg-warn [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-snb1/igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1.html * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic: - shard-mtlp: NOTRUN -> [SKIP][192] ([i915#3546]) +6 other tests skip [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy: - shard-tglu: NOTRUN -> [SKIP][193] ([fdo#109274]) [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-2/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size: - shard-mtlp: NOTRUN -> [SKIP][194] ([i915#4213]) [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html * igt@kms_cursor_legacy@cursor-vs-flip-legacy: - shard-snb: NOTRUN -> [ABORT][195] ([i915#8865]) [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-snb7/igt@kms_cursor_legacy@cursor-vs-flip-legacy.html * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic: - shard-dg2: NOTRUN -> [SKIP][196] ([fdo#109274] / [i915#5354]) +5 other tests skip [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html * igt@kms_cursor_legacy@cursorb-vs-flipb-toggle: - shard-mtlp: NOTRUN -> [SKIP][197] ([fdo#111767] / [i915#3546]) [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-7/igt@kms_cursor_legacy@cursorb-vs-flipb-toggle.html * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions: - shard-dg2: NOTRUN -> [SKIP][198] ([i915#4103] / [i915#4213]) [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html * igt@kms_dirtyfb@dirtyfb-ioctl@drrs-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][199] ([i915#9226] / [i915#9261]) +1 other test skip [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-1/igt@kms_dirtyfb@dirtyfb-ioctl@drrs-hdmi-a-2.html * igt@kms_dirtyfb@dirtyfb-ioctl@fbc-hdmi-a-1: - shard-dg1: NOTRUN -> [SKIP][200] ([i915#9227]) [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-19/igt@kms_dirtyfb@dirtyfb-ioctl@fbc-hdmi-a-1.html * igt@kms_dirtyfb@dirtyfb-ioctl@fbc-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][201] ([i915#9227]) [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-1/igt@kms_dirtyfb@dirtyfb-ioctl@fbc-hdmi-a-2.html * igt@kms_dirtyfb@dirtyfb-ioctl@psr-hdmi-a-1: - shard-dg1: NOTRUN -> [SKIP][202] ([i915#9226] / [i915#9261]) +1 other test skip [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-19/igt@kms_dirtyfb@dirtyfb-ioctl@psr-hdmi-a-1.html * igt@kms_display_modes@extended-mode-basic: - shard-mtlp: NOTRUN -> [SKIP][203] ([i915#3555] / [i915#8827]) [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-8/igt@kms_display_modes@extended-mode-basic.html * igt@kms_dsc@dsc-basic: - shard-mtlp: NOTRUN -> [SKIP][204] ([i915#3555] / [i915#3840] / [i915#9159]) [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@kms_dsc@dsc-basic.html * igt@kms_dsc@dsc-with-bpc: - shard-dg2: NOTRUN -> [SKIP][205] ([i915#3555] / [i915#3840]) [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-5/igt@kms_dsc@dsc-with-bpc.html * igt@kms_dsc@dsc-with-bpc-formats: - shard-mtlp: NOTRUN -> [SKIP][206] ([i915#3555] / [i915#3840]) +1 other test skip [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@kms_dsc@dsc-with-bpc-formats.html * igt@kms_fbcon_fbt@psr: - shard-rkl: NOTRUN -> [SKIP][207] ([fdo#110189] / [i915#3955]) [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-1/igt@kms_fbcon_fbt@psr.html * igt@kms_flip@2x-absolute-wf_vblank: - shard-dg2: NOTRUN -> [SKIP][208] ([fdo#109274]) +6 other tests skip [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_flip@2x-absolute-wf_vblank.html * igt@kms_flip@2x-flip-vs-expired-vblank@ac-hdmi-a1-hdmi-a2: - shard-glk: [PASS][209] -> [FAIL][210] ([i915#79]) [209]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-glk3/igt@kms_flip@2x-flip-vs-expired-vblank@ac-hdmi-a1-hdmi-a2.html [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank@ac-hdmi-a1-hdmi-a2.html * igt@kms_flip@2x-flip-vs-fences: - shard-dg2: NOTRUN -> [SKIP][211] ([i915#8381]) [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-7/igt@kms_flip@2x-flip-vs-fences.html - shard-mtlp: NOTRUN -> [SKIP][212] ([i915#8381]) [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-8/igt@kms_flip@2x-flip-vs-fences.html * igt@kms_flip@2x-flip-vs-panning: - shard-rkl: NOTRUN -> [SKIP][213] ([fdo#111825]) +2 other tests skip [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_flip@2x-flip-vs-panning.html * igt@kms_flip@2x-flip-vs-rmfb-interruptible: - shard-snb: NOTRUN -> [SKIP][214] ([fdo#109271] / [fdo#111767]) [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-snb2/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html * igt@kms_flip@2x-plain-flip: - shard-mtlp: NOTRUN -> [SKIP][215] ([i915#3637]) +7 other tests skip [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-8/igt@kms_flip@2x-plain-flip.html * igt@kms_flip@2x-plain-flip-fb-recreate: - shard-tglu: NOTRUN -> [SKIP][216] ([fdo#109274] / [i915#3637]) +2 other tests skip [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-8/igt@kms_flip@2x-plain-flip-fb-recreate.html * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-valid-mode: - shard-rkl: NOTRUN -> [SKIP][217] ([i915#2672]) +1 other test skip [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-default-mode: - shard-mtlp: NOTRUN -> [SKIP][218] ([i915#2672]) +4 other tests skip [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-default-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode: - shard-mtlp: NOTRUN -> [SKIP][219] ([i915#3555] / [i915#8810]) [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode: - shard-dg2: NOTRUN -> [SKIP][220] ([i915#2672]) +4 other tests skip [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode: - shard-mtlp: NOTRUN -> [SKIP][221] ([i915#2672] / [i915#3555]) [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt: - shard-rkl: NOTRUN -> [SKIP][222] ([fdo#111825] / [i915#1825]) +7 other tests skip [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-gtt: - shard-tglu: NOTRUN -> [SKIP][223] ([fdo#109280]) +10 other tests skip [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-gtt.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt: - shard-dg2: NOTRUN -> [SKIP][224] ([i915#3458]) +23 other tests skip [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte: - shard-dg1: NOTRUN -> [SKIP][225] ([i915#3458]) +5 other tests skip [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt: - shard-rkl: NOTRUN -> [SKIP][226] ([i915#3023]) +6 other tests skip [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt.html * igt@kms_frontbuffer_tracking@fbcpsr-tiling-4: - shard-tglu: NOTRUN -> [SKIP][227] ([i915#5439]) [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-10/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu: - shard-tglu: NOTRUN -> [SKIP][228] ([fdo#110189]) +9 other tests skip [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-10/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu.html * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render: - shard-dg2: NOTRUN -> [SKIP][229] ([i915#5354]) +50 other tests skip [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move: - shard-dg1: NOTRUN -> [SKIP][230] ([fdo#111825]) +8 other tests skip [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move.html * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render: - shard-mtlp: NOTRUN -> [SKIP][231] ([i915#1825]) +40 other tests skip [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html * igt@kms_hdr@bpc-switch-dpms: - shard-rkl: NOTRUN -> [SKIP][232] ([i915#3555] / [i915#8228]) [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@kms_hdr@bpc-switch-dpms.html * igt@kms_hdr@bpc-switch-suspend: - shard-tglu: NOTRUN -> [SKIP][233] ([i915#3555] / [i915#8228]) [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-2/igt@kms_hdr@bpc-switch-suspend.html - shard-mtlp: NOTRUN -> [SKIP][234] ([i915#3555] / [i915#8228]) +2 other tests skip [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@kms_hdr@bpc-switch-suspend.html * igt@kms_hdr@static-toggle: - shard-dg2: NOTRUN -> [SKIP][235] ([i915#3555] / [i915#8228]) +2 other tests skip [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-5/igt@kms_hdr@static-toggle.html * igt@kms_pipe_b_c_ivb@disable-pipe-b-enable-pipe-c: - shard-dg2: NOTRUN -> [SKIP][236] ([fdo#109289]) +2 other tests skip [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-3/igt@kms_pipe_b_c_ivb@disable-pipe-b-enable-pipe-c.html * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a-planes: - shard-mtlp: [PASS][237] -> [ABORT][238] ([i915#9262]) +1 other test abort [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-4/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a-planes.html [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a-planes.html * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes: - shard-mtlp: [PASS][239] -> [DMESG-WARN][240] ([i915#9262]) [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-4/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes.html [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes.html * igt@kms_plane_multiple@tiling-y: - shard-dg2: NOTRUN -> [SKIP][241] ([i915#8806]) [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@kms_plane_multiple@tiling-y.html * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4: - shard-dg1: NOTRUN -> [FAIL][242] ([i915#8292]) [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-17/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4.html * igt@kms_plane_scaling@plane-downscale-with-modifiers-factor-0-25@pipe-a-hdmi-a-3: - shard-dg1: NOTRUN -> [SKIP][243] ([i915#5176]) +19 other tests skip [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-13/igt@kms_plane_scaling@plane-downscale-with-modifiers-factor-0-25@pipe-a-hdmi-a-3.html * igt@kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-25@pipe-c-hdmi-a-2: - shard-dg2: NOTRUN -> [SKIP][244] ([i915#5176]) +3 other tests skip [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-with-pixel-format-factor-0-25@pipe-c-hdmi-a-2.html * igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-75@pipe-a-hdmi-a-1: - shard-rkl: NOTRUN -> [SKIP][245] ([i915#5176]) +7 other tests skip [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-75@pipe-a-hdmi-a-1.html * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-c-edp-1: - shard-mtlp: NOTRUN -> [SKIP][246] ([i915#5235]) +11 other tests skip [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-c-edp-1.html * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-3: - shard-dg2: NOTRUN -> [SKIP][247] ([i915#5235]) +15 other tests skip [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-3/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-a-hdmi-a-3.html * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b-hdmi-a-2: - shard-rkl: NOTRUN -> [SKIP][248] ([i915#5235]) +3 other tests skip [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-4/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b-hdmi-a-2.html * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d-hdmi-a-4: - shard-dg1: NOTRUN -> [SKIP][249] ([i915#5235]) +19 other tests skip [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-16/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d-hdmi-a-4.html * igt@kms_prime@d3hot: - shard-mtlp: NOTRUN -> [SKIP][250] ([i915#6524]) [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-3/igt@kms_prime@d3hot.html * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb: - shard-dg2: NOTRUN -> [SKIP][251] ([i915#658]) +3 other tests skip [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html - shard-dg1: NOTRUN -> [SKIP][252] ([i915#658]) [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-16/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html * igt@kms_psr@cursor_blt: - shard-dg1: NOTRUN -> [SKIP][253] ([i915#1072]) [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-13/igt@kms_psr@cursor_blt.html * igt@kms_psr@primary_blt: - shard-dg2: NOTRUN -> [SKIP][254] ([i915#1072]) +4 other tests skip [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-5/igt@kms_psr@primary_blt.html * igt@kms_psr@psr2_dpms: - shard-rkl: NOTRUN -> [SKIP][255] ([i915#1072]) [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@kms_psr@psr2_dpms.html * igt@kms_psr_stress_test@invalidate-primary-flip-overlay: - shard-dg2: NOTRUN -> [SKIP][256] ([i915#5461] / [i915#658]) [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html * igt@kms_rotation_crc@exhaust-fences: - shard-dg2: NOTRUN -> [SKIP][257] ([i915#4235]) [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-6/igt@kms_rotation_crc@exhaust-fences.html - shard-dg1: NOTRUN -> [SKIP][258] ([i915#4884]) [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@kms_rotation_crc@exhaust-fences.html * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180: - shard-tglu: NOTRUN -> [SKIP][259] ([i915#5289]) [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-9/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90: - shard-dg2: NOTRUN -> [SKIP][260] ([i915#4235] / [i915#5190]) [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html - shard-rkl: NOTRUN -> [SKIP][261] ([fdo#111615] / [i915#5289]) [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html - shard-tglu: NOTRUN -> [SKIP][262] ([fdo#111615] / [i915#5289]) [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-3/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html * igt@kms_rotation_crc@sprite-rotation-90: - shard-mtlp: NOTRUN -> [SKIP][263] ([i915#4235]) +2 other tests skip [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_rotation_crc@sprite-rotation-90.html * igt@kms_selftest@drm_damage: - shard-dg2: NOTRUN -> [SKIP][264] ([i915#8661]) +3 other tests skip [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@kms_selftest@drm_damage.html * igt@kms_selftest@drm_dp_mst: - shard-mtlp: NOTRUN -> [SKIP][265] ([i915#8661]) +1 other test skip [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@kms_selftest@drm_dp_mst.html - shard-rkl: NOTRUN -> [SKIP][266] ([i915#8661]) +1 other test skip [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_selftest@drm_dp_mst.html * igt@kms_selftest@framebuffer: - shard-snb: NOTRUN -> [SKIP][267] ([fdo#109271] / [i915#8661]) [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-snb1/igt@kms_selftest@framebuffer.html * igt@kms_setmode@invalid-clone-exclusive-crtc: - shard-mtlp: NOTRUN -> [SKIP][268] ([i915#3555] / [i915#8823]) [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@kms_setmode@invalid-clone-exclusive-crtc.html * igt@kms_universal_plane@cursor-fb-leak-pipe-b: - shard-rkl: [PASS][269] -> [FAIL][270] ([i915#9196]) [269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-2/igt@kms_universal_plane@cursor-fb-leak-pipe-b.html [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-4/igt@kms_universal_plane@cursor-fb-leak-pipe-b.html - shard-snb: [PASS][271] -> [FAIL][272] ([i915#9196]) [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-snb2/igt@kms_universal_plane@cursor-fb-leak-pipe-b.html [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-snb4/igt@kms_universal_plane@cursor-fb-leak-pipe-b.html * igt@kms_vblank@pipe-c-wait-forked-busy: - shard-rkl: NOTRUN -> [SKIP][273] ([i915#4070] / [i915#6768]) +1 other test skip [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-1/igt@kms_vblank@pipe-c-wait-forked-busy.html * igt@kms_vblank@pipe-d-query-forked-busy: - shard-rkl: NOTRUN -> [SKIP][274] ([i915#4070] / [i915#533] / [i915#6768]) +2 other tests skip [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-6/igt@kms_vblank@pipe-d-query-forked-busy.html * igt@kms_writeback@writeback-invalid-parameters: - shard-mtlp: NOTRUN -> [SKIP][275] ([i915#2437]) [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@kms_writeback@writeback-invalid-parameters.html * igt@perf@gen12-oa-tlb-invalidate: - shard-apl: NOTRUN -> [SKIP][276] ([fdo#109271]) +13 other tests skip [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-apl3/igt@perf@gen12-oa-tlb-invalidate.html * igt@perf@global-sseu-config-invalid: - shard-dg2: NOTRUN -> [SKIP][277] ([i915#7387]) [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@perf@global-sseu-config-invalid.html * igt@perf@non-zero-reason@0-rcs0: - shard-dg2: NOTRUN -> [FAIL][278] ([i915#7484]) [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@perf@non-zero-reason@0-rcs0.html * igt@perf_pmu@cpu-hotplug: - shard-mtlp: NOTRUN -> [SKIP][279] ([i915#8850]) [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-3/igt@perf_pmu@cpu-hotplug.html * igt@perf_pmu@module-unload: - shard-dg2: NOTRUN -> [FAIL][280] ([i915#5793]) [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-3/igt@perf_pmu@module-unload.html * igt@perf_pmu@most-busy-idle-check-all@rcs0: - shard-dg2: NOTRUN -> [FAIL][281] ([i915#5234]) [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-7/igt@perf_pmu@most-busy-idle-check-all@rcs0.html - shard-dg1: [PASS][282] -> [FAIL][283] ([i915#5234]) [282]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-18/igt@perf_pmu@most-busy-idle-check-all@rcs0.html [283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-13/igt@perf_pmu@most-busy-idle-check-all@rcs0.html * igt@perf_pmu@rc6-all-gts: - shard-rkl: NOTRUN -> [SKIP][284] ([i915#8516]) [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@perf_pmu@rc6-all-gts.html * igt@perf_pmu@rc6-suspend: - shard-mtlp: NOTRUN -> [ABORT][285] ([i915#9262] / [i915#9268]) [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@perf_pmu@rc6-suspend.html * igt@perf_pmu@render-node-busy-idle@bcs0: - shard-mtlp: NOTRUN -> [FAIL][286] ([i915#4349]) [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@perf_pmu@render-node-busy-idle@bcs0.html * igt@prime_udl: - shard-dg2: NOTRUN -> [SKIP][287] ([fdo#109291]) [287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@prime_udl.html * igt@prime_vgem@basic-gtt: - shard-dg2: NOTRUN -> [SKIP][288] ([i915#3708] / [i915#4077]) [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@prime_vgem@basic-gtt.html * igt@prime_vgem@basic-read: - shard-mtlp: NOTRUN -> [SKIP][289] ([i915#3708]) [289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-7/igt@prime_vgem@basic-read.html * igt@prime_vgem@coherency-blt: - shard-mtlp: NOTRUN -> [FAIL][290] ([i915#8445]) [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-3/igt@prime_vgem@coherency-blt.html * igt@prime_vgem@coherency-gtt: - shard-mtlp: NOTRUN -> [SKIP][291] ([i915#3708] / [i915#4077]) [291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-5/igt@prime_vgem@coherency-gtt.html * igt@prime_vgem@fence-flip-hang: - shard-tglu: NOTRUN -> [SKIP][292] ([fdo#109295]) [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-10/igt@prime_vgem@fence-flip-hang.html * igt@runner@aborted: - shard-mtlp: NOTRUN -> [FAIL][293] ([i915#7812]) [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-6/igt@runner@aborted.html * igt@sysfs_preempt_timeout@timeout@vecs0: - shard-mtlp: [PASS][294] -> [TIMEOUT][295] ([i915#8521]) [294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-4/igt@sysfs_preempt_timeout@timeout@vecs0.html [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-7/igt@sysfs_preempt_timeout@timeout@vecs0.html * igt@v3d/v3d_job_submission@array-job-submission: - shard-dg2: NOTRUN -> [SKIP][296] ([i915#2575]) +16 other tests skip [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@v3d/v3d_job_submission@array-job-submission.html - shard-dg1: NOTRUN -> [SKIP][297] ([i915#2575]) +5 other tests skip [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@v3d/v3d_job_submission@array-job-submission.html * igt@v3d/v3d_perfmon@create-perfmon-0: - shard-rkl: NOTRUN -> [SKIP][298] ([fdo#109315]) +2 other tests skip [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@v3d/v3d_perfmon@create-perfmon-0.html * igt@v3d/v3d_submit_csd@bad-bo: - shard-mtlp: NOTRUN -> [SKIP][299] ([i915#2575]) +15 other tests skip [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-7/igt@v3d/v3d_submit_csd@bad-bo.html * igt@v3d/v3d_submit_csd@bad-perfmon: - shard-tglu: NOTRUN -> [SKIP][300] ([fdo#109315] / [i915#2575]) +2 other tests skip [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-8/igt@v3d/v3d_submit_csd@bad-perfmon.html * igt@vc4/vc4_label_bo@set-bad-handle: - shard-mtlp: NOTRUN -> [SKIP][301] ([i915#7711]) +10 other tests skip [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@vc4/vc4_label_bo@set-bad-handle.html * igt@vc4/vc4_mmap@mmap-bo: - shard-dg2: NOTRUN -> [SKIP][302] ([i915#7711]) +8 other tests skip [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-5/igt@vc4/vc4_mmap@mmap-bo.html - shard-tglu: NOTRUN -> [SKIP][303] ([i915#2575]) [303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-5/igt@vc4/vc4_mmap@mmap-bo.html * igt@vc4/vc4_perfmon@destroy-valid-perfmon: - shard-dg1: NOTRUN -> [SKIP][304] ([i915#7711]) +1 other test skip [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-15/igt@vc4/vc4_perfmon@destroy-valid-perfmon.html * igt@vc4/vc4_tiling@set-bad-modifier: - shard-rkl: NOTRUN -> [SKIP][305] ([i915#7711]) +1 other test skip [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-4/igt@vc4/vc4_tiling@set-bad-modifier.html #### Possible fixes #### * igt@core_hotunplug@unbind-rebind: - shard-snb: [INCOMPLETE][306] ([i915#9372]) -> [PASS][307] [306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-snb6/igt@core_hotunplug@unbind-rebind.html [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-snb2/igt@core_hotunplug@unbind-rebind.html * igt@drm_fdinfo@most-busy-idle-check-all@rcs0: - shard-rkl: [FAIL][308] ([i915#7742]) -> [PASS][309] [308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-3/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-7/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html * igt@gem_ctx_persistence@engines-hang@vcs0: - shard-mtlp: [FAIL][310] ([i915#2410]) -> [PASS][311] [310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-8/igt@gem_ctx_persistence@engines-hang@vcs0.html [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-8/igt@gem_ctx_persistence@engines-hang@vcs0.html * igt@gem_eio@hibernate: - shard-tglu: [ABORT][312] ([i915#7975] / [i915#8213] / [i915#8398]) -> [PASS][313] [312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-tglu-10/igt@gem_eio@hibernate.html [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-3/igt@gem_eio@hibernate.html * igt@gem_eio@reset-stress: - shard-dg1: [FAIL][314] ([i915#5784]) -> [PASS][315] [314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-12/igt@gem_eio@reset-stress.html [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-19/igt@gem_eio@reset-stress.html * igt@gem_exec_fair@basic-deadline: - shard-rkl: [FAIL][316] ([i915#2846]) -> [PASS][317] [316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-6/igt@gem_exec_fair@basic-deadline.html [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@gem_exec_fair@basic-deadline.html * igt@gem_exec_fair@basic-pace@vecs0: - shard-rkl: [FAIL][318] ([i915#2842]) -> [PASS][319] +1 other test pass [318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-3/igt@gem_exec_fair@basic-pace@vecs0.html [319]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@gem_exec_fair@basic-pace@vecs0.html * igt@i915_hangman@engine-engine-error@vcs0: - shard-mtlp: [FAIL][320] ([i915#7069]) -> [PASS][321] +1 other test pass [320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-7/igt@i915_hangman@engine-engine-error@vcs0.html [321]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@i915_hangman@engine-engine-error@vcs0.html * igt@i915_pm_rpm@dpms-non-lpsp: - shard-dg1: [SKIP][322] ([i915#1397]) -> [PASS][323] [322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-19/igt@i915_pm_rpm@dpms-non-lpsp.html [323]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-14/igt@i915_pm_rpm@dpms-non-lpsp.html * igt@i915_selftest@live@workarounds: - shard-dg1: [ABORT][324] ([i915#4983]) -> [PASS][325] [324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-17/igt@i915_selftest@live@workarounds.html [325]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-18/igt@i915_selftest@live@workarounds.html * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions: - shard-apl: [FAIL][326] ([i915#2346]) -> [PASS][327] [326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-apl2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html [327]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-apl4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html * igt@kms_fbcon_fbt@fbc-suspend: - shard-dg2: [INCOMPLETE][328] ([i915#8912]) -> [PASS][329] [328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg2-5/igt@kms_fbcon_fbt@fbc-suspend.html [329]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-11/igt@kms_fbcon_fbt@fbc-suspend.html * igt@kms_flip@flip-vs-suspend@a-hdmi-a3: - shard-dg2: [FAIL][330] ([fdo#103375]) -> [PASS][331] [330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg2-5/igt@kms_flip@flip-vs-suspend@a-hdmi-a3.html [331]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-1/igt@kms_flip@flip-vs-suspend@a-hdmi-a3.html * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-1: - shard-apl: [INCOMPLETE][332] ([i915#9392]) -> [PASS][333] [332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-apl6/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-1.html [333]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-apl3/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-1.html * {igt@kms_pm_dc@dc9-dpms}: - shard-tglu: [SKIP][334] ([i915#4281]) -> [PASS][335] [334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-tglu-3/igt@kms_pm_dc@dc9-dpms.html [335]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-4/igt@kms_pm_dc@dc9-dpms.html * igt@kms_psr@psr2_suspend: - shard-mtlp: [ABORT][336] ([i915#9262]) -> [PASS][337] [336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-5/igt@kms_psr@psr2_suspend.html [337]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_psr@psr2_suspend.html * igt@kms_rotation_crc@primary-rotation-90: - shard-rkl: [INCOMPLETE][338] ([i915#8875]) -> [PASS][339] [338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-6/igt@kms_rotation_crc@primary-rotation-90.html [339]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-4/igt@kms_rotation_crc@primary-rotation-90.html * igt@kms_universal_plane@cursor-fb-leak-pipe-a: - shard-rkl: [FAIL][340] ([i915#9196]) -> [PASS][341] [340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-4/igt@kms_universal_plane@cursor-fb-leak-pipe-a.html [341]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_universal_plane@cursor-fb-leak-pipe-a.html - shard-tglu: [FAIL][342] ([i915#9196]) -> [PASS][343] +1 other test pass [342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-tglu-5/igt@kms_universal_plane@cursor-fb-leak-pipe-a.html [343]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-7/igt@kms_universal_plane@cursor-fb-leak-pipe-a.html * igt@perf_pmu@busy-double-start@vcs1: - shard-dg1: [FAIL][344] ([i915#4349]) -> [PASS][345] +1 other test pass [344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-12/igt@perf_pmu@busy-double-start@vcs1.html [345]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-15/igt@perf_pmu@busy-double-start@vcs1.html * igt@perf_pmu@most-busy-check-all@rcs0: - shard-rkl: [FAIL][346] ([i915#4349]) -> [PASS][347] [346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-2/igt@perf_pmu@most-busy-check-all@rcs0.html [347]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-6/igt@perf_pmu@most-busy-check-all@rcs0.html * igt@perf_pmu@most-busy-idle-check-all@vcs1: - shard-mtlp: [FAIL][348] ([i915#5234]) -> [PASS][349] +4 other tests pass [348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-2/igt@perf_pmu@most-busy-idle-check-all@vcs1.html [349]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-4/igt@perf_pmu@most-busy-idle-check-all@vcs1.html * igt@perf_pmu@multi-client@ccs0: - shard-mtlp: [FAIL][350] ([i915#4349]) -> [PASS][351] +8 other tests pass [350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-2/igt@perf_pmu@multi-client@ccs0.html [351]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-3/igt@perf_pmu@multi-client@ccs0.html * igt@sysfs_timeslice_duration@duration@vecs0: - shard-mtlp: [FAIL][352] ([i915#9258]) -> [PASS][353] +2 other tests pass [352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-7/igt@sysfs_timeslice_duration@duration@vecs0.html [353]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-2/igt@sysfs_timeslice_duration@duration@vecs0.html #### Warnings #### * igt@gem_eio@in-flight-suspend: - shard-snb: [DMESG-WARN][354] ([i915#8841]) -> [DMESG-FAIL][355] ([fdo#103375]) [354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-snb6/igt@gem_eio@in-flight-suspend.html [355]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-snb7/igt@gem_eio@in-flight-suspend.html * igt@gem_lmem_swapping@smem-oom@lmem0: - shard-dg1: [DMESG-WARN][356] ([i915#4936] / [i915#5493]) -> [TIMEOUT][357] ([i915#5493]) [356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-17/igt@gem_lmem_swapping@smem-oom@lmem0.html [357]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-15/igt@gem_lmem_swapping@smem-oom@lmem0.html * igt@i915_pm_rc6_residency@rc6-idle@vcs0: - shard-tglu: [FAIL][358] ([i915#2681] / [i915#3591]) -> [WARN][359] ([i915#2681]) [358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-tglu-6/igt@i915_pm_rc6_residency@rc6-idle@vcs0.html [359]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-tglu-6/igt@i915_pm_rc6_residency@rc6-idle@vcs0.html * igt@kms_async_flips@crc@pipe-d-edp-1: - shard-mtlp: [DMESG-FAIL][360] ([i915#8561]) -> [FAIL][361] ([i915#8247]) +3 other tests fail [360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-mtlp-2/igt@kms_async_flips@crc@pipe-d-edp-1.html [361]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-mtlp-1/igt@kms_async_flips@crc@pipe-d-edp-1.html * igt@kms_fbcon_fbt@psr-suspend: - shard-rkl: [SKIP][362] ([i915#3955]) -> [SKIP][363] ([fdo#110189] / [i915#3955]) [362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-6/igt@kms_fbcon_fbt@psr-suspend.html [363]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-2/igt@kms_fbcon_fbt@psr-suspend.html * igt@kms_multipipe_modeset@basic-max-pipe-crc-check: - shard-rkl: [SKIP][364] ([i915#4070] / [i915#4816]) -> [SKIP][365] ([i915#4816]) [364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-rkl-1/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html [365]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-rkl-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html * igt@kms_psr@sprite_plane_onoff: - shard-dg1: [SKIP][366] ([i915#1072]) -> [SKIP][367] ([i915#1072] / [i915#4078]) +1 other test skip [366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg1-14/igt@kms_psr@sprite_plane_onoff.html [367]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg1-18/igt@kms_psr@sprite_plane_onoff.html * igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem: - shard-dg2: [INCOMPLETE][368] ([i915#5493]) -> [CRASH][369] ([i915#9351]) [368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13647/shard-dg2-1/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html [369]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/shard-dg2-2/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274 [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280 [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283 [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289 [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291 [fdo#109293]: https://bugs.freedesktop.org/show_bug.cgi?id=109293 [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189 [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723 [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614 [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615 [fdo#111767]: https://bugs.freedesktop.org/show_bug.cgi?id=111767 [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072 [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099 [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118 [i915#1339]: https://gitlab.freedesktop.org/drm/intel/issues/1339 [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397 [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825 [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839 [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937 [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346 [i915#2410]: https://gitlab.freedesktop.org/drm/intel/issues/2410 [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437 [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527 [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575 [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672 [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681 [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705 [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280 [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842 [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846 [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856 [i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023 [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281 [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282 [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297 [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299 [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318 [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359 [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458 [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539 [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546 [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555 [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591 [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637 [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638 [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689 [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708 [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742 [i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826 [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840 [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886 [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955 [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404 [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070 [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077 [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078 [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079 [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083 [i915#4087]: https://gitlab.freedesktop.org/drm/intel/issues/4087 [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103 [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212 [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213 [i915#4235]: https://gitlab.freedesktop.org/drm/intel/issues/4235 [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270 [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281 [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349 [i915#4473]: https://gitlab.freedesktop.org/drm/intel/issues/4473 [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525 [i915#4537]: https://gitlab.freedesktop.org/drm/intel/issues/4537 [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771 [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812 [i915#4816]: https://gitlab.freedesktop.org/drm/intel/issues/4816 [i915#4817]: https://gitlab.freedesktop.org/drm/intel/issues/4817 [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852 [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860 [i915#4884]: https://gitlab.freedesktop.org/drm/intel/issues/4884 [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885 [i915#4936]: https://gitlab.freedesktop.org/drm/intel/issues/4936 [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983 [i915#5107]: https://gitlab.freedesktop.org/drm/intel/issues/5107 [i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138 [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176 [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190 [i915#5234]: https://gitlab.freedesktop.org/drm/intel/issues/5234 [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235 [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286 [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289 [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533 [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354 [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439 [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461 [i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493 [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784 [i915#5793]: https://gitlab.freedesktop.org/drm/intel/issues/5793 [i915#5882]: https://gitlab.freedesktop.org/drm/intel/issues/5882 [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095 [i915#6187]: https://gitlab.freedesktop.org/drm/intel/issues/6187 [i915#6228]: https://gitlab.freedesktop.org/drm/intel/issues/6228 [i915#6229]: https://gitlab.freedesktop.org/drm/intel/issues/6229 [i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245 [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335 [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524 [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658 [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768 [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944 [i915#7069]: https://gitlab.freedesktop.org/drm/intel/issues/7069 [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116 [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118 [i915#7173]: https://gitlab.freedesktop.org/drm/intel/issues/7173 [i915#7213]: https://gitlab.freedesktop.org/drm/intel/issues/7213 [i915#7387]: https://gitlab.freedesktop.org/drm/intel/issues/7387 [i915#7484]: https://gitlab.freedesktop.org/drm/intel/issues/7484 [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697 [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711 [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742 [i915#7812]: https://gitlab.freedesktop.org/drm/intel/issues/7812 [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828 [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79 [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975 [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213 [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228 [i915#8247]: https://gitlab.freedesktop.org/drm/intel/issues/8247 [i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292 [i915#8381]: https://gitlab.freedesktop.org/drm/intel/issues/8381 [i915#8398]: https://gitlab.freedesktop.org/drm/intel/issues/8398 [i915#8411]: https://gitlab.freedesktop.org/drm/intel/issues/8411 [i915#8414]: https://gitlab.freedesktop.org/drm/intel/issues/8414 [i915#8428]: https://gitlab.freedesktop.org/drm/intel/issues/8428 [i915#8445]: https://gitlab.freedesktop.org/drm/intel/issues/8445 [i915#8502]: https://gitlab.freedesktop.org/drm/intel/issues/8502 [i915#8516]: https://gitlab.freedesktop.org/drm/intel/issues/8516 [i915#8521]: https://gitlab.freedesktop.org/drm/intel/issues/8521 [i915#8555]: https://gitlab.freedes == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9813/index.html [-- Attachment #2: Type: text/html, Size: 123965 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH i-g-t 0/6] Test cleanup and dynamic conversion @ 2023-09-18 5:13 Swati Sharma 2023-09-18 5:13 ` [igt-dev] [PATCH i-g-t 2/6] tests/kms_atomic: rename subtest Swati Sharma 0 siblings, 1 reply; 18+ messages in thread From: Swati Sharma @ 2023-09-18 5:13 UTC (permalink / raw) To: igt-dev In this patch series, code rework is done. Also, subtests are converted to dynamic subtests. Flexibility is added to run subtests on all valid pipe/output combinations. Swati Sharma (6): tests/kms_atomic: cosmetic changes tests/kms_atomic: rename subtest tests/kms_atomic: test cleanup tests/kms_atomic: convert subtests to dynamic subtests tests/kms_atomic: check validity of pipe-output combo tests/kms_atomic: add flexibility to run tests on all pipes tests/kms_atomic.c | 1070 ++++++++++++++++++++++++-------------------- 1 file changed, 595 insertions(+), 475 deletions(-) -- 2.25.1 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [igt-dev] [PATCH i-g-t 2/6] tests/kms_atomic: rename subtest 2023-09-18 5:13 [igt-dev] [PATCH i-g-t 0/6] " Swati Sharma @ 2023-09-18 5:13 ` Swati Sharma 0 siblings, 0 replies; 18+ messages in thread From: Swati Sharma @ 2023-09-18 5:13 UTC (permalink / raw) To: igt-dev Follow IGT rules, to use '-' instead of '_' for subtest naming. Signed-off-by: Swati Sharma <swati2.sharma@intel.com> --- tests/kms_atomic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c index 951014685..f984d34f0 100644 --- a/tests/kms_atomic.c +++ b/tests/kms_atomic.c @@ -1170,7 +1170,7 @@ static void atomic_invalid_params(igt_pipe_t *pipe, } /** - * SUBTEST: atomic_plane_damage + * SUBTEST: atomic-plane-damage * Description: Simple test cases to use FB_DAMAGE_CLIPS plane property * Driver requirement: i915, xe * Functionality: kms_core, plane @@ -1550,7 +1550,7 @@ igt_main } igt_describe("Simple test cases to use FB_DAMAGE_CLIPS plane property"); - igt_subtest("atomic_plane_damage") { + igt_subtest("atomic-plane-damage") { igt_require(igt_plane_has_prop(primary, IGT_PLANE_FB_DAMAGE_CLIPS)); atomic_setup(&display, pipe, output, primary, &fb); -- 2.25.1 ^ permalink raw reply related [flat|nested] 18+ messages in thread
end of thread, other threads:[~2023-10-10 5:54 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-09-18 7:54 [igt-dev] [PATCH i-g-t 0/6] tests/kms_atomic: Test cleanup and dynamic conversion Swati Sharma 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 1/6] tests/kms_atomic: cosmetic changes Swati Sharma 2023-09-26 16:37 ` Modem, Bhanuprakash 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 2/6] tests/kms_atomic: rename subtest Swati Sharma 2023-09-26 16:38 ` Modem, Bhanuprakash 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 3/6] tests/kms_atomic: test cleanup Swati Sharma 2023-09-27 3:32 ` Karthik B S 2023-10-10 5:47 ` Sharma, Swati2 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 4/6] tests/kms_atomic: convert subtests to dynamic subtests Swati Sharma 2023-09-27 3:39 ` Karthik B S 2023-10-10 5:54 ` Sharma, Swati2 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 5/6] tests/kms_atomic: check validity of pipe-output combo Swati Sharma 2023-09-18 7:54 ` [igt-dev] [PATCH i-g-t 6/6] tests/kms_atomic: add flexibility to run tests on all pipes Swati Sharma 2023-09-18 11:54 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_atomic: Test cleanup and dynamic conversion Patchwork 2023-09-18 11:57 ` [igt-dev] ✗ CI.xeBAT: " Patchwork 2023-09-21 6:50 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork 2023-09-21 16:39 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork -- strict thread matches above, loose matches on Subject: below -- 2023-09-18 5:13 [igt-dev] [PATCH i-g-t 0/6] " Swati Sharma 2023-09-18 5:13 ` [igt-dev] [PATCH i-g-t 2/6] tests/kms_atomic: rename subtest Swati Sharma
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox