diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index edf6f402ce..9233799e0c 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -1375,20 +1375,24 @@ render_opacity_node (GskGLRenderer *self, prev_opacity = ops_set_opacity (builder, builder->current_opacity * opacity); - ops_set_program (builder, &self->programs->blit_program); - ops_set_texture (builder, region.texture_id); + if (builder->current_opacity >= ((float) 0x00ff / (float) 0xffff)) + { + ops_set_program (builder, &self->programs->blit_program); + ops_set_texture (builder, region.texture_id); - load_vertex_data_with_region (ops_draw (builder, NULL), - node, builder, - ®ion, - is_offscreen); + load_vertex_data_with_region (ops_draw (builder, NULL), + node, builder, + ®ion, + is_offscreen); + } } else { prev_opacity = ops_set_opacity (builder, builder->current_opacity * opacity); - gsk_gl_renderer_add_render_ops (self, child, builder); + if (builder->current_opacity >= ((float) 0x00ff / (float) 0xffff)) + gsk_gl_renderer_add_render_ops (self, child, builder); } ops_set_opacity (builder, prev_opacity);