glsl: Try vectorizing when seeing a repeated assignment to a channel

Graphics / Mesa 3D Graphics Library / Mesa - Kenneth Graunke [whitecape.org] - 11 April 2014 14:39 UTC

When considering assignment expressions like:

v.x += u.x;
v.x += u.x;

the vectorizer would incorrectly keep going, attempting to find more instructions to vectorize. It would overwrite the saved assignment to point at the second one, and increment channels a second time, resulting in try_vectorize thinking the expression was a vec2 instead of a float.

Instead, if we see a repeated assignment to a channel, just try to
vectorize everything we've found so far. This clears the saved state so it will start over.

Fixes Piglit's repeated-channel-assignments.vert.

Cc: "10.1"

ae2a03b glsl: Try vectorizing when seeing a repeated assignment to a channel.
src/glsl/opt_vectorize.cpp | 1 +
1 file changed, 1 insertion(+)

Upstream: cgit.freedesktop.org


  • Share