vulkan: Pass the node when setting up
authorBenjamin Otte <otte@redhat.com>
Wed, 5 Jul 2023 05:06:17 +0000 (07:06 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 16 Jul 2023 10:13:00 +0000 (12:13 +0200)
Remove the function to add a node from both the GskVulkanRender and the
GskVulkanRenderPass.

That means they are both now meant to draw exactly one node.

gsk/vulkan/gskvulkanoffscreenop.c
gsk/vulkan/gskvulkanrender.c
gsk/vulkan/gskvulkanrenderer.c
gsk/vulkan/gskvulkanrenderpass.c
gsk/vulkan/gskvulkanrenderpassprivate.h
gsk/vulkan/gskvulkanrenderprivate.h

index 55f7ba9cfb995d321ff57c2f45b4df74d9b73f79..ef560a00256757d9eef2de7d713ec5caf1a3d7b3 100644 (file)
@@ -136,15 +136,15 @@ gsk_vulkan_offscreen_op (GskVulkanRenderPass   *render_pass,
                                         });
 
   self->render_pass = gsk_vulkan_render_pass_new (context,
+                                                  render,
                                                   self->image,
                                                   scale,
                                                   &view,
                                                   clip,
+                                                  node,
                                                   signal_semaphore);
 
   cairo_region_destroy (clip);
 
-  gsk_vulkan_render_pass_add (self->render_pass, render, node);
-
   return self->image;
 }
index 58ae72e903b91f43c97894584ff5479020326b1e..805431a2fa09cd6f6550d56e9a1bf1b24daefde3 100644 (file)
@@ -342,7 +342,7 @@ gsk_vulkan_render_add_render_pass (GskVulkanRender     *self,
 #endif
 }
 
-void
+static void
 gsk_vulkan_render_add_node (GskVulkanRender *self,
                             GskRenderNode   *node)
 {
@@ -352,16 +352,16 @@ gsk_vulkan_render_add_node (GskVulkanRender *self,
   graphene_vec2_init (&scale, self->scale, self->scale);
 
   pass = gsk_vulkan_render_pass_new (self->vulkan,
+                                     self,
                                      self->target,
                                      &scale,
                                      &self->viewport,
                                      self->clip,
+                                     node,
                                      VK_NULL_HANDLE);
 
   gsk_vulkan_render_add_render_pass (self, pass);
 
-  gsk_vulkan_render_pass_add (pass, self, node);
-
   gsk_vulkan_render_verbose_print (self, "start of frame");
 }
 
@@ -855,11 +855,14 @@ void
 gsk_vulkan_render_reset (GskVulkanRender       *self,
                          GskVulkanImage        *target,
                          const graphene_rect_t *rect,
-                         const cairo_region_t  *clip)
+                         const cairo_region_t  *clip,
+                         GskRenderNode         *node)
 {
   gsk_vulkan_render_cleanup (self);
 
   gsk_vulkan_render_setup (self, target, rect, clip);
+
+  gsk_vulkan_render_add_node (self, node);
 }
 
 GskRenderer *
index 10b629fab6dd845f9063ce7aadf1e53fd63a1577..b6b9abeca41df7a79ce014c077321dbb28f21233 100644 (file)
@@ -292,8 +292,7 @@ gsk_vulkan_renderer_render_texture (GskRenderer           *renderer,
                                               rounded_viewport.size.width,
                                               rounded_viewport.size.height);
 
-  gsk_vulkan_render_reset (render, image, &rounded_viewport, NULL);
-  gsk_vulkan_render_add_node (render, root);
+  gsk_vulkan_render_reset (render, image, &rounded_viewport, NULL, root);
   gsk_vulkan_render_upload (render);
   gsk_vulkan_render_draw (render);
 
