[Piglit] [PATCH 02/13] arb_shader_atomic_counters: Import GLSL parser tests.

Francisco Jerez currojerez at riseup.net
Tue Oct 8 03:14:06 CEST 2013


---
 tests/all.tests                                    |  3 +++
 .../compiler/builtins.frag                         | 24 ++++++++++++++++++++++
 .../compiler/declaration-allowed.frag              | 21 +++++++++++++++++++
 .../compiler/declaration-arg-inout.frag            | 21 +++++++++++++++++++
 .../compiler/declaration-arg-out.frag              | 21 +++++++++++++++++++
 .../compiler/declaration-const.frag                | 17 +++++++++++++++
 .../compiler/declaration-initializer.frag          | 16 +++++++++++++++
 .../compiler/declaration-input.frag                | 17 +++++++++++++++
 .../compiler/declaration-local.frag                | 17 +++++++++++++++
 .../compiler/declaration-output.frag               | 17 +++++++++++++++
 .../compiler/expression-allowed.frag               | 22 ++++++++++++++++++++
 .../compiler/expression-disallowed-1.frag          | 21 +++++++++++++++++++
 .../compiler/expression-disallowed-2.frag          | 21 +++++++++++++++++++
 .../compiler/expression-disallowed-3.frag          | 21 +++++++++++++++++++
 .../compiler/expression-disallowed-4.frag          | 21 +++++++++++++++++++
 .../compiler/expression-disallowed-5.frag          | 21 +++++++++++++++++++
 .../compiler/expression-disallowed-6.frag          | 21 +++++++++++++++++++
 .../compiler/lvalue-1.frag                         | 17 +++++++++++++++
 .../compiler/lvalue-2.frag                         | 17 +++++++++++++++
 .../compiler/lvalue-3.frag                         | 18 ++++++++++++++++
 .../compiler/uniform-block.frag                    | 18 ++++++++++++++++
 .../preprocessor/define.frag                       | 19 +++++++++++++++++
 .../preprocessor/define.vert                       | 19 +++++++++++++++++
 23 files changed, 430 insertions(+)
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/builtins.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/declaration-allowed.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-inout.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/declaration-arg-out.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/declaration-const.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/declaration-initializer.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/declaration-input.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/declaration-local.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/declaration-output.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/expression-allowed.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-1.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-2.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-3.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-4.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-5.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/expression-disallowed-6.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/lvalue-1.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/lvalue-2.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/lvalue-3.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/compiler/uniform-block.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/preprocessor/define.frag
 create mode 100644 tests/spec/arb_shader_atomic_counters/preprocessor/define.vert

diff --git a/tests/all.tests b/tests/all.tests
index e1907d6..4c5f434 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 0000000..74f97f7
--- /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 0000000..81521a0
--- /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 0000000..4860288
--- /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 0000000..0663988
--- /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 0000000..782464e
--- /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 0000000..f4628a9
--- /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 0000000..8883450
--- /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 0000000..abbfffc
--- /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 0000000..540da8f
--- /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 0000000..cfe4034
--- /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 0000000..31f207e
--- /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 0000000..cf4718d
--- /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 0000000..f5fa6f5
--- /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 0000000..76fc6c9
--- /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 0000000..6eba072
--- /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 0000000..247642c
--- /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 0000000..1f0e56f
--- /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 0000000..203e9b3
--- /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 0000000..eab47b5
--- /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 0000000..15af790
--- /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 0000000..f48fe8e
--- /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 0000000..f48fe8e
--- /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; }
-- 
1.8.3.4



More information about the Piglit mailing list