Mesa (main): vulkan: Take a vk_command_pool in vk_command_buffer_init()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Feb 11 08:46:48 UTC 2022


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

Author: Jason Ekstrand <jason.ekstrand at collabora.com>
Date:   Mon Feb  7 13:16:20 2022 -0600

vulkan: Take a vk_command_pool in vk_command_buffer_init()

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14917>

---

 src/amd/vulkan/radv_cmd_buffer.c                | 4 ++--
 src/broadcom/vulkan/v3dv_cmd_buffer.c           | 2 +-
 src/freedreno/vulkan/tu_cmd_buffer.c            | 4 ++--
 src/gallium/frontends/lavapipe/lvp_cmd_buffer.c | 4 ++--
 src/intel/vulkan/anv_cmd_buffer.c               | 2 +-
 src/panfrost/vulkan/panvk_vX_cmd_buffer.c       | 4 ++--
 src/vulkan/runtime/vk_command_buffer.c          | 7 +++++--
 src/vulkan/runtime/vk_command_buffer.h          | 6 +++++-
 8 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index b43008dc6a3..712fce200fa 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -449,7 +449,7 @@ radv_create_cmd_buffer(struct radv_device *device, struct radv_cmd_pool *pool,
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
 
    VkResult result =
-      vk_command_buffer_init(&cmd_buffer->vk, &device->vk, level);
+      vk_command_buffer_init(&cmd_buffer->vk, &pool->vk, level);
    if (result != VK_SUCCESS) {
       vk_free(&cmd_buffer->pool->vk.alloc, cmd_buffer);
       return result;
@@ -4357,7 +4357,7 @@ radv_AllocateCommandBuffers(VkDevice _device, const VkCommandBufferAllocateInfo
          result = radv_reset_cmd_buffer(cmd_buffer);
          vk_command_buffer_finish(&cmd_buffer->vk);
          VkResult init_result =
-            vk_command_buffer_init(&cmd_buffer->vk, &device->vk, pAllocateInfo->level);
+            vk_command_buffer_init(&cmd_buffer->vk, &pool->vk, pAllocateInfo->level);
          if (init_result != VK_SUCCESS)
             result = init_result;
 
diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c
index 4e561da8399..10a89fa71ce 100644
--- a/src/broadcom/vulkan/v3dv_cmd_buffer.c
+++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c
@@ -126,7 +126,7 @@ cmd_buffer_create(struct v3dv_device *device,
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
 
    VkResult result;
-   result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk, level);
+   result = vk_command_buffer_init(&cmd_buffer->vk, &pool->vk, level);
    if (result != VK_SUCCESS) {
       vk_free2(&device->vk.alloc, &pool->vk.alloc, cmd_buffer);
       return result;
diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c
index c2b7563a64a..09fa0eaa0cc 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -1505,7 +1505,7 @@ tu_create_cmd_buffer(struct tu_device *device,
    if (cmd_buffer == NULL)
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
 
-   VkResult result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk, level);
+   VkResult result = vk_command_buffer_init(&cmd_buffer->vk, &pool->vk, level);
    if (result != VK_SUCCESS) {
       vk_free2(&device->vk.alloc, NULL, cmd_buffer);
       return result;
@@ -1622,7 +1622,7 @@ tu_AllocateCommandBuffers(VkDevice _device,
          result = tu_reset_cmd_buffer(cmd_buffer);
          vk_command_buffer_finish(&cmd_buffer->vk);
          VkResult init_result =
-            vk_command_buffer_init(&cmd_buffer->vk, &device->vk, pAllocateInfo->level);
+            vk_command_buffer_init(&cmd_buffer->vk, &pool->vk, pAllocateInfo->level);
          if (init_result != VK_SUCCESS)
             result = init_result;
 
diff --git a/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c b/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c
index b3c23aafd22..28589e66a39 100644
--- a/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c
+++ b/src/gallium/frontends/lavapipe/lvp_cmd_buffer.c
@@ -38,7 +38,7 @@ static VkResult lvp_create_cmd_buffer(
    if (cmd_buffer == NULL)
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
 
-   VkResult result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk, level);
+   VkResult result = vk_command_buffer_init(&cmd_buffer->vk, &pool->vk, level);
    if (result != VK_SUCCESS) {
       vk_free(&pool->vk.alloc, cmd_buffer);
       return result;
@@ -96,7 +96,7 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_AllocateCommandBuffers(
          result = lvp_reset_cmd_buffer(cmd_buffer);
          vk_command_buffer_finish(&cmd_buffer->vk);
          VkResult init_result =
-            vk_command_buffer_init(&cmd_buffer->vk, &device->vk,
+            vk_command_buffer_init(&cmd_buffer->vk, &pool->vk,
                                    pAllocateInfo->level);
          if (init_result != VK_SUCCESS)
             result = init_result;
diff --git a/src/intel/vulkan/anv_cmd_buffer.c b/src/intel/vulkan/anv_cmd_buffer.c
index 33db07818ae..a2647a4a622 100644
--- a/src/intel/vulkan/anv_cmd_buffer.c
+++ b/src/intel/vulkan/anv_cmd_buffer.c
@@ -275,7 +275,7 @@ static VkResult anv_create_cmd_buffer(
    if (cmd_buffer == NULL)
       return vk_error(pool, VK_ERROR_OUT_OF_HOST_MEMORY);
 
-   result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk, level);
+   result = vk_command_buffer_init(&cmd_buffer->vk, &pool->vk, level);
    if (result != VK_SUCCESS)
       goto fail_alloc;
 
diff --git a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c
index 5f47f666680..d07543b82bb 100644
--- a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c
+++ b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c
@@ -1011,7 +1011,7 @@ panvk_create_cmdbuf(struct panvk_device *device,
    if (!cmdbuf)
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
 
-   VkResult result = vk_command_buffer_init(&cmdbuf->vk, &device->vk, level);
+   VkResult result = vk_command_buffer_init(&cmdbuf->vk, &pool->vk, level);
    if (result != VK_SUCCESS) {
       vk_free(&device->vk.alloc, cmdbuf);
       return result;
@@ -1068,7 +1068,7 @@ panvk_per_arch(AllocateCommandBuffers)(VkDevice _device,
          list_addtail(&cmdbuf->pool_link, &pool->active_cmd_buffers);
 
          vk_command_buffer_finish(&cmdbuf->vk);
-         result = vk_command_buffer_init(&cmdbuf->vk, &device->vk, pAllocateInfo->level);
+         result = vk_command_buffer_init(&cmdbuf->vk, &pool->vk, pAllocateInfo->level);
       } else {
          result = panvk_create_cmdbuf(device, pool, pAllocateInfo->level, &cmdbuf);
       }
diff --git a/src/vulkan/runtime/vk_command_buffer.c b/src/vulkan/runtime/vk_command_buffer.c
index d3bd69d1df9..6195d0a7a0b 100644
--- a/src/vulkan/runtime/vk_command_buffer.c
+++ b/src/vulkan/runtime/vk_command_buffer.c
@@ -23,15 +23,18 @@
 
 #include "vk_command_buffer.h"
 
+#include "vk_command_pool.h"
+
 VkResult
 vk_command_buffer_init(struct vk_command_buffer *command_buffer,
-                       struct vk_device *device,
+                       struct vk_command_pool *pool,
                        VkCommandBufferLevel level)
 {
    memset(command_buffer, 0, sizeof(*command_buffer));
-   vk_object_base_init(device, &command_buffer->base,
+   vk_object_base_init(pool->base.device, &command_buffer->base,
                        VK_OBJECT_TYPE_COMMAND_BUFFER);
 
+   command_buffer->pool = pool;
    command_buffer->level = level;
    util_dynarray_init(&command_buffer->labels, NULL);
    command_buffer->region_begin = true;
diff --git a/src/vulkan/runtime/vk_command_buffer.h b/src/vulkan/runtime/vk_command_buffer.h
index 92d28601df7..5d3dc5d850a 100644
--- a/src/vulkan/runtime/vk_command_buffer.h
+++ b/src/vulkan/runtime/vk_command_buffer.h
@@ -31,9 +31,13 @@
 extern "C" {
 #endif
 
+struct vk_command_pool;
+
 struct vk_command_buffer {
    struct vk_object_base base;
 
+   struct vk_command_pool *pool;
+
    /** VkCommandBufferAllocateInfo::level */
    VkCommandBufferLevel level;
 
@@ -83,7 +87,7 @@ VK_DEFINE_HANDLE_CASTS(vk_command_buffer, base, VkCommandBuffer,
 
 VkResult MUST_CHECK
 vk_command_buffer_init(struct vk_command_buffer *command_buffer,
-                       struct vk_device *device,
+                       struct vk_command_pool *pool,
                        VkCommandBufferLevel level);
 
 void



More information about the mesa-commit mailing list