https://bugs.winehq.org/show_bug.cgi?id=39852
--- Comment #3 from Sergey Isakov isakov-sl@bk.ru --- I understand. There is no bug if set offscreen_rendering_mode = ORM_BACKBUFFER. The bug is only if FBO+OffscreenDisabled. In this case color_format = WINED3DFMT_B8G8R8X8_UNORM (no transparency). In other cases {OffscreenRenderingMode, AlwaysOffscreen} the final color_format will be WINED3DFMT_B8G8R8A8_UNORM (with transparency).
For backbuffer the correction is here: ~~~~ /* In case of ORM_BACKBUFFER, make sure to request an alpha component for * X4R4G4B4/X8R8G8B8 as we might need it for the backbuffer. */ if (wined3d_settings.offscreen_rendering_mode == ORM_BACKBUFFER) { auxBuffers = TRUE;
if (color_format->id == WINED3DFMT_B4G4R4X4_UNORM) color_format = wined3d_get_format(gl_info, WINED3DFMT_B4G4R4A4_UNORM); else if (color_format->id == WINED3DFMT_B8G8R8X8_UNORM) color_format = wined3d_get_format(gl_info, WINED3DFMT_B8G8R8A8_UNORM); } ~~~
As I see fbo+AllwaysOffscreen=disable also requires same correction, i.e. unconditionally request ~~~ if (color_format->id == WINED3DFMT_B8G8R8X8_UNORM) color_format = wined3d_get_format(gl_info, WINED3DFMT_B8G8R8A8_UNORM); ~~~ What is the reason to this restriction? Is it cause other bugs?