NVidia and Linux Troubles
The following was written by Frank LaMonica, who besides his work to better 3D on Linux, I'm told he also plays guitar much better then me ;)
NVIDIA developed a driver for its TNT chipset that rendered indirectly through the XFree86 3.3.x X Server. That driver used a clone version of GLX that was developed by Terence Ripperda, was released with source code, but was, by NVIDIA's own admission, an interim driver intended as a short term solution. They placed information on their web site which announced their plans to release a DRI based driver at some time in the future. They recently made a joint announcement with SGI and VA Linux to publicize their upcoming binary only XFree86 4.0 compatible driver. Although the binary nature of their driver presents its own problems, especially with distribution, code maintenance, and support, we have to acknowledge that some companies believe their IP needs to be kept confidential in order to protect the interests of their owners. If customers trust that their interests will be maintained adequately by the vendor of their closed source software, the mechanism exists under Linux to allow that to happen. XFree86 4.0 has the capability to dynamically load binary drivers, so it is possible for anyone to develop a binary only driver.
A question was raised as to whether their upcoming binary driver was based on the Direct Rendering Infrastructure (DRI) which PI developed and that will be part of XFree86 4.0, or, if their upcoming driver would use its own, closed source, proprietary infrastructure. If NVIDIA creates its own closed source, proprietary infrastructure, that violates that basic premise of the open source paradigm - that the "road" which all users must use needs to be open sourced and freely available. An open source, "tax free" infrastructure is the only way to protect all of us from having any single company control key interfaces to diverse technology in a computer system. The MicroSoft model is not acceptable under Linux. If it were, we'd stick with MicroSoft - they are well funded, have a huge amount of resources, and represent a smaller risk to the end user.
The most serious danger to the open source community is the proliferation of a closed source, proprietary infrastructure. An obvious example of a problem caused by multiple graphics infrastructures is how to handle heterogeneous multi-head environments. A common infrastructure will allow multiple graphics devices to cooperate at run time. That common infrastructure had better be open sourced, or we'll find ourselves locked into a proprietary solution - and probably not one that we control! The DRI is fully open sourced, and was designed to be extensible. SGI actually helped to fund the DRI and a large part of its design was structured to allow future support for high end graphics cards. Many 3rd parties are developing drivers and adding infrastructure to the DRI. If the DRI doesn't support particular hardware in its current form, adding new graphics chipset support is considerably less expensive and time consuming that creating an entirely different infrastructure.
I was told by Jay Stocki, NVIDIA's software manager, that NVIDIA would not be using the DRI for its upcoming binary driver. If they have decided to use the DRI, or if they intend to release their source code, it would be nice to hear from NVIDIA directly so we can all know the answer to those questions.
I bought a TNT2 card for my machine, based on NVidia's actions at the time -- they were doing the Right Thing (my opinion, anyway). Then, the obfuscated code came, and the releases slowed. Finally in January they released a newer driver. Yes, it gave me 32 bit color, but the 3d performance was atrocious, and the Utah-GLX folks couldn't make much headway with the munged code. I waited for XFree86 4.0, though, believing that NVidia would make right, releasing a decent driver that took advantage of nice things like DRI.
Now it's not completely certain that they'll ditch the standard pipeline in XFree86 4.0, but the tone of the article suggests that. I wonder if I can talk them in to buying back my card. Matrox is looking better and better all the time. Sure, maybe NVidia gets better benchmarks, but when the company cannot put out drivers that let me run Q3 and will not put out drivers that the community can improve, well, they've lost the right to have my business.
Anyone with me?
--
how to invest, a novice's guide
Geek rants since like... 2000 or something.
I finally got off the dime and bought a Matrox G400. Not the fastest 3D, but I'm not a hardcore gamer. The main selling factors to me were:
1: Linux and Open Source support
2: Image quality
3: Decent 3D performance
4: Legacy support (liftime for THIS card)
Some card based on the nVidia TNT2 would have been a STRONG contender, and a great price/performance choice. I might even have tried to spring for a GeForce, especially an SDR after DDR became The Next Great Thing.
But I want Open Source drivers. I want the responsiveness of the community. I want the chance to fix it myself. (If/when my employer clears up the IP issues.) I don't want drivers coming out on/behind the Windows driver schedule.
Precisely because of Open Source, nVidia just lost a sale, and Matrox gained one.
The living have better things to do than to continue hating the dead.
NVidia is going to take a lot of heat from the Open Source community over this. But the reason why its closed source is because they're stuck between a rock and a hard place.
... *BUT* ... (this is a
:).
The AGP DMA technology their cards use is licensed from this other company (forgot their name). They signed an NDA to get this technology. DMA plays a huge roll in a 3D card's driver, ESPECIALLY if its AGP. Its the element that lets it pipe information right from memory to the AGP Card (Ex: buffering textures in system memory, and various other good things). To put it bluntly, what makes these cards so fast is their ability to effectivly use DMA. It gives them about a 400-600% speed boost.
Why did they license the technology out you ask? Why were they so lazy, why didn't they just develope it themselves? Simple: Why spend an extra 3 months developing your own technology when its cheaper to just license it out. You grab your license, encorperate it into your product, and you get your card to market faster, beating out the competition. That = more $$$. It was a perfectly logical choice for them (as far as business goes).
Another reason why is becaue Nvidia wants the linux/Opensource "buzzword". That buzzword in your business stratagy goes a long way. Its powerful enough to raise stock prices.
What should you do? This is what I would do:
Tell Nvidia bluntly in a polite manner that what they're doing goes completely against Open Source and infact DESTROYING the fabric of it. Raise a stink. You might even want to go as far as a boycott. Then take note at "model" companies like Matrox and others, who are opening their specs up.
They will listen, even if you only account for 5% sales. 5% is alot.
You should also see who supplied Nvidia their DMA technology, and talk to them about letting nvidia opensource it. Remember, Nvidia isnt the only "bad guy" here.
Taken from utah-glx.sourceforge.net/faq.html:
Here's where the problem lies: While nVidia "opened" up and came out with the X server and glx mod for
their cards, they havn't "opened" up their specs. We can do stuff to the code they have given us sure, but
the problem is we don't know how to do stuff like do AGP/DMA i/o with the cards. They havn't told us how to
talk to the cards and do this. They have released their "Resource Manager" (this is what a nVidia
programmer termed as in an email to the glx-dev list) which is basicly a layer of software that you can
communicate to the cards and do stuff AGP/DMA i/o (or at least that is what I've gathered. Would I be
wrong in saying it's kind of like Glide for the Voodoo cards, but even more low-level?)
really big but), not only have they released it as preprocessed (ie. they made it nearly impossible to be of
any real use to linux hackers without spending a lot of time reverse engineering it.), but also as a kernel
module that I have yet to hear of a single person being able to compile/run (I've tried too)
Sorry about the gimped out pasting, blame Netscape
The simple solution to this is to vote with your dollars. Just yesterday, I ripped out my TNT2 and put in a Matrox G400 Max. I am extremely disappointed with the way NVidia has behaved. Their code release was merely playing lip service to the Linux community. I, along with many, many others, went out and bought NVidia cards because of their perceived superiority and support at the time. I was very disappointed to be shot down like that, especially when the card cost as much as it did.
Anyway, now I am becoming very interested in the reasons why Matrox has apparently not released all the specs for their cards, either. Fortunately, the 3D portions seem to all be there, but portions relating to DVD playback do not appear to be open (big surprise). Also, my card has the ability to do TV-out, but there are apparently some problems with releasing information about that. Somethig to do with that annoying MacroVision copy protection, I guess, but I don't know why I should be forced to copy protect my desktop....
Anyway, Matrox is still doing a great many Good Things for the Linux/Free Software community, and I am very grateful.
--
Ski-U-Mah!
Stop the MPAA
Seems that SiS, Matrox, ATI, and 3DfX (In order of the release of register information...) are happy with the results of doing Open Source drivers. In fact, ATI seems to have found something that would "save" their market position- they're quite happy at the results of what has been done by Gareth Hughes and John Carmack with the Rage PRO chipset.
We didn't present any drain on their programming or engineering resources of those companies- we just asked for the register level interfaces from them. They gave them to us and we produced drivers for their cards that work quite well for most things. In some situations, the drivers are faster than the Windows equivalents. In most situations, we're more visually correct than the Windows equivalents- less lighting screwups, etc.
To be sure, we're nowhere near done yet with these chipsets' drivers, but I don't see where it was a PR catastrophe or a drain on anyone's budget. NVidia chose to do a watered down, obfuscated release of source to a broken, buggy driver for their chipset. This is not the same as what the others have done- and it's not good enough by a longshot.
Save the FUD for posting on ZDNet- they want it, we don't.
I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
Thanks
Bruce Perens
Bruce Perens.
Can you define "works" for us? Does that mean "works today," or "works next year?" How about "Works with any distribution" or "works in a specific environment?
Works for what architecture? Works with which games? Works with which X server?
All it takes is a quick little glance back to the Windows drivers that "work" to see that this is not the road I want to go down. (Hey, here's a new 4.14prerelease-Asubrev2 driver! Works great for shadows, but has some dithering problems! To install, just edit your registry this way, delete these system files, then reboot! Oh, and it only works with UltraGame patchlevel 3!")
No thanks. Binary doesn't "work" for me anymore.
---
A mailing list is started and bunches of expert hardware hackers pound on the code, improving it to a very usable state in a matter of months. Sometimes progress is slow, but that's OK because everything is open souce, and if you wanted things to speed up, you could help. In less than a year, and helped along by major OpenGL vendors releasing more information, the low level driver is extremely usable, stable and fast. The project also expands to include other chipsets and manages to incorporate 3DNow, MMX and SIMD capabilities.
Fantasy? No, I'm talking about the Utah GLX project which has more or less followed the pattern I've described above. If you have a Matrox G200, a G400, and ATi RagePro, Intel 810, RivaTNT or an S3 Virge, Utah GLX will support your card as a loadable module under XFree 3.3.x. Matrox support is so good that my G400 can run Quake 3 at between 50 and 60fps on a Celeron 400 machine.
Now I'm not at all clear whether the GLX module as it stands will just plug directly in to XFree 4.0. I suspect not. But if I have to wait a bit for it to be integrated, I'd much rather do that than get a card with binary only drivers that won't support the spirit (and the letter) of the new DRI.
Sometimes all it takes is a bit of patience. It can be irritating to hear GeForce owners boast about their frame rates. But if everyone's willing to contribute to the open source way of doing things, we'll end up with better drivers, better support and also encourage the current development teams that they're doing The Right Thing - which they are.
--- Hot Shot City is particularly good.
I have been working on the utah-glx project for about nine months now. I am proud of what we have accomplished, and I think it has been a good example of a working open source project. Matrox and ATI have been pleasantly surprised at how well things have worked out.
However, there are only a half dozen coders working part time on utah-glx, and we are split among three active chipset trees. Nvidia has more people than that working full time exclusively for their chips. We are pretty good. So are they. We can work from specs. They can go interrogate the designer of the hardware. It's a pretty simple equation - I expect their driver to be better than our drivers.
Nvidia is working to maintain a common source base between their windows drivers and their linux drivers. Bugs tracked down by the order of magnitude more windows users will be fixed automatically in the linux version.
DRI does not have all of its problems solved, and there are valid reasons for them to not use it. They might change their mind later.
It should be remembered that some people want to do 3D graphics on linux and don't care about open source principles. Most of the people coming from a technical workstation background just want a vendor to deliver a tool to help them get their work done. I also suspect that most game players will choose a faster driver, even if it is closed source.
The choice isn't between making their driver open source or closed source. They CAN'T open source it because of legal encumbrances on the code. The choice is between doing a closed source driver with their existing code, and doing a completely new driver. Not too many people get excited at the prospect of rewriting perfectly good code.
If you care about getting open source drivers, support Matrox, 3dfx, or ATI. They have released specs to the community, and put out cash for PI to develop and support DRI drivers.
If you just want good 3D, I think nvidia will satisfy you. As for not being done yet, it hasn't been that long since Xfree 4.0 shipped.
John Carmack