mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 10:30:08 +01:00
anv: rename anv_create_companion_rcs_command_buffer to anv_cmd_buffer_ensure_rcs_companion
We can now drop any checks for companion_rcs_cmd_buffer before calling anv_create_companion_rcs_command_buffer. Ensure that anv_cmd_buffer_ensure_rcs_companion callee's have the proper error handling. Signed-off-by: Rohan Garg <rohan.garg@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26648>
This commit is contained in:
parent
bed1b8b90d
commit
40c6e54ce7
4 changed files with 39 additions and 36 deletions
|
|
@ -377,21 +377,24 @@ record_main_rcs_cmd_buffer_done(struct anv_cmd_buffer *cmd_buffer)
|
|||
{
|
||||
const struct intel_device_info *info = cmd_buffer->device->info;
|
||||
|
||||
if (cmd_buffer->companion_rcs_cmd_buffer == NULL) {
|
||||
anv_create_companion_rcs_command_buffer(cmd_buffer);
|
||||
/* Re-emit the aux table register in every command buffer. This way we're
|
||||
* ensured that we have the table even if this command buffer doesn't
|
||||
* initialize any images.
|
||||
*/
|
||||
if (cmd_buffer->device->info->has_aux_map) {
|
||||
assert(cmd_buffer->companion_rcs_cmd_buffer != NULL);
|
||||
anv_add_pending_pipe_bits(cmd_buffer->companion_rcs_cmd_buffer,
|
||||
ANV_PIPE_AUX_TABLE_INVALIDATE_BIT,
|
||||
"new cmd buffer with aux-tt");
|
||||
}
|
||||
const VkResult result = anv_cmd_buffer_ensure_rcs_companion(cmd_buffer);
|
||||
if (result != VK_SUCCESS) {
|
||||
anv_batch_set_error(&cmd_buffer->batch, result);
|
||||
return ANV_STATE_NULL;
|
||||
}
|
||||
|
||||
assert(cmd_buffer->companion_rcs_cmd_buffer != NULL);
|
||||
|
||||
/* Re-emit the aux table register in every command buffer. This way we're
|
||||
* ensured that we have the table even if this command buffer doesn't
|
||||
* initialize any images.
|
||||
*/
|
||||
if (cmd_buffer->device->info->has_aux_map) {
|
||||
anv_add_pending_pipe_bits(cmd_buffer->companion_rcs_cmd_buffer,
|
||||
ANV_PIPE_AUX_TABLE_INVALIDATE_BIT,
|
||||
"new cmd buffer with aux-tt");
|
||||
}
|
||||
|
||||
return anv_genX(info, cmd_buffer_begin_companion_rcs_syncpoint)(cmd_buffer);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,29 +85,30 @@ anv_cmd_state_reset(struct anv_cmd_buffer *cmd_buffer)
|
|||
}
|
||||
|
||||
VkResult
|
||||
anv_create_companion_rcs_command_buffer(struct anv_cmd_buffer *cmd_buffer)
|
||||
anv_cmd_buffer_ensure_rcs_companion(struct anv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
if (cmd_buffer->companion_rcs_cmd_buffer)
|
||||
return VK_SUCCESS;
|
||||
|
||||
VkResult result = VK_SUCCESS;
|
||||
pthread_mutex_lock(&cmd_buffer->device->mutex);
|
||||
if (cmd_buffer->companion_rcs_cmd_buffer == NULL) {
|
||||
VK_FROM_HANDLE(vk_command_pool, pool,
|
||||
cmd_buffer->device->companion_rcs_cmd_pool);
|
||||
assert(pool != NULL);
|
||||
VK_FROM_HANDLE(vk_command_pool, pool,
|
||||
cmd_buffer->device->companion_rcs_cmd_pool);
|
||||
assert(pool != NULL);
|
||||
|
||||
struct vk_command_buffer *tmp_cmd_buffer = NULL;
|
||||
result = pool->command_buffer_ops->create(pool, &tmp_cmd_buffer);
|
||||
if (result != VK_SUCCESS) {
|
||||
pthread_mutex_unlock(&cmd_buffer->device->mutex);
|
||||
return result;
|
||||
}
|
||||
struct vk_command_buffer *tmp_cmd_buffer = NULL;
|
||||
result = pool->command_buffer_ops->create(pool, &tmp_cmd_buffer);
|
||||
|
||||
cmd_buffer->companion_rcs_cmd_buffer =
|
||||
container_of(tmp_cmd_buffer, struct anv_cmd_buffer, vk);
|
||||
cmd_buffer->companion_rcs_cmd_buffer->vk.level = cmd_buffer->vk.level;
|
||||
cmd_buffer->companion_rcs_cmd_buffer->is_companion_rcs_cmd_buffer = true;
|
||||
}
|
||||
if (result != VK_SUCCESS)
|
||||
goto unlock_and_return;
|
||||
|
||||
cmd_buffer->companion_rcs_cmd_buffer =
|
||||
container_of(tmp_cmd_buffer, struct anv_cmd_buffer, vk);
|
||||
cmd_buffer->companion_rcs_cmd_buffer->vk.level = cmd_buffer->vk.level;
|
||||
cmd_buffer->companion_rcs_cmd_buffer->is_companion_rcs_cmd_buffer = true;
|
||||
|
||||
unlock_and_return:
|
||||
pthread_mutex_unlock(&cmd_buffer->device->mutex);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5334,7 +5334,7 @@ anv_cmd_buffer_fill_area(struct anv_cmd_buffer *cmd_buffer,
|
|||
uint32_t data);
|
||||
|
||||
VkResult
|
||||
anv_create_companion_rcs_command_buffer(struct anv_cmd_buffer *cmd_buffer);
|
||||
anv_cmd_buffer_ensure_rcs_companion(struct anv_cmd_buffer *cmd_buffer);
|
||||
|
||||
bool
|
||||
anv_can_hiz_clear_ds_view(struct anv_device *device,
|
||||
|
|
|
|||
|
|
@ -3714,13 +3714,12 @@ genX(CmdExecuteCommands)(
|
|||
* command buffer for execution if secondary RCS is valid.
|
||||
*/
|
||||
if (secondary->companion_rcs_cmd_buffer != NULL) {
|
||||
if (container->companion_rcs_cmd_buffer == NULL) {
|
||||
VkResult result = anv_create_companion_rcs_command_buffer(container);
|
||||
if (result != VK_SUCCESS) {
|
||||
anv_batch_set_error(&container->batch, result);
|
||||
return;
|
||||
}
|
||||
VkResult result = anv_cmd_buffer_ensure_rcs_companion(container);
|
||||
if (result != VK_SUCCESS) {
|
||||
anv_batch_set_error(&container->batch, result);
|
||||
return;
|
||||
}
|
||||
|
||||
anv_cmd_buffer_add_secondary(container->companion_rcs_cmd_buffer,
|
||||
secondary->companion_rcs_cmd_buffer);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue