[Nouveau] [RFC 0/3] implement nouveau-perfKit

Samuel Pitoiset samuel.pitoiset at gmail.com
Tue Jun 2 13:15:01 PDT 2015


Hello,

A series I started a long time ago but now I need some feedbacks. :-)

This state tracker implements NVIDIA PerfKit 3.0.1 which is currently
only available on Windows 7+ for desktop graphics cards. A Linux/Android
implementation is provided by NVIDIA but only for NVIDIA Tegra K1.

This Gallium state tracker is loosely based on the VDPAU tracker and since
it uses the pipe_query interface, other drivers which expose performance
counters should be also able to expose them easily through PerfKit.

Unlike GL_AMD_performance_monitor, NVIDIA PerfKit allows to monitor
multi-passes events and the API supports different types of performance
counters (GPU, CPU, OpenGL).

Currently, only MP counters for NVC0:NVE4 Nouveau drivers are exposed.

To be able to use NVIDIA PerfKit from your OpenGL applications, you will
need to install the wrapper library which includes the headers of the API.

You can download this library from:
http://cgit.freedesktop.org/~hakzsam/libperfkit/

The wrapper library contains a large number of unit tests (~120) that helped
me to understand the API. More than 85% of test compliance for mesa.

Feel free to make a review of the perfkit state tracker and libperfkit.
Thanks!

Samuel Pitoiset (3):
  util: move LIST_FIRST_ENTRY from nv30_query.c to list.h
  util: add LIST_MOVE_TAIL to list.h
  st/perfkit: add a state tracker for NVIDIA PerfKit

 configure.ac                                       |  30 ++
 src/gallium/Makefile.am                            |   4 +
 src/gallium/drivers/nouveau/nv30/nv30_query.c      |   3 -
 src/gallium/state_trackers/perfkit/Makefile.am     |  41 ++
 .../state_trackers/perfkit/Makefile.sources        |   8 +
 src/gallium/state_trackers/perfkit/context.c       | 186 ++++++++
 src/gallium/state_trackers/perfkit/counter.c       | 522 +++++++++++++++++++++
 src/gallium/state_trackers/perfkit/device.c        |  91 ++++
 src/gallium/state_trackers/perfkit/entrypoint.c    |  78 +++
 src/gallium/state_trackers/perfkit/monitoring.c    | 360 ++++++++++++++
 .../state_trackers/perfkit/perfkit_private.h       | 145 ++++++
 src/gallium/state_trackers/perfkit/util.c          |  56 +++
 src/gallium/targets/dri-perfkit.dyn                |   3 +
 src/gallium/targets/perfkit/Makefile.am            | 123 +++++
 src/gallium/targets/perfkit/perfkit.sym            |   7 +
 src/gallium/targets/perfkit/target.c               |   1 +
 src/util/list.h                                    |  12 +
 17 files changed, 1667 insertions(+), 3 deletions(-)
 create mode 100644 src/gallium/state_trackers/perfkit/Makefile.am
 create mode 100644 src/gallium/state_trackers/perfkit/Makefile.sources
 create mode 100644 src/gallium/state_trackers/perfkit/context.c
 create mode 100644 src/gallium/state_trackers/perfkit/counter.c
 create mode 100644 src/gallium/state_trackers/perfkit/device.c
 create mode 100644 src/gallium/state_trackers/perfkit/entrypoint.c
 create mode 100644 src/gallium/state_trackers/perfkit/monitoring.c
 create mode 100644 src/gallium/state_trackers/perfkit/perfkit_private.h
 create mode 100644 src/gallium/state_trackers/perfkit/util.c
 create mode 100644 src/gallium/targets/dri-perfkit.dyn
 create mode 100644 src/gallium/targets/perfkit/Makefile.am
 create mode 100644 src/gallium/targets/perfkit/perfkit.sym
 create mode 100644 src/gallium/targets/perfkit/target.c

-- 
2.4.2



More information about the Nouveau mailing list