static HRESULT WINAPI IDirect3DSwapChain9Impl_GetPresentParameters(LPDIRECT3DSWAPCHAIN9 iface, D3DPRESENT_PARAMETERS* pPresentationParameters) { IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface; WINED3DPRESENT_PARAMETERS winePresentParameters; HRESULT hr; TRACE("iface %p, parameters %p.\n", iface, pPresentationParameters); wined3d_mutex_lock(); hr = IWineD3DSwapChain_GetPresentParameters(This->wineD3DSwapChain, &winePresentParameters); 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; return hr; }
static HRESULT WINAPI IDirect3DSwapChain9Impl_GetPresentParameters(IDirect3DSwapChain9 *iface, D3DPRESENT_PARAMETERS *pPresentationParameters) { IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface; struct wined3d_swapchain_desc desc; HRESULT hr; TRACE("iface %p, parameters %p.\n", iface, pPresentationParameters); wined3d_mutex_lock(); hr = wined3d_swapchain_get_desc(This->wined3d_swapchain, &desc); wined3d_mutex_unlock(); 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; }
HRESULT swapchain_init(IDirect3DSwapChain9Impl *swapchain, IDirect3DDevice9Impl *device, D3DPRESENT_PARAMETERS *present_parameters) { struct wined3d_swapchain_desc desc; HRESULT hr; swapchain->ref = 1; swapchain->lpVtbl = &Direct3DSwapChain9_Vtbl; 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, &desc, WINED3D_SURFACE_TYPE_OPENGL, swapchain, &d3d9_swapchain_wined3d_parent_ops, &swapchain->wined3d_swapchain); wined3d_mutex_unlock(); 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)) { WARN("Failed to create wined3d swapchain, hr %#x.\n", hr); return hr; } swapchain->parentDevice = &device->IDirect3DDevice9Ex_iface; IDirect3DDevice9Ex_AddRef(swapchain->parentDevice); return D3D_OK; }
HRESULT swapchain_init(IDirect3DSwapChain9Impl *swapchain, IDirect3DDevice9Impl *device, D3DPRESENT_PARAMETERS *present_parameters) { WINED3DPRESENT_PARAMETERS wined3d_parameters; 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; wined3d_mutex_lock(); hr = wined3d_swapchain_create(device->wined3d_device, &wined3d_parameters, 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; if (FAILED(hr)) { WARN("Failed to create wined3d swapchain, hr %#x.\n", hr); return hr; } swapchain->parentDevice = &device->IDirect3DDevice9Ex_iface; IDirect3DDevice9Ex_AddRef(swapchain->parentDevice); return D3D_OK; }
static HRESULT WINAPI d3d9_EnumAdapterModesEx(IDirect3D9Ex *iface, UINT adapter, const D3DDISPLAYMODEFILTER *filter, UINT mode_idx, D3DDISPLAYMODEEX *mode) { struct d3d9 *d3d9 = impl_from_IDirect3D9Ex(iface); struct wined3d_display_mode wined3d_mode; HRESULT hr; TRACE("iface %p, adapter %u, filter %p, mode_idx %u, mode %p.\n", iface, adapter, filter, mode_idx, mode); if (filter->Format != D3DFMT_X8R8G8B8 && filter->Format != D3DFMT_R5G6B5) return D3DERR_INVALIDCALL; wined3d_mutex_lock(); hr = wined3d_enum_adapter_modes(d3d9->wined3d, adapter, wined3dformat_from_d3dformat(filter->Format), filter->ScanLineOrdering, mode_idx, &wined3d_mode); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { mode->Width = wined3d_mode.width; mode->Height = wined3d_mode.height; mode->RefreshRate = wined3d_mode.refresh_rate; mode->Format = d3dformat_from_wined3dformat(wined3d_mode.format_id); mode->ScanLineOrdering = wined3d_mode.scanline_ordering; } return hr; }
static HRESULT WINAPI d3d9_swapchain_GetDisplayModeEx(IDirect3DSwapChain9Ex *iface, D3DDISPLAYMODEEX *mode, D3DDISPLAYROTATION *rotation) { struct d3d9_swapchain *swapchain = impl_from_IDirect3DSwapChain9Ex(iface); struct wined3d_display_mode wined3d_mode; HRESULT hr; TRACE("iface %p, mode %p, rotation %p.\n", iface, mode, rotation); if (mode->Size != sizeof(*mode)) return D3DERR_INVALIDCALL; wined3d_mutex_lock(); hr = wined3d_swapchain_get_display_mode(swapchain->wined3d_swapchain, &wined3d_mode, (enum wined3d_display_rotation *)rotation); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { mode->Width = wined3d_mode.width; mode->Height = wined3d_mode.height; mode->RefreshRate = wined3d_mode.refresh_rate; mode->Format = d3dformat_from_wined3dformat(wined3d_mode.format_id); mode->ScanLineOrdering = wined3d_mode.scanline_ordering; } return hr; }
static HRESULT WINAPI d3d9_EnumAdapterModes(IDirect3D9Ex *iface, UINT adapter, D3DFORMAT format, UINT mode_idx, D3DDISPLAYMODE *mode) { struct d3d9 *d3d9 = impl_from_IDirect3D9Ex(iface); struct wined3d_display_mode wined3d_mode; HRESULT hr; TRACE("iface %p, adapter %u, format %#x, mode_idx %u, mode %p.\n", iface, adapter, format, mode_idx, mode); if (format != D3DFMT_X8R8G8B8 && format != D3DFMT_R5G6B5) return D3DERR_INVALIDCALL; wined3d_mutex_lock(); hr = wined3d_enum_adapter_modes(d3d9->wined3d, adapter, wined3dformat_from_d3dformat(format), WINED3D_SCANLINE_ORDERING_UNKNOWN, mode_idx, &wined3d_mode); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { mode->Width = wined3d_mode.width; mode->Height = wined3d_mode.height; mode->RefreshRate = wined3d_mode.refresh_rate; mode->Format = d3dformat_from_wined3dformat(wined3d_mode.format_id); } return hr; }
static HRESULT WINAPI IDirect3D9Impl_EnumAdapterModes(LPDIRECT3D9EX iface, UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode) { IDirect3D9Impl *This = (IDirect3D9Impl *)iface; HRESULT hr; TRACE("iface %p, adapter %u, format %#x, mode_idx %u, mode %p.\n", iface, Adapter, Format, Mode, pMode); /* We can't pass this to WineD3D, otherwise it'll think it came from D3D8 or DDraw. It's supposed to fail anyway, so no harm returning failure. */ if(Format != D3DFMT_X8R8G8B8 && Format != D3DFMT_R5G6B5) { ERR_D3D(); return D3DERR_INVALIDCALL; } wined3d_mutex_lock(); hr = IWineD3D_EnumAdapterModes(This->WineD3D, Adapter, wined3dformat_from_d3dformat(Format), Mode, (WINED3DDISPLAYMODE *) pMode); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) pMode->Format = d3dformat_from_wined3dformat(pMode->Format); ASSERT_D3D(hr == S_OK); return hr; }
/* IDirect3DCubeTexture9 Interface follow: */ static HRESULT WINAPI IDirect3DCubeTexture9Impl_GetLevelDesc(LPDIRECT3DCUBETEXTURE9 iface, UINT Level, D3DSURFACE_DESC* pDesc) { IDirect3DCubeTexture9Impl *This = (IDirect3DCubeTexture9Impl *)iface; WINED3DSURFACE_DESC wined3ddesc; HRESULT hr; TRACE("iface %p, level %u, desc %p.\n", iface, Level, pDesc); wined3d_mutex_lock(); hr = IWineD3DCubeTexture_GetLevelDesc(This->wineD3DCubeTexture, Level, &wined3ddesc); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { pDesc->Format = d3dformat_from_wined3dformat(wined3ddesc.format); pDesc->Type = wined3ddesc.resource_type; pDesc->Usage = wined3ddesc.usage; pDesc->Pool = wined3ddesc.pool; pDesc->MultiSampleType = wined3ddesc.multisample_type; pDesc->MultiSampleQuality = wined3ddesc.multisample_quality; pDesc->Width = wined3ddesc.width; pDesc->Height = wined3ddesc.height; } return hr; }
/* IDirect3DCubeTexture9 Interface follow: */ static HRESULT WINAPI IDirect3DCubeTexture9Impl_GetLevelDesc(IDirect3DCubeTexture9 *iface, UINT level, D3DSURFACE_DESC *desc) { IDirect3DCubeTexture9Impl *texture = impl_from_IDirect3DCubeTexture9(iface); struct wined3d_resource *sub_resource; HRESULT hr = D3D_OK; TRACE("iface %p, level %u, desc %p.\n", iface, level, desc); wined3d_mutex_lock(); if (!(sub_resource = wined3d_texture_get_sub_resource(texture->wined3d_texture, level))) hr = D3DERR_INVALIDCALL; else { struct wined3d_resource_desc wined3d_desc; wined3d_resource_get_desc(sub_resource, &wined3d_desc); desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format); desc->Type = wined3d_desc.resource_type; desc->Usage = wined3d_desc.usage; desc->Pool = wined3d_desc.pool; desc->MultiSampleType = wined3d_desc.multisample_type; desc->MultiSampleQuality = wined3d_desc.multisample_quality; desc->Width = wined3d_desc.width; desc->Height = wined3d_desc.height; } wined3d_mutex_unlock(); return hr; }
static HRESULT WINAPI d3d8_texture_cube_GetLevelDesc(IDirect3DCubeTexture8 *iface, UINT level, D3DSURFACE_DESC *desc) { struct d3d8_texture *texture = impl_from_IDirect3DCubeTexture8(iface); struct wined3d_resource *sub_resource; HRESULT hr = D3D_OK; TRACE("iface %p, level %u, desc %p.\n", iface, level, desc); wined3d_mutex_lock(); if (level >= wined3d_texture_get_level_count(texture->wined3d_texture)) { wined3d_mutex_unlock(); return D3DERR_INVALIDCALL; } if (!(sub_resource = wined3d_texture_get_sub_resource(texture->wined3d_texture, level))) hr = D3DERR_INVALIDCALL; else { struct wined3d_resource_desc wined3d_desc; wined3d_resource_get_desc(sub_resource, &wined3d_desc); desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format); desc->Type = wined3d_desc.resource_type; desc->Usage = wined3d_desc.usage & WINED3DUSAGE_MASK; desc->Pool = wined3d_desc.pool; desc->Size = wined3d_desc.size; desc->MultiSampleType = wined3d_desc.multisample_type; desc->Width = wined3d_desc.width; desc->Height = wined3d_desc.height; } wined3d_mutex_unlock(); return hr; }
static HRESULT WINAPI IDirect3DSurface8Impl_GetDesc(LPDIRECT3DSURFACE8 iface, D3DSURFACE_DESC *pDesc) { IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface; WINED3DSURFACE_DESC wined3ddesc; HRESULT hr; TRACE("iface %p, desc %p.\n", iface, pDesc); wined3d_mutex_lock(); hr = IWineD3DSurface_GetDesc(This->wineD3DSurface, &wined3ddesc); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { pDesc->Format = d3dformat_from_wined3dformat(wined3ddesc.format); pDesc->Type = wined3ddesc.resource_type; pDesc->Usage = wined3ddesc.usage; pDesc->Pool = wined3ddesc.pool; pDesc->Size = wined3ddesc.size; pDesc->MultiSampleType = wined3ddesc.multisample_type; pDesc->Width = wined3ddesc.width; pDesc->Height = wined3ddesc.height; } return hr; }
/* IDirect3DVolumeTexture8 Interface follow: */ static HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetLevelDesc(LPDIRECT3DVOLUMETEXTURE8 iface, UINT Level, D3DVOLUME_DESC* pDesc) { IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface; WINED3DVOLUME_DESC wined3ddesc; HRESULT hr; TRACE("iface %p, level %u, desc %p.\n", iface, Level, pDesc); wined3d_mutex_lock(); hr = IWineD3DVolumeTexture_GetLevelDesc(This->wineD3DVolumeTexture, Level, &wined3ddesc); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { pDesc->Format = d3dformat_from_wined3dformat(wined3ddesc.Format); pDesc->Type = wined3ddesc.Type; pDesc->Usage = wined3ddesc.Usage; pDesc->Pool = wined3ddesc.Pool; pDesc->Size = wined3ddesc.Size; pDesc->Width = wined3ddesc.Width; pDesc->Height = wined3ddesc.Height; pDesc->Depth = wined3ddesc.Depth; } return hr; }
static HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetLevelDesc(IDirect3DVolumeTexture8 *iface, UINT level, D3DVOLUME_DESC *desc) { IDirect3DVolumeTexture8Impl *texture = impl_from_IDirect3DVolumeTexture8(iface); struct wined3d_resource *sub_resource; HRESULT hr = D3D_OK; TRACE("iface %p, level %u, desc %p.\n", iface, level, desc); wined3d_mutex_lock(); if (!(sub_resource = wined3d_texture_get_sub_resource(texture->wined3d_texture, level))) hr = D3DERR_INVALIDCALL; else { struct wined3d_resource_desc wined3d_desc; wined3d_resource_get_desc(sub_resource, &wined3d_desc); desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format); desc->Type = wined3d_desc.resource_type; desc->Usage = wined3d_desc.usage & WINED3DUSAGE_MASK; desc->Pool = wined3d_desc.pool; desc->Size = wined3d_desc.size; desc->Width = wined3d_desc.width; desc->Height = wined3d_desc.height; desc->Depth = wined3d_desc.depth; } wined3d_mutex_unlock(); return hr; }
static HRESULT WINAPI IDirect3D9ExImpl_GetAdapterDisplayModeEx(IDirect3D9Ex *iface, UINT Adapter, D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation) { IDirect3D9Impl *This = (IDirect3D9Impl *)iface; HRESULT hr; TRACE("iface %p, adapter %u, mode %p, rotation %p", iface, Adapter, pMode, pRotation); wined3d_mutex_lock(); hr = IWineD3D_GetAdapterDisplayModeEx(This->WineD3D, Adapter, (WINED3DDISPLAYMODEEX *) pMode, (WINED3DDISPLAYROTATION *) pRotation); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { pMode->Format = d3dformat_from_wined3dformat(pMode->Format); } /* if (mode) { D3DDISPLAYMODE* d3dmode; if (mode->Size != sizeof(D3DDISPLAYMODEEX)) { WARN("Invalid mode->Size %u expected %u", mode->Size, sizeof(D3DDISPLAYMODEEX)); return D3DERR_INVALIDCALL; } wined3d_mutex_lock(); hr = IWineD3D_GetAdapterDisplayMode(This->WineD3D, Adapter, (WINED3DDISPLAYMODE *) &d3dmode); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { mode->Width = d3dmode.Width; mode->Height = d3dmode.Height; mode->RefreshRate = d3dmode.RefreshRate; mode->Format = d3dformat_from_wined3dformat(d3dmode.Format); mode->ScanLineOrdering = D3DSCANLINEORDERING_PROGRESSIVE; //D3DSCANLINEORDERING_INTERLACED } } else { hr = WINED3D_OK; } if (rotation) { *rotation = D3DDISPLAYROTATION_IDENTITY; } */ ASSERT_D3D(hr == S_OK); return hr; }
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); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) pMode->Format = d3dformat_from_wined3dformat(pMode->Format); return hr; }
static HRESULT WINAPI IDirect3DSwapChain9Impl_GetDisplayMode(LPDIRECT3DSWAPCHAIN9 iface, D3DDISPLAYMODE* pMode) { IDirect3DSwapChain9Impl *This = (IDirect3DSwapChain9Impl *)iface; HRESULT hr; TRACE("iface %p, mode %p.\n", iface, pMode); wined3d_mutex_lock(); hr = IWineD3DSwapChain_GetDisplayMode(This->wineD3DSwapChain, (WINED3DDISPLAYMODE *) pMode); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) pMode->Format = d3dformat_from_wined3dformat(pMode->Format); return hr; }
static HRESULT WINAPI IDirect3D9Impl_GetAdapterDisplayMode(IDirect3D9Ex *iface, UINT Adapter, D3DDISPLAYMODE *pMode) { IDirect3D9Impl *This = impl_from_IDirect3D9Ex(iface); HRESULT hr; TRACE("iface %p, adapter %u, mode %p.\n", iface, Adapter, pMode); wined3d_mutex_lock(); hr = wined3d_get_adapter_display_mode(This->WineD3D, Adapter, (struct wined3d_display_mode *)pMode); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) pMode->Format = d3dformat_from_wined3dformat(pMode->Format); return hr; }
static HRESULT WINAPI IDirect3D8Impl_EnumAdapterModes(LPDIRECT3D8 iface, UINT Adapter, UINT Mode, D3DDISPLAYMODE* pMode) { IDirect3D8Impl *This = impl_from_IDirect3D8(iface); HRESULT hr; TRACE("iface %p, adapter %u, mode_idx %u, mode %p.\n", iface, Adapter, Mode, pMode); wined3d_mutex_lock(); hr = wined3d_enum_adapter_modes(This->WineD3D, Adapter, WINED3DFMT_UNKNOWN, Mode, (WINED3DDISPLAYMODE *)pMode); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) pMode->Format = d3dformat_from_wined3dformat(pMode->Format); return hr; }
static HRESULT WINAPI d3d9_indexbuffer_GetDesc(IDirect3DIndexBuffer9 *iface, D3DINDEXBUFFER_DESC *desc) { IDirect3DIndexBuffer9Impl *buffer = (IDirect3DIndexBuffer9Impl *)iface; WINED3DBUFFER_DESC wined3d_desc; TRACE("iface %p, desc %p.\n", iface, desc); wined3d_mutex_lock(); IWineD3DBuffer_GetDesc(buffer->wineD3DIndexBuffer, &wined3d_desc); wined3d_mutex_unlock(); desc->Format = d3dformat_from_wined3dformat(buffer->format); desc->Usage = wined3d_desc.Usage; desc->Pool = wined3d_desc.Pool; desc->Size = wined3d_desc.Size; desc->Type = D3DRTYPE_INDEXBUFFER; return D3D_OK; }
void surface_init(struct d3d9_surface *surface, struct wined3d_texture *wined3d_texture, unsigned int sub_resource_idx, struct wined3d_surface *wined3d_surface, const struct wined3d_parent_ops **parent_ops) { struct wined3d_resource_desc desc; IDirect3DBaseTexture9 *texture; surface->IDirect3DSurface9_iface.lpVtbl = &d3d9_surface_vtbl; d3d9_resource_init(&surface->resource); surface->resource.refcount = 0; surface->wined3d_surface = wined3d_surface; list_init(&surface->rtv_entry); surface->container = wined3d_texture_get_parent(wined3d_texture); surface->wined3d_texture = wined3d_texture; surface->sub_resource_idx = sub_resource_idx; if (surface->container && SUCCEEDED(IUnknown_QueryInterface(surface->container, &IID_IDirect3DBaseTexture9, (void **)&texture))) { surface->texture = unsafe_impl_from_IDirect3DBaseTexture9(texture); IDirect3DBaseTexture9_Release(texture); } wined3d_resource_get_desc(wined3d_texture_get_resource(wined3d_texture), &desc); switch (d3dformat_from_wined3dformat(desc.format)) { case D3DFMT_A8R8G8B8: case D3DFMT_X8R8G8B8: case D3DFMT_R5G6B5: case D3DFMT_X1R5G5B5: case D3DFMT_A1R5G5B5: case D3DFMT_R8G8B8: surface->getdc_supported = TRUE; break; default: surface->getdc_supported = FALSE; break; } *parent_ops = &d3d9_surface_wined3d_parent_ops; }
static HRESULT WINAPI IDirect3DIndexBuffer9Impl_GetDesc(LPDIRECT3DINDEXBUFFER9 iface, D3DINDEXBUFFER_DESC *pDesc) { IDirect3DIndexBuffer9Impl *This = (IDirect3DIndexBuffer9Impl *)iface; HRESULT hr; WINED3DBUFFER_DESC desc; TRACE("iface %p, desc %p.\n", iface, pDesc); wined3d_mutex_lock(); hr = IWineD3DBuffer_GetDesc(This->wineD3DIndexBuffer, &desc); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { pDesc->Format = d3dformat_from_wined3dformat(This->format); pDesc->Usage = desc.Usage; pDesc->Pool = desc.Pool; pDesc->Size = desc.Size; pDesc->Type = D3DRTYPE_INDEXBUFFER; } return hr; }
static HRESULT WINAPI IDirect3DSurface9Impl_GetDesc(LPDIRECT3DSURFACE9 iface, D3DSURFACE_DESC* pDesc) { IDirect3DSurface9Impl *This = (IDirect3DSurface9Impl *)iface; WINED3DSURFACE_DESC wined3ddesc; TRACE("iface %p, desc %p.\n", iface, pDesc); wined3d_mutex_lock(); IWineD3DSurface_GetDesc(This->wineD3DSurface, &wined3ddesc); wined3d_mutex_unlock(); pDesc->Format = d3dformat_from_wined3dformat(wined3ddesc.format); pDesc->Type = wined3ddesc.resource_type; pDesc->Usage = wined3ddesc.usage; pDesc->Pool = wined3ddesc.pool; pDesc->MultiSampleType = wined3ddesc.multisample_type; pDesc->MultiSampleQuality = wined3ddesc.multisample_quality; pDesc->Width = wined3ddesc.width; pDesc->Height = wined3ddesc.height; return D3D_OK; }
static HRESULT WINAPI d3d9_indexbuffer_GetDesc(IDirect3DIndexBuffer9 *iface, D3DINDEXBUFFER_DESC *desc) { struct d3d9_indexbuffer *buffer = impl_from_IDirect3DIndexBuffer9(iface); struct wined3d_resource_desc wined3d_desc; struct wined3d_resource *wined3d_resource; TRACE("iface %p, desc %p.\n", iface, desc); wined3d_mutex_lock(); wined3d_resource = wined3d_buffer_get_resource(buffer->wined3d_buffer); wined3d_resource_get_desc(wined3d_resource, &wined3d_desc); wined3d_mutex_unlock(); desc->Format = d3dformat_from_wined3dformat(buffer->format); desc->Type = D3DRTYPE_INDEXBUFFER; desc->Usage = buffer->usage; desc->Pool = d3dpool_from_wined3daccess(wined3d_desc.access, wined3d_desc.usage); desc->Size = wined3d_desc.size; return D3D_OK; }
static HRESULT WINAPI d3d8_surface_GetDesc(IDirect3DSurface8 *iface, D3DSURFACE_DESC *desc) { struct d3d8_surface *surface = impl_from_IDirect3DSurface8(iface); struct wined3d_sub_resource_desc wined3d_desc; TRACE("iface %p, desc %p.\n", iface, desc); wined3d_mutex_lock(); wined3d_texture_get_sub_resource_desc(surface->wined3d_texture, surface->sub_resource_idx, &wined3d_desc); wined3d_mutex_unlock(); desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format); desc->Type = D3DRTYPE_SURFACE; desc->Usage = d3dusage_from_wined3dusage(wined3d_desc.usage, wined3d_desc.bind_flags); desc->Pool = d3dpool_from_wined3daccess(wined3d_desc.access, wined3d_desc.usage); desc->Size = wined3d_desc.size; desc->MultiSampleType = wined3d_desc.multisample_type; desc->Width = wined3d_desc.width; desc->Height = wined3d_desc.height; return D3D_OK; }
static HRESULT WINAPI d3d9_surface_GetDesc(IDirect3DSurface9 *iface, D3DSURFACE_DESC *desc) { struct d3d9_surface *surface = impl_from_IDirect3DSurface9(iface); struct wined3d_sub_resource_desc wined3d_desc; TRACE("iface %p, desc %p.\n", iface, desc); wined3d_mutex_lock(); wined3d_texture_get_sub_resource_desc(surface->wined3d_texture, surface->sub_resource_idx, &wined3d_desc); wined3d_mutex_unlock(); desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format); desc->Type = D3DRTYPE_SURFACE; desc->Usage = wined3d_desc.usage & WINED3DUSAGE_MASK; desc->Pool = wined3d_desc.pool; desc->MultiSampleType = wined3d_desc.multisample_type; desc->MultiSampleQuality = wined3d_desc.multisample_quality; desc->Width = wined3d_desc.width; desc->Height = wined3d_desc.height; return D3D_OK; }
static HRESULT WINAPI d3d8_volume_GetDesc(IDirect3DVolume8 *iface, D3DVOLUME_DESC *desc) { struct d3d8_volume *volume = impl_from_IDirect3DVolume8(iface); struct wined3d_sub_resource_desc wined3d_desc; TRACE("iface %p, desc %p.\n", iface, desc); wined3d_mutex_lock(); wined3d_texture_get_sub_resource_desc(volume->wined3d_texture, volume->sub_resource_idx, &wined3d_desc); wined3d_mutex_unlock(); desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format); desc->Type = D3DRTYPE_VOLUME; desc->Usage = wined3d_desc.usage & WINED3DUSAGE_MASK; desc->Pool = wined3d_desc.pool; desc->Size = wined3d_desc.size; desc->Width = wined3d_desc.width; desc->Height = wined3d_desc.height; desc->Depth = wined3d_desc.depth; return D3D_OK; }
static HRESULT WINAPI d3d9_GetAdapterDisplayMode(IDirect3D9Ex *iface, UINT adapter, D3DDISPLAYMODE *mode) { struct d3d9 *d3d9 = impl_from_IDirect3D9Ex(iface); struct wined3d_display_mode wined3d_mode; HRESULT hr; TRACE("iface %p, adapter %u, mode %p.\n", iface, adapter, mode); wined3d_mutex_lock(); hr = wined3d_get_adapter_display_mode(d3d9->wined3d, adapter, &wined3d_mode, NULL); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { mode->Width = wined3d_mode.width; mode->Height = wined3d_mode.height; mode->RefreshRate = wined3d_mode.refresh_rate; mode->Format = d3dformat_from_wined3dformat(wined3d_mode.format_id); } return hr; }
static HRESULT WINAPI d3d9_swapchain_GetDisplayMode(IDirect3DSwapChain9Ex *iface, D3DDISPLAYMODE *mode) { struct d3d9_swapchain *swapchain = impl_from_IDirect3DSwapChain9Ex(iface); struct wined3d_display_mode wined3d_mode; HRESULT hr; TRACE("iface %p, mode %p.\n", iface, mode); wined3d_mutex_lock(); hr = wined3d_swapchain_get_display_mode(swapchain->wined3d_swapchain, &wined3d_mode, NULL); wined3d_mutex_unlock(); if (SUCCEEDED(hr)) { mode->Width = wined3d_mode.width; mode->Height = wined3d_mode.height; mode->RefreshRate = wined3d_mode.refresh_rate; mode->Format = d3dformat_from_wined3dformat(wined3d_mode.format_id); } return hr; }
static HRESULT WINAPI d3d9_volume_GetDesc(IDirect3DVolume9 *iface, D3DVOLUME_DESC *desc) { struct d3d9_volume *volume = impl_from_IDirect3DVolume9(iface); struct wined3d_resource_desc wined3d_desc; struct wined3d_resource *wined3d_resource; TRACE("iface %p, desc %p.\n", iface, desc); wined3d_mutex_lock(); wined3d_resource = wined3d_volume_get_resource(volume->wined3d_volume); wined3d_resource_get_desc(wined3d_resource, &wined3d_desc); wined3d_mutex_unlock(); desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format); desc->Type = wined3d_desc.resource_type; desc->Usage = wined3d_desc.usage & WINED3DUSAGE_MASK; desc->Pool = wined3d_desc.pool; desc->Width = wined3d_desc.width; desc->Height = wined3d_desc.height; desc->Depth = wined3d_desc.depth; return D3D_OK; }