[Piglit] [PATCH v2] glsl-1.10 Adds tests on how void functions are handled

Samuel Iglesias Gonsálvez siglesias at igalia.com
Mon Jul 13 07:50:03 PDT 2015


Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>

I have already pushed this piglit patch. Just confirm me to do the same
for the mesa patch.

Sam

On Sat, 2015-07-11 at 22:59 +0200, Renaud Gaubert wrote:
> Mesa currently doesn't handle void functions and segfaults on
> almost all of the test cases.
> 
> This also references the bug 85252 Segfault in compiler while
> processing ternary operator with void arguments:
> 
> This will be fixed with the following commit sent to mesa-dev:
> [PATCH] glsl: fix Bug 85252 - Segfault in compiler while processing
> ternary operator with void arguments
> 
> Signed-off-by: Renaud Gaubert <renaud at lse.epita.fr>
> Reviewed-By: Gabriel Laskar <gabriel at lse.epita.fr>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85252
> 
> ---
> As discussed in [PATCH] glsl 1.10: Fix broken ternary void test
> I've merged my 2nd patch in this one as it wasn't pushed yet.
> 
> Chris Forbes: Yes I need someone to push it for me
> 
>  .../glsl-1.10/compiler/void/void-array_subscript.vert    | 15 +++++++++++++++
>  tests/spec/glsl-1.10/compiler/void/void-assignment.vert  | 15 +++++++++++++++
>  tests/spec/glsl-1.10/compiler/void/void-equal.vert       | 16 ++++++++++++++++
>  .../glsl-1.10/compiler/void/void-field_selection.vert    | 15 +++++++++++++++
>  tests/spec/glsl-1.10/compiler/void/void-logical_and.vert | 15 +++++++++++++++
>  tests/spec/glsl-1.10/compiler/void/void-logical_or.vert  | 15 +++++++++++++++
>  tests/spec/glsl-1.10/compiler/void/void-logical_xor.vert | 15 +++++++++++++++
>  tests/spec/glsl-1.10/compiler/void/void-lt.vert          | 16 ++++++++++++++++
>  tests/spec/glsl-1.10/compiler/void/void-plus.vert        | 15 +++++++++++++++
>  tests/spec/glsl-1.10/compiler/void/void-plus_assign.vert | 16 ++++++++++++++++
>  .../glsl-1.10/compiler/void/void-postfix_increment.vert  | 15 +++++++++++++++
>  .../glsl-1.10/compiler/void/void-prefix_increment.vert   | 15 +++++++++++++++
>  tests/spec/glsl-1.10/compiler/void/void-unary_plus.vert  | 15 +++++++++++++++
>  tests/spec/glsl-1.10/execution/void-ternary.shader_test  |  3 ++-
>  tests/spec/glsl-1.30/compiler/void/void-and_assign.vert  | 16 ++++++++++++++++
>  tests/spec/glsl-1.30/compiler/void/void-bitwise_and.vert | 15 +++++++++++++++
>  tests/spec/glsl-1.30/compiler/void/void-lshift.vert      | 15 +++++++++++++++
>  tests/spec/glsl-1.30/compiler/void/void-mod.vert         | 15 +++++++++++++++
>  tests/spec/glsl-1.30/compiler/void/void-mod_assign.vert  | 16 ++++++++++++++++
>  tests/spec/glsl-1.30/compiler/void/void-rshift.vert      | 15 +++++++++++++++
>  .../spec/glsl-1.30/compiler/void/void-shift_assign.vert  | 16 ++++++++++++++++
>  tests/spec/glsl-1.30/compiler/void/void-unary_not.vert   | 15 +++++++++++++++
>  tests/spec/glsl-1.30/compiler/void/void-unary_tilde.vert | 15 +++++++++++++++
>  23 files changed, 338 insertions(+), 1 deletion(-)
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-array_subscript.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-assignment.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-equal.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-field_selection.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-logical_and.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-logical_or.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-logical_xor.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-lt.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-plus.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-plus_assign.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-postfix_increment.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-prefix_increment.vert
>  create mode 100644 tests/spec/glsl-1.10/compiler/void/void-unary_plus.vert
>  create mode 100644 tests/spec/glsl-1.30/compiler/void/void-and_assign.vert
>  create mode 100644 tests/spec/glsl-1.30/compiler/void/void-bitwise_and.vert
>  create mode 100644 tests/spec/glsl-1.30/compiler/void/void-lshift.vert
>  create mode 100644 tests/spec/glsl-1.30/compiler/void/void-mod.vert
>  create mode 100644 tests/spec/glsl-1.30/compiler/void/void-mod_assign.vert
>  create mode 100644 tests/spec/glsl-1.30/compiler/void/void-rshift.vert
>  create mode 100644 tests/spec/glsl-1.30/compiler/void/void-shift_assign.vert
>  create mode 100644 tests/spec/glsl-1.30/compiler/void/void-unary_not.vert
>  create mode 100644 tests/spec/glsl-1.30/compiler/void/void-unary_tilde.vert
> 
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-array_subscript.vert b/tests/spec/glsl-1.10/compiler/void/void-array_subscript.vert
> new file mode 100644
> index 0000000..0cf3de6
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-array_subscript.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f()[0];
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-assignment.vert b/tests/spec/glsl-1.10/compiler/void/void-assignment.vert
> new file mode 100644
> index 0000000..da889bd
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-assignment.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    float y = f();
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-equal.vert b/tests/spec/glsl-1.10/compiler/void/void-equal.vert
> new file mode 100644
> index 0000000..a107600
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-equal.vert
> @@ -0,0 +1,16 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    if (f() == f())
> +        f();
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-field_selection.vert b/tests/spec/glsl-1.10/compiler/void/void-field_selection.vert
> new file mode 100644
> index 0000000..2165d7c
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-field_selection.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f().test;
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-logical_and.vert b/tests/spec/glsl-1.10/compiler/void/void-logical_and.vert
> new file mode 100644
> index 0000000..fe7bfb1
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-logical_and.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f() && f();
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-logical_or.vert b/tests/spec/glsl-1.10/compiler/void/void-logical_or.vert
> new file mode 100644
> index 0000000..260e58c
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-logical_or.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f() || 1;
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-logical_xor.vert b/tests/spec/glsl-1.10/compiler/void/void-logical_xor.vert
> new file mode 100644
> index 0000000..1935909
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-logical_xor.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f() ^^ 1;
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-lt.vert b/tests/spec/glsl-1.10/compiler/void/void-lt.vert
> new file mode 100644
> index 0000000..aca4c72
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-lt.vert
> @@ -0,0 +1,16 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    if (f() < f())
> +        f();
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-plus.vert b/tests/spec/glsl-1.10/compiler/void/void-plus.vert
> new file mode 100644
> index 0000000..a5c6466
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-plus.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f() + f();
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-plus_assign.vert b/tests/spec/glsl-1.10/compiler/void/void-plus_assign.vert
> new file mode 100644
> index 0000000..4e59b27
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-plus_assign.vert
> @@ -0,0 +1,16 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    float y = 1.0;
> +    y *= f();
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-postfix_increment.vert b/tests/spec/glsl-1.10/compiler/void/void-postfix_increment.vert
> new file mode 100644
> index 0000000..153d534
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-postfix_increment.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f()++;
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-prefix_increment.vert b/tests/spec/glsl-1.10/compiler/void/void-prefix_increment.vert
> new file mode 100644
> index 0000000..6aa9332
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-prefix_increment.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    ++f();
> +}
> diff --git a/tests/spec/glsl-1.10/compiler/void/void-unary_plus.vert b/tests/spec/glsl-1.10/compiler/void/void-unary_plus.vert
> new file mode 100644
> index 0000000..7bea0b1
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/void/void-unary_plus.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.10
> + * [end config]
> + */
> +
> +#version 110
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    +f();
> +}
> diff --git a/tests/spec/glsl-1.10/execution/void-ternary.shader_test b/tests/spec/glsl-1.10/execution/void-ternary.shader_test
> index 157090f..1b0f082 100644
> --- a/tests/spec/glsl-1.10/execution/void-ternary.shader_test
> +++ b/tests/spec/glsl-1.10/execution/void-ternary.shader_test
> @@ -18,6 +18,7 @@ void bad(void)
>  
>  void main()
>  {
> +    gl_Position = gl_Vertex;
>      b ? good() : bad();
>  }
>  
> @@ -45,4 +46,4 @@ void main()
>  uniform int b 1
>  
>  draw rect -1 -1 2 2
> -probe all rgba 0.0 1.0 0.0 0.0
> +probe all rgba 0.0 1.0 0.0 1.0
> diff --git a/tests/spec/glsl-1.30/compiler/void/void-and_assign.vert b/tests/spec/glsl-1.30/compiler/void/void-and_assign.vert
> new file mode 100644
> index 0000000..027ae1d
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/void/void-and_assign.vert
> @@ -0,0 +1,16 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.30
> + * [end config]
> + */
> +
> +#version 130
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    int y = 1;
> +    y &= f();
> +}
> diff --git a/tests/spec/glsl-1.30/compiler/void/void-bitwise_and.vert b/tests/spec/glsl-1.30/compiler/void/void-bitwise_and.vert
> new file mode 100644
> index 0000000..6bd3635
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/void/void-bitwise_and.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.30
> + * [end config]
> + */
> +
> +#version 130
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f() & 1;
> +}
> diff --git a/tests/spec/glsl-1.30/compiler/void/void-lshift.vert b/tests/spec/glsl-1.30/compiler/void/void-lshift.vert
> new file mode 100644
> index 0000000..f50ac1f
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/void/void-lshift.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.30
> + * [end config]
> + */
> +
> +#version 130
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f() << f();
> +}
> diff --git a/tests/spec/glsl-1.30/compiler/void/void-mod.vert b/tests/spec/glsl-1.30/compiler/void/void-mod.vert
> new file mode 100644
> index 0000000..6e26a71
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/void/void-mod.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.30
> + * [end config]
> + */
> +
> +#version 130
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f() % f();
> +}
> diff --git a/tests/spec/glsl-1.30/compiler/void/void-mod_assign.vert b/tests/spec/glsl-1.30/compiler/void/void-mod_assign.vert
> new file mode 100644
> index 0000000..df7618a
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/void/void-mod_assign.vert
> @@ -0,0 +1,16 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.30
> + * [end config]
> + */
> +
> +#version 130
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    int y = 1;
> +    y %= f();
> +}
> diff --git a/tests/spec/glsl-1.30/compiler/void/void-rshift.vert b/tests/spec/glsl-1.30/compiler/void/void-rshift.vert
> new file mode 100644
> index 0000000..8410cb5
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/void/void-rshift.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.30
> + * [end config]
> + */
> +
> +#version 130
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    f() >> f();
> +}
> diff --git a/tests/spec/glsl-1.30/compiler/void/void-shift_assign.vert b/tests/spec/glsl-1.30/compiler/void/void-shift_assign.vert
> new file mode 100644
> index 0000000..c44fd51
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/void/void-shift_assign.vert
> @@ -0,0 +1,16 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.30
> + * [end config]
> + */
> +
> +#version 130
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    int y = 1;
> +    y <<= f();
> +}
> diff --git a/tests/spec/glsl-1.30/compiler/void/void-unary_not.vert b/tests/spec/glsl-1.30/compiler/void/void-unary_not.vert
> new file mode 100644
> index 0000000..45a8ebb
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/void/void-unary_not.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.30
> + * [end config]
> + */
> +
> +#version 130
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    !f();
> +}
> diff --git a/tests/spec/glsl-1.30/compiler/void/void-unary_tilde.vert b/tests/spec/glsl-1.30/compiler/void/void-unary_tilde.vert
> new file mode 100644
> index 0000000..05f4e24
> --- /dev/null
> +++ b/tests/spec/glsl-1.30/compiler/void/void-unary_tilde.vert
> @@ -0,0 +1,15 @@
> +/*[config]
> + *   expect_result: fail
> + *   glsl_version: 1.30
> + * [end config]
> + */
> +
> +#version 130
> +
> +void f(void)
> +{}
> +
> +void main()
> +{
> +    ~f();
> +}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20150713/2fbac068/attachment.sig>


More information about the Piglit mailing list