Mesa (master): turnip: Remove failed command buffer from pool
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jan 29 09:47:38 UTC 2020
Module: Mesa
Branch: master
Commit: 0e11e8ba89400cba55815aa10be46f7d36e93044
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0e11e8ba89400cba55815aa10be46f7d36e93044
Author: Eduardo Lima Mitev <elima at igalia.com>
Date: Fri Jan 24 12:02:22 2020 +0000
turnip: Remove failed command buffer from pool
When an error condition occurs during tu_create_cmd_buffer(), the
cmd buffer has already been added to a pool, so the cleanup code should
remove it.
Fixes a crash (assert in tu_device::tu_bo_finish()) in dEQP tests:
dEQP-VK.api.object_management.max_concurrent.command_buffer_primary
dEQP-VK.api.object_management.max_concurrent.command_buffer_secondary
due to pool attempting to destroy an invalid command buffer.
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>
Reviewed-by: Eric Anholt <eric at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3572>
---
src/freedreno/vulkan/tu_cmd_buffer.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c
index 7dc83c5356b..4cb47cef946 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -1667,7 +1667,7 @@ tu_create_cmd_buffer(struct tu_device *device,
VkResult result = tu_bo_init_new(device, &cmd_buffer->scratch_bo, 0x1000);
if (result != VK_SUCCESS)
- return result;
+ goto fail_scratch_bo;
#define VSC_DATA_SIZE(pitch) ((pitch) * 32 + 0x100) /* extra size to store VSC_SIZE */
#define VSC_DATA2_SIZE(pitch) ((pitch) * 32)
@@ -1690,6 +1690,8 @@ fail_vsc_data2:
tu_bo_finish(cmd_buffer->device, &cmd_buffer->vsc_data);
fail_vsc_data:
tu_bo_finish(cmd_buffer->device, &cmd_buffer->scratch_bo);
+fail_scratch_bo:
+ list_del(&cmd_buffer->pool_link);
return result;
}
More information about the mesa-commit
mailing list