On 02/23/2016 09:45 AM, Marek Olšák wrote:
From: Marek Olšák <[email protected]>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 <[email protected]> _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
