public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] tests/kms_plane_alpha_blend: Paint FBs with cairo source operator
@ 2019-02-22 17:08 Nicholas Kazlauskas
  2019-02-22 17:39 ` Ville Syrjälä
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Nicholas Kazlauskas @ 2019-02-22 17:08 UTC (permalink / raw)
  To: igt-dev

Cairo defaults to using a blended fill, so when IGT tries to paint on
top of a framebuffer in these tests with an alpha less than 1.0 the
previous framebuffer contents will still be present underneath.

On amdgpu this is an issue because the framebuffer is created in
an unitialized state and can have contents from previous tests
still within memory.

This patch explicitly sets the cairo filling operator to SOURCE to
overwrite the contents when performing fills with alpha < 1.0 in
this test.

It also fixes the creation of the transparent FB. My guess as for why
this test previously passed on i915 is because the primary FB was
also black, so the CRC would match even if the black overlay plane
was partially transparent.

Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
---
 tests/kms_plane_alpha_blend.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
index 1d9d8933..d7dc44ab 100644
--- a/tests/kms_plane_alpha_blend.c
+++ b/tests/kms_plane_alpha_blend.c
@@ -83,6 +83,7 @@ static void draw_squares(struct igt_fb *fb, int w, int h, double a)
 {
 	cairo_t *cr = igt_get_cairo_ctx(fb->fd, fb);
 
+	cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
 	igt_paint_color_alpha(cr, 0, 0,         w / 2, h / 2, 1., 0., 0., a);
 	igt_paint_color_alpha(cr, w / 2, 0,     w / 2, h / 2, 0., 1., 0., a);
 	igt_paint_color_alpha(cr, 0, h / 2,     w / 2, h / 2, 0., 0., 1., a);
@@ -197,7 +198,8 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe)
 			      &data->argb_fb_0);
 
 		cr = igt_get_cairo_ctx(data->gfx_fd, &data->argb_fb_0);
-		igt_paint_color_alpha(cr, 0, 0, w, h, 0., 0., 0., 1.0);
+		cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
+		igt_paint_color_alpha(cr, 0, 0, w, h, 0., 0., 0., 0.0);
 		igt_put_cairo_ctx(data->gfx_fd, &data->argb_fb_0, cr);
 
 		igt_create_fb(data->gfx_fd, w, h,
-- 
2.17.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-02-27 19:49 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-02-22 17:08 [igt-dev] [PATCH i-g-t] tests/kms_plane_alpha_blend: Paint FBs with cairo source operator Nicholas Kazlauskas
2019-02-22 17:39 ` Ville Syrjälä
2019-02-22 17:46   ` Kazlauskas, Nicholas
2019-02-22 18:57     ` Ville Syrjälä
2019-02-25 14:32       ` Kazlauskas, Nicholas
2019-02-27 19:49         ` Wentland, Harry
2019-02-22 18:27 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork
2019-02-25 16:47 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_plane_alpha_blend: Paint FBs with cairo source operator (rev2) Patchwork
2019-02-25 23:08 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox