https://bugs.winehq.org/show_bug.cgi?id=55021
--- Comment #2 from Paul Gofman pgofman@codeweavers.com --- I looked into this a bit. The game indeed uses SetPixelFormat() before creating swapchain for some reason, that's why directly setting pixel format fails (after the referenced commit). Backup context is successfully created, but then swapchain_blit_gdi() cannot blit it because the format the game uses for swapchain is WINED3DFMT_R8G8B8A8_UNORM and there is no D3DDDIFMT_ for this format which is allowed for memory GDI dc. Thus the black screen as the fallback GDI blit doesn't actually happen.
I don't immediately see a good and easy way out from here. The commit itself is not exactly regressive, the game is not functional anyway before it (here it is not even a slideshow but the whole desktop is blocked due to constant pixel format setting from wined3d which currently involves recreating child window).
The easiest is to create dc for D3DDDIFMT_A8R8G8B8 and convert byte order in memory, although I am not sure it is a good way to go.
Probably the better (but complicated) way is to do something better for internal pixel format management between wined3d and winex11.drv and do some blitting from offscreen window in winex11 (similar to how child window rendering is implemented). But it has certain complications on winex11 part, not quite sure if it worth it if Vulkan backend works.