Lots of 3D games such as Team Fortress 2, Audiosurf or Stalker have very low performance in comparison to running on the same computer on Windows. What can I do to improve it? What developers have still to implement to fully support 3D rendering?
Couple of things: One, use: WINEDEBUG=-all as part of env. Also, binding the process (game) to a single core, if you are in a multi-core system, this can be done using: taskset -c <core number>, for instance: taskset -c 0 wine wow.exe Also, once a process has started, you can change its nice value to -10. These all give a slight boost to performance, I would also check the appdb for a given app and see if there are registry tweaks and/or game settings that help.
Alright, my activator for Team Fortress 2 is: env WINEPREFIX="/home/arkadiusz/.wine" wine "C:\program files\steam\steam.exe" -applaunch 440 Should I change it to something like this? env WINEPREFIX="/home/arkadiusz/.wine" WINEDEBUG=-all taskset -c 0 wine "C:\program files\steam\steam.exe" -applaunch 440 Also, what should I write if I want to launch it from console?
Fazer wrote:> Alright, my activator for Team Fortress 2 is: > > env WINEPREFIX="/home/arkadiusz/.wine" wine "C:\program files\steam\steam.exe" -applaunch 440 > > Should I change it to something like this? > > env WINEPREFIX="/home/arkadiusz/.wine" WINEDEBUG=-all taskset -c 0 wine "C:\program files\steam\steam.exe" -applaunch 440 > > Also, what should I write if I want to launch it from console?For most games you should use dx8 modes. For example for TF2 that would be: Code: env WINEPREFIX="/home/arkadiusz/.wine" WINEDEBUG=-all wine "C:\program files\steam\steam.exe" -applaunch 440 -dxlevel 81 For stalker - select static lighting in graphics options.
On Mon, Sep 1, 2008 at 5:39 AM, Fazer <wineforum-user at winehq.org> wrote:> Lots of 3D games such as Team Fortress 2, Audiosurf or Stalker have very low performance in comparison to running on the same computer on Windows. What can I do to improve it? What developers have still to implement to fully support 3D rendering? > > > > > >What video card/drivers?
On Mon, Sep 1, 2008 at 8:23 AM, Fazer <wineforum-user at winehq.org> wrote:> Alright, my activator for Team Fortress 2 is: > > env WINEPREFIX="/home/arkadiusz/.wine" wine "C:\program files\steam\steam.exe" -applaunch 440 > > Should I change it to something like this? > > env WINEPREFIX="/home/arkadiusz/.wine" WINEDEBUG=-all taskset -c 0 wine "C:\program files\steam\steam.exe" -applaunch 440Yes.> Also, what should I write if I want to launch it from console? >WINEPREFIX="/home/arkadiusz/.wine" WINEDEBUG=-all taskset -c 0 wine "C:\program files\steam\steam.exe" -applaunch 440
vitamin wrote:> You talking about it like it's 10 functions that just need to be implemented. It's much MUCH more complicated then that. And Wine's d3d9 will never be 100% the same as the native one. > And don't forget driver differences as well.I'm sorry it sounded like an easy task, I do know it takes lots of effort and time to progran - and I appreciate your work. 3vi1 wrote:> Every day. Little by little. SmileThat's all you had to say ;-) austin987 wrote:> What video card/drivers?Gefore 8800 GT 512 MB, drivers nvidia-glx-new-envy 173.14.12. I'm yet to test how much performance I'll gain from your advices, but thanks in advance ;-)
I didn't realize I was starting a flamewar when I told the OP to bind the process... The reason I believe there is a performance difference (warning, subjective), I think has more to do with the linux scheduler. If I try to run several programs at once, for whatever reason, it appears the linux scheduler passes the process around like a party favor (I have a quad core machine). When I bind the process, almost all game stuttering (which is only occasional, same with music stuttering) stops. I think this is directly related to the cost of the context switch (and flushing the cache), which you reduce by binding the process. I really wish I understood directx better, it's entirely not my field. However, in regards to the programs being CPU dependent, I've often wondered about the implementation, like math.c. For instance, you have the following code: Code: D3DXPLANE* WINAPI D3DXPlaneTransformArray( D3DXPLANE* out, UINT outstride, CONST D3DXPLANE* in, UINT instride, CONST D3DXMATRIX* matrix, UINT elements) { UINT i; TRACE("\n"); for (i = 0; i < elements; ++i) { D3DXPlaneTransform( (D3DXPLANE*)((char*)out + outstride * i), (CONST D3DXPLANE*)((const char*)in + instride * i), matrix); } return out; } Which calls: Code: D3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, CONST D3DXPLANE *pplane, CONST D3DXMATRIX *pm) { CONST D3DXPLANE plane = *pplane; pout->a = pm->u.m[0][0] * plane.a + pm->u.m[1][0] * plane.b + pm->u.m[2][0] * plane.c + pm->u.m[3][0] * plane.d; pout->b = pm->u.m[0][1] * plane.a + pm->u.m[1][1] * plane.b + pm->u.m[2][1] * plane.c + pm->u.m[3][1] * plane.d; pout->c = pm->u.m[0][2] * plane.a + pm->u.m[1][2] * plane.b + pm->u.m[2][2] * plane.c + pm->u.m[3][2] * plane.d; pout->d = pm->u.m[0][3] * plane.a + pm->u.m[1][3] * plane.b + pm->u.m[2][3] * plane.c + pm->u.m[3][3] * plane.d; return pout; } There must be a way to do this in parallel on the GPU instead of on the CPU. I have no expertise in this area, and not even going to pretend I know what I'm talking about. I'm just curious if many of these maths functions could be parallelized on the GPU (even older GPU's), does directx really do it this way?