https://bugs.winehq.org/show_bug.cgi?id=47121
--- Comment #2 from Paul Gofman gofmanp@gmail.com --- Created attachment 64335 --> https://bugs.winehq.org/attachment.cgi?id=64335 wined3d: Check if destination texture is FBO attachable in glsl_blitter_supported().
I've tested the game (from GOG.com). The attached patch should be fixing the problem (it is patching wined3d, not ddraw and is independent of the blamed staging patch).
The game is using IDirect3DDevice7_Load() to copy textures. Without the staging patch the textures are not GPU accessible and copy operations end up in CPU blitter. When staging patch is there, it directs the textures to video memory and the texture copy ends up in GLSL blitter. Which cannot actually blit them because the destination texture has DXT1 format which is not FBO attachable. The bug with current Staging can also be workarounded by setting HKCU/Software/Wine/Direct3D/OffscreenRenderingMode to backbuffer. The attached patch adds a check to GLSL blitter which prevents using the blitter for non FBO attachable formats, and texture copies end up in CPU blitter again.
While the issue in this game is triggered by a tricky staging patch, it seems to me that the check should be present in mainstream Wine, as the same problem can potentially happen elsewhere regardless of staging patches. I will suggest the patch to Wine.