From eab34f0d36790a75f116ba1eed5b7f2c40f70906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Fri, 11 Dec 2009 14:22:08 +0100 Subject: [PATCH 03/18] WineD3D: Don't enable render_to_fbo on single buffered swapchains --- dlls/wined3d/device.c | 9 +++++++-- dlls/wined3d/swapchain.c | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index a55f3e6..a45cf91 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -6527,8 +6527,13 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Reset(IWineD3DDevice* iface, WINED3DPRE RECT client_rect; GetClientRect(swapchain->win_handle, &client_rect); - if(swapchain->presentParms.BackBufferWidth != client_rect.right || - swapchain->presentParms.BackBufferHeight != client_rect.bottom) + if(swapchain->presentParms.BackBufferCount == 0) + { + TRACE("Single buffered rendering\n"); + swapchain->render_to_fbo = FALSE; + } + else if(swapchain->presentParms.BackBufferWidth != client_rect.right || + swapchain->presentParms.BackBufferHeight != client_rect.bottom ) { TRACE("Rendering to FBO. Backbuffer %ux%u, window %ux%u\n", swapchain->presentParms.BackBufferWidth, diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 27157be..e74cfc8 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -720,6 +720,7 @@ HRESULT swapchain_init(IWineD3DSwapChainImpl *swapchain, WINED3DSURFTYPE surface swapchain->presentParms = *present_parameters; if (wined3d_settings.offscreen_rendering_mode == ORM_FBO + && present_parameters->BackBufferCount > 0 && (present_parameters->BackBufferWidth != client_rect.right || present_parameters->BackBufferHeight != client_rect.bottom)) { -- 1.6.4.4