summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cross-compile/non-uniform-indexing.slang.glsl10
-rw-r--r--tests/cross-compile/vk-texture-indexing.slang24
-rw-r--r--tests/cross-compile/vk-texture-indexing.slang.glsl29
3 files changed, 59 insertions, 4 deletions
diff --git a/tests/cross-compile/non-uniform-indexing.slang.glsl b/tests/cross-compile/non-uniform-indexing.slang.glsl
index 5ea5ed73a..96abe6bac 100644
--- a/tests/cross-compile/non-uniform-indexing.slang.glsl
+++ b/tests/cross-compile/non-uniform-indexing.slang.glsl
@@ -17,10 +17,12 @@ in vec3 _S2;
void main()
{
- int _S3 = nonuniformEXT(int(_S2.z));
+ vec4 _S3 = texture(
+ sampler2D(
+ t_0[nonuniformEXT(int(_S2.z))],
+ s_0),
+ _S2.xy);
- vec4 _S4 = texture(sampler2D(t_0[_S3],s_0), _S2.xy);
-
- _S1 = _S4;
+ _S1 = _S3;
return;
}
diff --git a/tests/cross-compile/vk-texture-indexing.slang b/tests/cross-compile/vk-texture-indexing.slang
new file mode 100644
index 000000000..9a086d5bd
--- /dev/null
+++ b/tests/cross-compile/vk-texture-indexing.slang
@@ -0,0 +1,24 @@
+// vk-texture-indexing.slang
+
+//TEST:CROSS_COMPILE:-target spirv-assembly -entry main -stage fragment
+
+struct Params
+{
+ Texture2D<float> textures[10];
+ SamplerState sampler;
+};
+
+ParameterBlock<Params> gParams;
+
+float fetchData(uint2 coords, uint index)
+{
+ return gParams.textures[NonUniformResourceIndex(index)][coords];
+}
+
+float4 main(
+ uint3 uv : UV)
+ : SV_Target
+{
+ float v = fetchData(uv.xy, uv.z);
+ return v;
+}
diff --git a/tests/cross-compile/vk-texture-indexing.slang.glsl b/tests/cross-compile/vk-texture-indexing.slang.glsl
new file mode 100644
index 000000000..069e6efc3
--- /dev/null
+++ b/tests/cross-compile/vk-texture-indexing.slang.glsl
@@ -0,0 +1,29 @@
+#version 450
+#extension GL_EXT_nonuniform_qualifier : require
+#extension GL_EXT_samplerless_texture_functions : require
+
+layout(binding = 0)
+uniform texture2D gParams_textures_0[10];
+
+float fetchData_0(uvec2 coords_0, uint index_0)
+{
+ float _S1 = texelFetch(
+ gParams_textures_0[nonuniformEXT(index_0)],
+ ivec2(coords_0),
+ 0).x;
+
+ return _S1;
+}
+
+layout(location = 0)
+out vec4 _S2;
+
+flat layout(location = 0)
+in uvec3 _S3;
+
+void main()
+{
+ float v_0 = fetchData_0(_S3.xy, _S3.z);
+ _S2 = vec4(v_0);
+ return;
+}