diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/metal/simple-compute.slang | 6 | ||||
| -rw-r--r-- | tests/metal/stage-in.slang | 89 |
2 files changed, 92 insertions, 3 deletions
diff --git a/tests/metal/simple-compute.slang b/tests/metal/simple-compute.slang index b5c0aaf75..85abaffb4 100644 --- a/tests/metal/simple-compute.slang +++ b/tests/metal/simple-compute.slang @@ -1,6 +1,6 @@ //TEST:SIMPLE(filecheck=CHECK): -target metal //TEST:SIMPLE(filecheck=CHECK-ASM): -target metallib -//TEST:REFLECTION(filecheck=REFLECT):-target metal +//TEST:REFLECTION(filecheck=REFLECT):-target metal -entry main_kernel -stage compute uniform RWStructuredBuffer<float> outputBuffer; @@ -26,10 +26,10 @@ ParameterBlock<MyBlock> block2; // REFLECT: "binding": {"kind": "metalArgumentBufferElement", "index": 0, "count": 2} // REFLECT: "name": "outputBuffer", -// REFLECT-NEXT: "binding": {"kind": "constantBuffer", "index": 0, "used": 0} +// REFLECT-NEXT: "binding": {"kind": "constantBuffer", "index": 0{{.*}}} // REFLECT: "name": "block", -// REFLECT-NEXT: "binding": {"kind": "constantBuffer", "index": 1, "used": 0} +// REFLECT-NEXT: "binding": {"kind": "constantBuffer", "index": 1{{.*}}} void func(float v) { diff --git a/tests/metal/stage-in.slang b/tests/metal/stage-in.slang new file mode 100644 index 000000000..31d224072 --- /dev/null +++ b/tests/metal/stage-in.slang @@ -0,0 +1,89 @@ +//TEST:SIMPLE(filecheck=CHECK): -target metal +//TEST:SIMPLE(filecheck=CHECK-ASM): -target metallib + +// CHECK: struct VOut{{.*}} +// CHECK-NEXT:{ +// CHECK-NEXT: float4 position{{.*}} {{\[\[}}position{{\]\]}}; +// CHECK-NEXT: float4 vertexColor{{.*}} {{\[\[}}user(_slang_attr){{\]\]}}; +// CHECK-NEXT: float2 vertexUV{{.*}} {{\[\[}}user(_slang_attr_1){{\]\]}}; +// CHECK-NEXT: float3 vertexNormal{{.*}} {{\[\[}}user(NORMAL){{\]\]}}; +// CHECK-NEXT:}; + +// CHECK: struct vertexInput{{.*}} +// CHECK-NEXT:{ +// CHECK-NEXT: float4 position{{.*}} {{\[\[}}attribute(0){{\]\]}} {{\[\[}}user(POSITION){{\]\]}}; +// CHECK-NEXT: float4 color{{.*}} {{\[\[}}attribute(1){{\]\]}} {{\[\[}}user(COLOR){{\]\]}}; +// CHECK-NEXT:}; + +// CHECK: {{\[\[}}vertex{{\]\]}} VOut{{.*}} main_vertex(vertexInput{{.*}}{{\[\[}}stage_in{{\]\]}}, uint vid{{.*}}{{\[\[}}vertex_id{{\]\]}}, uint instanceID{{.*}} {{\[\[}}instance_id{{\]\]}}) + +// CHECK: struct pixelOutput{{.*}} +// CHECK-NEXT:{ +// CHECK-NEXT: float4 output{{.*}}{{\[\[}}color(0){{\]\]}}; +// CHECK-NEXT:}; + +// CHECK: struct pixelInput{{.*}} +// CHECK-NEXT:{ +// CHECK-NEXT: float4 vertexColor{{.*}} {{\[\[}}user(_slang_attr){{\]\]}}; +// CHECK-NEXT: float2 vertexUV{{.*}} {{\[\[}}user(_slang_attr_1){{\]\]}}; +// CHECK-NEXT: float3 vertexNormal{{.*}} {{\[\[}}user(NORMAL){{\]\]}}; +// CHECK-NEXT:}; + +// CHECK: {{\[\[}}fragment{{\]\]}} pixelOutput{{.*}} main_fragment(pixelInput{{.*}} {{\[\[}}stage_in{{\]\]}}, float4 position{{.*}} {{\[\[}}position{{\]\]}}) + +// CHECK: struct FragOut{{.*}} +// CHECK-NEXT:{ +// CHECK-NEXT: float4 color{{.*}}{{\[\[}}color(0){{\]\]}}; +// CHECK-NEXT: float depth{{.*}} {{\[\[}}depth(any){{\]\]}}; +// CHECK-NEXT:}; + +// CHECK-ASM: define {{.*}} @main_vertex +// CHECK-ASM: define {{.*}} @main_fragment +// CHECK-ASM: define {{.*}} @main_fragment1 + +struct VIn +{ + float4 position : POSITION; + float4 color : COLOR; + uint vid : SV_VertexID; + uint instanceID : SV_InstanceID; +} + +struct VOut +{ + float4 position : SV_Position; + float4 vertexColor; + float2 vertexUV; + float3 vertexNormal : NORMAL; +} + +[shader("vertex")] +VOut main_vertex(VIn vertexIn) +{ + VOut vertexOut; + vertexOut.position = vertexIn.position; + vertexOut.vertexColor = vertexIn.color; + vertexOut.vertexUV = float2(0.0, 1.0); + return vertexOut; +} + +[shader("fragment")] +float4 main_fragment(VOut fragmentIn) : SV_Target +{ + return fragmentIn.vertexColor; +} + +struct FragOut +{ + float4 color : SV_Target; + float depth : SV_Depth; +} + +[shader("fragment")] +FragOut main_fragment1(VOut fragmentIn) +{ + FragOut fragOut; + fragOut.color = fragmentIn.vertexColor; + fragOut.depth = 0.5; + return fragOut; +}
\ No newline at end of file |
