summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2013-10-07 16:28:12 -0700
committerFrancisco Jerez <currojerez@riseup.net>2013-10-07 18:16:03 -0700
commita108c342b8ac88430c56cab68edde88df77ea93f (patch)
tree4b0dd3da6d55e4502d34b8e5ab45b05ec8600ddf
parentbec2598d283fffe493b2b764863ca801a4f35e8e (diff)
arb_shader_atomic_counters: Import GLSL parser tests.
-rw-r--r--tests/all.tests3
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/builtins.frag24
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/declaration-allowed.frag21
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-inout.frag21
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-out.frag21
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/declaration-const.frag17
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/declaration-initializer.frag16
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/declaration-input.frag17
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/declaration-local.frag17
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/declaration-output.frag17
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/expression-allowed.frag22
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-1.frag21
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-2.frag21
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-3.frag21
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-4.frag21
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-5.frag21
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-6.frag21
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/lvalue-1.frag17
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/lvalue-2.frag17
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/lvalue-3.frag18
-rw-r--r--tests/spec/arb_shader_atomic_counters/compiler/uniform-block.frag18
-rw-r--r--tests/spec/arb_shader_atomic_counters/preprocessor/define.frag19
-rw-r--r--tests/spec/arb_shader_atomic_counters/preprocessor/define.vert19
23 files changed, 430 insertions, 0 deletions
diff --git a/tests/all.tests b/tests/all.tests
index e1907d6c9..4c5f43491 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -3167,6 +3167,9 @@ import_glsl_parser_tests(profile.tests, generatedTestDir, ['spec'])
arb_shader_atomic_counters = Group()
spec['ARB_shader_atomic_counters'] = arb_shader_atomic_counters
+import_glsl_parser_tests(spec['ARB_shader_atomic_counters'],
+ os.path.join(testsDir, 'spec', 'arb_shader_atomic_counters'),
+ [''])
profile.tests['hiz'] = hiz
profile.tests['fast_color_clear'] = fast_color_clear
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/builtins.frag b/tests/spec/arb_shader_atomic_counters/compiler/builtins.frag
new file mode 100644
index 000000000..74f97f72a
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/builtins.frag
@@ -0,0 +1,24 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * Check that the builtin constants defined by the extension
+ * are present.
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+out ivec4 fcolor;
+
+void main()
+{
+ fcolor.x = gl_MaxVertexAtomicCounters +
+ gl_MaxTessControlAtomicCounters +
+ gl_MaxTessEvaluationAtomicCounters +
+ gl_MaxGeometryAtomicCounters +
+ gl_MaxFragmentAtomicCounters +
+ gl_MaxCombinedAtomicCounters +
+ gl_MaxAtomicCounterBindings;
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/declaration-allowed.frag b/tests/spec/arb_shader_atomic_counters/compiler/declaration-allowed.frag
new file mode 100644
index 000000000..81521a0f5
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/declaration-allowed.frag
@@ -0,0 +1,21 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "[Atomic counters] can only be declared as function parameters or
+ * uniform-qualified global variables."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+void f(atomic_uint y)
+{
+}
+
+void main()
+{
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-inout.frag b/tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-inout.frag
new file mode 100644
index 000000000..48602882a
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-inout.frag
@@ -0,0 +1,21 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Counters cannot be treated as l-values; hence cannot be used as
+ * out or inout function parameters, nor can they be assigned into."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+void f(inout atomic_uint y)
+{
+}
+
+void main()
+{
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-out.frag b/tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-out.frag
new file mode 100644
index 000000000..0663988ff
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-out.frag
@@ -0,0 +1,21 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Counters cannot be treated as l-values; hence cannot be used as
+ * out or inout function parameters, nor can they be assigned into."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+void f(out atomic_uint y)
+{
+}
+
+void main()
+{
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/declaration-const.frag b/tests/spec/arb_shader_atomic_counters/compiler/declaration-const.frag
new file mode 100644
index 000000000..782464e50
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/declaration-const.frag
@@ -0,0 +1,17 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "[Atomic counters] can only be declared as function parameters or
+ * uniform-qualified global variables."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+const atomic_uint x;
+
+void main()
+{
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/declaration-initializer.frag b/tests/spec/arb_shader_atomic_counters/compiler/declaration-initializer.frag
new file mode 100644
index 000000000..f4628a9d5
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/declaration-initializer.frag
@@ -0,0 +1,16 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * Counter declarations cannot have initializer.
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x = 0;
+
+void main()
+{
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/declaration-input.frag b/tests/spec/arb_shader_atomic_counters/compiler/declaration-input.frag
new file mode 100644
index 000000000..8883450b2
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/declaration-input.frag
@@ -0,0 +1,17 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "[Atomic counters] can only be declared as function parameters or
+ * uniform-qualified global variables."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+in atomic_uint x;
+
+void main()
+{
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/declaration-local.frag b/tests/spec/arb_shader_atomic_counters/compiler/declaration-local.frag
new file mode 100644
index 000000000..abbfffc7a
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/declaration-local.frag
@@ -0,0 +1,17 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "[Atomic counters] can only be declared as function parameters or
+ * uniform-qualified global variables."
+ */
+
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+void main()
+{
+ uniform atomic_uint x;
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/declaration-output.frag b/tests/spec/arb_shader_atomic_counters/compiler/declaration-output.frag
new file mode 100644
index 000000000..540da8ffd
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/declaration-output.frag
@@ -0,0 +1,17 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "[Atomic counters] can only be declared as function parameters or
+ * uniform-qualified global variables."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+out atomic_uint x;
+
+void main()
+{
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/expression-allowed.frag b/tests/spec/arb_shader_atomic_counters/compiler/expression-allowed.frag
new file mode 100644
index 000000000..cfe40340e
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/expression-allowed.frag
@@ -0,0 +1,22 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Except for array indexing, structure field selection, and
+ * parenthesis, counters are not allowed to be operands in
+ * expressions."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint xs[4];
+uniform uint y;
+
+out ivec4 fcolor;
+
+void main()
+{
+ fcolor.x = int(y + atomicCounter((xs[1])));
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-1.frag b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-1.frag
new file mode 100644
index 000000000..31f207ed5
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-1.frag
@@ -0,0 +1,21 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Except for array indexing, structure field selection, and
+ * parenthesis, counters are not allowed to be operands in
+ * expressions."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+out ivec4 fcolor;
+
+void main()
+{
+ fcolor.x = x;
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-2.frag b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-2.frag
new file mode 100644
index 000000000..cf4718df2
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-2.frag
@@ -0,0 +1,21 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Except for array indexing, structure field selection, and
+ * parenthesis, counters are not allowed to be operands in
+ * expressions."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+out vec4 fcolor;
+
+void main()
+{
+ fcolor.x = float(x);
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-3.frag b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-3.frag
new file mode 100644
index 000000000..f5fa6f53d
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-3.frag
@@ -0,0 +1,21 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Except for array indexing, structure field selection, and
+ * parenthesis, counters are not allowed to be operands in
+ * expressions."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+out ivec4 fcolor;
+
+void main()
+{
+ fcolor.x = 1 + x;
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-4.frag b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-4.frag
new file mode 100644
index 000000000..76fc6c9ba
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-4.frag
@@ -0,0 +1,21 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Except for array indexing, structure field selection, and
+ * parenthesis, counters are not allowed to be operands in
+ * expressions."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+out ivec4 fcolor;
+
+void main()
+{
+ fcolor.x = !x;
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-5.frag b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-5.frag
new file mode 100644
index 000000000..6eba0726f
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-5.frag
@@ -0,0 +1,21 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Except for array indexing, structure field selection, and
+ * parenthesis, counters are not allowed to be operands in
+ * expressions."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+out ivec4 fcolor;
+
+void main()
+{
+ fcolor.x = (x == 0);
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-6.frag b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-6.frag
new file mode 100644
index 000000000..247642c61
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-6.frag
@@ -0,0 +1,21 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Except for array indexing, structure field selection, and
+ * parenthesis, counters are not allowed to be operands in
+ * expressions."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+out ivec4 fcolor;
+
+void main()
+{
+ fcolor.x = ~x;
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/lvalue-1.frag b/tests/spec/arb_shader_atomic_counters/compiler/lvalue-1.frag
new file mode 100644
index 000000000..1f0e56f25
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/lvalue-1.frag
@@ -0,0 +1,17 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Counters cannot be treated as l-values."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+void main()
+{
+ x = 0;
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/lvalue-2.frag b/tests/spec/arb_shader_atomic_counters/compiler/lvalue-2.frag
new file mode 100644
index 000000000..203e9b384
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/lvalue-2.frag
@@ -0,0 +1,17 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Counters cannot be treated as l-values."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+
+void main()
+{
+ x++;
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/lvalue-3.frag b/tests/spec/arb_shader_atomic_counters/compiler/lvalue-3.frag
new file mode 100644
index 000000000..eab47b513
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/lvalue-3.frag
@@ -0,0 +1,18 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Counters cannot be treated as l-values."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout(binding=0) uniform atomic_uint x;
+layout(binding=0) uniform atomic_uint y;
+
+void main()
+{
+ x = y;
+}
diff --git a/tests/spec/arb_shader_atomic_counters/compiler/uniform-block.frag b/tests/spec/arb_shader_atomic_counters/compiler/uniform-block.frag
new file mode 100644
index 000000000..15af790fe
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/compiler/uniform-block.frag
@@ -0,0 +1,18 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.40
+ * require_extensions: GL_ARB_shader_atomic_counters
+ * [end config]
+ *
+ * "Atomic counters may [...] NOT be grouped into uniform blocks."
+ */
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+uniform a {
+ uniform atomic_uint x;
+};
+
+void main()
+{
+}
diff --git a/tests/spec/arb_shader_atomic_counters/preprocessor/define.frag b/tests/spec/arb_shader_atomic_counters/preprocessor/define.frag
new file mode 100644
index 000000000..f48fe8e81
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/preprocessor/define.frag
@@ -0,0 +1,19 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.40
+// require_extensions: GL_ARB_shader_atomic_counters
+// [end config]
+
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+#if !defined GL_ARB_shader_atomic_counters
+# error GL_ARB_shader_atomic_counters is not defined
+#elif GL_ARB_shader_atomic_counters != 1
+# error GL_ARB_shader_atomic_counters is not equal to 1
+#endif
+
+/* Some compilers generate spurious errors if a shader does not contain
+ * any code or declarations.
+ */
+int foo(void) { return 1; }
diff --git a/tests/spec/arb_shader_atomic_counters/preprocessor/define.vert b/tests/spec/arb_shader_atomic_counters/preprocessor/define.vert
new file mode 100644
index 000000000..f48fe8e81
--- /dev/null
+++ b/tests/spec/arb_shader_atomic_counters/preprocessor/define.vert
@@ -0,0 +1,19 @@
+// [config]
+// expect_result: pass
+// glsl_version: 1.40
+// require_extensions: GL_ARB_shader_atomic_counters
+// [end config]
+
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+#if !defined GL_ARB_shader_atomic_counters
+# error GL_ARB_shader_atomic_counters is not defined
+#elif GL_ARB_shader_atomic_counters != 1
+# error GL_ARB_shader_atomic_counters is not equal to 1
+#endif
+
+/* Some compilers generate spurious errors if a shader does not contain
+ * any code or declarations.
+ */
+int foo(void) { return 1; }