3d features

The drivers all support OpenGL 1.3, however the supported extensions differ quite a lot. You can view the full glxinfo output for ATI's driver, for the DRI driver and for the XiG Summit driver if you want. Technically, the dri drivers can't be called "OpenGL driver", as they do not pass the OpenGL conformance tests (note that software-mesa which these drivers are based on does indeed pass the conformance tests, this of course does not mean that the dri driver passes the tests as well). According to XiG, ATI's drivers do not pass the conformance tests neither (since this is a minor point for home users, I didn't bother to ask SGI).
Some of the major differences:
- The dri driver does not support GL_EXT_texture_compression_s3tc (and the older GL_S3_s3tc, though this one is not supported by the XiG Summit driver neither), only GL_ARB_texture_compression which isn't too useful alone (as it doesn't specify a texture compression format - it reports a nice 0 supported formats via GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB). This is because s3tc was patented by S3 (the patent now belongs to VIA) and implementing it without a license might be of questionable legality (at least in countries where software patents are allowed). Microsoft bought a license so everybody can implement it freely in a Direct3d driver (as DXTC), but unfortunately the OpenGL ARB couldn't do the same easily (they are not a legal entity if I'm not mistaken).
- The ATI driver is the only one which supports GL_ARB_vertex_program and GL_ATI_fragment_shader. The other drivers therefore have no support for vertex and fragment shaders (GL_ARB_fragment_program isn't supported with ATI's driver neither as it is not suited for this generation of graphic card).
- The dri driver can only do 2 textures per pass (reported by GL_MAX_TEXTURE_UNITS_ARB), the xig summit driver 4 and ATI's driver 6 (which is the maximum the hardware can do). Older games (such as Quake III) will not use more than 2, however newer games (such as UT2k3) definitely can use more than 2, which will likely cause some performance hit with the dri driver (since the game needs to switch to multi-pass rendering).
- Compared to the last comparison, not much has changed in terms of OpenGL extensions supported. DRI dropped GLX_MESA_agp_offset and GLX_NV_vertex_array_range in favor of GLX_MESA_allocate_memory. XiG removed support for the obsolete GL_EXT_vertex_weighting extension. ATI has replaced GL_SGI_texture_edge_clamp with GL_SGIS_texture_edge_clamp, and, much more importantly, now supports GL_ARB_vertex_buffer_object.
- What can't be seen from the glxinfo output is that the dri driver does not support any HyperZ features, since ATI doesn't want to have these exposed in an open source driver. The 9000pro does not have a hierarchical Z buffer, but still has Fast Z Clear and Z Buffer compression. Not supporting HyperZ will cause some performance loss, in theory the loss will be higher for cards which have not so much memory bandwidth (so a 9000 should suffer more than a 9000pro, as it has only ~10% lower GPU clock but ~30% lower memory clock - the cards limited to a 64bit memory bus should suffer even more). Unfortunately it was impossible to measure the impact of HyperZ, since the tweakers available for windows allowed disabling HyperZ but it didn't make any difference at all - apparently the driver no longer allows to switch this off. ATI's driver for linux should support HyperZ, and the XiG summit driver doesn't. Both ATI and XiG offer stereo support.

