[Nouveau] [RFC PATCH 0/8] nv50: expose global performance counters
Samuel Pitoiset
samuel.pitoiset at gmail.com
Mon Jun 22 13:53:11 PDT 2015
Hello there,
This series exposes NVIDIA's global performance counters for Tesla through the
Gallium's HUD and the GL_AMD_performance_monitor extension.
This adds support for 24 hardware events which have been reverse engineered
with PerfKit (Windows) and CUPTI (Linux). These hardware events will allow
developers to profile OpenGL applications.
To reduce latency and to improve accuracy, these global performance counters
are tied to the command stream of the GPU using a set of software methods
instead of ioctls. Results are then written by the kernel to a mapped notifier
buffer object that allows the userspace to read back them.
However, the libdrm branch which implements the new nvif interface exposed by
Nouveau and the software methods interface are not upstream yet. I hope this
should done in the next days.
The code of this series can be found here:
http://cgit.freedesktop.org/~hakzsam/mesa/log/?h=nouveau_perfmon
The libdrm branch can be found here:
http://cgit.freedesktop.org/~hakzsam/drm/log/?h=nouveau_perfmon
The code of the software methods interface can be found here (two last commits):
http://cgit.freedesktop.org/~hakzsam/nouveau/log/?h=nouveau_perfmon
An other series which exposes global performance counters for Fermi and Kepler
will be submitted once I have got enough reviews for this one.
Feel free to make a review.
Thanks,
Samuel.
Samuel Pitoiset (8):
nouveau: implement the nvif hardware performance counters interface
nv50: allocate a software object class
nv50: allocate and map a notifier buffer object for PM
nv50: configure the ring buffer for reading back PM counters
nv50: prevent NULL pointer dereference with pipe_query functions
nv50: add support for compute/graphics global performance counters
nv50: expose global performance counters to the HUD
nv50: enable GL_AMD_performance_monitor
src/gallium/drivers/nouveau/Makefile.sources | 2 +
src/gallium/drivers/nouveau/nouveau_perfmon.c | 302 +++++++
src/gallium/drivers/nouveau/nouveau_perfmon.h | 59 ++
src/gallium/drivers/nouveau/nouveau_screen.c | 5 +
src/gallium/drivers/nouveau/nouveau_screen.h | 1 +
src/gallium/drivers/nouveau/nv50/nv50_query.c | 1148 +++++++++++++++++++++++-
src/gallium/drivers/nouveau/nv50/nv50_screen.c | 49 +
src/gallium/drivers/nouveau/nv50/nv50_screen.h | 51 ++
src/gallium/drivers/nouveau/nv50/nv50_winsys.h | 1 +
9 files changed, 1612 insertions(+), 6 deletions(-)
create mode 100644 src/gallium/drivers/nouveau/nouveau_perfmon.c
create mode 100644 src/gallium/drivers/nouveau/nouveau_perfmon.h
--
2.4.4
More information about the Nouveau
mailing list