Free software drivers: the unmatrix

Free software drivers: the unmatrix


Well, it’s been a while—“cough!”—the set’s all dusty since my previous post about 3D cards...

One thing that isn’t quite dusty though, is the state of free software drivers! I will sum up the different evolutions (some would even say, revolutions) that have occurred over this summer (June-September 2007).

First, let me write out a list of drivers...

Known free drivers and their implementations

VIA: UniChrome and OpenChrome

VIA was a leader in the area of free drivers: they were actually the first hardware manufacturers to release their drivers in source code form—no, really! However, those were not under a permissive license, were inelegantly coded (you needed to run them as root) but they had a very, very important characteristic: they were pretty much feature-complete, and most rare, they didn’t need VBE modesetting to work—meaning that right now, they don’t need a PC BIOS. That helps in making portable drivers.

Those restricted sources led to the creation of the UniChrome driver—this was supposed to be a very clean reimplementation of the original source code, and is, in fact, the basis for Xorg’s VIA driver. It offers 2D and 3D acceleration and some Xv and MPEG2 acceleration. It has a single maintainer, and is considered the most stable VIA driver out there.

Due to UniChrome’s limited abilities in code tinkering, OpenChrome was forked (there is still some communication between the branches); while less stable, OpenChrome provides MPEG-4 acceleration and XvMC (X video Motion Compensation). The latter is considered a very good implementation of hardware-accelerated XvMC.

This is not quite recent: the OpenChrome fork happened in 2005. It is now getting a bit more attention because of its focus on Xv and XvMC—which, due to HD concerns, are becoming more and more important.

Matrox: their own, and Xorg’s

Matrox actually went the way VIA started; they now release a driver in source form, and this driver is reimplemented under Xorg’s licenses. The end result pretty much works—when some new bug doesn’t crash the party. Still, these drivers provide 2D, 3D and Xv acceleration.

On the whole, nothing new on planet Matrox. At best, some more bug fixing... Because there sure isn’t anything new feature or hardware wise.

Intel: direct support

Probably the most forthcoming hardware manufacturer in matters of free code, Intel provides no specifications—but they do have an engineer working exclusively on a free software driver for their video hardware: all those integrated graphics processors do have a driver!

It provides 2D, 3D and Xv acceleration, along with multiple screen support and covers pretty much all of Intel’s video hardware (except the long-dead i740, which was more Cirrus Logic than Intel anyway). More importantly, it is unobfuscated, feature complete, and under a permissive license (MIT and GPL—depending on where the code is, in X or in Linux).

ATI/AMD: a revolution

You must have seen it: since ATI was bought by AMD, there was some tension: will AMD change its tradition of cooperation with free software? They relied on Linux to prove the efficiency of their winning K8 core and 64-bit instruction set, should they use the same method on their new graphic hardware?

Well actually, they have—and they pretty much went all-out: not only have they promised to release the specs for their non-DRM hardware from the r300 up, there will be no NDA, along with a skeleton driver and code samples to boot!

So, right now, Novell maintains a package, named radeonhd, providing support for r500 and r600 hardware under SuSE Linux, last week. The Avivo driver, which had started supporting r500 cards, is thus nipped in the bud—not that Jerome Glisse, its lead maintainer, is complaining.

For those looking for a more feature complete driver, AMD released a new revision of its closed source fglrx driver, version 8.41, at the same time.

XGI: mixed bag

XGI was probably one of the first companies to support their graphics hardware through a free driver—but they were unlucky: not only did most of their talents go to ATI last year, their licensing agreement with SGI prevents them from releasing the DRI part of their driver under a free license.

As such, the driver (lacking DRI acceleration) is quite feature-complete, maintained, clean and supporting most of their hardware range, but it is also not much better than the VESA driver due to its need for CPU copies to be efficient. The DRI binary module does work well with the released sources, but it’s just not the same as having a free driver...

NVIDIA: ah, come on!

Right now, NVIDIA is probably the black sheep of Linux support: while they do provide a somewhat accelerated 2D driver for all their hardware (from the Riva128 to the Geforce 8), that driver has its source obfuscated, uses inefficient acceleration processes (it’s stuck on XAA), has seen pretty much no improvement in years, and needs to be ripped out entirely when you want to use their (admittedly high quality) binary blob.

They also disparaged the FOSS community by saying that no one apart from them would be able to create quality graphics drivers for their hardware, and that a community supported, feature-complete driver is impossible.

That ruffled some feathers last year, and a few Xorg developers took it to task. That started Nouveau, probably one of the biggest efforts in hardware reverse engineering seen these days. What do they have?

Right now, Nouveau is still in alpha. It bid goodbye to XAA (now completely replaced with EXA), Xv is complete, implementing OpenChrome’s XvMC is a work in progress, and 3D support has been pretty much figured out for several chip generations (right now, glxgears works on Geforce2 and 6). The driver works on almost all of the NVIDIA hardware range—only support for nv04 (original Tnt1) will have to be reduced, due to this chip’s fundamental incompatibility with EXA.

Still, it’s far from being complete.

So, what’s going on?

With all those free driver events, several issues were brought to light and are being worked on—on many levels.

Driver redundancy

Several drivers provide very similar features, and, at the same time, features are getting more numerous: video acceleration is not done through video overlays anymore, blitters are on the way out too, thus the preferred solution is now the use textured surfaces—using shaders units on Intel, NVIDIA, ATI and VIA hardware at the very least.

This is pretty much an Xv matter, but due to the flexibility of this solution, XvMC will gleefully make use of those features. Add to that colour space conversion acceleration and video decompression, it pretty much means that most current hardware solutions (and several older ones too) would allow very similar algorithms to perform a required operation.

Apparently, the favoured solution would be to create a single module for a given feature, which would then interface with the hardware through a common API, or use some form of software emulation, or, if not possible, simply refuse to load.

The two main advantages would be that new features would be brought in common to all able hardware, while at the same time reducing code duplication, which usually means much faster hardware support and simpler testing cycles.

Considering what’s happening inside Linux on the Wi-Fi, ATA, IEEE1394, file systems and sound stacks, it sure seems effective.

For this reason, discussions are being made to modularize elements such as XvMC, some parts of DRI, and Mesa too (see Tungsten Graphics’s Gallium3D project)—leaving the DRM (as in Direct Rendering Module) the last part to remain really hardware-dependent.

Does it mean that video drivers will be much smaller? Well, not exactly: right now, video drivers are made of at least three pieces: the essential X.org driver, the DRI acceleration piece, and its in-kernel DRM corresponding part. While the DRM part is pretty much impossible to make more common, this part may actually grow—the addition of a kernel-side memory manager and context switcher (for now called TTM) would actually make a driver bigger.

But overall, through modularity, it would mean that the sum of code required to support most of today’s hardware would get much, much smaller.

After all, that’s the philosophy behind X.org’s 7th revision to the X protocol version 11 (X11R7).

GPU to generic computing

On the bonus side, this would pave the way to making use of those shaders units as generic computing coprocessors through a unified API—and damn, aren’t those 128 unified shaders on an NVIDIA 8800 tempting!

What would be the use? Well, a shaders unit is, nowadays, little more (or less) than an oversized high precision, high clocked floating point computing unit. Being able to tap into them for stuff like SETI or Folding@home would be interesting. They would also help tremendously in ray tracing (“real” 3D) and other modeling applications.

Kernel engineering

Those were first mentioned to the general public on the Nouveau wiki: Linux (and other kernels are not much better) doesn’t provide anything to support graphics development: certainly no frozen API (which is understandable and often a good thing), but also no way to tell when a piece of graphics hardware is already held by a driver (which makes using the console’s frame buffer driver for your hardware a good way to crash X), and no way to map graphics memory—which can be quite complex: how does one navigate between PCI addressing, AGP (with its dedicated memory and different contexts than PCI) and PCI Express? Well, right now, all drivers do it the best they can.

For that reason, you have very fast exchanges between the kernel and the Xorg communities going on right now on how to implement frame buffer drivers (which are currently in the kernel) and DRM modules around a graphics memory manager.

An in-kernel memory manager for graphics hardware would allow several improvements:

  • it would be much easier to add several accelerated video adapters, of similar or different designs,
  • no more headaches caused by the dichotomy between hardware-accelerated frame buffers and DRI,
  • more efficient context switching,
  • better stability and performances through unified video memory addressing (right now, there is generic PCI, AGP and PCI Express to deal with—all three are different),
  • some other stuff yet to be determined.

