[PATCH 4/5] wined3d: Get rid of the WINED3DPRESENT_PARAMETERS typedef.

Henri Verbeet hverbeet at codeweavers.com
Fri Dec 2 01:15:52 CST 2011


---
 dlls/d3d10core/device.c        |    6 +-
 dlls/d3d8/device.c             |  154 +++++++++++++++---------------
 dlls/d3d8/swapchain.c          |   60 ++++++------
 dlls/d3d9/device.c             |  171 +++++++++++++++++----------------
 dlls/d3d9/swapchain.c          |   98 ++++++++++---------
 dlls/ddraw/ddraw.c             |   46 +++++-----
 dlls/dxgi/device.c             |    8 +-
 dlls/dxgi/dxgi_private.h       |    2 +-
 dlls/dxgi/factory.c            |   41 ++++----
 dlls/dxgi/swapchain.c          |    4 +-
 dlls/wined3d/context.c         |    4 +-
 dlls/wined3d/device.c          |  207 +++++++++++++++++++++-------------------
 dlls/wined3d/stateblock.c      |    4 +-
 dlls/wined3d/surface.c         |   10 +-
 dlls/wined3d/swapchain.c       |  144 ++++++++++++++--------------
 dlls/wined3d/wined3d.spec      |    2 +-
 dlls/wined3d/wined3d_private.h |    2 +-
 include/wine/wined3d.h         |   50 +++++-----
 include/wine/winedxgi.idl      |    2 +-
 19 files changed, 511 insertions(+), 504 deletions(-)

