From: Benjamin Otte Date: Wed, 5 Jul 2023 05:06:17 +0000 (+0200) Subject: vulkan: Pass the node when setting up X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~60^2~49 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a7c247bccd67ee4bfb0e2c9a5a2dd609a8830d88;p=gtk4.git 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. --- diff --git a/gsk/vulkan/gskvulkanoffscreenop.c b/gsk/vulkan/gskvulkanoffscreenop.c index 55f7ba9cfb..ef560a0025 100644 --- a/gsk/vulkan/gskvulkanoffscreenop.c +++ b/gsk/vulkan/gskvulkanoffscreenop.c @@ -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; } diff --git a/gsk/vulkan/gskvulkanrender.c b/gsk/vulkan/gskvulkanrender.c index 58ae72e903..805431a2fa 100644 --- a/gsk/vulkan/gskvulkanrender.c +++ b/gsk/vulkan/gskvulkanrender.c @@ -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 * diff --git a/gsk/vulkan/gskvulkanrenderer.c b/gsk/vulkan/gskvulkanrenderer.c index 10b629fab6..b6b9abeca4 100644 --- a/gsk/vulkan/gskvulkanrenderer.c +++ b/gsk/vulkan/gskvulkanrenderer.c @@ -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); diff --git a/gsk/vulkan/gskvulkanrenderpass.c b/gsk/vulkan/gskvulkanrenderpass.c index 0079ec1375..6d3abb9803 100644 --- a/gsk/vulkan/gskvulkanrenderpass.c +++ b/gsk/vulkan/gskvulkanrenderpass.c @@ -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) diff --git a/gsk/vulkan/gskvulkanrenderpassprivate.h b/gsk/vulkan/gskvulkanrenderpassprivate.h index 6b7f46f93e..252a6db1ca 100644 --- a/gsk/vulkan/gskvulkanrenderpassprivate.h +++ b/gsk/vulkan/gskvulkanrenderpassprivate.h @@ -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); diff --git a/gsk/vulkan/gskvulkanrenderprivate.h b/gsk/vulkan/gskvulkanrenderprivate.h index aa02b6760a..69609165fe 100644 --- a/gsk/vulkan/gskvulkanrenderprivate.h +++ b/gsk/vulkan/gskvulkanrenderprivate.h @@ -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);