summaryrefslogtreecommitdiff
path: root/tests/spec/glsl-1.20/execution/matrix-out-of-bounds-access/fs-mat4-out-of-bounds-4.shader_test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/spec/glsl-1.20/execution/matrix-out-of-bounds-access/fs-mat4-out-of-bounds-4.shader_test')
-rw-r--r--tests/spec/glsl-1.20/execution/matrix-out-of-bounds-access/fs-mat4-out-of-bounds-4.shader_test31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/spec/glsl-1.20/execution/matrix-out-of-bounds-access/fs-mat4-out-of-bounds-4.shader_test b/tests/spec/glsl-1.20/execution/matrix-out-of-bounds-access/fs-mat4-out-of-bounds-4.shader_test
new file mode 100644
index 000000000..bdee95621
--- /dev/null
+++ b/tests/spec/glsl-1.20/execution/matrix-out-of-bounds-access/fs-mat4-out-of-bounds-4.shader_test
@@ -0,0 +1,31 @@
+/* From section 5.6 "Matrix Components" of the GLSL 1.20 spec:
+ *
+ * "Behavior is undefined when accessing a component outside the bounds
+ * of a matrix with a non-constant expression."
+ *
+ * The behaviour becomes defined only in robustness extensions, however even
+ * if driver is technically allowed to crash or hang, it most likely
+ * doesn't want to.
+ */
+
+[require]
+GLSL >= 1.20
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 120
+
+void main()
+{
+ mat4 mat = mat4(1.0);
+ int index = 2147483647;
+ if (mat[index][0] >= 1.0) {
+ mat[index] = vec4(-1.0);
+ }
+
+ gl_FragColor = mat[index];
+}
+
+[test]
+draw rect -1 -1 2 2