On 02/23/2016 09:45 AM, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

for radeonsi
---
  src/gallium/auxiliary/tgsi/tgsi_scan.c | 19 +++++++++++++++++++
  src/gallium/auxiliary/tgsi/tgsi_scan.h |  1 +
  2 files changed, 20 insertions(+)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c 
b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index 4f85d2f..8e24cc6 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -43,6 +43,15 @@
  #include "tgsi/tgsi_scan.h"


+static bool
+is_memory_file(unsigned file)
+{
+   return file == TGSI_FILE_SAMPLER ||
+          file == TGSI_FILE_SAMPLER_VIEW ||
+          file == TGSI_FILE_IMAGE ||
+          file == TGSI_FILE_BUFFER;
+}
+

  static void
  scan_instruction(struct tgsi_shader_info *info,
@@ -50,6 +59,7 @@ scan_instruction(struct tgsi_shader_info *info,
                   unsigned *current_depth)
  {
     unsigned i;
+   bool is_mem_inst = false;

     assert(fullinst->Instruction.Opcode < TGSI_OPCODE_LAST);
     info->opcode_count[fullinst->Instruction.Opcode]++;
@@ -181,6 +191,9 @@ scan_instruction(struct tgsi_shader_info *info,
              info->is_msaa_sampler[src->Register.Index] = TRUE;
           }
        }
+
+      if (is_memory_file(src->Register.File))
+         is_mem_inst = true;
     }

     /* check for indirect register writes */
@@ -190,8 +203,14 @@ scan_instruction(struct tgsi_shader_info *info,
           info->indirect_files |= (1 << dst->Register.File);
           info->indirect_files_written |= (1 << dst->Register.File);
        }
+
+      if (is_memory_file(dst->Register.File))
+         is_mem_inst = true;
     }

+   if (is_mem_inst)
+      info->num_memory_instructions++;
+
     info->num_instructions++;
  }

diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h 
b/src/gallium/auxiliary/tgsi/tgsi_scan.h
index 0541255..d65dec7 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h
@@ -74,6 +74,7 @@ struct tgsi_shader_info

     uint immediate_count; /**< number of immediates declared */
     uint num_instructions;
+   uint num_memory_instructions; /**< sampler, buffer, and image instructions 
*/

     uint opcode_count[TGSI_OPCODE_LAST];  /**< opcode histogram */



Reviewed-by: Brian Paul <bri...@vmware.com>

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to