And performance, in all this?

This is the reason there will be NO update to my driver matrix for a little while yet: there has been little improvement in the area of supported features (we may cite a still maturing randr1.2 implementation, now used by the radeon, nouveau and Intel drivers), or hardware (last time, AMD already supported their r500 and r600 hardware in fglrx, and NVIDIA hasn’t unveiled G9x chips yet), or incredible breakthroughs (the r300 driver is undergoing cleanup, but AMD hasn’t released the r300 family specs yet, as it will come last).

In fact, the only releases (apart from those cited above) are: NVIDIA’s 100.14.19 driver (which solved a regression over the previous release, but I can’t test it as it screws up my screen detection and won’t allow manual override), and AMD/ATI’s 8.41 release (which, as I said, improves performance significantly yet renders artifacts all over the place). Right now, there is only a LOT of restructuring going on.

Conclusion

So, many things have changed over the summer; the FOSS drivers have seen lots of news, lots of progress and have started redefining themselves in a drastic way. That’s cool.

However, this takes time, and for now us poor users have very little to see.

But jeez, the coming months are going to be interesting!

Bibliography

Phoronix - XGI

Phoronix - XGI 2

Phoronix - Avivo’s end

The Nouveau wiki

The Gallium3D stack

The VIA drivers

The irregular Nouveau Development Companion 27 at Phoronix

Category: 

Comments

Terry Hancock's picture

Although ATI and Intel have stolen some of their thunder -- releasing better binary Linux drivers and/or source code releases of parts of their driver sets, there is also progress on the "totally free" front...

The Open Graphics Project has completed its design and testing for the OGD1, which is its development board, and is about to go into production. These FPGA-based graphics cards are hardly price-competitive with consumer graphics cards (at about $1500 a piece), but they are also more flexible, since they are really reprogrammable large-scale FPGA boards with extensive video interfacing. It's even possible to use them for things other than video.

More practically, the video firmware on these cards will be flashable, so that users will have the option of updating to the latest version of the graphics-processing unit (GPU), as the OGP continues to work on improving it.

Furthermore, the money spent is an investment in the production of real free and open hardware to support free software operating systems. If you're more inclined to contribute directly, there will also be a discount program for developers directly assisting the Open Graphics Project.

The OGD1 boards will be available from Traversal Technology. No official date has been set, but I would personally guess they will be taking orders before the end of this year.

Obviously, I can't recommend these boards to everybody, but if you've got the interest and the available cash, it will be a really cool product -- and 100% open hardware (GPL). Needless to say, the drivers will also be free.

