yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Yong HeVarious SPIRV fixes. (#3231)ebe8ddefc

master
1.3 KiB39 linesraw
1//TEST:SIMPLE(filecheck=CHECK):-entry gsMain -stage geometry -target spirv -emit-spirv-directly
2
3struct GsOut
4{
5    float2 uv                               : TexCoord;
6    float2 texelPos                         : TexelPosition;
7    float4 posH                             : SV_Position;
8};
9
10// CHECK-DAG: OpEntryPoint Geometry %gsMain "main" %[[OUT1:[A-Za-z0-9_]+]] %[[OUT2:[A-Za-z0-9_]+]] %gl_Position
11// CHECK-DAG:          %[[OUT1]] = OpVariable %_ptr_Output_v2float Output
12// CHECK-DAG:          %[[OUT2]] = OpVariable %_ptr_Output_v2float Output
13// CHECK-DAG: %gl_Position = OpVariable %_ptr_Output_v4float Output
14
15// CHECK-DAG: OpExecutionMode %gsMain Invocations 1
16// CHECK-DAG: OpExecutionMode %gsMain OutputTriangleStrip
17// CHECK-DAG: OpExecutionMode %gsMain Triangles
18// CHECK-DAG: OpExecutionMode %gsMain OutputVertices 15
19
20// CHECK: OpStore %gl_Position
21// CHECK: OpEmitVertex
22// CHECK: OpEndPrimitive
23
24[maxvertexcount(15)]
25void gsMain(uint triIdx : SV_PrimitiveID, inout TriangleStream<GsOut> outStream)
26{
27    for (int j = 0; j < 5; j++)
28    {
29        for (int i = 0; i < 3; i++)
30        {
31            GsOut v;
32            v.uv = float2(j,i);
33            v.texelPos = float2(0,0);
34            v.posH = float4(j, i, 1, 1);
35            outStream.Append(v);
36        }
37        outStream.RestartStrip();
38    }
39}