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