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:
@@ -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
|
||||||
|
@@ -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);
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user