Could Graphics Drivers be Included on the Card?
starseeker asks: "With all of the difficulties (both technical and legal) caused by binary graphics card drivers (e.g. the nVidia drivers) the question naturally arises - why is it necessary to have all of this logic at the 'kernel' level in the first place? Why couldn't the necessary logic be abstracted on-board the nVidia/ATI/etc card and just have the OS use one generic driver to access the functionality in all of them? Use OpenGL or similar standards on the software side, and have the card handle things on-board from that point on down? That way, hardware manufacturers wouldn't have to listen to all the flack about binary drivers, and Linux users don't have to suffer with second-rate graphics and/or deal with binary drivers in an open (and dynamic) environment. Are there technical reasons this isn't practical? Or is it simply that it's easier/cheaper to do that type of work in the OS?" There are several issues that currently make such a thing impractical, but the large hurdle at this point is that there doesn't seem to be any interest (neither commercially or technically) to make such a leap.
I think it's a good idea. All of the problems that immediately jump out at me-- things getting outdated and such-- would seem to be dealt with very easily by making the internal software updatable, some simple solid-state memory.
As a bonus, there wouldn't be any worries about ever updating drivers more than once. Reinstalling your OS? You already have the latest drivers!
Could make rolling back a bitch, though, but that should be handleable as well. Heck, stick a jumper on there that clears the memory and resets to factory defaults.
Driver patches happen. If the driver is in hardware, you'll have to flash it, which has somewhat more severe consequences in the event of an error.
I think NVidia is doing something right in this department. The same video driver works across the majority of their cards, from the old TNT2 to the latest GeForce. This implies that a good level of abstraction is possible with video cards, and if this is the case with video cards, one wonders how much can be done with other hardware.
Why do GPUs need huge drivers when CPUs don't?
I just got a GPS for my Handspring Visor, and it installed the software and libraries into the Visor from Rom somewhere. No CDs, floppies or anything.
That's what the Amiga did. Autoconfig included ROMs whose libraries and devices would be added to the system upon boot. Come to think of it, my old Sinclair QL also supported ROM OS extensions on each expansion card. It was pretty normal in the 1980s for non-PC computers to work this way.
Much as it helped give you an out-of-the-box "it just works" experience, it was flawed for a number of reasons. First, these things are, by necessity, operating system specific, unless you really want to dictate the architecture of every operating system. AmigaOS users found it useful, but those running MINIX or even AmigaUNIX were out of luck. You can probably find a way to build something akin to NDIS style wrappers, but that does mean either significant architectural or performance compromises need to be made in terms of how your other OSes work.
Note that this even applies to "cross platform" solutions like OpenFirmware. OF uses FORTH-based bytecode device drivers, and yes, display cards are part of that.
The other major problem is that the device drivers tend to be whatever was current went you put the device in a box and shipped it. As hardware manufacturers seem to be relatively incompetent when it comes to creating device drivers, it's hard to see how that's a bonus. The author is talking about ATI sticking OpenGL on their cards. Has you use4 fglrx? The most recent version is the first moderately reliable implementation I've seen (that is, it's been running for a few days now on my laptop without any kernel warnings about NMIs), and the previous version, apparently, was the first to support my graphics card (an X1300), six months after the X1300's launch.
ATI isn't the only vendor that appears to be utterly clueless when creating device drivers. Microsoft actually gave up and generally ships its own in-house drivers for everything it knows about out of the box. Most GNU/Linux users will tell you that their systems are generally stable unless they are obliged to include some binary blob based driver, or just an "independent" project maintained and written by a hardware vendor due to some licensing issue.
The bottom line is that expansion-card based device drivers just aren't dynamic enough.
You are not alone. This is not normal. None of this is normal.