vulkan: compute new modelview directly
authorBenjamin Otte <otte@redhat.com>
Sun, 7 May 2023 08:07:02 +0000 (10:07 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 4 Jun 2023 17:42:00 +0000 (19:42 +0200)
no need to go through a GskTransform

gsk/vulkan/gskvulkanrenderpass.c

index f364b7f4c1a91be7dcdaf896687c526316711131..78c3911560e457d1584f8ad997b84a845b1b9ebc 100644 (file)
@@ -505,8 +505,8 @@ gsk_vulkan_render_pass_add_transform_node (GskVulkanRenderPass          *self,
   };
   graphene_matrix_t old_mv;
   GskRenderNode *child;
-  GskTransform *next_transform;
   GskTransform *transform;
+  graphene_matrix_t transform_matrix;
   float new_scale_x = self->scale_x;
   float new_scale_y = self->scale_x;
   float old_scale_x;
@@ -579,8 +579,8 @@ gsk_vulkan_render_pass_add_transform_node (GskVulkanRenderPass          *self,
   self->scale_x = new_scale_x;
   self->scale_y = new_scale_y;
 
-  next_transform = gsk_transform_matrix (gsk_transform_ref (transform), &self->mv);
-  gsk_transform_to_matrix (next_transform, &self->mv);
+  gsk_transform_to_matrix (transform, &transform_matrix);
+  graphene_matrix_multiply (&transform_matrix, &self->mv, &self->mv);
 
   child = gsk_transform_node_get_child (node);
   if (!gsk_vulkan_push_constants_transform (&op.constants.constants, constants, transform, &child->bounds))