[Mesa-dev] [PATCH 1/2] tgsi/scan: count memory instructions
Brian Paul
brianp at vmware.com
Tue Feb 23 16:51:56 UTC 2016
On 02/23/2016 09:45 AM, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at 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 <brianp at vmware.com>
More information about the mesa-dev
mailing list