Henri Verbeet : wined3d: Handle changing the backbuffer format in wined3d_device_reset().

Alexandre Julliard julliard at winehq.org
Fri Nov 25 10:27:31 CST 2011


Module: wine
Branch: master
Commit: 094f64c823ed65629ebbec78a4b1f5e4583c0142
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=094f64c823ed65629ebbec78a4b1f5e4583c0142

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Nov 24 22:52:34 2011 +0100

wined3d: Handle changing the backbuffer format in wined3d_device_reset().

---

 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)
     {




More information about the wine-cvs mailing list