From 7d65ed2f230fd5cd0e2670d26db971cea885c493 Mon Sep 17 00:00:00 2001 From: Mamta Shukla Date: Sun, 3 Feb 2019 20:08:03 +0530 Subject: tests/kms_cursor_crc.c: Improve test_cursor_alpha() In the kms_cursor_crc, the subtest to check exterme alpha values failed due to different CRCs observed in hardware and software rendering. This patch fixes CRC mismatch error in cursor-alpha-opaque and cursor-alpha-transparent subtests by improving the order in which cursor was rendered in hardware test. Changes made in test_cursor_alpha() to ensure cursor rendering in hardware test and acquire CRC value: - Add drmModeSetCursor() to set cursor image. - Remove igt_display_commit() to reduce the chance of getting crc values cleared before it is acquired. - Add igt_remove_fb() to remove locally created framebuffer after disabling the cursor plane in HW test Also, aligned this function with test_cursor_size and after these changes got passing results for alpha blending support added in VKMS CRC API. Signed-off-by: Mamta Shukla Reviewed-by: Harry Wentland Reviewed-by: Rodrigo Siqueira Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109350 --- tests/kms_cursor_crc.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c index 3c9856d9..144b44b0 100644 --- a/tests/kms_cursor_crc.c +++ b/tests/kms_cursor_crc.c @@ -411,26 +411,28 @@ static void test_cursor_alpha(data_t *data, double a) igt_crc_t crc, ref_crc; cairo_t *cr; uint32_t fb_id; - int curw=data->curw; - int curh=data->curh; + int curw = data->curw; + int curh = data->curh; + int ret; /*alpha cursor fb*/ - fb_id = igt_create_color_fb(data->drm_fd, curw, curh, + fb_id = igt_create_fb(data->drm_fd, curw, curh, DRM_FORMAT_ARGB8888, LOCAL_DRM_FORMAT_MOD_NONE, - 1.0, 1.0, 1.0, &data->fb); igt_assert(fb_id); cr = igt_get_cairo_ctx(data->drm_fd, &data->fb); - draw_cursor(cr, 0, 0, curw, curh, a); + igt_paint_color_alpha(cr, 0, 0, curw, curh, 1.0, 1.0, 1.0, a); igt_put_cairo_ctx(data->drm_fd, &data->fb, cr); /*Hardware Test*/ cursor_enable(data); - igt_display_commit(display); + ret = drmModeSetCursor(data->drm_fd, data->output->config.crtc->crtc_id, data->fb.gem_handle, curw, curh); + igt_assert_eq(ret, 0); igt_wait_for_vblank(data->drm_fd, data->pipe); igt_pipe_crc_collect_crc(pipe_crc, &crc); cursor_disable(data); + igt_remove_fb(data->drm_fd, &data->fb); /*Software Test*/ cr = igt_get_cairo_ctx(data->drm_fd, &data->primary_fb); @@ -447,7 +449,6 @@ static void test_cursor_alpha(data_t *data, double a) igt_paint_color(cr, 0, 0, data->screenw, data->screenh, 0.0, 0.0, 0.0); igt_put_cairo_ctx(data->drm_fd, &data->primary_fb, cr); - igt_remove_fb(data->drm_fd, &data->fb); } static void test_cursor_transparent(data_t *data) -- cgit v1.2.3