Proprietary graphics drivers - binary blight or necessary evil? Chris Thornett interviews Andy Ritger, the guardian of Nvidia’s Linux Graphics Driver.
Linux Format: What are the challenges of supplying Linux drivers for your graphics cards?
Andy Ritger: On Linux, we stress the system in ways that very few others do. This can expose latent bugs in the kernel or elsewhere. But overall, Linux is a great, flexible, development platform.
One specific challenge stems from distribution model; because we leverage our graphics driver code base across many different operating systems, we maintain our driver code base out-of-tree relative to the Linux kernel. Even setting aside licensing, this has some pros and cons:
- Our driver code base runs across a wide spectrum of Linux distributions … though it is inconsistent with the Linux model of deploying new hardware support through upgrading your kernel.
- We [also] have to make conscious decisions about what kernel features we use, and whether those features are available everywhere our customers expect them to be.
- Our driver is out of tree and our user-space components are deployed in lock-step with our kernel components, so we have flexibility to revise the interface between our driver components more easily.
LXF: Are there any developments in recent years that have made supporting Linux more viable?
AR: It isn’t so much about developments in technologies that makes supporting Linux more practical, it’s more about the increased market interest in Linux that has unlocked some chicken-and-egg logjams; improvements for Nvidia OpenGL developer tools and added bandwidth in driver engineers for driver development are enabled by increased market demand.
Linux for gaming is growing, and quickly … Most recently, we have been working closely with Valve on the SteamOS – our engineers combined have focused efforts on improving driver performance for OpenGL; optimising performance on Nvidia GPUs, porting Valve’s content library to SteamOS; and tuning SteamOS to lower latency, or lag, between the controller and onscreen action.
LXF: Would you say you’ve increased your Linux support in recent years?
AR: Over the past couple of years, we have worked diligently towards giving our GeForce customers the best possible Linux-based PC gaming experience, and we believe that the world’s biggest open-source operating system has enormous potential. Some specific examples of our recent support includes:
- Multi-threaded performance optimisations within the OpenGL driver. With these optimisations, we have seen some amazing results of up to a 2x increase in some games.
- Per-application configurability, so that we can do more application-specific tuning, where appropriate.
- OpenGL extensions to aid in migrating Direct3D applications to OpenGL. Some examples: GL_ARB_provoking_vertex and GL_ARB_fragment_coord_conventions.
- Leverage of the OpenGL driver code base for Nvidia GPUs across Windows, OSX, and Linux. As a result, a lot of general consumer graphics performance tuning is already done in the Nvidia Linux OpenGL driver.
- As the Linux desktop ecosystem evolves and EGL/GLES becomes a standard part of the runtime environment, it becomes simpler to port iOS/Android applications to desktop Linux. We provide GLES compatibility profiles through our OpenGL driver today, and EGL support is enabled in our 331.xx driver release series.
- Support for OpenGL 4.4
- HDMI 4K support
We’re also working to define a new Linux OpenGL ABI that will make it easier for OpenGL vendors to install their driver without colliding with other installations on the system.
Note: Ritger offers a good explanation of this at XDC2013
We’re also very active in the Khronos EGL working group, helping drive EGL to be something really compelling on desktop Linux systems.
[Note: EGL aims to create an official cross-platform standard to either replace or abstract around the different windowing APIs, such as WGL in Windows, GLX on Linux and Apple’s Core GL.]
LXF: Can you imagine a time where you could release drivers that can be modified by the community?
AR: Nothing is impossible, but I think a more realistic path is for us to enable the nouveau development community to continue to improve the nouveau driver for Nvidia GPUs. We’ve started taking baby-steps in that direction, but are working towards being able to provide more meaningful assistance to Nouveau over time.
LXF: How do you view open source drivers?
AR: Our drivers have IP in them that we do not wish to share. We will continue to develop our own Linux drivers, with a quality that is unrivalled.
However, there is a place for both Nouveau and Nvidia’s proprietary driver: Nouveau for an out-of-the-box experience when an Nvidia customer installs a new Linux OS [and] Nvidia’s proprietary driver provides Nvidia customers with the best possible performance and feature set from our leveraged cross-platform driver code. base.
You should follow us on Identi.ca or Twitter