Series is Acked-by: Ilia Mirkin <imir...@alum.mit.edu> . TBH I haven't spent the time to figure out what all this stuff is, but these changes appear to be internally consistent :)
On Fri, Nov 20, 2015 at 2:28 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > This turns on GL_AMD_performance_monitor. > > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > --- > src/gallium/drivers/nouveau/nv50/nv50_query.c | 52 > ++++++++++++++++++++++ > src/gallium/drivers/nouveau/nv50/nv50_query.h | 6 +++ > .../drivers/nouveau/nv50/nv50_query_hw_metric.c | 2 +- > .../drivers/nouveau/nv50/nv50_query_hw_sm.c | 2 +- > src/gallium/drivers/nouveau/nv50/nv50_screen.c | 1 + > src/gallium/drivers/nouveau/nv50/nv50_screen.h | 2 + > 6 files changed, 63 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query.c > b/src/gallium/drivers/nouveau/nv50/nv50_query.c > index 6b3e49a..4cd3b61 100644 > --- a/src/gallium/drivers/nouveau/nv50/nv50_query.c > +++ b/src/gallium/drivers/nouveau/nv50/nv50_query.c > @@ -27,6 +27,8 @@ > #include "nv50/nv50_context.h" > #include "nv50/nv50_query.h" > #include "nv50/nv50_query_hw.h" > +#include "nv50/nv50_query_hw_metric.h" > +#include "nv50/nv50_query_hw_sm.h" > > static struct pipe_query * > nv50_create_query(struct pipe_context *pipe, unsigned type, unsigned index) > @@ -178,3 +180,53 @@ nv50_screen_get_driver_query_info(struct pipe_screen > *pscreen, > > return nv50_hw_get_driver_query_info(screen, id, info); > } > + > +int > +nv50_screen_get_driver_query_group_info(struct pipe_screen *pscreen, > + unsigned id, > + struct pipe_driver_query_group_info > *info) > +{ > + struct nv50_screen *screen = nv50_screen(pscreen); > + int count = 0; > + > + if (screen->compute) > + if (screen->base.class_3d >= NV84_3D_CLASS) > + count += 2; > + > + if (!info) > + return count; > + > + if (id == NV50_HW_SM_QUERY_GROUP) { > + if (screen->compute) { > + if (screen->base.class_3d >= NV84_3D_CLASS) { > + info->name = "MP counters"; > + > + /* 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 query simultaneously to avoid failure when the maximum > + * number of counters is reached. Note that these groups of GPU > + * counters are currently only used by AMD_performance_monitor. > + */ > + info->max_active_queries = 1; > + info->num_queries = NV50_HW_SM_QUERY_COUNT; > + return 1; > + } > + } > + } else > + if (id == NV50_HW_METRIC_QUERY_GROUP) { > + if (screen->compute) { > + if (screen->base.class_3d >= NV84_3D_CLASS) { > + info->name = "Performance metrics"; > + info->max_active_queries = 1; > + info->num_queries = NV50_HW_METRIC_QUERY_COUNT; > + return 1; > + } > + } > + } > + > + /* user asked for info about non-existing query group */ > + info->name = "this_is_not_the_query_group_you_are_looking_for"; > + info->max_active_queries = 0; > + info->num_queries = 0; > + return 0; > +} > diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query.h > b/src/gallium/drivers/nouveau/nv50/nv50_query.h > index d990285..bd4c0a3 100644 > --- a/src/gallium/drivers/nouveau/nv50/nv50_query.h > +++ b/src/gallium/drivers/nouveau/nv50/nv50_query.h > @@ -28,6 +28,12 @@ nv50_query(struct pipe_query *pipe) > return (struct nv50_query *)pipe; > } > > +/* > + * Driver queries groups: > + */ > +#define NV50_HW_SM_QUERY_GROUP 0 > +#define NV50_HW_METRIC_QUERY_GROUP 1 > + > void nv50_init_query_functions(struct nv50_context *); > > #endif > diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query_hw_metric.c > b/src/gallium/drivers/nouveau/nv50/nv50_query_hw_metric.c > index 13dad30..d1bccb9 100644 > --- a/src/gallium/drivers/nouveau/nv50/nv50_query_hw_metric.c > +++ b/src/gallium/drivers/nouveau/nv50/nv50_query_hw_metric.c > @@ -198,7 +198,7 @@ nv50_hw_metric_get_driver_query_info(struct nv50_screen > *screen, unsigned id, > if (screen->base.class_3d >= NV84_3D_CLASS) { > info->name = nv50_hw_metric_names[id]; > info->query_type = NV50_HW_METRIC_QUERY(id); > - info->group_id = -1; > + info->group_id = NV50_HW_METRIC_QUERY_GROUP; > return 1; > } > } > diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c > b/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c > index e75b428..8453ce7 100644 > --- a/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c > +++ b/src/gallium/drivers/nouveau/nv50/nv50_query_hw_sm.c > @@ -408,7 +408,7 @@ nv50_hw_sm_get_driver_query_info(struct nv50_screen > *screen, unsigned id, > if (screen->base.class_3d >= NV84_3D_CLASS) { > info->name = nv50_hw_sm_query_names[id]; > info->query_type = NV50_HW_SM_QUERY(id); > - info->group_id = -1; > + info->group_id = NV50_HW_SM_QUERY_GROUP; > return 1; > } > } > diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > index cc7984d..1e4b75f 100644 > --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c > +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c > @@ -790,6 +790,7 @@ nv50_screen_create(struct nouveau_device *dev) > pscreen->get_paramf = nv50_screen_get_paramf; > pscreen->get_compute_param = nv50_screen_get_compute_param; > pscreen->get_driver_query_info = nv50_screen_get_driver_query_info; > + pscreen->get_driver_query_group_info = > nv50_screen_get_driver_query_group_info; > > nv50_screen_init_resource_functions(pscreen); > > diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.h > b/src/gallium/drivers/nouveau/nv50/nv50_screen.h > index c2a16d8..2a4983d 100644 > --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.h > +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.h > @@ -117,6 +117,8 @@ nv50_screen(struct pipe_screen *screen) > > int nv50_screen_get_driver_query_info(struct pipe_screen *, unsigned, > struct pipe_driver_query_info *); > +int nv50_screen_get_driver_query_group_info(struct pipe_screen *, unsigned, > + struct > pipe_driver_query_group_info *); > > bool nv50_blitter_create(struct nv50_screen *); > void nv50_blitter_destroy(struct nv50_screen *); > -- > 2.5.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev