vulkan: Split out a function
authorBenjamin Otte <otte@redhat.com>
Sun, 25 Jun 2023 03:02:48 +0000 (05:02 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 16 Jul 2023 10:12:36 +0000 (12:12 +0200)
Making that function externally usable allows having render passes
managed externally.

Also remove a nonexisting function from the header.

gsk/vulkan/gskvulkanrender.c
gsk/vulkan/gskvulkanrenderprivate.h

index 580d621d7435b0420fb835d9f8eff35ecf1fc5cc..c6ef70a4a6f289590c16d1248b1840dd4ab3eb83 100644 (file)
@@ -648,6 +648,33 @@ gsk_vulkan_render_prepare_descriptor_sets (GskVulkanRender *self)
                           0, NULL);
 }
 
+void
+gsk_vulkan_render_draw_pass (GskVulkanRender     *self,
+                             GskVulkanRenderPass *pass,
+                             VkFence              fence)
+{
+  VkCommandBuffer command_buffer;
+  gsize wait_semaphore_count;
+  gsize signal_semaphore_count;
+  VkSemaphore *wait_semaphores;
+  VkSemaphore *signal_semaphores;
+
+  wait_semaphore_count = gsk_vulkan_render_pass_get_wait_semaphores (pass, &wait_semaphores);
+  signal_semaphore_count = gsk_vulkan_render_pass_get_signal_semaphores (pass, &signal_semaphores);
+
+  command_buffer = gsk_vulkan_command_pool_get_buffer (self->command_pool);
+
+  gsk_vulkan_render_pass_draw (pass, self, self->pipeline_layout, command_buffer);
+
+  gsk_vulkan_command_pool_submit_buffer (self->command_pool,
+                                         command_buffer,
+                                         wait_semaphore_count,
+                                         wait_semaphores,
+                                         signal_semaphore_count,
+                                         signal_semaphores,
+                                         fence);
+}
+
 void
 gsk_vulkan_render_draw (GskVulkanRender *self)
 {
@@ -662,27 +689,9 @@ gsk_vulkan_render_draw (GskVulkanRender *self)
 
   for (l = self->render_passes; l; l = l->next)
     {
-      GskVulkanRenderPass *pass = l->data;
-      VkCommandBuffer command_buffer;
-      gsize wait_semaphore_count;
-      gsize signal_semaphore_count;
-      VkSemaphore *wait_semaphores;
-      VkSemaphore *signal_semaphores;
-
-      wait_semaphore_count = gsk_vulkan_render_pass_get_wait_semaphores (pass, &wait_semaphores);
-      signal_semaphore_count = gsk_vulkan_render_pass_get_signal_semaphores (pass, &signal_semaphores);
-
-      command_buffer = gsk_vulkan_command_pool_get_buffer (self->command_pool);
-
-      gsk_vulkan_render_pass_draw (pass, self, self->pipeline_layout, command_buffer);
-
-      gsk_vulkan_command_pool_submit_buffer (self->command_pool,
-                                             command_buffer,
-                                             wait_semaphore_count,
-                                             wait_semaphores,
-                                             signal_semaphore_count,
-                                             signal_semaphores,
-                                             l->next != NULL ? VK_NULL_HANDLE : self->fence);
+      gsk_vulkan_render_draw_pass (self,
+                                   l->data,
+                                   l->next != NULL ? VK_NULL_HANDLE : self->fence);
     }
 
 #ifdef G_ENABLE_DEBUG
index 112b657785414723c102a56ea248f2770a28e903..b0eb712f0d4e016328ae979557e0cbe85d3d8f4d 100644 (file)
@@ -97,8 +97,9 @@ void                    gsk_vulkan_render_bind_descriptor_sets          (GskVulk
                                                                          VkCommandBuffer         command_buffer);
 
 void                    gsk_vulkan_render_draw                          (GskVulkanRender        *self);
-
-void                    gsk_vulkan_render_submit                        (GskVulkanRender        *self);
+void                    gsk_vulkan_render_draw_pass                     (GskVulkanRender        *self,
+                                                                         GskVulkanRenderPass    *pass,
+                                                                         VkFence                 fence);
 
 GdkTexture *            gsk_vulkan_render_download_target               (GskVulkanRender        *self);
 VkFramebuffer           gsk_vulkan_render_get_framebuffer               (GskVulkanRender        *self,