diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bugs/gh-3087-multi-entry-point.slang | 18 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/system-values-draw-parameters.slang | 2 | ||||
| -rw-r--r-- | tests/spirv/sv_instance.slang | 14 |
3 files changed, 27 insertions, 7 deletions
diff --git a/tests/bugs/gh-3087-multi-entry-point.slang b/tests/bugs/gh-3087-multi-entry-point.slang index d3aa574c7..edfda08af 100644 --- a/tests/bugs/gh-3087-multi-entry-point.slang +++ b/tests/bugs/gh-3087-multi-entry-point.slang @@ -3,14 +3,20 @@ // CHECK-DAG: OpEntryPoint Vertex // CHECK-DAG: OpEntryPoint Fragment -// we should only have 1 'BuiltIn InstanceIndex' since the `Output` and `Input` semantic -// for `InstanceIndex` should be converted to a non-builtin -// CHECK-DAG: OpDecorate %gl_InstanceIndex BuiltIn InstanceIndex -// CHECK-NOT: OpDecorate %gl_InstanceIndex BuiltIn InstanceIndex - // We require 1 `Flat` for the fragment input `uint` // CHECK-DAG: OpDecorate %{{[1-9][0-9]*}} Flat -// CHECK-NOT: OpDecorate %{{[1-9][0-9]*}} Flat + +// CHECK-DAG: OpDecorate %gl_InstanceIndex BuiltIn InstanceIndex + +// The vertex shader should be using the builtin InstanceIndex var. +// CHECK: %vmain = OpFunction +// CHECK: InstanceIndex +// CHECK: OpFunctionEnd + +// The fragment shader should not be using the builtin InstanceIndex var. +// CHECK: %pmain = OpFunction +// CHECK-NOT: InstanceIndex +// CHECK: OpFunctionEnd struct VIn { diff --git a/tests/hlsl-intrinsic/system-values-draw-parameters.slang b/tests/hlsl-intrinsic/system-values-draw-parameters.slang index e45366939..009efffa1 100644 --- a/tests/hlsl-intrinsic/system-values-draw-parameters.slang +++ b/tests/hlsl-intrinsic/system-values-draw-parameters.slang @@ -32,7 +32,7 @@ VSOutput main(VSInput input, // CHECK_HLSL: SV_StartVertexLocation // CHECK_METAL: base_vertex - // CHECK_SPIRV: BuiltIn BaseInstance + // CHECK_SPIRV: BuiltIn InstanceIndex // CHECK_GLSL: gl_BaseInstance // CHECK_HLSL: SV_StartInstanceLocation // CHECK_METAL: base_instance diff --git a/tests/spirv/sv_instance.slang b/tests/spirv/sv_instance.slang new file mode 100644 index 000000000..e71c6c7fa --- /dev/null +++ b/tests/spirv/sv_instance.slang @@ -0,0 +1,14 @@ +//TEST:SIMPLE(filecheck=GLSL): -target glsl -entry vertMain -stage vertex +//TEST:SIMPLE(filecheck=CHECK): -target spirv + +// CHECK-DAG: %[[REG1:[0-9a-zA-Z_]+]] = OpLoad %int %gl_BaseInstance +// CHECK-DAG: %[[REG2:[0-9a-zA-Z_]+]] = OpLoad %int %gl_InstanceIndex +// CHECK-DAG: OpISub %int %[[REG2]] %[[REG1]] + +// GLSL: gl_InstanceIndex - gl_BaseInstance + +[shader("vertex")] +float4 vertMain(int i : SV_InstanceID) : SV_Position +{ + return i; +}
\ No newline at end of file |
