summaryrefslogtreecommitdiff
path: root/tests/cross-compile/func-resource-param-array.slang.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cross-compile/func-resource-param-array.slang.glsl')
-rw-r--r--tests/cross-compile/func-resource-param-array.slang.glsl91
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/cross-compile/func-resource-param-array.slang.glsl b/tests/cross-compile/func-resource-param-array.slang.glsl
new file mode 100644
index 000000000..6224ccd1c
--- /dev/null
+++ b/tests/cross-compile/func-resource-param-array.slang.glsl
@@ -0,0 +1,91 @@
+// func-resource-param-array.slang.glsl
+#version 450
+
+#define a a_0
+#define b b_0
+#define c c_0
+#define ii ii_0
+#define jj jj_0
+#define kk kk_0
+
+#define f_a f_0
+#define f_b f_1
+#define g_b g_0
+#define g_c g_1
+
+#define a_block _S1
+#define b_block _S2
+#define c_block _S3
+
+#define f_a_i _S4
+#define f_b_t _S5
+#define f_b_i _S6
+#define g_b_i _S7
+#define g_b_j _S8
+#define g_c_t _S9
+#define g_c_i _S10
+#define g_c_j _S11
+#define tmp_f_a_ii _S12
+#define tmp_f_a_jj _S13
+#define tmp_f_b _S14
+#define tmp_g_b _S15
+#define tmp_g_c _S16
+
+layout(std430, binding = 0) buffer a_block {
+ int _data[];
+} a;
+
+layout(std430, binding = 1) buffer b_block {
+ int _data[];
+} b[3];
+
+layout(std430, binding = 2) buffer c_block {
+ int _data[];
+} c[4][3];
+
+int f_a(uint f_a_i)
+{
+ return a._data[f_a_i];
+}
+
+int f_b(uint f_b_t, uint f_b_i)
+{
+ return b[f_b_t]._data[f_b_i];
+}
+
+int g_b(uint g_b_i, uint g_b_j)
+{
+ return b[g_b_i]._data[g_b_j];
+}
+
+int g_c(uint g_c_t, uint g_c_i, uint g_c_j)
+{
+ return c[g_c_t][g_c_i]._data[g_c_j];
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+
+void main()
+{
+ uint ii = gl_GlobalInvocationID.x;
+ uint jj = gl_GlobalInvocationID.y;
+ uint kk = gl_GlobalInvocationID.z;
+
+ int tmp_f_a_ii = f_a(ii);
+
+ int tmp_f_a_jj = f_a(jj);
+ int tmp_0 = tmp_f_a_ii + tmp_f_a_jj;
+
+ int tmp_f_b = f_b(ii, jj);
+ int tmp_1 = tmp_0 + tmp_f_b;
+
+ int tmp_g_b = g_b(ii, jj);
+ int tmp_2 = tmp_1 + tmp_g_b;
+
+ int tmp_g_c = g_c(ii, jj, kk);
+ int tmp_3 = tmp_2 + tmp_g_c;
+
+ a._data[ii] = tmp_3;
+
+ return;
+}