Module: vkd3d Branch: master Commit: 8af47a96ea5f8531e863243cf441d1624083baf3 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/8af47a96ea5f8531e863243cf441d1...
Author: Zebediah Figura zfigura@codeweavers.com Date: Wed Dec 13 15:50:01 2023 -0600
vkd3d-shader: Do not scan the shader in vkd3d_shader_parser_compile() for assembly targets.
---
libs/vkd3d-shader/vkd3d_shader_main.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c index 2ee97e6c..0600e722 100644 --- a/libs/vkd3d-shader/vkd3d_shader_main.c +++ b/libs/vkd3d-shader/vkd3d_shader_main.c @@ -1540,9 +1540,6 @@ static int vkd3d_shader_parser_compile(struct vkd3d_shader_parser *parser,
scan_info = *compile_info;
- if ((ret = scan_with_parser(&scan_info, message_context, &scan_descriptor_info, parser)) < 0) - return ret; - switch (compile_info->target_type) { case VKD3D_SHADER_TARGET_D3D_ASM: @@ -1550,6 +1547,8 @@ static int vkd3d_shader_parser_compile(struct vkd3d_shader_parser *parser, break;
case VKD3D_SHADER_TARGET_GLSL: + if ((ret = scan_with_parser(&scan_info, message_context, &scan_descriptor_info, parser)) < 0) + return ret; if (!(glsl_generator = vkd3d_glsl_generator_create(&parser->shader_version, message_context, &parser->location))) { @@ -1560,19 +1559,22 @@ static int vkd3d_shader_parser_compile(struct vkd3d_shader_parser *parser,
ret = vkd3d_glsl_generator_generate(glsl_generator, parser, out); vkd3d_glsl_generator_destroy(glsl_generator); + vkd3d_shader_free_scan_descriptor_info1(&scan_descriptor_info); break;
case VKD3D_SHADER_TARGET_SPIRV_BINARY: case VKD3D_SHADER_TARGET_SPIRV_TEXT: + if ((ret = scan_with_parser(&scan_info, message_context, &scan_descriptor_info, parser)) < 0) + return ret; ret = spirv_compile(parser, &scan_descriptor_info, compile_info, out, message_context); + vkd3d_shader_free_scan_descriptor_info1(&scan_descriptor_info); break;
default: /* Validation should prevent us from reaching this. */ - assert(0); + vkd3d_unreachable(); }
- vkd3d_shader_free_scan_descriptor_info1(&scan_descriptor_info); return ret; }