diff --git a/dlls/d3d10core/device.c b/dlls/d3d10core/device.c
index 2a84c98..750ee97 100644
--- a/dlls/d3d10core/device.c
+++ b/dlls/d3d10core/device.c
@@ -1513,13 +1513,13 @@ static HRESULT CDECL device_parent_create_volume(struct wined3d_device_parent *d
 }
 
 static HRESULT CDECL device_parent_create_swapchain(struct wined3d_device_parent *device_parent,
-        WINED3DPRESENT_PARAMETERS *present_parameters, struct wined3d_swapchain **swapchain)
+        struct wined3d_swapchain_desc *desc, struct wined3d_swapchain **swapchain)
 {
     struct d3d10_device *device = device_from_wined3d_device_parent(device_parent);
     IWineDXGIDevice *wine_device;
     HRESULT hr;
 
-    TRACE("device_parent %p, present_parameters %p, swapchain %p\n", device_parent, present_parameters, swapchain);
+    TRACE("device_parent %p, desc %p, swapchain %p\n", device_parent, desc, swapchain);
 
     hr = d3d10_device_QueryInterface(&device->ID3D10Device_iface, &IID_IWineDXGIDevice,
             (void **)&wine_device);
@@ -1529,7 +1529,7 @@ static HRESULT CDECL device_parent_create_swapchain(struct wined3d_device_parent
         return E_FAIL;
     }
 
-    hr = IWineDXGIDevice_create_swapchain(wine_device, present_parameters, swapchain);
+    hr = IWineDXGIDevice_create_swapchain(wine_device, desc, swapchain);
     IWineDXGIDevice_Release(wine_device);
     if (FAILED(hr))
     {
diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index bbc69b4..88a5c4b 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -561,30 +561,30 @@ static HRESULT WINAPI IDirect3DDevice8Impl_Reset(IDirect3DDevice8 *iface,
         D3DPRESENT_PARAMETERS *pPresentationParameters)
 {
     IDirect3DDevice8Impl *This = impl_from_IDirect3DDevice8(iface);
-    WINED3DPRESENT_PARAMETERS localParameters;
+    struct wined3d_swapchain_desc swapchain_desc;
     HRESULT hr;
 
     TRACE("iface %p, present_parameters %p.\n", iface, pPresentationParameters);
 
     wined3d_mutex_lock();
 
-    localParameters.BackBufferWidth                             = pPresentationParameters->BackBufferWidth;
-    localParameters.BackBufferHeight                            = pPresentationParameters->BackBufferHeight;
-    localParameters.BackBufferFormat                            = wined3dformat_from_d3dformat(pPresentationParameters->BackBufferFormat);
-    localParameters.BackBufferCount                             = pPresentationParameters->BackBufferCount;
-    localParameters.MultiSampleType                             = pPresentationParameters->MultiSampleType;
-    localParameters.MultiSampleQuality                          = 0; /* d3d9 only */
-    localParameters.SwapEffect                                  = pPresentationParameters->SwapEffect;
-    localParameters.hDeviceWindow                               = pPresentationParameters->hDeviceWindow;
-    localParameters.Windowed                                    = pPresentationParameters->Windowed;
-    localParameters.EnableAutoDepthStencil                      = pPresentationParameters->EnableAutoDepthStencil;
-    localParameters.AutoDepthStencilFormat                      = wined3dformat_from_d3dformat(pPresentationParameters->AutoDepthStencilFormat);
-    localParameters.Flags                                       = pPresentationParameters->Flags;
-    localParameters.FullScreen_RefreshRateInHz                  = pPresentationParameters->FullScreen_RefreshRateInHz;
-    localParameters.PresentationInterval                        = pPresentationParameters->FullScreen_PresentationInterval;
-    localParameters.AutoRestoreDisplayMode                      = TRUE;
-
-    hr = wined3d_device_reset(This->wined3d_device, &localParameters, reset_enum_callback);
+    swapchain_desc.backbuffer_width = pPresentationParameters->BackBufferWidth;
+    swapchain_desc.backbuffer_height = pPresentationParameters->BackBufferHeight;
+    swapchain_desc.backbuffer_format = wined3dformat_from_d3dformat(pPresentationParameters->BackBufferFormat);
+    swapchain_desc.backbuffer_count = pPresentationParameters->BackBufferCount;
+    swapchain_desc.multisample_type = pPresentationParameters->MultiSampleType;
+    swapchain_desc.multisample_quality = 0; /* d3d9 only */
+    swapchain_desc.swap_effect = pPresentationParameters->SwapEffect;
+    swapchain_desc.device_window = pPresentationParameters->hDeviceWindow;
+    swapchain_desc.windowed = pPresentationParameters->Windowed;
+    swapchain_desc.enable_auto_depth_stencil = pPresentationParameters->EnableAutoDepthStencil;
+    swapchain_desc.auto_depth_stencil_format = wined3dformat_from_d3dformat(pPresentationParameters->AutoDepthStencilFormat);
+    swapchain_desc.flags = pPresentationParameters->Flags;
+    swapchain_desc.refresh_rate = pPresentationParameters->FullScreen_RefreshRateInHz;
+    swapchain_desc.swap_interval = pPresentationParameters->FullScreen_PresentationInterval;
+    swapchain_desc.auto_restore_display_mode = TRUE;
+
+    hr = wined3d_device_reset(This->wined3d_device, &swapchain_desc, reset_enum_callback);
     if (SUCCEEDED(hr))
     {
         hr = wined3d_device_set_render_state(This->wined3d_device, WINED3DRS_POINTSIZE_MIN, 0);
@@ -2946,29 +2946,29 @@ static HRESULT CDECL device_parent_create_volume(struct wined3d_device_parent *d
 }
 
 static HRESULT CDECL device_parent_create_swapchain(struct wined3d_device_parent *device_parent,
-        WINED3DPRESENT_PARAMETERS *present_parameters, struct wined3d_swapchain **swapchain)
+        struct wined3d_swapchain_desc *desc, struct wined3d_swapchain **swapchain)
 {
     IDirect3DDevice8Impl *device = device_from_device_parent(device_parent);
     D3DPRESENT_PARAMETERS local_parameters;
     IDirect3DSwapChain8 *d3d_swapchain;
     HRESULT hr;
 
-    TRACE("device_parent %p, present_parameters %p, swapchain %p.\n", device_parent, present_parameters, swapchain);
+    TRACE("device_parent %p, desc %p, swapchain %p.\n", device_parent, desc, swapchain);
 
     /* Copy the presentation parameters */
-    local_parameters.BackBufferWidth = present_parameters->BackBufferWidth;
-    local_parameters.BackBufferHeight = present_parameters->BackBufferHeight;
-    local_parameters.BackBufferFormat = d3dformat_from_wined3dformat(present_parameters->BackBufferFormat);
-    local_parameters.BackBufferCount = present_parameters->BackBufferCount;
-    local_parameters.MultiSampleType = present_parameters->MultiSampleType;
-    local_parameters.SwapEffect = present_parameters->SwapEffect;
-    local_parameters.hDeviceWindow = present_parameters->hDeviceWindow;
-    local_parameters.Windowed = present_parameters->Windowed;
-    local_parameters.EnableAutoDepthStencil = present_parameters->EnableAutoDepthStencil;
-    local_parameters.AutoDepthStencilFormat = d3dformat_from_wined3dformat(present_parameters->AutoDepthStencilFormat);
-    local_parameters.Flags = present_parameters->Flags;
-    local_parameters.FullScreen_RefreshRateInHz = present_parameters->FullScreen_RefreshRateInHz;
-    local_parameters.FullScreen_PresentationInterval = present_parameters->PresentationInterval;
+    local_parameters.BackBufferWidth = desc->backbuffer_width;
+    local_parameters.BackBufferHeight = desc->backbuffer_height;
+    local_parameters.BackBufferFormat = d3dformat_from_wined3dformat(desc->backbuffer_format);
+    local_parameters.BackBufferCount = desc->backbuffer_count;
+    local_parameters.MultiSampleType = desc->multisample_type;
+    local_parameters.SwapEffect = desc->swap_effect;
+    local_parameters.hDeviceWindow = desc->device_window;
+    local_parameters.Windowed = desc->windowed;
+    local_parameters.EnableAutoDepthStencil = desc->enable_auto_depth_stencil;
+    local_parameters.AutoDepthStencilFormat = d3dformat_from_wined3dformat(desc->auto_depth_stencil_format);
+    local_parameters.Flags = desc->flags;
+    local_parameters.FullScreen_RefreshRateInHz = desc->refresh_rate;
+    local_parameters.FullScreen_PresentationInterval = desc->swap_interval;
 
     hr = IDirect3DDevice8_CreateAdditionalSwapChain(&device->IDirect3DDevice8_iface,
             &local_parameters, &d3d_swapchain);
@@ -2984,19 +2984,19 @@ static HRESULT CDECL device_parent_create_swapchain(struct wined3d_device_parent
     IDirect3DSwapChain8_Release(d3d_swapchain);
 
     /* Copy back the presentation parameters */
-    present_parameters->BackBufferWidth = local_parameters.BackBufferWidth;
-    present_parameters->BackBufferHeight = local_parameters.BackBufferHeight;
-    present_parameters->BackBufferFormat = wined3dformat_from_d3dformat(local_parameters.BackBufferFormat);
-    present_parameters->BackBufferCount = local_parameters.BackBufferCount;
-    present_parameters->MultiSampleType = local_parameters.MultiSampleType;
-    present_parameters->SwapEffect = local_parameters.SwapEffect;
-    present_parameters->hDeviceWindow = local_parameters.hDeviceWindow;
-    present_parameters->Windowed = local_parameters.Windowed;
-    present_parameters->EnableAutoDepthStencil = local_parameters.EnableAutoDepthStencil;
-    present_parameters->AutoDepthStencilFormat = wined3dformat_from_d3dformat(local_parameters.AutoDepthStencilFormat);
-    present_parameters->Flags = local_parameters.Flags;
-    present_parameters->FullScreen_RefreshRateInHz = local_parameters.FullScreen_RefreshRateInHz;
-    present_parameters->PresentationInterval = local_parameters.FullScreen_PresentationInterval;
+    desc->backbuffer_width = local_parameters.BackBufferWidth;
+    desc->backbuffer_height = local_parameters.BackBufferHeight;
+    desc->backbuffer_format = wined3dformat_from_d3dformat(local_parameters.BackBufferFormat);
+    desc->backbuffer_count = local_parameters.BackBufferCount;
+    desc->multisample_type = local_parameters.MultiSampleType;
+    desc->swap_effect = local_parameters.SwapEffect;
+    desc->device_window = local_parameters.hDeviceWindow;
+    desc->windowed = local_parameters.Windowed;
+    desc->enable_auto_depth_stencil = local_parameters.EnableAutoDepthStencil;
+    desc->auto_depth_stencil_format = wined3dformat_from_d3dformat(local_parameters.AutoDepthStencilFormat);
+    desc->flags = local_parameters.Flags;
+    desc->refresh_rate = local_parameters.FullScreen_RefreshRateInHz;
+    desc->swap_interval = local_parameters.FullScreen_PresentationInterval;
 
     return hr;
 }
@@ -3032,7 +3032,7 @@ static void setup_fpu(void)
 HRESULT device_init(IDirect3DDevice8Impl *device, IDirect3D8Impl *parent, struct wined3d *wined3d, UINT adapter,
         D3DDEVTYPE device_type, HWND focus_window, DWORD flags, D3DPRESENT_PARAMETERS *parameters)
 {
-    WINED3DPRESENT_PARAMETERS wined3d_parameters;
+    struct wined3d_swapchain_desc swapchain_desc;
     HRESULT hr;
 
     device->IDirect3DDevice8_iface.lpVtbl = &Direct3DDevice8_Vtbl;
@@ -3085,23 +3085,23 @@ HRESULT device_init(IDirect3DDevice8Impl *device, IDirect3D8Impl *parent, struct
     if (flags & D3DCREATE_MULTITHREADED)
         wined3d_device_set_multithreaded(device->wined3d_device);
 
-    wined3d_parameters.BackBufferWidth = parameters->BackBufferWidth;
-    wined3d_parameters.BackBufferHeight = parameters->BackBufferHeight;
-    wined3d_parameters.BackBufferFormat = wined3dformat_from_d3dformat(parameters->BackBufferFormat);
-    wined3d_parameters.BackBufferCount = parameters->BackBufferCount;
-    wined3d_parameters.MultiSampleType = parameters->MultiSampleType;
-    wined3d_parameters.MultiSampleQuality = 0; /* d3d9 only */
-    wined3d_parameters.SwapEffect = parameters->SwapEffect;
-    wined3d_parameters.hDeviceWindow = parameters->hDeviceWindow;
-    wined3d_parameters.Windowed = parameters->Windowed;
-    wined3d_parameters.EnableAutoDepthStencil = parameters->EnableAutoDepthStencil;
-    wined3d_parameters.AutoDepthStencilFormat = wined3dformat_from_d3dformat(parameters->AutoDepthStencilFormat);
-    wined3d_parameters.Flags = parameters->Flags;
-    wined3d_parameters.FullScreen_RefreshRateInHz = parameters->FullScreen_RefreshRateInHz;
-    wined3d_parameters.PresentationInterval = parameters->FullScreen_PresentationInterval;
-    wined3d_parameters.AutoRestoreDisplayMode = TRUE;
-
-    hr = wined3d_device_init_3d(device->wined3d_device, &wined3d_parameters);
+    swapchain_desc.backbuffer_width = parameters->BackBufferWidth;
+    swapchain_desc.backbuffer_height = parameters->BackBufferHeight;
+    swapchain_desc.backbuffer_format = wined3dformat_from_d3dformat(parameters->BackBufferFormat);
+    swapchain_desc.backbuffer_count = parameters->BackBufferCount;
+    swapchain_desc.multisample_type = parameters->MultiSampleType;
+    swapchain_desc.multisample_quality = 0; /* d3d9 only */
+    swapchain_desc.swap_effect = parameters->SwapEffect;
+    swapchain_desc.device_window = parameters->hDeviceWindow;
+    swapchain_desc.windowed = parameters->Windowed;
+    swapchain_desc.enable_auto_depth_stencil = parameters->EnableAutoDepthStencil;
+    swapchain_desc.auto_depth_stencil_format = wined3dformat_from_d3dformat(parameters->AutoDepthStencilFormat);
+    swapchain_desc.flags = parameters->Flags;
+    swapchain_desc.refresh_rate = parameters->FullScreen_RefreshRateInHz;
+    swapchain_desc.swap_interval = parameters->FullScreen_PresentationInterval;
+    swapchain_desc.auto_restore_display_mode = TRUE;
+
+    hr = wined3d_device_init_3d(device->wined3d_device, &swapchain_desc);
     if (FAILED(hr))
     {
         WARN("Failed to initialize 3D, hr %#x.\n", hr);
@@ -3120,19 +3120,19 @@ HRESULT device_init(IDirect3DDevice8Impl *device, IDirect3D8Impl *parent, struct
         goto err;
     }
 
-    parameters->BackBufferWidth = wined3d_parameters.BackBufferWidth;
-    parameters->BackBufferHeight = wined3d_parameters.BackBufferHeight;
-    parameters->BackBufferFormat = d3dformat_from_wined3dformat(wined3d_parameters.BackBufferFormat);
-    parameters->BackBufferCount = wined3d_parameters.BackBufferCount;
-    parameters->MultiSampleType = wined3d_parameters.MultiSampleType;
-    parameters->SwapEffect = wined3d_parameters.SwapEffect;
-    parameters->hDeviceWindow = wined3d_parameters.hDeviceWindow;
-    parameters->Windowed = wined3d_parameters.Windowed;
-    parameters->EnableAutoDepthStencil = wined3d_parameters.EnableAutoDepthStencil;
-    parameters->AutoDepthStencilFormat = d3dformat_from_wined3dformat(wined3d_parameters.AutoDepthStencilFormat);
-    parameters->Flags = wined3d_parameters.Flags;
-    parameters->FullScreen_RefreshRateInHz = wined3d_parameters.FullScreen_RefreshRateInHz;
-    parameters->FullScreen_PresentationInterval = wined3d_parameters.PresentationInterval;
+    parameters->BackBufferWidth = swapchain_desc.backbuffer_width;
+    parameters->BackBufferHeight = swapchain_desc.backbuffer_height;
+    parameters->BackBufferFormat = d3dformat_from_wined3dformat(swapchain_desc.backbuffer_format);
+    parameters->BackBufferCount = swapchain_desc.backbuffer_count;
+    parameters->MultiSampleType = swapchain_desc.multisample_type;
+    parameters->SwapEffect = swapchain_desc.swap_effect;
+    parameters->hDeviceWindow = swapchain_desc.device_window;
+    parameters->Windowed = swapchain_desc.windowed;
+    parameters->EnableAutoDepthStencil = swapchain_desc.enable_auto_depth_stencil;
+    parameters->AutoDepthStencilFormat = d3dformat_from_wined3dformat(swapchain_desc.auto_depth_stencil_format);
+    parameters->Flags = swapchain_desc.flags;
+    parameters->FullScreen_RefreshRateInHz = swapchain_desc.refresh_rate;
+    parameters->FullScreen_PresentationInterval = swapchain_desc.swap_interval;
 
     device->declArraySize = 16;
     device->decls = HeapAlloc(GetProcessHeap(), 0, device->declArraySize * sizeof(*device->decls));
diff --git a/dlls/d3d8/swapchain.c b/dlls/d3d8/swapchain.c
index 866335f..02b39f1 100644
--- a/dlls/d3d8/swapchain.c
+++ b/dlls/d3d8/swapchain.c
@@ -151,47 +151,47 @@ static const struct wined3d_parent_ops d3d8_swapchain_wined3d_parent_ops =
 HRESULT swapchain_init(IDirect3DSwapChain8Impl *swapchain, IDirect3DDevice8Impl *device,
         D3DPRESENT_PARAMETERS *present_parameters)
 {
-    WINED3DPRESENT_PARAMETERS wined3d_parameters;
+    struct wined3d_swapchain_desc desc;
     HRESULT hr;
 
     swapchain->ref = 1;
     swapchain->IDirect3DSwapChain8_iface.lpVtbl = &Direct3DSwapChain8_Vtbl;
 
-    wined3d_parameters.BackBufferWidth = present_parameters->BackBufferWidth;
-    wined3d_parameters.BackBufferHeight = present_parameters->BackBufferHeight;
-    wined3d_parameters.BackBufferFormat = wined3dformat_from_d3dformat(present_parameters->BackBufferFormat);
-    wined3d_parameters.BackBufferCount = max(1, present_parameters->BackBufferCount);
-    wined3d_parameters.MultiSampleType = present_parameters->MultiSampleType;
-    wined3d_parameters.MultiSampleQuality = 0; /* d3d9 only */
-    wined3d_parameters.SwapEffect = present_parameters->SwapEffect;
-    wined3d_parameters.hDeviceWindow = present_parameters->hDeviceWindow;
-    wined3d_parameters.Windowed = present_parameters->Windowed;
-    wined3d_parameters.EnableAutoDepthStencil = present_parameters->EnableAutoDepthStencil;
-    wined3d_parameters.AutoDepthStencilFormat = wined3dformat_from_d3dformat(present_parameters->AutoDepthStencilFormat);
-    wined3d_parameters.Flags = present_parameters->Flags;
-    wined3d_parameters.FullScreen_RefreshRateInHz = present_parameters->FullScreen_RefreshRateInHz;
-    wined3d_parameters.PresentationInterval = present_parameters->FullScreen_PresentationInterval;
-    wined3d_parameters.AutoRestoreDisplayMode = TRUE;
+    desc.backbuffer_width = present_parameters->BackBufferWidth;
+    desc.backbuffer_height = present_parameters->BackBufferHeight;
+    desc.backbuffer_format = wined3dformat_from_d3dformat(present_parameters->BackBufferFormat);
+    desc.backbuffer_count = max(1, present_parameters->BackBufferCount);
+    desc.multisample_type = present_parameters->MultiSampleType;
+    desc.multisample_quality = 0; /* d3d9 only */
+    desc.swap_effect = present_parameters->SwapEffect;
+    desc.device_window = present_parameters->hDeviceWindow;
+    desc.windowed = present_parameters->Windowed;
+    desc.enable_auto_depth_stencil = present_parameters->EnableAutoDepthStencil;
+    desc.auto_depth_stencil_format = wined3dformat_from_d3dformat(present_parameters->AutoDepthStencilFormat);
+    desc.flags = present_parameters->Flags;
+    desc.refresh_rate = present_parameters->FullScreen_RefreshRateInHz;
+    desc.swap_interval = present_parameters->FullScreen_PresentationInterval;
+    desc.auto_restore_display_mode = TRUE;
 
     wined3d_mutex_lock();
-    hr = wined3d_swapchain_create(device->wined3d_device, &wined3d_parameters,
+    hr = wined3d_swapchain_create(device->wined3d_device, &desc,
             SURFACE_OPENGL, swapchain, &d3d8_swapchain_wined3d_parent_ops,
             &swapchain->wined3d_swapchain);
     wined3d_mutex_unlock();
 
-    present_parameters->BackBufferWidth = wined3d_parameters.BackBufferWidth;
-    present_parameters->BackBufferHeight = wined3d_parameters.BackBufferHeight;
-    present_parameters->BackBufferFormat = d3dformat_from_wined3dformat(wined3d_parameters.BackBufferFormat);
-    present_parameters->BackBufferCount = wined3d_parameters.BackBufferCount;
-    present_parameters->MultiSampleType = wined3d_parameters.MultiSampleType;
-    present_parameters->SwapEffect = wined3d_parameters.SwapEffect;
-    present_parameters->hDeviceWindow = wined3d_parameters.hDeviceWindow;
-    present_parameters->Windowed = wined3d_parameters.Windowed;
-    present_parameters->EnableAutoDepthStencil = wined3d_parameters.EnableAutoDepthStencil;
-    present_parameters->AutoDepthStencilFormat = d3dformat_from_wined3dformat(wined3d_parameters.AutoDepthStencilFormat);
-    present_parameters->Flags = wined3d_parameters.Flags;
-    present_parameters->FullScreen_RefreshRateInHz = wined3d_parameters.FullScreen_RefreshRateInHz;
-    present_parameters->FullScreen_PresentationInterval = wined3d_parameters.PresentationInterval;
+    present_parameters->BackBufferWidth = desc.backbuffer_width;
+    present_parameters->BackBufferHeight = desc.backbuffer_height;
+    present_parameters->BackBufferFormat = d3dformat_from_wined3dformat(desc.backbuffer_format);
+    present_parameters->BackBufferCount = desc.backbuffer_count;
+    present_parameters->MultiSampleType = desc.multisample_type;
+    present_parameters->SwapEffect = desc.swap_effect;
+    present_parameters->hDeviceWindow = desc.device_window;
+    present_parameters->Windowed = desc.windowed;
+    present_parameters->EnableAutoDepthStencil = desc.enable_auto_depth_stencil;
+    present_parameters->AutoDepthStencilFormat = d3dformat_from_wined3dformat(desc.auto_depth_stencil_format);
+    present_parameters->Flags = desc.flags;
+    present_parameters->FullScreen_RefreshRateInHz = desc.refresh_rate;
+    present_parameters->FullScreen_PresentationInterval = desc.swap_interval;
 
     if (FAILED(hr))
     {
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
index cdaac6d..f4686e3 100644
--- a/dlls/d3d9/device.c
+++ b/dlls/d3d9/device.c
@@ -549,7 +549,7 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH IDirect3DDevice9Impl_Reset(IDirect3DDevi
         D3DPRESENT_PARAMETERS *pPresentationParameters)
 {
     IDirect3DDevice9Impl *This = impl_from_IDirect3DDevice9Ex(iface);
-    WINED3DPRESENT_PARAMETERS localParameters;
+    struct wined3d_swapchain_desc swapchain_desc;
     HRESULT hr;
 
     TRACE("iface %p, present_parameters %p.\n", iface, pPresentationParameters);
@@ -564,23 +564,23 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH IDirect3DDevice9Impl_Reset(IDirect3DDevi
      */
     wined3d_mutex_lock();
 
-    localParameters.BackBufferWidth                     = pPresentationParameters->BackBufferWidth;
-    localParameters.BackBufferHeight                    = pPresentationParameters->BackBufferHeight;
-    localParameters.BackBufferFormat                    = wined3dformat_from_d3dformat(pPresentationParameters->BackBufferFormat);
-    localParameters.BackBufferCount                     = pPresentationParameters->BackBufferCount;
-    localParameters.MultiSampleType                     = pPresentationParameters->MultiSampleType;
-    localParameters.MultiSampleQuality                  = pPresentationParameters->MultiSampleQuality;
-    localParameters.SwapEffect                          = pPresentationParameters->SwapEffect;
-    localParameters.hDeviceWindow                       = pPresentationParameters->hDeviceWindow;
-    localParameters.Windowed                            = pPresentationParameters->Windowed;
-    localParameters.EnableAutoDepthStencil              = pPresentationParameters->EnableAutoDepthStencil;
-    localParameters.AutoDepthStencilFormat              = wined3dformat_from_d3dformat(pPresentationParameters->AutoDepthStencilFormat);
-    localParameters.Flags                               = pPresentationParameters->Flags;
-    localParameters.FullScreen_RefreshRateInHz          = pPresentationParameters->FullScreen_RefreshRateInHz;
-    localParameters.PresentationInterval                = pPresentationParameters->PresentationInterval;
-    localParameters.AutoRestoreDisplayMode              = TRUE;
-
-    hr = wined3d_device_reset(This->wined3d_device, &localParameters, reset_enum_callback);
+    swapchain_desc.backbuffer_width = pPresentationParameters->BackBufferWidth;
+    swapchain_desc.backbuffer_height = pPresentationParameters->BackBufferHeight;
+    swapchain_desc.backbuffer_format = wined3dformat_from_d3dformat(pPresentationParameters->BackBufferFormat);
+    swapchain_desc.backbuffer_count = pPresentationParameters->BackBufferCount;
+    swapchain_desc.multisample_type = pPresentationParameters->MultiSampleType;
+    swapchain_desc.multisample_quality = pPresentationParameters->MultiSampleQuality;
+    swapchain_desc.swap_effect = pPresentationParameters->SwapEffect;
+    swapchain_desc.device_window = pPresentationParameters->hDeviceWindow;
+    swapchain_desc.windowed = pPresentationParameters->Windowed;
+    swapchain_desc.enable_auto_depth_stencil = pPresentationParameters->EnableAutoDepthStencil;
+    swapchain_desc.auto_depth_stencil_format = wined3dformat_from_d3dformat(pPresentationParameters->AutoDepthStencilFormat);
+    swapchain_desc.flags = pPresentationParameters->Flags;
+    swapchain_desc.refresh_rate = pPresentationParameters->FullScreen_RefreshRateInHz;
+    swapchain_desc.swap_interval = pPresentationParameters->PresentationInterval;
+    swapchain_desc.auto_restore_display_mode = TRUE;
+
+    hr = wined3d_device_reset(This->wined3d_device, &swapchain_desc, reset_enum_callback);
     if (FAILED(hr))
         This->notreset = TRUE;
     else
@@ -3243,30 +3243,30 @@ static HRESULT CDECL device_parent_create_volume(struct wined3d_device_parent *d
 }
 
 static HRESULT CDECL device_parent_create_swapchain(struct wined3d_device_parent *device_parent,
-        WINED3DPRESENT_PARAMETERS *present_parameters, struct wined3d_swapchain **swapchain)
+        struct wined3d_swapchain_desc *desc, struct wined3d_swapchain **swapchain)
 {
     struct IDirect3DDevice9Impl *device = device_from_device_parent(device_parent);
     D3DPRESENT_PARAMETERS local_parameters;
     IDirect3DSwapChain9 *d3d_swapchain;
     HRESULT hr;
 
-    TRACE("device_parent %p, present_parameters %p, swapchain %p\n", device_parent, present_parameters, swapchain);
+    TRACE("device_parent %p, desc %p, swapchain %p\n", device_parent, desc, swapchain);
 
     /* Copy the presentation parameters */
-    local_parameters.BackBufferWidth = present_parameters->BackBufferWidth;
-    local_parameters.BackBufferHeight = present_parameters->BackBufferHeight;
-    local_parameters.BackBufferFormat = d3dformat_from_wined3dformat(present_parameters->BackBufferFormat);
-    local_parameters.BackBufferCount = present_parameters->BackBufferCount;
-    local_parameters.MultiSampleType = present_parameters->MultiSampleType;
-    local_parameters.MultiSampleQuality = present_parameters->MultiSampleQuality;
-    local_parameters.SwapEffect = present_parameters->SwapEffect;
-    local_parameters.hDeviceWindow = present_parameters->hDeviceWindow;
-    local_parameters.Windowed = present_parameters->Windowed;
-    local_parameters.EnableAutoDepthStencil = present_parameters->EnableAutoDepthStencil;
-    local_parameters.AutoDepthStencilFormat = d3dformat_from_wined3dformat(present_parameters->AutoDepthStencilFormat);
-    local_parameters.Flags = present_parameters->Flags;
-    local_parameters.FullScreen_RefreshRateInHz = present_parameters->FullScreen_RefreshRateInHz;
-    local_parameters.PresentationInterval = present_parameters->PresentationInterval;
+    local_parameters.BackBufferWidth = desc->backbuffer_width;
+    local_parameters.BackBufferHeight = desc->backbuffer_height;
+    local_parameters.BackBufferFormat = d3dformat_from_wined3dformat(desc->backbuffer_format);
+    local_parameters.BackBufferCount = desc->backbuffer_count;
+    local_parameters.MultiSampleType = desc->multisample_type;
+    local_parameters.MultiSampleQuality = desc->multisample_quality;
+    local_parameters.SwapEffect = desc->swap_effect;
+    local_parameters.hDeviceWindow = desc->device_window;
+    local_parameters.Windowed = desc->windowed;
+    local_parameters.EnableAutoDepthStencil = desc->enable_auto_depth_stencil;
+    local_parameters.AutoDepthStencilFormat = d3dformat_from_wined3dformat(desc->auto_depth_stencil_format);
+    local_parameters.Flags = desc->flags;
+    local_parameters.FullScreen_RefreshRateInHz = desc->refresh_rate;
+    local_parameters.PresentationInterval = desc->swap_interval;
 
     hr = IDirect3DDevice9Impl_CreateAdditionalSwapChain(&device->IDirect3DDevice9Ex_iface,
             &local_parameters, &d3d_swapchain);
@@ -3282,20 +3282,20 @@ static HRESULT CDECL device_parent_create_swapchain(struct wined3d_device_parent
     IDirect3DSwapChain9_Release((IDirect3DSwapChain9 *)d3d_swapchain);
 
     /* Copy back the presentation parameters */
-    present_parameters->BackBufferWidth = local_parameters.BackBufferWidth;
-    present_parameters->BackBufferHeight = local_parameters.BackBufferHeight;
-    present_parameters->BackBufferFormat = wined3dformat_from_d3dformat(local_parameters.BackBufferFormat);
-    present_parameters->BackBufferCount = local_parameters.BackBufferCount;
-    present_parameters->MultiSampleType = local_parameters.MultiSampleType;
-    present_parameters->MultiSampleQuality = local_parameters.MultiSampleQuality;
-    present_parameters->SwapEffect = local_parameters.SwapEffect;
-    present_parameters->hDeviceWindow = local_parameters.hDeviceWindow;
-    present_parameters->Windowed = local_parameters.Windowed;
-    present_parameters->EnableAutoDepthStencil = local_parameters.EnableAutoDepthStencil;
-    present_parameters->AutoDepthStencilFormat = wined3dformat_from_d3dformat(local_parameters.AutoDepthStencilFormat);
-    present_parameters->Flags = local_parameters.Flags;
-    present_parameters->FullScreen_RefreshRateInHz = local_parameters.FullScreen_RefreshRateInHz;
-    present_parameters->PresentationInterval = local_parameters.PresentationInterval;
+    desc->backbuffer_width = local_parameters.BackBufferWidth;
+    desc->backbuffer_height = local_parameters.BackBufferHeight;
+    desc->backbuffer_format = wined3dformat_from_d3dformat(local_parameters.BackBufferFormat);
+    desc->backbuffer_count = local_parameters.BackBufferCount;
+    desc->multisample_type = local_parameters.MultiSampleType;
+    desc->multisample_quality = local_parameters.MultiSampleQuality;
+    desc->swap_effect = local_parameters.SwapEffect;
+    desc->device_window = local_parameters.hDeviceWindow;
+    desc->windowed = local_parameters.Windowed;
+    desc->enable_auto_depth_stencil = local_parameters.EnableAutoDepthStencil;
+    desc->auto_depth_stencil_format = wined3dformat_from_d3dformat(local_parameters.AutoDepthStencilFormat);
+    desc->flags = local_parameters.Flags;
+    desc->refresh_rate = local_parameters.FullScreen_RefreshRateInHz;
+    desc->swap_interval = local_parameters.PresentationInterval;
 
     return hr;
 }
@@ -3328,10 +3328,11 @@ static void setup_fpu(void)
 #endif
 }
 
-HRESULT device_init(IDirect3DDevice9Impl *device, IDirect3D9Impl *parent, struct wined3d *wined3d, UINT adapter, D3DDEVTYPE device_type,
-        HWND focus_window, DWORD flags, D3DPRESENT_PARAMETERS *parameters, D3DDISPLAYMODEEX *mode)
+HRESULT device_init(IDirect3DDevice9Impl *device, IDirect3D9Impl *parent, struct wined3d *wined3d,
+        UINT adapter, D3DDEVTYPE device_type, HWND focus_window, DWORD flags,
+        D3DPRESENT_PARAMETERS *parameters, D3DDISPLAYMODEEX *mode)
 {
-    WINED3DPRESENT_PARAMETERS *wined3d_parameters;
+    struct wined3d_swapchain_desc *swapchain_desc;
     UINT i, count = 1;
     HRESULT hr;
 
@@ -3388,8 +3389,8 @@ HRESULT device_init(IDirect3DDevice9Impl *device, IDirect3D9Impl *parent, struct
         }
     }
 
-    wined3d_parameters = HeapAlloc(GetProcessHeap(), 0, sizeof(*wined3d_parameters) * count);
-    if (!wined3d_parameters)
+    swapchain_desc = HeapAlloc(GetProcessHeap(), 0, sizeof(*swapchain_desc) * count);
+    if (!swapchain_desc)
     {
         ERR("Failed to allocate wined3d parameters.\n");
         wined3d_device_decref(device->wined3d_device);
@@ -3399,30 +3400,30 @@ HRESULT device_init(IDirect3DDevice9Impl *device, IDirect3D9Impl *parent, struct
 
     for (i = 0; i < count; ++i)
     {
-        wined3d_parameters[i].BackBufferWidth = parameters[i].BackBufferWidth;
-        wined3d_parameters[i].BackBufferHeight = parameters[i].BackBufferHeight;
-        wined3d_parameters[i].BackBufferFormat = wined3dformat_from_d3dformat(parameters[i].BackBufferFormat);
-        wined3d_parameters[i].BackBufferCount = parameters[i].BackBufferCount;
-        wined3d_parameters[i].MultiSampleType = parameters[i].MultiSampleType;
-        wined3d_parameters[i].MultiSampleQuality = parameters[i].MultiSampleQuality;
-        wined3d_parameters[i].SwapEffect = parameters[i].SwapEffect;
-        wined3d_parameters[i].hDeviceWindow = parameters[i].hDeviceWindow;
-        wined3d_parameters[i].Windowed = parameters[i].Windowed;
-        wined3d_parameters[i].EnableAutoDepthStencil = parameters[i].EnableAutoDepthStencil;
-        wined3d_parameters[i].AutoDepthStencilFormat =
+        swapchain_desc[i].backbuffer_width = parameters[i].BackBufferWidth;
+        swapchain_desc[i].backbuffer_height = parameters[i].BackBufferHeight;
+        swapchain_desc[i].backbuffer_format = wined3dformat_from_d3dformat(parameters[i].BackBufferFormat);
+        swapchain_desc[i].backbuffer_count = parameters[i].BackBufferCount;
+        swapchain_desc[i].multisample_type = parameters[i].MultiSampleType;
+        swapchain_desc[i].multisample_quality = parameters[i].MultiSampleQuality;
+        swapchain_desc[i].swap_effect = parameters[i].SwapEffect;
+        swapchain_desc[i].device_window = parameters[i].hDeviceWindow;
+        swapchain_desc[i].windowed = parameters[i].Windowed;
+        swapchain_desc[i].enable_auto_depth_stencil = parameters[i].EnableAutoDepthStencil;
+        swapchain_desc[i].auto_depth_stencil_format =
                 wined3dformat_from_d3dformat(parameters[i].AutoDepthStencilFormat);
-        wined3d_parameters[i].Flags = parameters[i].Flags;
-        wined3d_parameters[i].FullScreen_RefreshRateInHz = parameters[i].FullScreen_RefreshRateInHz;
-        wined3d_parameters[i].PresentationInterval = parameters[i].PresentationInterval;
-        wined3d_parameters[i].AutoRestoreDisplayMode = TRUE;
+        swapchain_desc[i].flags = parameters[i].Flags;
+        swapchain_desc[i].refresh_rate = parameters[i].FullScreen_RefreshRateInHz;
+        swapchain_desc[i].swap_interval = parameters[i].PresentationInterval;
+        swapchain_desc[i].auto_restore_display_mode = TRUE;
     }
 
-    hr = wined3d_device_init_3d(device->wined3d_device, wined3d_parameters);
+    hr = wined3d_device_init_3d(device->wined3d_device, swapchain_desc);
     if (FAILED(hr))
     {
         WARN("Failed to initialize 3D, hr %#x.\n", hr);
         wined3d_device_release_focus_window(device->wined3d_device);
-        HeapFree(GetProcessHeap(), 0, wined3d_parameters);
+        HeapFree(GetProcessHeap(), 0, swapchain_desc);
         wined3d_device_decref(device->wined3d_device);
         wined3d_mutex_unlock();
         return hr;
@@ -3432,23 +3433,23 @@ HRESULT device_init(IDirect3DDevice9Impl *device, IDirect3D9Impl *parent, struct
 
     for (i = 0; i < count; ++i)
     {
-        parameters[i].BackBufferWidth = wined3d_parameters[i].BackBufferWidth;
-        parameters[i].BackBufferHeight = wined3d_parameters[i].BackBufferHeight;
-        parameters[i].BackBufferFormat = d3dformat_from_wined3dformat(wined3d_parameters[i].BackBufferFormat);
-        parameters[i].BackBufferCount = wined3d_parameters[i].BackBufferCount;
-        parameters[i].MultiSampleType = wined3d_parameters[i].MultiSampleType;
-        parameters[i].MultiSampleQuality = wined3d_parameters[i].MultiSampleQuality;
-        parameters[i].SwapEffect = wined3d_parameters[i].SwapEffect;
-        parameters[i].hDeviceWindow = wined3d_parameters[i].hDeviceWindow;
-        parameters[i].Windowed = wined3d_parameters[i].Windowed;
-        parameters[i].EnableAutoDepthStencil = wined3d_parameters[i].EnableAutoDepthStencil;
+        parameters[i].BackBufferWidth = swapchain_desc[i].backbuffer_width;
+        parameters[i].BackBufferHeight = swapchain_desc[i].backbuffer_height;
+        parameters[i].BackBufferFormat = d3dformat_from_wined3dformat(swapchain_desc[i].backbuffer_format);
+        parameters[i].BackBufferCount = swapchain_desc[i].backbuffer_count;
+        parameters[i].MultiSampleType = swapchain_desc[i].multisample_type;
+        parameters[i].MultiSampleQuality = swapchain_desc[i].multisample_quality;
+        parameters[i].SwapEffect = swapchain_desc[i].swap_effect;
+        parameters[i].hDeviceWindow = swapchain_desc[i].device_window;
+        parameters[i].Windowed = swapchain_desc[i].windowed;
+        parameters[i].EnableAutoDepthStencil = swapchain_desc[i].enable_auto_depth_stencil;
         parameters[i].AutoDepthStencilFormat =
-                d3dformat_from_wined3dformat(wined3d_parameters[i].AutoDepthStencilFormat);
-        parameters[i].Flags = wined3d_parameters[i].Flags;
-        parameters[i].FullScreen_RefreshRateInHz = wined3d_parameters[i].FullScreen_RefreshRateInHz;
-        parameters[i].PresentationInterval = wined3d_parameters[i].PresentationInterval;
+                d3dformat_from_wined3dformat(swapchain_desc[i].auto_depth_stencil_format);
+        parameters[i].Flags = swapchain_desc[i].flags;
+        parameters[i].FullScreen_RefreshRateInHz = swapchain_desc[i].refresh_rate;
+        parameters[i].PresentationInterval = swapchain_desc[i].swap_interval;
     }
-    HeapFree(GetProcessHeap(), 0, wined3d_parameters);
+    HeapFree(GetProcessHeap(), 0, swapchain_desc);
 
     /* Initialize the converted declaration array. This creates a valid pointer
      * and when adding decls HeapReAlloc() can be used without further checking. */
diff --git a/dlls/d3d9/swapchain.c b/dlls/d3d9/swapchain.c
index c946723..be0c244 100644
--- a/dlls/d3d9/swapchain.c
+++ b/dlls/d3d9/swapchain.c
@@ -181,31 +181,33 @@ static HRESULT WINAPI IDirect3DSwapChain9Impl_GetDevice(IDirect3DSwapChain9 *ifa
     return D3D_OK;
 }
 
-static HRESULT WINAPI IDirect3DSwapChain9Impl_GetPresentParameters(LPDIRECT3DSWAPCHAIN9 iface, D3DPRESENT_PARAMETERS* pPresentationParameters) {
+static HRESULT WINAPI IDirect3DSwapChain9Impl_GetPresentParameters(IDirect3DSwapChain9 *iface,
+        D3DPRESENT_PARAMETERS *pPresentationParameters)
+{
     IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface;
-    WINED3DPRESENT_PARAMETERS winePresentParameters;
+    struct wined3d_swapchain_desc desc;
     HRESULT hr;
 
     TRACE("iface %p, parameters %p.\n", iface, pPresentationParameters);
 
     wined3d_mutex_lock();
-    hr = wined3d_swapchain_get_present_parameters(This->wined3d_swapchain, &winePresentParameters);
+    hr = wined3d_swapchain_get_desc(This->wined3d_swapchain, &desc);
     wined3d_mutex_unlock();
 
-    pPresentationParameters->BackBufferWidth            = winePresentParameters.BackBufferWidth;
-    pPresentationParameters->BackBufferHeight           = winePresentParameters.BackBufferHeight;
-    pPresentationParameters->BackBufferFormat           = d3dformat_from_wined3dformat(winePresentParameters.BackBufferFormat);
-    pPresentationParameters->BackBufferCount            = winePresentParameters.BackBufferCount;
-    pPresentationParameters->MultiSampleType            = winePresentParameters.MultiSampleType;
-    pPresentationParameters->MultiSampleQuality         = winePresentParameters.MultiSampleQuality;
-    pPresentationParameters->SwapEffect                 = winePresentParameters.SwapEffect;
-    pPresentationParameters->hDeviceWindow              = winePresentParameters.hDeviceWindow;
-    pPresentationParameters->Windowed                   = winePresentParameters.Windowed;
-    pPresentationParameters->EnableAutoDepthStencil     = winePresentParameters.EnableAutoDepthStencil;
-    pPresentationParameters->AutoDepthStencilFormat     = d3dformat_from_wined3dformat(winePresentParameters.AutoDepthStencilFormat);
-    pPresentationParameters->Flags                      = winePresentParameters.Flags;
-    pPresentationParameters->FullScreen_RefreshRateInHz = winePresentParameters.FullScreen_RefreshRateInHz;
-    pPresentationParameters->PresentationInterval       = winePresentParameters.PresentationInterval;
+    pPresentationParameters->BackBufferWidth = desc.backbuffer_width;
+    pPresentationParameters->BackBufferHeight = desc.backbuffer_height;
+    pPresentationParameters->BackBufferFormat = d3dformat_from_wined3dformat(desc.backbuffer_format);
+    pPresentationParameters->BackBufferCount = desc.backbuffer_count;
+    pPresentationParameters->MultiSampleType = desc.multisample_type;
+    pPresentationParameters->MultiSampleQuality = desc.multisample_quality;
+    pPresentationParameters->SwapEffect = desc.swap_effect;
+    pPresentationParameters->hDeviceWindow = desc.device_window;
+    pPresentationParameters->Windowed = desc.windowed;
+    pPresentationParameters->EnableAutoDepthStencil = desc.enable_auto_depth_stencil;
+    pPresentationParameters->AutoDepthStencilFormat = d3dformat_from_wined3dformat(desc.auto_depth_stencil_format);
+    pPresentationParameters->Flags = desc.flags;
+    pPresentationParameters->FullScreen_RefreshRateInHz = desc.refresh_rate;
+    pPresentationParameters->PresentationInterval = desc.swap_interval;
 
     return hr;
 }
@@ -238,48 +240,48 @@ static const struct wined3d_parent_ops d3d9_swapchain_wined3d_parent_ops =
 HRESULT swapchain_init(IDirect3DSwapChain9Impl *swapchain, IDirect3DDevice9Impl *device,
         D3DPRESENT_PARAMETERS *present_parameters)
 {
-    WINED3DPRESENT_PARAMETERS wined3d_parameters;
+    struct wined3d_swapchain_desc desc;
     HRESULT hr;
 
     swapchain->ref = 1;
     swapchain->lpVtbl = &Direct3DSwapChain9_Vtbl;
 
-    wined3d_parameters.BackBufferWidth = present_parameters->BackBufferWidth;
-    wined3d_parameters.BackBufferHeight = present_parameters->BackBufferHeight;
-    wined3d_parameters.BackBufferFormat = wined3dformat_from_d3dformat(present_parameters->BackBufferFormat);
-    wined3d_parameters.BackBufferCount = max(1, present_parameters->BackBufferCount);
-    wined3d_parameters.MultiSampleType = present_parameters->MultiSampleType;
-    wined3d_parameters.MultiSampleQuality = present_parameters->MultiSampleQuality;
-    wined3d_parameters.SwapEffect = present_parameters->SwapEffect;
-    wined3d_parameters.hDeviceWindow = present_parameters->hDeviceWindow;
-    wined3d_parameters.Windowed = present_parameters->Windowed;
-    wined3d_parameters.EnableAutoDepthStencil = present_parameters->EnableAutoDepthStencil;
-    wined3d_parameters.AutoDepthStencilFormat = wined3dformat_from_d3dformat(present_parameters->AutoDepthStencilFormat);
-    wined3d_parameters.Flags = present_parameters->Flags;
-    wined3d_parameters.FullScreen_RefreshRateInHz = present_parameters->FullScreen_RefreshRateInHz;
-    wined3d_parameters.PresentationInterval = present_parameters->PresentationInterval;
-    wined3d_parameters.AutoRestoreDisplayMode = TRUE;
+    desc.backbuffer_width = present_parameters->BackBufferWidth;
+    desc.backbuffer_height = present_parameters->BackBufferHeight;
+    desc.backbuffer_format = wined3dformat_from_d3dformat(present_parameters->BackBufferFormat);
+    desc.backbuffer_count = max(1, present_parameters->BackBufferCount);
+    desc.multisample_type = present_parameters->MultiSampleType;
+    desc.multisample_quality = present_parameters->MultiSampleQuality;
+    desc.swap_effect = present_parameters->SwapEffect;
+    desc.device_window = present_parameters->hDeviceWindow;
+    desc.windowed = present_parameters->Windowed;
+    desc.enable_auto_depth_stencil = present_parameters->EnableAutoDepthStencil;
+    desc.auto_depth_stencil_format = wined3dformat_from_d3dformat(present_parameters->AutoDepthStencilFormat);
+    desc.flags = present_parameters->Flags;
+    desc.refresh_rate = present_parameters->FullScreen_RefreshRateInHz;
+    desc.swap_interval = present_parameters->PresentationInterval;
+    desc.auto_restore_display_mode = TRUE;
 
     wined3d_mutex_lock();
-    hr = wined3d_swapchain_create(device->wined3d_device, &wined3d_parameters,
+    hr = wined3d_swapchain_create(device->wined3d_device, &desc,
             SURFACE_OPENGL, swapchain, &d3d9_swapchain_wined3d_parent_ops,
             &swapchain->wined3d_swapchain);
     wined3d_mutex_unlock();
 
-    present_parameters->BackBufferWidth = wined3d_parameters.BackBufferWidth;
-    present_parameters->BackBufferHeight = wined3d_parameters.BackBufferHeight;
-    present_parameters->BackBufferFormat = d3dformat_from_wined3dformat(wined3d_parameters.BackBufferFormat);
-    present_parameters->BackBufferCount = wined3d_parameters.BackBufferCount;
-    present_parameters->MultiSampleType = wined3d_parameters.MultiSampleType;
-    present_parameters->MultiSampleQuality = wined3d_parameters.MultiSampleQuality;
-    present_parameters->SwapEffect = wined3d_parameters.SwapEffect;
-    present_parameters->hDeviceWindow = wined3d_parameters.hDeviceWindow;
-    present_parameters->Windowed = wined3d_parameters.Windowed;
-    present_parameters->EnableAutoDepthStencil = wined3d_parameters.EnableAutoDepthStencil;
-    present_parameters->AutoDepthStencilFormat = d3dformat_from_wined3dformat(wined3d_parameters.AutoDepthStencilFormat);
-    present_parameters->Flags = wined3d_parameters.Flags;
-    present_parameters->FullScreen_RefreshRateInHz = wined3d_parameters.FullScreen_RefreshRateInHz;
-    present_parameters->PresentationInterval = wined3d_parameters.PresentationInterval;
+    present_parameters->BackBufferWidth = desc.backbuffer_width;
+    present_parameters->BackBufferHeight = desc.backbuffer_height;
+    present_parameters->BackBufferFormat = d3dformat_from_wined3dformat(desc.backbuffer_format);
+    present_parameters->BackBufferCount = desc.backbuffer_count;
+    present_parameters->MultiSampleType = desc.multisample_type;
+    present_parameters->MultiSampleQuality = desc.multisample_quality;
+    present_parameters->SwapEffect = desc.swap_effect;
+    present_parameters->hDeviceWindow = desc.device_window;
+    present_parameters->Windowed = desc.windowed;
+    present_parameters->EnableAutoDepthStencil = desc.enable_auto_depth_stencil;
+    present_parameters->AutoDepthStencilFormat = d3dformat_from_wined3dformat(desc.auto_depth_stencil_format);
+    present_parameters->Flags = desc.flags;
+    present_parameters->FullScreen_RefreshRateInHz = desc.refresh_rate;
+    present_parameters->PresentationInterval = desc.swap_interval;
 
     if (FAILED(hr))
     {
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 2d1e59b..03d8b1c 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -617,9 +617,9 @@ static HRESULT ddraw_set_focus_window(IDirectDrawImpl *ddraw, HWND window)
 }
 
 static HRESULT ddraw_attach_d3d_device(IDirectDrawImpl *ddraw,
-        WINED3DPRESENT_PARAMETERS *presentation_parameters)
+        struct wined3d_swapchain_desc *swapchain_desc)
 {
-    HWND window = presentation_parameters->hDeviceWindow;
+    HWND window = swapchain_desc->device_window;
     HRESULT hr;
 
     TRACE("ddraw %p.\n", ddraw);
@@ -638,7 +638,7 @@ static HRESULT ddraw_attach_d3d_device(IDirectDrawImpl *ddraw,
         ShowWindow(window, SW_HIDE);   /* Just to be sure */
         WARN("No window for the Direct3DDevice, created hidden window %p.\n", window);
 
-        presentation_parameters->hDeviceWindow = window;
+        swapchain_desc->device_window = window;
     }
     else
     {
@@ -649,7 +649,7 @@ static HRESULT ddraw_attach_d3d_device(IDirectDrawImpl *ddraw,
     /* Set this NOW, otherwise creating the depth stencil surface will cause a
      * recursive loop until ram or emulated video memory is full. */
     ddraw->d3d_initialized = TRUE;
-    hr = wined3d_device_init_3d(ddraw->wined3d_device, presentation_parameters);
+    hr = wined3d_device_init_3d(ddraw->wined3d_device, swapchain_desc);
     if (FAILED(hr))
     {
         ddraw->d3d_initialized = FALSE;
@@ -673,7 +673,7 @@ static HRESULT ddraw_attach_d3d_device(IDirectDrawImpl *ddraw,
 
 static HRESULT ddraw_create_swapchain(IDirectDrawImpl *ddraw, HWND window, BOOL windowed)
 {
-    WINED3DPRESENT_PARAMETERS presentation_parameters;
+    struct wined3d_swapchain_desc swapchain_desc;
     struct wined3d_display_mode mode;
     HRESULT hr = WINED3D_OK;
 
@@ -688,18 +688,18 @@ static HRESULT ddraw_create_swapchain(IDirectDrawImpl *ddraw, HWND window, BOOL
         return hr;
     }
 
-    memset(&presentation_parameters, 0, sizeof(presentation_parameters));
-    presentation_parameters.BackBufferWidth = mode.width;
-    presentation_parameters.BackBufferHeight = mode.height;
-    presentation_parameters.BackBufferFormat = mode.format_id;
-    presentation_parameters.SwapEffect = WINED3DSWAPEFFECT_COPY;
-    presentation_parameters.hDeviceWindow = window;
-    presentation_parameters.Windowed = windowed;
+    memset(&swapchain_desc, 0, sizeof(swapchain_desc));
+    swapchain_desc.backbuffer_width = mode.width;
+    swapchain_desc.backbuffer_height = mode.height;
+    swapchain_desc.backbuffer_format = mode.format_id;
+    swapchain_desc.swap_effect = WINED3DSWAPEFFECT_COPY;
+    swapchain_desc.device_window = window;
+    swapchain_desc.windowed = windowed;
 
     if (DefaultSurfaceType == SURFACE_OPENGL)
-        hr = ddraw_attach_d3d_device(ddraw, &presentation_parameters);
+        hr = ddraw_attach_d3d_device(ddraw, &swapchain_desc);
     else
-        hr = wined3d_device_init_gdi(ddraw->wined3d_device, &presentation_parameters);
+        hr = wined3d_device_init_gdi(ddraw->wined3d_device, &swapchain_desc);
 
     if (FAILED(hr))
     {
@@ -2919,21 +2919,21 @@ static HRESULT CreateSurface(IDirectDrawImpl *ddraw, DDSURFACEDESC2 *DDSD,
 
     if ((desc2.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) && (ddraw->cooperative_level & DDSCL_EXCLUSIVE))
     {
-        WINED3DPRESENT_PARAMETERS presentation_parameters;
+        struct wined3d_swapchain_desc swapchain_desc;
 
-        hr = wined3d_swapchain_get_present_parameters(ddraw->wined3d_swapchain, &presentation_parameters);
+        hr = wined3d_swapchain_get_desc(ddraw->wined3d_swapchain, &swapchain_desc);
         if (FAILED(hr))
         {
             ERR("Failed to get present parameters.\n");
             return hr;
         }
 
-        presentation_parameters.BackBufferWidth = mode.width;
-        presentation_parameters.BackBufferHeight = mode.height;
-        presentation_parameters.BackBufferFormat = mode.format_id;
+        swapchain_desc.backbuffer_width = mode.width;
+        swapchain_desc.backbuffer_height = mode.height;
+        swapchain_desc.backbuffer_format = mode.format_id;
 
         hr = wined3d_device_reset(ddraw->wined3d_device,
-                &presentation_parameters, ddraw_reset_enum_callback);
+                &swapchain_desc, ddraw_reset_enum_callback);
         if (FAILED(hr))
         {
             ERR("Failed to reset device.\n");
@@ -5433,12 +5433,12 @@ static HRESULT CDECL device_parent_create_volume(struct wined3d_device_parent *d
 }
 
 static HRESULT CDECL device_parent_create_swapchain(struct wined3d_device_parent *device_parent,
-        WINED3DPRESENT_PARAMETERS *present_parameters, struct wined3d_swapchain **swapchain)
+        struct wined3d_swapchain_desc *desc, struct wined3d_swapchain **swapchain)
 {
     struct IDirectDrawImpl *ddraw = ddraw_from_device_parent(device_parent);
     HRESULT hr;
 
-    TRACE("device_parent %p, present_parameters %p, swapchain %p.\n", device_parent, present_parameters, swapchain);
+    TRACE("device_parent %p, desc %p, swapchain %p.\n", device_parent, desc, swapchain);
 
     if (ddraw->wined3d_swapchain)
     {
@@ -5446,7 +5446,7 @@ static HRESULT CDECL device_parent_create_swapchain(struct wined3d_device_parent
         return E_FAIL;
     }
 
-    hr = wined3d_swapchain_create(ddraw->wined3d_device, present_parameters,
+    hr = wined3d_swapchain_create(ddraw->wined3d_device, desc,
             DefaultSurfaceType, NULL, &ddraw_null_wined3d_parent_ops, swapchain);
     if (FAILED(hr))
         WARN("Failed to create swapchain, hr %#x.\n", hr);
diff --git a/dlls/dxgi/device.c b/dlls/dxgi/device.c
index 9cd45f9..77a99d4 100644
--- a/dlls/dxgi/device.c
+++ b/dlls/dxgi/device.c
@@ -290,14 +290,14 @@ static HRESULT STDMETHODCALLTYPE dxgi_device_create_surface(IWineDXGIDevice *ifa
 }
 
 static HRESULT STDMETHODCALLTYPE dxgi_device_create_swapchain(IWineDXGIDevice *iface,
-        WINED3DPRESENT_PARAMETERS *present_parameters, struct wined3d_swapchain **wined3d_swapchain)
+        struct wined3d_swapchain_desc *desc, struct wined3d_swapchain **wined3d_swapchain)
 {
     struct dxgi_device *This = impl_from_IWineDXGIDevice(iface);
     struct dxgi_swapchain *object;
     HRESULT hr;
 
-    TRACE("iface %p, present_parameters %p, wined3d_swapchain %p.\n",
-            iface, present_parameters, wined3d_swapchain);
+    TRACE("iface %p, desc %p, wined3d_swapchain %p.\n",
+            iface, desc, wined3d_swapchain);
 
     object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
     if (!object)
@@ -306,7 +306,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_device_create_swapchain(IWineDXGIDevice *i
         return E_OUTOFMEMORY;
     }
 
-    hr = dxgi_swapchain_init(object, This, present_parameters);
+    hr = dxgi_swapchain_init(object, This, desc);
     if (FAILED(hr))
     {
         WARN("Failed to initialize swapchain, hr %#x.\n", hr);
diff --git a/dlls/dxgi/dxgi_private.h b/dlls/dxgi/dxgi_private.h
index 047e083..533f1fa 100644
--- a/dlls/dxgi/dxgi_private.h
+++ b/dlls/dxgi/dxgi_private.h
@@ -130,7 +130,7 @@ struct dxgi_swapchain
 };
 
 HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device *device,
-        WINED3DPRESENT_PARAMETERS *present_parameters) DECLSPEC_HIDDEN;
+        struct wined3d_swapchain_desc *desc) DECLSPEC_HIDDEN;
 
 /* IDXGISurface */
 struct dxgi_surface
diff --git a/dlls/dxgi/factory.c b/dlls/dxgi/factory.c
index c7a11cf..44ddce3 100644
--- a/dlls/dxgi/factory.c
+++ b/dlls/dxgi/factory.c
@@ -161,13 +161,11 @@ static HRESULT STDMETHODCALLTYPE dxgi_factory_GetWindowAssociation(IWineDXGIFact
     return E_NOTIMPL;
 }
 
-/* TODO: The DXGI swapchain desc is a bit nicer than WINED3DPRESENT_PARAMETERS,
- * change wined3d to use a structure more similar to DXGI. */
 static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChain(IWineDXGIFactory *iface,
         IUnknown *device, DXGI_SWAP_CHAIN_DESC *desc, IDXGISwapChain **swapchain)
 {
-    WINED3DPRESENT_PARAMETERS present_parameters;
     struct wined3d_swapchain *wined3d_swapchain;
+    struct wined3d_swapchain_desc wined3d_desc;
     struct wined3d_device *wined3d_device;
     IWineDXGIDevice *dxgi_device;
     UINT count;
@@ -200,31 +198,30 @@ static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChain(IWineDXGIFactory *
 
     FIXME("Ignoring SwapEffect and Flags\n");
 
-    present_parameters.BackBufferWidth = desc->BufferDesc.Width;
-    present_parameters.BackBufferHeight = desc->BufferDesc.Height;
-    present_parameters.BackBufferFormat = wined3dformat_from_dxgi_format(desc->BufferDesc.Format);
-    present_parameters.BackBufferCount = desc->BufferCount;
+    wined3d_desc.backbuffer_width = desc->BufferDesc.Width;
+    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)
     {
-        present_parameters.MultiSampleType = desc->SampleDesc.Count;
-        present_parameters.MultiSampleQuality = desc->SampleDesc.Quality;
+        wined3d_desc.multisample_type = desc->SampleDesc.Count;
+        wined3d_desc.multisample_quality = desc->SampleDesc.Quality;
     }
     else
     {
-        present_parameters.MultiSampleType = WINED3DMULTISAMPLE_NONE;
-        present_parameters.MultiSampleQuality = 0;
+        wined3d_desc.multisample_type = WINED3DMULTISAMPLE_NONE;
+        wined3d_desc.multisample_quality = 0;
     }
-    present_parameters.SwapEffect = WINED3DSWAPEFFECT_DISCARD;
-    present_parameters.hDeviceWindow = desc->OutputWindow;
-    present_parameters.Windowed = desc->Windowed;
-    present_parameters.EnableAutoDepthStencil = FALSE;
-    present_parameters.AutoDepthStencilFormat = 0;
-    present_parameters.Flags = 0; /* WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL? */
-    present_parameters.FullScreen_RefreshRateInHz =
-            desc->BufferDesc.RefreshRate.Numerator / desc->BufferDesc.RefreshRate.Denominator;
-    present_parameters.PresentationInterval = WINED3DPRESENT_INTERVAL_DEFAULT;
-
-    hr = wined3d_device_init_3d(wined3d_device, &present_parameters);
+    wined3d_desc.swap_effect = WINED3DSWAPEFFECT_DISCARD;
+    wined3d_desc.device_window = desc->OutputWindow;
+    wined3d_desc.windowed = desc->Windowed;
+    wined3d_desc.enable_auto_depth_stencil = FALSE;
+    wined3d_desc.auto_depth_stencil_format = 0;
+    wined3d_desc.flags = 0; /* WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL? */
+    wined3d_desc.refresh_rate = desc->BufferDesc.RefreshRate.Numerator / desc->BufferDesc.RefreshRate.Denominator;
+    wined3d_desc.swap_interval = WINED3DPRESENT_INTERVAL_DEFAULT;
+
+    hr = wined3d_device_init_3d(wined3d_device, &wined3d_desc);
     if (FAILED(hr))
     {
         WARN("Failed to initialize 3D, returning %#x\n", hr);
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index 373403c..f0ccf32 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -272,14 +272,14 @@ static const struct wined3d_parent_ops dxgi_swapchain_wined3d_parent_ops =
 };
 
 HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device *device,
-        WINED3DPRESENT_PARAMETERS *present_parameters)
+        struct wined3d_swapchain_desc *desc)
 {
     HRESULT hr;
 
     swapchain->IDXGISwapChain_iface.lpVtbl = &dxgi_swapchain_vtbl;
     swapchain->refcount = 1;
 
-    hr = wined3d_swapchain_create(device->wined3d_device, present_parameters,
+    hr = wined3d_swapchain_create(device->wined3d_device, desc,
             SURFACE_OPENGL, swapchain, &dxgi_swapchain_wined3d_parent_ops,
             &swapchain->wined3d_swapchain);
     if (FAILED(hr))
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 9b0ae05..c567e01 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -1441,7 +1441,7 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
         goto out;
     }
 
-    switch (swapchain->presentParms.PresentationInterval)
+    switch (swapchain->desc.swap_interval)
     {
         case WINED3DPRESENT_INTERVAL_IMMEDIATE:
             swap_interval = 0;
@@ -1460,7 +1460,7 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
             swap_interval = 4;
             break;
         default:
-            FIXME("Unknown presentation interval %08x\n", swapchain->presentParms.PresentationInterval);
+            FIXME("Unknown swap interval %#x.\n", swapchain->desc.swap_interval);
             swap_interval = 1;
     }
 
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index aca9306..36b1208 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1197,7 +1197,7 @@ void CDECL wined3d_device_release_focus_window(struct wined3d_device *device)
 }
 
 HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
-        WINED3DPRESENT_PARAMETERS *present_parameters)
+        struct wined3d_swapchain_desc *swapchain_desc)
 {
     static const struct wined3d_color black = {0.0f, 0.0f, 0.0f, 0.0f};
     const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
@@ -1207,7 +1207,7 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
     DWORD state;
     unsigned int i;
 
-    TRACE("device %p, present_parameters %p.\n", device, present_parameters);
+    TRACE("device %p, swapchain_desc %p.\n", device, swapchain_desc);
 
     if (device->d3d_initialized)
         return WINED3DERR_INVALIDCALL;
@@ -1250,7 +1250,7 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
     /* Setup the implicit swapchain. This also initializes a context. */
     TRACE("Creating implicit swapchain\n");
     hr = device->device_parent->ops->create_swapchain(device->device_parent,
-            present_parameters, &swapchain);
+            swapchain_desc, &swapchain);
     if (FAILED(hr))
     {
         WARN("Failed to create implicit swapchain\n");
@@ -1345,7 +1345,7 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
 
     /* Clear the screen */
     wined3d_device_clear(device, 0, NULL, WINED3DCLEAR_TARGET
-            | (present_parameters->EnableAutoDepthStencil ? WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL : 0),
+            | (swapchain_desc->enable_auto_depth_stencil ? WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL : 0),
             &black, 1.0f, 0);
 
     device->d3d_initialized = TRUE;
@@ -1376,17 +1376,17 @@ err_out:
 }
 
 HRESULT CDECL wined3d_device_init_gdi(struct wined3d_device *device,
-        WINED3DPRESENT_PARAMETERS *present_parameters)
+        struct wined3d_swapchain_desc *swapchain_desc)
 {
     struct wined3d_swapchain *swapchain = NULL;
     HRESULT hr;
 
-    TRACE("device %p, present_parameters %p.\n", device, present_parameters);
+    TRACE("device %p, swapchain_desc %p.\n", device, swapchain_desc);
 
     /* Setup the implicit swapchain */
     TRACE("Creating implicit swapchain\n");
     hr = device->device_parent->ops->create_swapchain(device->device_parent,
-            present_parameters, &swapchain);
+            swapchain_desc, &swapchain);
     if (FAILED(hr))
     {
         WARN("Failed to create implicit swapchain\n");
@@ -4950,7 +4950,7 @@ HRESULT CDECL wined3d_device_set_depth_stencil(struct wined3d_device *device, st
 
     if (prev)
     {
-        if (device->swapchains[0]->presentParms.Flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL
+        if (device->swapchains[0]->desc.flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL
                 || prev->flags & SFLAG_DISCARD)
         {
             surface_modify_ds_location(prev, SFLAG_DS_DISCARDED,
@@ -5217,7 +5217,7 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device)
 }
 
 static HRESULT updateSurfaceDesc(struct wined3d_surface *surface,
-        const WINED3DPRESENT_PARAMETERS *pPresentationParameters)
+        const struct wined3d_swapchain_desc *swapchain_desc)
 {
     struct wined3d_device *device = surface->resource.device;
     const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
@@ -5231,28 +5231,32 @@ static HRESULT updateSurfaceDesc(struct wined3d_surface *surface,
         surface->resource.allocatedMemory = NULL;
         surface->flags &= ~SFLAG_DIBSECTION;
     }
-    surface->resource.width = pPresentationParameters->BackBufferWidth;
-    surface->resource.height = pPresentationParameters->BackBufferHeight;
+    surface->resource.width = swapchain_desc->backbuffer_width;
+    surface->resource.height = swapchain_desc->backbuffer_height;
     if (gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO] || gl_info->supported[ARB_TEXTURE_RECTANGLE]
             || gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT])
     {
-        surface->pow2Width = pPresentationParameters->BackBufferWidth;
-        surface->pow2Height = pPresentationParameters->BackBufferHeight;
-    } else {
+        surface->pow2Width = swapchain_desc->backbuffer_width;
+        surface->pow2Height = swapchain_desc->backbuffer_height;
+    }
+    else
+    {
         surface->pow2Width = surface->pow2Height = 1;
-        while (surface->pow2Width < pPresentationParameters->BackBufferWidth) surface->pow2Width <<= 1;
-        while (surface->pow2Height < pPresentationParameters->BackBufferHeight) surface->pow2Height <<= 1;
+        while (surface->pow2Width < swapchain_desc->backbuffer_width)
+            surface->pow2Width <<= 1;
+        while (surface->pow2Height < swapchain_desc->backbuffer_height)
+            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;
+        surface->resource.format = wined3d_get_format(gl_info, swapchain_desc->backbuffer_format);
+    surface->resource.multisample_type = swapchain_desc->multisample_type;
+    surface->resource.multisample_quality = swapchain_desc->multisample_quality;
 
     surface->resource.resource_ops->resource_unload(&surface->resource);
 
-    if (surface->pow2Width != pPresentationParameters->BackBufferWidth
-            || surface->pow2Height != pPresentationParameters->BackBufferHeight)
+    if (surface->pow2Width != swapchain_desc->backbuffer_width
+            || surface->pow2Height != swapchain_desc->backbuffer_height)
     {
         surface->flags |= SFLAG_NONPOW2;
     }
@@ -5274,16 +5278,20 @@ static HRESULT updateSurfaceDesc(struct wined3d_surface *surface,
     return WINED3D_OK;
 }
 
-static BOOL is_display_mode_supported(const struct wined3d_device *device, const WINED3DPRESENT_PARAMETERS *pp)
+static BOOL is_display_mode_supported(const struct wined3d_device *device,
+        const struct wined3d_swapchain_desc *swapchain_desc)
 {
     struct wined3d_display_mode m;
     UINT i, count;
     HRESULT hr;
 
     /* All Windowed modes are supported, as is leaving the current mode */
-    if(pp->Windowed) return TRUE;
-    if(!pp->BackBufferWidth) return TRUE;
-    if(!pp->BackBufferHeight) return TRUE;
+    if (swapchain_desc->windowed)
+        return TRUE;
+    if (!swapchain_desc->backbuffer_width)
+        return TRUE;
+    if (!swapchain_desc->backbuffer_height)
+        return TRUE;
 
     count = wined3d_get_adapter_mode_count(device->wined3d, device->adapter->ordinal, WINED3DFMT_UNKNOWN);
     for (i = 0; i < count; ++i)
@@ -5292,7 +5300,7 @@ static BOOL is_display_mode_supported(const struct wined3d_device *device, const
         hr = wined3d_enum_adapter_modes(device->wined3d, device->adapter->ordinal, WINED3DFMT_UNKNOWN, i, &m);
         if (FAILED(hr))
             ERR("Failed to enumerate adapter mode.\n");
-        if (m.width == pp->BackBufferWidth && m.height == pp->BackBufferHeight)
+        if (m.width == swapchain_desc->backbuffer_width && m.height == swapchain_desc->backbuffer_height)
             /* Mode found, it is supported. */
             return TRUE;
     }
@@ -5418,7 +5426,7 @@ err:
 
 /* Do not call while under the GL lock. */
 HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
-        const WINED3DPRESENT_PARAMETERS *present_parameters,
+        const struct wined3d_swapchain_desc *swapchain_desc,
         wined3d_device_reset_cb callback)
 {
     struct wined3d_resource *resource, *cursor;
@@ -5429,7 +5437,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
     unsigned int i;
     HRESULT hr;
 
-    TRACE("device %p, present_parameters %p.\n", device, present_parameters);
+    TRACE("device %p, swapchain_desc %p.\n", device, swapchain_desc);
 
     wined3d_device_set_index_buffer(device, NULL, WINED3DFMT_UNKNOWN);
     for (i = 0; i < MAX_STREAMS; ++i)
@@ -5460,12 +5468,12 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
         return hr;
     }
 
-    if (!is_display_mode_supported(device, present_parameters))
+    if (!is_display_mode_supported(device, swapchain_desc))
     {
-        WARN("Rejecting Reset() call because the requested display mode is not supported\n");
-        WARN("Requested mode: %d, %d.\n",
-            present_parameters->BackBufferWidth,
-             present_parameters->BackBufferHeight);
+        WARN("Rejecting reset() call because the requested display mode is not supported.\n");
+        WARN("Requested mode: %ux%u.\n",
+                swapchain_desc->backbuffer_width,
+                swapchain_desc->backbuffer_height);
         wined3d_swapchain_decref(swapchain);
         return WINED3DERR_INVALIDCALL;
     }
@@ -5478,47 +5486,47 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
      * TODO: Figure out what happens to explicit swapchains, or if we have more than one implicit swapchain
      */
     TRACE("New params:\n");
-    TRACE("BackBufferWidth = %d\n", present_parameters->BackBufferWidth);
-    TRACE("BackBufferHeight = %d\n", present_parameters->BackBufferHeight);
-    TRACE("BackBufferFormat = %s\n", debug_d3dformat(present_parameters->BackBufferFormat));
-    TRACE("BackBufferCount = %d\n", present_parameters->BackBufferCount);
-    TRACE("MultiSampleType = %d\n", present_parameters->MultiSampleType);
-    TRACE("MultiSampleQuality = %d\n", present_parameters->MultiSampleQuality);
-    TRACE("SwapEffect = %d\n", present_parameters->SwapEffect);
-    TRACE("hDeviceWindow = %p\n", present_parameters->hDeviceWindow);
-    TRACE("Windowed = %s\n", present_parameters->Windowed ? "true" : "false");
-    TRACE("EnableAutoDepthStencil = %s\n", present_parameters->EnableAutoDepthStencil ? "true" : "false");
-    TRACE("Flags = %08x\n", present_parameters->Flags);
-    TRACE("FullScreen_RefreshRateInHz = %d\n", present_parameters->FullScreen_RefreshRateInHz);
-    TRACE("PresentationInterval = %d\n", present_parameters->PresentationInterval);
+    TRACE("backbuffer_width %u\n", swapchain_desc->backbuffer_width);
+    TRACE("backbuffer_height %u\n", swapchain_desc->backbuffer_height);
+    TRACE("backbuffer_format %s\n", debug_d3dformat(swapchain_desc->backbuffer_format));
+    TRACE("backbuffer_count %u\n", swapchain_desc->backbuffer_count);
+    TRACE("multisample_type %#x\n", swapchain_desc->multisample_type);
+    TRACE("multisample_quality %u\n", swapchain_desc->multisample_quality);
+    TRACE("swap_effect %#x\n", swapchain_desc->swap_effect);
+    TRACE("device_window %p\n", swapchain_desc->device_window);
+    TRACE("windowed %#x\n", swapchain_desc->windowed);
+    TRACE("enable_auto_depth_stencil %#x\n", swapchain_desc->enable_auto_depth_stencil);
+    TRACE("flags %#x\n", swapchain_desc->flags);
+    TRACE("refresh_rate %u\n", swapchain_desc->refresh_rate);
+    TRACE("swap_interval %u\n", swapchain_desc->swap_interval);
 
     /* No special treatment of these parameters. Just store them */
-    swapchain->presentParms.SwapEffect = present_parameters->SwapEffect;
-    swapchain->presentParms.Flags = present_parameters->Flags;
-    swapchain->presentParms.PresentationInterval = present_parameters->PresentationInterval;
-    swapchain->presentParms.FullScreen_RefreshRateInHz = present_parameters->FullScreen_RefreshRateInHz;
+    swapchain->desc.swap_effect = swapchain_desc->swap_effect;
+    swapchain->desc.flags = swapchain_desc->flags;
+    swapchain->desc.swap_interval = swapchain_desc->swap_interval;
+    swapchain->desc.refresh_rate = swapchain_desc->refresh_rate;
 
     /* What to do about these? */
-    if (present_parameters->BackBufferCount
-            && present_parameters->BackBufferCount != swapchain->presentParms.BackBufferCount)
+    if (swapchain_desc->backbuffer_count
+            && swapchain_desc->backbuffer_count != swapchain->desc.backbuffer_count)
         FIXME("Cannot change the back buffer count yet.\n");
 
-    if (present_parameters->hDeviceWindow
-            && present_parameters->hDeviceWindow != swapchain->presentParms.hDeviceWindow)
+    if (swapchain_desc->device_window
+            && swapchain_desc->device_window != swapchain->desc.device_window)
         FIXME("Cannot change the device window yet.\n");
 
-    if (present_parameters->EnableAutoDepthStencil && !device->auto_depth_stencil)
+    if (swapchain_desc->enable_auto_depth_stencil && !device->auto_depth_stencil)
     {
         HRESULT hrc;
 
         TRACE("Creating the depth stencil buffer\n");
 
         hrc = device->device_parent->ops->create_depth_stencil(device->device_parent,
-                present_parameters->BackBufferWidth,
-                present_parameters->BackBufferHeight,
-                present_parameters->AutoDepthStencilFormat,
-                present_parameters->MultiSampleType,
-                present_parameters->MultiSampleQuality,
+                swapchain_desc->backbuffer_width,
+                swapchain_desc->backbuffer_height,
+                swapchain_desc->auto_depth_stencil_format,
+                swapchain_desc->multisample_type,
+                swapchain_desc->multisample_quality,
                 FALSE,
                 &device->auto_depth_stencil);
         if (FAILED(hrc))
@@ -5536,7 +5544,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
     }
 
     /* Reset the depth stencil */
-    if (present_parameters->EnableAutoDepthStencil)
+    if (swapchain_desc->enable_auto_depth_stencil)
         wined3d_device_set_depth_stencil(device, device->auto_depth_stencil);
     else
         wined3d_device_set_depth_stencil(device, NULL);
@@ -5545,46 +5553,46 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
     wined3d_stateblock_decref(device->updateStateBlock);
     wined3d_stateblock_decref(device->stateBlock);
 
-    if (present_parameters->Windowed)
+    if (swapchain_desc->windowed)
     {
         mode.width = swapchain->orig_width;
         mode.height = swapchain->orig_height;
         mode.refresh_rate = 0;
-        mode.format_id = swapchain->presentParms.BackBufferFormat;
+        mode.format_id = swapchain->desc.backbuffer_format;
     }
     else
     {
-        mode.width = present_parameters->BackBufferWidth;
-        mode.height = present_parameters->BackBufferHeight;
-        mode.refresh_rate = present_parameters->FullScreen_RefreshRateInHz;
-        mode.format_id = present_parameters->BackBufferFormat;
+        mode.width = swapchain_desc->backbuffer_width;
+        mode.height = swapchain_desc->backbuffer_height;
+        mode.refresh_rate = swapchain_desc->refresh_rate;
+        mode.format_id = swapchain_desc->backbuffer_format;
     }
 
     /* Should Width == 800 && Height == 0 set 800x600? */
-    if (present_parameters->BackBufferWidth && present_parameters->BackBufferHeight
-            && (present_parameters->BackBufferWidth != swapchain->presentParms.BackBufferWidth
-            || present_parameters->BackBufferHeight != swapchain->presentParms.BackBufferHeight))
+    if (swapchain_desc->backbuffer_width && swapchain_desc->backbuffer_height
+            && (swapchain_desc->backbuffer_width != swapchain->desc.backbuffer_width
+            || swapchain_desc->backbuffer_height != swapchain->desc.backbuffer_height))
     {
-        if (!present_parameters->Windowed)
+        if (!swapchain_desc->windowed)
             DisplayModeChanged = TRUE;
 
-        swapchain->presentParms.BackBufferWidth = present_parameters->BackBufferWidth;
-        swapchain->presentParms.BackBufferHeight = present_parameters->BackBufferHeight;
+        swapchain->desc.backbuffer_width = swapchain_desc->backbuffer_width;
+        swapchain->desc.backbuffer_height = swapchain_desc->backbuffer_height;
         update_desc = TRUE;
     }
 
-    if (present_parameters->BackBufferFormat != WINED3DFMT_UNKNOWN
-            && present_parameters->BackBufferFormat != swapchain->presentParms.BackBufferFormat)
+    if (swapchain_desc->backbuffer_format != WINED3DFMT_UNKNOWN
+            && swapchain_desc->backbuffer_format != swapchain->desc.backbuffer_format)
     {
-        swapchain->presentParms.BackBufferFormat = present_parameters->BackBufferFormat;
+        swapchain->desc.backbuffer_format = swapchain_desc->backbuffer_format;
         update_desc = TRUE;
     }
 
-    if (present_parameters->MultiSampleType != swapchain->presentParms.MultiSampleType
-            || present_parameters->MultiSampleQuality != swapchain->presentParms.MultiSampleQuality)
+    if (swapchain_desc->multisample_type != swapchain->desc.multisample_type
+            || swapchain_desc->multisample_quality != swapchain->desc.multisample_quality)
     {
-        swapchain->presentParms.MultiSampleType = present_parameters->MultiSampleType;
-        swapchain->presentParms.MultiSampleQuality = present_parameters->MultiSampleQuality;
+        swapchain->desc.multisample_type = swapchain_desc->multisample_type;
+        swapchain->desc.multisample_quality = swapchain_desc->multisample_quality;
         update_desc = TRUE;
     }
 
@@ -5592,16 +5600,16 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
     {
         UINT i;
 
-        hr = updateSurfaceDesc(swapchain->front_buffer, &swapchain->presentParms);
+        hr = updateSurfaceDesc(swapchain->front_buffer, &swapchain->desc);
         if (FAILED(hr))
         {
             wined3d_swapchain_decref(swapchain);
             return hr;
         }
 
-        for (i = 0; i < swapchain->presentParms.BackBufferCount; ++i)
+        for (i = 0; i < swapchain->desc.backbuffer_count; ++i)
         {
-            hr = updateSurfaceDesc(swapchain->back_buffers[i], &swapchain->presentParms);
+            hr = updateSurfaceDesc(swapchain->back_buffers[i], &swapchain->desc);
             if (FAILED(hr))
             {
                 wined3d_swapchain_decref(swapchain);
@@ -5610,7 +5618,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
         }
         if (device->auto_depth_stencil)
         {
-            hr = updateSurfaceDesc(device->auto_depth_stencil, &swapchain->presentParms);
+            hr = updateSurfaceDesc(device->auto_depth_stencil, &swapchain->desc);
             if (FAILED(hr))
             {
                 wined3d_swapchain_decref(swapchain);
@@ -5621,18 +5629,18 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
 
     delete_opengl_contexts(device, swapchain);
 
-    if (!present_parameters->Windowed != !swapchain->presentParms.Windowed
+    if (!swapchain_desc->windowed != !swapchain->desc.windowed
             || DisplayModeChanged)
     {
         wined3d_device_set_display_mode(device, 0, &mode);
 
-        if (!present_parameters->Windowed)
+        if (!swapchain_desc->windowed)
         {
-            if (swapchain->presentParms.Windowed)
+            if (swapchain->desc.windowed)
             {
                 HWND focus_window = device->create_parms.focus_window;
                 if (!focus_window)
-                    focus_window = present_parameters->hDeviceWindow;
+                    focus_window = swapchain_desc->device_window;
                 if (FAILED(hr = wined3d_device_acquire_focus_window(device, focus_window)))
                 {
                     ERR("Failed to acquire focus window, hr %#x.\n", hr);
@@ -5642,26 +5650,27 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
 
                 /* switch from windowed to fs */
                 wined3d_device_setup_fullscreen_window(device, swapchain->device_window,
-                        present_parameters->BackBufferWidth,
-                        present_parameters->BackBufferHeight);
+                        swapchain_desc->backbuffer_width,
+                        swapchain_desc->backbuffer_height);
             }
             else
             {
                 /* Fullscreen -> fullscreen mode change */
                 MoveWindow(swapchain->device_window, 0, 0,
-                           present_parameters->BackBufferWidth, present_parameters->BackBufferHeight,
-                           TRUE);
+                        swapchain_desc->backbuffer_width,
+                        swapchain_desc->backbuffer_height,
+                        TRUE);
             }
         }
-        else if (!swapchain->presentParms.Windowed)
+        else if (!swapchain->desc.windowed)
         {
             /* Fullscreen -> windowed switch */
             wined3d_device_restore_fullscreen_window(device, swapchain->device_window);
             wined3d_device_release_focus_window(device);
         }
-        swapchain->presentParms.Windowed = present_parameters->Windowed;
+        swapchain->desc.windowed = swapchain_desc->windowed;
     }
-    else if (!present_parameters->Windowed)
+    else if (!swapchain_desc->windowed)
     {
         DWORD style = device->style;
         DWORD exStyle = device->exStyle;
@@ -5672,8 +5681,8 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
         device->style = 0;
         device->exStyle = 0;
         wined3d_device_setup_fullscreen_window(device, swapchain->device_window,
-                present_parameters->BackBufferWidth,
-                present_parameters->BackBufferHeight);
+                swapchain_desc->backbuffer_width,
+                swapchain_desc->backbuffer_height);
         device->style = style;
         device->exStyle = exStyle;
     }
@@ -6008,8 +6017,8 @@ void get_drawable_size_backbuffer(const struct wined3d_context *context, UINT *w
     /* The drawable size of a backbuffer / aux buffer offscreen target is the size of the
      * current context's drawable, which is the size of the back buffer of the swapchain
      * the active context belongs to. */
-    *width = swapchain->presentParms.BackBufferWidth;
-    *height = swapchain->presentParms.BackBufferHeight;
+    *width = swapchain->desc.backbuffer_width;
+    *height = swapchain->desc.backbuffer_height;
 }
 
 LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL unicode,
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index 6084a25..cf83e94 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -1307,8 +1307,8 @@ void stateblock_init_default_state(struct wined3d_stateblock *stateblock)
         /* Set the default viewport */
         state->viewport.x = 0;
         state->viewport.y = 0;
-        state->viewport.width = swapchain->presentParms.BackBufferWidth;
-        state->viewport.height = swapchain->presentParms.BackBufferHeight;
+        state->viewport.width = swapchain->desc.backbuffer_width;
+        state->viewport.height = swapchain->desc.backbuffer_height;
         state->viewport.min_z = 0.0f;
         state->viewport.max_z = 1.0f;
 
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index d5b73e3..959f1e2 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -1694,15 +1694,15 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
                     && dst_surface == dst_swapchain->front_buffer
                     && src_surface == dst_swapchain->back_buffers[0])
             {
-                WINED3DSWAPEFFECT swap_effect = dst_swapchain->presentParms.SwapEffect;
+                WINED3DSWAPEFFECT swap_effect = dst_swapchain->desc.swap_effect;
 
                 TRACE("Using present for backbuffer -> frontbuffer blit.\n");
 
                 /* Set the swap effect to COPY, we don't want the backbuffer
                  * to become undefined. */
-                dst_swapchain->presentParms.SwapEffect = WINED3DSWAPEFFECT_COPY;
+                dst_swapchain->desc.swap_effect = WINED3DSWAPEFFECT_COPY;
                 wined3d_swapchain_present(dst_swapchain, NULL, NULL, dst_swapchain->win_handle, NULL, 0);
-                dst_swapchain->presentParms.SwapEffect = swap_effect;
+                dst_swapchain->desc.swap_effect = swap_effect;
 
                 return WINED3D_OK;
             }
@@ -5639,8 +5639,8 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co
          * buffer, so the onscreen depth/stencil buffer is potentially smaller
          * than the offscreen surface. Don't overwrite the offscreen surface
          * with undefined data. */
-        w = min(w, context->swapchain->presentParms.BackBufferWidth);
-        h = min(h, context->swapchain->presentParms.BackBufferHeight);
+        w = min(w, context->swapchain->desc.backbuffer_width);
+        h = min(h, context->swapchain->desc.backbuffer_height);
 
         TRACE("Copying onscreen depth buffer to depth texture.\n");
 
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index ae62b72..1ea7858 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -48,7 +48,7 @@ static void swapchain_cleanup(struct wined3d_swapchain *swapchain)
 
     if (swapchain->back_buffers)
     {
-        i = swapchain->presentParms.BackBufferCount;
+        i = swapchain->desc.backbuffer_count;
 
         while (i--)
         {
@@ -72,7 +72,7 @@ static void swapchain_cleanup(struct wined3d_swapchain *swapchain)
      * desktop resolution. In case of d3d7 this will be a NOP because ddraw
      * sets the resolution before starting up Direct3D, thus orig_width and
      * orig_height will be equal to the modes in the presentation params. */
-    if (!swapchain->presentParms.Windowed && swapchain->presentParms.AutoRestoreDisplayMode)
+    if (!swapchain->desc.windowed && swapchain->desc.auto_restore_display_mode)
     {
         mode.width = swapchain->orig_width;
         mode.height = swapchain->orig_height;
@@ -163,7 +163,7 @@ HRESULT CDECL wined3d_swapchain_get_front_buffer_data(const struct wined3d_swapc
     SetRect(&src_rect, 0, 0, src_surface->resource.width, src_surface->resource.height);
     dst_rect = src_rect;
 
-    if (swapchain->presentParms.Windowed)
+    if (swapchain->desc.windowed)
     {
         MapWindowPoints(swapchain->win_handle, NULL, (POINT *)&dst_rect, 2);
         FIXME("Using destination rect %s in windowed mode, this is likely wrong.\n",
@@ -184,7 +184,7 @@ HRESULT CDECL wined3d_swapchain_get_back_buffer(const struct wined3d_swapchain *
      * NULL). We need this because this function is called from
      * stateblock_init_default_state() to get the default scissorrect
      * dimensions. */
-    if (!swapchain->back_buffers || back_buffer_idx >= swapchain->presentParms.BackBufferCount)
+    if (!swapchain->back_buffers || back_buffer_idx >= swapchain->desc.backbuffer_count)
     {
         WARN("Invalid back buffer index.\n");
         /* Native d3d9 doesn't set NULL here, just as wine's d3d9. But set it
@@ -243,12 +243,12 @@ struct wined3d_device * CDECL wined3d_swapchain_get_device(const struct wined3d_
     return swapchain->device;
 }
 
-HRESULT CDECL wined3d_swapchain_get_present_parameters(const struct wined3d_swapchain *swapchain,
-        WINED3DPRESENT_PARAMETERS *present_parameters)
+HRESULT CDECL wined3d_swapchain_get_desc(const struct wined3d_swapchain *swapchain,
+        struct wined3d_swapchain_desc *desc)
 {
-    TRACE("swapchain %p, present_parameters %p.\n", swapchain, present_parameters);
+    TRACE("swapchain %p, desc %p.\n", swapchain, desc);
 
-    *present_parameters = swapchain->presentParms;
+    *desc = swapchain->desc;
 
     return WINED3D_OK;
 }
@@ -475,7 +475,7 @@ static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const R
         /* DDBLT_KEYSRC will cause BltOverride to enable the alpha test with GL_NOTEQUAL, 0.0,
          * which is exactly what we want :-)
          */
-        if (swapchain->presentParms.Windowed)
+        if (swapchain->desc.windowed)
             MapWindowPoints(NULL, swapchain->win_handle, (LPPOINT)&destRect, 2);
         wined3d_surface_blt(swapchain->back_buffers[0], &destRect,
                 &cursor, NULL, WINEDDBLT_KEYSRC, NULL, WINED3DTEXF_POINT);
@@ -499,8 +499,8 @@ static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const R
     {
         src_rect = *src_rect_in;
         if (!render_to_fbo && (src_rect.left || src_rect.top
-                || src_rect.right != swapchain->presentParms.BackBufferWidth
-                || src_rect.bottom != swapchain->presentParms.BackBufferHeight))
+                || src_rect.right != swapchain->desc.backbuffer_width
+                || src_rect.bottom != swapchain->desc.backbuffer_height))
         {
             render_to_fbo = TRUE;
         }
@@ -509,8 +509,8 @@ static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const R
     {
         src_rect.left = 0;
         src_rect.top = 0;
-        src_rect.right = swapchain->presentParms.BackBufferWidth;
-        src_rect.bottom = swapchain->presentParms.BackBufferHeight;
+        src_rect.right = swapchain->desc.backbuffer_width;
+        src_rect.bottom = swapchain->desc.backbuffer_height;
     }
 
     if (dst_rect_in)
@@ -519,11 +519,9 @@ static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const R
         GetClientRect(swapchain->win_handle, &dst_rect);
 
     if (!render_to_fbo && (dst_rect.left || dst_rect.top
-            || dst_rect.right != swapchain->presentParms.BackBufferWidth
-            || dst_rect.bottom != swapchain->presentParms.BackBufferHeight))
-    {
+            || dst_rect.right != swapchain->desc.backbuffer_width
+            || dst_rect.bottom != swapchain->desc.backbuffer_height))
         render_to_fbo = TRUE;
-    }
 
     /* Rendering to a window of different size, presenting partial rectangles,
      * or rendering to a different window needs help from FBO_blit or a textured
@@ -548,7 +546,7 @@ static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const R
          *
          * The DISCARD swap effect is ok as well since any backbuffer content is allowed after
          * the swap. */
-        if (swapchain->presentParms.SwapEffect == WINED3DSWAPEFFECT_FLIP)
+        if (swapchain->desc.swap_effect == WINED3DSWAPEFFECT_FLIP)
             FIXME("Render-to-fbo with WINED3DSWAPEFFECT_FLIP\n");
 
         swapchain_blit(swapchain, context, &src_rect, &dst_rect);
@@ -590,7 +588,7 @@ static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const R
      * bug shows up much more than it does on Windows, and the players see single pixels
      * with wrong colors.
      * (The Max Payne bug has been confirmed on Windows with the debug runtime) */
-    if (FALSE && swapchain->presentParms.SwapEffect == WINED3DSWAPEFFECT_DISCARD)
+    if (FALSE && swapchain->desc.swap_effect == WINED3DSWAPEFFECT_DISCARD)
     {
         static const struct wined3d_color cyan = {0.0f, 1.0f, 1.0f, 1.0f};
 
@@ -634,13 +632,13 @@ static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const R
          * If the swapeffect is COPY, the content remains the same. If it is FLIP however,
          * the texture / sysmem copy needs to be reloaded from the drawable
          */
-        if (swapchain->presentParms.SwapEffect == WINED3DSWAPEFFECT_FLIP)
+        if (swapchain->desc.swap_effect == WINED3DSWAPEFFECT_FLIP)
             surface_modify_location(swapchain->back_buffers[0], swapchain->back_buffers[0]->draw_binding, TRUE);
     }
 
     if (fb->depth_stencil)
     {
-        if (swapchain->presentParms.Flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL
+        if (swapchain->desc.flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL
                 || fb->depth_stencil->flags & SFLAG_DISCARD)
         {
             surface_modify_ds_location(fb->depth_stencil, SFLAG_DS_DISCARDED,
@@ -691,7 +689,7 @@ void x11_copy_to_screen(const struct wined3d_swapchain *swapchain, const RECT *r
 
     /* Front buffer coordinates are screen coordinates. Map them to the
      * destination window if not fullscreened. */
-    if (swapchain->presentParms.Windowed)
+    if (swapchain->desc.windowed)
         ClientToScreen(window, &offset);
 
     TRACE("offset %s.\n", wine_dbgstr_point(&offset));
@@ -792,7 +790,7 @@ void swapchain_update_render_to_fbo(struct wined3d_swapchain *swapchain)
     if (wined3d_settings.offscreen_rendering_mode != ORM_FBO)
         return;
 
-    if (!swapchain->presentParms.BackBufferCount)
+    if (!swapchain->desc.backbuffer_count)
     {
         TRACE("Single buffered rendering.\n");
         swapchain->render_to_fbo = FALSE;
@@ -802,16 +800,16 @@ void swapchain_update_render_to_fbo(struct wined3d_swapchain *swapchain)
     GetClientRect(swapchain->win_handle, &client_rect);
 
     TRACE("Backbuffer %ux%u, window %ux%u.\n",
-            swapchain->presentParms.BackBufferWidth,
-            swapchain->presentParms.BackBufferHeight,
+            swapchain->desc.backbuffer_width,
+            swapchain->desc.backbuffer_height,
             client_rect.right, client_rect.bottom);
     TRACE("Multisample type %#x, quality %#x.\n",
-            swapchain->presentParms.MultiSampleType,
-            swapchain->presentParms.MultiSampleQuality);
+            swapchain->desc.multisample_type,
+            swapchain->desc.multisample_quality);
 
-    if (!wined3d_settings.always_offscreen && !swapchain->presentParms.MultiSampleType
-            && swapchain->presentParms.BackBufferWidth == client_rect.right
-            && swapchain->presentParms.BackBufferHeight == client_rect.bottom)
+    if (!wined3d_settings.always_offscreen && !swapchain->desc.multisample_type
+            && swapchain->desc.backbuffer_width == client_rect.right
+            && swapchain->desc.backbuffer_height == client_rect.bottom)
     {
         TRACE("Backbuffer dimensions match window dimensions, rendering onscreen.\n");
         swapchain->render_to_fbo = FALSE;
@@ -824,7 +822,7 @@ void swapchain_update_render_to_fbo(struct wined3d_swapchain *swapchain)
 
 /* Do not call while under the GL lock. */
 static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, WINED3DSURFTYPE surface_type,
-        struct wined3d_device *device, WINED3DPRESENT_PARAMETERS *present_parameters,
+        struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
         void *parent, const struct wined3d_parent_ops *parent_ops)
 {
     const struct wined3d_adapter *adapter = device->adapter;
@@ -836,14 +834,14 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, WINED3DSURFTY
     HRESULT hr;
     UINT i;
 
-    if (present_parameters->BackBufferCount > WINED3DPRESENT_BACK_BUFFER_MAX)
+    if (desc->backbuffer_count > WINED3DPRESENT_BACK_BUFFER_MAX)
     {
         FIXME("The application requested %u back buffers, this is not supported.\n",
-                present_parameters->BackBufferCount);
+                desc->backbuffer_count);
         return WINED3DERR_INVALIDCALL;
     }
 
-    if (present_parameters->BackBufferCount > 1)
+    if (desc->backbuffer_count > 1)
     {
         FIXME("The application requested more than one back buffer, this is not properly supported.\n"
                 "Please configure the application to use double buffering (1 back buffer) if possible.\n");
@@ -864,7 +862,7 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, WINED3DSURFTY
             return WINED3DERR_INVALIDCALL;
     }
 
-    window = present_parameters->hDeviceWindow ? present_parameters->hDeviceWindow : device->create_parms.focus_window;
+    window = desc->device_window ? desc->device_window : device->create_parms.focus_window;
 
     swapchain->device = device;
     swapchain->parent = parent;
@@ -880,37 +878,37 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, WINED3DSURFTY
     format = wined3d_get_format(&adapter->gl_info, mode.format_id);
 
     GetClientRect(window, &client_rect);
-    if (present_parameters->Windowed
-            && (!present_parameters->BackBufferWidth || !present_parameters->BackBufferHeight
-            || present_parameters->BackBufferFormat == WINED3DFMT_UNKNOWN))
+    if (desc->windowed
+            && (!desc->backbuffer_width || !desc->backbuffer_height
+            || desc->backbuffer_format == WINED3DFMT_UNKNOWN))
     {
 
-        if (!present_parameters->BackBufferWidth)
+        if (!desc->backbuffer_width)
         {
-            present_parameters->BackBufferWidth = client_rect.right;
-            TRACE("Updating width to %u.\n", present_parameters->BackBufferWidth);
+            desc->backbuffer_width = client_rect.right;
+            TRACE("Updating width to %u.\n", desc->backbuffer_width);
         }
 
-        if (!present_parameters->BackBufferHeight)
+        if (!desc->backbuffer_height)
         {
-            present_parameters->BackBufferHeight = client_rect.bottom;
-            TRACE("Updating height to %u.\n", present_parameters->BackBufferHeight);
+            desc->backbuffer_height = client_rect.bottom;
+            TRACE("Updating height to %u.\n", desc->backbuffer_height);
         }
 
-        if (present_parameters->BackBufferFormat == WINED3DFMT_UNKNOWN)
+        if (desc->backbuffer_format == WINED3DFMT_UNKNOWN)
         {
-            present_parameters->BackBufferFormat = swapchain->orig_fmt;
+            desc->backbuffer_format = swapchain->orig_fmt;
             TRACE("Updating format to %s.\n", debug_d3dformat(swapchain->orig_fmt));
         }
     }
-    swapchain->presentParms = *present_parameters;
+    swapchain->desc = *desc;
     swapchain_update_render_to_fbo(swapchain);
 
     TRACE("Creating front buffer.\n");
     hr = device->device_parent->ops->create_rendertarget(device->device_parent, parent,
-            swapchain->presentParms.BackBufferWidth, swapchain->presentParms.BackBufferHeight,
-            swapchain->presentParms.BackBufferFormat, swapchain->presentParms.MultiSampleType,
-            swapchain->presentParms.MultiSampleQuality, TRUE /* Lockable */,
+            swapchain->desc.backbuffer_width, swapchain->desc.backbuffer_height,
+            swapchain->desc.backbuffer_format, swapchain->desc.multisample_type,
+            swapchain->desc.multisample_quality, TRUE /* Lockable */,
             &swapchain->front_buffer);
     if (FAILED(hr))
     {
@@ -928,15 +926,15 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, WINED3DSURFTY
      * so we should really check to see if there is a fullscreen swapchain
      * already. Does a single head count as full screen? */
 
-    if (!present_parameters->Windowed)
+    if (!desc->windowed)
     {
         struct wined3d_display_mode mode;
 
         /* Change the display settings */
-        mode.width = present_parameters->BackBufferWidth;
-        mode.height = present_parameters->BackBufferHeight;
-        mode.format_id = present_parameters->BackBufferFormat;
-        mode.refresh_rate = present_parameters->FullScreen_RefreshRateInHz;
+        mode.width = desc->backbuffer_width;
+        mode.height = desc->backbuffer_height;
+        mode.format_id = desc->backbuffer_format;
+        mode.refresh_rate = desc->refresh_rate;
 
         hr = wined3d_device_set_display_mode(device, 0, &mode);
         if (FAILED(hr))
@@ -997,18 +995,18 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, WINED3DSURFTY
         }
 
         if (wined3d_settings.offscreen_rendering_mode != ORM_FBO
-                && (!present_parameters->EnableAutoDepthStencil
-                || swapchain->presentParms.AutoDepthStencilFormat != swapchain->ds_format->id))
+                && (!desc->enable_auto_depth_stencil
+                || swapchain->desc.auto_depth_stencil_format != swapchain->ds_format->id))
         {
             FIXME("Add OpenGL context recreation support to context_validate_onscreen_formats\n");
         }
         context_release(swapchain->context[0]);
     }
 
-    if (swapchain->presentParms.BackBufferCount > 0)
+    if (swapchain->desc.backbuffer_count > 0)
     {
         swapchain->back_buffers = HeapAlloc(GetProcessHeap(), 0,
-                sizeof(*swapchain->back_buffers) * swapchain->presentParms.BackBufferCount);
+                sizeof(*swapchain->back_buffers) * swapchain->desc.backbuffer_count);
         if (!swapchain->back_buffers)
         {
             ERR("Failed to allocate backbuffer array memory.\n");
@@ -1016,13 +1014,13 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, WINED3DSURFTY
             goto err;
         }
 
-        for (i = 0; i < swapchain->presentParms.BackBufferCount; ++i)
+        for (i = 0; i < swapchain->desc.backbuffer_count; ++i)
         {
             TRACE("Creating back buffer %u.\n", i);
             hr = device->device_parent->ops->create_rendertarget(device->device_parent, parent,
-                    swapchain->presentParms.BackBufferWidth, swapchain->presentParms.BackBufferHeight,
-                    swapchain->presentParms.BackBufferFormat, swapchain->presentParms.MultiSampleType,
-                    swapchain->presentParms.MultiSampleQuality, TRUE /* Lockable */,
+                    swapchain->desc.backbuffer_width, swapchain->desc.backbuffer_height,
+                    swapchain->desc.backbuffer_format, swapchain->desc.multisample_type,
+                    swapchain->desc.multisample_quality, TRUE /* Lockable */,
                     &swapchain->back_buffers[i]);
             if (FAILED(hr))
             {
@@ -1035,15 +1033,15 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, WINED3DSURFTY
     }
 
     /* Swapchains share the depth/stencil buffer, so only create a single depthstencil surface. */
-    if (present_parameters->EnableAutoDepthStencil && surface_type == SURFACE_OPENGL)
+    if (desc->enable_auto_depth_stencil && surface_type == SURFACE_OPENGL)
     {
         TRACE("Creating depth/stencil buffer.\n");
         if (!device->auto_depth_stencil)
         {
             hr = device->device_parent->ops->create_depth_stencil(device->device_parent,
-                    swapchain->presentParms.BackBufferWidth, swapchain->presentParms.BackBufferHeight,
-                    swapchain->presentParms.AutoDepthStencilFormat, swapchain->presentParms.MultiSampleType,
-                    swapchain->presentParms.MultiSampleQuality, FALSE /* FIXME: Discard */,
+                    swapchain->desc.backbuffer_width, swapchain->desc.backbuffer_height,
+                    swapchain->desc.auto_depth_stencil_format, swapchain->desc.multisample_type,
+                    swapchain->desc.multisample_quality, FALSE /* FIXME: Discard */,
                     &device->auto_depth_stencil);
             if (FAILED(hr))
             {
@@ -1078,7 +1076,7 @@ err:
 
     if (swapchain->back_buffers)
     {
-        for (i = 0; i < swapchain->presentParms.BackBufferCount; ++i)
+        for (i = 0; i < swapchain->desc.backbuffer_count; ++i)
         {
             if (swapchain->back_buffers[i])
             {
@@ -1111,15 +1109,15 @@ err:
 
 /* Do not call while under the GL lock. */
 HRESULT CDECL wined3d_swapchain_create(struct wined3d_device *device,
-        WINED3DPRESENT_PARAMETERS *present_parameters, WINED3DSURFTYPE surface_type,
+        struct wined3d_swapchain_desc *desc, WINED3DSURFTYPE surface_type,
         void *parent, const struct wined3d_parent_ops *parent_ops,
         struct wined3d_swapchain **swapchain)
 {
     struct wined3d_swapchain *object;
     HRESULT hr;
 
-    TRACE("device %p, present_parameters %p, swapchain %p, parent %p, surface_type %#x.\n",
-            device, present_parameters, swapchain, parent, surface_type);
+    TRACE("device %p, desc %p, swapchain %p, parent %p, surface_type %#x.\n",
+            device, desc, swapchain, parent, surface_type);
 
     object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
     if (!object)
@@ -1128,7 +1126,7 @@ HRESULT CDECL wined3d_swapchain_create(struct wined3d_device *device,
         return E_OUTOFMEMORY;
     }
 
-    hr = swapchain_init(object, surface_type, device, present_parameters, parent, parent_ops);
+    hr = swapchain_init(object, surface_type, device, desc, parent, parent_ops);
     if (FAILED(hr))
     {
         WARN("Failed to initialize swapchain, hr %#x.\n", hr);
@@ -1238,7 +1236,7 @@ void swapchain_update_draw_bindings(struct wined3d_swapchain *swapchain)
 
     surface_update_draw_binding(swapchain->front_buffer);
 
-    for (i = 0; i < swapchain->presentParms.BackBufferCount; ++i)
+    for (i = 0; i < swapchain->desc.backbuffer_count; ++i)
     {
         surface_update_draw_binding(swapchain->back_buffers[i]);
     }
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index 1befb128..d3fb59e 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -239,7 +239,7 @@
 @ cdecl wined3d_swapchain_get_front_buffer_data(ptr ptr)
 @ cdecl wined3d_swapchain_get_gamma_ramp(ptr ptr)
 @ cdecl wined3d_swapchain_get_parent(ptr)
-@ cdecl wined3d_swapchain_get_present_parameters(ptr ptr)
+@ cdecl wined3d_swapchain_get_desc(ptr ptr)
 @ cdecl wined3d_swapchain_get_raster_status(ptr ptr)
 @ cdecl wined3d_swapchain_incref(ptr)
 @ cdecl wined3d_swapchain_present(ptr ptr ptr ptr ptr long)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 41e1388..31ea597 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2442,7 +2442,7 @@ struct wined3d_swapchain
 
     struct wined3d_surface **back_buffers;
     struct wined3d_surface *front_buffer;
-    WINED3DPRESENT_PARAMETERS presentParms;
+    struct wined3d_swapchain_desc desc;
     DWORD orig_width, orig_height;
     enum wined3d_format_id orig_fmt;
     struct wined3d_gamma_ramp orig_gamma;
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 89acd0f..34abce9 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -1638,24 +1638,24 @@ struct wined3d_adapter_identifier
     SIZE_T video_memory;
 };
 
-typedef struct _WINED3DPRESENT_PARAMETERS
-{
-    UINT BackBufferWidth;
-    UINT BackBufferHeight;
-    enum wined3d_format_id BackBufferFormat;
-    UINT BackBufferCount;
-    WINED3DMULTISAMPLE_TYPE MultiSampleType;
-    DWORD MultiSampleQuality;
-    WINED3DSWAPEFFECT SwapEffect;
-    HWND hDeviceWindow;
-    BOOL Windowed;
-    BOOL EnableAutoDepthStencil;
-    enum wined3d_format_id AutoDepthStencilFormat;
-    DWORD Flags;
-    UINT FullScreen_RefreshRateInHz;
-    UINT PresentationInterval;
-    BOOL AutoRestoreDisplayMode;
-} WINED3DPRESENT_PARAMETERS;
+struct wined3d_swapchain_desc
+{
+    UINT backbuffer_width;
+    UINT backbuffer_height;
+    enum wined3d_format_id backbuffer_format;
+    UINT backbuffer_count;
+    WINED3DMULTISAMPLE_TYPE multisample_type;
+    DWORD multisample_quality;
+    WINED3DSWAPEFFECT swap_effect;
+    HWND device_window;
+    BOOL windowed;
+    BOOL enable_auto_depth_stencil;
+    enum wined3d_format_id auto_depth_stencil_format;
+    DWORD flags;
+    UINT refresh_rate;
+    UINT swap_interval;
+    BOOL auto_restore_display_mode;
+};
 
 struct wined3d_resource_desc
 {
@@ -2041,7 +2041,7 @@ struct wined3d_device_parent_ops
             UINT width, UINT height, UINT depth, enum wined3d_format_id format_id, WINED3DPOOL pool, DWORD usage,
             struct wined3d_volume **volume);
     HRESULT (__cdecl *create_swapchain)(struct wined3d_device_parent *device_parent,
-            WINED3DPRESENT_PARAMETERS *present_parameters, struct wined3d_swapchain **swapchain);
+            struct wined3d_swapchain_desc *desc, struct wined3d_swapchain **swapchain);
 };
 
 typedef HRESULT (CDECL *wined3d_device_reset_cb)(struct wined3d_resource *resource);
@@ -2213,8 +2213,8 @@ HRESULT __cdecl wined3d_device_get_vs_consts_i(const struct wined3d_device *devi
         UINT start_register, int *constants, UINT vector4i_count);
 HRESULT __cdecl wined3d_device_get_wined3d(const struct wined3d_device *device, struct wined3d **wined3d);
 ULONG __cdecl wined3d_device_incref(struct wined3d_device *device);
-HRESULT __cdecl wined3d_device_init_3d(struct wined3d_device *device, WINED3DPRESENT_PARAMETERS *present_parameters);
-HRESULT __cdecl wined3d_device_init_gdi(struct wined3d_device *device, WINED3DPRESENT_PARAMETERS *present_parameters);
+HRESULT __cdecl wined3d_device_init_3d(struct wined3d_device *device, struct wined3d_swapchain_desc *swapchain_desc);
+HRESULT __cdecl wined3d_device_init_gdi(struct wined3d_device *device, struct wined3d_swapchain_desc *swapchain_desc);
 HRESULT __cdecl wined3d_device_multiply_transform(struct wined3d_device *device,
         WINED3DTRANSFORMSTATETYPE state, const struct wined3d_matrix *matrix);
 HRESULT __cdecl wined3d_device_present(const struct wined3d_device *device, const RECT *src_rect,
@@ -2224,7 +2224,7 @@ HRESULT __cdecl wined3d_device_process_vertices(struct wined3d_device *device,
         const struct wined3d_vertex_declaration *declaration, DWORD flags, DWORD dst_fvf);
 void __cdecl wined3d_device_release_focus_window(struct wined3d_device *device);
 HRESULT __cdecl wined3d_device_reset(struct wined3d_device *device,
-        const WINED3DPRESENT_PARAMETERS *present_parameters, wined3d_device_reset_cb callback);
+        const struct wined3d_swapchain_desc *swapchain_desc, wined3d_device_reset_cb callback);
 void __cdecl wined3d_device_restore_fullscreen_window(struct wined3d_device *device, HWND window);
 HRESULT __cdecl wined3d_device_set_base_vertex_index(struct wined3d_device *device, INT base_index);
 HRESULT __cdecl wined3d_device_set_clip_plane(struct wined3d_device *device, UINT plane_idx, const float *plane);
@@ -2395,7 +2395,7 @@ HRESULT __cdecl wined3d_surface_update_overlay_z_order(struct wined3d_surface *s
         DWORD flags, struct wined3d_surface *ref);
 
 HRESULT __cdecl wined3d_swapchain_create(struct wined3d_device *device,
-        WINED3DPRESENT_PARAMETERS *present_parameters, WINED3DSURFTYPE surface_type, void *parent,
+        struct wined3d_swapchain_desc *desc, WINED3DSURFTYPE surface_type, void *parent,
         const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain);
 ULONG __cdecl wined3d_swapchain_decref(struct wined3d_swapchain *swapchain);
 HRESULT __cdecl wined3d_swapchain_get_back_buffer(const struct wined3d_swapchain *swapchain,
@@ -2408,8 +2408,8 @@ HRESULT __cdecl wined3d_swapchain_get_front_buffer_data(const struct wined3d_swa
 HRESULT __cdecl wined3d_swapchain_get_gamma_ramp(const struct wined3d_swapchain *swapchain,
         struct wined3d_gamma_ramp *ramp);
 void * __cdecl wined3d_swapchain_get_parent(const struct wined3d_swapchain *swapchain);
-HRESULT __cdecl wined3d_swapchain_get_present_parameters(const struct wined3d_swapchain *swapchain,
-        WINED3DPRESENT_PARAMETERS *present_parameters);
+HRESULT __cdecl wined3d_swapchain_get_desc(const struct wined3d_swapchain *swapchain,
+        struct wined3d_swapchain_desc *desc);
 HRESULT __cdecl wined3d_swapchain_get_raster_status(const struct wined3d_swapchain *swapchain,
         WINED3DRASTER_STATUS *raster_status);
 ULONG __cdecl wined3d_swapchain_incref(struct wined3d_swapchain *swapchain);
diff --git a/include/wine/winedxgi.idl b/include/wine/winedxgi.idl
index 3ff0b13..363030a 100644
--- a/include/wine/winedxgi.idl
+++ b/include/wine/winedxgi.idl
@@ -54,7 +54,7 @@ interface IWineDXGIDevice : IDXGIDevice
         [out] void **surface
     );
     HRESULT create_swapchain(
-        [in] struct _WINED3DPRESENT_PARAMETERS *present_parameters,
+        [in] struct wined3d_swapchain_desc *desc,
         [out] struct wined3d_swapchain **wined3d_swapchain
     );
 }
-- 
1.7.3.4




More information about the wine-patches mailing list