[Piglit] [PATCH] glsl: Try some chained assignments
Kenneth Graunke
kenneth at whitecape.org
Fri Jan 24 10:40:12 PST 2014
On 01/24/2014 10:28 AM, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> Mesa currently passes the chained-assignment.vert, but it fails
> chained-assignment-with-array-deref.vert with:
>
> 0:5(12): error: value of type vec4 cannot be assigned to variable of type float
>
> It seems the type checker is getting confused by the array
> dereference.
>
> I have been told that cases similar to
> chained-assignment-with-array-deref pass on all other known desktop
> OpenGL implementations.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
> .../chained-assignment-with-array-deref.vert | 10 ++++++++++
> .../compiler/assignment-operators/chained-assignment.vert | 10 ++++++++++
> 2 files changed, 20 insertions(+)
> create mode 100644 tests/spec/glsl-1.10/compiler/assignment-operators/chained-assignment-with-array-deref.vert
> create mode 100644 tests/spec/glsl-1.10/compiler/assignment-operators/chained-assignment.vert
>
> diff --git a/tests/spec/glsl-1.10/compiler/assignment-operators/chained-assignment-with-array-deref.vert b/tests/spec/glsl-1.10/compiler/assignment-operators/chained-assignment-with-array-deref.vert
> new file mode 100644
> index 0000000..1e3a450
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/assignment-operators/chained-assignment-with-array-deref.vert
> @@ -0,0 +1,10 @@
> +/* [config]
> + * expect_result: pass
> + * glsl_version: 1.10
> + * [end config]
> + */
> +
> +void foo(inout vec4 a, float b)
> +{
> + a[0] = a[1] = a[2] = b;
> +}
You're only assigning three components of a vec4, which is a bit
odd...and the "inout" is not necessary/related.
How about this instead? (Or, additionally?)
void splat(vec2 v, float f)
{
v[0] = v[1] = f;
}
> diff --git a/tests/spec/glsl-1.10/compiler/assignment-operators/chained-assignment.vert b/tests/spec/glsl-1.10/compiler/assignment-operators/chained-assignment.vert
> new file mode 100644
> index 0000000..5a4c02b
> --- /dev/null
> +++ b/tests/spec/glsl-1.10/compiler/assignment-operators/chained-assignment.vert
> @@ -0,0 +1,10 @@
> +/* [config]
> + * expect_result: pass
> + * glsl_version: 1.10
> + * [end config]
> + */
> +
> +void foo(inout float a, inout float b, float c)
> +{
> + a = b = c;
> +}
Not sure this is too useful, but it definitely ought to work.
More information about the Piglit
mailing list