From: Francisco Casas fcasas@codeweavers.com
--- libs/vkd3d-shader/hlsl_codegen.c | 10 ++++++++++ tests/entry-point-semantics.shader_test | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c index 82ac2b98..8991e9f0 100644 --- a/libs/vkd3d-shader/hlsl_codegen.c +++ b/libs/vkd3d-shader/hlsl_codegen.c @@ -242,6 +242,16 @@ static struct hlsl_ir_var *add_semantic_var(struct hlsl_ctx *ctx, struct hlsl_ir if (!(name = hlsl_get_string_buffer(ctx))) return NULL; vkd3d_string_buffer_printf(name, "<%s-%s%u>", output ? "output" : "input", semantic->name, semantic->index); + + LIST_FOR_EACH_ENTRY(ext_var, &ctx->extern_vars, struct hlsl_ir_var, extern_entry) + { + if (!strcmp(ext_var->name, name->buffer)) + { + hlsl_release_string_buffer(ctx, name); + return ext_var; + } + } + if (!(new_semantic.name = hlsl_strdup(ctx, semantic->name))) { hlsl_release_string_buffer(ctx, name); diff --git a/tests/entry-point-semantics.shader_test b/tests/entry-point-semantics.shader_test index 460e64b2..cb565b00 100644 --- a/tests/entry-point-semantics.shader_test +++ b/tests/entry-point-semantics.shader_test @@ -118,7 +118,7 @@ float4 main(in apple aps[2][2]) : sv_target
[test] draw quad -todo probe (0, 0) rgba (1.0, 2.0, 1.0, 2.0) +probe (0, 0) rgba (1.0, 2.0, 1.0, 2.0)
[pixel shader] @@ -138,7 +138,7 @@ float4 main(in banana bans[2]) : sv_target
[test] draw quad -todo probe (0, 0) rgba (1.0, 2.0, 1.0, 2.0) +probe (0, 0) rgba (1.0, 2.0, 1.0, 2.0)
% Arguments with the same semantic aren't aliased. @@ -151,7 +151,7 @@ float4 main(in float2 t1 : TEXCOORD0, in float2 t2 : TEXCOORD0) : sv_target
[test] draw quad -todo probe (0, 0) rgba (10.0, 20.0, 1.0, 2.0) +probe (0, 0) rgba (10.0, 20.0, 1.0, 2.0)
[pixel shader fail]