[PATCH 3/5] wined3d: Handle changing the backbuffer format in wined3d_device_reset().

Henri Verbeet hverbeet at codeweavers.com
Thu Nov 24 15:52:34 CST 2011


---
 dlls/wined3d/device.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index d165806..e12f48a 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -5241,6 +5241,8 @@ static HRESULT updateSurfaceDesc(struct wined3d_surface *surface,
         while (surface->pow2Height < pPresentationParameters->BackBufferHeight) surface->pow2Height <<= 1;
     }
 
+    if (!(surface->resource.usage & WINED3DUSAGE_DEPTHSTENCIL))
+        surface->resource.format = wined3d_get_format(gl_info, pPresentationParameters->BackBufferFormat);
     surface->resource.multisample_type = pPresentationParameters->MultiSampleType;
     surface->resource.multisample_quality = pPresentationParameters->MultiSampleQuality;
 
@@ -5498,10 +5500,6 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
             && present_parameters->BackBufferCount != swapchain->presentParms.BackBufferCount)
         FIXME("Cannot change the back buffer count yet.\n");
 
-    if (present_parameters->BackBufferFormat != WINED3DFMT_UNKNOWN
-            && present_parameters->BackBufferFormat != swapchain->presentParms.BackBufferFormat)
-        FIXME("Cannot change the back buffer format yet.\n");
-
     if (present_parameters->hDeviceWindow
             && present_parameters->hDeviceWindow != swapchain->presentParms.hDeviceWindow)
         FIXME("Cannot change the device window yet.\n");
@@ -5572,6 +5570,13 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
         update_desc = TRUE;
     }
 
+    if (present_parameters->BackBufferFormat != WINED3DFMT_UNKNOWN
+            && present_parameters->BackBufferFormat != swapchain->presentParms.BackBufferFormat)
+    {
+        swapchain->presentParms.BackBufferFormat = present_parameters->BackBufferFormat;
+        update_desc = TRUE;
+    }
+
     if (present_parameters->MultiSampleType != swapchain->presentParms.MultiSampleType
             || present_parameters->MultiSampleQuality != swapchain->presentParms.MultiSampleQuality)
     {
-- 
1.7.3.4




More information about the wine-patches mailing list