[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