Mesa (master): tgsi/scan: don't treat RESQ etc. as memory instructions

Marek Olšák mareko at kemper.freedesktop.org
Mon Oct 24 19:42:03 UTC 2016


Module: Mesa
Branch: master
Commit: ac37720f51310ad0398c4cd5c8921da5c96a7c9d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ac37720f51310ad0398c4cd5c8921da5c96a7c9d

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sun Oct  9 19:18:51 2016 +0200

tgsi/scan: don't treat RESQ etc. as memory instructions

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/gallium/auxiliary/tgsi/tgsi_scan.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index e5edea8..66f1fdf 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -54,6 +54,16 @@ is_memory_file(unsigned file)
 }
 
 
+static bool
+is_mem_query_inst(unsigned opcode)
+{
+   return opcode == TGSI_OPCODE_RESQ ||
+          opcode == TGSI_OPCODE_TXQ ||
+          opcode == TGSI_OPCODE_TXQS ||
+          opcode == TGSI_OPCODE_TXQ_LZ ||
+          opcode == TGSI_OPCODE_LODQ;
+}
+
 /**
  * Is the opcode a "true" texture instruction which samples from a
  * texture map?
@@ -61,10 +71,7 @@ is_memory_file(unsigned file)
 static bool
 is_texture_inst(unsigned opcode)
 {
-   return (opcode != TGSI_OPCODE_TXQ &&
-           opcode != TGSI_OPCODE_TXQS &&
-           opcode != TGSI_OPCODE_TXQ_LZ &&
-           opcode != TGSI_OPCODE_LODQ &&
+   return (!is_mem_query_inst(opcode) &&
            tgsi_get_opcode_info(opcode)->is_tex);
 }
 
@@ -320,7 +327,8 @@ scan_instruction(struct tgsi_shader_info *info,
          }
       }
 
-      if (is_memory_file(src->Register.File)) {
+      if (is_memory_file(src->Register.File) &&
+          !is_mem_query_inst(fullinst->Instruction.Opcode)) {
          is_mem_inst = true;
 
          if (tgsi_get_opcode_info(fullinst->Instruction.Opcode)->is_store) {




More information about the mesa-commit mailing list