@@ -352,8 +351,7 @@ gsk_vulkan_renderer_render (GskRenderer          *renderer,
   render_region = get_render_region (self);
   draw_index = gdk_vulkan_context_get_draw_index (self->vulkan);
 
-  gsk_vulkan_render_reset (render, self->targets[draw_index], NULL, render_region);
-  gsk_vulkan_render_add_node (render, root);
+  gsk_vulkan_render_reset (render, self->targets[draw_index], NULL, render_region, root);
   gsk_vulkan_render_upload (render);
   gsk_vulkan_render_draw (render);
 
index 0079ec13751d626a79e1b096bd453eeb14e42339..6d3abb9803e0b10a2a48af58560ef194068399a9 100644 (file)
@@ -80,12 +80,19 @@ static GQuark fallback_pixels_quark;
 static GQuark texture_pixels_quark;
 #endif
 
+static void
+gsk_vulkan_render_pass_add (GskVulkanRenderPass *self,
+                            GskVulkanRender     *render,
+                            GskRenderNode       *node);
+
 GskVulkanRenderPass *
 gsk_vulkan_render_pass_new (GdkVulkanContext      *context,
+                            GskVulkanRender       *render,
                             GskVulkanImage        *target,
                             const graphene_vec2_t *scale,
                             const graphene_rect_t *viewport,
                             cairo_region_t        *clip,
+                            GskRenderNode         *node,
                             VkSemaphore            signal_semaphore)
 {
   GskVulkanRenderPass *self;
@@ -171,6 +178,8 @@ gsk_vulkan_render_pass_new (GdkVulkanContext      *context,
     }
 #endif
 
+  gsk_vulkan_render_pass_add (self, render, node);
+
   return self;
 }
 
@@ -1374,7 +1383,7 @@ gsk_vulkan_render_pass_add_node (GskVulkanRenderPass       *self,
     gsk_vulkan_render_pass_add_fallback_node (self, render, state, node);
 }
 
-void
+static void
 gsk_vulkan_render_pass_add (GskVulkanRenderPass *self,
                             GskVulkanRender     *render,
                             GskRenderNode       *node)
index 6b7f46f93edb6e2ce083633bd70e210e574adf7a..252a6db1ca8a605269873a165ad1896d09599293 100644 (file)
@@ -11,18 +11,16 @@ G_BEGIN_DECLS
 
 
 GskVulkanRenderPass *   gsk_vulkan_render_pass_new                      (GdkVulkanContext       *context,
+                                                                         GskVulkanRender        *render,
                                                                          GskVulkanImage         *target,
                                                                          const graphene_vec2_t  *scale,
                                                                          const graphene_rect_t  *viewport,
                                                                          cairo_region_t         *clip,
+                                                                         GskRenderNode          *node,
                                                                          VkSemaphore             signal_semaphore);
 
 void                    gsk_vulkan_render_pass_free                     (GskVulkanRenderPass    *self);
 
-void                    gsk_vulkan_render_pass_add                      (GskVulkanRenderPass    *self,
-                                                                         GskVulkanRender        *render,
-                                                                         GskRenderNode          *node);
-
 void                    gsk_vulkan_render_pass_print                    (GskVulkanRenderPass    *self,
                                                                          GString                *string,
                                                                          guint                   indent);
index aa02b6760a5a261e119c1e1f8b0769a0c4ac2afc..69609165fe18890a050f72b65116ade859c4490a 100644 (file)
@@ -23,16 +23,14 @@ gboolean                gsk_vulkan_render_is_busy                       (GskVulk
 void                    gsk_vulkan_render_reset                         (GskVulkanRender        *self,
                                                                          GskVulkanImage         *target,
                                                                          const graphene_rect_t  *rect,
-                                                                         const cairo_region_t   *clip);
+                                                                         const cairo_region_t   *clip,
+                                                                         GskRenderNode          *node);
 
 GskRenderer *           gsk_vulkan_render_get_renderer                  (GskVulkanRender        *self);
 
 void                    gsk_vulkan_render_add_cleanup_image             (GskVulkanRender        *self,
                                                                          GskVulkanImage         *image);
 
-void                    gsk_vulkan_render_add_node                      (GskVulkanRender        *self,
-                                                                         GskRenderNode          *node);
-
 void                    gsk_vulkan_render_add_render_pass               (GskVulkanRender        *self,
                                                                          GskVulkanRenderPass    *pass);