From: Marek Olšák Date: Mon, 7 Nov 2016 21:56:21 +0000 (+0100) Subject: glsl: handle partial swizzles in opt_dead_code_local correctly X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0f6360eedb61ac184473f765eb26058593a679fc;p=mesa.git glsl: handle partial swizzles in opt_dead_code_local correctly Reviewed-by: Kenneth Graunke --- diff --git a/src/compiler/glsl/opt_dead_code_local.cpp b/src/compiler/glsl/opt_dead_code_local.cpp index fc979afcd81..a4038794c6b 100644 --- a/src/compiler/glsl/opt_dead_code_local.cpp +++ b/src/compiler/glsl/opt_dead_code_local.cpp @@ -106,9 +106,12 @@ public: int used = 0; used |= 1 << ir->mask.x; - used |= 1 << ir->mask.y; - used |= 1 << ir->mask.z; - used |= 1 << ir->mask.w; + if (ir->mask.num_components > 1) + used |= 1 << ir->mask.y; + if (ir->mask.num_components > 2) + used |= 1 << ir->mask.z; + if (ir->mask.num_components > 3) + used |= 1 << ir->mask.w; use_channels(deref->var, used);