--- 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 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit