The majority of the patches have now been merged into Wine CVS, if your trying to play games with wine please try the latest wine release. This patch is intended for beta testing the merging of the DirectX 8 and 9 codebase and is primererraly intended for regression testing of games that currently work in Wine, but should also make more DirectX 8 games playable and with better graphics.
Whats in it for DirectX 8:
Whats out:
Reporting bugs Bugs should be reported at bugs.winehq.org Things to include in a bug report:
Playable DirectX 8 Games:
It's been a while but here the latest release, attention has been focused on performance and stabilising some games. There are a lot of changes in this release (about a 500k diff), as much regression testing as possible has been done fixing a lot of issues in earlier builds but I'm sure there are a few bugs that will have slipped through.
New feature and changes:
To install this patch I recomend linux gamers WineCVS installation script, select profile 4 for wine with the Directx 9 patches.
Heap fragmentation had been starting to cause some problems, because of this performance improvements were put ahead of shaders. So for this release I've only inclued hardware vertex shader, pixel shaders should be implemented in the next releas or two depending on the ammout of regression and other bugs that popup.
I've been performance tuning with an AMD Athlon 2000+ 1GM, AGP x4, ATI-9660 256MB (capped to 64MB in wined3d). Some examples of the performance improvements I've obtained are:
Performance tuning still needs to be done on other systems, it would be useful if someone could run some tests with a GeForce card, there are a number of flags wined3d_private.h that control some of the performance options: WORD_ALIGN_X8R8G8B8, SOFTWARE_REPACKING, USE_VBO and INDEXBUFFERCACHE. SOFTWARE_REPACKING was primarily implemented to work around ATI's slow drivers so DirectX may faster if GeForce users to disable the flag. You can use WINEDEBUG=d3d_timings to get a dump of the profiling data to stdout to see which areas of the code, if any, are causing the bottleneck.
VBOs are still in a prototype stage and for now colour fixups have been taken out of the VBO pipeline and will be replaced with custom shaders sometime soon. Because of this I've disabled VBOs by default, but if you don't care about the odd colour artifact or the possibility that the game will hang! you can enable VBOs in wined3d_private.h by changing the line #define USE_VBO 0 to #define USE_VBO 1 and recompiling to see the performance gains and to do some testing. VBOs are working quite well and I haven't had and geometry issues with ATI's drivers so I'm not sure how Cedega have managed to have problems.
Vertex shaders have been ported from d3d8, loading arrays and the cross compiler have been fixed with the parser extended to work with vertex shaders 2 and 3. Only shaders <2 are fully supported by opengl untill a GL shader languange cross compiler is written. I have had a few problems with games that use vertex shaders for blends e.g. The increadables or Evil Genius.
For anyone interested in fixing any faults they come across WINEDEBUG=trace+d3d9_filelog will make d3d9 generate a c file /tmp/wined3d_debugsession.c that can be compiled using the code in wine/dll/d3d9/tests to replay all the operations that have been performed, I've also put together some simple tools to converted the data output into TGA format for the images and CSV format for the vertex data. The file gets big very quickly, so the best thing to do is identify the textures that should be used, using the conversion tools, and then finding the area in the generated code where those textures are used and compiling the sections between device_presents or device_SetRenderTargets.
Finally, if you don't have an accelerated graphics card everything should work fine under Mesa, all be it slowly.
n.b. I've finally got ADSL to be switched on again so future releases should be more frequent.
Some people were having problems with the earlier patch, so I've put a new one together : d3d9patch.2005-04-28-2.diff.bz2, in this patch I've disabled the vertex shader processing so that the characters appear in Kohan 2, Axis and Allies 2 and Evil Genius, Kohan 2 and Axis and Allies should be reasonable playable, but the characters in Evil Genius have no animation so it's not quite so playable.
At the moment I'm working on matching up opengl's state management and DirectX's state management a lot better, this should increase stability and help prevent regression by forcing the correct states prior to rendering and simplifying the pipeline. It should also significantly reduce the number of state changes which should result in a nice performance boost. After that it's probably a good time to move shaders across which should help to get a few more games working nicely.
Thanks for everyones support, DirectX is starting to stabilises nicely and a few games are now almost perfect in therms of graphics support.
I've just moving house recently and for some reason my ISP decided to pull my website which is why I've been AWOL for a while, some of the donations are going towards a more permanent fix so that this doesn't happen again and I'll get back to answering emails ASAP. For now here's a quick snapshot release of the DirectX 9 patch against yesterdays winecvs
With this release I've again been focusing on improving the architecture of wined3d for added stability, performance and easier support of all or the DirectX functionality.
New features in the release...Games now working
Games almost working
HKEY_LOCAL_MACHINE/Software/WineThey are:
HKEY_LOCAL_MACHINE/Software/Wine/dinput mousehack = "enabled|disabled" default = enabledSome examples of games that need this value setting are The increadables needs to have the hack enabled and Evil genius needs the hack disabled.
HKEY_LOCAL_MACHINE/Software/Wine/directx pbuffersupport = "enabled|disabled" default = disabled
HKEY_LOCAL_MACHINE/Software/Wine/directx sharedpbuffers= "enabled|disabled" default = disabledThe second key enables the sharing of pbuffers, this keeps memory down and is required for Axis and Allies, Kohan 2 and pirated if you have an ATI card (because pbuffers cannot be deleted with ATI's drivers). Disabling shared pbuffers slightly improves compatibility between wined3d and DirectX.