Zebediah Figura : vkd3d-shader: Implement global resource memory barriers.

Alexandre Julliard julliard at winehq.org
Thu Feb 4 16:02:23 CST 2021


Module: vkd3d
Branch: master
Commit: 16aceacc0c14244b405b53582a6acb57e8cf574f
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=16aceacc0c14244b405b53582a6acb57e8cf574f

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Wed Feb  3 21:09:17 2021 -0600

vkd3d-shader: Implement global resource memory barriers.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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




More information about the wine-cvs mailing list