[Mesa-dev] [PATCH v2 5/5] i965: perf: enable GPA query statistics

Kenneth Graunke kenneth at whitecape.org
Tue Apr 17 07:09:20 UTC 2018


On Tuesday, April 3, 2018 7:48:13 AM PDT Lionel Landwerlin wrote:
> The combinaison of GPA/MDAPI components expects a particular name &
> layout for their pipeline statistics query.
> 
> v2: Limit the query GPA/MDAPI statistics to gen7->9 (Lionel)
> 
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
>  src/mesa/drivers/dri/i965/brw_performance_query.c  |  1 +
>  .../drivers/dri/i965/brw_performance_query_mdapi.c | 64 ++++++++++++++++++++++
>  .../drivers/dri/i965/brw_performance_query_mdapi.h |  2 +-
>  3 files changed, 66 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_performance_query.c b/src/mesa/drivers/dri/i965/brw_performance_query.c
> index aed85417845..a7e3f114d8a 100644
> --- a/src/mesa/drivers/dri/i965/brw_performance_query.c
> +++ b/src/mesa/drivers/dri/i965/brw_performance_query.c
> @@ -2144,6 +2144,7 @@ brw_init_perf_query_info(struct gl_context *ctx)
>        return brw->perfquery.n_queries;
>  
>     init_pipeline_statistic_query_registers(brw);
> +   brw_perf_query_register_mdapi_statistic_query(brw);
>  
>     oa_register = get_register_queries_function(devinfo);
>  
> diff --git a/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c b/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c
> index cc315ceb4f8..7e254e7a058 100644
> --- a/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c
> +++ b/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.c
> @@ -21,6 +21,7 @@
>   * IN THE SOFTWARE.
>   */
>  
> +#include "brw_defines.h"
>  #include "brw_performance_query.h"
>  #include "brw_performance_query_mdapi.h"
>  
> @@ -100,6 +101,20 @@ struct mdapi_gen9_metrics {
>     uint32_t Reserved4;
>  };
>  
> +struct mdapi_pipeline_metrics {
> +   uint64_t IAVertices;
> +   uint64_t IAPrimitives;
> +   uint64_t VSInvocations;
> +   uint64_t GSInvocations;
> +   uint64_t GSPrimitives;
> +   uint64_t CInvocations;
> +   uint64_t CPrimitives;
> +   uint64_t PSInvocations;
> +   uint64_t HSInvocations;
> +   uint64_t DSInvocations;
> +   uint64_t CSInvocations;
> +};
> +
>  int
>  brw_perf_query_get_mdapi_oa_data(struct brw_context *brw,
>                                   struct brw_perf_query_object *obj,
> @@ -377,3 +392,52 @@ brw_perf_query_register_mdapi_oa_query(struct brw_context *brw)
>        query->c_offset = copy_query->c_offset;
>     }
>  }
> +
> +void
> +brw_perf_query_register_mdapi_statistic_query(struct brw_context *brw)
> +{
> +   const struct gen_device_info *devinfo = &brw->screen->devinfo;
> +
> +   if (!(devinfo->gen >= 7 && devinfo->gen <= 9))
> +      return;
> +
> +   struct brw_perf_query_info *query = brw_perf_query_append_query_info(brw);
> +
> +   query->kind = PIPELINE_STATS;
> +   query->name = "Intel_Raw_Pipeline_Statistics_Query";
> +   query->n_counters = 0;
> +   query->counters =
> +      rzalloc_array(brw, struct brw_perf_query_counter, MAX_STAT_COUNTERS);
> +
> +   /* The order has to match mdapi_pipeline_metrics. */
> +   brw_perf_query_info_add_basic_stat_reg(query, IA_VERTICES_COUNT,
> +                                          "N vertices submitted");
> +   brw_perf_query_info_add_basic_stat_reg(query, IA_PRIMITIVES_COUNT,
> +                                          "N primitives submitted");
> +   brw_perf_query_info_add_basic_stat_reg(query, VS_INVOCATION_COUNT,
> +                                          "N vertex shader invocations");
> +   brw_perf_query_info_add_basic_stat_reg(query, GS_INVOCATION_COUNT,
> +                                          "N geometry shader invocations");
> +   brw_perf_query_info_add_basic_stat_reg(query, GS_PRIMITIVES_COUNT,
> +                                          "N geometry shader primitives emitted");
> +   brw_perf_query_info_add_basic_stat_reg(query, CL_INVOCATION_COUNT,
> +                                          "N primitives entering clipping");
> +   brw_perf_query_info_add_basic_stat_reg(query, CL_PRIMITIVES_COUNT,
> +                                          "N primitives leaving clipping");
> +   if (devinfo->is_haswell || devinfo->gen == 8)
> +      brw_perf_query_info_add_stat_reg(query, PS_INVOCATION_COUNT, 1, 4,
> +                                       "N fragment shader invocations",
> +                                       "N fragment shader invocations");
> +   else
> +      brw_perf_query_info_add_basic_stat_reg(query, PS_INVOCATION_COUNT,
> +                                             "N fragment shader invocations");

Braces around single statements that span multiple lines, please.

> +   brw_perf_query_info_add_basic_stat_reg(query, HS_INVOCATION_COUNT,
> +                                          "N TCS shader invocations");
> +   brw_perf_query_info_add_basic_stat_reg(query, DS_INVOCATION_COUNT,
> +                                          "N TES shader invocations");
> +   if (devinfo->gen >= 7)
> +      brw_perf_query_info_add_basic_stat_reg(query, CS_INVOCATION_COUNT,
> +                                             "N compute shader invocations");

Ditto.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

> +
> +   query->data_size = sizeof(uint64_t) * query->n_counters;
> +}
> diff --git a/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.h b/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.h
> index e6da3a279e6..42cb5654a4d 100644
> --- a/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.h
> +++ b/src/mesa/drivers/dri/i965/brw_performance_query_mdapi.h
> @@ -34,6 +34,6 @@ int brw_perf_query_get_mdapi_oa_data(struct brw_context *brw,
>                                       uint8_t *data);
>  
>  void brw_perf_query_register_mdapi_oa_query(struct brw_context *brw);
> -
> +void brw_perf_query_register_mdapi_statistic_query(struct brw_context *brw);
>  
>  #endif /* BRW_PERFORMANCE_QUERY_MDAPI_H */
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180417/1f0ce5e0/attachment.sig>


More information about the mesa-dev mailing list