While the Gallium3D driver to provide 3D/OpenGL acceleration (along with OpenCL, OpenVG, OpenGL ES and other accelerated APIs through the state tracker interface) will not be released right away as this is where the bulk of the development is still taking place, the Nouveau driver already has many advantages over what it is replacing: xf86-video-nv. The xf86-video-nv driver is NVIDIA's attempt at an open-source driver in the way of just providing very basic user mode-setting for their hardware and limited 2D acceleration. That's about it for the features of this driver with no RandR 1.2 support or any other DDX features found in most other drivers.
Besides adding in new PCI IDs and other small maintenance work that happens to this driver infrequently, not a lot of major work happens to this driver in starch contrast to the Intel and ATI DDX. In total for 2009 there has been just 30 commits to the xf86-video-nv Git repository and those commits touched just a few hundred lines of code, but even most of that work was just adding some product prefixes to some build warnings that are generated and then dropping older symbol lists that are now unused. In 2008 there were 48 commits to this driver, but most of that work too was just simple changes. If this wasn't bad enough, the code in xf86-video-nv driver is obfuscated, even though there isn't a lot of IP tucked away within this feature-limited driver. The xf86-video-nv driver just doesn't have any future compared to the Nouveau driver.
With the Nouveau driver, for all supported GPU generations going back to the NV04 there is completed 2D EXA acceleration, X Render acceleration (except for the NV04/05 where its not physically possible), X-Video acceleration, RandR 1.2 support, kernel mode-setting, console restore support, NouveauFB, and suspend-and-resume support. Being worked on still is TV-Out, dual-link DVI, and power management support.
A few months back when we interviewed NVIDIA's Andy Ritger we asked him about the situation for this driver:
Q: Are there any plans in place to provide new features within the xf86-video-nv driver or to better engage with the Nouveau developers for some open-source support?
With the nv driver, we've always tried to provide something minimal that just works out of the box and requires the least maintenance. For that reason, feature set in the nv driver has stayed pretty slim.
The guys working on nouveau have done a really incredible job so far. However, our policy remains the same: we won't try to hinder their efforts, but we have no plans to help them.
But what will NVIDIA do once a majority of the Linux distributions are shipping with Nouveau support? This will likely be in 2010. X.Org 7.6 is scheduled to be released in October of 2010 and a stable release of xf86-video-nouveau should certainly make it out by then, at which point the xf86-video-nouveau will likely be accepted as part of the X.Org package set and this would mean the demotion of the xf86-video-nv driver since there cannot be two drivers providing support for the same hardware.
The xf86-video-nv driver may find some life past Linux though with *BSD and OpenSolaris users until the TTM memory manager and other interfaces are ported over to their kernels which would allow the Nouveau driver to then function on those platforms, but even there NVIDIA's binary driver is available and is widely used.
What will NVIDIA do once there are no major users of the xf86-video-nv driver? (Granted, our 2009 Linux Graphics Survey already shows more -nouveau users than -nv, but both percentages are quite low right now.) We asked NVIDIA this morning how they plan to handle the situation, but so far there have been no comments. There are a few possibilities for what could happen:
- NVIDIA just outright quits committing any code at all to the xf86-video-nv driver and it goes the way of the XGI Linux driver and others.
- NVIDIA continues adding basic mode-setting support for new GPUs to this driver knowing that it is not widely being used, but that the Nouveau developers will likely look over this code for possible information in supporting new ASICs under their driver (although most of the Nouveau driver is developed through clean-room reverse engineering of the NVIDIA binary driver). This is the approach NVIDIA would use if they wish to not be associated at all with the Nouveau project.
- NVIDIA begins contributing basic support for new hardware to the Nouveau driver. This, of course, would be ideal.
- NVIDIA begins supporting the Nouveau project in some capacity other than code contributions.
- NVIDIA just provides no open-source contributions at all for new hardware.
What NVIDIA will actually do though is not yet known and may not even be known internally at NVIDIA Corp if they are waiting to see how the Nouveau situation pans out and how quickly it is adopted. It will be interesting to see how NVIDIA handles this situation especially as Intel and AMD continue to play quite well with the open-source Linux community with documentation drops, supporting developers, and continuing to advance their free software drivers at a brisk pace.
Share with us what you think NVIDIA will end up doing in this situation.