http://bugs.winehq.org/show_bug.cgi?id=59631 --- Comment #33 from Stian Low <wineryyyyy@gmail.com> --- (In reply to Stian Low from comment #32)
I'll look closer at how dcomp depends on wined3d_swapchain_gl_rotate() differently than rendering pipeline used for those games otherwise fixed by removing rotate funcs.
Flicker mostly resolves via this 1 line fix to ~/tmp/wine_stianlow/dlls/dcomp/device.c::do_composite() call to IDXGISwapChain1_GetBuffer() to use backbuffer 0 (instead of BufferCount - 1) which is always the front buffer for attached MR-10567 patch that removes wined3d_swapchain_gl_rotate(): /* The front buffer is the last back buffer because the composition swapchain must * be created with DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL */ hr = IDXGISwapChain1_GetBuffer(swapchain, swapchain_desc.BufferCount - 1, &IID_IDXGISurface, (void **)&dxgi_surface); hr = IDXGISwapChain1_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&dxgi_surface); The intial login spinner/icon shows the most obvious remaining flicker/graphical glitch, but once logged in, the main window flickers considerably less in a mostly usable fashion resembling rendering prior to latest dcomp staging patches. Logs indicate fbo_blitter is used for my tests: 02f4:trace:d3d:swapchain_blit swapchain 02ABC3B8, context 0298BD98, src_rect (0,0)-(348,646), dst_rect (0,0)-(348,646). 02f4:trace:d3d:fbo_blitter_blit blitter 0298AA20, op 0, context 0298BD98, src_texture 02A94820, src_sub_resource_idx 0, src_location WINED3D_LOCATION_TEXTURE_RGB, src_rect (0,0)-(348,646), dst_texture 02A94820, dst_sub_resource_idx 0, dst_location WINED3D_LOCATION_DRAWABLE, dst_rect (0,0)-(348,646), colour_key 00000000, filter WINED3D_TEXF_NONE, resolve_format 00000000. Part of my reason for removing wined3d_swapchain_gl_rotate()/wined3d_swapchain_vk_rotate() is because GPU calls may be considered to handle swaps/rotations via wglSwapBuffers() and vkAcquireNextImageKHR(). However, even if those GPU calls may be considered valid for handling swap/rotation, CPU-based renderer may still require wined3d_swapchain_gl_rotate()/wined3d_swapchain_gl_rotate() since GPU-based mechanisms are not available. I will test forcing CPU-based rendering to determine if it that is a use case for keeping wined3d_swapchain_gl_rotate()/wined3d_swapchain_vk_rotate(). In the meantime, GPU-based rendering issues seem mostly resolved and remaining graphical glitches may be caused by additional bugs that need to be fixed within dcomp. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.