From e00e6f3d5da2c40917f7b3bea3778a3dd99360ef Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sun, 23 Jul 2023 18:26:52 +0200 Subject: [PATCH] vulkan: Clear Cairo surfaces on upload The memory isn't guaranteed to be all zeroes and we don't want glitches. --- gsk/vulkan/gskvulkanuploadop.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gsk/vulkan/gskvulkanuploadop.c b/gsk/vulkan/gskvulkanuploadop.c index 428590f559..afb0904456 100644 --- a/gsk/vulkan/gskvulkanuploadop.c +++ b/gsk/vulkan/gskvulkanuploadop.c @@ -287,6 +287,9 @@ gsk_vulkan_upload_cairo_op_draw (GskVulkanOp *op, width / self->viewport.size.width, height / self->viewport.size.height); cr = cairo_create (surface); + cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr); + cairo_set_operator (cr, CAIRO_OPERATOR_OVER); cairo_translate (cr, -self->viewport.origin.x, -self->viewport.origin.y); gsk_render_node_draw (self->node, cr); @@ -402,6 +405,9 @@ gsk_vulkan_upload_glyph_op_draw (GskVulkanOp *op, cairo_surface_set_device_scale (surface, self->scale, self->scale); cr = cairo_create (surface); + cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); + cairo_paint (cr); + cairo_set_operator (cr, CAIRO_OPERATOR_OVER); /* Make sure the entire surface is initialized to black */ cairo_set_source_rgba (cr, 0, 0, 0, 0); -- 2.30.2