Module: vkd3d Branch: master Commit: 22d86653003aeec7b919d0b58b2c0bb76438936e URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=22d86653003aeec7b919d0b5... Author: Conor McCarthy <cmccarthy(a)codeweavers.com> Date: Thu Mar 24 15:56:00 2022 +0100 vkd3d: Use Vulkan timeline semaphores for D3D12 fences. D3D12 supports signalling a fence to a lower value, while Vulkan timeline semaphores do not. On the GPU side this is handled by simply submitting the signal anyway, if a test for this passes on device creation, because working around this is impractical. For CPU signals the Vulkan semaphore is replaced with a new one at the lower value only if no waits and/or signals are pending on the GPU. Otherwise, a fixme is emitted. Partly based on a vkd3d-proton patch by Hans-Kristian Arntzen (not including the handling of lower fence values). The old implementation is used if KHR_timeline_semaphore is not available or GPU signals do not work for a lower value. Signed-off-by: Conor McCarthy <cmccarthy(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- libs/vkd3d/command.c | 571 ++++++++++++++++++++++++++++++++++++++++++--- libs/vkd3d/device.c | 87 +++++++ libs/vkd3d/vkd3d_private.h | 30 +++ libs/vkd3d/vulkan_procs.h | 5 + tests/d3d12.c | 11 +- 5 files changed, 663 insertions(+), 41 deletions(-) Diff: https://source.winehq.org/git/vkd3d.git/?a=commitdiff;h=22d86653003aeec7b919...