[Mesa-dev] [PATCH] st/mesa: kill instruction if writemask=0 in eliminate_dead_code_advanced()
Brian Paul
brian.e.paul at gmail.com
Fri Oct 7 08:40:45 PDT 2011
From: Brian Paul <brianp at vmware.com>
This fixes a bug where we'd wind up emitting an invalid instruction like
MOVE R[0]., R[1]; - note the empty/zero writemask. If we don't write to
any dest register channels, cull the instruction.
---
src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index d8ef8a3..44b1149 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -3776,8 +3776,14 @@ glsl_to_tgsi_visitor::eliminate_dead_code_advanced(void)
iter.remove();
delete inst;
removed++;
- } else
+ } else {
inst->dst.writemask &= ~(inst->dead_mask);
+ if (inst->dst.writemask == 0) {
+ iter.remove();
+ delete inst;
+ removed++;
+ }
+ }
}
ralloc_free(write_level);
--
1.7.3.4
More information about the mesa-dev
mailing list