From 9b3e4d5d7cd14a82693336f54c9e3b4b521a244c Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 8 Jun 2022 10:52:36 +1000 Subject: [PATCH] pvr: use common command buffer status Reviewed-by: Karmjit Mahil Part-of: --- src/imagination/vulkan/pvr_cmd_buffer.c | 13 +++---------- src/imagination/vulkan/pvr_private.h | 12 +----------- src/imagination/vulkan/pvr_queue.c | 6 ++---- 3 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index 9ca565fd..6da4f3a 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -166,7 +166,6 @@ static void pvr_cmd_buffer_reset(struct vk_command_buffer *vk_cmd_buffer, cmd_buffer->usage_flags = 0; cmd_buffer->state.status = VK_SUCCESS; - cmd_buffer->status = PVR_CMD_BUFFER_STATUS_INITIAL; } static void pvr_cmd_buffer_destroy(struct vk_command_buffer *vk_cmd_buffer) @@ -213,7 +212,6 @@ static VkResult pvr_cmd_buffer_create(struct pvr_device *device, util_dynarray_init(&cmd_buffer->deferred_csb_commands, NULL); cmd_buffer->state.status = VK_SUCCESS; - cmd_buffer->status = PVR_CMD_BUFFER_STATUS_INITIAL; list_inithead(&cmd_buffer->sub_cmds); list_inithead(&cmd_buffer->bo_list); @@ -2660,8 +2658,7 @@ VkResult pvr_BeginCommandBuffer(VkCommandBuffer commandBuffer, struct pvr_cmd_buffer_state *state; VkResult result; - if (cmd_buffer->status != PVR_CMD_BUFFER_STATUS_INITIAL) - pvr_cmd_buffer_reset(&cmd_buffer->vk, 0); + vk_command_buffer_begin(&cmd_buffer->vk, pBeginInfo); cmd_buffer->usage_flags = pBeginInfo->flags; state = &cmd_buffer->state; @@ -2704,8 +2701,6 @@ VkResult pvr_BeginCommandBuffer(VkCommandBuffer commandBuffer, 0xFF, sizeof(*state->barriers_needed) * ARRAY_SIZE(state->barriers_needed)); - cmd_buffer->status = PVR_CMD_BUFFER_STATUS_RECORDING; - return VK_SUCCESS; } @@ -6507,7 +6502,7 @@ VkResult pvr_EndCommandBuffer(VkCommandBuffer commandBuffer) * * CommandBuffer must be in the recording state. */ - assert(cmd_buffer->status == PVR_CMD_BUFFER_STATUS_RECORDING); + assert(cmd_buffer->vk.state == MESA_VK_COMMAND_BUFFER_STATE_RECORDING); if (state->status != VK_SUCCESS) return state->status; @@ -6516,7 +6511,5 @@ VkResult pvr_EndCommandBuffer(VkCommandBuffer commandBuffer) if (result != VK_SUCCESS) return result; - cmd_buffer->status = PVR_CMD_BUFFER_STATUS_EXECUTABLE; - - return VK_SUCCESS; + return vk_command_buffer_end(&cmd_buffer->vk); } diff --git a/src/imagination/vulkan/pvr_private.h b/src/imagination/vulkan/pvr_private.h index 275576f..176312e 100644 --- a/src/imagination/vulkan/pvr_private.h +++ b/src/imagination/vulkan/pvr_private.h @@ -92,13 +92,6 @@ enum pvr_memlayout { PVR_MEMLAYOUT_3DTWIDDLED, }; -enum pvr_cmd_buffer_status { - PVR_CMD_BUFFER_STATUS_INVALID = 0, /* explicitly treat 0 as invalid */ - PVR_CMD_BUFFER_STATUS_INITIAL, - PVR_CMD_BUFFER_STATUS_RECORDING, - PVR_CMD_BUFFER_STATUS_EXECUTABLE, -}; - enum pvr_texture_state { PVR_TEXTURE_STATE_SAMPLE, PVR_TEXTURE_STATE_STORAGE, @@ -1077,9 +1070,6 @@ struct pvr_cmd_buffer { struct pvr_device *device; - /* Buffer status, invalid/initial/recording/executable */ - enum pvr_cmd_buffer_status status; - /* Buffer usage flags */ VkCommandBufferUsageFlags usage_flags; @@ -1733,7 +1723,7 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_render_pass, #define PVR_CHECK_COMMAND_BUFFER_BUILDING_STATE(cmd_buffer) \ do { \ struct pvr_cmd_buffer *const _cmd_buffer = (cmd_buffer); \ - if (_cmd_buffer->status != PVR_CMD_BUFFER_STATUS_RECORDING) { \ + if (_cmd_buffer->vk.state != MESA_VK_COMMAND_BUFFER_STATE_RECORDING) { \ vk_errorf(_cmd_buffer, \ VK_ERROR_OUT_OF_DEVICE_MEMORY, \ "Command buffer is not in recording state"); \ diff --git a/src/imagination/vulkan/pvr_queue.c b/src/imagination/vulkan/pvr_queue.c index 0ee3be8..9acc2ff 100644 --- a/src/imagination/vulkan/pvr_queue.c +++ b/src/imagination/vulkan/pvr_queue.c @@ -661,7 +661,7 @@ static VkResult pvr_process_cmd_buffer( PVR_FROM_HANDLE(pvr_cmd_buffer, cmd_buffer, commandBuffer); VkResult result; - assert(cmd_buffer->status == PVR_CMD_BUFFER_STATUS_EXECUTABLE); + assert(cmd_buffer->vk.state == MESA_VK_COMMAND_BUFFER_STATE_EXECUTABLE); list_for_each_entry_safe (struct pvr_sub_cmd, sub_cmd, @@ -718,10 +718,8 @@ static VkResult pvr_process_cmd_buffer( result = vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); } - if (result != VK_SUCCESS) { - cmd_buffer->status = PVR_CMD_BUFFER_STATUS_INVALID; + if (result != VK_SUCCESS) return result; - } p_atomic_inc(&device->global_queue_job_count); } -- 2.7.4