diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index c6047ad96ef..8f4b30187a9 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -408,7 +408,7 @@ radv_destroy_cmd_buffer(struct radv_cmd_buffer *cmd_buffer) for (unsigned i = 0; i < MAX_BIND_POINTS; i++) free(cmd_buffer->descriptors[i].push_set.set.mapped_ptr); - vk_object_base_finish(&cmd_buffer->base); + vk_command_buffer_finish(&cmd_buffer->vk); vk_free(&cmd_buffer->pool->alloc, cmd_buffer); } @@ -422,7 +422,12 @@ radv_create_cmd_buffer(struct radv_device *device, struct radv_cmd_pool *pool, if (cmd_buffer == NULL) return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); - vk_object_base_init(&device->vk, &cmd_buffer->base, VK_OBJECT_TYPE_COMMAND_BUFFER); + VkResult result = + vk_command_buffer_init(&cmd_buffer->vk, &device->vk); + if (result != VK_SUCCESS) { + vk_free(&cmd_buffer->pool->alloc, cmd_buffer); + return result; + } cmd_buffer->device = device; cmd_buffer->pool = pool; @@ -449,6 +454,8 @@ radv_create_cmd_buffer(struct radv_device *device, struct radv_cmd_pool *pool, static VkResult radv_reset_cmd_buffer(struct radv_cmd_buffer *cmd_buffer) { + vk_command_buffer_reset(&cmd_buffer->vk); + cmd_buffer->device->ws->cs_reset(cmd_buffer->cs); list_for_each_entry_safe(struct radv_cmd_buffer_upload, up, &cmd_buffer->upload.list, list) @@ -3817,7 +3824,11 @@ radv_AllocateCommandBuffers(VkDevice _device, const VkCommandBufferAllocateInfo result = radv_reset_cmd_buffer(cmd_buffer); cmd_buffer->level = pAllocateInfo->level; - vk_object_base_reset(&cmd_buffer->base); + vk_command_buffer_finish(&cmd_buffer->vk); + VkResult init_result = + vk_command_buffer_init(&cmd_buffer->vk, &device->vk); + if (init_result != VK_SUCCESS) + result = init_result; pCommandBuffers[i] = radv_cmd_buffer_to_handle(cmd_buffer); } else { diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 0430e4ef6d6..64c7c4edf38 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -61,6 +61,7 @@ #include "vk_instance.h" #include "vk_physical_device.h" #include "vk_shader_module.h" +#include "vk_command_buffer.h" #include "vk_util.h" #include "ac_binary.h" @@ -1461,7 +1462,7 @@ enum radv_cmd_buffer_status { }; struct radv_cmd_buffer { - struct vk_object_base base; + struct vk_command_buffer vk; struct radv_device *device;