Latest GPL and ATI Oddity

For reference you can see my Radeon page, Bob Simpson's GPL FAQ, and the Radlinker home page.

Go here for the short answer!

Here's what happened:

  1. I upgraded my system by putting a second 512 Meg stick of RAM in it.
  2. I upgraded to the new ATI Catalyst drivers.
  3. All games, and simulators ran better, so I re-tweaked the video setup to make it even faster.

So... This is an ASUS P4S533-MX board, P4 2Gig overclocked to 2.67 GHz, 1 Gig PC3200 RAM operating at PC2700 speed - the limit of the motherboard - and a Radeon 9000 All-in-Wonder (on-board TV tuner, 64 Meg DDR RAM, and an upgraded cooling fan) running XP Pro.

I ran offline practice for a Sebring race with no problems, but about 20 minutes into the online practice prior to the race I crashed back to VROC. I rejoined hoping this was a connection hiccup, and started the race with no problems. Half way round the first lap of the race I crashed back to VROC again. Note that this is not quite the more common CTD Bob refers to, and there was a Windows error message referencing rastD3D7.dll, the D3D driver for GPL - obviously a video problem. The last time this happened, the problem was my Radeon overheating, so this is the first thing I looked at. Fan still spinning, and temp just fine - I have an infrared pyrometer I use to measure the temperature directly.

Long story short - I had forgotten that this particular Radeon hates to be overclocked, but the failure isn't evident as I usually practice offline without any AI on the track - a low video load compared to a full grid online. During my re-tweaking I had overclocked the card about 10% - the recommended maximum.

During this re-tweaking effort I ran through Bob's advice in the GPL FAQ, and a lot of the attached stuff, and reread the 'readmeD3D.txt' file that comes with the D3D patch for GPL, and should have landed in your GPL directory.. Several things came to light, and here's the resulting section from my 'core.ini' file:

   value3 = Direct3D7:D3DDevice:0 ; do not change
   value4 = Direct3D7:TossHighestMip:0 ; do not change
   value5 = Direct3D7:DoubleMirrorResWidth:0 ; do not change
   value6 = Direct3D7:DoubleMirrorResHeight:0 ; do not change
   value7 = Direct3D7:DirectMirrorRendering:1 ; do not change
   value8 = Direct3D7:DisableZBuffer:0 ; do not change
   value9 = Direct3D7:AlphaThreshold:240 ; do not change
   value10 = Direct3D7:TransparentMipsDrawOrder:0 ; do not change
   value11 = Direct3D7:TrilinearFiltering:1 ; do not change
   value12 = Direct3D7:AnisotropicFiltering:0 ; do not change
   value13 = Direct3D7:LODBias:-50 ; do not change
   [ Direct3D7 ]
   D3DDevice = 0
   TossHighestMip = 0
   TrilinearFiltering = 1
   DoubleMirrorResHeight = 1
   DoubleMirrorResWidth = 1
   DirectMirrorRendering = 0
   DisableZBuffer = 0 ; As per power settings in readme
   AlphaThreshold = 1 ; As per power settings in readme
   TransparentMipsDrawOrder = 1 ; As per power settings in readme
   AnisotropicFiltering = 16 ; As per power settings in readme. Default was 4
   LODBias = -50 ; As per power settings in readme

I have highlighted the key differences from my previous 'core.ini' file. I also enabled the Z-buffer in the ATI Catalyst Control Center. Note that the authors, in the 'readmeD3D.txt' file claim a 60% frame rate improvement from using the Z-buffer.

I have one more piece of information to share with you. Here's a section from my 'core.ini' file prior to rereading the 'readmeD3D.txt' file:

   Value3 = Direct3D7:D3DDevice:0
   Value4 = Direct3D7:TossHighestMip:0
   Value5 = Direct3D7:TrilinearFiltering:0
   Value6 = Direct3D7:DoubleMirrorResWidth:0
   Value7 = Direct3D7:DoubleMirrorResHeight:0
   Value8 = Direct3D7:DirectMirrorRendering:0
   Value9 = Direct3D7:DisableZBuffer:0
   Value10 = Direct3D7:TransparentMipsDrawOrder:0
   Value11 = Direct3D7:TrilinearFiltering:1
   Value12 = Direct3D7:AnisotropicFiltering:0
   Value13 = Direct3D7:LODBias:-50

I was going to make you hunt for the oddity, but that might seem a bit unfair to those not used to looking at source code. However, can you see what's not there. The value9 = Direct3D7:AlphaThreshold:240 entry is missing. However, I'm not sure this makes a difference. As a past programmer, and systems administrator, here's how I read these lines: The default settings are given by the Value## = XX lines, and those you're allowed to change are overriden in the [ Direct3D7 ] section later on. It looks to me like GPL reads the file from top to bottom (very common for configuration files), and sets the value of various environmental variables for its own internal use. I think it sets a value 'TrilinearFiltering' to zero, and then sets it to one. This is the same effect as setting it to one in the first place. The more important question is, when GPL reads the [ Direct3D7 ] section later on, does it create variables that are missing, or does it just override those that already exist. If the latter, then the 'AlphaThreshold' variable doesn't exist, and cannot be overriden. If that is the case, it is most likely ignored, and so never set. Anyway... The good sections shown above, along with the ATI default settings, except for enabling a Z-buffer, give fantastic performance. I'm running with everything turned on in GPL, and the GPL details slider set to 95 on a 1280x1024 screen. This gives a full 36 frames per second (GPL's limit) during the race, but a dip to a useable 28 fps on a full grid with all the GPLEA cars, at a graphics-intensive stadium (LeMans Sarthe).

Conclusions:

  1. For some strange reason, it's ill-advised to try and overclock the Radeon 9000 All-in-Wonder. I cannot speak about other ATI cards, but I have been able to successfully overclock a 7200 VE.
  2. System RAM makes a huge difference to game frame rates. I thought 512M was enough, and most people will tell you anything beyond that is overkill, but bringing my system up to 1G RAM made a massive difference to my other racing sims as well: F1 Challenge, GTR, rFactor.
  3. Windows XP is strange, and seriously undocumented. Killing all non-essential processes prior to online gaming - a common practice - still leaves XP using about 500M of RAM just sitting there. This is before I even start GPL.
Hosted by www.Geocities.ws

1