From aaca2d2b615ce113ae9eff11a6fc01f579471b12 Mon Sep 17 00:00:00 2001 From: Anders Leino Date: Mon, 25 Nov 2024 10:15:20 +0200 Subject: [PATCH] wgsl: Fix field semantics even if input struct doesn't need flattening (#5642) * wgsl: Fix field semantics even if input struct doesn't need flattening Helps to address issue #5633. * Add test for multiple stage IO locations This verifies part of issue #5633. --- source/slang/slang-ir-wgsl-legalize.cpp | 5 +- tests/expected-failure-github.txt | 1 + .../render/multiple-stage-io-locations.slang | 78 ++++++++++++++++++ ...ltiple-stage-io-locations.slang.1.expected | 5 ++ ...le-stage-io-locations.slang.1.expected.png | Bin 0 -> 36676 bytes ...ltiple-stage-io-locations.slang.2.expected | 5 ++ ...le-stage-io-locations.slang.2.expected.png | Bin 0 -> 36676 bytes ...multiple-stage-io-locations.slang.expected | 5 ++ ...iple-stage-io-locations.slang.expected.png | Bin 0 -> 36676 bytes 9 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 tests/render/multiple-stage-io-locations.slang create mode 100644 tests/render/multiple-stage-io-locations.slang.1.expected create mode 100644 tests/render/multiple-stage-io-locations.slang.1.expected.png create mode 100644 tests/render/multiple-stage-io-locations.slang.2.expected create mode 100644 tests/render/multiple-stage-io-locations.slang.2.expected.png create mode 100644 tests/render/multiple-stage-io-locations.slang.expected create mode 100644 tests/render/multiple-stage-io-locations.slang.expected.png diff --git a/source/slang/slang-ir-wgsl-legalize.cpp b/source/slang/slang-ir-wgsl-legalize.cpp index 4d617a1692..8eb820b4d3 100644 --- a/source/slang/slang-ir-wgsl-legalize.cpp +++ b/source/slang/slang-ir-wgsl-legalize.cpp @@ -145,11 +145,10 @@ struct LegalizeWGSLEntryPointContext structType, mapOldFieldToNewField, semanticInfoToRemove); + // Validate/rearange all semantics which overlap in our flat struct. + fixFieldSemanticsOfFlatStruct(flattenedStruct); if (flattenedStruct != structType) { - // Validate/rearange all semantics which overlap in our flat struct - fixFieldSemanticsOfFlatStruct(flattenedStruct); - // Replace the 'old IRParam type' with a 'new IRParam type' param->setFullType(flattenedStruct); diff --git a/tests/expected-failure-github.txt b/tests/expected-failure-github.txt index fdb6127a2c..671b8dafdf 100644 --- a/tests/expected-failure-github.txt +++ b/tests/expected-failure-github.txt @@ -5,6 +5,7 @@ tests/language-feature/saturated-cooperation/fuse-product.slang (vk) tests/language-feature/saturated-cooperation/fuse.slang (vk) tests/bugs/byte-address-buffer-interlocked-add-f32.slang (vk) tests/render/render0.hlsl (mtl) +tests/render/multiple-stage-io-locations.slang (mtl) tests/render/nointerpolation.hlsl (mtl) tests/serialization/obfuscated-serialized-module-test.slang.2 syn (mtl) tests/autodiff/custom-intrinsic.slang.2 syn (wgpu) diff --git a/tests/render/multiple-stage-io-locations.slang b/tests/render/multiple-stage-io-locations.slang new file mode 100644 index 0000000000..9f74d1398b --- /dev/null +++ b/tests/render/multiple-stage-io-locations.slang @@ -0,0 +1,78 @@ +//TEST(smoke,render):COMPARE_HLSL_RENDER: +// TODO: Investigate Metal failure +//DISABLE_TEST(smoke,render):COMPARE_HLSL_RENDER: -mtl + +cbuffer Uniforms +{ + float4x4 modelViewProjection; +} + +struct AssembledVertex +{ + float3 position; + float3 color; +}; + +struct Fragment +{ + float4 color; +}; + +// Vertex Shader + +struct VertexStageInput +{ + AssembledVertex assembledVertex : A; +}; + +struct VertexStageOutput +{ + float3 color : VERTEX_COLOR; + float3 localPosition : VERTEX_LOCAL_POSITION; + float4 sv_position : SV_Position; +}; + +VertexStageOutput vertexMain(VertexStageInput input) +{ + VertexStageOutput output; + + float3 position = input.assembledVertex.position; + float3 color = input.assembledVertex.color; + + output.color = color; + output.sv_position = mul(modelViewProjection, float4(position, 1.0)); + output.localPosition = position; + + return output; +} + +// Fragment Shader + +struct FragmentStageInput +{ + float3 color : VERTEX_COLOR; + float3 localPosition : VERTEX_LOCAL_POSITION; +}; + +struct FragmentStageOutput +{ + Fragment fragment : SV_Target; +}; + +FragmentStageOutput fragmentMain(FragmentStageInput input) +{ + FragmentStageOutput output; + + float3 color = input.color; + + if (input.color.y < input.color.z) + { + output.fragment.color = float4(input.localPosition, 1.0); + } + else + { + output.fragment.color = float4(input.color, 1.0); + } + + return output; +} diff --git a/tests/render/multiple-stage-io-locations.slang.1.expected b/tests/render/multiple-stage-io-locations.slang.1.expected new file mode 100644 index 0000000000..4c32e25100 --- /dev/null +++ b/tests/render/multiple-stage-io-locations.slang.1.expected @@ -0,0 +1,5 @@ +result code = 0 +standard error = { +} +standard output = { +} diff --git a/tests/render/multiple-stage-io-locations.slang.1.expected.png b/tests/render/multiple-stage-io-locations.slang.1.expected.png new file mode 100644 index 0000000000000000000000000000000000000000..3333a12d7e0ebd37db561b66ca92c3686e6e8a8e GIT binary patch literal 36676 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 literal 0 HcmV?d00001 diff --git a/tests/render/multiple-stage-io-locations.slang.2.expected b/tests/render/multiple-stage-io-locations.slang.2.expected new file mode 100644 index 0000000000..4c32e25100 --- /dev/null +++ b/tests/render/multiple-stage-io-locations.slang.2.expected @@ -0,0 +1,5 @@ +result code = 0 +standard error = { +} +standard output = { +} diff --git a/tests/render/multiple-stage-io-locations.slang.2.expected.png b/tests/render/multiple-stage-io-locations.slang.2.expected.png new file mode 100644 index 0000000000000000000000000000000000000000..3333a12d7e0ebd37db561b66ca92c3686e6e8a8e GIT binary patch literal 36676 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 literal 0 HcmV?d00001 diff --git a/tests/render/multiple-stage-io-locations.slang.expected b/tests/render/multiple-stage-io-locations.slang.expected new file mode 100644 index 0000000000..4c32e25100 --- /dev/null +++ b/tests/render/multiple-stage-io-locations.slang.expected @@ -0,0 +1,5 @@ +result code = 0 +standard error = { +} +standard output = { +} diff --git a/tests/render/multiple-stage-io-locations.slang.expected.png b/tests/render/multiple-stage-io-locations.slang.expected.png new file mode 100644 index 0000000000000000000000000000000000000000..3333a12d7e0ebd37db561b66ca92c3686e6e8a8e GIT binary patch literal 36676 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 literal 0 HcmV?d00001