[Mesa-dev] [PATCH 00/15] GL_AMD_performance_monitor

Robert Bragg robert at sixbynine.org
Thu Mar 19 15:40:17 PDT 2015


Hi Samuel,

I thought I should let you and others know of some related changes
I've been playing around with to try and improve our support for the
INTEL_performance_query extension in the i965 dri driver, since it's
quite related to your work.

Some of my work-in-progress changes can currently be seen on github here:
https://github.com/rib/mesa/commits/wip/rib/i915_oa_perf

I've only recently scrubbed up these mesa changes enough for reviewing
to make much sense, so sorry I haven't sent out an RFC to the list
before now about this.

What I was finding is that it's not very helpful in practice to
support the AMD_performance_monitor + INTEL_performance query
extensions via the same core infrastructure and so since there weren't
previously any other drivers implementing AMD_performance_monitor, my
series currently just drops the combined infrastructure in favour of
core support for just INTEL_performance_query.

The main thing here that might be interesting to think about with
respect to your work, is whether you might like to do anything
differently with the main/performance_monitor.c support if you were
the only user and if it strictly only dealt with the
AMD_performance_monitor extension?

I don't guess it would be controversial for us to look at removing the
current i965 backend for both AMD_performance_monitor and
INTEL_performance_query for an interim if that might be convenient for
you to evolve the backend interface. (Currently the i965 backend
doesn't report many usable metrics unfortunately - mainly just the
pipeline statistics that are also accessible via query objects.) Ken
and Petri who did much of the work here are already aware that I've
been taking this approach as I ran it by them some time ago and their
work still carries forward in the series I have but instead focused
only on INTEL_performance_query for now.

Anyway, I just thought I should throw that out there as a possibility
to consider in case it might be helpful.

Kind regards,
- Robert


On Wed, Mar 18, 2015 at 4:00 PM, Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
> Bump, is someone want to make a review of this patch set ? Especially the
> "core" stuff...
>
>
> On 03/09/2015 10:09 PM, Samuel Pitoiset wrote:
>>
>> Hello,
>>
>> A series I have waited too long to re-submit, but I recently refactored
>> the
>> code and fixed some minor issues.
>>
>> This patchset enables GL_AMD_performance_monitor for svga, freedreno,
>> r600,
>> radeonsi and nvc0 drivers.
>>
>> This code has been tested with Nouveau (NVD9 and NVE7) but it should also
>> work
>> with other drivers. All piglit tests, including API and measurement tests
>> are
>> okay.
>>
>> Feel free to make a review.
>>
>> Christoph Bumiller (1):
>>    st/mesa: implement GL_AMD_performance_monitor
>>
>> Samuel Pitoiset (14):
>>    gallium: add pipe_screen::get_driver_query_group_info
>>    gallium: add new fields to pipe_driver_query_info
>>    gallium: add new numeric types to pipe_query_result
>>    gallium: replace pipe_driver_query_info::max_value by a union
>>    gallium: make pipe_context::begin_query return a boolean
>>    gallium: add util_get_driver_query_group_info
>>    svga: implement pipe_screen::get_driver_query_group_info
>>    freedreno: implement pipe_screen::get_driver_query_group_info
>>    radeon: implement pipe_screen::get_driver_query_group_info
>>    nvc0: implement pipe_screen::get_driver_query_group_info
>>    docs: mark GL_AMD_performance_monitor for the 10.6.0 release
>>    nvc0: expose more driver-specific query groups
>>    nvc0: make begin_query return false when all MP counters are used
>>    nvc0: all queries use an unsigned 64-bits integer by default
>>
>>   docs/relnotes/10.6.0.html                          |   1 +
>>   src/gallium/auxiliary/Makefile.sources             |   1 +
>>   src/gallium/auxiliary/hud/hud_driver_query.c       |   2 +-
>>   src/gallium/auxiliary/util/u_query.c               |  50 +++
>>   src/gallium/auxiliary/util/u_query.h               |  45 ++
>>   src/gallium/docs/source/screen.rst                 |  10 +
>>   src/gallium/drivers/freedreno/freedreno_query.c    |  25 +-
>>   src/gallium/drivers/freedreno/freedreno_query.h    |   3 +-
>>   src/gallium/drivers/freedreno/freedreno_query_hw.c |   3 +-
>>   src/gallium/drivers/freedreno/freedreno_query_sw.c |   3 +-
>>   src/gallium/drivers/galahad/glhd_context.c         |   6 +-
>>   src/gallium/drivers/i915/i915_query.c              |   3 +-
>>   src/gallium/drivers/ilo/ilo_query.c                |   3 +-
>>   src/gallium/drivers/llvmpipe/lp_query.c            |   3 +-
>>   src/gallium/drivers/noop/noop_pipe.c               |   3 +-
>>   src/gallium/drivers/nouveau/nv30/nv30_query.c      |   5 +-
>>   src/gallium/drivers/nouveau/nv50/nv50_query.c      |   3 +-
>>   src/gallium/drivers/nouveau/nvc0/nvc0_query.c      |  98 ++++-
>>   src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |   1 +
>>   src/gallium/drivers/nouveau/nvc0/nvc0_screen.h     |  14 +
>>   src/gallium/drivers/r300/r300_query.c              |   9 +-
>>   src/gallium/drivers/radeon/r600_pipe_common.c      |  25 +-
>>   src/gallium/drivers/radeon/r600_pipe_common.h      |   1 +
>>   src/gallium/drivers/radeon/r600_query.c            |  16 +-
>>   src/gallium/drivers/rbug/rbug_context.c            |   8 +-
>>   src/gallium/drivers/softpipe/sp_query.c            |   3 +-
>>   src/gallium/drivers/svga/svga_context.h            |   1 +
>>   src/gallium/drivers/svga/svga_pipe_query.c         |   3 +-
>>   src/gallium/drivers/svga/svga_screen.c             |  17 +-
>>   src/gallium/drivers/trace/tr_context.c             |   6 +-
>>   src/gallium/include/pipe/p_context.h               |   2 +-
>>   src/gallium/include/pipe/p_defines.h               |  34 +-
>>   src/gallium/include/pipe/p_screen.h                |  11 +
>>   src/mesa/Makefile.sources                          |   2 +
>>   src/mesa/state_tracker/st_cb_perfmon.c             | 455
>> +++++++++++++++++++++
>>   src/mesa/state_tracker/st_cb_perfmon.h             |  70 ++++
>>   src/mesa/state_tracker/st_context.c                |   4 +
>>   src/mesa/state_tracker/st_extensions.c             |   3 +
>>   38 files changed, 885 insertions(+), 67 deletions(-)
>>   create mode 100644 src/gallium/auxiliary/util/u_query.c
>>   create mode 100644 src/gallium/auxiliary/util/u_query.h
>>   create mode 100644 src/mesa/state_tracker/st_cb_perfmon.c
>>   create mode 100644 src/mesa/state_tracker/st_cb_perfmon.h
>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list