vulkan: Pass the node when setting up

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.
This commit is contained in:
Benjamin Otte
2023-07-05 07:06:17 +02:00
parent d86d4c5597
commit a7c247bccd
6 changed files with 25 additions and 19 deletions

View 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;
}

View 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 *

View 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);

View 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)

View 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);

View 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);