[PATCH vkd3d] vkd3d-shader: Implement global resource memory barriers.
Zebediah Figura
zfigura at codeweavers.com
Wed Feb 3 21:09:17 CST 2021
Signed-off-by: Zebediah Figura <zfigura at 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
--
2.30.0
More information about the wine-devel
mailing list