From 248e6f03313afdfd3c23be269b0da7a1aa31cff2 Mon Sep 17 00:00:00 2001 From: Bryan Cain Date: Tue, 17 Jul 2012 23:46:39 -0500 Subject: [PATCH] nv50/ir: set position before i instead of i->next in NV50LoweringPreSSA::visit Fixes rendering glitches in Psychonauts such as Raz's eyes flickering white. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=51962. --- .../drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp b/src/gallium/drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp index 39e0cfa613d..3e0dc755d56 100644 --- a/src/gallium/drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp +++ b/src/gallium/drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp @@ -701,6 +701,7 @@ NV50LoweringPreSSA::handleTXL(TexInstruction *i) BasicBlock *texiBB = i->bb->splitBefore(i, false); BasicBlock *joinBB = i->bb->splitAfter(i); + bld.setPosition(currBB, true); currBB->joinAt = bld.mkFlow(OP_JOINAT, joinBB, CC_ALWAYS, NULL); for (int l = 0; l <= 3; ++l) { @@ -1030,13 +1031,7 @@ NV50LoweringPreSSA::checkPredicate(Instruction *insn) bool NV50LoweringPreSSA::visit(Instruction *i) { - if (i->prev) - bld.setPosition(i->prev, true); - else - if (i->next) - bld.setPosition(i->next, false); - else - bld.setPosition(i->bb, true); + bld.setPosition(i, false); if (i->cc != CC_ALWAYS) checkPredicate(i); -- 2.30.2