These are all Direct3D 11 applications, right? So Direct3D 9 state like WINED3D_RS_SRGBWRITEENABLE and WINED3D_SAMP_SRGB_TEXTURE shouldn't apply, correct?
Yes, D3D11 games so far and WINED3D_RS_SRGBWRITEENABLE and WINED3D_SAMP_SRGB_TEXTURE seems not to apply because focus was changed from srgb handling for vulkan to properly supporting flip swap_effect which applies to both gl and vulkan.
With current upstream Wine, the applications print the "Swapchain views not supported." FIXME with both the GL renderer and the Vulkan renderer, correct? I.e., the basic issue is that the applications end up rendering to the texture's "default" view, which differs from the RTV's format in terms of sRGB.
Yes, both GL and Vulkan log "Swapchain views not supported." FIXMEs which was kept for this patch until a solution is approved. Indeed the textures swapchain "default" view format is UNORM for flip swap_effect which requires RTV with SRGB format but creation is skipped because of the buffer_count > 1 FIXME constraint.
In the GL case, which blitter ends up being used for swapchain_blit(), and why? I think you're hinting it's the GLSL blitter, but we'd normally expect the FBO blitter (fbo_blitter_blit()) to be used here.
fbo_blitter_blit() is called by swapchain_blit() via raw_blitter_blit() forwarding according to Frostpunk splashscreen which flickers when wined3d_swapchain_gl_rotate() is not skipped: ``` 0194:trace:d3d:raw_blitter_blit Forwarding to blitter 00007FF9CFA74B50. 0194:trace:d3d:fbo_blitter_blit blitter 00007FF9CFA74B50, op 0, context 00007FF9CFA6F400, src_texture 00007FF968D79810, src_sub_resource_idx 0, src_location WINED3D_LOCATION_TEXTURE_RGB, src_rect (0,0)-(1280,960), dst_texture 00007FF968D79810, dst_sub_resource_idx 0, dst_location WINED3D_LOCATION_DRAWABLE, dst_rect (0,0)-(1280,960), colour_key 0000000000000000, filter WINED3D_TEXF_NONE, resolve_format 0000000000000000. ``` wglSwapBuffers has Steam overlay comment which seems related to UI flickering addressed by your staging patch: ``` /* call wglSwapBuffers through the gl table to avoid confusing the Steam overlay */ gl_info->gl_ops.wgl.p_wglSwapBuffers(context_gl->dc); ``` Without wglSwapBuffers the screen never updates and remains the initial clear color which is all white for Frostpunk and all black for others. Thanks for pointers to existing tests that need to be tested. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10567#note_139827