[Wine] Squeezing every last drop of performance out of DirectX

Brandon Mayes eff4eye at hotmail.com
Sun Apr 26 11:34:08 CDT 2009

Thanks for the reply, though I still have a few more questions:

> With 4 gigs ,actually 2 gigs since you're running a 32-bit
program, you could safely leave
> datacachesize/heapsize values to
default which is what 521000 or 256000.(?)

Why do that?  I'm increasing it to 1GB instead of using the default (be it 512 or 256), thus I am providing it more room to store things.

> Make sure you have the WM set to Metacity(no effects) not Compiz. So basically
> it's fullscreen wthout going fullscreen? ??

I think I am using Compiz.  Under System -> Preferences -> Appearance -> Visual Effects I have it set to Normal.  If I set it to none that disables Compiz right?  Assuming I do that do I need to reboot the machine or restart X (such as ctrl+alt+bksp) for the performance increases to take effect?  Or can I just restart Steam and it will run better without the need to restart anything?

As far as my windowed mode, I basically played with the -h option to steam until I found that the window fit perfectly on my desktop, between the top and bottom menu bars.  Here's a screenshot:


> network congestion(?) or related to running with such a low heapsize probably.

Highly unlikely.  This machine is attached to my 1Gbps router (and yes, it's using a CAT6 cable so I can actually achieve such speeds).  My Mac Mini is also wired in (it is my music server, my web server, etc.) and there are a few other laptops sometimes connected.  However, the game runs fine in Windows which is on a different partition on this same machine.  So why would the network be slow when I boot into Linux but not when I boot into Windows?  There is no massive downloading going on -- if anyone were to do that it would be me and not the wife, and certainly I wouldn't download a new ISO or anything while playing.  I think I can safely rule this out, especially since like I said, setting the UseGLSL=disabled key in the registy seems to keep the game from choking every few minutes.  The problem seems to be more related to the DirectX implementation than networking.

Also, why do you say I have a low heapsize?  If you assume that the default is 256MB then it's four times that size, and double the size of the default if it's 512MB.  I got 1048576 by increasing by a factor of 2.  Basically, you can start with 2, then 4, then 8, and so on if you want.  To be more efficient I started with 32768 (2^15) and doubled it several times until I got the exact number 1048576.  You said 256000 or 512000.  Notice those are 6 digits in length, my value is 7.  Thus, the value I am using is not low; on the contrary it is significantly larger than the values you suggested.

> ORM should be set to fbo to take advantage of the newest
> drivers and your hardware. The RegistryWiki -
> has all the fun Direct3D
settings info.

It looks like I'm running 180.11 but those are the newest available to me (I'm not compiling the nvidia drivers from source -- just using the ones that Ubuntu offers to me).  I did go and set a few more registy keys, including the ORM=fbo as you mentioned.  This is currently all of the keys I have set in there (not sure if the DDRender=opengl is really necessary):

DirectDrawRender = opengl
OffScreenRenderingMode = fbo
VideoMemorySize = 1024
VideoPciVendorID = 0x000010de
VideoPciDeviceID = 0x00000611

I found the vendor and device ID using lspci:

$ lspci -n | grep 0300
01:00.0 0300: 10de:0611 (rev a2)

> > I have installed DirectX 9.0c
> I
don't believe this is really necessary anymore. It seems to cause more
problems than it's worth. In any case, you already have WineD3D(X)
installed from a base wine install. At most you'd have to
download(dll-files.com) the d3dx9_36.dll to d3dx9_40.dlls / Xaudio
stuff to the windows/system32 directory depending on how much the app

Hmm...well I'm still a little confused about this.  By using the -dxlevel 81 option with Steam I'm forcing it to using DirectX 8.1, so I'm not really using the DirectX 9.0c stuff even though it is installed (like I said, setting -dxlevel 90 worked, but the FPS was maxing out around 10-12...just unplayable).

According to my registy and winecfg I already have d3dx9_36.dll (set to native) but I do not have 37, 38, 39, or 40.  Do I need those?

Also, I have a d3d8.dll which is set to builtin, a d3d9.dll set to builtin, but then there's a d3dx8.dll set to native.  Would it help if I copied over the d3d8.dll and d3d9.dll files from my Windows partition and then set these libraries to native?  Sorry, lots of questions I know, but I'm just not that familiar with DirectX.

I will also try a few more of the steam related tweaks.  Who know if they will help or not but I'll sure try.


Rediscover Hotmail®: Get quick friend updates right in your inbox. 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-users/attachments/20090426/51c992a6/attachment.htm>

More information about the wine-users mailing list