2015-10-12 22:34 GMT+02:00 Stefan Dösinger stefan@codeweavers.com:
Sometimes the context won't be reusable because we need a specific context to access the WGL drawable. Afterwards we need to switch back to the caller's context. Bug 34574 is related to this. This is only relevant for backbuffer offscreen rendering, and in practise it is rare. It'll only matter if the application is blitting from an onscreen surface to a currently active offscreen one. For everything else the offscreen surface is copied into the texture when it is deactivated.
Note that in most cases the wined3d_context * structure is the same for both surfaces involved in the blit, but context->render_offscreen differs for source and destination. That's why context_restore needs a surface and not the old context.
I'm open to placing the extra context_acquire / context_release calls into the callers. We need them in 4 places: read_from_framebuffer, surface_blt_to_drawable, surface_blt_fbo and surface_load_fb_texture.
Yes, IMHO that would be better, although I haven't actually tried that so it might turn out to be bad in practice. Obviously ignore this suggestion altogether if Henri thinks otherwise :P