Roy Spliet - Project REclock: Extending Nouveau with Voltage and Frequency Scaling for NVA3/5/8

Over the years Nouveau has grown to become a serious open-source alternative for the closed-source binary drivers provided by NVIDIA, offering support for most graphics cards up to the current generation, nearing OpenGL 4.0 compatibility, supporting VDPAU accelerated video and even some form of Linux support for DirectX 9. Despite its broad API support, the most heard complaint about Nouveau is poor performance. In an attempt to bridge the performance gap between nouveau and NVIDIA's binary driver, I have worked on an EVoC project in an attempt to deliver clock and voltage adjustment for the GeForce Gx2x0 and Gx3x0, hopefully paving the way for future generations of GPUs. The process of adjusting clocks touches many areas of the GPU: subcomponents must be paused correctly, a vast amount of parameters for the memory subsystem need to be determined and correct synchronisation with the display subsystem is required to prevent buffer underruns during scanout. On some GPUs, this work has already resulted in a 50% increase in framerate for serious OpenGL workloads. In this presentation I attempt to give a high level insight in the full process of reclocking at the best of my understanding, give a status update on what does and does not work with the kernel patches I have prepared and I hope to conclude with some benchmark results while I push the boundaries of my braveness with a demo of reclocking on the GeForce G210m.

Slides Video