Module: Mesa Branch: main Commit: bda4c4f6b6c4230ed8c14e72436441540378b934 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bda4c4f6b6c4230ed8c14e72436441540378b934
Author: Jason Ekstrand <[email protected]> Date: Mon Feb 7 13:16:20 2022 -0600 vulkan: Take a vk_command_pool in vk_command_buffer_init() Reviewed-by: Lionel Landwerlin <[email protected]> Reviewed-by: Boris Brezillon <[email protected]> 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
