gallium: remove pipe_driver_query_group_info field type
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) Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Tested-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
This commit is contained in:
parent
24dc0316b4
commit
ddf27a3dd0
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue