[Mesa-dev] [PATCH v3 00/10] GL_AMD_performance_monitor

Samuel Pitoiset samuel.pitoiset at gmail.com
Thu Apr 2 11:41:39 PDT 2015


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 nvc0 *only* because this
extension must only exposes GPU counters.

This code has been tested with Nouveau (NVD9 and NVE7). All piglit tests are
OK, except "test_counter_info" which fails because min_value is equal to
max_value for some queries. This is really a minor issue and this not clearly
mentionned in the spec. It can be fixed later.

Feel free to make a review.

Thanks to Marek and Martin for the previous reviews.

Changes since v2:

* add group type (CPU/GPU)
* fix incorrect query type for radeon and svga drivers
* only enable this extension when the underlying driver expose GPU counters
* remove support for svga, freedreno and radeon drivers because they don't
  expose ay GPU counters
* get rid of the ring buffer of queries
* fix nvc0 groups definition (DEBUG thing)

Changes since v1:

* add PIPE_DRIVER_QUERY_TYPE_BYTES (PATCH 02/15)
* rebased on master since galahad driver has been removed

Christoph Bumiller (1):
  st/mesa: implement GL_AMD_performance_monitor

Samuel Pitoiset (9):
  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
  nvc0: define driver-specific query groups
  docs: mark GL_AMD_performance_monitor on nvc0 for the 10.6.0 release
  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/hud/hud_driver_query.c       |   5 +-
 src/gallium/docs/source/screen.rst                 |  10 +
 src/gallium/drivers/freedreno/freedreno_query.c    |  16 +-
 src/gallium/drivers/freedreno/freedreno_query.h    |   2 +-
 src/gallium/drivers/freedreno/freedreno_query_hw.c |   3 +-
 src/gallium/drivers/freedreno/freedreno_query_sw.c |   3 +-
 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      | 102 ++++-
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |   1 +
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.h     |   8 +
 src/gallium/drivers/r300/r300_query.c              |   9 +-
 src/gallium/drivers/radeon/r600_pipe_common.c      |  16 +-
 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_pipe_query.c         |   3 +-
 src/gallium/drivers/svga/svga_screen.c             |   6 +-
 src/gallium/drivers/trace/tr_context.c             |   6 +-
 src/gallium/include/pipe/p_context.h               |   2 +-
 src/gallium/include/pipe/p_defines.h               |  43 ++-
 src/gallium/include/pipe/p_screen.h                |  11 +
 src/mesa/Makefile.sources                          |   2 +
 src/mesa/state_tracker/st_cb_perfmon.c             | 420 +++++++++++++++++++++
 src/mesa/state_tracker/st_cb_perfmon.h             |  64 ++++
 src/mesa/state_tracker/st_context.c                |   9 +
 31 files changed, 723 insertions(+), 66 deletions(-)
 create mode 100644 src/mesa/state_tracker/st_cb_perfmon.c
 create mode 100644 src/mesa/state_tracker/st_cb_perfmon.h

-- 
2.3.4



More information about the mesa-dev mailing list