From e0ab6d5a3c3b45c25a025df7792044d723cbc705 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 16 Aug 2016 12:44:39 +0200 Subject: [PATCH] gsk: Fix hidpi scaling We store the vertices in (unscaled) window coords (but the item size is still scaled to match the texture size). Also, the projection/model-view multiplication order is switched so that the scale is applied at the right place. --- gsk/gskglrenderer.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gsk/gskglrenderer.c b/gsk/gskglrenderer.c index f9218eae0e..dcdd0cff3b 100644 --- a/gsk/gskglrenderer.c +++ b/gsk/gskglrenderer.c @@ -364,7 +364,7 @@ gsk_gl_renderer_update_frustum (GskGLRenderer *self, { GSK_NOTE (TRANSFORMS, g_print ("Updating the modelview/projection\n")); - graphene_matrix_multiply (projection, modelview, &self->mvp); + graphene_matrix_multiply (modelview, projection, &self->mvp); graphene_frustum_init_from_matrix (&self->frustum, &self->mvp); @@ -632,12 +632,12 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self, /* Each render item is an axis-aligned bounding box that we * transform using the given transformation matrix */ - item.min.x = bounds.origin.x * scale_factor; - item.min.y = bounds.origin.y * scale_factor; + item.min.x = bounds.origin.x; + item.min.y = bounds.origin.y; item.min.z = 0.f; - item.max.x = item.min.x + item.size.width; - item.max.y = item.min.y + item.size.height; + item.max.x = item.min.x + bounds.size.width; + item.max.y = item.min.y + bounds.size.height; item.max.z = 0.f; /* The location of the item, in normalized world coordinates */