From: Stian Low <wineryyyyy@gmail.com> --- dlls/wined3d/swapchain.c | 13 +++++++++---- dlls/wined3d/view.c | 12 ------------ 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 4c20587b81d..d2f540c547e 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -645,8 +645,10 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, wined3d_texture_load_location(back_buffer, 0, context, back_buffer->resource.draw_binding); - swapchain_blit(swapchain, context, src_rect, dst_rect); + if (gl_info->supported[ARB_FRAMEBUFFER_SRGB]) + gl_info->gl_ops.gl.p_glDisable(GL_FRAMEBUFFER_SRGB); + swapchain_blit(swapchain, context, src_rect, dst_rect); if (swapchain->device->context_count > 1) { WARN_(d3d_perf)("Multiple contexts, calling glFinish() to enforce ordering.\n"); @@ -660,7 +662,9 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, if (context->d3d_info->fences) wined3d_context_gl_submit_command_fence(context_gl); - wined3d_swapchain_gl_rotate(swapchain, context); + /* Skip wined3d_swapchain_gl_rotate() to fix flickering for swapchain buffer_count > 1 + * required for support of DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 0x3 + * https://gitlab.winehq.org/wine/wine/-/merge_requests/10567 */ TRACE("SwapBuffers called, Starting new frame\n"); @@ -1286,8 +1290,9 @@ static void swapchain_vk_present(struct wined3d_swapchain *swapchain, const RECT } } - wined3d_swapchain_vk_rotate(swapchain, context_vk); - + /* Skip wined3d_swapchain_vk_rotate() to fix flickering for swapchain buffer_count > 1 + * required for support of DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 0x3 + * https://gitlab.winehq.org/wine/wine/-/merge_requests/10567 */ wined3d_texture_validate_location(swapchain->front_buffer, 0, WINED3D_LOCATION_DRAWABLE); wined3d_texture_invalidate_location(swapchain->front_buffer, 0, ~WINED3D_LOCATION_DRAWABLE); diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index a506b0c6f18..79e06e706ae 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -620,12 +620,6 @@ static void wined3d_render_target_view_gl_cs_init(void *object) debug_d3dformat(resource->format->id), debug_d3dformat(view_gl->v.format->id)); return; } - if (texture_gl->t.swapchain && texture_gl->t.swapchain->state.desc.backbuffer_count > 1) - { - FIXME("Swapchain views not supported.\n"); - return; - } - create_texture_view(&view_gl->gl_view, texture_gl->target, desc, texture_gl, view_gl->v.format); } } @@ -930,12 +924,6 @@ static void wined3d_render_target_view_vk_cs_init(void *object) return; } - if (texture_vk->t.swapchain && texture_vk->t.swapchain->state.desc.backbuffer_count > 1) - { - FIXME("Swapchain views not supported.\n"); - return; - } - if (resource->bind_flags & WINED3D_BIND_RENDER_TARGET) vk_usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; if (resource->bind_flags & WINED3D_BIND_DEPTH_STENCIL) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10567