Signed-off-by: Zhiyi Zhang zzhang@codeweavers.com --- dlls/d3d8/directx.c | 7 ++++++- dlls/d3d9/directx.c | 14 ++++++++++++-- dlls/ddraw/ddraw.c | 12 ++++++------ dlls/ddraw/device.c | 8 ++++---- dlls/ddraw/surface.c | 2 +- dlls/dxgi/swapchain.c | 2 +- dlls/wined3d/device.c | 2 +- dlls/wined3d/directx.c | 25 +++++++++++-------------- dlls/wined3d/swapchain.c | 30 ++++++++++++++++-------------- dlls/wined3d/wined3d.spec | 4 ++-- include/wine/wined3d.h | 6 +++--- 11 files changed, 63 insertions(+), 49 deletions(-)
diff --git a/dlls/d3d8/directx.c b/dlls/d3d8/directx.c index b78b119d22c..d515caffd25 100644 --- a/dlls/d3d8/directx.c +++ b/dlls/d3d8/directx.c @@ -184,13 +184,18 @@ static HRESULT WINAPI d3d8_GetAdapterDisplayMode(IDirect3D8 *iface, UINT adapter { struct d3d8 *d3d8 = impl_from_IDirect3D8(iface); struct wined3d_display_mode wined3d_mode; + unsigned int output_idx; HRESULT hr;
TRACE("iface %p, adapter %u, mode %p.\n", iface, adapter, mode);
+ output_idx = adapter; + if (output_idx >= d3d8->wined3d_output_count) + return D3DERR_INVALIDCALL; + wined3d_mutex_lock(); - hr = wined3d_get_adapter_display_mode(d3d8->wined3d, adapter, &wined3d_mode, NULL); + hr = wined3d_output_get_display_mode(d3d8->wined3d_outputs[output_idx], &wined3d_mode, NULL); wined3d_mutex_unlock();
if (SUCCEEDED(hr)) diff --git a/dlls/d3d9/directx.c b/dlls/d3d9/directx.c index 83bb3d8217c..d006cf27435 100644 --- a/dlls/d3d9/directx.c +++ b/dlls/d3d9/directx.c @@ -208,12 +208,17 @@ static HRESULT WINAPI d3d9_GetAdapterDisplayMode(IDirect3D9Ex *iface, UINT adapt { struct d3d9 *d3d9 = impl_from_IDirect3D9Ex(iface); struct wined3d_display_mode wined3d_mode; + unsigned int output_idx; HRESULT hr;
TRACE("iface %p, adapter %u, mode %p.\n", iface, adapter, mode);
+ output_idx = adapter; + if (output_idx >= d3d9->wined3d_output_count) + return D3DERR_INVALIDCALL; + wined3d_mutex_lock(); - hr = wined3d_get_adapter_display_mode(d3d9->wined3d, adapter, &wined3d_mode, NULL); + hr = wined3d_output_get_display_mode(d3d9->wined3d_outputs[output_idx], &wined3d_mode, NULL); wined3d_mutex_unlock();
if (SUCCEEDED(hr)) @@ -504,16 +509,21 @@ static HRESULT WINAPI d3d9_GetAdapterDisplayModeEx(IDirect3D9Ex *iface, { struct d3d9 *d3d9 = impl_from_IDirect3D9Ex(iface); struct wined3d_display_mode wined3d_mode; + unsigned int output_idx; HRESULT hr;
TRACE("iface %p, adapter %u, mode %p, rotation %p.\n", iface, adapter, mode, rotation);
+ output_idx = adapter; + if (output_idx >= d3d9->wined3d_output_count) + return D3DERR_INVALIDCALL; + if (mode->Size != sizeof(*mode)) return D3DERR_INVALIDCALL;
wined3d_mutex_lock(); - hr = wined3d_get_adapter_display_mode(d3d9->wined3d, adapter, &wined3d_mode, + hr = wined3d_output_get_display_mode(d3d9->wined3d_outputs[output_idx], &wined3d_mode, (enum wined3d_display_rotation *)rotation); wined3d_mutex_unlock();
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index 4d4a9d7114f..f947ca8b2b6 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -556,7 +556,7 @@ static HRESULT ddraw_attach_d3d_device(struct ddraw *ddraw, HWND window,
TRACE("ddraw %p.\n", ddraw);
- if (FAILED(hr = wined3d_get_adapter_display_mode(ddraw->wined3d, WINED3DADAPTER_DEFAULT, &mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(ddraw->wined3d_output, &mode, NULL))) { ERR("Failed to get display mode.\n"); return hr; @@ -1617,7 +1617,7 @@ static HRESULT WINAPI ddraw7_GetDisplayMode(IDirectDraw7 *iface, DDSURFACEDESC2
wined3d_mutex_lock();
- if (FAILED(hr = wined3d_get_adapter_display_mode(ddraw->wined3d, WINED3DADAPTER_DEFAULT, &mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(ddraw->wined3d_output, &mode, NULL))) { ERR("Failed to get display mode, hr %#x.\n", hr); wined3d_mutex_unlock(); @@ -1710,7 +1710,7 @@ static HRESULT WINAPI ddraw7_GetFourCCCodes(IDirectDraw7 *iface, DWORD *NumCodes
TRACE("iface %p, codes_count %p, codes %p.\n", iface, NumCodes, Codes);
- if (FAILED(hr = wined3d_get_adapter_display_mode(ddraw->wined3d, WINED3DADAPTER_DEFAULT, &mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(ddraw->wined3d_output, &mode, NULL))) { ERR("Failed to get display mode, hr %#x.\n", hr); return hr; @@ -1772,7 +1772,7 @@ static HRESULT WINAPI ddraw7_GetMonitorFrequency(IDirectDraw7 *iface, DWORD *fre TRACE("iface %p, frequency %p.\n", iface, frequency);
wined3d_mutex_lock(); - hr = wined3d_get_adapter_display_mode(ddraw->wined3d, WINED3DADAPTER_DEFAULT, &mode, NULL); + hr = wined3d_output_get_display_mode(ddraw->wined3d_output, &mode, NULL); wined3d_mutex_unlock(); if (FAILED(hr)) { @@ -1907,7 +1907,7 @@ static HRESULT WINAPI ddraw7_GetAvailableVidMem(IDirectDraw7 *iface, DDSCAPS2 *c /* Some applications (e.g. 3DMark 2000) assume that the reported amount of * video memory doesn't include the memory used by the default framebuffer. */ - if (FAILED(hr = wined3d_get_adapter_display_mode(ddraw->wined3d, WINED3DADAPTER_DEFAULT, &mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(ddraw->wined3d_output, &mode, NULL))) { WARN("Failed to get display mode, hr %#x.\n", hr); wined3d_mutex_unlock(); @@ -4432,7 +4432,7 @@ static HRESULT WINAPI d3d7_EnumZBufferFormats(IDirect3D7 *iface, REFCLSID device * not like that we'll have to find some workaround, like iterating over * all imaginable formats and collecting all the depth stencil formats we * can get. */ - if (FAILED(hr = wined3d_get_adapter_display_mode(ddraw->wined3d, WINED3DADAPTER_DEFAULT, &mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(ddraw->wined3d_output, &mode, NULL))) { ERR("Failed to get display mode, hr %#x.\n", hr); wined3d_mutex_unlock(); diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c index 39626157a56..ab3584b8fea 100644 --- a/dlls/ddraw/device.c +++ b/dlls/ddraw/device.c @@ -1086,10 +1086,10 @@ static HRESULT d3d_device7_EnumTextureFormats(IDirect3DDevice7 *iface, wined3d_mutex_lock();
memset(&mode, 0, sizeof(mode)); - if (FAILED(hr = wined3d_get_adapter_display_mode(device->ddraw->wined3d, WINED3DADAPTER_DEFAULT, &mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(device->ddraw->wined3d_output, &mode, NULL))) { wined3d_mutex_unlock(); - WARN("Cannot get the current adapter format\n"); + WARN("Failed to get output display mode, hr %#x.\n", hr); return hr; }
@@ -1214,10 +1214,10 @@ static HRESULT WINAPI d3d_device2_EnumTextureFormats(IDirect3DDevice2 *iface, wined3d_mutex_lock();
memset(&mode, 0, sizeof(mode)); - if (FAILED(hr = wined3d_get_adapter_display_mode(device->ddraw->wined3d, WINED3DADAPTER_DEFAULT, &mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(device->ddraw->wined3d_output, &mode, NULL))) { wined3d_mutex_unlock(); - WARN("Cannot get the current adapter format\n"); + WARN("Failed to get output display mode, hr %#x.\n", hr); return hr; }
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index 442aeed67b3..a803324c450 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -6008,7 +6008,7 @@ HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_ return DDERR_INVALIDCAPS; }
- if (FAILED(hr = wined3d_get_adapter_display_mode(ddraw->wined3d, WINED3DADAPTER_DEFAULT, &mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(ddraw->wined3d_output, &mode, NULL))) { ERR("Failed to get display mode, hr %#x.\n", hr); heap_free(texture); diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c index 25e994c5fe8..0d929099eb9 100644 --- a/dlls/dxgi/swapchain.c +++ b/dlls/dxgi/swapchain.c @@ -2903,7 +2903,7 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI if (FAILED(hr = wined3d_swapchain_desc_from_dxgi(&wined3d_desc, window, swapchain_desc, fullscreen_desc))) return hr; if (FAILED(hr = wined3d_swapchain_state_create(&wined3d_desc, window, - dxgi_adapter->factory->wined3d, dxgi_adapter->ordinal, &swapchain->state))) + dxgi_adapter->factory->wined3d, &swapchain->state))) return hr;
if (swapchain_desc->BufferUsage && swapchain_desc->BufferUsage != DXGI_USAGE_RENDER_TARGET_OUTPUT) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 21f9af9566d..9a1a16a6a7b 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -4856,7 +4856,7 @@ HRESULT CDECL wined3d_device_set_cursor_properties(struct wined3d_device *device return WINED3DERR_INVALIDCALL; }
- if (FAILED(hr = wined3d_get_adapter_display_mode(device->wined3d, device->adapter->ordinal, &mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(&device->adapter->outputs[0], &mode, NULL))) { ERR("Failed to get display mode, hr %#x.\n", hr); return WINED3DERR_INVALIDCALL; diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index fb43e46ee5e..6ab9dd23579 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -933,7 +933,7 @@ HRESULT CDECL wined3d_get_output_desc(const struct wined3d *wined3d, unsigned in if (!(monitor = MonitorFromPoint(adapter->monitor_position, MONITOR_DEFAULTTOPRIMARY))) return WINED3DERR_INVALIDCALL;
- if (FAILED(hr = wined3d_get_adapter_display_mode(wined3d, adapter_idx, &mode, &rotation))) + if (FAILED(hr = wined3d_output_get_display_mode(&adapter->outputs[0], &mode, &rotation))) return hr;
memcpy(desc->device_name, adapter->device_name, sizeof(desc->device_name)); @@ -1144,7 +1144,7 @@ HRESULT CDECL wined3d_find_closest_matching_adapter_mode(const struct wined3d *w if (!mode->width || !mode->height) { struct wined3d_display_mode current_mode; - if (FAILED(hr = wined3d_get_adapter_display_mode(wined3d, adapter_idx, + if (FAILED(hr = wined3d_output_get_display_mode(&wined3d->adapters[adapter_idx]->outputs[0], ¤t_mode, NULL))) { heap_free(matching_modes); @@ -1180,24 +1180,20 @@ HRESULT CDECL wined3d_find_closest_matching_adapter_mode(const struct wined3d *w return WINED3D_OK; }
-HRESULT CDECL wined3d_get_adapter_display_mode(const struct wined3d *wined3d, UINT adapter_idx, +HRESULT CDECL wined3d_output_get_display_mode(const struct wined3d_output *output, struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation) { - const struct wined3d_adapter *adapter; DEVMODEW m;
- TRACE("wined3d %p, adapter_idx %u, display_mode %p, rotation %p.\n", - wined3d, adapter_idx, mode, rotation); + TRACE("output %p, display_mode %p, rotation %p.\n", output, mode, rotation);
- if (!mode || adapter_idx >= wined3d->adapter_count) + if (!mode) return WINED3DERR_INVALIDCALL;
- adapter = wined3d->adapters[adapter_idx]; - memset(&m, 0, sizeof(m)); m.dmSize = sizeof(m);
- EnumDisplaySettingsExW(adapter->device_name, ENUM_CURRENT_SETTINGS, &m, 0); + EnumDisplaySettingsExW(output->device_name, ENUM_CURRENT_SETTINGS, &m, 0); mode->width = m.dmPelsWidth; mode->height = m.dmPelsHeight; mode->refresh_rate = DEFAULT_REFRESH_RATE; @@ -1209,12 +1205,12 @@ HRESULT CDECL wined3d_get_adapter_display_mode(const struct wined3d *wined3d, UI * are pretty angry if they SetDisplayMode from 24 to 16 bpp and find out * that GetDisplayMode still returns 24 bpp. This should probably be * handled in winex11 instead. */ - if (adapter->outputs[0].screen_format && adapter->outputs[0].screen_format != mode->format_id) + if (output->screen_format && output->screen_format != mode->format_id) { WARN("Overriding format %s with stored format %s.\n", debug_d3dformat(mode->format_id), - debug_d3dformat(adapter->outputs[0].screen_format)); - mode->format_id = adapter->outputs[0].screen_format; + debug_d3dformat(output->screen_format)); + mode->format_id = output->screen_format; }
if (!(m.dmFields & DM_DISPLAYFLAGS)) @@ -1421,7 +1417,8 @@ HRESULT CDECL wined3d_get_adapter_raster_status(const struct wined3d *wined3d, U
if (!QueryPerformanceCounter(&counter) || !QueryPerformanceFrequency(&freq_per_sec)) return WINED3DERR_INVALIDCALL; - if (FAILED(wined3d_get_adapter_display_mode(wined3d, adapter_idx, &mode, NULL))) + if (FAILED(wined3d_output_get_display_mode(&wined3d->adapters[adapter_idx]->outputs[0], &mode, + NULL))) return WINED3DERR_INVALIDCALL; if (mode.refresh_rate == DEFAULT_REFRESH_RATE) mode.refresh_rate = 60; diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 720a82f9b32..57e5e25003a 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -321,12 +321,18 @@ struct wined3d_swapchain_state * CDECL wined3d_swapchain_get_state(struct wined3 HRESULT CDECL wined3d_swapchain_get_display_mode(const struct wined3d_swapchain *swapchain, struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation) { + struct wined3d_output *output; HRESULT hr;
TRACE("swapchain %p, mode %p, rotation %p.\n", swapchain, mode, rotation);
- hr = wined3d_get_adapter_display_mode(swapchain->device->wined3d, - swapchain->device->adapter->ordinal, mode, rotation); + if (!(output = wined3d_swapchain_get_output(swapchain))) + { + ERR("Failed to get output from swapchain %p.\n", swapchain); + return E_FAIL; + } + + hr = wined3d_output_get_display_mode(output, mode, rotation);
TRACE("Returning w %u, h %u, refresh rate %u, format %s.\n", mode->width, mode->height, mode->refresh_rate, debug_d3dformat(mode->format_id)); @@ -811,8 +817,7 @@ static enum wined3d_format_id adapter_format_from_backbuffer_format(const struct }
static HRESULT wined3d_swapchain_state_init(struct wined3d_swapchain_state *state, - const struct wined3d_swapchain_desc *desc, HWND window, - struct wined3d *wined3d, unsigned int adapter_idx) + const struct wined3d_swapchain_desc *desc, HWND window, struct wined3d *wined3d) { struct wined3d_output *output; HRESULT hr; @@ -825,7 +830,7 @@ static HRESULT wined3d_swapchain_state_init(struct wined3d_swapchain_state *stat return E_FAIL; }
- if (FAILED(hr = wined3d_get_adapter_display_mode(wined3d, adapter_idx, &state->original_mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(output, &state->original_mode, NULL))) { ERR("Failed to get current display mode, hr %#x.\n", hr); return hr; @@ -881,7 +886,7 @@ static HRESULT wined3d_swapchain_init(struct wined3d_swapchain *swapchain, struc FIXME("Unimplemented swap effect %#x.\n", desc->swap_effect);
window = desc->device_window ? desc->device_window : device->create_parms.focus_window; - if (FAILED(hr = wined3d_swapchain_state_init(&swapchain->state, desc, window, device->wined3d, adapter->ordinal))) + if (FAILED(hr = wined3d_swapchain_state_init(&swapchain->state, desc, window, device->wined3d))) return hr;
swapchain->swapchain_ops = swapchain_ops; @@ -1495,7 +1500,7 @@ HRESULT CDECL wined3d_swapchain_state_resize_target(struct wined3d_swapchain_sta } else { - if (FAILED(hr = wined3d_get_adapter_display_mode(wined3d, 0, &actual_mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(output, &actual_mode, NULL))) { ERR("Failed to get display mode, hr %#x.\n", hr); wined3d_mutex_unlock(); @@ -1664,7 +1669,7 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st if (mode) WARN("WINED3D_SWAPCHAIN_ALLOW_MODE_SWITCH is not set, ignoring mode.\n");
- if (FAILED(hr = wined3d_get_adapter_display_mode(wined3d, 0, &actual_mode, NULL))) + if (FAILED(hr = wined3d_output_get_display_mode(output, &actual_mode, NULL))) { ERR("Failed to get display mode, hr %#x.\n", hr); return WINED3DERR_INVALIDCALL; @@ -1715,20 +1720,17 @@ void CDECL wined3d_swapchain_state_destroy(struct wined3d_swapchain_state *state }
HRESULT CDECL wined3d_swapchain_state_create(const struct wined3d_swapchain_desc *desc, - HWND window, struct wined3d *wined3d, unsigned int adapter_idx, struct wined3d_swapchain_state **state) + HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state **state) { struct wined3d_swapchain_state *s; HRESULT hr;
- TRACE("desc %p, window %p, wined3d %p, adapter_idx %u, state %p.\n", - desc, window, wined3d, adapter_idx, state); - - TRACE("desc %p, window %p, state %p.\n", desc, window, state); + TRACE("desc %p, window %p, wined3d %p, state %p.\n", desc, window, wined3d, state);
if (!(s = heap_alloc_zero(sizeof(*s)))) return E_OUTOFMEMORY;
- if (FAILED(hr = wined3d_swapchain_state_init(s, desc, window, wined3d, adapter_idx))) + if (FAILED(hr = wined3d_swapchain_state_init(s, desc, window, wined3d))) { heap_free(s); return hr; diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index b83adbaa8f3..01f261b7662 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -12,7 +12,6 @@ @ cdecl wined3d_find_closest_matching_adapter_mode(ptr long ptr) @ cdecl wined3d_get_adapter(ptr long) @ cdecl wined3d_get_adapter_count(ptr) -@ cdecl wined3d_get_adapter_display_mode(ptr long ptr ptr) @ cdecl wined3d_get_adapter_identifier(ptr long long ptr) @ cdecl wined3d_get_adapter_raster_status(ptr long ptr) @ cdecl wined3d_get_device_caps(ptr long long ptr) @@ -159,6 +158,7 @@ @ cdecl wined3d_device_update_texture(ptr ptr ptr) @ cdecl wined3d_device_validate_device(ptr ptr)
+@ cdecl wined3d_output_get_display_mode(ptr ptr ptr) @ cdecl wined3d_output_get_mode(ptr long long long ptr) @ cdecl wined3d_output_get_mode_count(ptr long long) @ cdecl wined3d_output_set_display_mode(ptr ptr) @@ -280,7 +280,7 @@ @ cdecl wined3d_swapchain_set_palette(ptr ptr) @ cdecl wined3d_swapchain_set_window(ptr ptr)
-@ cdecl wined3d_swapchain_state_create(ptr ptr ptr long ptr) +@ cdecl wined3d_swapchain_state_create(ptr ptr ptr ptr) @ cdecl wined3d_swapchain_state_destroy(ptr) @ cdecl wined3d_swapchain_state_resize_target(ptr ptr ptr ptr) @ cdecl wined3d_swapchain_state_set_fullscreen(ptr ptr ptr ptr ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index f62375e539e..b2b7dac87c2 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2263,8 +2263,6 @@ HRESULT __cdecl wined3d_find_closest_matching_adapter_mode(const struct wined3d struct wined3d_adapter * __cdecl wined3d_get_adapter(const struct wined3d *wined3d, unsigned int idx); UINT __cdecl wined3d_get_adapter_count(const struct wined3d *wined3d); -HRESULT __cdecl wined3d_get_adapter_display_mode(const struct wined3d *wined3d, UINT adapter_idx, - struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation); HRESULT __cdecl wined3d_get_adapter_identifier(const struct wined3d *wined3d, UINT adapter_idx, DWORD flags, struct wined3d_adapter_identifier *identifier); HRESULT __cdecl wined3d_get_adapter_raster_status(const struct wined3d *wined3d, UINT adapter_idx, @@ -2494,6 +2492,8 @@ HRESULT __cdecl wined3d_device_update_texture(struct wined3d_device *device, struct wined3d_texture *src_texture, struct wined3d_texture *dst_texture); HRESULT __cdecl wined3d_device_validate_device(const struct wined3d_device *device, DWORD *num_passes);
+HRESULT __cdecl wined3d_output_get_display_mode(const struct wined3d_output *output, + struct wined3d_display_mode *mode, enum wined3d_display_rotation *rotation); HRESULT __cdecl wined3d_output_get_mode(const struct wined3d_output *output, enum wined3d_format_id format_id, enum wined3d_scanline_ordering scanline_ordering, unsigned int mode_idx, struct wined3d_display_mode *mode); @@ -2756,7 +2756,7 @@ void __cdecl wined3d_swapchain_set_palette(struct wined3d_swapchain *swapchain, void __cdecl wined3d_swapchain_set_window(struct wined3d_swapchain *swapchain, HWND window);
HRESULT __cdecl wined3d_swapchain_state_create(const struct wined3d_swapchain_desc *desc, - HWND window, struct wined3d *wined3d, unsigned int adapter_idx, struct wined3d_swapchain_state **state); + HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state **state); void __cdecl wined3d_swapchain_state_destroy(struct wined3d_swapchain_state *state); HRESULT __cdecl wined3d_swapchain_state_resize_target(struct wined3d_swapchain_state *state, struct wined3d *wined3d, struct wined3d_output *output,