diff --git a/src/intel/vulkan/anv_cmd_buffer.c b/src/intel/vulkan/anv_cmd_buffer.c index ece9dd32f96..824f798f6bf 100644 --- a/src/intel/vulkan/anv_cmd_buffer.c +++ b/src/intel/vulkan/anv_cmd_buffer.c @@ -268,11 +268,15 @@ static VkResult anv_create_cmd_buffer( struct anv_cmd_buffer *cmd_buffer; VkResult result; - cmd_buffer = vk_object_alloc(&device->vk, &pool->alloc, sizeof(*cmd_buffer), - VK_OBJECT_TYPE_COMMAND_BUFFER); + cmd_buffer = vk_alloc2(&device->vk.alloc, &pool->alloc, sizeof(*cmd_buffer), + 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); if (cmd_buffer == NULL) return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY); + result = vk_command_buffer_init(&cmd_buffer->vk, &device->vk); + if (result != VK_SUCCESS) + goto fail; + cmd_buffer->batch.status = VK_SUCCESS; cmd_buffer->device = device; @@ -303,7 +307,7 @@ static VkResult anv_create_cmd_buffer( return VK_SUCCESS; fail: - vk_free(&cmd_buffer->pool->alloc, cmd_buffer); + vk_free2(&device->vk.alloc, &pool->alloc, cmd_buffer); return result; } @@ -353,7 +357,9 @@ anv_cmd_buffer_destroy(struct anv_cmd_buffer *cmd_buffer) vk_free(&cmd_buffer->pool->alloc, cmd_buffer->self_mod_locations); - vk_object_free(&cmd_buffer->device->vk, &cmd_buffer->pool->alloc, cmd_buffer); + vk_command_buffer_finish(&cmd_buffer->vk); + vk_free2(&cmd_buffer->device->vk.alloc, &cmd_buffer->pool->alloc, + cmd_buffer); } void anv_FreeCommandBuffers( @@ -375,6 +381,8 @@ void anv_FreeCommandBuffers( VkResult anv_cmd_buffer_reset(struct anv_cmd_buffer *cmd_buffer) { + vk_command_buffer_reset(&cmd_buffer->vk); + cmd_buffer->usage_flags = 0; cmd_buffer->perf_query_pool = NULL; anv_cmd_buffer_reset_batch_bo_chain(cmd_buffer); diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 5194a2f1887..0ac69e0a77c 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -71,6 +71,7 @@ #include "vk_physical_device.h" #include "vk_shader_module.h" #include "vk_util.h" +#include "vk_command_buffer.h" /* Pre-declarations needed for WSI entrypoints */ struct wl_surface; @@ -3103,7 +3104,7 @@ enum anv_cmd_buffer_exec_mode { struct anv_measure_batch; struct anv_cmd_buffer { - struct vk_object_base base; + struct vk_command_buffer vk; struct anv_device * device; @@ -4738,7 +4739,7 @@ void anv_perf_write_pass_results(struct intel_perf_config *perf, #define ANV_FROM_HANDLE(__anv_type, __name, __handle) \ VK_FROM_HANDLE(__anv_type, __name, __handle) -VK_DEFINE_HANDLE_CASTS(anv_cmd_buffer, base, VkCommandBuffer, +VK_DEFINE_HANDLE_CASTS(anv_cmd_buffer, vk.base, VkCommandBuffer, VK_OBJECT_TYPE_COMMAND_BUFFER) VK_DEFINE_HANDLE_CASTS(anv_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE) VK_DEFINE_HANDLE_CASTS(anv_instance, vk.base, VkInstance, VK_OBJECT_TYPE_INSTANCE)