From: Brian Paul Date: Tue, 24 Feb 2009 00:43:43 +0000 (-0700) Subject: glsl: yet another swizzled expression fix X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=00f0b05d5f14256213f744c3b8e4ce82611e0ba1;p=mesa.git glsl: yet another swizzled expression fix This fixes swizzled conditional expressions such "(b ? p : q).x" --- diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c index adb3bde9c4b..6a47585c7a1 100644 --- a/src/mesa/shader/slang/slang_emit.c +++ b/src/mesa/shader/slang/slang_emit.c @@ -1857,8 +1857,11 @@ emit_swizzle(slang_emit_info *emitInfo, slang_ir_node *n) inst = emit(emitInfo, n->Children[0]); - assert(n->Children[0]->Store == n->Store->Parent); - assert(n->Store->Parent); + if (!n->Store->Parent) { + /* this covers a case such as "(b ? p : q).x" */ + n->Store->Parent = n->Children[0]->Store; + assert(n->Store->Parent); + } { const GLuint swizzle = n->Store->Swizzle;