summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2014-10-16 14:58:45 +0200
committerMarek Olšák <marek.olsak@amd.com>2014-10-23 13:29:01 +0200
commit28505ec885274a0451f8ca831e12f5839ce79305 (patch)
tree41f4232b33126800b14457c49bda0b189e043065
parentad8bd91a3e2fd653afa3fc90e061965d07c7d26f (diff)
glsl-1.20: new tests for indirect access into a constant array
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.
-rw-r--r--tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-004-elements.shader_test35
-rw-r--r--tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-008-elements.shader_test39
-rw-r--r--tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-016-elements.shader_test47
-rw-r--r--tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-032-elements.shader_test63
-rw-r--r--tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-048-elements.shader_test79
-rw-r--r--tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-064-elements.shader_test95
-rw-r--r--tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-128-elements.shader_test159
-rw-r--r--tests/spec/glsl-1.20/execution/fs-vec4-const-array-indirect-access-256-elements.shader_test287
8 files changed, 804 insertions, 0 deletions
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 000000000..6fcd85897
--- /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 000000000..09b443b23
--- /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 000000000..ac4d49362
--- /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 000000000..d105f45c0
--- /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 000000000..33e039c24
--- /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 000000000..80be74c1c
--- /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 000000000..da2d2fd6b
--- /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 000000000..ae6e633cc
--- /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