Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- 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 a997ec6f..106c2980 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 cab5b80d..40b3e318 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 0601bdeb..8bb85a8b 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -493,6 +493,7 @@ enum vkd3d_shader_sync_flags { VKD3DSSF_THREAD_GROUP = 0x1, VKD3DSSF_GROUP_SHARED_MEMORY = 0x2, + VKD3DSSF_GLOBAL_UAV = 0x8, };
enum vkd3d_shader_uav_flags