Hello, This patch adds new ioctls to expose GPU counters to userspace. These will be used by the mesa driver (should be posted soon).
A few words about the implementation: I followed the VC4/Etnaviv model where perf counters are retrieved on a per-job basis. This allows one to have get accurate results when there are users using the GPU concurrently. AFAICT, the mali kbase is using a different approach where several users can register a performance monitor but with no way to have fined grained control over what job/GPU-context to track. This design choice comes at a cost: every time the perfmon context changes (the perfmon context is the list of currently active perfmons), the driver has to add a fence to prevent new jobs from corrupting counters that will be dumped by previous jobs. Let me know if that's an issue and if you think we should approach things differently. Regards, Boris Boris Brezillon (3): drm/panfrost: Move gpu_{write,read}() macros to panfrost_regs.h drm/panfrost: Expose HW counters to userspace panfrost/drm: Define T860 perf counters drivers/gpu/drm/panfrost/Makefile | 3 +- drivers/gpu/drm/panfrost/panfrost_device.c | 8 + drivers/gpu/drm/panfrost/panfrost_device.h | 11 + drivers/gpu/drm/panfrost/panfrost_drv.c | 22 +- drivers/gpu/drm/panfrost/panfrost_gpu.c | 46 +- drivers/gpu/drm/panfrost/panfrost_job.c | 24 + drivers/gpu/drm/panfrost/panfrost_job.h | 4 + drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 954 ++++++++++++++++++++ drivers/gpu/drm/panfrost/panfrost_perfcnt.h | 59 ++ drivers/gpu/drm/panfrost/panfrost_regs.h | 22 + include/uapi/drm/panfrost_drm.h | 122 +++ 11 files changed, 1268 insertions(+), 7 deletions(-) create mode 100644 drivers/gpu/drm/panfrost/panfrost_perfcnt.c create mode 100644 drivers/gpu/drm/panfrost/panfrost_perfcnt.h -- 2.20.1 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel