[PATCH vkd3d] vkd3d: Lock the heap mutex while binding heap memory.
Conor McCarthy
cmccarthy at codeweavers.com
Sun Feb 13 20:43:36 CST 2022
Signed-off-by: Conor McCarthy <cmccarthy at codeweavers.com>
---
libs/vkd3d/resource.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/libs/vkd3d/resource.c b/libs/vkd3d/resource.c
index 19a163be..dff785da 100644
--- a/libs/vkd3d/resource.c
+++ b/libs/vkd3d/resource.c
@@ -1941,11 +1941,17 @@ static HRESULT vkd3d_bind_heap_memory(struct d3d12_device *device,
goto allocate_memory;
}
+ /* Syncronisation is not required for binding, but vkMapMemory() may be called
+ * and it requires exclusive access. */
+ pthread_mutex_lock(&heap->mutex);
+
if (d3d12_resource_is_buffer(resource))
vr = VK_CALL(vkBindBufferMemory(vk_device, resource->u.vk_buffer, heap->vk_memory, heap_offset));
else
vr = VK_CALL(vkBindImageMemory(vk_device, resource->u.vk_image, heap->vk_memory, heap_offset));
+ pthread_mutex_unlock(&heap->mutex);
+
if (vr == VK_SUCCESS)
{
resource->heap = heap;
--
2.34.1
More information about the wine-devel
mailing list