Actual situation is, that wine has to translate DirectX => OpenGL => Gallium, which add complications and brings inefficiency. What we can do about it? It’s easy, skip OpenGL!
UPDATE: For actual information about nine state tracker use wiki page (ignore warning, certificate is self-signed)
Most opensource drivers were migrated to Gallium framework. Thanks to Gallium framework is possible simply extend all drivers, by state trackers (ST) with different functionality.
We already have state trackers for OpenCL, OpenVG etc., so long time ago zhasha wrote Gallium Nine tracker, which cover D3D9 API. Zhasha also wrote extension, which allow Wine to use this ST (DirectX => Gallium). Then left his work. Some time passed and chrisbmr picked up zhasha work and moved it into working state, where is possible run games (like Crysis, Bioshock etc.). Of course, not all games will probably work for you. For these which will work, you’ll get reduced cpu usage and probably better performance.
After some excitement, Chrismbr also abadoned his code (he also made some attempts for DX10 and 11, unfortunately Gallium framework wasn’t ready, so he didn’t finished it.
In my case BioShock runs with gallium-nine about 35-45 fps, which is nice. Without I get from my on-cpu AMD 6550D graphic card only 23-35 fps (tested from saved point). So – difference between playable and “poor performance”.
[ game: resolution 1920×1080, all graphic settings off; hw: gpu clock 720 Mhz, memory 1866 Mhz ]
How to ?
Gentoo users can run
USE="nine" emerge -av1 mesa::ixit wine::ixit
Actual informations are placed at wiki
Have fun and beware reporting bugs is useless, RATHER FIX the code and send patches/fixes or pull request!
If you can help, join IRC channel #d3d9 on freenode and be patient. It take while, until people join.
Share your results! Benchmark it, how much performance improved 🙂
You can see games frame rate running it with prefix
GALLIUM_HUD="cpu, fps" wine Bioshock.exe
Gameplay under Gallium Nine (beware, in youtube are old links to chrismbr github, not up-to-date):