turnip: use common command buffer status code.

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16922>
This commit is contained in:
Dave Airlie
2022-06-08 10:46:26 +10:00
committed by Marge Bot
parent 697f448f6c
commit 49c4c5cb64
3 changed files with 11 additions and 28 deletions

View File

@@ -1753,8 +1753,6 @@ tu_reset_cmd_buffer(struct vk_command_buffer *vk_cmd_buffer,
cmd_buffer->state.last_prim_params.valid = false; cmd_buffer->state.last_prim_params.valid = false;
cmd_buffer->vsc_initialized = false; cmd_buffer->vsc_initialized = false;
cmd_buffer->status = TU_CMD_BUFFER_STATUS_INITIAL;
} }
const struct vk_command_buffer_ops tu_cmd_buffer_ops = { const struct vk_command_buffer_ops tu_cmd_buffer_ops = {
@@ -1779,14 +1777,9 @@ tu_cache_init(struct tu_cache_state *cache)
*/ */
VkResult VkResult
tu_cmd_buffer_begin(struct tu_cmd_buffer *cmd_buffer, tu_cmd_buffer_begin(struct tu_cmd_buffer *cmd_buffer,
VkCommandBufferUsageFlags usage_flags) const VkCommandBufferBeginInfo *pBeginInfo)
{ {
if (cmd_buffer->status != TU_CMD_BUFFER_STATUS_INITIAL) { vk_command_buffer_begin(&cmd_buffer->vk, pBeginInfo);
/* If the command buffer has already been resetted with
* vkResetCommandBuffer, no need to do it again.
*/
tu_reset_cmd_buffer(&cmd_buffer->vk, 0);
}
memset(&cmd_buffer->state, 0, sizeof(cmd_buffer->state)); memset(&cmd_buffer->state, 0, sizeof(cmd_buffer->state));
cmd_buffer->state.index_size = 0xff; /* dirty restart index */ cmd_buffer->state.index_size = 0xff; /* dirty restart index */
@@ -1795,13 +1788,12 @@ tu_cmd_buffer_begin(struct tu_cmd_buffer *cmd_buffer,
tu_cache_init(&cmd_buffer->state.cache); tu_cache_init(&cmd_buffer->state.cache);
tu_cache_init(&cmd_buffer->state.renderpass_cache); tu_cache_init(&cmd_buffer->state.renderpass_cache);
cmd_buffer->usage_flags = usage_flags; cmd_buffer->usage_flags = pBeginInfo->flags;
tu_cs_begin(&cmd_buffer->cs); tu_cs_begin(&cmd_buffer->cs);
tu_cs_begin(&cmd_buffer->draw_cs); tu_cs_begin(&cmd_buffer->draw_cs);
tu_cs_begin(&cmd_buffer->draw_epilogue_cs); tu_cs_begin(&cmd_buffer->draw_epilogue_cs);
cmd_buffer->status = TU_CMD_BUFFER_STATUS_RECORDING;
return VK_SUCCESS; return VK_SUCCESS;
} }
@@ -1810,7 +1802,7 @@ tu_BeginCommandBuffer(VkCommandBuffer commandBuffer,
const VkCommandBufferBeginInfo *pBeginInfo) const VkCommandBufferBeginInfo *pBeginInfo)
{ {
TU_FROM_HANDLE(tu_cmd_buffer, cmd_buffer, commandBuffer); TU_FROM_HANDLE(tu_cmd_buffer, cmd_buffer, commandBuffer);
VkResult result = tu_cmd_buffer_begin(cmd_buffer, pBeginInfo->flags); VkResult result = tu_cmd_buffer_begin(cmd_buffer, pBeginInfo);
if (result != VK_SUCCESS) if (result != VK_SUCCESS)
return result; return result;
@@ -2537,9 +2529,7 @@ tu_EndCommandBuffer(VkCommandBuffer commandBuffer)
tu_cs_end(&cmd_buffer->draw_cs); tu_cs_end(&cmd_buffer->draw_cs);
tu_cs_end(&cmd_buffer->draw_epilogue_cs); tu_cs_end(&cmd_buffer->draw_epilogue_cs);
cmd_buffer->status = TU_CMD_BUFFER_STATUS_EXECUTABLE; return vk_command_buffer_end(&cmd_buffer->vk);
return vk_command_buffer_get_record_result(&cmd_buffer->vk);
} }
VKAPI_ATTR void VKAPI_CALL VKAPI_ATTR void VKAPI_CALL

View File

@@ -529,15 +529,6 @@ struct tu_cmd_state
struct tu_primitive_params last_prim_params; struct tu_primitive_params last_prim_params;
}; };
enum tu_cmd_buffer_status
{
TU_CMD_BUFFER_STATUS_INVALID,
TU_CMD_BUFFER_STATUS_INITIAL,
TU_CMD_BUFFER_STATUS_RECORDING,
TU_CMD_BUFFER_STATUS_EXECUTABLE,
TU_CMD_BUFFER_STATUS_PENDING,
};
struct tu_cmd_buffer struct tu_cmd_buffer
{ {
struct vk_command_buffer vk; struct vk_command_buffer vk;
@@ -552,7 +543,6 @@ struct tu_cmd_buffer
struct tu_autotune_results_buffer* autotune_buffer; struct tu_autotune_results_buffer* autotune_buffer;
VkCommandBufferUsageFlags usage_flags; VkCommandBufferUsageFlags usage_flags;
enum tu_cmd_buffer_status status;
VkQueryPipelineStatisticFlags inherited_pipeline_statistics; VkQueryPipelineStatisticFlags inherited_pipeline_statistics;
@@ -632,7 +622,7 @@ void tu_render_pass_state_merge(struct tu_render_pass_state *dst,
const struct tu_render_pass_state *src); const struct tu_render_pass_state *src);
VkResult tu_cmd_buffer_begin(struct tu_cmd_buffer *cmd_buffer, VkResult tu_cmd_buffer_begin(struct tu_cmd_buffer *cmd_buffer,
VkCommandBufferUsageFlags usage_flags); const VkCommandBufferBeginInfo *pBeginInfo);
void tu_emit_cache_flush_renderpass(struct tu_cmd_buffer *cmd_buffer, void tu_emit_cache_flush_renderpass(struct tu_cmd_buffer *cmd_buffer,
struct tu_cs *cs); struct tu_cs *cs);

View File

@@ -175,8 +175,11 @@ tu_insert_dynamic_cmdbufs(struct tu_device *dev,
if (result != VK_SUCCESS) if (result != VK_SUCCESS)
return result; return result;
tu_cmd_buffer_begin(cmd_buffer, const VkCommandBufferBeginInfo begin = {
VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
};
tu_cmd_buffer_begin(cmd_buffer, &begin);
/* Setup the render pass using the first command buffer involved in /* Setup the render pass using the first command buffer involved in
* the chain, so that it will look like we're inside a render pass * the chain, so that it will look like we're inside a render pass