With neither driver it's possible to force AF. However, games which support AF themselves should be able to use it through the GL_EXT_texture_filter_anisotropic extension which all of these drivers support (of course, with all these older Radeons, you can't use trilinear filtering together with anisotropic filtering). FSAA can be forced (2x, 4x, 6x or even 8x) with the XiG summit driver, though not in all resolutions (depending on how much memory your graphic card has, for my 64MB card the limit is 1024x768, if you use a desktop resolution higher than that you can still force FSAA but the driver reverts to a software fallback which is probably not what you want). Some quick testing with games shows it works quite well, however only if the application uses less than the theoretically possible 1024x768 - if 1024x768 is used, the screen is completely garbled. A similar thing happens when you use the forced FSAA with a glxgears window slightly smaller than that limit and move it beyond the borders of the screen. Of course, as expected from supersampling, the framerate in games will really suffer - basically you can expect 1/2 the performance with 2xFSAA and 1/4 the performance with 4xFSAA (I won't even mention the other modes) as a best-case scenario - if you're not hitting a performance bottleneck because you're running out of texture space. Neither ATI nor DRI support FSAA for the R200/RV250 based cards.

3D Performance - SpecViewperf 7.1

SpecViewperf 7.1 performance
The XiG Summit driver easily wins all of the benchmarks this time. You can look at all results yourself.
However, some more thorough analysis is needed:

3dsmax-02: ATI's driver does not show a strong performance here, it's easily beaten even by the dri driver which finished last in almost all other SpecViewperf tests. However, the dri driver failed to render some of the 14 subtests correctly, in most of the subtests sometimes some colors appear completely wrong, and in some subtests there were severe errors which look like z-buffer issues.
First correct picture, then the picture rendered by the dri drivers (note that all screenshots taken with the DRI drivers are without the EnablePageFlip option, but the performance figures are with PageFlip enabled - for some reason the screenshots taken by SpecViewperf turned out completely black except for the frame counter when PageFlip was enabled, though the rendering as seen on screen didn't change).
correct ArchSmooth06 picture wrongly rendered ArchSmooth06 picture
The wrong colors can also be easily seen on other subtests, and sometimes a lot of polygons simply disappeared.
Compared to the last comparison, the dri driver lost ~15%, the performance of all other drivers remains the same.

drv-09: Can't comment much on rendering errors. This test looks just too wrong to spot rendering errors. There always seem to be z-fighting issues and it just looks weird regardless what driver is used, even with software rendering. The dri driver is not even half as fast as the other two linux drivers here.
The ATI driver loses ~20% performance compared to the older driver, the DRI driver loses ~30%.

dx-08: the XiG Summit driver easily beats the others on this one. The dri driver manages to keep up with ATI's linux driver, though looking at the individual scores it is lucky that the first two subtests have 60% of the overall weight - it is 2-3 times slower than the other drivers in subtests 3,5,8 and 10.
The new ATI driver is again almost 20% slower than the old one.

light-06: another easy victory for the XiG driver, the windows and ATI driver are close and DRI takes the rear.
The new ATI driver lost some performance, XiG and the windows driver gained some. However, DRI is ~30% slower than last time - interestingly, by looking at the subtests, you can see that it is not even half as fast in the wireframe tests (subtests 1 and 3), but actually slightly faster in the solid tests (subtests 2 and 4).

proe-02: In contrast to the last comparison, XiG is fastest again. The rendering errors this driver had in subtests 3 and 7 have been fixed, and as a result the performance has improved quite a bit (as the driver no longer renders things it doesn't need to). This is now the only specviewperf test the windows Catalyst driver is slower than the ATI Linux driver - and the windows driver even fails to render 2 subtests of it correctly: First image shows correct rendering (in this case from DRI), second one Catalyst 3.8.
correct proe 06 rendering Catalyst 3.8 proe 06

ugs-03: another easy win for XiG. There were some slight visual differences in tests 1-4 when comparing the ATI driver to the XiG driver, and judging by the images on the spec website the ATI driver seems to do the more correct rendering. However, ugs-03 is a complete disaster for the dri driver. Not only because of the performance (subtests 5-8 which are wireframe are ~10 times slower than either the XiG or ATI driver), but it couldn't render the first 4 tests correctly. Tests 1-4 were rendered black and white, additionally tests 3 and 4 also lacked transparency. Furthermore, the memory footprint was really large when using the dri driver, about 1.2GB which caused some swapping. Both the ATI and XiG driver used only around 300MB of memory! For the record, I've also tried software rendering (LIBGL_ALWAYS_INDIRECT set), but this apparently didn't fit into memory and swap space (1GB ram, 1GB swap) and just hang when all memory was exhausted (where's the OOM killer when you need it...). The excessive memory usage is likely caused by the inefficent handling of display lists, and should get fixed when Mesa 5.1 (6.0) will be merged with DRI (not before XFree86 4.4 though afaik).
What can't be seen in the benchmarks is that the setup time for some of the subtests was over 3 minutes under windows, all linux drivers (even the DRI driver which caused a lot of swapping) had much lower setup times, never exceeding 20-30 seconds.
Here are some screenshots (first ATI, then summit, then dri) of the 4th subtest:
ATI rendering ugs04 xig summit rendering ugs04 dri rendering ugs04 really incorrect
Compared to the last article, the dri driver again loses 20% (given how it looks, probably not really relevant). However, the ATI driver loses 55%, it's less than half as fast as the old version of the driver! Both the windows score and the XiG score remain unchanged.

previous page next page