From ef77a6fa73f0cfb74430fdda2b1c4f7d582d9746 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 14 Nov 2023 20:13:11 +0100 Subject: [PATCH] gl: Don't punch hole if the subsurface is above Saves some work. --- gsk/gl/gskglrenderjob.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/gsk/gl/gskglrenderjob.c b/gsk/gl/gskglrenderjob.c index 5e7910f7c5..6ab5ed7627 100644 --- a/gsk/gl/gskglrenderjob.c +++ b/gsk/gl/gskglrenderjob.c @@ -4017,17 +4017,20 @@ gsk_gl_render_job_visit_subsurface_node (GskGLRenderJob *job, if (job->offload && gsk_offload_subsurface_is_offloaded (job->offload, subsurface)) { - /* Clear the area so we can see through */ - if (gsk_gl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, color))) + if (!gdk_subsurface_is_above_parent (subsurface)) { - GskGLCommandBatch *batch; - guint16 color[4]; - rgba_to_half (&(GdkRGBA){0,0,0,0}, color); + /* Clear the area so we can see through */ + if (gsk_gl_render_job_begin_draw (job, CHOOSE_PROGRAM (job, color))) + { + GskGLCommandBatch *batch; + guint16 color[4]; + rgba_to_half (&(GdkRGBA){0,0,0,0}, color); - batch = gsk_gl_command_queue_get_batch (job->command_queue); - batch->draw.blend = 0; - gsk_gl_render_job_draw_rect_with_color (job, &node->bounds, color); - gsk_gl_render_job_end_draw (job); + batch = gsk_gl_command_queue_get_batch (job->command_queue); + batch->draw.blend = 0; + gsk_gl_render_job_draw_rect_with_color (job, &node->bounds, color); + gsk_gl_render_job_end_draw (job); + } } } else