Free Software Friendly Graphics Card?
An anonymous reader writes "There's an interesting discussion on KernelTrap with a hardware company that is talking about developing a 'free software friendly' graphics card. The idea is to fully disclose and document all register interfaces including the BIOS, providing Linux and BSD users with a fully supported video card. The hardware engineer proposing the idea summarizes his viewpoint saying, 'the whole issue comes down to this: This is technically feasible. Should we do it?'"
I like the idea. My only thought is, are they going to have enough pull to make this happen? Graphics cards are much more than just throwing a few hundred million transistors on a chip. You have to worry about pipeline architecture, parallel texturing units, and (most importantly) well optimized driver software.
Can this company create a card that's competitive? And if they can, will they get pushed out of business through patent litigation?
Javascript + Nintendo DSi = DSiCade
For those who didn't RTFA, the guy is talking about an FPGA, not an ASIC. Reasonable 3D is a pipe dream. OTOH, everything would be open spec: BIOS, card layout, and everything. As an FPGA it would be completely reprogramable.
I think it'd be great to hack around on, but considering the price of perhaps $100 I don't see this selling in quantity.
With comercial games being ported to Linux, marginal closed-source drivers which the kernel folks are (rightly IMHO) hostile to, and a growing Linux market share they may do pretty well. If they actually pull this off I know that I'd buy it.
Only in a Slashdot fantasy can a Slackware install turn into several hours of sex . . . . .
You haven't tried to run ATI cards in 3D games under Linux, have you?
There are plenty of 3D games with Linux support I'd love to play, but I am at the mercy of terrible ATI drivers.
If nVidia were to let their drivers for non-MS platforms slide, then there wouldn't be any good options.
for those of us that read the article, we see that the entire nVidia/ATi argument is practically moot. the developer explicity says that the card will be primarily 2D because his employer won't give enough funding to produce an ASIC. Thus, they're using an FPGA and will only really be able to implement a 2D core.
[move
Just a reminder, drivers are a cost for video card manufacturers. They sell a card and have to bury the cost of driver development and maintenance into the cost of the card. Open sourcing driver development lets a card manufacturer profit from the hardware while the community develops drivers for them and they get good karma to boot. This would be a fairly inexpensive/low risk way for a low-end (PCI only it appears at the moment) card manufacturer to get their "foot in the door".
Only the "big boys" (Nvidia and ATI) have anything to lose by open sourcing their cards. People would actually see to what extent they fudge their cards and drivers for benchmarks.
They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
Ben
I agree that the development costs would probably high and that this card would likely not be very competitive price/performance wise. However, you're overstating the capital investment required to actually "fabricate" the product. You can't throw a stone without hitting a contract printed circuit board manufacturer these days. In other words, you can throw a bill of materials and circuit board layout at them and have the board manufactured, packaged, and drop shipped to your customer without ever touching one. Sure, they will take their pound of flesh (5-10% of the material cost of the board is typical, depending on volumes), but it should not drive the cost to anything approaching $500. Looking at this guy's rough BOM, I'd bet they could have this made for about $90-$100 in 5K quantities.
Yes it definitely makes sense to develop such an FPGA-based board and letting FOSS crowd to hack the FPGA code similary to the software. FPGA are really powerful toys these days and can easily compete with ASIC devices. Total reconfigurability extends it's lifetime a lot - I know that the cameras http://developers.slashdot.org/article.pl?sid=02/1 2/04/1526226&tid=8&tid=106 are shipped now with much improved "hardware" without any actual changes on the boards.
Are there any graphic cards that natively support rendering of Ogg Theora? What about wavelet BBC Dirac that is still in alpha stage and many specs are not finalized? Can _any_ of the high end cards do that?
The FPGA-based with the open HDL code can. And will support bleeding-edge just emerging tasks, formats designed after the hardware is manufactured.
Concerns about the licensing and patents? Yes those are nasty things. But have you ever downloaded any applications or drivers to your Linux box separately from the distro you've got? Because of the "licensing issues"?
That can work for reconfigurable FPGA too. Still I prefer to avoid those - our next cameras (FPGA code is under development) will support Ogg Theora, not MPEG*
And we will be happy to buy such cards and ship them with every our camera.
How would this card be better than what we can buy off the shelf then? Even Nvidia cards can provide a 2D desktop from the opensource drivers. Adequate 2D only can be had for 5 bucks from the local used shop bin. This card would have to provide at least rudimentary 3D on the level of a cheezy laptop chipset to even be worth talking about.
Dude, all of the high end sound cards work great with ALSA. The RME Hammerfall, M-Audio Delta series cards, a bunch of USB-Audio stuff for laptops, and a couple of others. The big-name players in audio (well, basically RME) all provide docs or their cards are simple enough to be easily reverse engineered.
I have a Dual AthlonMP box with a Midiman Delta 1010 and it works great as a Digital Audio Workstation. Check out ardour and Jack. Linux Audio is in a way better state than video is. I still have a Radeon 9100 simply because it's the second-fastest (the FireGL 8800 is faster but way more expensive on eBay) graphics card with Free DRI drivers. And they SUCK speed wise. My sound card can do everything the Windows card can do it and it's fairly high end.
HAL 7000, fewer features than the HAL 9000, but just as homicidal!
Instead of using internal company IP, just mass produce this card: http://www.opencores.org/projects.cgi/web/vga_lcd/ overview
Its free, and I'm sure that the designer wouldn't mind the fame. The company could probably also pay him for improvements and optimizations.
They could start by examining the Rendition pipeline and functional units. The documentation for the chip is available on the web, google for v2200spec.pdf. A MIPS-like RISC core surrounded by peripherals for the heavy graphics lifting looks like the design everyone else has gone with since then.
LRC, the best-read libertarian site on the web
To those who find binary drivers too distasteful, but still want to find the best card for their needs: the DRI project has a very useful catalogue of supported cards to aid you in your selection.
For example, there documentation on ATi's cards: http://dri.sourceforge.net/cgi-bin/moin.cgi/ATI
I recently picked up a ATi FireGL 8800 because of information on dri.sf.net and have never been happier with a card. It doesn't perform as well as the FireGL X1-128 that has now moved to my secondary workstation, but not having to deal with ATi's drivers and having the 8800 work equally well in FreeBSD and Linux is more than enough of a reward.
I have also used nVidia's binary drivers (with a card that has moved to a media box), but they are not ideal either. I will say performance is remarkable however.
I suppose my graphics needs have become more modest, however, and others may have more pragmatic concerns.
Matrox? Don't count on it. They've just "recently" gone from being one of the best supported video card makers, both 2D and 3D, in linux, to one of the absolut worst after they switched to a closed source model of providing their own drivers.
"Worst?", I hear you say, "How can that be? My ATI doesn't work great either!". Well, consider this; It's been almost a year since their last driver was released. It doesn't support Linux 2.6 yet. People are trying to patch things up, but it's a losing battle. It doesn't support SMP either, which means that any P4/HT users are out of luck. And I'm not just talking about not actively enhancing the drivers for SMP, no, it will outright crash and bring the the whole computer down with it if you som much as think of starting an OpenGL application. Oh, and while we're at it, there is of course no support at all for AMD64.
Quite frankly, Matrox has remained so apathetic to the Linux crowd that I'm now convinced that they tricked us all just to get our money, and deep down inside they just hate us.
Slagborr
The PC speaker is like the CGA of music.
You mispelled MCGA.
For those that don't remember MCGA.
Try to hack my 31337 firewall!
The problem is you are talking about tough shit to do. It could provide complete hardware programability. Yes, it could, nVidia and ATi's latest offerings do. They, however, were produced by a large team of people with lots of experience doing this, working full time, with a MASSIVE amount of equipment and money to do it.
Designing a chip isn't trivial, even when it's a simple chip. Designing a chip that can pull of all sorts of cool, latest-greatest stuff is an art, one that very few companies are good at.
There are also lots of things that look good on paper but just don't work out. Look at BitBoys and the Elbrus E2K. Both were the "gonna blow the competition away" kind of things, and in both cases, they had simulations in VHDL. Ya well, just because you can get something in Verilog, doesn't mean you can actually fabricate it in silicon and make it work. Neither could do it, and both failed.
Also nothing you are talking about is new. As I meantioned, programable GPUs are here, all DX9 GPUs are fully programable (turing complete), and all DX8 ones are programable. They have all they capabilities they need to do hardware acceletation of things like clipping in window managers, there just hasn't been the window manager that uses it (on a PC). Longhorn is going to fully (allegedly), and OS-X already does use the GPU for it's WM, to a fair degree. As for X11 acceleration, install nVidia's X drivers. There's your acceleration, it's all kinds of fast (there are other drivers like that too).
I'm not saying an open archecture has no uses, but an expensive open 2d-only card has just about no use.
the problem is that once you build hardware, the patent law says that your competitors can't make an exact copy of it. The card you have is no longer "Secret IP" once it's on a storeshelf. Your competitor spends $299 and has a reference board. The card he builds can't be exactly like yours, but he can take good ideas from your board and implement them as long as there isn't a patent against it.
The reason they've got such tight reigns on drivers is that drivers cost a lot of programming hours to write. That is source code that I don't think the world will see. The games released for specific video cards also have some of that driver code (provided to them via NDA) from the cardmaker. their complete source code may contain very secret IP such as chip limitations, workarounds, extra settings, and other things that they may not want their competitors and customers to know about.
"Lame" - Galaxar
From the web page:
You'd be surprised how much of a market does exist for computers which aren't a l33t 3D gaming machine. Think: corporate market.
For example, there are more servers sold with an ancient 2D ATI Rage graphics chip on-board, than gaming machines with a GeForce 6800 Ultra. Or, heck, until very recently Sun still sold workstations with a renamed ATI Rage PCI card in them.
The problem however is that
1. that's a bulk low-profit margin market. It's not about selling marked up boxed graphics card, it's about selling bulk chips at mere cents above the manufacturing cost.
2. it's already being savaged by integrated graphics. OEMs already operate on single digit profit margins. It's increasingly hard to justify even the extra traces or mobo space for an extra graphics chip, when for 2D any integrated graphics are already good enough.
3. Competing for merits -- _any_ merits, including OSS drivers -- in the 2D market it's gonna be a major feat. For 2D _all_ current chips are supported well enough by F/OSS drivers.
A polar bear is a cartesian bear after a coordinate transform.
The idea is that there would be an "operating system" in firmware on the video card--or perhaps a beefed-up BIOS. Video card makers would handle the differing raw hardware interface with this "GDOS"and from the PCs perspetive the interface would be the same..so the main computer OS could use one driver for whatever GPU is used.
cool idea...might be a good compromise for ATI and nVIDIA. They should agree on a standard "GDOS" specification and write implementations for their cards firmware, which would replace the pre-compiled, closed-source driver. They could then leave it up to Microsoft, Linux developers, etc. to write a single, standard, OpenGL-capable driver--basically a 3D version of a standard VESA driver.
Putting the "secret sauce" in the firmware means they really don't have to talk X86 if they don't want to-it could be a lot of special, proprietary microcode if need be. It also wouldn't be platform-specific so they could concentrate on making great video cards instead of writing drivers (which most often they are crap at doing anyways).
It is well known that various drivers and OSes with the same card result in significantly different performace. If a driver is buggy or slow, then they can yell at Microsoft or Linux developers or whatever to fix it...right now they have to shoulder the responsibility.
Yes. Apperently you didn't understand what is ISA is.
A ISA is a generic way for software to interact with Hardware.
For example the x86 ISA spec is supported by the transmeta platform. So that any software developed and compiled to run on the x86 hardware platform will run on transmeta chips.
Just like it will run on Pentium chips or Althon chips.
Hardware wise the Pentium chips and Althon chips are very different. And for a platform transmeta is completely alien.
So what you do is develope a common way to interact with video cards. A 3-d card ISA. (which of course doesn't exist.)
Then you build a miniture OS that will run on that hardware. (video cards have proccessors, memory, bios, et al. They are nowadays more computer, a sort of daughter board, then the were when we just had "VGA" compatable cards.)
That GDOS will take instructions from the OS, these instructions will be in the form of OpenGL. Just like you would be feeding a linux kernel driver information from a OpenGL toolkit, like QT.
Once it receives the instructions it will translate it and then pump it into the video card's hardware itself.
3-d stuff is very complex. Complexity=fraught with bugs, and sticking everything in kernel is a bad idea.
You would have a generic GDOS that would run in it's own memory space. It's only job in life would be to provide a OpenGL API that the parent OS can use.
My idea depends on creating another layer of hardware abstraction that you would run a layer of software abstraction on. This will be kept seperate from the OS and only the top layer of the protocol stack would be aviable.
It would provide the same function of having a 3-d driver aviable to the OS, but it would be OS agnostic. You could use it in any OS that knew how to talk to GDos. Windows, FreeBSD, Linux, whatever.
You send instructions to it and the Gdos would take care of rendering everything, not the OS itself.
I picked OpenGL becuase it's standard. Major manufacturers and vendors already belong to the standard group and the video cards are already designed to be optimized with it.
OpenGL instructions ---> GDOS ---> Video hardware.
Not
OpenGL ---> Video hardware.
And if Nvidia or ATI wanted to have special optimizations and stuff for programs all they would have to deal with is Gdos and not Linux, Windows, BSD, and everybody else under the sky.
It's a pipe dream I know, but I think it's a good idea.
From 2002: Matrox continues to support the Linux community and is proud to release an open source driver for its flagship product Parhelia...
Karma: It's all a bunch of tree-huggin' hippy crap!
Define decent.
As the other reply suggested the biggest problem with comparing HW and SW development is that the initial costs as well as productions costs are not the same. (HW being a lot more expensive.)
Now I have some experience with HW development (within academics) and you can get an FPGA setup which will let you try some ideas out and it's a lot cheaper than doing real Si (it's often used for prototyping). A cheap such setup will probably set you back $500 (as a minimum) a setup which can handle anything advanced (like graphics) is on the order of $5000. With those kits you get some software so you can do some developing too. That's the bare minimum you need and already the costs are quite a bit over what a SW guy has to put up.
And lets be quite clear here, something like this will not let you make high performance chips like ATi or nVidia. I doubt you could even challenge the low players on the market with something develped like this.
The software you need for advanced chip design typically cost on the order of $50,000 - $100,000 PER MONTH in licensing costs. Actually producing chips and testing them is naturally somthing you do long after this (and it will take months from the time you submit your design to when you get somthing).
All that said I don't think that the battle is lost. The last years have brough technology like FPGAs which make HW for the home developer even remotely possible. Who knows what will happen in the future. And there are quite a few interesting projects like this going on at eg OpenCores which has a bunch of mainly CPUs you can download and load into eg a FPGA to play with.
But to answer your real question, when will we see some sort of OSS version of GForce? Probably never while the GForce is anything useful to have.
OTOH what modern OS today doesn't have the capacity to drive multiple monitors? And at that can do a better job than a HW only solution. (Such as provide different "task bars" for different monitors.)
In the old days Matrox was king as far as 2D was concerned, today it doesn't seem like that is true. Sure it's still what they claim, but for a modern 3D card 2D just isn't a challenge anymore. If all you need is good 2D there are a bunch of 5 year old Matrox cards that do that just as well as the new ones. (Besides 3-head, but you can use multiple cards instead.)
Why should people get the next Matrox card if all it offers is the same good 2D as we had for the last 10 years?
The nature of audio cards and what they do hasn't really changed in 10 years. Why is it that the software support for these things is so immature even when compared to crap like video cards that are bleeding-edge marvels of technology?
Maybe you should take a look at some of those ALSA drivers. Audio cards are bloody complicated little beasties. They are complete programmable DSP's, with on board memory (and a memory controller), effects engines, routable audio, all sorts of input and output formats from 8000hz 8bit mono upto 6 channel AC-3, multiple DAC's, wavetable devices, MIDI controllers (Which mean you need a UART controller as well). Cards like the Audigy can do complex programmable effects, and a lot of cards lack docs so the drivers are reverse engineered.
That's why.
Nvidia DOES make 4 head cards, look at the NVIDIA Quadro4 400 NVS PCI graphics card. Just because you can't walk into Fry's and buy it, doesn't mean it doesn't exist. After all, I don't think a single Matrox board is still stocked in the mainstream stores...