https://bugs.winehq.org/show_bug.cgi?id=47121
Bug ID: 47121 Summary: Soulbringer displays only black screen in hardware rendering mode Product: Wine-staging Version: 4.7 Hardware: x86 URL: https://www.gog.com/game/soulbringer OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: gyebro69@gmail.com CC: gofmanp@gmail.com, leslie_alistair@hotmail.com, z.figura12@gmail.com Distribution: ---
Created attachment 64331 --> https://bugs.winehq.org/attachment.cgi?id=64331 terminal output
The screen turns black but the game is still running when the game is loading to the menu when any of the available hardware rendering modes is selected in the launcher (including DX6 and DX7 renderers). Software rendering works properly. The problem doesn't occur in vanilla Wine. No demo version is available.
The patch to blame: https://github.com/wine-staging/wine-staging/blob/master/patches/ddraw-Rende...
wine-4.7-177-gb479382737 (Staging) OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: GeForce GT 730/PCIe/SSE2 OpenGL core profile version string: 4.6.0 NVIDIA 418.52.05
https://bugs.winehq.org/show_bug.cgi?id=47121
--- Comment #1 from Béla Gyebrószki gyebro69@gmail.com --- Created attachment 64332 --> https://bugs.winehq.org/attachment.cgi?id=64332 +ddraw,+d3d log
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.
https://bugs.winehq.org/show_bug.cgi?id=47121
--- Comment #3 from Béla Gyebrószki gyebro69@gmail.com --- The patch works for me as well.
https://bugs.winehq.org/show_bug.cgi?id=47121
Józef Kucia joseph.kucia@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Fixed by SHA1| |ff47237edeab06212012edc91dc | |9b753dd474982 Resolution|--- |FIXED
--- Comment #4 from Józef Kucia joseph.kucia@gmail.com --- Should be fixed by https://source.winehq.org/git/wine.git/?a=commit;h=ff47237edeab06212012edc91dc9b753dd474982. Thanks Paul.
https://bugs.winehq.org/show_bug.cgi?id=47121
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #5 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Closing Fixed Staging issue.