https://bugs.winehq.org/show_bug.cgi?id=43773
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Keywords| |download URL| |http://www.malighting.com/e | |n/products/control/control/ | |ma-lighting/grandma2-onpc/g | |ma2onpc-grandma2-onpc.html Status|UNCONFIRMED |NEW Hardware|x86 |x86-64
--- Comment #3 from Matteo Bruni matteo.mystral@gmail.com --- Thank you for the very clear instructions.
The application uses d3d9 to draw to multiple windows from a single device (via CreateAdditionalSwapChain()). In current wined3d this means using, and switching between, multiple GL contexts, given that contexts are "private" to the swapchain. The application also creates a bunch of queries and keeps using them the whole time. Given that wined3d keeps switching between GL contexts as the application presents the different swapchains, it often happens that a query gets polled when the current context is different from the one that was used at query creation time.
CSMT usually helps for this kind of issue but it won't in this case because it's multiple swapchains, rather than multiple threads, that cause wined3d to use different GL contexts.
I have a proof-of-concept patch that moves the context management to the wined3d device and reuses the same context for multiple swapchains as long as the pixel format matches (which fortunately seems to be the case for the application in question). I'll try to clean it up into shape at some point after 3.0, it seems like it could also be a decent stepping stone for handling d3d10+ swapchainless rendering.