kms_plane_scaling: Add more scale factor tests to cover more drivers
PATCH 1/1 kms_plane_scaling: Add more scale factor tests to cover more drivers
Not all drivers support all scale factors. Introduce more scale factors rather than only testing scaling from a 20x20 fb.
--- tests/kms_plane_scaling.c | 81 +++++++++++++++++++++++++++++++-------- 1 file changed, 65 insertions(+), 16 deletions(-)
tests/kms_plane_scaling.c +65 -16
@@ -120,12 +120,14 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,static void check_scaling_pipe_plane_rot (data_t *d,igt_plane_t *plane,uint32_t pixel_format, -uint64_t modifier,enum pipe pipe, +uint64_t modifier, +int width,int height, +enum pipe pipe,igt_output_t *output,igt_rotation_t rot) {igt_display_t *display = &d->display; -int width, height; +int commit_ret;drmModeModeInfo *mode;cleanup_crtc (d);
@@ -133,22 +135,24 @@ static void check_scaling_pipe_plane_rot(data_t *d, igt_plane_t *plane,igt_output_set_pipe (output, pipe); mode =igt_output_get_mode (output); -/* create buffer in the range of min and max source side limit.*/ - width = height =20 ;igt_create_color_fb (display->drm_fd, width, height, pixel_format, modifier,0.0 ,1.0 ,0.0 , &d->fb[0 ]);igt_plane_set_fb (plane, &d->fb[0 ]); -/* Check min to full resolution upscaling */ igt_fb_set_position (&d->fb[0 ], plane,0 ,0 );igt_fb_set_size (&d->fb[0 ], plane, width, height);igt_plane_set_position (plane,0 ,0 );igt_plane_set_size (plane, mode->hdisplay, mode->vdisplay);igt_plane_set_rotation (plane, rot); -igt_display_commit2 (display,COMMIT_ATOMIC ); + commit_ret =igt_display_try_commit2 (display,COMMIT_ATOMIC );igt_plane_set_fb (plane,NULL );igt_plane_set_position (plane,0 ,0 ); + +igt_skip_on_f (commit_ret == -ERANGE , +"Unsupported scaling factor with fb size %dx%d\n" , + width, height); +igt_assert_eq (commit_ret,0 ); }static const igt_rotation_t rotations[] = {
@@ -243,6 +247,7 @@ static bool test_pipe_iteration(data_t *data, enum pipe pipe, int iteration) }static void test_scaler_with_rotation_pipe (data_t *d,enum pipe pipe, +int width,int height,igt_output_t *output) {igt_display_t *display = &d->display;
@@ -271,9 +276,11 @@ static void test_scaler_with_rotation_pipe(data_t *d, enum pipe pipe, igt_plane_has_rotation(plane, rot) && can_rotate(d, format, modifier, rot) && can_scale(d, format)) -check_scaling_pipe_plane_rot (d, plane, format, - modifier, pipe, - output, rot); +check_scaling_pipe_plane_rot (d, plane, + format, modifier, + width, height, + pipe, output, + rot); }igt_vec_fini (&tested_formats);
@@ -288,7 +295,8 @@ static const uint64_t modifiers[] = { I915_FORMAT_MOD_Yf_TILED }; -static void test_scaler_with_pixel_format_pipe (data_t *d,enum pipe pipe,igt_output_t *output) +static void test_scaler_with_pixel_format_pipe (data_t *d,int width,int height, +enum pipe pipe,igt_output_t *output) {igt_display_t *display = &d->display;igt_plane_t *plane;
@@ -315,6 +323,7 @@ static void test_scaler_with_pixel_format_pipe(data_t *d, enum pipe pipe, igt_ou can_scale(d, format))check_scaling_pipe_plane_rot (d, plane, format, modifier, + width, height, pipe, output,IGT_ROTATION_0 ); }
@@ -726,18 +735,58 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)test_plane_scaling_on_pipe (&data, pipe, output); } -igt_describe ("Tests scaling with pixel formats." ); - igt_subtest_with_dynamic("scaler-with-pixel-format") { +igt_describe ("Tests scaling with pixel formats, from 20x20 fb." ); + igt_subtest_with_dynamic("scaler-with-pixel-format-20x20") { +for_each_pipe_with_single_output (&data.display, pipe, output) + igt_dynamic_f("pipe-%s-scaler-with-pixel-format", kmstest_pipe_name(pipe)) +test_scaler_with_pixel_format_pipe (&data,20 ,20 , pipe, output); + } + +igt_describe ("Tests scaling with pixel formats, scaling factor 4." ); + igt_subtest_with_dynamic("scaler-with-pixel-format-factor-4") { +drmModeModeInfo *mode; + + mode =igt_output_get_mode (output); +for_each_pipe_with_single_output (&data.display, pipe, output) + igt_dynamic_f("pipe-%s-scaler-with-pixel-format", kmstest_pipe_name(pipe)) +test_scaler_with_pixel_format_pipe (&data, mode->hdisplay /4 , mode->vdisplay /4 , pipe, output); + } + +igt_describe ("Tests scaling with pixel formats, unity scaling." ); + igt_subtest_with_dynamic("scaler-with-pixel-format-unity-scaling") { +drmModeModeInfo *mode; + + mode =igt_output_get_mode (output);for_each_pipe_with_single_output (&data.display, pipe, output) igt_dynamic_f("pipe-%s-scaler-with-pixel-format", kmstest_pipe_name(pipe)) -test_scaler_with_pixel_format_pipe (&data, pipe, output); +test_scaler_with_pixel_format_pipe (&data, mode->hdisplay, mode->vdisplay, pipe, output); + } + +igt_describe ("Tests scaling with tiling rotation, from 20x20 fb." ); + igt_subtest_with_dynamic("scaler-with-rotation-20x20") { +for_each_pipe_with_single_output (&data.display, pipe, output) + igt_dynamic_f("pipe-%s-scaler-with-rotation", kmstest_pipe_name(pipe)) +test_scaler_with_rotation_pipe (&data,20 ,20 , pipe, output); } -igt_describe ("Tests scaling with tiling rotation." ); - igt_subtest_with_dynamic("scaler-with-rotation") { +igt_describe ("Tests scaling with tiling rotation, scaling factor 4." ); + igt_subtest_with_dynamic("scaler-with-rotation-factor-4") { +drmModeModeInfo *mode; + + mode =igt_output_get_mode (output); +for_each_pipe_with_single_output (&data.display, pipe, output) + igt_dynamic_f("pipe-%s-scaler-with-rotation", kmstest_pipe_name(pipe)) +test_scaler_with_rotation_pipe (&data, mode->hdisplay /4 , mode->vdisplay /4 , pipe, output); + } + +igt_describe ("Tests scaling with tiling rotation, unity scaling." ); + igt_subtest_with_dynamic("scaler-with-rotation-unity-scaling") { +drmModeModeInfo *mode; + + mode =igt_output_get_mode (output);for_each_pipe_with_single_output (&data.display, pipe, output) igt_dynamic_f("pipe-%s-scaler-with-rotation", kmstest_pipe_name(pipe)) -test_scaler_with_rotation_pipe (&data, pipe, output); +test_scaler_with_rotation_pipe (&data, mode->hdisplay, mode->vdisplay, pipe, output); }igt_describe ("Tests scaling with clipping and clamping." );
Signature · 1 line
2.30.2
Patchwork
CI[igt-dev] ✗ Fi.CI.BUILD: failure for kms_plane_scaling: Add more scale factor tests to cover more drivers
== Series Details ==
== Series Details ==
Series: kms_plane_scaling: Add more scale factor tests to cover more drivers
URL : https://patchwork.freedesktop.org/series/99364/
State : failure
== Summary ==
IGT patchset build failed on latest successful build 27c9c3f5181a840c777399be7681d2cadd7940cd tests/i915/kms_flip_tiling: Handle lost flip event
Patchwork
CI[igt-dev] ✗ Fi.CI.BAT: failure for kms_plane_scaling: Add more scale factor tests to cover more drivers (rev2)
In reply to Petri Latvala== Series Details ==
== Series Details ==
Series: kms_plane_scaling: Add more scale factor tests to cover more drivers (rev2)
URL : https://patchwork.freedesktop.org/series/99364/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_11144 -> IGTPW_6581
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_6581 absolutely need to be verified manually.
If you think the reported changes have nothing to do with the changes introduced in IGTPW_6581, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/index.html
Participating hosts (47 -> 43)
------------------------------
Additional (1): fi-pnv-d510
Missing (5): fi-hsw-4200u fi-bsw-cyan fi-icl-u2 fi-ctg-p8600 fi-bdw-samus
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_6581:
### IGT changes ###
#### Possible regressions ####
* igt@i915_selftest@live@hangcheck:
- bat-dg1-5: [PASS][1] -> [DMESG-FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11144/bat-dg1-5/igt@i915_selftest@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/bat-dg1-5/igt@i915_selftest@[email protected]
Known issues
------------
Here are the changes found in IGTPW_6581 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@amdgpu/amd_cs_nop@fork-compute0:
- fi-ivb-3770: NOTRUN -> [SKIP][3] ([fdo#109271]) +17 similar issues
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/fi-ivb-3770/igt@amdgpu/[email protected]
* igt@gem_exec_suspend@basic-s3:
- fi-skl-6600u: NOTRUN -> [FAIL][4] ([i915#4547])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/fi-skl-6600u/igt@[email protected]
* igt@i915_selftest@live@hangcheck:
- fi-snb-2600: [PASS][5] -> [INCOMPLETE][6] ([i915#3921])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11144/fi-snb-2600/igt@i915_selftest@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/fi-snb-2600/igt@i915_selftest@[email protected]
* igt@prime_vgem@basic-userptr:
- fi-pnv-d510: NOTRUN -> [SKIP][7] ([fdo#109271]) +57 similar issues
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/fi-pnv-d510/igt@[email protected]
#### Possible fixes ####
* igt@i915_selftest@live@hangcheck:
- bat-dg1-6: [DMESG-FAIL][8] ([i915#4494] / [i915#4957]) -> [PASS][9]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11144/bat-dg1-6/igt@i915_selftest@[email protected]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/bat-dg1-6/igt@i915_selftest@[email protected]
- fi-ivb-3770: [INCOMPLETE][10] ([i915#3303]) -> [PASS][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11144/fi-ivb-3770/igt@i915_selftest@[email protected]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/fi-ivb-3770/igt@i915_selftest@[email protected]
* igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b:
- fi-cfl-8109u: [DMESG-WARN][12] ([i915#295]) -> [PASS][13] +12 similar issues
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11144/fi-cfl-8109u/igt@[email protected]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/fi-cfl-8109u/igt@[email protected]
#### Warnings ####
* igt@runner@aborted:
- fi-skl-6600u: [FAIL][14] ([i915#2722] / [i915#4312]) -> [FAIL][15] ([i915#4312])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11144/fi-skl-6600u/igt@[email protected]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/fi-skl-6600u/igt@[email protected]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[i915#2722]: https://gitlab.freedesktop.org/drm/intel/issues/2722
[i915#295]: https://gitlab.freedesktop.org/drm/intel/issues/295
[i915#3303]: https://gitlab.freedesktop.org/drm/intel/issues/3303
[i915#3921]: https://gitlab.freedesktop.org/drm/intel/issues/3921
[i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
[i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
[i915#4547]: https://gitlab.freedesktop.org/drm/intel/issues/4547
[i915#4897]: https://gitlab.freedesktop.org/drm/intel/issues/4897
[i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_6335 -> IGTPW_6581
CI-20190529: 20190529
CI_DRM_11144: 521a441e3f470159446b8126fe1adb23a863bc90 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_6581: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/index.html
IGT_6335: 2b30115edd692b60d16cb10375730a87f51f0e37 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
== Testlist changes ==
+igt@kms_plane_scaling@scaler-with-pixel-format-20x20 +igt@kms_plane_scaling@scaler-with-pixel-format-factor-4 +igt@kms_plane_scaling@scaler-with-pixel-format-unity-scaling +igt@kms_plane_scaling@scaler-with-rotation-20x20 +igt@kms_plane_scaling@scaler-with-rotation-factor-4 +igt@kms_plane_scaling@scaler-with-rotation-unity-scaling -igt@kms_plane_scaling@scaler-with-pixel-format -igt@kms_plane_scaling@scaler-with-rotation
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6581/index.html
Hi Petri,
Quoted 60 lines · Petri Latvala
Not all drivers support all scale factors. Introduce more scale factors rather than only testing scaling from a 20x20 fb.
Signed-off-by Petri Latvala <[email protected]>Cc Jessica Zhang <[email protected]>--- tests/kms_plane_scaling.c | 81 +++++++++++++++++++++++++++++++-------- 1 file changed, 65 insertions(+), 16 deletions(-)tests/kms_plane_scaling.c +10
-6@@ -120,12 +120,14 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,static void check_scaling_pipe_plane_rot (data_t *d,igt_plane_t *plane,uint32_t pixel_format, -uint64_t modifier,enum pipe pipe, +uint64_t modifier, +int width,int height, +enum pipe pipe,igt_output_t *output,igt_rotation_t rot) {igt_display_t *display = &d->display; -int width, height; +int commit_ret;drmModeModeInfo *mode;cleanup_crtc (d);@@ -133,22 +135,24 @@ static void check_scaling_pipe_plane_rot(data_t *d, igt_plane_t *plane,igt_output_set_pipe (output, pipe); mode =igt_output_get_mode (output); -/* create buffer in the range of min and max source side limit.*/ - width = height =20 ;igt_create_color_fb (display->drm_fd, width, height, pixel_format, modifier,0.0 ,1.0 ,0.0 , &d->fb[0 ]);igt_plane_set_fb (plane, &d->fb[0 ]); -/* Check min to full resolution upscaling */ igt_fb_set_position (&d->fb[0 ], plane,0 ,0 );igt_fb_set_size (&d->fb[0 ], plane, width, height);igt_plane_set_position (plane,0 ,0 );igt_plane_set_size (plane, mode->hdisplay, mode->vdisplay);igt_plane_set_rotation (plane, rot); -igt_display_commit2 (display,COMMIT_ATOMIC ); + commit_ret =igt_display_try_commit2 (display,COMMIT_ATOMIC );igt_plane_set_fb (plane,NULL );igt_plane_set_position (plane,0 ,0 ); + +igt_skip_on_f (commit_ret == -ERANGE , +"Unsupported scaling factor with fb size %dx%d\n" , + width, height); +igt_assert_eq (commit_ret,0 ); }static const igt_rotation_t rotations[] = {
tests/kms_plane_scaling.c static bool test_pipe_iteration(data_t *data, enum pipe pipe, int iteration) · line 250
Quoted 4 lines
tests/kms_plane_scaling.c +1
-0@@ -243,6 +247,7 @@ static bool test_pipe_iteration(data_t *data, enum pipe pipe, int iteration) } static void test_scaler_with_rotation_pipe(data_t *d, enum pipe pipe, + int width, int height,
The ordering of the params should be consistent with that of test_scaler_with_pixel_format_pipe and check_scaling_pipe_plane_rot.
Quoted 44 lines
tests/kms_plane_scaling.c +10
-6igt_output_t *output) {igt_display_t *display = &d->display;@@ -271,9 +276,11 @@ static void test_scaler_with_rotation_pipe(data_t *d, enum pipe pipe, igt_plane_has_rotation(plane, rot) && can_rotate(d, format, modifier, rot) && can_scale(d, format)) -check_scaling_pipe_plane_rot (d, plane, format, - modifier, pipe, - output, rot); +check_scaling_pipe_plane_rot (d, plane, + format, modifier, + width, height, + pipe, output, + rot); }igt_vec_fini (&tested_formats);@@ -288,7 +295,8 @@ static const uint64_t modifiers[] = { I915_FORMAT_MOD_Yf_TILED }; -static void test_scaler_with_pixel_format_pipe (data_t *d,enum pipe pipe,igt_output_t *output) +static void test_scaler_with_pixel_format_pipe (data_t *d,int width,int height, +enum pipe pipe,igt_output_t *output) {igt_display_t *display = &d->display;igt_plane_t *plane;@@ -315,6 +323,7 @@ static void test_scaler_with_pixel_format_pipe(data_t *d, enum pipe pipe, igt_ou can_scale(d, format))check_scaling_pipe_plane_rot (d, plane, format, modifier, + width, height, pipe, output,IGT_ROTATION_0 ); }@@ -726,18 +735,58 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)test_plane_scaling_on_pipe (&data, pipe, output); } -igt_describe ("Tests scaling with pixel formats." ); - igt_subtest_with_dynamic("scaler-with-pixel-format") { +igt_describe ("Tests scaling with pixel formats, from 20x20 fb." ); + igt_subtest_with_dynamic("scaler-with-pixel-format-20x20") {
tests/kms_plane_scaling.c igt_main_args("", long_opts, help_str, opt_handler, &data) · line 749
Quoted 10 lines
tests/kms_plane_scaling.c +10
-0+for_each_pipe_with_single_output (&data.display, pipe, output) + igt_dynamic_f("pipe-%s-scaler-with-pixel-format", kmstest_pipe_name(pipe)) +test_scaler_with_pixel_format_pipe (&data,20 ,20 , pipe, output); + } + +igt_describe ("Tests scaling with pixel formats, scaling factor 4." ); + igt_subtest_with_dynamic("scaler-with-pixel-format-factor-4") { +drmModeModeInfo *mode; + + mode =igt_output_get_mode (output);
Should move this inside of the for each loop since the compatible outputs are populated within for_each_pipe_with_single_output. Getting the mode before then will return incorrect values and cause an invalid argument error for create_fb.
tests/kms_plane_scaling.c igt_main_args("", long_opts, help_str, opt_handler, &data) · line 752
Quoted 3 lines
tests/kms_plane_scaling.c +3
-0+for_each_pipe_with_single_output (&data.display, pipe, output) + igt_dynamic_f("pipe-%s-scaler-with-pixel-format", kmstest_pipe_name(pipe)) +test_scaler_with_pixel_format_pipe (&data, mode->hdisplay /4 , mode->vdisplay /4 , pipe, output);
This could hit an edge case where the resolution being passed in isn't 32-bit aligned. Should add a check for this (maybe within check_scaling_pipe_plane_rot) and possibly correct to an appropriate fb size.
Thanks,
Jessica Zhang
Quoted 46 lines
tests/kms_plane_scaling.c +31
-4+ } + +igt_describe ("Tests scaling with pixel formats, unity scaling." ); + igt_subtest_with_dynamic("scaler-with-pixel-format-unity-scaling") { +drmModeModeInfo *mode; + + mode =igt_output_get_mode (output);for_each_pipe_with_single_output (&data.display, pipe, output) igt_dynamic_f("pipe-%s-scaler-with-pixel-format", kmstest_pipe_name(pipe)) -test_scaler_with_pixel_format_pipe (&data, pipe, output); +test_scaler_with_pixel_format_pipe (&data, mode->hdisplay, mode->vdisplay, pipe, output); + } + +igt_describe ("Tests scaling with tiling rotation, from 20x20 fb." ); + igt_subtest_with_dynamic("scaler-with-rotation-20x20") { +for_each_pipe_with_single_output (&data.display, pipe, output) + igt_dynamic_f("pipe-%s-scaler-with-rotation", kmstest_pipe_name(pipe)) + test_scaler_with_rotation_pipe(&data, 20, 20, pipe, output); > } -igt_describe ("Tests scaling with tiling rotation." ); - igt_subtest_with_dynamic("scaler-with-rotation") { +igt_describe ("Tests scaling with tiling rotation, scaling factor 4." ); + igt_subtest_with_dynamic("scaler-with-rotation-factor-4") { +drmModeModeInfo *mode; + + mode =igt_output_get_mode (output); +for_each_pipe_with_single_output (&data.display, pipe, output) + igt_dynamic_f("pipe-%s-scaler-with-rotation", kmstest_pipe_name(pipe)) +test_scaler_with_rotation_pipe (&data, mode->hdisplay /4 , mode->vdisplay /4 , pipe, output); + } + +igt_describe ("Tests scaling with tiling rotation, unity scaling." ); + igt_subtest_with_dynamic("scaler-with-rotation-unity-scaling") { +drmModeModeInfo *mode; + + mode =igt_output_get_mode (output);for_each_pipe_with_single_output (&data.display, pipe, output) igt_dynamic_f("pipe-%s-scaler-with-rotation", kmstest_pipe_name(pipe)) -test_scaler_with_rotation_pipe (&data, pipe, output); +test_scaler_with_rotation_pipe (&data, mode->hdisplay, mode->vdisplay, pipe, output); }igt_describe ("Tests scaling with clipping and clamping." );Signature · 1 line
2.30.2