* [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests
@ 2023-01-07 13:45 Alaa Emad
2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 1/8] tests/kms_universal_plane: decouple verification of legacy and atomic api Alaa Emad
` (10 more replies)
0 siblings, 11 replies; 13+ messages in thread
From: Alaa Emad @ 2023-01-07 13:45 UTC (permalink / raw)
To: igt-dev; +Cc: petri.latvala
Divide the `functional_test_pipe` test into seven subtests based on CRC
comparisons because this will make it easier to debug the test and help
in detecting the failure.
First 7 patches decouple each subtest and run it individually keeping
`functional_test_pipe' test as it is. After making sure that each
subtest can run individually with the expected result on both vkms and i915
drivers, improve the test by creating `run_functional_test_pipe` and
call all subtests from it and call `run_functional_test_pipe` in
`igt_main`.
-------
changes in v2:
add is_amdgpu_device() guard.
Alaa Emad (8):
tests/kms_universal_plane: decouple verification of legacy and atomic
api
tests/kms_universal_plane: decouple verification of disabling primary
plane
tests/kms_universal_plane: decouple verification of re-enabling
primary plane
tests/kms_universal_plane: decouple verification of setup plane FB's
while CRTC is disabled
tests/kms_universal_plane: decouple verification of ablity to modeset
with the primary plane off
tests/kms_universal_plane: decouple verification of ablity to move the
primary plane completely
tests/kms_universal_plane: decouple verification of ablity to
explicitly disable an already implicitly-disabled primary plane
tests/kms_universal_plane: create the run_functional_test_pipe and
call all tests from it
tests/kms_universal_plane.c | 412 ++++++++++++++++++++++++------------
1 file changed, 272 insertions(+), 140 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 13+ messages in thread* [igt-dev] [PATCH RFC i-g-t v2 1/8] tests/kms_universal_plane: decouple verification of legacy and atomic api 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad @ 2023-01-07 13:45 ` Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 2/8] tests/kms_universal_plane: decouple verification of disabling primary plane Alaa Emad ` (9 subsequent siblings) 10 siblings, 0 replies; 13+ messages in thread From: Alaa Emad @ 2023-01-07 13:45 UTC (permalink / raw) To: igt-dev; +Cc: petri.latvala decouple the verification of leagacy and atomic api in a separated subtests to be able to run it individually, creating the function. Signed-off-by: Alaa Emad <aemad@igalia.com> --- tests/kms_universal_plane.c | 68 +++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c index dd8fa193..3307e066 100644 --- a/tests/kms_universal_plane.c +++ b/tests/kms_universal_plane.c @@ -112,6 +112,68 @@ functional_test_fini(functional_test_t *test, igt_output_t *output) igt_display_commit2(&test->data->display, COMMIT_LEGACY); } +static void +test_legacy_atomic_interfaces(data_t *data, enum pipe pipe, igt_output_t *output) +{ + functional_test_t test = { .data = data }; + igt_display_t *display = &data->display; + igt_plane_t *primary, *sprite; + int num_primary = 0, num_cursor = 0; + int i; + + igt_require_pipe(display, pipe); + + igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), + kmstest_pipe_name(pipe)); + + functional_test_init(&test, output, pipe); + + /* + * Make sure we have no more than one primary or cursor plane per crtc. + * If the kernel accidentally calls drm_plane_init() rather than + * drm_universal_plane_init(), the type enum can get interpreted as a + * boolean and show up in userspace as the wrong type. + */ + for (i = 0; i < display->pipes[pipe].n_planes; i++) + if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) + num_primary++; + else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) + num_cursor++; + + igt_warn_on(num_primary != 1); + igt_warn_on(num_cursor > 1); + + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); + if (!sprite) { + functional_test_fini(&test, output); + igt_skip("No sprite plane available\n"); + } + + igt_plane_set_position(sprite, 100, 100); + + /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ + igt_plane_set_fb(primary, &test.blue_fb); + igt_plane_set_fb(sprite, &test.red_fb); + igt_display_commit2(display, COMMIT_LEGACY); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); + + /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ + igt_plane_set_fb(primary, &test.blue_fb); + igt_plane_set_fb(sprite, &test.red_fb); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); + + + /* Blue bg + red sprite should be same under both types of API's */ + igt_assert_crc_equal(&test.crc_2, &test.crc_4); + + igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(sprite, NULL); + + functional_test_fini(&test, output); +} + /* * Universal plane functional testing. * - Black primary plane via traditional interfaces, red sprite, grab CRC:1. @@ -781,6 +843,12 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) igt_require_f(valid_tests, "no valid crtc/connector combinations found\n"); } + + igt_describe("Check the switching between different primary plane fbs with CRTC off"); + igt_subtest_f("test-legacy-atomic-interfaces-%s", + kmstest_pipe_name(pipe)) + for_each_valid_output_on_pipe(&data->display, pipe, output) + test_legacy_atomic_interfaces(data, pipe, output); igt_describe("Check the switching between different primary plane fbs with CRTC off"); igt_subtest_f("universal-plane-pipe-%s-functional", -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH RFC i-g-t v2 2/8] tests/kms_universal_plane: decouple verification of disabling primary plane 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 1/8] tests/kms_universal_plane: decouple verification of legacy and atomic api Alaa Emad @ 2023-01-07 13:45 ` Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 3/8] tests/kms_universal_plane: decouple verification of re-enabling " Alaa Emad ` (8 subsequent siblings) 10 siblings, 0 replies; 13+ messages in thread From: Alaa Emad @ 2023-01-07 13:45 UTC (permalink / raw) To: igt-dev; +Cc: petri.latvala decouple verification of disabling primary plane in a separated subtests to be able to run it individually, creating the function. Signed-off-by: Alaa Emad <aemad@igalia.com> --- tests/kms_universal_plane.c | 70 +++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c index 3307e066..4d032d5c 100644 --- a/tests/kms_universal_plane.c +++ b/tests/kms_universal_plane.c @@ -174,6 +174,70 @@ test_legacy_atomic_interfaces(data_t *data, enum pipe pipe, igt_output_t *output functional_test_fini(&test, output); } +//SUCCESS on VKMS and i915 +static void +test_disable_primary_red_sprite(data_t *data, enum pipe pipe, igt_output_t *output) +{ + functional_test_t test = { .data = data }; + igt_display_t *display = &data->display; + igt_plane_t *primary, *sprite; + int num_primary = 0, num_cursor = 0; + int i; + + igt_require_pipe(display, pipe); + + igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), + kmstest_pipe_name(pipe)); + + functional_test_init(&test, output, pipe); + + /* + * Make sure we have no more than one primary or cursor plane per crtc. + * If the kernel accidentally calls drm_plane_init() rather than + * drm_universal_plane_init(), the type enum can get interpreted as a + * boolean and show up in userspace as the wrong type. + */ + for (i = 0; i < display->pipes[pipe].n_planes; i++) + if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) + num_primary++; + else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) + num_cursor++; + + igt_warn_on(num_primary != 1); + igt_warn_on(num_cursor > 1); + + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); + if (!sprite) { + functional_test_fini(&test, output); + igt_skip("No sprite plane available\n"); + } + + igt_plane_set_position(sprite, 100, 100); + + /* Step 1: Legacy API's, black primary, red sprite (CRC 1) */ + igt_plane_set_fb(primary, &test.black_fb); + igt_plane_set_fb(sprite, &test.red_fb); + igt_display_commit2(display, COMMIT_LEGACY); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_1); + + if (!is_amdgpu_device(data->drm_fd)) { + igt_plane_set_fb(primary, NULL); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); + } + + /* Disabling primary plane should be same as black primary */ + if (!is_amdgpu_device(data->drm_fd)) + igt_assert_crc_equal(&test.crc_1, &test.crc_5); + + igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(sprite, NULL); + + functional_test_fini(&test, output); +} + + /* * Universal plane functional testing. * - Black primary plane via traditional interfaces, red sprite, grab CRC:1. @@ -850,6 +914,12 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) for_each_valid_output_on_pipe(&data->display, pipe, output) test_legacy_atomic_interfaces(data, pipe, output); + igt_describe("Check the switching between different primary plane fbs with CRTC off"); + igt_subtest_f("disable-primary-red-sprite-%s", + kmstest_pipe_name(pipe)) + for_each_valid_output_on_pipe(&data->display, pipe, output) + test_disable_primary_red_sprite(data, pipe, output); + igt_describe("Check the switching between different primary plane fbs with CRTC off"); igt_subtest_f("universal-plane-pipe-%s-functional", kmstest_pipe_name(pipe)) -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH RFC i-g-t v2 3/8] tests/kms_universal_plane: decouple verification of re-enabling primary plane 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 1/8] tests/kms_universal_plane: decouple verification of legacy and atomic api Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 2/8] tests/kms_universal_plane: decouple verification of disabling primary plane Alaa Emad @ 2023-01-07 13:45 ` Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 4/8] tests/kms_universal_plane: decouple verification of setup plane FB's while CRTC is disabled Alaa Emad ` (7 subsequent siblings) 10 siblings, 0 replies; 13+ messages in thread From: Alaa Emad @ 2023-01-07 13:45 UTC (permalink / raw) To: igt-dev; +Cc: petri.latvala decouple verification of re-enable primary plane in a separated subtests to be able to run it individually, creating the function. Signed-off-by: Alaa Emad <aemad@igalia.com> --- tests/kms_universal_plane.c | 68 +++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c index 4d032d5c..96ce201b 100644 --- a/tests/kms_universal_plane.c +++ b/tests/kms_universal_plane.c @@ -237,6 +237,68 @@ test_disable_primary_red_sprite(data_t *data, enum pipe pipe, igt_output_t *outp functional_test_fini(&test, output); } +static void +test_re_enable_primary_with_blue(data_t *data, enum pipe pipe, igt_output_t *output) +{ + functional_test_t test = { .data = data }; + igt_display_t *display = &data->display; + igt_plane_t *primary, *sprite; + int num_primary = 0, num_cursor = 0; + int i; + + igt_require_pipe(display, pipe); + + igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), + kmstest_pipe_name(pipe)); + + functional_test_init(&test, output, pipe); + + /* + * Make sure we have no more than one primary or cursor plane per crtc. + * If the kernel accidentally calls drm_plane_init() rather than + * drm_universal_plane_init(), the type enum can get interpreted as a + * boolean and show up in userspace as the wrong type. + */ + for (i = 0; i < display->pipes[pipe].n_planes; i++) + if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) + num_primary++; + else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) + num_cursor++; + + igt_warn_on(num_primary != 1); + igt_warn_on(num_cursor > 1); + + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); + if (!sprite) { + functional_test_fini(&test, output); + igt_skip("No sprite plane available\n"); + } + + igt_plane_set_position(sprite, 100, 100); + + /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ + igt_plane_set_fb(primary, &test.blue_fb); + igt_plane_set_fb(sprite, &test.red_fb); + igt_display_commit2(display, COMMIT_LEGACY); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); + + igt_plane_set_fb(primary, NULL); + igt_display_commit2(display, COMMIT_UNIVERSAL); + + /* Step 6: Universal API's, re-enable primary with blue (CRC 6) */ + igt_plane_set_fb(primary, &test.blue_fb); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_6); + + /* Re-enabling primary should return to blue properly */ + igt_assert_crc_equal(&test.crc_2, &test.crc_6); + + igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(sprite, NULL); + + functional_test_fini(&test, output); +} /* * Universal plane functional testing. @@ -920,6 +982,12 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) for_each_valid_output_on_pipe(&data->display, pipe, output) test_disable_primary_red_sprite(data, pipe, output); + igt_describe("Check the switching between different primary plane fbs with CRTC off"); + igt_subtest_f("re-enable-primary-with-blue-%s", + kmstest_pipe_name(pipe)) + for_each_valid_output_on_pipe(&data->display, pipe, output) + test_re_enable_primary_with_blue(data, pipe, output); + igt_describe("Check the switching between different primary plane fbs with CRTC off"); igt_subtest_f("universal-plane-pipe-%s-functional", kmstest_pipe_name(pipe)) -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH RFC i-g-t v2 4/8] tests/kms_universal_plane: decouple verification of setup plane FB's while CRTC is disabled 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad ` (2 preceding siblings ...) 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 3/8] tests/kms_universal_plane: decouple verification of re-enabling " Alaa Emad @ 2023-01-07 13:45 ` Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 5/8] tests/kms_universal_plane: decouple verification of ablity to modeset with the primary plane off Alaa Emad ` (6 subsequent siblings) 10 siblings, 0 replies; 13+ messages in thread From: Alaa Emad @ 2023-01-07 13:45 UTC (permalink / raw) To: igt-dev; +Cc: petri.latvala decouple verification of setup plane FB's while CRTC is disabled in a separated subtests to be able to run it individually, creating the function. Signed-off-by: Alaa Emad <aemad@igalia.com> --- tests/kms_universal_plane.c | 94 +++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c index 96ce201b..99fc2b92 100644 --- a/tests/kms_universal_plane.c +++ b/tests/kms_universal_plane.c @@ -300,6 +300,94 @@ test_re_enable_primary_with_blue(data_t *data, enum pipe pipe, igt_output_t *out functional_test_fini(&test, output); } + +static void +test_universal_api_with_crtc_off(data_t *data, enum pipe pipe, igt_output_t *output) +{ + functional_test_t test = { .data = data }; + igt_display_t *display = &data->display; + igt_plane_t *primary, *sprite; + int num_primary = 0, num_cursor = 0; + int i; + + igt_require_pipe(display, pipe); + + igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), + kmstest_pipe_name(pipe)); + + functional_test_init(&test, output, pipe); + + /* + * Make sure we have no more than one primary or cursor plane per crtc. + * If the kernel accidentally calls drm_plane_init() rather than + * drm_universal_plane_init(), the type enum can get interpreted as a + * boolean and show up in userspace as the wrong type. + */ + for (i = 0; i < display->pipes[pipe].n_planes; i++) + if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) + num_primary++; + else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) + num_cursor++; + + igt_warn_on(num_primary != 1); + igt_warn_on(num_cursor > 1); + + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); + if (!sprite) { + functional_test_fini(&test, output); + igt_skip("No sprite plane available\n"); + } + + igt_plane_set_position(sprite, 100, 100); + + /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ + igt_plane_set_fb(primary, &test.blue_fb); + igt_plane_set_fb(sprite, &test.red_fb); + igt_display_commit2(display, COMMIT_LEGACY); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); + + /* Step 7: Legacy API's, yellow primary, no sprite */ + igt_plane_set_fb(primary, &test.yellow_fb); + igt_plane_set_fb(sprite, NULL); + igt_display_commit2(display, COMMIT_LEGACY); + + /* Step 8: Disable CRTC */ + igt_plane_set_fb(primary, NULL); + igt_display_commit2(display, COMMIT_LEGACY); + + /* Step 9: Universal API's with crtc off: + * - red sprite + * - multiple primary fb's, ending in blue + */ + igt_plane_set_fb(sprite, &test.red_fb); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_plane_set_fb(primary, &test.yellow_fb); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_plane_set_fb(primary, &test.black_fb); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_plane_set_fb(primary, &test.blue_fb); + igt_display_commit2(display, COMMIT_UNIVERSAL); + + /* Step 10: Enable crtc (fb = -1), take CRC (CRC 7) */ + igt_assert(drmModeSetCrtc(data->drm_fd, output->config.crtc->crtc_id, -1, + 0, 0, &output->config.connector->connector_id, + 1, test.mode) == 0); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_7); + + /* + * We should be able to setup plane FB's while CRTC is disabled and + * then have them pop up correctly when the CRTC is re-enabled. + */ + igt_assert_crc_equal(&test.crc_2, &test.crc_7); + + + igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(sprite, NULL); + + functional_test_fini(&test, output); +} + /* * Universal plane functional testing. * - Black primary plane via traditional interfaces, red sprite, grab CRC:1. @@ -988,6 +1076,12 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) for_each_valid_output_on_pipe(&data->display, pipe, output) test_re_enable_primary_with_blue(data, pipe, output); + igt_describe("Check the switching between different primary plane fbs with CRTC off"); + igt_subtest_f("universal-api-with-crtc-off-%s", + kmstest_pipe_name(pipe)) + for_each_valid_output_on_pipe(&data->display, pipe, output) + test_universal_api_with_crtc_off(data, pipe, output); + igt_describe("Check the switching between different primary plane fbs with CRTC off"); igt_subtest_f("universal-plane-pipe-%s-functional", kmstest_pipe_name(pipe)) -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH RFC i-g-t v2 5/8] tests/kms_universal_plane: decouple verification of ablity to modeset with the primary plane off 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad ` (3 preceding siblings ...) 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 4/8] tests/kms_universal_plane: decouple verification of setup plane FB's while CRTC is disabled Alaa Emad @ 2023-01-07 13:45 ` Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 6/8] tests/kms_universal_plane: decouple verification of ablity to move the primary plane completely Alaa Emad ` (5 subsequent siblings) 10 siblings, 0 replies; 13+ messages in thread From: Alaa Emad @ 2023-01-07 13:45 UTC (permalink / raw) To: igt-dev; +Cc: petri.latvala decouple verification of ablity to modeset with the primary plane off in a separated subtests to be able to run it individually, creating the function. Signed-off-by: Alaa Emad <aemad@igalia.com> --- tests/kms_universal_plane.c | 74 +++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c index 99fc2b92..94e0d73d 100644 --- a/tests/kms_universal_plane.c +++ b/tests/kms_universal_plane.c @@ -388,6 +388,74 @@ test_universal_api_with_crtc_off(data_t *data, enum pipe pipe, igt_output_t *out functional_test_fini(&test, output); } +//SUCCESS on VKMS and i915 +static void +test_legacy_modeset_to_yellow_fb(data_t *data, enum pipe pipe, igt_output_t *output) +{ + functional_test_t test = { .data = data }; + igt_display_t *display = &data->display; + igt_plane_t *primary, *sprite; + int num_primary = 0, num_cursor = 0; + int i; + + igt_require_pipe(display, pipe); + + igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), + kmstest_pipe_name(pipe)); + + functional_test_init(&test, output, pipe); + + /* + * Make sure we have no more than one primary or cursor plane per crtc. + * If the kernel accidentally calls drm_plane_init() rather than + * drm_universal_plane_init(), the type enum can get interpreted as a + * boolean and show up in userspace as the wrong type. + */ + for (i = 0; i < display->pipes[pipe].n_planes; i++) + if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) + num_primary++; + else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) + num_cursor++; + + igt_warn_on(num_primary != 1); + igt_warn_on(num_cursor > 1); + + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); + if (!sprite) { + functional_test_fini(&test, output); + igt_skip("No sprite plane available\n"); + } + + igt_plane_set_position(sprite, 100, 100); + + /* Step 3: Legacy API's, yellow primary (CRC 3) */ + igt_plane_set_fb(primary, &test.yellow_fb); + igt_display_commit2(display, COMMIT_LEGACY); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); + + /* Step 11: Disable primary plane */ + igt_plane_set_fb(primary, NULL); + igt_display_commit2(display, COMMIT_UNIVERSAL); + + /* Step 12: Legacy modeset to yellow FB (CRC 8) */ + igt_plane_set_fb(primary, &test.yellow_fb); + igt_display_commit2(display, COMMIT_LEGACY); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_8); + + /* + * We should be able to modeset with the primary plane off + * successfully + */ + igt_assert_crc_equal(&test.crc_3, &test.crc_8); + + igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(sprite, NULL); + + functional_test_fini(&test, output); +} + + /* * Universal plane functional testing. * - Black primary plane via traditional interfaces, red sprite, grab CRC:1. @@ -1082,6 +1150,12 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) for_each_valid_output_on_pipe(&data->display, pipe, output) test_universal_api_with_crtc_off(data, pipe, output); + igt_describe("Check the switching between different primary plane fbs with CRTC off"); + igt_subtest_f("legacy-modeset-to-yellow-fb-%s", + kmstest_pipe_name(pipe)) + for_each_valid_output_on_pipe(&data->display, pipe, output) + test_legacy_modeset_to_yellow_fb(data, pipe, output); + igt_describe("Check the switching between different primary plane fbs with CRTC off"); igt_subtest_f("universal-plane-pipe-%s-functional", kmstest_pipe_name(pipe)) -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH RFC i-g-t v2 6/8] tests/kms_universal_plane: decouple verification of ablity to move the primary plane completely 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad ` (4 preceding siblings ...) 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 5/8] tests/kms_universal_plane: decouple verification of ablity to modeset with the primary plane off Alaa Emad @ 2023-01-07 13:45 ` Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 7/8] tests/kms_universal_plane: decouple verification of ablity to explicitly disable an already implicitly-disabled primary plane Alaa Emad ` (4 subsequent siblings) 10 siblings, 0 replies; 13+ messages in thread From: Alaa Emad @ 2023-01-07 13:45 UTC (permalink / raw) To: igt-dev; +Cc: petri.latvala decouple verification of ablity to move the primary plane completely offscreen in a separated subtests to be able to run it individually, creating the function. Signed-off-by: Alaa Emad <aemad@igalia.com> --- tests/kms_universal_plane.c | 98 ++++++++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c index 94e0d73d..c513eff9 100644 --- a/tests/kms_universal_plane.c +++ b/tests/kms_universal_plane.c @@ -455,6 +455,96 @@ test_legacy_modeset_to_yellow_fb(data_t *data, enum pipe pipe, igt_output_t *out functional_test_fini(&test, output); } +//FAIL on VKMS +//SUCCESS on i915 +static void +test_set_primary_completely_offscreen(data_t *data, enum pipe pipe, igt_output_t *output) +{ + functional_test_t test = { .data = data }; + igt_display_t *display = &data->display; + igt_plane_t *primary, *sprite; + int num_primary = 0, num_cursor = 0; + int i; + + igt_require_pipe(display, pipe); + + igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), + kmstest_pipe_name(pipe)); + + functional_test_init(&test, output, pipe); + + /* + * Make sure we have no more than one primary or cursor plane per crtc. + * If the kernel accidentally calls drm_plane_init() rather than + * drm_universal_plane_init(), the type enum can get interpreted as a + * boolean and show up in userspace as the wrong type. + */ + for (i = 0; i < display->pipes[pipe].n_planes; i++) + if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) + num_primary++; + else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) + num_cursor++; + + igt_warn_on(num_primary != 1); + igt_warn_on(num_cursor > 1); + + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); + if (!sprite) { + functional_test_fini(&test, output); + igt_skip("No sprite plane available\n"); + } + + igt_plane_set_position(sprite, 100, 100); + + /* Step 3: Legacy API's, yellow primary (CRC 3) */ + igt_plane_set_fb(primary, &test.yellow_fb); + igt_display_commit2(display, COMMIT_LEGACY); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); + + /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ + igt_plane_set_fb(primary, &test.blue_fb); + igt_plane_set_fb(sprite, &test.red_fb); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); + + /* Step 5: Universal API's, disable primary plane (CRC 5) */ + if (!is_amdgpu_device(data->drm_fd)) { + igt_plane_set_fb(primary, NULL); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); + } + + /* + * Step 14: Universal API, set primary completely offscreen (CRC 9). + * Skip on amdgpu which rejects offscreen planes. + */ + if (!is_amdgpu_device(data->drm_fd)) { + igt_assert(drmModeSetPlane(data->drm_fd, primary->drm_plane->plane_id, + output->config.crtc->crtc_id, + test.blue_fb.fb_id, 0, + 9000, 9000, + test.mode->hdisplay, + test.mode->vdisplay, + IGT_FIXED(0,0), IGT_FIXED(0,0), + IGT_FIXED(test.mode->hdisplay,0), + IGT_FIXED(test.mode->vdisplay,0)) == 0); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_9); + } + + /* + * We should be able to move the primary plane completely offscreen + * and have it disable successfully. Skip on amdgpu since crc_9 was + * skipped with offscreen planes previously. + */ + if (!is_amdgpu_device(data->drm_fd)) + igt_assert_crc_equal(&test.crc_5, &test.crc_9); + + igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(sprite, NULL); + + functional_test_fini(&test, output); +} /* * Universal plane functional testing. @@ -1155,7 +1245,13 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) kmstest_pipe_name(pipe)) for_each_valid_output_on_pipe(&data->display, pipe, output) test_legacy_modeset_to_yellow_fb(data, pipe, output); - + + igt_describe("Check the switching between different primary plane fbs with CRTC off"); + igt_subtest_f("set-primary-completely-offscreen-%s", + kmstest_pipe_name(pipe)) + for_each_valid_output_on_pipe(&data->display, pipe, output) + test_set_primary_completely_offscreen(data, pipe, output); + igt_describe("Check the switching between different primary plane fbs with CRTC off"); igt_subtest_f("universal-plane-pipe-%s-functional", kmstest_pipe_name(pipe)) -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH RFC i-g-t v2 7/8] tests/kms_universal_plane: decouple verification of ablity to explicitly disable an already implicitly-disabled primary plane 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad ` (5 preceding siblings ...) 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 6/8] tests/kms_universal_plane: decouple verification of ablity to move the primary plane completely Alaa Emad @ 2023-01-07 13:45 ` Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 8/8] tests/kms_universal_plane: create the run_functional_test_pipe and call all tests from it Alaa Emad ` (3 subsequent siblings) 10 siblings, 0 replies; 13+ messages in thread From: Alaa Emad @ 2023-01-07 13:45 UTC (permalink / raw) To: igt-dev; +Cc: petri.latvala decouple verification of ablity to explicitly disable an already implicitly-disabled primary plane in a separated subtests to be able to run it individually, creating the function. Signed-off-by: Alaa Emad <aemad@igalia.com> --- tests/kms_universal_plane.c | 94 +++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c index c513eff9..743ccbc6 100644 --- a/tests/kms_universal_plane.c +++ b/tests/kms_universal_plane.c @@ -546,6 +546,94 @@ test_set_primary_completely_offscreen(data_t *data, enum pipe pipe, igt_output_t functional_test_fini(&test, output); } +//SUCCESS on VKMS and i915 +static void +test_explicitly_disable_primary(data_t *data, enum pipe pipe, igt_output_t *output) +{ + functional_test_t test = {.data = data}; + igt_display_t *display = &data->display; + igt_plane_t *primary, *sprite; + int num_primary = 0, num_cursor = 0; + int i; + + igt_require_pipe(display, pipe); + + igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), + kmstest_pipe_name(pipe)); + + functional_test_init(&test, output, pipe); + + /* + * Make sure we have no more than one primary or cursor plane per crtc. + * If the kernel accidentally calls drm_plane_init() rather than + * drm_universal_plane_init(), the type enum can get interpreted as a + * boolean and show up in userspace as the wrong type. + */ + for (i = 0; i < display->pipes[pipe].n_planes; i++) + if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) + num_primary++; + else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) + num_cursor++; + + igt_warn_on(num_primary != 1); + igt_warn_on(num_cursor > 1); + + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); + if (!sprite) + { + functional_test_fini(&test, output); + igt_skip("No sprite plane available\n"); + } + + igt_plane_set_position(sprite, 100, 100); + + /* Step 3: Legacy API's, yellow primary (CRC 3) */ + igt_plane_set_fb(primary, &test.yellow_fb); + igt_display_commit2(display, COMMIT_LEGACY); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); + + /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ + igt_plane_set_fb(primary, &test.blue_fb); + igt_plane_set_fb(sprite, &test.red_fb); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); + + /* Step 5: Universal API's, disable primary plane (CRC 5) */ + if (!is_amdgpu_device(data->drm_fd)) { + igt_plane_set_fb(primary, NULL); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); + } + + /* + * Step 15: Explicitly disable primary after it's already been + * implicitly disabled (CRC 10). + */ + if (!is_amdgpu_device(data->drm_fd)) { + igt_plane_set_fb(primary, NULL); + igt_display_commit2(display, COMMIT_UNIVERSAL); + igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_10); + } + + /* Step 16: Legacy API's, blue primary, red sprite */ + igt_plane_set_fb(primary, &test.blue_fb); + igt_plane_set_fb(sprite, &test.red_fb); + igt_display_commit2(display, COMMIT_LEGACY); + + /* + * We should be able to explicitly disable an already + * implicitly-disabled primary plane + */ + igt_assert_crc_equal(&test.crc_5, &test.crc_10); + + igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(sprite, NULL); + + functional_test_fini(&test, output); +} + + /* * Universal plane functional testing. * - Black primary plane via traditional interfaces, red sprite, grab CRC:1. @@ -1251,6 +1339,12 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) kmstest_pipe_name(pipe)) for_each_valid_output_on_pipe(&data->display, pipe, output) test_set_primary_completely_offscreen(data, pipe, output); + + igt_describe("Check the switching between different primary plane fbs with CRTC off"); + igt_subtest_f("explicitly-disable-primary-%s", + kmstest_pipe_name(pipe)) + for_each_valid_output_on_pipe(&data->display, pipe, output) + test_explicitly_disable_primary(data, pipe, output); igt_describe("Check the switching between different primary plane fbs with CRTC off"); igt_subtest_f("universal-plane-pipe-%s-functional", -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [igt-dev] [PATCH RFC i-g-t v2 8/8] tests/kms_universal_plane: create the run_functional_test_pipe and call all tests from it 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad ` (6 preceding siblings ...) 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 7/8] tests/kms_universal_plane: decouple verification of ablity to explicitly disable an already implicitly-disabled primary plane Alaa Emad @ 2023-01-07 13:45 ` Alaa Emad 2023-01-10 18:43 ` Alex Hung 2023-01-07 14:12 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests (rev2) Patchwork ` (2 subsequent siblings) 10 siblings, 1 reply; 13+ messages in thread From: Alaa Emad @ 2023-01-07 13:45 UTC (permalink / raw) To: igt-dev; +Cc: petri.latvala after decoupling `functional_test_pipe` to seven subtests, create the `run_functional_test_pipe` and call all tests from it and improve subtests's code. Signed-off-by: Alaa Emad <aemad@igalia.com> --- tests/kms_universal_plane.c | 764 ++++++++---------------------------- 1 file changed, 166 insertions(+), 598 deletions(-) diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c index 743ccbc6..1d6353aa 100644 --- a/tests/kms_universal_plane.c +++ b/tests/kms_universal_plane.c @@ -113,423 +113,192 @@ functional_test_fini(functional_test_t *test, igt_output_t *output) } static void -test_legacy_atomic_interfaces(data_t *data, enum pipe pipe, igt_output_t *output) +test_legacy_atomic_interfaces(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) { - functional_test_t test = { .data = data }; + data_t *data = test->data; igt_display_t *display = &data->display; - igt_plane_t *primary, *sprite; - int num_primary = 0, num_cursor = 0; - int i; - - igt_require_pipe(display, pipe); - - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), - kmstest_pipe_name(pipe)); - - functional_test_init(&test, output, pipe); - - /* - * Make sure we have no more than one primary or cursor plane per crtc. - * If the kernel accidentally calls drm_plane_init() rather than - * drm_universal_plane_init(), the type enum can get interpreted as a - * boolean and show up in userspace as the wrong type. - */ - for (i = 0; i < display->pipes[pipe].n_planes; i++) - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) - num_primary++; - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) - num_cursor++; - - igt_warn_on(num_primary != 1); - igt_warn_on(num_cursor > 1); - - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); - if (!sprite) { - functional_test_fini(&test, output); - igt_skip("No sprite plane available\n"); - } - - igt_plane_set_position(sprite, 100, 100); - - /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); + + /* Legacy API', blue primary, red sprite (CRC 2) */ + igt_plane_set_fb(primary, &test->blue_fb); + igt_plane_set_fb(sprite, &test->red_fb); igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_2); - /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); + /* Universal API's, blue primary, red sprite (CRC 4) */ + igt_plane_set_fb(primary, &test->blue_fb); + igt_plane_set_fb(sprite, &test->red_fb); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); - + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_4); /* Blue bg + red sprite should be same under both types of API's */ - igt_assert_crc_equal(&test.crc_2, &test.crc_4); - - igt_plane_set_fb(primary, NULL); - igt_plane_set_fb(sprite, NULL); + igt_assert_crc_equal(&test->crc_2, &test->crc_4); - functional_test_fini(&test, output); } -//SUCCESS on VKMS and i915 static void -test_disable_primary_red_sprite(data_t *data, enum pipe pipe, igt_output_t *output) +test_disable_primary_red_sprite(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) { - functional_test_t test = { .data = data }; + data_t *data = test->data; igt_display_t *display = &data->display; - igt_plane_t *primary, *sprite; - int num_primary = 0, num_cursor = 0; - int i; - igt_require_pipe(display, pipe); - - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), - kmstest_pipe_name(pipe)); - - functional_test_init(&test, output, pipe); - - /* - * Make sure we have no more than one primary or cursor plane per crtc. - * If the kernel accidentally calls drm_plane_init() rather than - * drm_universal_plane_init(), the type enum can get interpreted as a - * boolean and show up in userspace as the wrong type. - */ - for (i = 0; i < display->pipes[pipe].n_planes; i++) - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) - num_primary++; - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) - num_cursor++; - - igt_warn_on(num_primary != 1); - igt_warn_on(num_cursor > 1); - - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); - if (!sprite) { - functional_test_fini(&test, output); - igt_skip("No sprite plane available\n"); - } - - igt_plane_set_position(sprite, 100, 100); - - /* Step 1: Legacy API's, black primary, red sprite (CRC 1) */ - igt_plane_set_fb(primary, &test.black_fb); - igt_plane_set_fb(sprite, &test.red_fb); + /* Legacy API's, black primary, red sprite (CRC 1) */ + igt_plane_set_fb(primary, &test->black_fb); + igt_plane_set_fb(sprite, &test->red_fb); igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_1); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_1); + /* Universal API's, disable primary plane (CRC 5) */ if (!is_amdgpu_device(data->drm_fd)) { igt_plane_set_fb(primary, NULL); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_5); } /* Disabling primary plane should be same as black primary */ if (!is_amdgpu_device(data->drm_fd)) - igt_assert_crc_equal(&test.crc_1, &test.crc_5); - - igt_plane_set_fb(primary, NULL); - igt_plane_set_fb(sprite, NULL); + igt_assert_crc_equal(&test->crc_1, &test->crc_5); - functional_test_fini(&test, output); } static void -test_re_enable_primary_with_blue(data_t *data, enum pipe pipe, igt_output_t *output) +test_re_enable_primary_with_blue(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) { - functional_test_t test = { .data = data }; + data_t *data = test->data; igt_display_t *display = &data->display; - igt_plane_t *primary, *sprite; - int num_primary = 0, num_cursor = 0; - int i; - igt_require_pipe(display, pipe); - - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), - kmstest_pipe_name(pipe)); - - functional_test_init(&test, output, pipe); - - /* - * Make sure we have no more than one primary or cursor plane per crtc. - * If the kernel accidentally calls drm_plane_init() rather than - * drm_universal_plane_init(), the type enum can get interpreted as a - * boolean and show up in userspace as the wrong type. - */ - for (i = 0; i < display->pipes[pipe].n_planes; i++) - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) - num_primary++; - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) - num_cursor++; - - igt_warn_on(num_primary != 1); - igt_warn_on(num_cursor > 1); - - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); - if (!sprite) { - functional_test_fini(&test, output); - igt_skip("No sprite plane available\n"); - } - - igt_plane_set_position(sprite, 100, 100); - - /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); + /* Legacy API', blue primary, red sprite (CRC 2) */ + igt_plane_set_fb(primary, &test->blue_fb); + igt_plane_set_fb(sprite, &test->red_fb); igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_2); - igt_plane_set_fb(primary, NULL); - igt_display_commit2(display, COMMIT_UNIVERSAL); + if (!is_amdgpu_device(data->drm_fd)){ + igt_plane_set_fb(primary, NULL); + igt_display_commit2(display, COMMIT_UNIVERSAL); + } - /* Step 6: Universal API's, re-enable primary with blue (CRC 6) */ - igt_plane_set_fb(primary, &test.blue_fb); + /* Universal API's, re-enable primary with blue (CRC 6) */ + igt_plane_set_fb(primary, &test->blue_fb); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_6); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_6); /* Re-enabling primary should return to blue properly */ - igt_assert_crc_equal(&test.crc_2, &test.crc_6); - - igt_plane_set_fb(primary, NULL); - igt_plane_set_fb(sprite, NULL); - - functional_test_fini(&test, output); + igt_assert_crc_equal(&test->crc_2, &test->crc_6); } - static void -test_universal_api_with_crtc_off(data_t *data, enum pipe pipe, igt_output_t *output) +test_universal_api_with_crtc_off(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) { - functional_test_t test = { .data = data }; + data_t *data = test->data; igt_display_t *display = &data->display; - igt_plane_t *primary, *sprite; - int num_primary = 0, num_cursor = 0; - int i; - igt_require_pipe(display, pipe); - - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), - kmstest_pipe_name(pipe)); - - functional_test_init(&test, output, pipe); - - /* - * Make sure we have no more than one primary or cursor plane per crtc. - * If the kernel accidentally calls drm_plane_init() rather than - * drm_universal_plane_init(), the type enum can get interpreted as a - * boolean and show up in userspace as the wrong type. - */ - for (i = 0; i < display->pipes[pipe].n_planes; i++) - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) - num_primary++; - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) - num_cursor++; - - igt_warn_on(num_primary != 1); - igt_warn_on(num_cursor > 1); - - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); - if (!sprite) { - functional_test_fini(&test, output); - igt_skip("No sprite plane available\n"); - } - - igt_plane_set_position(sprite, 100, 100); - - /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); + /* Legacy API', blue primary, red sprite (CRC 2) */ + igt_plane_set_fb(primary, &test->blue_fb); + igt_plane_set_fb(sprite, &test->red_fb); igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_2); - /* Step 7: Legacy API's, yellow primary, no sprite */ - igt_plane_set_fb(primary, &test.yellow_fb); + /* Legacy API's, yellow primary, no sprite */ + igt_plane_set_fb(primary, &test->yellow_fb); igt_plane_set_fb(sprite, NULL); igt_display_commit2(display, COMMIT_LEGACY); - /* Step 8: Disable CRTC */ + /* Disable CRTC */ igt_plane_set_fb(primary, NULL); igt_display_commit2(display, COMMIT_LEGACY); - /* Step 9: Universal API's with crtc off: + /* Universal API's with crtc off: * - red sprite * - multiple primary fb's, ending in blue */ - igt_plane_set_fb(sprite, &test.red_fb); + igt_plane_set_fb(sprite, &test->red_fb); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_plane_set_fb(primary, &test.yellow_fb); + igt_plane_set_fb(primary, &test->yellow_fb); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_plane_set_fb(primary, &test.black_fb); + igt_plane_set_fb(primary, &test->black_fb); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_plane_set_fb(primary, &test.blue_fb); + igt_plane_set_fb(primary, &test->blue_fb); igt_display_commit2(display, COMMIT_UNIVERSAL); - /* Step 10: Enable crtc (fb = -1), take CRC (CRC 7) */ + /* Enable crtc (fb = -1), take CRC (CRC 7) */ igt_assert(drmModeSetCrtc(data->drm_fd, output->config.crtc->crtc_id, -1, 0, 0, &output->config.connector->connector_id, - 1, test.mode) == 0); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_7); + 1, test->mode) == 0); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_7); /* * We should be able to setup plane FB's while CRTC is disabled and * then have them pop up correctly when the CRTC is re-enabled. */ - igt_assert_crc_equal(&test.crc_2, &test.crc_7); - - - igt_plane_set_fb(primary, NULL); - igt_plane_set_fb(sprite, NULL); - - functional_test_fini(&test, output); + igt_assert_crc_equal(&test->crc_2, &test->crc_7); } -//SUCCESS on VKMS and i915 static void -test_legacy_modeset_to_yellow_fb(data_t *data, enum pipe pipe, igt_output_t *output) +test_legacy_modeset_to_yellow_fb(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) { - functional_test_t test = { .data = data }; + data_t *data = test->data; igt_display_t *display = &data->display; - igt_plane_t *primary, *sprite; - int num_primary = 0, num_cursor = 0; - int i; - - igt_require_pipe(display, pipe); - - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), - kmstest_pipe_name(pipe)); - - functional_test_init(&test, output, pipe); - - /* - * Make sure we have no more than one primary or cursor plane per crtc. - * If the kernel accidentally calls drm_plane_init() rather than - * drm_universal_plane_init(), the type enum can get interpreted as a - * boolean and show up in userspace as the wrong type. - */ - for (i = 0; i < display->pipes[pipe].n_planes; i++) - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) - num_primary++; - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) - num_cursor++; - - igt_warn_on(num_primary != 1); - igt_warn_on(num_cursor > 1); - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); - if (!sprite) { - functional_test_fini(&test, output); - igt_skip("No sprite plane available\n"); - } - - igt_plane_set_position(sprite, 100, 100); - - /* Step 3: Legacy API's, yellow primary (CRC 3) */ - igt_plane_set_fb(primary, &test.yellow_fb); + /* Legacy API's, yellow primary (CRC 3) */ + igt_plane_set_fb(primary, &test->yellow_fb); igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_3); - /* Step 11: Disable primary plane */ - igt_plane_set_fb(primary, NULL); - igt_display_commit2(display, COMMIT_UNIVERSAL); + /* Disable primary plane */ + if (!is_amdgpu_device(data->drm_fd)) { + igt_plane_set_fb(primary, NULL); + igt_display_commit2(display, COMMIT_UNIVERSAL); + } - /* Step 12: Legacy modeset to yellow FB (CRC 8) */ - igt_plane_set_fb(primary, &test.yellow_fb); + /* Legacy modeset to yellow FB (CRC 8) */ + igt_plane_set_fb(primary, &test->yellow_fb); igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_8); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_8); /* * We should be able to modeset with the primary plane off * successfully */ - igt_assert_crc_equal(&test.crc_3, &test.crc_8); - - igt_plane_set_fb(primary, NULL); - igt_plane_set_fb(sprite, NULL); - - functional_test_fini(&test, output); + igt_assert_crc_equal(&test->crc_3, &test->crc_8); } -//FAIL on VKMS -//SUCCESS on i915 static void -test_set_primary_completely_offscreen(data_t *data, enum pipe pipe, igt_output_t *output) +test_set_primary_completely_offscreen(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) { - functional_test_t test = { .data = data }; + data_t *data = test->data; igt_display_t *display = &data->display; - igt_plane_t *primary, *sprite; - int num_primary = 0, num_cursor = 0; - int i; - - igt_require_pipe(display, pipe); - - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), - kmstest_pipe_name(pipe)); - - functional_test_init(&test, output, pipe); - - /* - * Make sure we have no more than one primary or cursor plane per crtc. - * If the kernel accidentally calls drm_plane_init() rather than - * drm_universal_plane_init(), the type enum can get interpreted as a - * boolean and show up in userspace as the wrong type. - */ - for (i = 0; i < display->pipes[pipe].n_planes; i++) - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) - num_primary++; - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) - num_cursor++; - igt_warn_on(num_primary != 1); - igt_warn_on(num_cursor > 1); - - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); - if (!sprite) { - functional_test_fini(&test, output); - igt_skip("No sprite plane available\n"); - } - - igt_plane_set_position(sprite, 100, 100); - - /* Step 3: Legacy API's, yellow primary (CRC 3) */ - igt_plane_set_fb(primary, &test.yellow_fb); + /* Legacy API's, yellow primary */ + igt_plane_set_fb(primary, &test->yellow_fb); igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); - /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); + /* Universal API's, blue primary, red sprite */ + igt_plane_set_fb(primary, &test->blue_fb); + igt_plane_set_fb(sprite, &test->red_fb); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); /* Step 5: Universal API's, disable primary plane (CRC 5) */ if (!is_amdgpu_device(data->drm_fd)) { igt_plane_set_fb(primary, NULL); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_5); } /* - * Step 14: Universal API, set primary completely offscreen (CRC 9). + * Universal API, set primary completely offscreen (CRC 9). * Skip on amdgpu which rejects offscreen planes. */ if (!is_amdgpu_device(data->drm_fd)) { igt_assert(drmModeSetPlane(data->drm_fd, primary->drm_plane->plane_id, output->config.crtc->crtc_id, - test.blue_fb.fb_id, 0, + test->blue_fb.fb_id, 0, 9000, 9000, - test.mode->hdisplay, - test.mode->vdisplay, + test->mode->hdisplay, + test->mode->vdisplay, IGT_FIXED(0,0), IGT_FIXED(0,0), - IGT_FIXED(test.mode->hdisplay,0), - IGT_FIXED(test.mode->vdisplay,0)) == 0); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_9); + IGT_FIXED(test->mode->hdisplay,0), + IGT_FIXED(test->mode->vdisplay,0)) == 0); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_9); } /* @@ -538,99 +307,52 @@ test_set_primary_completely_offscreen(data_t *data, enum pipe pipe, igt_output_t * skipped with offscreen planes previously. */ if (!is_amdgpu_device(data->drm_fd)) - igt_assert_crc_equal(&test.crc_5, &test.crc_9); - - igt_plane_set_fb(primary, NULL); - igt_plane_set_fb(sprite, NULL); - - functional_test_fini(&test, output); + igt_assert_crc_equal(&test->crc_5, &test->crc_9); } -//SUCCESS on VKMS and i915 + static void -test_explicitly_disable_primary(data_t *data, enum pipe pipe, igt_output_t *output) +test_explicitly_disable_primary(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) { - functional_test_t test = {.data = data}; + data_t *data = test->data; igt_display_t *display = &data->display; - igt_plane_t *primary, *sprite; - int num_primary = 0, num_cursor = 0; - int i; - - igt_require_pipe(display, pipe); - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), - kmstest_pipe_name(pipe)); - - functional_test_init(&test, output, pipe); - - /* - * Make sure we have no more than one primary or cursor plane per crtc. - * If the kernel accidentally calls drm_plane_init() rather than - * drm_universal_plane_init(), the type enum can get interpreted as a - * boolean and show up in userspace as the wrong type. - */ - for (i = 0; i < display->pipes[pipe].n_planes; i++) - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) - num_primary++; - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) - num_cursor++; - - igt_warn_on(num_primary != 1); - igt_warn_on(num_cursor > 1); - - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); - if (!sprite) - { - functional_test_fini(&test, output); - igt_skip("No sprite plane available\n"); - } - - igt_plane_set_position(sprite, 100, 100); - - /* Step 3: Legacy API's, yellow primary (CRC 3) */ - igt_plane_set_fb(primary, &test.yellow_fb); + /* Legacy API's, yellow primary */ + igt_plane_set_fb(primary, &test->yellow_fb); igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); - /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); + /* Universal API's, blue primary, red sprite */ + igt_plane_set_fb(primary, &test->blue_fb); + igt_plane_set_fb(sprite, &test->red_fb); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); - /* Step 5: Universal API's, disable primary plane (CRC 5) */ + /* Universal API's, disable primary plane */ if (!is_amdgpu_device(data->drm_fd)) { igt_plane_set_fb(primary, NULL); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_5); } /* - * Step 15: Explicitly disable primary after it's already been + * Explicitly disable primary after it's already been * implicitly disabled (CRC 10). */ if (!is_amdgpu_device(data->drm_fd)) { igt_plane_set_fb(primary, NULL); igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_10); + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_10); } - /* Step 16: Legacy API's, blue primary, red sprite */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); + /* Legacy API's, blue primary, red sprite */ + igt_plane_set_fb(primary, &test->blue_fb); + igt_plane_set_fb(sprite, &test->red_fb); igt_display_commit2(display, COMMIT_LEGACY); /* * We should be able to explicitly disable an already * implicitly-disabled primary plane */ - igt_assert_crc_equal(&test.crc_5, &test.crc_10); - - igt_plane_set_fb(primary, NULL); - igt_plane_set_fb(sprite, NULL); - - functional_test_fini(&test, output); + igt_assert_crc_equal(&test->crc_5, &test->crc_10); } @@ -650,196 +372,88 @@ test_explicitly_disable_primary(data_t *data, enum pipe pipe, igt_output_t *outp * - Enable CRTC, grab CRC:6 (should be same as CRC:2) */ static void -functional_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output) +run_functional_test_pipe(data_t *data, enum pipe pipe) { - functional_test_t test = { .data = data }; + igt_output_t *output; + functional_test_t test = {.data = data}; igt_display_t *display = &data->display; igt_plane_t *primary, *sprite; int num_primary = 0, num_cursor = 0; int i; + + struct { + const char *name; + void (*testfunc) (functional_test_t*, igt_plane_t*, igt_plane_t* , igt_output_t*); + const char *desc; + } functional_tests[] = { + { "test-legacy-atomic-interfaces", test_legacy_atomic_interfaces, + " Blue bg + red sprite should be same under both types of API's " }, - igt_require_pipe(display, pipe); - - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), - kmstest_pipe_name(pipe)); - - functional_test_init(&test, output, pipe); + { "test-disable-primary-red-sprite", test_disable_primary_red_sprite, + "Disabling primary plane should be same as black primary " }, - /* - * Make sure we have no more than one primary or cursor plane per crtc. - * If the kernel accidentally calls drm_plane_init() rather than - * drm_universal_plane_init(), the type enum can get interpreted as a - * boolean and show up in userspace as the wrong type. - */ - for (i = 0; i < display->pipes[pipe].n_planes; i++) - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) - num_primary++; - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) - num_cursor++; + { "test-re-enable-primary-with-blue", test_re_enable_primary_with_blue, + "Re-enabling primary should return to blue properly " }, - igt_warn_on(num_primary != 1); - igt_warn_on(num_cursor > 1); + { "test-universal-api-with-crtc-off", test_universal_api_with_crtc_off, + " setup plane FB's while CRTC is disabled and then have them pop up correctly when the CRTC is re-enabled" }, - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); - if (!sprite) { - functional_test_fini(&test, output); - igt_skip("No sprite plane available\n"); - } + { "test-legacy-modeset-to-yellow-fb", test_legacy_modeset_to_yellow_fb, + " modeset with the primary plane off successfully" }, - igt_plane_set_position(sprite, 100, 100); + { "test-set-primary-completely-offscreen", test_set_primary_completely_offscreen, + " move the primary plane completely offscreen" }, - /* Step 1: Legacy API's, black primary, red sprite (CRC 1) */ - igt_plane_set_fb(primary, &test.black_fb); - igt_plane_set_fb(sprite, &test.red_fb); - igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_1); + { "test-explicitly-disable-primary", test_explicitly_disable_primary, + "explicitly disable an already implicitly-disabled primary plane " } + }; - /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); - igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); - - /* Step 3: Legacy API's, yellow primary (CRC 3) */ - igt_plane_set_fb(primary, &test.yellow_fb); - igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); - - /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); - igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); - - /* Step 5: Universal API's, disable primary plane (CRC 5) */ - if (!is_amdgpu_device(data->drm_fd)) { - igt_plane_set_fb(primary, NULL); - igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); + igt_fixture { + igt_require_pipe(&data->display, pipe); } - /* Step 6: Universal API's, re-enable primary with blue (CRC 6) */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_6); - - /* Step 7: Legacy API's, yellow primary, no sprite */ - igt_plane_set_fb(primary, &test.yellow_fb); - igt_plane_set_fb(sprite, NULL); - igt_display_commit2(display, COMMIT_LEGACY); - - /* Step 8: Disable CRTC */ - igt_plane_set_fb(primary, NULL); - igt_display_commit2(display, COMMIT_LEGACY); - - /* Step 9: Universal API's with crtc off: - * - red sprite - * - multiple primary fb's, ending in blue - */ - igt_plane_set_fb(sprite, &test.red_fb); - igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_plane_set_fb(primary, &test.yellow_fb); - igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_plane_set_fb(primary, &test.black_fb); - igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_plane_set_fb(primary, &test.blue_fb); - igt_display_commit2(display, COMMIT_UNIVERSAL); - - /* Step 10: Enable crtc (fb = -1), take CRC (CRC 7) */ - igt_assert(drmModeSetCrtc(data->drm_fd, output->config.crtc->crtc_id, -1, - 0, 0, &output->config.connector->connector_id, - 1, test.mode) == 0); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_7); - - /* Step 11: Disable primary plane */ - igt_output_set_pipe(output, PIPE_NONE); - igt_display_commit2(display, COMMIT_ATOMIC); - igt_plane_set_fb(primary, NULL); - igt_display_commit2(display, COMMIT_UNIVERSAL); + for (int index = 0; index < ARRAY_SIZE(functional_tests); index++) { + igt_describe(functional_tests[index].desc); + igt_subtest_group { + igt_subtest_f("%s-%s",functional_tests[index].name, kmstest_pipe_name(pipe)) { + for_each_valid_output_on_pipe(&data->display, pipe, output) { + igt_require_pipe(display, pipe); + + igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), + kmstest_pipe_name(pipe)); + + functional_test_init(&test, output, pipe); + + for (i = 0; i < display->pipes[pipe].n_planes; i++) + if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) + num_primary++; + else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) + num_cursor++; + + igt_warn_on(num_primary != 1); + igt_warn_on(num_cursor > 1); + + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); + + if (!sprite) + { + functional_test_fini(&test, output); + igt_skip("No sprite plane available\n"); + } + + igt_plane_set_position(sprite, 100, 100); + + functional_tests[index].testfunc(&test, primary, sprite, output); - /* Step 12: Legacy modeset to yellow FB (CRC 8) */ - igt_plane_set_fb(primary, &test.yellow_fb); - igt_output_set_pipe(output, pipe); - igt_display_commit2(display, COMMIT_LEGACY); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_8); + igt_plane_set_fb(primary, NULL); + igt_plane_set_fb(sprite, NULL); - /* Step 13: Legacy API', blue primary, red sprite */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); - igt_display_commit2(display, COMMIT_LEGACY); - - /* - * Step 14: Universal API, set primary completely offscreen (CRC 9). - * Skip on amdgpu which rejects offscreen planes. - */ - if (!is_amdgpu_device(data->drm_fd)) { - igt_assert(drmModeSetPlane(data->drm_fd, primary->drm_plane->plane_id, - output->config.crtc->crtc_id, - test.blue_fb.fb_id, 0, - 9000, 9000, - test.mode->hdisplay, - test.mode->vdisplay, - IGT_FIXED(0,0), IGT_FIXED(0,0), - IGT_FIXED(test.mode->hdisplay,0), - IGT_FIXED(test.mode->vdisplay,0)) == 0); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_9); - } - - /* - * Step 15: Explicitly disable primary after it's already been - * implicitly disabled (CRC 10). - */ - if (!is_amdgpu_device(data->drm_fd)) { - igt_plane_set_fb(primary, NULL); - igt_display_commit2(display, COMMIT_UNIVERSAL); - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_10); + functional_test_fini(&test, output); + } + } + } } - - /* Step 16: Legacy API's, blue primary, red sprite */ - igt_plane_set_fb(primary, &test.blue_fb); - igt_plane_set_fb(sprite, &test.red_fb); - igt_display_commit2(display, COMMIT_LEGACY); - - /* Blue bg + red sprite should be same under both types of API's */ - igt_assert_crc_equal(&test.crc_2, &test.crc_4); - - /* Disabling primary plane should be same as black primary */ - if (!is_amdgpu_device(data->drm_fd)) - igt_assert_crc_equal(&test.crc_1, &test.crc_5); - - /* Re-enabling primary should return to blue properly */ - igt_assert_crc_equal(&test.crc_2, &test.crc_6); - - /* - * We should be able to setup plane FB's while CRTC is disabled and - * then have them pop up correctly when the CRTC is re-enabled. - */ - igt_assert_crc_equal(&test.crc_2, &test.crc_7); - - /* - * We should be able to modeset with the primary plane off - * successfully - */ - igt_assert_crc_equal(&test.crc_3, &test.crc_8); - - /* - * We should be able to move the primary plane completely offscreen - * and have it disable successfully. Skip on amdgpu since crc_9 was - * skipped with offscreen planes previously. - */ - igt_assert_crc_equal(&test.crc_5, &test.crc_9); - - /* - * We should be able to explicitly disable an already - * implicitly-disabled primary plane - */ - igt_assert_crc_equal(&test.crc_5, &test.crc_10); - - igt_plane_set_fb(primary, NULL); - igt_plane_set_fb(sprite, NULL); - - functional_test_fini(&test, output); } static void @@ -1303,54 +917,6 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) igt_require_f(valid_tests, "no valid crtc/connector combinations found\n"); } - - igt_describe("Check the switching between different primary plane fbs with CRTC off"); - igt_subtest_f("test-legacy-atomic-interfaces-%s", - kmstest_pipe_name(pipe)) - for_each_valid_output_on_pipe(&data->display, pipe, output) - test_legacy_atomic_interfaces(data, pipe, output); - - igt_describe("Check the switching between different primary plane fbs with CRTC off"); - igt_subtest_f("disable-primary-red-sprite-%s", - kmstest_pipe_name(pipe)) - for_each_valid_output_on_pipe(&data->display, pipe, output) - test_disable_primary_red_sprite(data, pipe, output); - - igt_describe("Check the switching between different primary plane fbs with CRTC off"); - igt_subtest_f("re-enable-primary-with-blue-%s", - kmstest_pipe_name(pipe)) - for_each_valid_output_on_pipe(&data->display, pipe, output) - test_re_enable_primary_with_blue(data, pipe, output); - - igt_describe("Check the switching between different primary plane fbs with CRTC off"); - igt_subtest_f("universal-api-with-crtc-off-%s", - kmstest_pipe_name(pipe)) - for_each_valid_output_on_pipe(&data->display, pipe, output) - test_universal_api_with_crtc_off(data, pipe, output); - - igt_describe("Check the switching between different primary plane fbs with CRTC off"); - igt_subtest_f("legacy-modeset-to-yellow-fb-%s", - kmstest_pipe_name(pipe)) - for_each_valid_output_on_pipe(&data->display, pipe, output) - test_legacy_modeset_to_yellow_fb(data, pipe, output); - - igt_describe("Check the switching between different primary plane fbs with CRTC off"); - igt_subtest_f("set-primary-completely-offscreen-%s", - kmstest_pipe_name(pipe)) - for_each_valid_output_on_pipe(&data->display, pipe, output) - test_set_primary_completely_offscreen(data, pipe, output); - - igt_describe("Check the switching between different primary plane fbs with CRTC off"); - igt_subtest_f("explicitly-disable-primary-%s", - kmstest_pipe_name(pipe)) - for_each_valid_output_on_pipe(&data->display, pipe, output) - test_explicitly_disable_primary(data, pipe, output); - - igt_describe("Check the switching between different primary plane fbs with CRTC off"); - igt_subtest_f("universal-plane-pipe-%s-functional", - kmstest_pipe_name(pipe)) - for_each_valid_output_on_pipe(&data->display, pipe, output) - functional_test_pipe(data, pipe, output); igt_describe("Test for scale-up or scale-down using universal plane API without covering CRTC"); igt_subtest_f("universal-plane-pipe-%s-sanity", @@ -1396,6 +962,8 @@ igt_main } for_each_pipe_static(pipe) { + igt_subtest_group + run_functional_test_pipe(&data, pipe); igt_subtest_group run_tests_for_pipe(&data, pipe); } -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH RFC i-g-t v2 8/8] tests/kms_universal_plane: create the run_functional_test_pipe and call all tests from it 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 8/8] tests/kms_universal_plane: create the run_functional_test_pipe and call all tests from it Alaa Emad @ 2023-01-10 18:43 ` Alex Hung 0 siblings, 0 replies; 13+ messages in thread From: Alex Hung @ 2023-01-10 18:43 UTC (permalink / raw) To: Alaa Emad, igt-dev; +Cc: petri.latvala On 2023-01-07 06:45, Alaa Emad wrote: > after decoupling `functional_test_pipe` to seven subtests, create the `run_functional_test_pipe` and > call all tests from it and improve subtests's code. > > Signed-off-by: Alaa Emad <aemad@igalia.com> > --- > tests/kms_universal_plane.c | 764 ++++++++---------------------------- > 1 file changed, 166 insertions(+), 598 deletions(-) > > diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c > index 743ccbc6..1d6353aa 100644 > --- a/tests/kms_universal_plane.c > +++ b/tests/kms_universal_plane.c > @@ -113,423 +113,192 @@ functional_test_fini(functional_test_t *test, igt_output_t *output) > } > > static void > -test_legacy_atomic_interfaces(data_t *data, enum pipe pipe, igt_output_t *output) > +test_legacy_atomic_interfaces(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) > { > - functional_test_t test = { .data = data }; > + data_t *data = test->data; > igt_display_t *display = &data->display; > - igt_plane_t *primary, *sprite; > - int num_primary = 0, num_cursor = 0; > - int i; > - > - igt_require_pipe(display, pipe); > - > - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), > - kmstest_pipe_name(pipe)); > - > - functional_test_init(&test, output, pipe); > - > - /* > - * Make sure we have no more than one primary or cursor plane per crtc. > - * If the kernel accidentally calls drm_plane_init() rather than > - * drm_universal_plane_init(), the type enum can get interpreted as a > - * boolean and show up in userspace as the wrong type. > - */ > - for (i = 0; i < display->pipes[pipe].n_planes; i++) > - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) > - num_primary++; > - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) > - num_cursor++; > - > - igt_warn_on(num_primary != 1); > - igt_warn_on(num_cursor > 1); > - > - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > - if (!sprite) { > - functional_test_fini(&test, output); > - igt_skip("No sprite plane available\n"); > - } > - > - igt_plane_set_position(sprite, 100, 100); > - > - /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > + > + /* Legacy API', blue primary, red sprite (CRC 2) */ > + igt_plane_set_fb(primary, &test->blue_fb); > + igt_plane_set_fb(sprite, &test->red_fb); > igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_2); > > - /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > + /* Universal API's, blue primary, red sprite (CRC 4) */ > + igt_plane_set_fb(primary, &test->blue_fb); > + igt_plane_set_fb(sprite, &test->red_fb); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); > - > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_4); > > /* Blue bg + red sprite should be same under both types of API's */ > - igt_assert_crc_equal(&test.crc_2, &test.crc_4); > - > - igt_plane_set_fb(primary, NULL); > - igt_plane_set_fb(sprite, NULL); > + igt_assert_crc_equal(&test->crc_2, &test->crc_4); > > - functional_test_fini(&test, output); > } > > -//SUCCESS on VKMS and i915 > static void > -test_disable_primary_red_sprite(data_t *data, enum pipe pipe, igt_output_t *output) > +test_disable_primary_red_sprite(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) > { > - functional_test_t test = { .data = data }; > + data_t *data = test->data; > igt_display_t *display = &data->display; > - igt_plane_t *primary, *sprite; > - int num_primary = 0, num_cursor = 0; > - int i; > > - igt_require_pipe(display, pipe); > - > - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), > - kmstest_pipe_name(pipe)); > - > - functional_test_init(&test, output, pipe); > - > - /* > - * Make sure we have no more than one primary or cursor plane per crtc. > - * If the kernel accidentally calls drm_plane_init() rather than > - * drm_universal_plane_init(), the type enum can get interpreted as a > - * boolean and show up in userspace as the wrong type. > - */ > - for (i = 0; i < display->pipes[pipe].n_planes; i++) > - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) > - num_primary++; > - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) > - num_cursor++; > - > - igt_warn_on(num_primary != 1); > - igt_warn_on(num_cursor > 1); > - > - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > - if (!sprite) { > - functional_test_fini(&test, output); > - igt_skip("No sprite plane available\n"); > - } > - > - igt_plane_set_position(sprite, 100, 100); > - > - /* Step 1: Legacy API's, black primary, red sprite (CRC 1) */ > - igt_plane_set_fb(primary, &test.black_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > + /* Legacy API's, black primary, red sprite (CRC 1) */ > + igt_plane_set_fb(primary, &test->black_fb); > + igt_plane_set_fb(sprite, &test->red_fb); > igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_1); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_1); > The below two "if (!is_amdgpu_device(data->drm_fd))" can be combined. > + /* Universal API's, disable primary plane (CRC 5) */ > if (!is_amdgpu_device(data->drm_fd)) { > igt_plane_set_fb(primary, NULL); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_5); > } > > /* Disabling primary plane should be same as black primary */ > if (!is_amdgpu_device(data->drm_fd)) > - igt_assert_crc_equal(&test.crc_1, &test.crc_5); > - > - igt_plane_set_fb(primary, NULL); > - igt_plane_set_fb(sprite, NULL); > + igt_assert_crc_equal(&test->crc_1, &test->crc_5); > > - functional_test_fini(&test, output); > } > > static void > -test_re_enable_primary_with_blue(data_t *data, enum pipe pipe, igt_output_t *output) > +test_re_enable_primary_with_blue(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) > { > - functional_test_t test = { .data = data }; > + data_t *data = test->data; > igt_display_t *display = &data->display; > - igt_plane_t *primary, *sprite; > - int num_primary = 0, num_cursor = 0; > - int i; > > - igt_require_pipe(display, pipe); > - > - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), > - kmstest_pipe_name(pipe)); > - > - functional_test_init(&test, output, pipe); > - > - /* > - * Make sure we have no more than one primary or cursor plane per crtc. > - * If the kernel accidentally calls drm_plane_init() rather than > - * drm_universal_plane_init(), the type enum can get interpreted as a > - * boolean and show up in userspace as the wrong type. > - */ > - for (i = 0; i < display->pipes[pipe].n_planes; i++) > - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) > - num_primary++; > - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) > - num_cursor++; > - > - igt_warn_on(num_primary != 1); > - igt_warn_on(num_cursor > 1); > - > - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > - if (!sprite) { > - functional_test_fini(&test, output); > - igt_skip("No sprite plane available\n"); > - } > - > - igt_plane_set_position(sprite, 100, 100); > - > - /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > + /* Legacy API', blue primary, red sprite (CRC 2) */ > + igt_plane_set_fb(primary, &test->blue_fb); > + igt_plane_set_fb(sprite, &test->red_fb); > igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_2); > > - igt_plane_set_fb(primary, NULL); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > + if (!is_amdgpu_device(data->drm_fd)){ > + igt_plane_set_fb(primary, NULL); > + igt_display_commit2(display, COMMIT_UNIVERSAL); > + } > > - /* Step 6: Universal API's, re-enable primary with blue (CRC 6) */ > - igt_plane_set_fb(primary, &test.blue_fb); > + /* Universal API's, re-enable primary with blue (CRC 6) */ > + igt_plane_set_fb(primary, &test->blue_fb); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_6); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_6); > > /* Re-enabling primary should return to blue properly */ > - igt_assert_crc_equal(&test.crc_2, &test.crc_6); > - > - igt_plane_set_fb(primary, NULL); > - igt_plane_set_fb(sprite, NULL); > - > - functional_test_fini(&test, output); > + igt_assert_crc_equal(&test->crc_2, &test->crc_6); > } > > - > static void > -test_universal_api_with_crtc_off(data_t *data, enum pipe pipe, igt_output_t *output) > +test_universal_api_with_crtc_off(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) > { > - functional_test_t test = { .data = data }; > + data_t *data = test->data; > igt_display_t *display = &data->display; > - igt_plane_t *primary, *sprite; > - int num_primary = 0, num_cursor = 0; > - int i; > > - igt_require_pipe(display, pipe); > - > - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), > - kmstest_pipe_name(pipe)); > - > - functional_test_init(&test, output, pipe); > - > - /* > - * Make sure we have no more than one primary or cursor plane per crtc. > - * If the kernel accidentally calls drm_plane_init() rather than > - * drm_universal_plane_init(), the type enum can get interpreted as a > - * boolean and show up in userspace as the wrong type. > - */ > - for (i = 0; i < display->pipes[pipe].n_planes; i++) > - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) > - num_primary++; > - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) > - num_cursor++; > - > - igt_warn_on(num_primary != 1); > - igt_warn_on(num_cursor > 1); > - > - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > - if (!sprite) { > - functional_test_fini(&test, output); > - igt_skip("No sprite plane available\n"); > - } > - > - igt_plane_set_position(sprite, 100, 100); > - > - /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > + /* Legacy API', blue primary, red sprite (CRC 2) */ > + igt_plane_set_fb(primary, &test->blue_fb); > + igt_plane_set_fb(sprite, &test->red_fb); > igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_2); > > - /* Step 7: Legacy API's, yellow primary, no sprite */ > - igt_plane_set_fb(primary, &test.yellow_fb); > + /* Legacy API's, yellow primary, no sprite */ > + igt_plane_set_fb(primary, &test->yellow_fb); > igt_plane_set_fb(sprite, NULL); > igt_display_commit2(display, COMMIT_LEGACY); > > - /* Step 8: Disable CRTC */ > + /* Disable CRTC */ > igt_plane_set_fb(primary, NULL); > igt_display_commit2(display, COMMIT_LEGACY); > > - /* Step 9: Universal API's with crtc off: > + /* Universal API's with crtc off: > * - red sprite > * - multiple primary fb's, ending in blue > */ > - igt_plane_set_fb(sprite, &test.red_fb); > + igt_plane_set_fb(sprite, &test->red_fb); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_plane_set_fb(primary, &test.yellow_fb); > + igt_plane_set_fb(primary, &test->yellow_fb); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_plane_set_fb(primary, &test.black_fb); > + igt_plane_set_fb(primary, &test->black_fb); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_plane_set_fb(primary, &test.blue_fb); > + igt_plane_set_fb(primary, &test->blue_fb); > igt_display_commit2(display, COMMIT_UNIVERSAL); > > - /* Step 10: Enable crtc (fb = -1), take CRC (CRC 7) */ > + /* Enable crtc (fb = -1), take CRC (CRC 7) */ > igt_assert(drmModeSetCrtc(data->drm_fd, output->config.crtc->crtc_id, -1, > 0, 0, &output->config.connector->connector_id, > - 1, test.mode) == 0); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_7); > + 1, test->mode) == 0); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_7); > > /* > * We should be able to setup plane FB's while CRTC is disabled and > * then have them pop up correctly when the CRTC is re-enabled. > */ > - igt_assert_crc_equal(&test.crc_2, &test.crc_7); > - > - > - igt_plane_set_fb(primary, NULL); > - igt_plane_set_fb(sprite, NULL); > - > - functional_test_fini(&test, output); > + igt_assert_crc_equal(&test->crc_2, &test->crc_7); > } > > -//SUCCESS on VKMS and i915 > static void > -test_legacy_modeset_to_yellow_fb(data_t *data, enum pipe pipe, igt_output_t *output) > +test_legacy_modeset_to_yellow_fb(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) > { > - functional_test_t test = { .data = data }; > + data_t *data = test->data; > igt_display_t *display = &data->display; > - igt_plane_t *primary, *sprite; > - int num_primary = 0, num_cursor = 0; > - int i; > - > - igt_require_pipe(display, pipe); > - > - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), > - kmstest_pipe_name(pipe)); > - > - functional_test_init(&test, output, pipe); > - > - /* > - * Make sure we have no more than one primary or cursor plane per crtc. > - * If the kernel accidentally calls drm_plane_init() rather than > - * drm_universal_plane_init(), the type enum can get interpreted as a > - * boolean and show up in userspace as the wrong type. > - */ > - for (i = 0; i < display->pipes[pipe].n_planes; i++) > - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) > - num_primary++; > - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) > - num_cursor++; > - > - igt_warn_on(num_primary != 1); > - igt_warn_on(num_cursor > 1); > > - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > - if (!sprite) { > - functional_test_fini(&test, output); > - igt_skip("No sprite plane available\n"); > - } > - > - igt_plane_set_position(sprite, 100, 100); > - > - /* Step 3: Legacy API's, yellow primary (CRC 3) */ > - igt_plane_set_fb(primary, &test.yellow_fb); > + /* Legacy API's, yellow primary (CRC 3) */ > + igt_plane_set_fb(primary, &test->yellow_fb); > igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_3); > > - /* Step 11: Disable primary plane */ > - igt_plane_set_fb(primary, NULL); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > + /* Disable primary plane */ > + if (!is_amdgpu_device(data->drm_fd)) { > + igt_plane_set_fb(primary, NULL); > + igt_display_commit2(display, COMMIT_UNIVERSAL); > + } > > - /* Step 12: Legacy modeset to yellow FB (CRC 8) */ > - igt_plane_set_fb(primary, &test.yellow_fb); > + /* Legacy modeset to yellow FB (CRC 8) */ > + igt_plane_set_fb(primary, &test->yellow_fb); > igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_8); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_8); > > /* > * We should be able to modeset with the primary plane off > * successfully > */ > - igt_assert_crc_equal(&test.crc_3, &test.crc_8); > - > - igt_plane_set_fb(primary, NULL); > - igt_plane_set_fb(sprite, NULL); > - > - functional_test_fini(&test, output); > + igt_assert_crc_equal(&test->crc_3, &test->crc_8); > } > > -//FAIL on VKMS > -//SUCCESS on i915 > static void > -test_set_primary_completely_offscreen(data_t *data, enum pipe pipe, igt_output_t *output) > +test_set_primary_completely_offscreen(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) > { > - functional_test_t test = { .data = data }; > + data_t *data = test->data; > igt_display_t *display = &data->display; > - igt_plane_t *primary, *sprite; > - int num_primary = 0, num_cursor = 0; > - int i; > - > - igt_require_pipe(display, pipe); > - > - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), > - kmstest_pipe_name(pipe)); > - > - functional_test_init(&test, output, pipe); > - > - /* > - * Make sure we have no more than one primary or cursor plane per crtc. > - * If the kernel accidentally calls drm_plane_init() rather than > - * drm_universal_plane_init(), the type enum can get interpreted as a > - * boolean and show up in userspace as the wrong type. > - */ > - for (i = 0; i < display->pipes[pipe].n_planes; i++) > - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) > - num_primary++; > - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) > - num_cursor++; > > - igt_warn_on(num_primary != 1); > - igt_warn_on(num_cursor > 1); > - > - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > - if (!sprite) { > - functional_test_fini(&test, output); > - igt_skip("No sprite plane available\n"); > - } > - > - igt_plane_set_position(sprite, 100, 100); > - > - /* Step 3: Legacy API's, yellow primary (CRC 3) */ > - igt_plane_set_fb(primary, &test.yellow_fb); > + /* Legacy API's, yellow primary */ > + igt_plane_set_fb(primary, &test->yellow_fb); > igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); > > - /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > + /* Universal API's, blue primary, red sprite */ > + igt_plane_set_fb(primary, &test->blue_fb); > + igt_plane_set_fb(sprite, &test->red_fb); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); > > /* Step 5: Universal API's, disable primary plane (CRC 5) */ "Step 5" should be removed as well. > if (!is_amdgpu_device(data->drm_fd)) { > igt_plane_set_fb(primary, NULL); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_5); > } > > /* > - * Step 14: Universal API, set primary completely offscreen (CRC 9). > + * Universal API, set primary completely offscreen (CRC 9). > * Skip on amdgpu which rejects offscreen planes. > */ > if (!is_amdgpu_device(data->drm_fd)) { The "if(!is_amdgpu_device(data->drm_fd))" can be combined with the previous one. > igt_assert(drmModeSetPlane(data->drm_fd, primary->drm_plane->plane_id, > output->config.crtc->crtc_id, > - test.blue_fb.fb_id, 0, > + test->blue_fb.fb_id, 0, > 9000, 9000, > - test.mode->hdisplay, > - test.mode->vdisplay, > + test->mode->hdisplay, > + test->mode->vdisplay, > IGT_FIXED(0,0), IGT_FIXED(0,0), > - IGT_FIXED(test.mode->hdisplay,0), > - IGT_FIXED(test.mode->vdisplay,0)) == 0); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_9); > + IGT_FIXED(test->mode->hdisplay,0), > + IGT_FIXED(test->mode->vdisplay,0)) == 0); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_9); > } > > /* > @@ -538,99 +307,52 @@ test_set_primary_completely_offscreen(data_t *data, enum pipe pipe, igt_output_t > * skipped with offscreen planes previously. > */ > if (!is_amdgpu_device(data->drm_fd)) So is this one. > - igt_assert_crc_equal(&test.crc_5, &test.crc_9); > - > - igt_plane_set_fb(primary, NULL); > - igt_plane_set_fb(sprite, NULL); > - > - functional_test_fini(&test, output); > + igt_assert_crc_equal(&test->crc_5, &test->crc_9); > } > > -//SUCCESS on VKMS and i915 > + > static void > -test_explicitly_disable_primary(data_t *data, enum pipe pipe, igt_output_t *output) > +test_explicitly_disable_primary(functional_test_t *test, igt_plane_t *primary, igt_plane_t *sprite, igt_output_t *output) > { > - functional_test_t test = {.data = data}; > + data_t *data = test->data; > igt_display_t *display = &data->display; > - igt_plane_t *primary, *sprite; > - int num_primary = 0, num_cursor = 0; > - int i; > - > - igt_require_pipe(display, pipe); > > - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), > - kmstest_pipe_name(pipe)); > - > - functional_test_init(&test, output, pipe); > - > - /* > - * Make sure we have no more than one primary or cursor plane per crtc. > - * If the kernel accidentally calls drm_plane_init() rather than > - * drm_universal_plane_init(), the type enum can get interpreted as a > - * boolean and show up in userspace as the wrong type. > - */ > - for (i = 0; i < display->pipes[pipe].n_planes; i++) > - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) > - num_primary++; > - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) > - num_cursor++; > - > - igt_warn_on(num_primary != 1); > - igt_warn_on(num_cursor > 1); > - > - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > - if (!sprite) > - { > - functional_test_fini(&test, output); > - igt_skip("No sprite plane available\n"); > - } > - > - igt_plane_set_position(sprite, 100, 100); > - > - /* Step 3: Legacy API's, yellow primary (CRC 3) */ > - igt_plane_set_fb(primary, &test.yellow_fb); > + /* Legacy API's, yellow primary */ > + igt_plane_set_fb(primary, &test->yellow_fb); > igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); > > - /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > + /* Universal API's, blue primary, red sprite */ > + igt_plane_set_fb(primary, &test->blue_fb); > + igt_plane_set_fb(sprite, &test->red_fb); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); > > - /* Step 5: Universal API's, disable primary plane (CRC 5) */ > + /* Universal API's, disable primary plane */ The below two "if (!is_amdgpu_device(data->drm_fd))" can be combined. > if (!is_amdgpu_device(data->drm_fd)) { > igt_plane_set_fb(primary, NULL); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_5); > } > > /* > - * Step 15: Explicitly disable primary after it's already been > + * Explicitly disable primary after it's already been > * implicitly disabled (CRC 10). > */ > if (!is_amdgpu_device(data->drm_fd)) { > igt_plane_set_fb(primary, NULL); > igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_10); > + igt_pipe_crc_collect_crc(test->pipe_crc, &test->crc_10); > } > > - /* Step 16: Legacy API's, blue primary, red sprite */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > + /* Legacy API's, blue primary, red sprite */ > + igt_plane_set_fb(primary, &test->blue_fb); > + igt_plane_set_fb(sprite, &test->red_fb); > igt_display_commit2(display, COMMIT_LEGACY); > > /* > * We should be able to explicitly disable an already > * implicitly-disabled primary plane > */ > - igt_assert_crc_equal(&test.crc_5, &test.crc_10); > - > - igt_plane_set_fb(primary, NULL); > - igt_plane_set_fb(sprite, NULL); > - > - functional_test_fini(&test, output); > + igt_assert_crc_equal(&test->crc_5, &test->crc_10); > } > > > @@ -650,196 +372,88 @@ test_explicitly_disable_primary(data_t *data, enum pipe pipe, igt_output_t *outp > * - Enable CRTC, grab CRC:6 (should be same as CRC:2) > */ > static void > -functional_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output) > +run_functional_test_pipe(data_t *data, enum pipe pipe) > { > - functional_test_t test = { .data = data }; > + igt_output_t *output; > + functional_test_t test = {.data = data}; > igt_display_t *display = &data->display; > igt_plane_t *primary, *sprite; > int num_primary = 0, num_cursor = 0; > int i; > + > + struct { > + const char *name; > + void (*testfunc) (functional_test_t*, igt_plane_t*, igt_plane_t* , igt_output_t*); > + const char *desc; > + } functional_tests[] = { > + { "test-legacy-atomic-interfaces", test_legacy_atomic_interfaces, > + " Blue bg + red sprite should be same under both types of API's " }, > > - igt_require_pipe(display, pipe); > - > - igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), > - kmstest_pipe_name(pipe)); > - > - functional_test_init(&test, output, pipe); > + { "test-disable-primary-red-sprite", test_disable_primary_red_sprite, > + "Disabling primary plane should be same as black primary " }, > > - /* > - * Make sure we have no more than one primary or cursor plane per crtc. > - * If the kernel accidentally calls drm_plane_init() rather than > - * drm_universal_plane_init(), the type enum can get interpreted as a > - * boolean and show up in userspace as the wrong type. > - */ > - for (i = 0; i < display->pipes[pipe].n_planes; i++) > - if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) > - num_primary++; > - else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) > - num_cursor++; > + { "test-re-enable-primary-with-blue", test_re_enable_primary_with_blue, > + "Re-enabling primary should return to blue properly " }, > > - igt_warn_on(num_primary != 1); > - igt_warn_on(num_cursor > 1); > + { "test-universal-api-with-crtc-off", test_universal_api_with_crtc_off, > + " setup plane FB's while CRTC is disabled and then have them pop up correctly when the CRTC is re-enabled" }, > > - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > - sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > - if (!sprite) { > - functional_test_fini(&test, output); > - igt_skip("No sprite plane available\n"); > - } > + { "test-legacy-modeset-to-yellow-fb", test_legacy_modeset_to_yellow_fb, > + " modeset with the primary plane off successfully" }, > > - igt_plane_set_position(sprite, 100, 100); > + { "test-set-primary-completely-offscreen", test_set_primary_completely_offscreen, > + " move the primary plane completely offscreen" }, > > - /* Step 1: Legacy API's, black primary, red sprite (CRC 1) */ > - igt_plane_set_fb(primary, &test.black_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > - igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_1); > + { "test-explicitly-disable-primary", test_explicitly_disable_primary, > + "explicitly disable an already implicitly-disabled primary plane " } > + }; > > - /* Step 2: Legacy API', blue primary, red sprite (CRC 2) */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > - igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_2); > - > - /* Step 3: Legacy API's, yellow primary (CRC 3) */ > - igt_plane_set_fb(primary, &test.yellow_fb); > - igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_3); > - > - /* Step 4: Universal API's, blue primary, red sprite (CRC 4) */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_4); > - > - /* Step 5: Universal API's, disable primary plane (CRC 5) */ > - if (!is_amdgpu_device(data->drm_fd)) { > - igt_plane_set_fb(primary, NULL); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_5); > + igt_fixture { > + igt_require_pipe(&data->display, pipe); > } > > - /* Step 6: Universal API's, re-enable primary with blue (CRC 6) */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_6); > - > - /* Step 7: Legacy API's, yellow primary, no sprite */ > - igt_plane_set_fb(primary, &test.yellow_fb); > - igt_plane_set_fb(sprite, NULL); > - igt_display_commit2(display, COMMIT_LEGACY); > - > - /* Step 8: Disable CRTC */ > - igt_plane_set_fb(primary, NULL); > - igt_display_commit2(display, COMMIT_LEGACY); > - > - /* Step 9: Universal API's with crtc off: > - * - red sprite > - * - multiple primary fb's, ending in blue > - */ > - igt_plane_set_fb(sprite, &test.red_fb); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_plane_set_fb(primary, &test.yellow_fb); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_plane_set_fb(primary, &test.black_fb); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > - > - /* Step 10: Enable crtc (fb = -1), take CRC (CRC 7) */ > - igt_assert(drmModeSetCrtc(data->drm_fd, output->config.crtc->crtc_id, -1, > - 0, 0, &output->config.connector->connector_id, > - 1, test.mode) == 0); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_7); > - > - /* Step 11: Disable primary plane */ > - igt_output_set_pipe(output, PIPE_NONE); > - igt_display_commit2(display, COMMIT_ATOMIC); > - igt_plane_set_fb(primary, NULL); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > + for (int index = 0; index < ARRAY_SIZE(functional_tests); index++) { > + igt_describe(functional_tests[index].desc); > + igt_subtest_group { > + igt_subtest_f("%s-%s",functional_tests[index].name, kmstest_pipe_name(pipe)) { > + for_each_valid_output_on_pipe(&data->display, pipe, output) { > + igt_require_pipe(display, pipe); > + > + igt_info("Testing connector %s using pipe %s\n", igt_output_name(output), > + kmstest_pipe_name(pipe)); > + > + functional_test_init(&test, output, pipe); > + > + for (i = 0; i < display->pipes[pipe].n_planes; i++) > + if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_PRIMARY) > + num_primary++; > + else if (display->pipes[pipe].planes[i].type == DRM_PLANE_TYPE_CURSOR) > + num_cursor++; > + > + igt_warn_on(num_primary != 1); > + igt_warn_on(num_cursor > 1); > + > + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); > + sprite = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY); > + > + if (!sprite) > + { > + functional_test_fini(&test, output); > + igt_skip("No sprite plane available\n"); > + } > + > + igt_plane_set_position(sprite, 100, 100); > + > + functional_tests[index].testfunc(&test, primary, sprite, output); > > - /* Step 12: Legacy modeset to yellow FB (CRC 8) */ > - igt_plane_set_fb(primary, &test.yellow_fb); > - igt_output_set_pipe(output, pipe); > - igt_display_commit2(display, COMMIT_LEGACY); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_8); > + igt_plane_set_fb(primary, NULL); > + igt_plane_set_fb(sprite, NULL); > > - /* Step 13: Legacy API', blue primary, red sprite */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > - igt_display_commit2(display, COMMIT_LEGACY); > - > - /* > - * Step 14: Universal API, set primary completely offscreen (CRC 9). > - * Skip on amdgpu which rejects offscreen planes. > - */ > - if (!is_amdgpu_device(data->drm_fd)) { > - igt_assert(drmModeSetPlane(data->drm_fd, primary->drm_plane->plane_id, > - output->config.crtc->crtc_id, > - test.blue_fb.fb_id, 0, > - 9000, 9000, > - test.mode->hdisplay, > - test.mode->vdisplay, > - IGT_FIXED(0,0), IGT_FIXED(0,0), > - IGT_FIXED(test.mode->hdisplay,0), > - IGT_FIXED(test.mode->vdisplay,0)) == 0); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_9); > - } > - > - /* > - * Step 15: Explicitly disable primary after it's already been > - * implicitly disabled (CRC 10). > - */ > - if (!is_amdgpu_device(data->drm_fd)) { > - igt_plane_set_fb(primary, NULL); > - igt_display_commit2(display, COMMIT_UNIVERSAL); > - igt_pipe_crc_collect_crc(test.pipe_crc, &test.crc_10); > + functional_test_fini(&test, output); > + } > + } > + } > } > - > - /* Step 16: Legacy API's, blue primary, red sprite */ > - igt_plane_set_fb(primary, &test.blue_fb); > - igt_plane_set_fb(sprite, &test.red_fb); > - igt_display_commit2(display, COMMIT_LEGACY); > - > - /* Blue bg + red sprite should be same under both types of API's */ > - igt_assert_crc_equal(&test.crc_2, &test.crc_4); > - > - /* Disabling primary plane should be same as black primary */ > - if (!is_amdgpu_device(data->drm_fd)) > - igt_assert_crc_equal(&test.crc_1, &test.crc_5); > - > - /* Re-enabling primary should return to blue properly */ > - igt_assert_crc_equal(&test.crc_2, &test.crc_6); > - > - /* > - * We should be able to setup plane FB's while CRTC is disabled and > - * then have them pop up correctly when the CRTC is re-enabled. > - */ > - igt_assert_crc_equal(&test.crc_2, &test.crc_7); > - > - /* > - * We should be able to modeset with the primary plane off > - * successfully > - */ > - igt_assert_crc_equal(&test.crc_3, &test.crc_8); > - > - /* > - * We should be able to move the primary plane completely offscreen > - * and have it disable successfully. Skip on amdgpu since crc_9 was > - * skipped with offscreen planes previously. > - */ > - igt_assert_crc_equal(&test.crc_5, &test.crc_9); > - > - /* > - * We should be able to explicitly disable an already > - * implicitly-disabled primary plane > - */ > - igt_assert_crc_equal(&test.crc_5, &test.crc_10); > - > - igt_plane_set_fb(primary, NULL); > - igt_plane_set_fb(sprite, NULL); > - > - functional_test_fini(&test, output); > } > > static void > @@ -1303,54 +917,6 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) > > igt_require_f(valid_tests, "no valid crtc/connector combinations found\n"); > } > - > - igt_describe("Check the switching between different primary plane fbs with CRTC off"); > - igt_subtest_f("test-legacy-atomic-interfaces-%s", > - kmstest_pipe_name(pipe)) > - for_each_valid_output_on_pipe(&data->display, pipe, output) > - test_legacy_atomic_interfaces(data, pipe, output); > - > - igt_describe("Check the switching between different primary plane fbs with CRTC off"); > - igt_subtest_f("disable-primary-red-sprite-%s", > - kmstest_pipe_name(pipe)) > - for_each_valid_output_on_pipe(&data->display, pipe, output) > - test_disable_primary_red_sprite(data, pipe, output); > - > - igt_describe("Check the switching between different primary plane fbs with CRTC off"); > - igt_subtest_f("re-enable-primary-with-blue-%s", > - kmstest_pipe_name(pipe)) > - for_each_valid_output_on_pipe(&data->display, pipe, output) > - test_re_enable_primary_with_blue(data, pipe, output); > - > - igt_describe("Check the switching between different primary plane fbs with CRTC off"); > - igt_subtest_f("universal-api-with-crtc-off-%s", > - kmstest_pipe_name(pipe)) > - for_each_valid_output_on_pipe(&data->display, pipe, output) > - test_universal_api_with_crtc_off(data, pipe, output); > - > - igt_describe("Check the switching between different primary plane fbs with CRTC off"); > - igt_subtest_f("legacy-modeset-to-yellow-fb-%s", > - kmstest_pipe_name(pipe)) > - for_each_valid_output_on_pipe(&data->display, pipe, output) > - test_legacy_modeset_to_yellow_fb(data, pipe, output); > - > - igt_describe("Check the switching between different primary plane fbs with CRTC off"); > - igt_subtest_f("set-primary-completely-offscreen-%s", > - kmstest_pipe_name(pipe)) > - for_each_valid_output_on_pipe(&data->display, pipe, output) > - test_set_primary_completely_offscreen(data, pipe, output); > - > - igt_describe("Check the switching between different primary plane fbs with CRTC off"); > - igt_subtest_f("explicitly-disable-primary-%s", > - kmstest_pipe_name(pipe)) > - for_each_valid_output_on_pipe(&data->display, pipe, output) > - test_explicitly_disable_primary(data, pipe, output); > - > - igt_describe("Check the switching between different primary plane fbs with CRTC off"); > - igt_subtest_f("universal-plane-pipe-%s-functional", > - kmstest_pipe_name(pipe)) > - for_each_valid_output_on_pipe(&data->display, pipe, output) > - functional_test_pipe(data, pipe, output); > > igt_describe("Test for scale-up or scale-down using universal plane API without covering CRTC"); > igt_subtest_f("universal-plane-pipe-%s-sanity", > @@ -1396,6 +962,8 @@ igt_main > } > > for_each_pipe_static(pipe) { > + igt_subtest_group > + run_functional_test_pipe(&data, pipe); > igt_subtest_group > run_tests_for_pipe(&data, pipe); > } ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests (rev2) 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad ` (7 preceding siblings ...) 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 8/8] tests/kms_universal_plane: create the run_functional_test_pipe and call all tests from it Alaa Emad @ 2023-01-07 14:12 ` Patchwork 2023-01-07 15:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 2023-01-10 18:29 ` [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alex Hung 10 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2023-01-07 14:12 UTC (permalink / raw) To: Alaa Emad; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 8144 bytes --] == Series Details == Series: tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests (rev2) URL : https://patchwork.freedesktop.org/series/110797/ State : success == Summary == CI Bug Log - changes from CI_DRM_12554 -> IGTPW_8310 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/index.html Participating hosts (42 -> 39) ------------------------------ Missing (3): fi-kbl-soraka bat-atsm-1 fi-snb-2520m Known issues ------------ Here are the changes found in IGTPW_8310 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_suspend@basic-s3-without-i915: - fi-kbl-7567u: [PASS][1] -> [INCOMPLETE][2] ([i915#4817]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/fi-kbl-7567u/igt@i915_suspend@basic-s3-without-i915.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/fi-kbl-7567u/igt@i915_suspend@basic-s3-without-i915.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions: - fi-bsw-kefka: [PASS][3] -> [FAIL][4] ([i915#6298]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size: - fi-bsw-n3050: [PASS][5] -> [FAIL][6] ([i915#6298]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/fi-bsw-n3050/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/fi-bsw-n3050/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html #### Possible fixes #### * igt@gem_exec_gttfill@basic: - fi-pnv-d510: [FAIL][7] ([i915#7229]) -> [PASS][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/fi-pnv-d510/igt@gem_exec_gttfill@basic.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/fi-pnv-d510/igt@gem_exec_gttfill@basic.html * igt@i915_selftest@live@migrate: - bat-adlp-4: [DMESG-FAIL][9] ([i915#7699]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/bat-adlp-4/igt@i915_selftest@live@migrate.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/bat-adlp-4/igt@i915_selftest@live@migrate.html * igt@i915_selftest@live@requests: - {bat-rpls-1}: [INCOMPLETE][11] ([i915#6257]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/bat-rpls-1/igt@i915_selftest@live@requests.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/bat-rpls-1/igt@i915_selftest@live@requests.html * igt@i915_selftest@live@workarounds: - {bat-adln-1}: [INCOMPLETE][13] ([i915#7467]) -> [PASS][14] [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/bat-adln-1/igt@i915_selftest@live@workarounds.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/bat-adln-1/igt@i915_selftest@live@workarounds.html #### Warnings #### * igt@i915_suspend@basic-s3-without-i915: - fi-rkl-11600: [FAIL][15] ([fdo#103375]) -> [INCOMPLETE][16] ([i915#4817]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/fi-rkl-11600/igt@i915_suspend@basic-s3-without-i915.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/fi-rkl-11600/igt@i915_suspend@basic-s3-without-i915.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#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312 [i915#4817]: https://gitlab.freedesktop.org/drm/intel/issues/4817 [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983 [i915#6257]: https://gitlab.freedesktop.org/drm/intel/issues/6257 [i915#6298]: https://gitlab.freedesktop.org/drm/intel/issues/6298 [i915#6794]: https://gitlab.freedesktop.org/drm/intel/issues/6794 [i915#6997]: https://gitlab.freedesktop.org/drm/intel/issues/6997 [i915#7229]: https://gitlab.freedesktop.org/drm/intel/issues/7229 [i915#7359]: https://gitlab.freedesktop.org/drm/intel/issues/7359 [i915#7467]: https://gitlab.freedesktop.org/drm/intel/issues/7467 [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7110 -> IGTPW_8310 CI-20190529: 20190529 CI_DRM_12554: 77b21315725079a0f62117b62ab9e6fc3c5b325d @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8310: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/index.html IGT_7110: db10a19b94d1d7ae5ba62eb48d52c47ccb27766f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Testlist changes ---------------- +igt@kms_universal_plane@test-disable-primary-red-sprite-a +igt@kms_universal_plane@test-disable-primary-red-sprite-b +igt@kms_universal_plane@test-disable-primary-red-sprite-c +igt@kms_universal_plane@test-disable-primary-red-sprite-d +igt@kms_universal_plane@test-disable-primary-red-sprite-e +igt@kms_universal_plane@test-disable-primary-red-sprite-f +igt@kms_universal_plane@test-explicitly-disable-primary-a +igt@kms_universal_plane@test-explicitly-disable-primary-b +igt@kms_universal_plane@test-explicitly-disable-primary-c +igt@kms_universal_plane@test-explicitly-disable-primary-d +igt@kms_universal_plane@test-explicitly-disable-primary-e +igt@kms_universal_plane@test-explicitly-disable-primary-f +igt@kms_universal_plane@test-legacy-atomic-interfaces-a +igt@kms_universal_plane@test-legacy-atomic-interfaces-b +igt@kms_universal_plane@test-legacy-atomic-interfaces-c +igt@kms_universal_plane@test-legacy-atomic-interfaces-d +igt@kms_universal_plane@test-legacy-atomic-interfaces-e +igt@kms_universal_plane@test-legacy-atomic-interfaces-f +igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-a +igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-b +igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-c +igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-d +igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-e +igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-f +igt@kms_universal_plane@test-re-enable-primary-with-blue-a +igt@kms_universal_plane@test-re-enable-primary-with-blue-b +igt@kms_universal_plane@test-re-enable-primary-with-blue-c +igt@kms_universal_plane@test-re-enable-primary-with-blue-d +igt@kms_universal_plane@test-re-enable-primary-with-blue-e +igt@kms_universal_plane@test-re-enable-primary-with-blue-f +igt@kms_universal_plane@test-set-primary-completely-offscreen-a +igt@kms_universal_plane@test-set-primary-completely-offscreen-b +igt@kms_universal_plane@test-set-primary-completely-offscreen-c +igt@kms_universal_plane@test-set-primary-completely-offscreen-d +igt@kms_universal_plane@test-set-primary-completely-offscreen-e +igt@kms_universal_plane@test-set-primary-completely-offscreen-f +igt@kms_universal_plane@test-universal-api-with-crtc-off-a +igt@kms_universal_plane@test-universal-api-with-crtc-off-b +igt@kms_universal_plane@test-universal-api-with-crtc-off-c +igt@kms_universal_plane@test-universal-api-with-crtc-off-d +igt@kms_universal_plane@test-universal-api-with-crtc-off-e +igt@kms_universal_plane@test-universal-api-with-crtc-off-f -igt@kms_universal_plane@universal-plane-pipe-a-functional -igt@kms_universal_plane@universal-plane-pipe-b-functional -igt@kms_universal_plane@universal-plane-pipe-c-functional -igt@kms_universal_plane@universal-plane-pipe-d-functional -igt@kms_universal_plane@universal-plane-pipe-e-functional -igt@kms_universal_plane@universal-plane-pipe-f-functional == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/index.html [-- Attachment #2: Type: text/html, Size: 8943 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests (rev2) 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad ` (8 preceding siblings ...) 2023-01-07 14:12 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests (rev2) Patchwork @ 2023-01-07 15:42 ` Patchwork 2023-01-10 18:29 ` [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alex Hung 10 siblings, 0 replies; 13+ messages in thread From: Patchwork @ 2023-01-07 15:42 UTC (permalink / raw) To: Alaa Emad; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 34501 bytes --] == Series Details == Series: tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests (rev2) URL : https://patchwork.freedesktop.org/series/110797/ State : success == Summary == CI Bug Log - changes from CI_DRM_12554_full -> IGTPW_8310_full ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/index.html Participating hosts (13 -> 11) ------------------------------ Additional (1): shard-rkl0 Missing (3): pig-skl-6260u pig-kbl-iris pig-glk-j5005 Possible new issues ------------------- Here are the unknown changes that may have been introduced in IGTPW_8310_full: ### IGT changes ### #### Possible regressions #### * {igt@kms_universal_plane@test-disable-primary-red-sprite-e} (NEW): - {shard-tglu-10}: NOTRUN -> [SKIP][1] +2 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-tglu-10/igt@kms_universal_plane@test-disable-primary-red-sprite-e.html * {igt@kms_universal_plane@test-explicitly-disable-primary-e} (NEW): - {shard-dg1}: NOTRUN -> [SKIP][2] +12 similar issues [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-dg1-19/igt@kms_universal_plane@test-explicitly-disable-primary-e.html * {igt@kms_universal_plane@test-legacy-atomic-interfaces-c} (NEW): - shard-glk: NOTRUN -> [WARN][3] +20 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-glk8/igt@kms_universal_plane@test-legacy-atomic-interfaces-c.html * {igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-e} (NEW): - {shard-rkl}: NOTRUN -> [SKIP][4] [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-5/igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-e.html * {igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-f} (NEW): - {shard-tglu}: NOTRUN -> [SKIP][5] +2 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-tglu-2/igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-f.html #### Suppressed #### The following results come from untrusted machines, tests, or statuses. They do not affect the overall result. * igt@kms_cursor_crc@cursor-offscreen-256x85@pipe-a-hdmi-a-4: - {shard-dg1}: [PASS][6] -> [DMESG-WARN][7] [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-dg1-18/igt@kms_cursor_crc@cursor-offscreen-256x85@pipe-a-hdmi-a-4.html [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-dg1-16/igt@kms_cursor_crc@cursor-offscreen-256x85@pipe-a-hdmi-a-4.html New tests --------- New tests have been introduced between CI_DRM_12554_full and IGTPW_8310_full: ### New IGT tests (43) ### * igt@kms_universal_plane: - Statuses : - Exec time: [None] s * igt@kms_universal_plane@test-disable-primary-red-sprite-a: - Statuses : 5 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-disable-primary-red-sprite-b: - Statuses : 4 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-disable-primary-red-sprite-c: - Statuses : 3 pass(s) 1 skip(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-disable-primary-red-sprite-d: - Statuses : 1 pass(s) 4 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-disable-primary-red-sprite-e: - Statuses : 5 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-disable-primary-red-sprite-f: - Statuses : 5 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-explicitly-disable-primary-a: - Statuses : 5 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-explicitly-disable-primary-b: - Statuses : 4 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-explicitly-disable-primary-c: - Statuses : 3 pass(s) 2 skip(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-explicitly-disable-primary-d: - Statuses : 2 pass(s) 4 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-explicitly-disable-primary-e: - Statuses : 6 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-explicitly-disable-primary-f: - Statuses : 5 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-atomic-interfaces-a: - Statuses : 4 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-atomic-interfaces-b: - Statuses : 4 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-atomic-interfaces-c: - Statuses : 3 pass(s) 1 skip(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-atomic-interfaces-d: - Statuses : 2 pass(s) 4 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-atomic-interfaces-e: - Statuses : 5 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-atomic-interfaces-f: - Statuses : 5 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-a: - Statuses : 4 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-b: - Statuses : 4 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-c: - Statuses : 3 pass(s) 1 skip(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-d: - Statuses : 2 pass(s) 3 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-e: - Statuses : 4 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-legacy-modeset-to-yellow-fb-f: - Statuses : 6 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-re-enable-primary-with-blue-a: - Statuses : 4 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-re-enable-primary-with-blue-b: - Statuses : 4 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-re-enable-primary-with-blue-c: - Statuses : 3 pass(s) 1 skip(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-re-enable-primary-with-blue-d: - Statuses : 1 pass(s) 4 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-re-enable-primary-with-blue-e: - Statuses : 5 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-re-enable-primary-with-blue-f: - Statuses : 5 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-set-primary-completely-offscreen-a: - Statuses : 5 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-set-primary-completely-offscreen-b: - Statuses : 5 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-set-primary-completely-offscreen-c: - Statuses : 3 pass(s) 1 skip(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-set-primary-completely-offscreen-d: - Statuses : 1 pass(s) 4 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-set-primary-completely-offscreen-e: - Statuses : 6 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-set-primary-completely-offscreen-f: - Statuses : 6 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-universal-api-with-crtc-off-a: - Statuses : 5 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-universal-api-with-crtc-off-b: - Statuses : 4 pass(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-universal-api-with-crtc-off-c: - Statuses : 3 pass(s) 2 skip(s) 1 warn(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-universal-api-with-crtc-off-d: - Statuses : 2 pass(s) 4 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-universal-api-with-crtc-off-e: - Statuses : 5 skip(s) - Exec time: [0.0] s * igt@kms_universal_plane@test-universal-api-with-crtc-off-f: - Statuses : 6 skip(s) - Exec time: [0.0] s Known issues ------------ Here are the changes found in IGTPW_8310_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_exec_fair@basic-none-solo@rcs0: - shard-apl: [PASS][8] -> [FAIL][9] ([i915#2842]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-apl7/igt@gem_exec_fair@basic-none-solo@rcs0.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl3/igt@gem_exec_fair@basic-none-solo@rcs0.html * igt@gem_exec_fair@basic-pace-share@rcs0: - shard-glk: [PASS][10] -> [FAIL][11] ([i915#2842]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-glk3/igt@gem_exec_fair@basic-pace-share@rcs0.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-glk5/igt@gem_exec_fair@basic-pace-share@rcs0.html * igt@gem_lmem_swapping@parallel-multi: - shard-apl: NOTRUN -> [SKIP][12] ([fdo#109271] / [i915#4613]) [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl6/igt@gem_lmem_swapping@parallel-multi.html * igt@gem_partial_pwrite_pread@writes-after-reads-uncached: - shard-apl: [PASS][13] -> [INCOMPLETE][14] ([i915#7708]) +2 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-apl7/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl2/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html * igt@i915_pm_rpm@modeset-lpsp: - shard-apl: NOTRUN -> [SKIP][15] ([fdo#109271]) +54 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl7/igt@i915_pm_rpm@modeset-lpsp.html * igt@i915_pm_rps@engine-order: - shard-apl: [PASS][16] -> [FAIL][17] ([i915#6537]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-apl3/igt@i915_pm_rps@engine-order.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl1/igt@i915_pm_rps@engine-order.html * igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc: - shard-apl: NOTRUN -> [SKIP][18] ([fdo#109271] / [i915#3886]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl3/igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc.html * igt@kms_chamelium@dp-crc-single: - shard-apl: NOTRUN -> [SKIP][19] ([fdo#109271] / [fdo#111827]) +2 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl3/igt@kms_chamelium@dp-crc-single.html * igt@kms_chamelium@vga-hpd-without-ddc: - shard-snb: NOTRUN -> [SKIP][20] ([fdo#109271] / [fdo#111827]) +1 similar issue [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-snb2/igt@kms_chamelium@vga-hpd-without-ddc.html * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size: - shard-glk: [PASS][21] -> [FAIL][22] ([i915#2346]) +1 similar issue [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2: - shard-glk: [PASS][23] -> [FAIL][24] ([i915#79]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-glk7/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-glk1/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html * igt@kms_psr2_sf@cursor-plane-update-sf: - shard-apl: NOTRUN -> [SKIP][25] ([fdo#109271] / [i915#658]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl2/igt@kms_psr2_sf@cursor-plane-update-sf.html * {igt@kms_universal_plane@test-explicitly-disable-primary-e} (NEW): - {shard-tglu}: NOTRUN -> [SKIP][26] ([fdo#109274]) +1 similar issue [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-tglu-6/igt@kms_universal_plane@test-explicitly-disable-primary-e.html * {igt@kms_universal_plane@test-re-enable-primary-with-blue-f} (NEW): - shard-glk: NOTRUN -> [SKIP][27] ([fdo#109271]) +20 similar issues [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-glk4/igt@kms_universal_plane@test-re-enable-primary-with-blue-f.html * {igt@kms_universal_plane@test-set-primary-completely-offscreen-d} (NEW): - shard-snb: NOTRUN -> [SKIP][28] ([fdo#109271]) +52 similar issues [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-snb2/igt@kms_universal_plane@test-set-primary-completely-offscreen-d.html * {igt@kms_universal_plane@test-set-primary-completely-offscreen-f} (NEW): - {shard-rkl}: NOTRUN -> [SKIP][29] ([i915#4098]) +6 similar issues [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-4/igt@kms_universal_plane@test-set-primary-completely-offscreen-f.html * {igt@kms_universal_plane@test-universal-api-with-crtc-off-d} (NEW): - {shard-rkl}: NOTRUN -> [SKIP][30] ([i915#4070] / [i915#4098]) +7 similar issues [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-2/igt@kms_universal_plane@test-universal-api-with-crtc-off-d.html * {igt@kms_universal_plane@test-universal-api-with-crtc-off-f} (NEW): - {shard-rkl}: NOTRUN -> [SKIP][31] ([i915#4070]) +4 similar issues [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@kms_universal_plane@test-universal-api-with-crtc-off-f.html * igt@kms_vblank@pipe-a-wait-busy-hang: - shard-apl: [PASS][32] -> [SKIP][33] ([fdo#109271]) [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-apl6/igt@kms_vblank@pipe-a-wait-busy-hang.html [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl6/igt@kms_vblank@pipe-a-wait-busy-hang.html - shard-glk: [PASS][34] -> [SKIP][35] ([fdo#109271]) [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-glk3/igt@kms_vblank@pipe-a-wait-busy-hang.html [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-glk7/igt@kms_vblank@pipe-a-wait-busy-hang.html #### Possible fixes #### * igt@drm_fdinfo@idle@rcs0: - {shard-rkl}: [FAIL][36] ([i915#7742]) -> [PASS][37] [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-4/igt@drm_fdinfo@idle@rcs0.html [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-5/igt@drm_fdinfo@idle@rcs0.html * igt@drm_read@short-buffer-nonblock: - {shard-rkl}: [SKIP][38] ([i915#4098]) -> [PASS][39] [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-4/igt@drm_read@short-buffer-nonblock.html [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@drm_read@short-buffer-nonblock.html * igt@fbdev@pan: - {shard-rkl}: [SKIP][40] ([i915#2582]) -> [PASS][41] [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-3/igt@fbdev@pan.html [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@fbdev@pan.html - {shard-tglu}: [SKIP][42] ([i915#2582]) -> [PASS][43] [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-tglu-6/igt@fbdev@pan.html [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-tglu-7/igt@fbdev@pan.html * igt@gem_bad_reloc@negative-reloc-lut: - {shard-rkl}: [SKIP][44] ([i915#3281]) -> [PASS][45] +11 similar issues [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-2/igt@gem_bad_reloc@negative-reloc-lut.html [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-5/igt@gem_bad_reloc@negative-reloc-lut.html * igt@gem_ctx_isolation@preservation-s3@vecs0: - shard-apl: [DMESG-WARN][46] ([i915#180]) -> [PASS][47] [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-apl6/igt@gem_ctx_isolation@preservation-s3@vecs0.html [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl7/igt@gem_ctx_isolation@preservation-s3@vecs0.html * igt@gem_eio@reset-stress: - {shard-dg1}: [FAIL][48] ([i915#5784]) -> [PASS][49] [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-dg1-18/igt@gem_eio@reset-stress.html [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-dg1-15/igt@gem_eio@reset-stress.html * igt@gem_eio@suspend: - {shard-rkl}: [FAIL][50] ([i915#7052]) -> [PASS][51] [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-3/igt@gem_eio@suspend.html [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@gem_eio@suspend.html * igt@gem_exec_endless@dispatch@bcs0: - {shard-rkl}: [SKIP][52] ([i915#6247]) -> [PASS][53] [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-5/igt@gem_exec_endless@dispatch@bcs0.html [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-1/igt@gem_exec_endless@dispatch@bcs0.html * igt@gem_exec_fair@basic-pace-share@rcs0: - shard-apl: [FAIL][54] ([i915#2842]) -> [PASS][55] [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-apl6/igt@gem_exec_fair@basic-pace-share@rcs0.html [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl7/igt@gem_exec_fair@basic-pace-share@rcs0.html * igt@gem_partial_pwrite_pread@writes-after-reads: - {shard-rkl}: [SKIP][56] ([i915#3282]) -> [PASS][57] +8 similar issues [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-4/igt@gem_partial_pwrite_pread@writes-after-reads.html [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-5/igt@gem_partial_pwrite_pread@writes-after-reads.html * igt@gen9_exec_parse@bb-chained: - {shard-rkl}: [SKIP][58] ([i915#2527]) -> [PASS][59] +2 similar issues [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-2/igt@gen9_exec_parse@bb-chained.html [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-5/igt@gen9_exec_parse@bb-chained.html * igt@i915_pm_dc@dc5-psr: - {shard-rkl}: [SKIP][60] ([i915#658]) -> [PASS][61] [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-4/igt@i915_pm_dc@dc5-psr.html [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@i915_pm_dc@dc5-psr.html * igt@i915_pm_dc@dc6-dpms: - {shard-rkl}: [SKIP][62] ([i915#3361]) -> [PASS][63] [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-5/igt@i915_pm_dc@dc6-dpms.html [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-4/igt@i915_pm_dc@dc6-dpms.html * igt@i915_pm_rc6_residency@rc6-idle@rcs0: - {shard-dg1}: [FAIL][64] ([i915#3591]) -> [PASS][65] +1 similar issue [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-dg1-17/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-dg1-15/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html * igt@i915_pm_rpm@dpms-lpsp: - {shard-rkl}: [SKIP][66] ([i915#1397]) -> [PASS][67] [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-2/igt@i915_pm_rpm@dpms-lpsp.html [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@i915_pm_rpm@dpms-lpsp.html * igt@i915_pm_rpm@dpms-non-lpsp: - {shard-dg1}: [SKIP][68] ([i915#1397]) -> [PASS][69] +3 similar issues [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-dg1-14/igt@i915_pm_rpm@dpms-non-lpsp.html [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-dg1-16/igt@i915_pm_rpm@dpms-non-lpsp.html * igt@i915_pm_rpm@drm-resources-equal: - {shard-rkl}: [SKIP][70] ([fdo#109308]) -> [PASS][71] [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-1/igt@i915_pm_rpm@drm-resources-equal.html [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@i915_pm_rpm@drm-resources-equal.html * igt@i915_suspend@basic-s3-without-i915: - shard-snb: [INCOMPLETE][72] ([i915#4528] / [i915#4817]) -> [PASS][73] [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-snb4/igt@i915_suspend@basic-s3-without-i915.html [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-snb5/igt@i915_suspend@basic-s3-without-i915.html * igt@kms_big_fb@x-tiled-addfb-size-offset-overflow: - {shard-tglu}: [SKIP][74] ([i915#1845] / [i915#7651]) -> [PASS][75] +2 similar issues [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-tglu-6/igt@kms_big_fb@x-tiled-addfb-size-offset-overflow.html [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-tglu-7/igt@kms_big_fb@x-tiled-addfb-size-offset-overflow.html * igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_gen12_rc_ccs_cc: - {shard-tglu}: [SKIP][76] ([i915#7651]) -> [PASS][77] +6 similar issues [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-tglu-6/igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_gen12_rc_ccs_cc.html [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-tglu-2/igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_gen12_rc_ccs_cc.html * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions: - shard-apl: [FAIL][78] ([i915#2346]) -> [PASS][79] [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-apl3/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-apl7/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render: - {shard-rkl}: [SKIP][80] ([i915#1849] / [i915#4098]) -> [PASS][81] +21 similar issues [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html * igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-render: - {shard-tglu}: [SKIP][82] ([i915#1849]) -> [PASS][83] +1 similar issue [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-render.html [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-tglu-2/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-render.html * igt@kms_plane@pixel-format@pipe-b-planes: - {shard-rkl}: [SKIP][84] ([i915#1849]) -> [PASS][85] +6 similar issues [84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-4/igt@kms_plane@pixel-format@pipe-b-planes.html [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@kms_plane@pixel-format@pipe-b-planes.html * igt@kms_psr@sprite_plane_onoff: - {shard-rkl}: [SKIP][86] ([i915#1072]) -> [PASS][87] +2 similar issues [86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-1/igt@kms_psr@sprite_plane_onoff.html [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@kms_psr@sprite_plane_onoff.html * igt@kms_universal_plane@cursor-fb-leak-pipe-b: - {shard-rkl}: [SKIP][88] ([i915#1845] / [i915#4070] / [i915#4098]) -> [PASS][89] [88]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-1/igt@kms_universal_plane@cursor-fb-leak-pipe-b.html [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@kms_universal_plane@cursor-fb-leak-pipe-b.html * igt@kms_vblank@pipe-b-query-idle: - {shard-rkl}: [SKIP][90] ([i915#1845] / [i915#4098]) -> [PASS][91] +25 similar issues [90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12554/shard-rkl-1/igt@kms_vblank@pipe-b-query-idle.html [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/shard-rkl-6/igt@kms_vblank@pipe-b-query-idle.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 [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#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295 [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300 [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303 [fdo#109307]: https://bugs.freedesktop.org/show_bug.cgi?id=109307 [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308 [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309 [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312 [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314 [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315 [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506 [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642 [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189 [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723 [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068 [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614 [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615 [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644 [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656 [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825 [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827 [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054 [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283 [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072 [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132 [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397 [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755 [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769 [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180 [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825 [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839 [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845 [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849 [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346 [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#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582 [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587 [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658 [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672 [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#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920 [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994 [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116 [i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315 [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281 [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282 [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291 [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297 [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299 [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301 [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359 [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361 [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458 [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469 [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546 [i915#3547]: https://gitlab.freedesktop.org/drm/intel/issues/3547 [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#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734 [i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804 [i915#3825]: https://gitlab.freedesktop.org/drm/intel/issues/3825 [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#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070 [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077 [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083 [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098 [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103 [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#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528 [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613 [i915#4767]: https://gitlab.freedesktop.org/drm/intel/issues/4767 [i915#4778]: https://gitlab.freedesktop.org/drm/intel/issues/4778 [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812 [i915#4817]: https://gitlab.freedesktop.org/drm/intel/issues/4817 [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833 [i915#4877]: https://gitlab.freedesktop.org/drm/intel/issues/4877 [i915#5174]: https://gitlab.freedesktop.org/drm/intel/issues/5174 [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176 [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235 [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286 [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288 [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289 [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325 [i915#5327]: https://gitlab.freedesktop.org/drm/intel/issues/5327 [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533 [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461 [i915#5775]: https://gitlab.freedesktop.org/drm/intel/issues/5775 [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784 [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095 [i915#6227]: https://gitlab.freedesktop.org/drm/intel/issues/6227 [i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245 [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247 [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248 [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334 [i915#6412]: https://gitlab.freedesktop.org/drm/intel/issues/6412 [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433 [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497 [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524 [i915#6537]: https://gitlab.freedesktop.org/drm/intel/issues/6537 [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#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946 [i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953 [i915#7052]: https://gitlab.freedesktop.org/drm/intel/issues/7052 [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116 [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118 [i915#7178]: https://gitlab.freedesktop.org/drm/intel/issues/7178 [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456 [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561 [i915#7582]: https://gitlab.freedesktop.org/drm/intel/issues/7582 [i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651 [i915#7681]: https://gitlab.freedesktop.org/drm/intel/issues/7681 [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697 [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701 [i915#7707]: https://gitlab.freedesktop.org/drm/intel/issues/7707 [i915#7708]: https://gitlab.freedesktop.org/drm/intel/issues/7708 [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711 [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742 [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_7110 -> IGTPW_8310 * Piglit: piglit_4509 -> None CI-20190529: 20190529 CI_DRM_12554: 77b21315725079a0f62117b62ab9e6fc3c5b325d @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_8310: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/index.html IGT_7110: db10a19b94d1d7ae5ba62eb48d52c47ccb27766f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8310/index.html [-- Attachment #2: Type: text/html, Size: 32387 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad ` (9 preceding siblings ...) 2023-01-07 15:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork @ 2023-01-10 18:29 ` Alex Hung 10 siblings, 0 replies; 13+ messages in thread From: Alex Hung @ 2023-01-10 18:29 UTC (permalink / raw) To: Alaa Emad, igt-dev; +Cc: petri.latvala On 2023-01-07 06:45, Alaa Emad wrote: > Divide the `functional_test_pipe` test into seven subtests based on CRC > comparisons because this will make it easier to debug the test and help > in detecting the failure. > > First 7 patches decouple each subtest and run it individually keeping > `functional_test_pipe' test as it is. After making sure that each > subtest can run individually with the expected result on both vkms and i915 > drivers, improve the test by creating `run_functional_test_pipe` and > call all subtests from it and call `run_functional_test_pipe` in > `igt_main`. > > ------- > changes in v2: > add is_amdgpu_device() guard. > Alaa Emad (8): > tests/kms_universal_plane: decouple verification of legacy and atomic > api > tests/kms_universal_plane: decouple verification of disabling primary > plane > tests/kms_universal_plane: decouple verification of re-enabling > primary plane > tests/kms_universal_plane: decouple verification of setup plane FB's > while CRTC is disabled > tests/kms_universal_plane: decouple verification of ablity to modeset > with the primary plane off > tests/kms_universal_plane: decouple verification of ablity to move the > primary plane completely > tests/kms_universal_plane: decouple verification of ablity to > explicitly disable an already implicitly-disabled primary plane > tests/kms_universal_plane: create the run_functional_test_pipe and > call all tests from it > > tests/kms_universal_plane.c | 412 ++++++++++++++++++++++++------------ > 1 file changed, 272 insertions(+), 140 deletions(-) > Hi Alaa, There are trailing spaces in some patches (1, 4, 5, 7, 8): $ git am RFC-i-g-t-v2-1-8-tests-kms_universal_plane-decouple-verification-of-legacy-and-atomic-api.patch Applying: tests/kms_universal_plane: decouple verification of legacy and atomic api .git/rebase-apply/patch:82: trailing whitespace. $ git am RFC-i-g-t-v2-4-8-tests-kms_universal_plane-decouple-verification-of-setup-plane-FB-s-while-CRTC-is-disabled.patch Applying: tests/kms_universal_plane: decouple verification of setup plane FB's while CRTC is disabled .git/rebase-apply/patch:87: trailing whitespace. $ git am RFC-i-g-t-v2-5-8-tests-kms_universal_plane-decouple-verification-of-ablity-to-modeset-with-the-primary-plane-off.patch Applying: tests/kms_universal_plane: decouple verification of ablity to modeset with the primary plane off .git/rebase-apply/patch:93: trailing whitespace. $ git am RFC-i-g-t-v2-7-8-tests-kms_universal_plane-decouple-verification-of-ablity-to-explicitly-disable-an-already-implicitly-disabled-primary-plane.patch Applying: tests/kms_universal_plane: decouple verification of ablity to explicitly disable an already implicitly-disabled primary plane .git/rebase-apply/patch:108: trailing whitespace. $ git am RFC-i-g-t-v2-8-8-tests-kms_universal_plane-create-the-run_functional_test_pipe-and-call-all-tests-from-it.patch Applying: tests/kms_universal_plane: create the run_functional_test_pipe and call all tests from it .git/rebase-apply/patch:57: trailing whitespace. .git/rebase-apply/patch:646: trailing whitespace. .git/rebase-apply/patch:771: trailing whitespace. igt_subtest_group { .git/rebase-apply/patch:786: trailing whitespace. .git/rebase-apply/patch:800: trailing whitespace. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2023-01-10 18:44 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-01-07 13:45 [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 1/8] tests/kms_universal_plane: decouple verification of legacy and atomic api Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 2/8] tests/kms_universal_plane: decouple verification of disabling primary plane Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 3/8] tests/kms_universal_plane: decouple verification of re-enabling " Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 4/8] tests/kms_universal_plane: decouple verification of setup plane FB's while CRTC is disabled Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 5/8] tests/kms_universal_plane: decouple verification of ablity to modeset with the primary plane off Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 6/8] tests/kms_universal_plane: decouple verification of ablity to move the primary plane completely Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 7/8] tests/kms_universal_plane: decouple verification of ablity to explicitly disable an already implicitly-disabled primary plane Alaa Emad 2023-01-07 13:45 ` [igt-dev] [PATCH RFC i-g-t v2 8/8] tests/kms_universal_plane: create the run_functional_test_pipe and call all tests from it Alaa Emad 2023-01-10 18:43 ` Alex Hung 2023-01-07 14:12 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests (rev2) Patchwork 2023-01-07 15:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 2023-01-10 18:29 ` [igt-dev] [PATCH RFC i-g-t v2 0/8] tests/kms_universal_plane: divide `functional_test_pipe` to mini-subtests Alex Hung
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox