From: Francisco Casas fcasas@codeweavers.com
--- libs/vkd3d-shader/hlsl_codegen.c | 4 ++++ tests/entry-point-semantics.shader_test | 2 +- tests/matrix-semantics.shader_test | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c index bd129bb0..2dc11c57 100644 --- a/libs/vkd3d-shader/hlsl_codegen.c +++ b/libs/vkd3d-shader/hlsl_codegen.c @@ -236,6 +236,10 @@ static struct hlsl_ir_var *add_semantic_var(struct hlsl_ctx *ctx, struct hlsl_ir { if (!strcmp(ext_var->name, name->buffer)) { + if (output) + hlsl_error(ctx, &var->loc, VKD3D_SHADER_ERROR_HLSL_INVALID_SEMANTIC, + "Output semantic "%s%u" is used multiple times.", semantic->name, semantic->index); + hlsl_release_string_buffer(ctx, name); return ext_var; } diff --git a/tests/entry-point-semantics.shader_test b/tests/entry-point-semantics.shader_test index b92a84d2..1a8ff074 100644 --- a/tests/entry-point-semantics.shader_test +++ b/tests/entry-point-semantics.shader_test @@ -174,7 +174,7 @@ void main(out banana bans[2])
% Output semmantics cannot be mapped to more than one value -[vertex shader fail todo] +[vertex shader fail] struct apple { float2 tex : TEXCOORD0; }; diff --git a/tests/matrix-semantics.shader_test b/tests/matrix-semantics.shader_test index 43f467ec..b704dc1a 100644 --- a/tests/matrix-semantics.shader_test +++ b/tests/matrix-semantics.shader_test @@ -63,7 +63,7 @@ probe render target 1 all r (2.0) probe render target 2 all r (3.0) probe render target 3 all r (4.0)
-[pixel shader fail todo] +[pixel shader fail] void main(out float1x2 x : sv_target0, out float1x2 y : sv_target1) { x = float2(1.0, 2.0);