From ef97b4b070bc361f17822fe98b2c34386b06392a Mon Sep 17 00:00:00 2001 From: Louis Lenders Date: Tue, 20 Jul 2010 22:14:43 +0200 Subject: wined3d: Extend IWineD3D_GetAdapterDisplayMode with an extra paramater to pass back some extra adapter info. --- dlls/d3d8/directx.c | 2 +- dlls/d3d9/directx.c | 5 +++-- dlls/wined3d/device.c | 2 +- dlls/wined3d/directx.c | 2 +- dlls/wined3d/swapchain.c | 2 +- dlls/wined3d/swapchain_base.c | 2 +- include/wine/wined3d.idl | 23 ++++++++++++++++++++++- 7 files changed, 30 insertions(+), 8 deletions(-) diff --git a/dlls/d3d8/directx.c b/dlls/d3d8/directx.c index 8bcd5ab..79d6e91 100644 --- a/dlls/d3d8/directx.c +++ b/dlls/d3d8/directx.c @@ -180,7 +180,7 @@ static HRESULT WINAPI IDirect3D8Impl_GetAdapterDisplayMode (LPDIRECT3D8 iface, U iface, Adapter, pMode); wined3d_mutex_lock(); - hr = IWineD3D_GetAdapterDisplayMode(This->WineD3D, Adapter, (WINED3DDISPLAYMODE *) pMode); + hr = IWineD3D_GetAdapterDisplayMode(This->WineD3D, Adapter, (WINED3DDISPLAYMODE *) pMode, NULL); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) pMode->Format = d3dformat_from_wined3dformat(pMode->Format); diff --git a/dlls/d3d9/directx.c b/dlls/d3d9/directx.c index 1fcc8c4..2ad2767 100644 --- a/dlls/d3d9/directx.c +++ b/dlls/d3d9/directx.c @@ -178,14 +178,15 @@ static HRESULT WINAPI IDirect3D9Impl_EnumAdapterModes(LPDIRECT3D9EX iface, UINT return hr; } -static HRESULT WINAPI IDirect3D9Impl_GetAdapterDisplayMode(LPDIRECT3D9EX iface, UINT Adapter, D3DDISPLAYMODE* pMode) { +static HRESULT WINAPI IDirect3D9Impl_GetAdapterDisplayMode(LPDIRECT3D9EX iface, UINT Adapter, D3DDISPLAYMODE* pMode) +{ IDirect3D9Impl *This = (IDirect3D9Impl *)iface; HRESULT hr; TRACE("iface %p, adapter %u, mode %p.\n", iface, Adapter, pMode); wined3d_mutex_lock(); - hr = IWineD3D_GetAdapterDisplayMode(This->WineD3D, Adapter, (WINED3DDISPLAYMODE *) pMode); + hr = IWineD3D_GetAdapterDisplayMode(This->WineD3D, Adapter, (WINED3DDISPLAYMODE *) pMode, NULL); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) pMode->Format = d3dformat_from_wined3dformat(pMode->Format); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index ecd2919..985d11f 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -7001,7 +7001,7 @@ HRESULT device_init(IWineD3DDeviceImpl *device, IWineD3DImpl *wined3d, device->posFixup[0] = 1.0f; /* This is needed to get the x coord unmodified through a MAD. */ /* Get the initial screen setup for ddraw. */ - hr = IWineD3D_GetAdapterDisplayMode((IWineD3D *)wined3d, adapter_idx, &mode); + hr = IWineD3D_GetAdapterDisplayMode((IWineD3D *)wined3d, adapter_idx, &mode, NULL); if (FAILED(hr)) { ERR("Failed to get the adapter's display mode, hr %#x.\n", hr); diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 8c744ff..b809087 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -2860,7 +2860,7 @@ static HRESULT WINAPI IWineD3DImpl_EnumAdapterModes(IWineD3D *iface, UINT Adapte return WINED3D_OK; } -static HRESULT WINAPI IWineD3DImpl_GetAdapterDisplayMode(IWineD3D *iface, UINT Adapter, WINED3DDISPLAYMODE *pMode) +static HRESULT WINAPI IWineD3DImpl_GetAdapterDisplayMode(IWineD3D *iface, UINT Adapter, WINED3DDISPLAYMODE *pMode, struct wined3d_adapter_info_ex *adapterinfo) { TRACE("iface %p, adapter_idx %u, display_mode %p.\n", iface, Adapter, pMode); diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 6c5326c..8a7613e 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -670,7 +670,7 @@ HRESULT swapchain_init(IWineD3DSwapChainImpl *swapchain, WINED3DSURFTYPE surface present_parameters->BackBufferHeight); } - IWineD3D_GetAdapterDisplayMode(device->wined3d, adapter->ordinal, &mode); + IWineD3D_GetAdapterDisplayMode(device->wined3d, adapter->ordinal, &mode, NULL); swapchain->orig_width = mode.Width; swapchain->orig_height = mode.Height; swapchain->orig_fmt = mode.Format; diff --git a/dlls/wined3d/swapchain_base.c b/dlls/wined3d/swapchain_base.c index 3520a41..dcf4cd5 100644 --- a/dlls/wined3d/swapchain_base.c +++ b/dlls/wined3d/swapchain_base.c @@ -142,7 +142,7 @@ HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetDisplayMode(IWineD3DSwapChain *iface HRESULT hr; TRACE("(%p)->(%p): Calling GetAdapterDisplayMode\n", This, pMode); - hr = IWineD3D_GetAdapterDisplayMode(This->device->wined3d, This->device->adapter->ordinal, pMode); + hr = IWineD3D_GetAdapterDisplayMode(This->device->wined3d, This->device->adapter->ordinal, pMode, NULL); TRACE("(%p) : returning w(%d) h(%d) rr(%d) fmt(%u,%s)\n", This, pMode->Width, pMode->Height, pMode->RefreshRate, pMode->Format, debug_d3dformat(pMode->Format)); diff --git a/include/wine/wined3d.idl b/include/wine/wined3d.idl index 99de560..e192e15 100644 --- a/include/wine/wined3d.idl +++ b/include/wine/wined3d.idl @@ -807,6 +807,20 @@ typedef enum _WINED3DSURFTYPE SURFACE_GDI, /* User surface. No 3D, DirectDraw rendering with GDI */ } WINED3DSURFTYPE; +typedef enum _WINED3DSCANLINEORDERING +{ + WINED3DSCANLINEORDERING_PROGRESSIVE = 1, + WINED3DSCANLINEORDERING_INTERLACED = 2 +} WINED3DSCANLINEORDERING; + +typedef enum _WINED3DDISPLAYROTATION +{ + WINED3DDISPLAYROTATION_IDENTITY = 1, + WINED3DDISPLAYROTATION_90 = 2, + WINED3DDISPLAYROTATION_180 = 3, + WINED3DDISPLAYROTATION_270 = 4 +} WINED3DDISPLAYROTATION; + enum wined3d_sysval_semantic { WINED3D_SV_DEPTH = 0xffffffff, @@ -2079,6 +2093,12 @@ typedef struct _WINEDDOVERLAYFX DWORD dwFlags; /* flags */ } WINEDDOVERLAYFX; +struct wined3d_adapter_info_ex +{ + WINED3DSCANLINEORDERING ScanLineOrdering; + WINED3DDISPLAYROTATION Rotation; +}; + struct wined3d_buffer_desc { UINT byte_width; @@ -2219,7 +2239,8 @@ interface IWineD3D : IWineD3DBase ); HRESULT GetAdapterDisplayMode( [in] UINT adapter_idx, - [out] WINED3DDISPLAYMODE *mode + [out] WINED3DDISPLAYMODE *mode, + [out] struct wined3d_adapter_info_ex *adapterinfo ); HRESULT GetAdapterIdentifier( [in] UINT adapter_idx, -- 1.7.0.4