Zebediah Figura : vkd3d-shader: Implement global resource memory barriers.
Module: vkd3d Branch: master Commit: 16aceacc0c14244b405b53582a6acb57e8cf574f URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=16aceacc0c14244b405b5358... Author: Zebediah Figura <zfigura(a)codeweavers.com> Date: Wed Feb 3 21:09:17 2021 -0600 vkd3d-shader: Implement global resource memory barriers. Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- libs/vkd3d-shader/spirv.c | 7 +++++++ libs/vkd3d-shader/trace.c | 5 +++++ libs/vkd3d-shader/vkd3d_shader_private.h | 1 + 3 files changed, 13 insertions(+) diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index a997ec6..106c298 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -8866,6 +8866,13 @@ static void vkd3d_dxbc_compiler_emit_sync(struct vkd3d_dxbc_compiler *compiler, flags &= ~VKD3DSSF_THREAD_GROUP; } + if (flags & VKD3DSSF_GLOBAL_UAV) + { + memory_scope = SpvScopeDevice; + memory_semantics |= SpvMemorySemanticsImageMemoryMask; + flags &= ~VKD3DSSF_GLOBAL_UAV; + } + if (flags) { FIXME("Unhandled sync flags %#x.\n", flags); diff --git a/libs/vkd3d-shader/trace.c b/libs/vkd3d-shader/trace.c index cab5b80..40b3e31 100644 --- a/libs/vkd3d-shader/trace.c +++ b/libs/vkd3d-shader/trace.c @@ -368,6 +368,11 @@ static void shader_dump_global_flags(struct vkd3d_string_buffer *buffer, DWORD g static void shader_dump_sync_flags(struct vkd3d_string_buffer *buffer, DWORD sync_flags) { + if (sync_flags & VKD3DSSF_GLOBAL_UAV) + { + shader_addline(buffer, "_uglobal"); + sync_flags &= ~VKD3DSSF_GLOBAL_UAV; + } if (sync_flags & VKD3DSSF_GROUP_SHARED_MEMORY) { shader_addline(buffer, "_g"); diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 52196ca..01ad087 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -475,6 +475,7 @@ enum vkd3d_shader_sync_flags { VKD3DSSF_THREAD_GROUP = 0x1, VKD3DSSF_GROUP_SHARED_MEMORY = 0x2, + VKD3DSSF_GLOBAL_UAV = 0x8, }; enum vkd3d_shader_uav_flags
participants (1)
-
Alexandre Julliard