vulkan: Pass values to push directly
authorBenjamin Otte <otte@redhat.com>
Thu, 11 May 2023 19:36:44 +0000 (21:36 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 4 Jun 2023 17:42:01 +0000 (19:42 +0200)
Don't require a GskVulkanPushConstants there.

gsk/vulkan/gskvulkanpushconstants.c
gsk/vulkan/gskvulkanpushconstantsprivate.h
gsk/vulkan/gskvulkanrenderpass.c

index 0bf5ca71b04b98edbecd90a81b101f02dce4e134..e2889001371dadc4e9f35c1cac6ae37da2264ad6 100644 (file)
@@ -80,21 +80,23 @@ gsk_vulkan_push_constants_intersect_rounded (GskVulkanPushConstants       *self,
 }
 
 static void
-gsk_vulkan_push_constants_wire_init (GskVulkanPushConstantsWire   *wire,
-                                     const GskVulkanPushConstants *self)
+gsk_vulkan_push_constants_wire_init (GskVulkanPushConstantsWire *wire,
+                                     const graphene_matrix_t    *mvp,
+                                     const GskRoundedRect       *clip)
 {
-  graphene_matrix_to_float (&self->mvp, wire->common.mvp);
-  gsk_rounded_rect_to_float (&self->clip.rect, graphene_point_zero (), wire->common.clip);
+  graphene_matrix_to_float (mvp, wire->common.mvp);
+  gsk_rounded_rect_to_float (clip, graphene_point_zero (), wire->common.clip);
 }
 
 void
-gsk_vulkan_push_constants_push (const GskVulkanPushConstants *self,
-                                VkCommandBuffer               command_buffer,
-                                VkPipelineLayout              pipeline_layout)
+gsk_vulkan_push_constants_push (VkCommandBuffer          command_buffer,
+                                VkPipelineLayout         pipeline_layout,
+                                const graphene_matrix_t *mvp,
+                                const GskRoundedRect    *clip)
 {
   GskVulkanPushConstantsWire wire;
 
-  gsk_vulkan_push_constants_wire_init (&wire, self);
+  gsk_vulkan_push_constants_wire_init (&wire, mvp, clip);
 
   vkCmdPushConstants (command_buffer,
                       pipeline_layout,
index a52a6fe689c61c6d5c6d7499972eab45ed6aea9b..a514e4f50bdd31b5350274a16a5dda39794a74f5 100644 (file)
@@ -35,9 +35,10 @@ gboolean                gsk_vulkan_push_constants_intersect_rounded     (GskVulk
                                                                          const GskVulkanPushConstants   *src,
                                                                          const GskRoundedRect           *rect);
 
-void                    gsk_vulkan_push_constants_push                  (const GskVulkanPushConstants   *self,
-                                                                         VkCommandBuffer                 command_buffer,
-                                                                         VkPipelineLayout                pipeline_layout);
+void                    gsk_vulkan_push_constants_push                  (VkCommandBuffer                 command_buffer,
+                                                                         VkPipelineLayout                pipeline_layout,
+                                                                         const graphene_matrix_t        *mvp,
+                                                                         const GskRoundedRect           *clip);
 
 G_END_DECLS
 
index 0969dd5cad045a5e60d48d9ffff61c69abf9287e..073009318bbb2ebd40a96bc13b2000135dd409b0 100644 (file)
@@ -2253,9 +2253,11 @@ gsk_vulkan_render_pass_draw_rect (GskVulkanRenderPass     *self,
 
         case GSK_VULKAN_OP_PUSH_VERTEX_CONSTANTS:
           for (int j = 0; j < layout_count; j++)
-            gsk_vulkan_push_constants_push (&op->constants.constants,
-                                            command_buffer,
-                                            pipeline_layout[j]);
+            gsk_vulkan_push_constants_push (command_buffer,
+                                            pipeline_layout[j],
+                                            &op->constants.constants.mvp,
+                                            &op->constants.constants.clip.rect);
+
           break;
 
         case GSK_VULKAN_OP_CROSS_FADE: