From 0f6360eedb61ac184473f765eb26058593a679fc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 7 Nov 2016 22:56:21 +0100 Subject: [PATCH] glsl: handle partial swizzles in opt_dead_code_local correctly Reviewed-by: Kenneth Graunke --- src/compiler/glsl/opt_dead_code_local.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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); -- 2.30.2