Module: wine Branch: master Commit: 47be32f3d1fc6fbbcd2faae96ae1f8a3d617c0fe URL: https://gitlab.winehq.org/wine/wine/-/commit/47be32f3d1fc6fbbcd2faae96ae1f8a...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Mar 13 13:15:53 2024 +0100
wined3d: Do not check the input signature element count for sm4+ shaders in shader_spirv_compile_arguments_init().
Shader model 4 fragment shaders can have more than 12 input varyings. That's fine though, because we don't need to build a varying map for them in the first place. Note that in principle the ERR in question could still be triggered by e.g. attempting to use a shader model 4 fragment shader with a shader model 3 vertex shader.
---
dlls/wined3d/shader_spirv.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/shader_spirv.c b/dlls/wined3d/shader_spirv.c index 7b054c7cd9d..4e9b291a0ce 100644 --- a/dlls/wined3d/shader_spirv.c +++ b/dlls/wined3d/shader_spirv.c @@ -169,16 +169,15 @@ static void shader_spirv_compile_arguments_init(struct shader_spirv_compile_argu { struct wined3d_shader *ps = state->shader[WINED3D_SHADER_TYPE_PIXEL];
- if (ps) + if (shader->reg_maps.shader_version.major < 4 && ps) { struct shader_spirv_graphics_program_vk *vs_program = shader->backend_data; struct shader_spirv_graphics_program_vk *ps_program = ps->backend_data;
if (ps_program->signature_info.input.element_count > ARRAY_SIZE(args->u.vs.varying_map)) ERR("Unexpected inter-stage varying count %u.\n", ps_program->signature_info.input.element_count); - if (shader->reg_maps.shader_version.major < 4) - vkd3d_shader_build_varying_map(&vs_program->signature_info.output, - &ps_program->signature_info.input, &args->u.vs.varying_count, args->u.vs.varying_map); + vkd3d_shader_build_varying_map(&vs_program->signature_info.output, + &ps_program->signature_info.input, &args->u.vs.varying_count, args->u.vs.varying_map); } break; }