[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