gsk: Fix rendering big textures with offsets
authorMatthias Clasen <mclasen@redhat.com>
Mon, 1 May 2023 18:46:30 +0000 (14:46 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 1 May 2023 18:46:30 +0000 (14:46 -0400)
When slicing the texture, the GL renderer was
forgetting to apply the viewport origin. This
shows up when rendering things with negative
scales, leading to negative origins.

gsk/gl/gskglrenderer.c

index 306b042c9815aeb3a9fd781238bcd54d8e0f0905..007dae1f872fdad1cb06a8318e0c281bfa06b394 100644 (file)
@@ -356,7 +356,8 @@ gsk_gl_renderer_render_texture (GskRenderer           *renderer,
           for (x = 0; x < width; x += max_size)
             {
               texture = gsk_gl_renderer_render_texture (renderer, root,
-                                                        &GRAPHENE_RECT_INIT (x, y,
+                                                        &GRAPHENE_RECT_INIT (viewport->origin.x + x,
+                                                                             viewport->origin.y + y,
                                                                              MIN (max_size, viewport->size.width - x),
                                                                              MIN (max_size, viewport->size.height - y)));
               gdk_texture_download (texture,