summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cross-compile/non-uniform-indexing.slang13
-rw-r--r--tests/cross-compile/non-uniform-indexing.slang.glsl28
2 files changed, 41 insertions, 0 deletions
diff --git a/tests/cross-compile/non-uniform-indexing.slang b/tests/cross-compile/non-uniform-indexing.slang
new file mode 100644
index 000000000..647742df8
--- /dev/null
+++ b/tests/cross-compile/non-uniform-indexing.slang
@@ -0,0 +1,13 @@
+//TEST:CROSS_COMPILE:-target spirv-assembly -entry main -stage fragment
+
+// Confirm that `NonUniformResourceIndex` translates to SPIR-V as expeted
+
+Texture2D t[10];
+SamplerState s;
+
+float4 main(
+ float3 uv : UV)
+ : SV_Target
+{
+ return t[NonUniformResourceIndex(int(uv.z))].Sample(s, uv.xy);
+}
diff --git a/tests/cross-compile/non-uniform-indexing.slang.glsl b/tests/cross-compile/non-uniform-indexing.slang.glsl
new file mode 100644
index 000000000..83f63c70d
--- /dev/null
+++ b/tests/cross-compile/non-uniform-indexing.slang.glsl
@@ -0,0 +1,28 @@
+//TEST_IGNORE_FILE
+#version 450
+
+#extension GL_EXT_nonuniform_qualifier : require
+
+layout(binding = 0)
+uniform texture2D t_0[10];
+
+layout(binding = 1)
+uniform sampler s_0;
+
+layout(location = 0)
+out vec4 _S1;
+
+layout(location = 0)
+in vec3 _S2;
+
+void main()
+{
+ vec3 _S3 = _S2;
+
+ int _S4 = nonuniformEXT(int(_S3.z));
+
+ vec4 _S5 = texture(sampler2D(t_0[_S4],s_0), _S3.xy);
+
+ _S1 = _S5;
+ return;
+}