From: Marek Olšák <[email protected]>

4, 8, 16, 32 pass on radeonsi.
48 fails in a weird way.
64, 128, 256 crash on an assertion failure.

softpipe passes all of them.
---
 ...-array-indirect-access-004-elements.shader_test |  35 +++
 ...-array-indirect-access-008-elements.shader_test |  39 +++
 ...-array-indirect-access-016-elements.shader_test |  47 ++++
 ...-array-indirect-access-032-elements.shader_test |  63 +++++
 ...-array-indirect-access-048-elements.shader_test |  79 ++++++
 ...-array-indirect-access-064-elements.shader_test |  95 +++++++
 ...-array-indirect-access-128-elements.shader_test | 159 ++++++++++++
 ...-array-indirect-access-256-elements.shader_test | 287 +++++++++++++++++++++
 8 files changed, 804 insertions(+)
 create mode 100644 
tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-004-elements.shader_test
 create mode 100644 
tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-008-elements.shader_test
 create mode 100644 
tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-016-elements.shader_test
 create mode 100644 
tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-032-elements.shader_test
 create mode 100644 
tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-048-elements.shader_test
 create mode 100644 
tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-064-elements.shader_test
 create mode 100644 
tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-128-elements.shader_test
 create mode 100644 
tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-256-elements.shader_test

diff --git 
a/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-004-elements.shader_test
 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-004-elements.shader_test
new file mode 100644
index 0000000..6fcd858
--- /dev/null
+++ 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-004-elements.shader_test
@@ -0,0 +1,35 @@
+# Test accessing a constant array with a non-constant expression.
+[require]
+GLSL >= 1.20
+
+
+[vertex shader]
+void
+main()
+{
+       gl_Position = gl_Vertex;
+}
+
+
+[fragment shader]
+
+uniform int zero;
+
+const vec4 colors[] = vec4[](
+       vec4(0.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0)
+);
+
+void
+main()
+{
+       gl_FragColor = colors[zero];
+}
+
+
+[test]
+uniform int zero 0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-008-elements.shader_test
 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-008-elements.shader_test
new file mode 100644
index 0000000..09b443b
--- /dev/null
+++ 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-008-elements.shader_test
@@ -0,0 +1,39 @@
+# Test accessing a constant array with a non-constant expression.
+[require]
+GLSL >= 1.20
+
+
+[vertex shader]
+void
+main()
+{
+       gl_Position = gl_Vertex;
+}
+
+
+[fragment shader]
+
+uniform int zero;
+
+const vec4 colors[] = vec4[](
+       vec4(0.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 1.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0)
+);
+
+void
+main()
+{
+       gl_FragColor = colors[zero];
+}
+
+
+[test]
+uniform int zero 0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-016-elements.shader_test
 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-016-elements.shader_test
new file mode 100644
index 0000000..ac4d493
--- /dev/null
+++ 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-016-elements.shader_test
@@ -0,0 +1,47 @@
+# Test accessing a constant array with a non-constant expression.
+[require]
+GLSL >= 1.20
+
+
+[vertex shader]
+void
+main()
+{
+       gl_Position = gl_Vertex;
+}
+
+
+[fragment shader]
+
+uniform int zero;
+
+const vec4 colors[] = vec4[](
+       vec4(0.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 1.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0)
+);
+
+void
+main()
+{
+       gl_FragColor = colors[zero];
+}
+
+
+[test]
+uniform int zero 0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-032-elements.shader_test
 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-032-elements.shader_test
new file mode 100644
index 0000000..d105f45
--- /dev/null
+++ 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-032-elements.shader_test
@@ -0,0 +1,63 @@
+# Test accessing a constant array with a non-constant expression.
+[require]
+GLSL >= 1.20
+
+
+[vertex shader]
+void
+main()
+{
+       gl_Position = gl_Vertex;
+}
+
+
+[fragment shader]
+
+uniform int zero;
+
+const vec4 colors[] = vec4[](
+       vec4(0.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1)
+);
+
+void
+main()
+{
+       gl_FragColor = colors[zero];
+}
+
+
+[test]
+uniform int zero 0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-048-elements.shader_test
 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-048-elements.shader_test
new file mode 100644
index 0000000..33e039c
--- /dev/null
+++ 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-048-elements.shader_test
@@ -0,0 +1,79 @@
+# Test accessing a constant array with a non-constant expression.
+[require]
+GLSL >= 1.20
+
+
+[vertex shader]
+void
+main()
+{
+       gl_Position = gl_Vertex;
+}
+
+
+[fragment shader]
+
+uniform int zero;
+
+const vec4 colors[] = vec4[](
+       vec4(0.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1)
+);
+
+void
+main()
+{
+       gl_FragColor = colors[zero];
+}
+
+
+[test]
+uniform int zero 0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-064-elements.shader_test
 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-064-elements.shader_test
new file mode 100644
index 0000000..80be74c
--- /dev/null
+++ 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-064-elements.shader_test
@@ -0,0 +1,95 @@
+# Test accessing a constant array with a non-constant expression.
+[require]
+GLSL >= 1.20
+
+
+[vertex shader]
+void
+main()
+{
+       gl_Position = gl_Vertex;
+}
+
+
+[fragment shader]
+
+uniform int zero;
+
+const vec4 colors[] = vec4[](
+       vec4(0.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1)
+);
+
+void
+main()
+{
+       gl_FragColor = colors[zero];
+}
+
+
+[test]
+uniform int zero 0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-128-elements.shader_test
 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-128-elements.shader_test
new file mode 100644
index 0000000..da2d2fd
--- /dev/null
+++ 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-128-elements.shader_test
@@ -0,0 +1,159 @@
+# Test accessing a constant array with a non-constant expression.
+[require]
+GLSL >= 1.20
+
+
+[vertex shader]
+void
+main()
+{
+       gl_Position = gl_Vertex;
+}
+
+
+[fragment shader]
+
+uniform int zero;
+
+const vec4 colors[] = vec4[](
+       vec4(0.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1)
+);
+
+void
+main()
+{
+       gl_FragColor = colors[zero];
+}
+
+
+[test]
+uniform int zero 0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-256-elements.shader_test
 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-256-elements.shader_test
new file mode 100644
index 0000000..ae6e633
--- /dev/null
+++ 
b/tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-256-elements.shader_test
@@ -0,0 +1,287 @@
+# Test accessing a constant array with a non-constant expression.
+[require]
+GLSL >= 1.20
+
+
+[vertex shader]
+void
+main()
+{
+       gl_Position = gl_Vertex;
+}
+
+
+[fragment shader]
+
+uniform int zero;
+
+const vec4 colors[] = vec4[](
+       vec4(0.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 1.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.1, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.0, 1.0),
+       vec4(1.0, 1.0, 0.0, 1.0),
+       vec4(1.1, 1.0, 0.0, 1.0),
+       vec4(0.1, 1.0, 0.1, 1.1)
+);
+
+void
+main()
+{
+       gl_FragColor = colors[zero];
+}
+
+
+[test]
+uniform int zero 0
+draw rect -1 -1 2 2
+probe all rgba 0.0 1.0 0.0 1.0
-- 
1.9.1

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to