[PATCH vkd3d 05/10] vkd3d-shader: Handle double-precision floating-point data in vkd3d_shader_scan_typed_resource_declaration().

Henri Verbeet hverbeet at codeweavers.com
Mon Feb 28 05:23:47 CST 2022


Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
 include/vkd3d_shader.h                | 8 ++++++++
 libs/vkd3d-shader/vkd3d_shader_main.c | 6 ++++++
 2 files changed, 14 insertions(+)

diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h
index 1576411f..df15047c 100644
--- a/include/vkd3d_shader.h
+++ b/include/vkd3d_shader.h
@@ -1208,6 +1208,14 @@ enum vkd3d_shader_resource_data_type
     VKD3D_SHADER_RESOURCE_DATA_FLOAT     = 0x5,
     /** Undefined/type-less. \since 1.3 */
     VKD3D_SHADER_RESOURCE_DATA_MIXED     = 0x6,
+    /** IEEE double-precision floating-point. \since 1.3 */
+    VKD3D_SHADER_RESOURCE_DATA_DOUBLE    = 0x7,
+    /** Continuation of the previous component. For example, 64-bit
+     * double-precision floating-point data may be returned as two 32-bit
+     * components, with the first component (containing the LSB) specified as
+     * VKD3D_SHADER_RESOURCE_DATA_DOUBLE, and the second component specified
+     * as VKD3D_SHADER_RESOURCE_DATA_CONTINUED. \since 1.3 */
+    VKD3D_SHADER_RESOURCE_DATA_CONTINUED = 0x8,
 
     VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_DATA_TYPE),
 };
diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c
index 298289c0..b5b66e1f 100644
--- a/libs/vkd3d-shader/vkd3d_shader_main.c
+++ b/libs/vkd3d-shader/vkd3d_shader_main.c
@@ -757,6 +757,12 @@ static void vkd3d_shader_scan_typed_resource_declaration(struct vkd3d_shader_sca
         case VKD3D_DATA_MIXED:
             resource_data_type = VKD3D_SHADER_RESOURCE_DATA_MIXED;
             break;
+        case VKD3D_DATA_DOUBLE:
+            resource_data_type = VKD3D_SHADER_RESOURCE_DATA_DOUBLE;
+            break;
+        case VKD3D_DATA_CONTINUED:
+            resource_data_type = VKD3D_SHADER_RESOURCE_DATA_CONTINUED;
+            break;
         default:
             ERR("Invalid resource data type %#x.\n", semantic->resource_data_type[0]);
             resource_data_type = VKD3D_SHADER_RESOURCE_DATA_FLOAT;
-- 
2.20.1




More information about the wine-devel mailing list