Later on, of course, if the OGP continues with its present success rate, there will be a consumer-priced ASIC-based board which will implement the best available GPU at the time it is made (of course it won't be upgradable). I'm not sure when that will happen.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

Really nice article, thanks.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

Does Matrox really support free software operating systems and open up their source code? Maybe with their older video cards, maybe even up to G550, but not with the newer ones that have at least half decent 3D support. Last time I checked their newer cards - with half-decent 3d support - had only proprietary drivers. Of all the 3D card companies, Matrox has been among the worst in supporting free software. No support for Compiz either whatever Matrox card you use as far as I know. But if you are conservative, don't care for 3D, Compiz and such things, and are happy with close to 10 year old video card design, Matrox might be ok.

Mitch Meyran's picture

...their latest products are hardly worthy of being called 'graphic cards'. And yes, from G100 to G550, they did/do provide source code for their cards.
For their most recent offers, which are mainly multi-monitor external appliances, the current X model makes opening up their source code the same way they did before not only quite useless, but also counterproductive: maybe, when Randr is more finalized and multiple screen configurations are better managed in X, will it be of any use for the community to get Matrox's code. For now, it's merely a risk of copyright infringement on both sides if Matrox open their sources.
---
A computer is like air conditioning: it becomes useless when you open windows.

Author information

Mitch Meyran's picture

Biography

Have you ever fixed a computer with a hammer, glue and a soldering iron? Why not? It's fun!

Most forwarded

Interview with Dave Mohyla, of DTIDATA

Dave Mohyla is the president and founder of dtidata.com, a hard drive recovery facility based in Tampa, Florida.

TM: Where are you based? What does your company do?
DTI Data recovery is based in South Pasadena, Florida which is a suburb of Tampa. We have been here for over 10 years. We operate a bio-metrically secured class 100 clean room where we perform hard drive recovery on all types of hard disks, from laptop hard drives to multi drive RAID systems.

Anybody up to writing good directory software?

Since the very beginning, directories (of any kind) have had a very central role in the internet. (I have recently grown fond of Free Web Directory. Even Slashdot can be considered a directory: a collection of great news and invaluable user-generated comments. As far as software is concerned, doing a quick search on Google about software directories will return the free (as in freedom) software directories like Savannah, SourceForge, Freshmeat and so on, followed by shareware and freeware sites such as FileBuzz, PCWin Download Center and All Freeware (great if you're looking for shareware and freeware, but definitely less comprehensive than their free-as-in-freedom counterparts).

Interview with Mark Shuttleworth

Mark Shuttleworth is the founder of Thawte, the first Certification Authority to sell public SSL certificates. After selling Thawte to Verisign, Mark moved on to training as an astronaut in Russia and visiting space. Once he got back he founded Ubuntu, the leading GNU/Linux distribution. He agreed on releasing a quick interview to Free Software Magazine.

Is better education the key to finding better software?

I read David Jonathon's article Anybody Up To Writing Good Directory Software? the other day, which got me thinking about software directories in general. As David mentioned, many of the software directories one finds when doing a quick google search are free as in beer, not as in freedom. But what interests me is the software directories that already exist, providing a combination of both free as in beer software, and open source software. Sites such as Freeware Downloads and Shareware Download don't advertise themselves as providing free as in liberty software, but each of them have a good selection of open source software available... if you know where to look.

Most emailed

Free Open Document label templates

If you’ve ever spent hours at work doing mailings, cursed your printer for printing outside the lines on your labels, or moaned “There has got to be a better way to do this,” here’s the solution you’ve been looking for. Working smarter, not harder! Worldlabel.com, a manufacture of labels offers Open Office / Libre Office labels templates for downloading in ODF format which will save you time, effort, and (if you want) make really cool-looking labels

Creating a user-centric site in Drupal

A little while ago, while talking in the #drupal mailing list, I showed my latest creation to one of the core developers there. His reaction was "Wow, I am always surprised what people use Drupal for". His surprise is somehow justified: I did create a site for a bunch of entertainers in Perth, a company set to use Drupal to take over the world with Entertainers.Biz.

Update: since writing this article, I have updated the system so that the whole booking process happens online. I will update the article accordingly!

So, why, why do people and companies develop free software?

More and more people are discovering free software. Many people only do so after weeks, or even months, of using it. I wonder, for example, how many Firefox users actually know how free Firefox really is—many of them realise that you can get it for free, but find it hard to believe that anybody can modify it and even redistribute it legally.

When the discovery is made, the first instinct is to ask: why do they do it? Programming is hard work. Even though most (if not all) programmers are driven by their higher-than-normal IQs and their amazing passion for solving problems, it’s still hard to understand why so many of them would donate so much of their time to creating something that they can’t really show off to anybody but their colleagues or geek friends.

Sure, anybody can buy laptops, and just program. No need to get a full-on lab or spend thousands of dollars in equipment. But... is that the full story?

Fun articles

Santa Claus - the most successful open source project

It dawned on me the other day, as I was shopping for the dozens of gifts it seems I have to buy every December, that Santa Claus is the most successful open source project in history. (Bridget @ Illiterarty would agree with that). Santa Claus is essentially a marketing development that is embodied by everyone who stuffs a sock, gives a gift, hosts a dinner or wishes Merry Christmas over the holiday season.

Most emailed

Editorial

When I first started thinking about Free Software Magazine, I was feeling enthusiastic about the dream. I had Dave, Gianluca, and Alan willing to help me, I had established members of the free software community willing to help me out, I had writers volunteering their time and energy for free, and I had a generous offer from OpenHosting for servers, all before I'd proved myself. There was a sense of excitement in the air, and I thought maybe, just maybe, I could make this work.

Free Software Magazine uses Apollo project management software and CRM for its everyday activities!