Module: vkd3d Branch: master Commit: 16aceacc0c14244b405b53582a6acb57e8cf574f URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=16aceacc0c14244b405b5358...
Author: Zebediah Figura zfigura@codeweavers.com Date: Wed Feb 3 21:09:17 2021 -0600
vkd3d-shader: Implement global resource memory barriers.
Signed-off-by: Zebediah Figura zfigura@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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