mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-27 15:20:37 +02:00
zink: Lock queue_lock in zink_destroy_screen
Fixes:015eda4a41("zink: deduplicate VkDevice and VkInstance") Reviewed-by: Dave Airlie <airlied@redhat.com> (cherry picked from commit018178842e) Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38803>
This commit is contained in:
parent
3b6f03bd49
commit
7c1705c148
2 changed files with 7 additions and 1 deletions
|
|
@ -834,7 +834,7 @@
|
|||
"description": "zink: Lock queue_lock in zink_destroy_screen",
|
||||
"nominated": true,
|
||||
"nomination_type": 2,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "015eda4a4186c75538a0aa915e380c5ce5863319",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -1524,13 +1524,19 @@ zink_destroy_screen(struct pipe_screen *pscreen)
|
|||
struct zink_screen *screen = zink_screen(pscreen);
|
||||
|
||||
if (!screen->device_lost && screen->queue) {
|
||||
// Multiple screens can share a queue, so we need to lock queue_lock even
|
||||
// in the screen destructor
|
||||
simple_mtx_lock(screen->queue_lock);
|
||||
VkResult result = VKSCR(QueueWaitIdle)(screen->queue);
|
||||
simple_mtx_unlock(screen->queue_lock);
|
||||
|
||||
if (result != VK_SUCCESS)
|
||||
mesa_loge("ZINK: vkQueueWaitIdle failed (%s)", vk_Result_to_str(result));
|
||||
|
||||
if (screen->queue_sparse && screen->queue_sparse != screen->queue) {
|
||||
simple_mtx_lock(screen->queue_lock);
|
||||
result = VKSCR(QueueWaitIdle)(screen->queue_sparse);
|
||||
simple_mtx_unlock(screen->queue_lock);
|
||||
|
||||
if (result != VK_SUCCESS)
|
||||
mesa_loge("ZINK: vkQueueWaitIdle failed (%s)", vk_Result_to_str(result));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue