Wine-Staging CSMT

From WineHQ Wiki
Jump to: navigation, search

When an application makes use of Direct3D on Windows, DirectX will implicitly create threads to decouple the actual drawing from the rest of the program. Vanilla Wine does not implement such a logic and instead directly executes the OpenGL calls without waiting for the call to be executed on the graphic card. This provides a somewhat similar performance but has the disadvantage that the order of drawing commands is no longer guaranteed to be correct.

In most of the games and programs you won't notice a difference between Windows and Wine, but in some applications you will encounter bugs like flickering geometry. This is caused by the changing drawing order in each frame. To solve this problem Stefan Dösinger worked on a feature called CSMT (command stream multi-threading) which implements the same logic as on Windows and additionally causes a performance boost. Wine Staging added this feature in version 1.7.33.

Enable/Disable CSMT

The CSMT changes are quite huge and may introduce some new regressions. We therefore used our DllRedirects feature to build a normal version of wined3d and a special version containing the CSMT patches. By default the CSMT feature is disabled, but it can be easily enabled through the Staging tab of winecfg:


Simply activate the CSMT checkbox as shown on the screenshot to enable the feature. If you experience any problems you can uncheck it again to disable the CSMT. Feel free to report any bugs related to CSMT in our bug tracker so that we can forward them to Stefan Dösinger.