Originally posted by darkbasic
View Post
The gallium nine branch basically reworks gallium nine internals to enable to put the work of most commands in a thread (and the internal state is stored and maintained in the worker thread. The main thread keeps a copy of a few states it has to know for some calls). Some key functions that return result are implemented such that you don't need to wait on the worker thread. The branch is not yet finished and some more functions will get that treatment (and for now they wait for the worker thread to finish all queued job). A lot of games don't call any of such functions though during gameplay, and thus are already at full speed. It always waits worker thread completion when calling Present()
You can find some similarity with the system described by the d3d9 DDI documentation, and even if behaviour may be similar, implementations are different.
I don't know exactly the details of wine csmt (it has likely changed a lot since that 2013 thread).
Comment