From: Conor McCarthy cmccarthy@codeweavers.com
--- libs/vkd3d-shader/dxbc.c | 3 --- libs/vkd3d-shader/vkd3d_shader_main.c | 19 +++---------------- libs/vkd3d-shader/vkd3d_shader_private.h | 16 ---------------- 3 files changed, 3 insertions(+), 35 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index 2949b6b7..4637cf21 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -1586,10 +1586,7 @@ static bool shader_sm4_is_end(struct vkd3d_shader_parser *parser)
static const struct vkd3d_shader_parser_ops shader_sm4_parser_ops = { - .parser_reset = shader_parser_reset, .parser_destroy = shader_sm4_destroy, - .parser_read_instruction = shader_parser_read_instruction, - .parser_is_end = shader_parser_is_end, };
static bool shader_sm4_init(struct vkd3d_shader_sm4_parser *sm4, const uint32_t *byte_code, diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c index ace39ea8..1bf10f94 100644 --- a/libs/vkd3d-shader/vkd3d_shader_main.c +++ b/libs/vkd3d-shader/vkd3d_shader_main.c @@ -1189,10 +1189,10 @@ static int compile_dxbc_tpf(const struct vkd3d_shader_compile_info *compile_info struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context) { struct vkd3d_shader_scan_descriptor_info scan_descriptor_info; - struct vkd3d_shader_instruction instruction; struct vkd3d_shader_compile_info scan_info; struct spirv_compiler *spirv_compiler; struct vkd3d_shader_parser *parser; + unsigned int i; int ret;
scan_info = *compile_info; @@ -1250,24 +1250,11 @@ static int compile_dxbc_tpf(const struct vkd3d_shader_compile_info *compile_info return VKD3D_ERROR; }
- while (!vkd3d_shader_parser_is_end(parser)) + for (i = 0; i < parser->instructions.count && ret >= 0; ++i) { - vkd3d_shader_parser_read_instruction(parser, &instruction); - - if (instruction.handler_idx == VKD3DSIH_INVALID) - { - WARN("Encountered unrecognized or invalid instruction.\n"); - ret = VKD3D_ERROR_INVALID_SHADER; - break; - } - - if ((ret = spirv_compiler_handle_instruction(spirv_compiler, &instruction)) < 0) - break; + ret = spirv_compiler_handle_instruction(spirv_compiler, &parser->instructions.elements[i]); }
- if (parser->failed) - ret = VKD3D_ERROR_INVALID_SHADER; - if (ret >= 0) ret = spirv_compiler_generate_spirv(spirv_compiler, compile_info, out);
diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 170d55cf..7178de27 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -1025,22 +1025,6 @@ static inline void vkd3d_shader_parser_destroy(struct vkd3d_shader_parser *parse parser->ops->parser_destroy(parser); }
-static inline bool vkd3d_shader_parser_is_end(struct vkd3d_shader_parser *parser) -{ - return parser->ops->parser_is_end(parser); -} - -static inline void vkd3d_shader_parser_read_instruction(struct vkd3d_shader_parser *parser, - struct vkd3d_shader_instruction *instruction) -{ - parser->ops->parser_read_instruction(parser, instruction); -} - -static inline void vkd3d_shader_parser_reset(struct vkd3d_shader_parser *parser) -{ - parser->ops->parser_reset(parser); -} - void vkd3d_shader_trace(struct vkd3d_shader_parser *parser);
const char *shader_get_type_prefix(enum vkd3d_shader_type type);