anv: Handle companion RCS in end/destory/reset code path

If we have valid companion RCS command buffer, we should
end/destroy/reset in the same fashion as of main command buffer.

v2:
- Add lock around anv_cmd_buffer_destroy (Sagar)

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23661>
This commit is contained in:
Sagar Ghuge
2023-07-14 12:10:40 -07:00
committed by Marge Bot
parent 801523f03d
commit 13b3d7f741
3 changed files with 41 additions and 1 deletions
+13
View File
@@ -231,7 +231,14 @@ anv_cmd_buffer_destroy(struct vk_command_buffer *vk_cmd_buffer)
struct anv_cmd_buffer *cmd_buffer =
container_of(vk_cmd_buffer, struct anv_cmd_buffer, vk);
pthread_mutex_lock(&cmd_buffer->device->mutex);
if (cmd_buffer->companion_rcs_cmd_buffer) {
destroy_cmd_buffer(cmd_buffer->companion_rcs_cmd_buffer);
cmd_buffer->companion_rcs_cmd_buffer = NULL;
}
destroy_cmd_buffer(cmd_buffer);
pthread_mutex_unlock(&cmd_buffer->device->mutex);
}
static void
@@ -286,6 +293,12 @@ anv_cmd_buffer_reset(struct vk_command_buffer *vk_cmd_buffer,
struct anv_cmd_buffer *cmd_buffer =
container_of(vk_cmd_buffer, struct anv_cmd_buffer, vk);
if (cmd_buffer->companion_rcs_cmd_buffer) {
reset_cmd_buffer(cmd_buffer->companion_rcs_cmd_buffer, flags);
destroy_cmd_buffer(cmd_buffer->companion_rcs_cmd_buffer);
cmd_buffer->companion_rcs_cmd_buffer = NULL;
}
reset_cmd_buffer(cmd_buffer, flags);
}