Potential project for someone: graphics card generations in Smolt

Here's something that just came up in the QA meeting which someone might find interesting to do. It's a small project related to Smolt which would be helpful for QA and graphics development purposes.

As most people know, there are thousands and thousands of graphics card models out there. Many of them, however, differ only slightly from each other. To manufacturers and graphics driver developers, it's usually more helpful to look at cards in terms of generations. As far as the graphics driver developer is concerned, when it comes to actual software graphics operations, all cards in a given generation work pretty much the same (this is not the case for other stuff like talking to monitors, but that's not we're concerned with here).

What we're immediately concerned with is the status of GNOME Shell; it'd be really useful to QA and the driver developers to know how good our hardware coverage is, when it comes to Shell support. This is something that goes with the generations of cards. It's unlikely that Shell would work on a GeForce 9400 but fail on a 9600, for instance; those cards are part of the same generation, and at the levels where support for Shell is implemented, all cards in a generation behave very much alike. So, we don't need to test on every graphics card in existence and track the status of each separately; we can simplify it down to the generations.

What we want to be able to do is to use Smolt to find out approximately how common each generation is out there in the real world of Linux users. It's relatively easy to look up one specific graphics card model in Smolt, but what we need is to group all the cards that are listed in Smolt into generations (for Intel, Radeon and Nouveau), so we can then see how many systems in total there are for each generation. Then we can prioritize the driver development work for the most popular generations (we already have a reasonable idea what these will be, but it always helps to have solid data), and we can use the results of the graphics card and GNOME 3 Test Days to determine which generations are working, which will help us with documentation and help us put a rough estimate on overall support for GNOME Shell (e.g. 'okay, roughly 70% of Radeon adapters will work with GNOME Shell at Fedora 15 release time', or whatever it turns out to be). Without the generation numbers, it gets much harder to do that.

What will you need to do this? Well, really you just need to generate the lists of what cards are members of what generations, and then figure out a way to do the grouping in Smolt. This may well require DB access to Smolt rather than just web front end access, but that can likely be arranged if necessary. You can get a start on the generations from that old standby, the Mandriva ldetect-lst table, which I used to maintain and which it looks like someone has been keeping up to date since I left. It doesn't separate out each generation, as it's only necessary to categorize generations whose support in the various open and proprietary drivers differs (so if two generations are supported exactly the same in all drivers, they're categorized together), but it'll get you started. Mostly consumer card naming is approximately in line with generations - so almost all NVIDIA GeForce 9xxx cards will be members of a single generation, 8xxx cards of a different generation, and so on. But there are lots of exception cases to look out for, usually the result of marketing shenanigans; for instance, ATI's Radeon 9100 was, if memory serves, just a rebadged 8xxx series part, not really part of the same generation as other 9xxx cards. There's also often differences between consumer, professional and mobile naming schemes, so mobile 5xxx parts may not be part of the same generation as desktop 5xxx parts. You'll get into it. =) Wikipedia and hardware review sites like HardOCP, Ars Technica and Tom's are helpful resources for sorting out these cases. Absolutely accuracy isn't critical as we just need a rough idea of the numbers, not a super-accurate headcount, but of course it's best to be as correct as possible.

This would probably make a great student project for someone, we will look into the various programs for those. But if it appeals to you and you'd like to have a go, please do get in touch with me or the QA group via the mailing list! We can move along from there.


No comments.