diff options
author | Kenneth Graunke <[email protected]> | 2016-04-27 21:07:07 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2016-04-29 16:03:36 -0700 |
commit | 750c38fad1f19e2403b4960674006c5f932075ad (patch) | |
tree | 0902afe16cb16366a01ae928463f526b0608a4d9 | |
parent | 1cd600dbb975cce616da376a680692afb2da47f9 (diff) |
glsl: Lower vector_extracts to swizzles after lower_vector_derefs.
lower_vector_derefs can produce new vector_extract operations.
Neither i965 nor st_glsl_to_tgsi can handle them, so we'd best
convert them to swizzles.
Together with the previous patch, this fixes assertion failures in
GLideN64, as well as a new Piglit test which reproduces the issue:
spec/glsl-1.10/compiler/vector-dereference-in-dereference.frag
Cc: [email protected]
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95164
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r-- | src/compiler/glsl/linker.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index dcc8a57b6be..7bd795c9a38 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -4813,6 +4813,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) &prog->Comp.SharedSize); lower_vector_derefs(prog->_LinkedShaders[i]); + do_vec_index_to_swizzle(prog->_LinkedShaders[i]->ir); } done: |