[Piglit] [PATCH] glsl-1.20: new tests for indirect access into a constant array
Marek Olšák
maraeo at gmail.com
Thu Oct 16 06:03:31 PDT 2014
From: Marek Olšák <marek.olsak at amd.com>
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
More information about the Piglit
mailing list