[Mesa-dev] [PATCH v3 1/9] gallium: remove pipe_driver_query_group_info field type

Samuel Pitoiset samuel.pitoiset at gmail.com
Fri Nov 20 04:26:25 PST 2015


Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>


On 11/18/2015 12:49 PM, Nicolai Hähnle wrote:
> This was only used to implement an unnecessarily restrictive interpretation
> of the spec of AMD_performance_monitor. The spec says
>
>    A performance monitor consists of a number of hardware and software
>    counters that can be sampled by the GPU and reported back to the
>    application.
>
> I guess one could take this as a requirement that counters _must_ be sampled
> by the GPU, but then why are they called _software_ counters? Besides,
> there's not much reason _not_ to expose all counters that are available,
> and this simplifies the code.
>
> v3: add a missing change in the nouveau driver (thanks Samuel Pitoiset)
> ---
>   src/gallium/drivers/nouveau/nvc0/nvc0_query.c |  4 ----
>   src/gallium/include/pipe/p_defines.h          |  7 -------
>   src/mesa/state_tracker/st_cb_perfmon.c        | 30 ---------------------------
>   3 files changed, 41 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_query.c b/src/gallium/drivers/nouveau/nvc0/nvc0_query.c
> index edde57e..1f1270e 100644
> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_query.c
> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_query.c
> @@ -200,7 +200,6 @@ nvc0_screen_get_driver_query_group_info(struct pipe_screen *pscreen,
>      if (id == NVC0_HW_SM_QUERY_GROUP) {
>         if (screen->compute) {
>            info->name = "MP counters";
> -         info->type = PIPE_DRIVER_QUERY_GROUP_TYPE_GPU;
>
>            /* Because we can't expose the number of hardware counters needed for
>             * each different query, we don't want to allow more than one active
> @@ -224,7 +223,6 @@ nvc0_screen_get_driver_query_group_info(struct pipe_screen *pscreen,
>         if (screen->compute) {
>            if (screen->base.class_3d < NVE4_3D_CLASS) {
>               info->name = "Performance metrics";
> -            info->type = PIPE_DRIVER_QUERY_GROUP_TYPE_GPU;
>               info->max_active_queries = 1;
>               info->num_queries = NVC0_HW_METRIC_QUERY_COUNT;
>               return 1;
> @@ -234,7 +232,6 @@ nvc0_screen_get_driver_query_group_info(struct pipe_screen *pscreen,
>   #ifdef NOUVEAU_ENABLE_DRIVER_STATISTICS
>      else if (id == NVC0_SW_QUERY_DRV_STAT_GROUP) {
>         info->name = "Driver statistics";
> -      info->type = PIPE_DRIVER_QUERY_GROUP_TYPE_CPU;
>         info->max_active_queries = NVC0_SW_QUERY_DRV_STAT_COUNT;
>         info->num_queries = NVC0_SW_QUERY_DRV_STAT_COUNT;
>         return 1;
> @@ -245,7 +242,6 @@ nvc0_screen_get_driver_query_group_info(struct pipe_screen *pscreen,
>      info->name = "this_is_not_the_query_group_you_are_looking_for";
>      info->max_active_queries = 0;
>      info->num_queries = 0;
> -   info->type = 0;
>      return 0;
>   }
>
> diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
> index 7240154..7f241c8 100644
> --- a/src/gallium/include/pipe/p_defines.h
> +++ b/src/gallium/include/pipe/p_defines.h
> @@ -829,12 +829,6 @@ enum pipe_driver_query_type
>      PIPE_DRIVER_QUERY_TYPE_HZ           = 6,
>   };
>
> -enum pipe_driver_query_group_type
> -{
> -   PIPE_DRIVER_QUERY_GROUP_TYPE_CPU = 0,
> -   PIPE_DRIVER_QUERY_GROUP_TYPE_GPU = 1,
> -};
> -
>   /* Whether an average value per frame or a cumulative value should be
>    * displayed.
>    */
> @@ -864,7 +858,6 @@ struct pipe_driver_query_info
>   struct pipe_driver_query_group_info
>   {
>      const char *name;
> -   enum pipe_driver_query_group_type type;
>      unsigned max_active_queries;
>      unsigned num_queries;
>   };
> diff --git a/src/mesa/state_tracker/st_cb_perfmon.c b/src/mesa/state_tracker/st_cb_perfmon.c
> index 1bb5be3..4ec6d86 100644
> --- a/src/mesa/state_tracker/st_cb_perfmon.c
> +++ b/src/mesa/state_tracker/st_cb_perfmon.c
> @@ -65,27 +65,6 @@ find_query_type(struct pipe_screen *screen, const char *name)
>      return type;
>   }
>
> -/**
> - * Return TRUE if the underlying driver expose GPU counters.
> - */
> -static bool
> -has_gpu_counters(struct pipe_screen *screen)
> -{
> -   int num_groups, gid;
> -
> -   num_groups = screen->get_driver_query_group_info(screen, 0, NULL);
> -   for (gid = 0; gid < num_groups; gid++) {
> -      struct pipe_driver_query_group_info group_info;
> -
> -      if (!screen->get_driver_query_group_info(screen, gid, &group_info))
> -         continue;
> -
> -      if (group_info.type == PIPE_DRIVER_QUERY_GROUP_TYPE_GPU)
> -         return true;
> -   }
> -   return false;
> -}
> -
>   static bool
>   init_perf_monitor(struct gl_context *ctx, struct gl_perf_monitor_object *m)
>   {
> @@ -313,12 +292,6 @@ st_init_perfmon(struct st_context *st)
>      if (!screen->get_driver_query_info || !screen->get_driver_query_group_info)
>         return false;
>
> -   if (!has_gpu_counters(screen)) {
> -      /* According to the spec, GL_AMD_performance_monitor must only
> -       * expose GPU counters. */
> -      return false;
> -   }
> -
>      /* Get the number of available queries. */
>      num_counters = screen->get_driver_query_info(screen, 0, NULL);
>      if (!num_counters)
> @@ -339,9 +312,6 @@ st_init_perfmon(struct st_context *st)
>         if (!screen->get_driver_query_group_info(screen, gid, &group_info))
>            continue;
>
> -      if (group_info.type != PIPE_DRIVER_QUERY_GROUP_TYPE_GPU)
> -         continue;
> -
>         g->Name = group_info.name;
>         g->MaxActiveCounters = group_info.max_active_queries;
>         g->NumCounters = 0;
>

-- 
-Samuel


More information about the mesa-dev mailing list