As I've posted in a couple of the "Catalyst 8.X Driver Released" threads, I bought a new workstation a couple of months ago, and have been having problems with Enemy Territory: Quake Wars. For the record, the system is:
AMD Phenom 9750
Gigabyte GA-MA790X-DS4 Motherboard
1x 2GB 800MHz RAM
Gigabyte Radeon HD4850
My usual OS is Ubuntu 8.04 x86_64, which has serious problems running anything hardware-accelerated that's compiled for 32-bit x86 (but runs compiz and nexuiz 64-bit binaries fine). It's running a realtime kernel, but that seems to work as well as the generic kernel.
To troubleshoot, I installed a completely vanilla Ubuntu 8.04 i386-generic system on another partition, and it's now using Catalyst 8.8. Quake 4 works, Nexuiz works, ETQW had problems, but I've now got it to work.
With a fresh install, using any resolution and any of the menu-settable graphics levels, the graphics "fail" whenever the screen seems to get busy with detail, but the game continues on fine. On Catalyst 8.7, the screen froze on the current one or two frames, on 8.8 it spits huge oddly-textured triangles everywhere.
Looking through the bugzilla, it seems to be a variant of http://ati.cchtml.com/show_bug.cgi?id=485 , caused by the handling of Vertex Buffer Objects.
The solution that works on my system, then, is to create a "~/.etqwcl/base/autoexec.cfg" file, and put the line
seta r_useVertexBuffers "0"
This made the problem go away, but I haven't had time to do much testing with it yet. I had the game windowed at a small resolution with low-quality graphics (for testing), but once it worked I was sick of testing and just played the game for a while
It may have just been psychological, but it seemed to me that the frame rate dropped a little in this low-quality mode, which wouldn't bode well for full-screen high-quality settings.
There's some other settings (the full list is here), the ones I'm interested in are:
r_useVertexBuffers ... use ARB_vertex_buffer_object for vertexes
r_useVertexBufferStream ... Use stream instead of dynamic vbo's ( 0 = static 1 = dynamic 2 = stream
r_vertexBufferMegs ... [no description but sounds obvious]
- r_useVertexBuffers=0 (the big "off" switch) works, but I suspect carries a large performance hit
- I don't know what the difference in behaviour would be between stream/dynamic VBOs, and what performance implications they have
- As for r_vertexBufferMegs, I guess it could potentially reveal a bug if setting a limit helps. In the end, I have a feeling this is a "feature request" type of thing where full support for the extension just isn't implemented yet, but it's odd that problems with VBOs were noticed years ago on older id Tech 4 games on older hardware, and my newer hardware works with older id Tech 4 games but has problems with ETQW.
- There's also the fact that Michael has posted a few Radeon HD48X0 reviews/benchmarks on Phoronix with ETQW in the suite of tests, and I haven't seen any reference to graphics corruption or performance-impacting workarounds in them.
What I'm really asking, though, is if anyone has any experience with these sort of settings in ETQW or other games/programs, and any performance issues that come with them. It'd be really interesting if anyone from AMD has information on fglrx's VBO support