Mesa (main): radv: Move queue submit sparse bindings to a separate function.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue May 10 08:48:41 UTC 2022


Module: Mesa
Branch: main
Commit: c54c2901ff38b86197a7ee093c545001db6c8760
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c54c2901ff38b86197a7ee093c545001db6c8760

Author: Timur Kristóf <timur.kristof at gmail.com>
Date:   Thu May  5 15:11:23 2022 +0200

radv: Move queue submit sparse bindings to a separate function.

Signed-off-by: Timur Kristóf <timur.kristof at gmail.com>
Reviewed-by: Dave Airlie <airlied at redhat.com>
Reviewed-By: Tatsuyuki Ishi <ishitatsuyuki at gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16358>

---

 src/amd/vulkan/radv_device.c | 46 +++++++++++++++++++++++++++-----------------
 1 file changed, 28 insertions(+), 18 deletions(-)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index b6343d1e504..7326de82f10 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -4514,6 +4514,31 @@ struct radv_deferred_queue_submission {
    struct list_head processing_list;
 };
 
+static VkResult
+radv_queue_submit_bind_sparse_memory(struct radv_device *device, struct vk_queue_submit *submission)
+{
+   for (uint32_t i = 0; i < submission->buffer_bind_count; ++i) {
+      VkResult result = radv_sparse_buffer_bind_memory(device, submission->buffer_binds + i);
+      if (result != VK_SUCCESS)
+         return result;
+   }
+
+   for (uint32_t i = 0; i < submission->image_opaque_bind_count; ++i) {
+      VkResult result =
+         radv_sparse_image_opaque_bind_memory(device, submission->image_opaque_binds + i);
+      if (result != VK_SUCCESS)
+         return result;
+   }
+
+   for (uint32_t i = 0; i < submission->image_bind_count; ++i) {
+      VkResult result = radv_sparse_image_bind_memory(device, submission->image_binds + i);
+      if (result != VK_SUCCESS)
+         return result;
+   }
+
+   return VK_SUCCESS;
+}
+
 static VkResult
 radv_queue_submit(struct vk_queue *vqueue, struct vk_queue_submit *submission)
 {
@@ -4534,24 +4559,9 @@ radv_queue_submit(struct vk_queue *vqueue, struct vk_queue_submit *submission)
    if (result != VK_SUCCESS)
       goto fail;
 
-   for (uint32_t i = 0; i < submission->buffer_bind_count; ++i) {
-      result = radv_sparse_buffer_bind_memory(queue->device, submission->buffer_binds + i);
-      if (result != VK_SUCCESS)
-         goto fail;
-   }
-
-   for (uint32_t i = 0; i < submission->image_opaque_bind_count; ++i) {
-      result =
-         radv_sparse_image_opaque_bind_memory(queue->device, submission->image_opaque_binds + i);
-      if (result != VK_SUCCESS)
-         goto fail;
-   }
-
-   for (uint32_t i = 0; i < submission->image_bind_count; ++i) {
-      result = radv_sparse_image_bind_memory(queue->device, submission->image_binds + i);
-      if (result != VK_SUCCESS)
-         goto fail;
-   }
+   result = radv_queue_submit_bind_sparse_memory(queue->device, submission);
+   if (result != VK_SUCCESS)
+      goto fail;
 
    if (!submission->command_buffer_count && !submission->wait_count && !submission->signal_count)
       return VK_SUCCESS;



More information about the mesa-commit mailing list