[Piglit] [PATCH 04/12] Test compilation rules related to compute shader layout qualifiers.

Anuj Phogat anuj.phogat at gmail.com
Wed Jan 22 18:21:02 PST 2014


On Thu, Jan 9, 2014 at 10:59 AM, Paul Berry <stereotype441 at gmail.com> wrote:
> ---
>  .../compiler/default_local_size.comp               | 39 ++++++++++++++++++++++
>  .../compiler/mismatched_local_size.comp            | 21 ++++++++++++
>  .../compiler/negative_local_size.comp              | 26 +++++++++++++++
>  .../compiler/zero_local_size.comp                  | 26 +++++++++++++++
>  4 files changed, 112 insertions(+)
>  create mode 100644 tests/spec/arb_compute_shader/compiler/default_local_size.comp
>  create mode 100644 tests/spec/arb_compute_shader/compiler/mismatched_local_size.comp
>  create mode 100644 tests/spec/arb_compute_shader/compiler/negative_local_size.comp
>  create mode 100644 tests/spec/arb_compute_shader/compiler/zero_local_size.comp
>
> diff --git a/tests/spec/arb_compute_shader/compiler/default_local_size.comp b/tests/spec/arb_compute_shader/compiler/default_local_size.comp
> new file mode 100644
> index 0000000..81fb6e3
> --- /dev/null
> +++ b/tests/spec/arb_compute_shader/compiler/default_local_size.comp
> @@ -0,0 +1,39 @@
> +// [config]
> +// expect_result: pass
> +// glsl_version: 3.30
> +// require_extensions: GL_ARB_compute_shader
> +// [end config]
> +//
> +// From the ARB_compute_shader spec:
> +//
> +//     Layout qualifier identifiers for compute shader inputs are the work-group
extra white space after work-group

> +//     size qualifiers:
> +//
> +//         layout-qualifier-id
> +//             local_size_x = integer-constant
> +//             local_size_y = integer-constant
> +//             local_size_z = integer-constant
> +//
> +//     <local_size_x>, <local_size_y>, and <local_size_z> are used to define the
> +//     local size of the kernel defined by the compute shader in the first,
> +//     second, and third dimension, respectively. The default size in each
> +//     dimension is 1. If a shader does not specify a size for one of the
> +//     dimensions, that dimension will have a size of 1.
> +//
> +// This test verifies that unspecified local_size dimensions default
> +// to 1, by taking advantage of the fact that conflicting layouts will
> +// cause a compiler error.
> +
> +
> +#version 330
> +#extension GL_ARB_compute_shader: enable
> +
> +// All 3 of the following layouts should be equivalent, since
> +// unspecified sizes default to 1.
> +layout(local_size_x = 1) in;
> +layout(local_size_y = 1) in;
> +layout(local_size_z = 1) in;
> +
> +void main()
> +{
> +}
> diff --git a/tests/spec/arb_compute_shader/compiler/mismatched_local_size.comp b/tests/spec/arb_compute_shader/compiler/mismatched_local_size.comp
> new file mode 100644
> index 0000000..6f83a32
> --- /dev/null
> +++ b/tests/spec/arb_compute_shader/compiler/mismatched_local_size.comp
> @@ -0,0 +1,21 @@
> +// [config]
> +// expect_result: fail
> +// glsl_version: 3.30
> +// require_extensions: GL_ARB_compute_shader
> +// [end config]
> +//
> +// From the ARB_compute_shader spec:
> +//
> +//     [If an input layout qualifier] is declared more than once in
> +//     the same shader, all those declarations must indicate the same
> +//     local work-group size; otherwise a compile-time error results.
> +
> +#version 330
> +#extension GL_ARB_compute_shader: enable
> +
> +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
> +layout(local_size_x = 1, local_size_y = 1, local_size_z = 2) in;
> +
> +void main()
> +{
> +}
> diff --git a/tests/spec/arb_compute_shader/compiler/negative_local_size.comp b/tests/spec/arb_compute_shader/compiler/negative_local_size.comp
> new file mode 100644
> index 0000000..0a84019
> --- /dev/null
> +++ b/tests/spec/arb_compute_shader/compiler/negative_local_size.comp
> @@ -0,0 +1,26 @@
> +// [config]
> +// expect_result: fail
> +// glsl_version: 3.30
> +// require_extensions: GL_ARB_compute_shader
> +// [end config]
> +//
> +// From the ARB_compute_shader spec:
> +//
> +//     <local_size_x>, <local_size_y>, and <local_size_z> are used to
> +//     define the local size of the kernel defined by the compute
> +//     shader in the first, second, and third dimension,
> +//     respectively. The default size in each dimension is 1. If a
> +//     shader does not specify a size for one of the dimensions, that
> +//     dimension will have a size of 1.
> +//
> +// Although it's not explicitly stated, it seems reasonable to assume
> +// that a local size less than 0 is prohibited.
> +
> +#version 330
> +#extension GL_ARB_compute_shader: enable
> +
> +layout(local_size_y = -1) in;
> +
> +void main()
> +{
> +}
> diff --git a/tests/spec/arb_compute_shader/compiler/zero_local_size.comp b/tests/spec/arb_compute_shader/compiler/zero_local_size.comp
> new file mode 100644
> index 0000000..fbadf3e
> --- /dev/null
> +++ b/tests/spec/arb_compute_shader/compiler/zero_local_size.comp
> @@ -0,0 +1,26 @@
> +// [config]
> +// expect_result: fail
> +// glsl_version: 3.30
> +// require_extensions: GL_ARB_compute_shader
> +// [end config]
> +//
> +// From the ARB_compute_shader spec:
> +//
> +//     <local_size_x>, <local_size_y>, and <local_size_z> are used to
> +//     define the local size of the kernel defined by the compute
> +//     shader in the first, second, and third dimension,
> +//     respectively. The default size in each dimension is 1. If a
> +//     shader does not specify a size for one of the dimensions, that
> +//     dimension will have a size of 1.
> +//
> +// Although it's not explicitly stated, it seems reasonable to assume
> +// that a local size of 0 is prohibited.
> +
> +#version 330
> +#extension GL_ARB_compute_shader: enable
> +
> +layout(local_size_y = 0) in;
> +
> +void main()
> +{
> +}
> --
> 1.8.5.2
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list