The JSON data currently has the format shown below.
Each entry in the outer array is a single distinct set of device features
(array of "extensions" plus hash of implementation-dependent "limits").
Each feature set is associated with an array of "devices".
For each of those devices, we have received a report containing that particular feature set;
this is effectively just a compression mechanism so we don't have to duplicate the entire
feature set description when dozens of devices have identical features.
Each device has an "os" ("Windows", "Linux", "OS X"),
a "renderer" (from GL_RENDERER),
a "vendor" (from GL_VENDOR),
and a "driver" (typically derived from the appropriate DLL on Windows,
or sometimes a list of lots of DLLs if we can't figure out which is appropriate,
or derived from the full GL_VERSION string on Linux).
[
{
"devices": [
{
"driver": "6.14.10.8494",
"os": "Windows",
"renderer": "AMD 760G",
"vendor": "ATI Technologies Inc."
}
],
"extensions": [
"GL_AMD_performance_monitor",
...
"WGL_EXT_swap_control"
],
"limits": {
"GL_ALIASED_LINE_WIDTH_RANGE[0]": "1",
...
"GL_VERTEX_PROGRAM_ARB.GL_MAX_PROGRAM_TEMPORARIES_ARB": "160"
}
},
{
"devices": [
{
"driver": "6.14.10.10057",
"os": "Windows",
"renderer": "AMD M880G with ATI Mobility Radeon HD 4200",
"vendor": "ATI Technologies Inc."
},
{
"driver": "6.14.10.10179",
"os": "Windows",
"renderer": "AMD M880G with ATI Mobility Radeon HD 4250",
"vendor": "ATI Technologies Inc."
},
{
"driver": "3.3.10188",
"os": "Linux",
"renderer": "ATI Mobility Radeon HD 3400 Series",
"vendor": "ATI Technologies Inc."
},
{
"driver": "6.14.10.10151",
"os": "Windows",
"renderer": "ATI Mobility Radeon HD 3400 Series",
"vendor": "ATI Technologies Inc."
},
...
],
"extensions": [
"GL_AMDX_debug_output",
...
"WGL_EXT_swap_control"
],
"limits": {
"GL_ALIASED_LINE_WIDTH_RANGE[0]": "1",
...
"GL_VERTEX_PROGRAM_ARB.GL_MAX_PROGRAM_TEMPORARIES_ARB": "160"
}
},
...
}