From 47be32f3d1fc6fbbcd2faae96ae1f8a3d617c0fe Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Wed, 13 Mar 2024 13:15:53 +0100 Subject: [PATCH] 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; }