Why nVidia rocks where x.org does not.
by Ash Weststar on Nov.04, 2008, under Opposing view
I have been involved with the opensource community for some time and I have spent a lot of time messing with OpenGL (programming related). Over the years, I have heard things like ATi, Intel promoting, using open drivers, open specifications and people claiming they are superior for this reason.
However, if it’s so superior, why is it not one of these drivers, but nVidia’s fully support:
- OpenGL 2.1 with full hardware acceleration
- GLSL (OpenGL’s shader language) with full hardware acceleration
- pbuffers with full hardware acceleration
- Framebuffer objects with full hardware acceleration
- GLX 1.4 with full hardware acceleration
- Redirected Direct Rendering with full hardware acceleration
And before anyone tells me, Mesa doesn’t count – Mesa uses a software renderer. The problem is, none of the opensource drivers and any drivers that use the ‘correct’ specifications for driver hooks with x.org can do it all. It is currently and utterly impossible with the current state of x.org.
nVidia’s drivers just bypass the entire thing. X.org was built on a system that allows completely overridable function tables, granting the capability for a truely modular system for those ‘just in case’ scenarios and what a mighty grand feature it is, because the nVidia drivers essentially just hook into so many pieces of x.org that barely nothing of the original X is left. There was no better way to implement full support for the above, DRI and DRM, having to full back onto such ‘dirty’ methods.
The major difference between X’s with it’s (semi-)opensource drivers and nVidia’s driver is that nVidia actually has a full, unified, hardware accelerated, memory manager. Without a memory manager, it’s practically impossible to allocate offscreen buffers, which prevents the use of fbos, pbuffers or even unify 2d and 3d accelerated rendering together (no redirected direct rendering).
Meanwhile, I have to listen to people in the opensource community raving about stuff like AIGLX (indirect GLX rendering), completely confusing the situation. The indirect rendering technology is when 3D accelerated applications delegate all their functions completely unaccelerated to the X server instead of talking directly to the 3D driver. Because in the current X implementation, only one thing can be accelerated at a time without a memory manager.
Once the X server receives the indirectly rendered items, it tires to accelerate it by passing it to the 3d driver, however, this suffers performance issues due to technical implementation issues from indirect rendering. By forcing all 3D applications to use indirect rendering, it avoids the whole need for a memory manager because the X server behaves as a catch all point for all 3D and 2D rendering.
People in the opensource community claim that there is no real performance penalty because of certain accelerated features, despite the fact 3D applications are just slowed down because they have to use non/semi-accelerated indirect rendering (depends on the driver). During this time, nVidia has been providing a driver all this time that could do hardware accelerated direct rendering and redirected rendering (as opposed to indirect), all these numerous features. The opensource community have been ignoring the issues with X and stuck to the strict guideline of how drivers are “supposed to be built” and have made large workarounds with the current architecture rather than redesigning the driver API model to fully accommodate changes that the nVidia driver does.
x.org is trapped in it’s situation where they cannot change the way certain things are done, because of vocal powers in the foundation that demand that things should stay compliant to a specification and they should work around the architecture rather than strip out certain pieces and implement them, add proper new features (memory management and API functions to go with it). nVidia in the meantime just hook into so many parts of X, that the driver itself just practically replaces major pieces of X.
So, here I sit on my nVidia powered laptop, I have GLX and AIGLX disabled (they’re enabled by default in Kubuntu intrepid), despite having certain kwin features enabled which require features from AIGLX/GLX and my system currently has better performance without GLX/AIGLX enabled since the nVidia hooks in x.org provide all that and far better acceleration.
I have no weird performance issues, I don’t have odd CPU usage issues with X or plasma/kwin/compiz (if you do with a nVidia card, disable GLX/AIGLX) and I don’t have odd glitching which tends to be common with other drivers.
Funny note, my Windows games that I run under Wine/Crossover games actually are performing better with better quality than under Windows, despite the fact that wine/Crossover games has actively translate DXSL to GLSL in realtime, not have a graphical interface in ring-0 like Windows, but this might be purely due to the fact I use a nVidia driver on Linux.
While you recently had your problems on the run, they’ve regrouped and are making another attack.
November 4th, 2008 on 19:09:07
The other (to me) major reason nVidia rocks is stereography.
Would be interested to know whether their linux drivers support that. the windows ones do, and it’s their best feature, bar none. None of the competition has stereo-3D drivers.
Yay, nVidia!
November 4th, 2008 on 19:40:02
There is OpenGL API-based/extensions for stereography support in the nVidia drivers on Linux (that other drivers don’t have). However, I couldn’t tell you if it’s the same or has disadvantages – since, I’ve never played with it on either platform.
November 15th, 2008 on 01:13:38
This explains a lot. A friend of mine who works at ATI had a lot of not so nice things to say about the X architecture and how it was fundamentally broken. It looks like nVidia basically just did an end-run around everything to fix it. It’s too bad that the Xorg developers don’t take them seriously and just fix their architecture.
November 15th, 2008 on 01:34:32
Stereo support
I believe the stereo support in the linux drivers only work with the higher end workstation class graphics cards(quadro series) not the consumer/gaming cards(geforce series).
The quadro series for workstations tended to have a lot of additional professional video and engineering capabilities (stereo, quad buffering, externally driven multi out synchronized vsync, full acceleration on all outputs) and supported extra extensions or better drivers for accelerating CAD, modeling, video/photo editing and processing. I think they also have or had better 2D acceleration and tended to have more memory.
The downside of the quadro tended to be the higher price and lower clock speeds. And even at the same clock speeds(mid-high end geforce vs matching high end quadro for clock speed) they tended to have less tri-fills per sec. Which, if you are buying a card for generic multimedia or gaming was less powerful, and much worse for the performance/price ratio. I have not checked lately so the performance, feature, and price gap between the two series may have closed some.
November 15th, 2008 on 03:15:28
x.org needs to follow the X11 standard.
I think most of the problem stems from the fact that x.org needs to follow the X11 standard. The X11 standard specifies how a GUI server (x.org) functions, and how it communicates with GUI clients (applications).
If x.org doesn’t follow the X11 standard, then it wouldn’t be x.org. Perhaps what we need is something else entirely. A GUI standard to replace the X11 standard, and a server to replace x.org. I don’t see it happening soon, but there are other instances too where X11 is holding back the Linux GUI.
November 15th, 2008 on 04:52:13
Re: x.org needs to follow the X11 standard.
It isn’t a x11 protocol issue. It’s a x.org architecture issue, as you can see, the applications running under x.org with nVidia drivers are using the native x11 protocol (with x11′s various extensions), nothing more.
the nVidia drivers just provide the x11 applications which are running under this heavily modified x.org server the capabilities to do what they want.
Nah, x11 protocol isn’t holding back Linux, it’s quite flexible. Unfortunately xfree86 and x.org don’t have the right architecture at this moment to handle current technologies in a better way.
November 15th, 2008 on 13:05:22
Memory manager
Fortunately, we’re soon getting a graphics memory manager.
Upcoming Linux kernel 2.6.28 includes GEM (Graphics Execution Manager).