[igt-dev] [PATCH i-g-t] tests/kms_plane_alpha_blend: Fix alpha in coverage-vs-premult-vs-constant
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Fri Jun 18 08:52:59 UTC 2021
On 11.6.2021 15.44, Vidya Srinivas wrote:
> Patch sets alpha to 0x7e for coverage, Pre-multiplied and constant as
> per the buffer being created initially in prepare_crtc. Patch also
> add commit after setting fb on primary plane. Without this change
> CRC mismatch is seen on few Gen11 systems.
>
> Signed-off-by: Vidya Srinivas <vidya.srinivas at intel.com>
> ---
> tests/kms_plane_alpha_blend.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
> index a37cb27c7d62..d3a73cf43fcd 100644
> --- a/tests/kms_plane_alpha_blend.c
> +++ b/tests/kms_plane_alpha_blend.c
> @@ -448,29 +448,34 @@ static void coverage_premult_constant(data_t *data, enum pipe pipe, igt_plane_t
> igt_crc_t ref_crc = {}, crc = {};
>
> /* Set a background color on the primary fb for testing */
> - if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> + if (plane->type != DRM_PLANE_TYPE_PRIMARY) {
> igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe], DRM_PLANE_TYPE_PRIMARY), &data->gray_fb);
> + igt_display_commit2(display, COMMIT_ATOMIC);
Why this extra commit needed? There's just below commit before crc is
started
> + }
>
> igt_plane_set_prop_enum(plane, IGT_PLANE_PIXEL_BLEND_MODE, "Coverage");
> + igt_plane_set_prop_value(plane, IGT_PLANE_ALPHA, 0x7e);
On this test there's already per pixel alpha, setting plane alpha values
so low will probably in this case in final rounding make these planes
completely invisible. I'd suspect you can get any image pass crc doing
it like this. Likely what you see on screen with these values is just
pure grey instead of intended test image.
> igt_plane_set_fb(plane, &data->argb_fb_cov_7e);
> igt_display_commit2(display, COMMIT_ATOMIC);
> igt_pipe_crc_start(data->pipe_crc);
> igt_pipe_crc_get_single(data->pipe_crc, &ref_crc);
>
> igt_plane_set_prop_enum(plane, IGT_PLANE_PIXEL_BLEND_MODE, "Pre-multiplied");
> + igt_plane_set_prop_value(plane, IGT_PLANE_ALPHA, 0x7e);
> igt_plane_set_fb(plane, &data->argb_fb_7e);
> igt_display_commit2(display, COMMIT_ATOMIC);
> igt_pipe_crc_get_current(display->drm_fd, data->pipe_crc, &crc);
> igt_assert_crc_equal(&ref_crc, &crc);
>
> igt_plane_set_prop_enum(plane, IGT_PLANE_PIXEL_BLEND_MODE, "None");
> - igt_plane_set_prop_value(plane, IGT_PLANE_ALPHA, 0x7e7e);
> + igt_plane_set_prop_value(plane, IGT_PLANE_ALPHA, 0x7e);
> igt_plane_set_fb(plane, &data->argb_fb_cov_7e);
> igt_display_commit2(display, COMMIT_ATOMIC);
> igt_pipe_crc_get_current(display->drm_fd, data->pipe_crc, &crc);
> igt_assert_crc_equal(&ref_crc, &crc);
>
> igt_pipe_crc_stop(data->pipe_crc);
> +
stray new line
> }
>
> static void run_test_on_pipe_planes(data_t *data, enum pipe pipe, bool blend,
>
More information about the igt-dev
mailing list