Henri Verbeet : vkd3d-shader: Introduce vkd3d_shader_parser_error().

Alexandre Julliard julliard at winehq.org
Wed Oct 6 15:51:12 CDT 2021


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Oct  6 17:11:46 2021 +0200

vkd3d-shader: Introduce vkd3d_shader_parser_error().

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/dxbc.c                 | 18 +++---------------
 libs/vkd3d-shader/vkd3d_shader_main.c    | 12 ++++++++++++
 libs/vkd3d-shader/vkd3d_shader_private.h |  2 ++
 3 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index 527f69b..656c982 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -175,18 +175,6 @@ static bool shader_is_sm_5_1(const struct vkd3d_shader_sm4_parser *sm4)
     return version->major >= 5 && version->minor >= 1;
 }
 
-static void VKD3D_PRINTF_FUNC(3, 4) shader_sm4_error(struct vkd3d_shader_sm4_parser *sm4,
-        enum vkd3d_shader_error error, const char *format, ...)
-{
-    va_list args;
-
-    va_start(args, format);
-    vkd3d_shader_verror(sm4->p.message_context, &sm4->p.location, error, format, args);
-    va_end(args);
-
-    sm4->p.failed = true;
-}
-
 static bool shader_sm4_read_src_param(struct vkd3d_shader_sm4_parser *priv, const uint32_t **ptr,
         const uint32_t *end, enum vkd3d_data_type data_type, struct vkd3d_shader_src_param *src_param);
 static bool shader_sm4_read_dst_param(struct vkd3d_shader_sm4_parser *priv, const uint32_t **ptr,
@@ -246,15 +234,15 @@ static void shader_sm4_read_shader_data(struct vkd3d_shader_instruction *ins, ui
     ins->declaration.icb = &priv->icb;
 }
 
-static void shader_sm4_set_descriptor_register_range(struct vkd3d_shader_sm4_parser *priv,
+static void shader_sm4_set_descriptor_register_range(struct vkd3d_shader_sm4_parser *sm4,
         struct vkd3d_shader_register *reg, struct vkd3d_shader_register_range *range)
 {
     range->first = reg->idx[1].offset;
-    range->last = reg->idx[shader_is_sm_5_1(priv) ? 2 : 1].offset;
+    range->last = reg->idx[shader_is_sm_5_1(sm4) ? 2 : 1].offset;
     if (range->last < range->first)
     {
         FIXME("Invalid register range [%u:%u].\n", range->first, range->last);
-        shader_sm4_error(priv, VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_RANGE,
+        vkd3d_shader_parser_error(&sm4->p, VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_RANGE,
                 "Last register %u must not be less than first register %u in range.\n", range->last, range->first);
     }
 }
diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c
index 696c332..c30a375 100644
--- a/libs/vkd3d-shader/vkd3d_shader_main.c
+++ b/libs/vkd3d-shader/vkd3d_shader_main.c
@@ -378,6 +378,18 @@ static void vkd3d_shader_parser_destroy(struct vkd3d_shader_parser *parser)
     shader_sm4_free(parser);
 }
 
+void VKD3D_PRINTF_FUNC(3, 4) vkd3d_shader_parser_error(struct vkd3d_shader_parser *parser,
+        enum vkd3d_shader_error error, const char *format, ...)
+{
+    va_list args;
+
+    va_start(args, format);
+    vkd3d_shader_verror(parser->message_context, &parser->location, error, format, args);
+    va_end(args);
+
+    parser->failed = true;
+}
+
 static int vkd3d_shader_validate_compile_info(const struct vkd3d_shader_compile_info *compile_info,
         bool validate_target_type)
 {
diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h
index ba17d29..97048ea 100644
--- a/libs/vkd3d-shader/vkd3d_shader_private.h
+++ b/libs/vkd3d-shader/vkd3d_shader_private.h
@@ -904,6 +904,8 @@ struct vkd3d_shader_parser
     const uint32_t *ptr;
 };
 
+void vkd3d_shader_parser_error(struct vkd3d_shader_parser *parser,
+        enum vkd3d_shader_error error, const char *format, ...) VKD3D_PRINTF_FUNC(3, 4);
 void vkd3d_shader_parser_init(struct vkd3d_shader_parser *parser,
         struct vkd3d_shader_message_context *message_context, const char *source_name,
         const struct vkd3d_shader_version *version);




More information about the wine-cvs mailing list