From 45c7d33fe87e1628de7991f46ca68f8ddd2f7e4c Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 20 Mar 2024 15:47:36 -0700 Subject: Fix spirv generation for using output stream in a function. (#3806) * Fix spirv generation for using output stream in a function. * polish. --- tests/spirv/geometry-shader-sub-func.slang | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tests/spirv/geometry-shader-sub-func.slang (limited to 'tests') diff --git a/tests/spirv/geometry-shader-sub-func.slang b/tests/spirv/geometry-shader-sub-func.slang new file mode 100644 index 000000000..6c6944f31 --- /dev/null +++ b/tests/spirv/geometry-shader-sub-func.slang @@ -0,0 +1,44 @@ +// geometry-shader-sub-func.slang + +//TEST:SIMPLE(filecheck=SPIRV): -target spirv -emit-spirv-directly -O0 + +struct CoarseVertex +{ + float4 position : POSITION; + float3 color : COLOR; + uint id : ID; +} + +struct RasterVertex +{ + float4 position : POSITION; + float3 color : COLOR; + uint id : SV_RenderTargetArrayIndex; +} + +// SPIRV: OpEntryPoint +// SPIRV: OpStore %outputStream_position +// SPIRV: OpEmitVertex +void appendVertex(TriangleStream outputStream, RasterVertex vert) +{ + outputStream.Append(vert); +} + +[shader("geometry")] +[maxvertexcount(3)] +void main( + triangle CoarseVertex coarseVertices[3], + inout TriangleStream outputStream, + uint primitiveID : SV_PrimitiveID) +{ + [ForceUnroll] + for(int ii = 0; ii < 3; ++ii) + { + CoarseVertex coarseVertex = coarseVertices[ii]; + RasterVertex rasterVertex; + rasterVertex.position = coarseVertex.position; + rasterVertex.color = coarseVertex.color; + rasterVertex.id = coarseVertex.id + primitiveID; + appendVertex(outputStream, rasterVertex); + } +} -- cgit v1.2.3