Conor McCarthy : vkd3d-shader: Enable Float64 capability if flagged in DXBC.

Alexandre Julliard julliard at winehq.org
Mon Jul 19 15:45:18 CDT 2021


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

Author: Conor McCarthy <cmccarthy at codeweavers.com>
Date:   Sat Jul 10 01:31:35 2021 +1000

vkd3d-shader: Enable Float64 capability if flagged in DXBC.

Based on a vkd3d-proton patch by Joshua Ashton.

Signed-off-by: Conor McCarthy <cmccarthy 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                | 6 ++++++
 libs/vkd3d-shader/vkd3d_shader_private.h | 4 +++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index bd23112..6b81fee 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -5128,6 +5128,12 @@ static void vkd3d_dxbc_compiler_emit_dcl_global_flags(struct vkd3d_dxbc_compiler
         flags &= ~VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL;
     }
 
+    if (flags & (VKD3DSGF_ENABLE_DOUBLE_PRECISION_FLOAT_OPS | VKD3DSGF_ENABLE_11_1_DOUBLE_EXTENSIONS))
+    {
+        vkd3d_spirv_enable_capability(&compiler->spirv_builder, SpvCapabilityFloat64);
+        flags &= ~(VKD3DSGF_ENABLE_DOUBLE_PRECISION_FLOAT_OPS | VKD3DSGF_ENABLE_11_1_DOUBLE_EXTENSIONS);
+    }
+
     if (flags & ~(VKD3DSGF_REFACTORING_ALLOWED | VKD3DSGF_ENABLE_RAW_AND_STRUCTURED_BUFFERS))
         FIXME("Unhandled global flags %#x.\n", flags);
     else
diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h
index c5d1372..650442c 100644
--- a/libs/vkd3d-shader/vkd3d_shader_private.h
+++ b/libs/vkd3d-shader/vkd3d_shader_private.h
@@ -486,10 +486,12 @@ enum vkd3d_shader_interpolation_mode
 enum vkd3d_shader_global_flags
 {
     VKD3DSGF_REFACTORING_ALLOWED               = 0x01,
+    VKD3DSGF_ENABLE_DOUBLE_PRECISION_FLOAT_OPS = 0x02,
     VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL         = 0x04,
     VKD3DSGF_ENABLE_RAW_AND_STRUCTURED_BUFFERS = 0x08,
     VKD3DSGF_SKIP_OPTIMIZATION                 = 0x10,
-    VKD3DSGF_ENABLE_MINIMUM_PRECISION          = 0x20
+    VKD3DSGF_ENABLE_MINIMUM_PRECISION          = 0x20,
+    VKD3DSGF_ENABLE_11_1_DOUBLE_EXTENSIONS     = 0x40,
 };
 
 enum vkd3d_shader_sync_flags




More information about the wine-cvs mailing list