Henri Verbeet : dxgi: Introduce a helper function to convert dxgi multisample info to wined3d.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Aug 6 10:15:44 CDT 2015


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Aug  6 00:21:55 2015 +0200

dxgi: Introduce a helper function to convert dxgi multisample info to wined3d.

---

 dlls/dxgi/device.c       |  4 ++--
 dlls/dxgi/dxgi_private.h |  2 ++
 dlls/dxgi/factory.c      | 12 ++----------
 dlls/dxgi/utils.c        | 15 +++++++++++++++
 4 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/dlls/dxgi/device.c b/dlls/dxgi/device.c
index 2b8a05f..e288774 100644
--- a/dlls/dxgi/device.c
+++ b/dlls/dxgi/device.c
@@ -185,8 +185,8 @@ static HRESULT STDMETHODCALLTYPE dxgi_device_CreateSurface(IWineDXGIDevice *ifac
     FIXME("Implement DXGI<->wined3d usage conversion\n");
     surface_desc.resource_type = WINED3D_RTYPE_SURFACE;
     surface_desc.format = wined3dformat_from_dxgi_format(desc->Format);
-    surface_desc.multisample_type = desc->SampleDesc.Count > 1 ? desc->SampleDesc.Count : WINED3D_MULTISAMPLE_NONE;
-    surface_desc.multisample_quality = desc->SampleDesc.Quality;
+    wined3d_sample_desc_from_dxgi(&surface_desc.multisample_type,
+            &surface_desc.multisample_quality, &desc->SampleDesc);
     surface_desc.usage = usage;
     surface_desc.pool = WINED3D_POOL_DEFAULT;
     surface_desc.width = desc->Width;
diff --git a/dlls/dxgi/dxgi_private.h b/dlls/dxgi/dxgi_private.h
index 8703158..02e37ba 100644
--- a/dlls/dxgi/dxgi_private.h
+++ b/dlls/dxgi/dxgi_private.h
@@ -76,6 +76,8 @@ const char *debug_dxgi_format(DXGI_FORMAT format) DECLSPEC_HIDDEN;
 
 DXGI_FORMAT dxgi_format_from_wined3dformat(enum wined3d_format_id format) DECLSPEC_HIDDEN;
 enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format) DECLSPEC_HIDDEN;
+void wined3d_sample_desc_from_dxgi(enum wined3d_multisample_type *wined3d_type,
+        unsigned int *wined3d_quality, const DXGI_SAMPLE_DESC *dxgi_desc) DECLSPEC_HIDDEN;
 HRESULT dxgi_get_private_data(struct wined3d_private_store *store,
         REFGUID guid, UINT *data_size, void *data) DECLSPEC_HIDDEN;
 HRESULT dxgi_set_private_data(struct wined3d_private_store *store,
diff --git a/dlls/dxgi/factory.c b/dlls/dxgi/factory.c
index a66585e..a716e1b 100644
--- a/dlls/dxgi/factory.c
+++ b/dlls/dxgi/factory.c
@@ -211,16 +211,8 @@ static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChain(IDXGIFactory1 *ifa
     wined3d_desc.backbuffer_height = desc->BufferDesc.Height;
     wined3d_desc.backbuffer_format = wined3dformat_from_dxgi_format(desc->BufferDesc.Format);
     wined3d_desc.backbuffer_count = desc->BufferCount;
-    if (desc->SampleDesc.Count > 1)
-    {
-        wined3d_desc.multisample_type = desc->SampleDesc.Count;
-        wined3d_desc.multisample_quality = desc->SampleDesc.Quality;
-    }
-    else
-    {
-        wined3d_desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
-        wined3d_desc.multisample_quality = 0;
-    }
+    wined3d_sample_desc_from_dxgi(&wined3d_desc.multisample_type,
+            &wined3d_desc.multisample_quality, &desc->SampleDesc);
     wined3d_desc.swap_effect = WINED3D_SWAP_EFFECT_DISCARD;
     wined3d_desc.device_window = desc->OutputWindow;
     wined3d_desc.windowed = desc->Windowed;
diff --git a/dlls/dxgi/utils.c b/dlls/dxgi/utils.c
index be2b5f7..ea88567 100644
--- a/dlls/dxgi/utils.c
+++ b/dlls/dxgi/utils.c
@@ -325,6 +325,21 @@ enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format)
     }
 }
 
+void wined3d_sample_desc_from_dxgi(enum wined3d_multisample_type *wined3d_type,
+        unsigned int *wined3d_quality, const DXGI_SAMPLE_DESC *dxgi_desc)
+{
+    if (dxgi_desc->Count > 1)
+    {
+        *wined3d_type = dxgi_desc->Count;
+        *wined3d_quality = dxgi_desc->Quality;
+    }
+    else
+    {
+        *wined3d_type = WINED3D_MULTISAMPLE_NONE;
+        *wined3d_quality = 0;
+    }
+}
+
 HRESULT dxgi_get_private_data(struct wined3d_private_store *store,
         REFGUID guid, UINT *data_size, void *data)
 {




More information about the wine-cvs mailing list