=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: vkd3d-shader: Add FIXME() for unknown root signature descriptor flags.

Alexandre Julliard julliard at winehq.org
Thu Apr 25 16:13:24 CDT 2019


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

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Wed Apr 24 16:05:45 2019 +0200

vkd3d-shader: Add FIXME() for unknown root signature descriptor flags.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/dxbc.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index 1230f30..3fe728e 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -2130,6 +2130,18 @@ static int shader_parse_descriptor_ranges(struct root_signature_parser_context *
     return VKD3D_OK;
 }
 
+static void shader_validate_descriptor_range1(const struct vkd3d_descriptor_range1 *range)
+{
+    unsigned int unknown_flags = range->flags & ~(VKD3D_DESCRIPTOR_RANGE_FLAG_NONE
+            | VKD3D_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE
+            | VKD3D_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE
+            | VKD3D_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE
+            | VKD3D_DESCRIPTOR_RANGE_FLAG_DATA_STATIC);
+
+    if (unknown_flags)
+        FIXME("Unknown descriptor range flags %#x.\n", unknown_flags);
+}
+
 static int shader_parse_descriptor_ranges1(struct root_signature_parser_context *context,
         unsigned int offset, unsigned int count, struct vkd3d_descriptor_range1 *ranges)
 {
@@ -2157,6 +2169,8 @@ static int shader_parse_descriptor_ranges1(struct root_signature_parser_context
                 ranges[i].range_type, ranges[i].descriptor_count,
                 ranges[i].base_shader_register, ranges[i].register_space,
                 ranges[i].flags, ranges[i].descriptor_table_offset);
+
+        shader_validate_descriptor_range1(&ranges[i]);
     }
 
     return VKD3D_OK;
@@ -2259,6 +2273,17 @@ static int shader_parse_root_descriptor(struct root_signature_parser_context *co
     return VKD3D_OK;
 }
 
+static void shader_validate_root_descriptor1(const struct vkd3d_root_descriptor1 *descriptor)
+{
+    unsigned int unknown_flags = descriptor->flags & ~(VKD3D_ROOT_DESCRIPTOR_FLAG_NONE
+            | VKD3D_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE
+            | VKD3D_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE
+            | VKD3D_ROOT_DESCRIPTOR_FLAG_DATA_STATIC);
+
+    if (unknown_flags)
+        FIXME("Unknown root descriptor flags %#x.\n", unknown_flags);
+}
+
 static int shader_parse_root_descriptor1(struct root_signature_parser_context *context,
         unsigned int offset, struct vkd3d_root_descriptor1 *descriptor)
 {
@@ -2278,6 +2303,8 @@ static int shader_parse_root_descriptor1(struct root_signature_parser_context *c
     TRACE("Shader register %u, register space %u, flags %#x.\n",
             descriptor->shader_register, descriptor->register_space, descriptor->flags);
 
+    shader_validate_root_descriptor1(descriptor);
+
     return VKD3D_OK;
 }
 




More information about the wine-cvs mailing list