New device extensions/capabilities database

I recently (about 2 months ago) set up an opt-in hardware reporting feature in public alpha releases of an open source game I’m working on, with the results published here. Currently it’s got data (extension lists and implementation-dependent limit values) from about 4000 users with about 2000 distinct device reports for about 500 distinct device names, mostly on Linux and Windows, and I’m hoping this data could be useful for more people than just me.

The web interface tries to make it easy to see how widespread the support for a particular feature is, and to compare different devices and different driver versions. (There’s also a JSON dump of the whole dataset so people can analyse it themselves, since I always got irritated with other sites that kept their raw data private). That interface has been sufficient to answer the questions I’ve had of the data, though I could probably improve it if people here have suggestions for how to make it more useful or usable. Also, we’re going to do a new alpha release of the game in the next couple of weeks, so I could add some extra data collection code (particularly implementations limits for other extensions) before then, if there are specific things that people would find valuable.

Good man.

What exactly does each entry in the main array represent? I noticed that some of the entries have multiple devices; does this represent users having multiple GPUs?

One thing that would be good would be an easy way to get percentages for version numbers. What percentage have 3.0+, 3.3+, etc.

Nice!!
Bookmarked.

I may have read it too quickly, but I wonder why there’s a slight difference between arb_vertex_shader (88% support) and arb_fragment_shader (83%).

I always thought these extensions are both supported at the same time… May I be wrong here ?

Which main array do you mean? If it’s pages like this, each column represents a different set of reported capabilities, and the column heading lists the device name (derived from GL_RENDERER) and driver versions (derived from not-perfectly-reliable mechanisms) that share the same column of data. On that page the 6.14.10.4410 and 6.14.10.4704 drivers are identical and don’t have GL_EXT_texture_lod_bias, whereas 6.14.10.4885+ (in the second column) are identical to each other and do have it, and the drivers in the third column have higher vertex-program GL_MAX_PROGRAM values.

(The idea is that it’s much more useful to see the full range of support in the wild, rather than just the maximum support from the best drivers for each given piece of hardware.)

One thing that would be good would be an easy way to get percentages for version numbers. What percentage have 3.0+, 3.3+, etc.

Yeah, I’ve been thinking it would probably be good to add a summary table to the value listings just giving the values and counts and percentages, which should help with that. (User counts are always going to be very biased towards the unusual group of people who download and install unfinished alpha versions of little-advertised open source games, but hopefully it’s better than nothing :slight_smile: )

Comparing this and this, it looks mainly due to Intel drivers on Linux for hardware older than 965G, which usually only support GL_ARB_vertex_shader (presumably via software emulation). (The same hardware on Windows supports neither). Also NVIDIA supports GL_ARB_vertex_shader everywhere (presumably sometimes via software) but GL_ARB_fragment_shader only since GeForce FX.

Comparing this and this, it looks mainly due to Intel drivers on Linux for hardware older than 965G, which usually only support GL_ARB_vertex_shader (presumably via software emulation). (The same hardware on Windows supports neither). Also NVIDIA supports GL_ARB_vertex_shader everywhere (presumably sometimes via software) but GL_ARB_fragment_shader only since GeForce FX.

Thanks. I didn’t knew about this.

I suspect this may have something to do with drivers supporting vertex shaders on the CPU. I can remember owning a Geforce 2 which supported ARB_vertex_program, but not ARB_fragment_program.

Which main array do you mean?

The array in your JSON data structure.

Oh, right. I’ve added some brief documentation - does that help explain it?

One thing that would be good would be an easy way to get percentages for version numbers. What percentage have 3.0+, 3.3+, etc.

I added a summary table here, which hopefully makes it easy enough to add up percentages.