static HRESULT STDMETHODCALLTYPE dxgi_swapchain_GetDesc(IDXGISwapChain *iface, DXGI_SWAP_CHAIN_DESC *desc) { struct dxgi_swapchain *swapchain = impl_from_IDXGISwapChain(iface); struct wined3d_swapchain_desc wined3d_desc; FIXME("iface %p, desc %p partial stub!\n", iface, desc); if (desc == NULL) return E_INVALIDARG; wined3d_mutex_lock(); wined3d_swapchain_get_desc(swapchain->wined3d_swapchain, &wined3d_desc); wined3d_mutex_unlock(); FIXME("Ignoring ScanlineOrdering, Scaling, SwapEffect and Flags\n"); desc->BufferDesc.Width = wined3d_desc.backbuffer_width; desc->BufferDesc.Height = wined3d_desc.backbuffer_height; desc->BufferDesc.RefreshRate.Numerator = wined3d_desc.refresh_rate; desc->BufferDesc.RefreshRate.Denominator = 1; desc->BufferDesc.Format = dxgi_format_from_wined3dformat(wined3d_desc.backbuffer_format); desc->BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED; desc->BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED; dxgi_sample_desc_from_wined3d(&desc->SampleDesc, wined3d_desc.multisample_type, wined3d_desc.multisample_quality); desc->BufferCount = wined3d_desc.backbuffer_count; desc->OutputWindow = wined3d_desc.device_window; desc->Windowed = wined3d_desc.windowed; desc->SwapEffect = DXGI_SWAP_EFFECT_DISCARD; desc->Flags = 0; return S_OK; }
static void dxgi_mode_from_wined3d(DXGI_MODE_DESC *mode, const struct wined3d_display_mode *wined3d_mode) { mode->Width = wined3d_mode->width; mode->Height = wined3d_mode->height; mode->RefreshRate.Numerator = wined3d_mode->refresh_rate; mode->RefreshRate.Denominator = 1; mode->Format = dxgi_format_from_wined3dformat(wined3d_mode->format_id); mode->ScanlineOrdering = wined3d_mode->scanline_ordering; mode->Scaling = DXGI_MODE_SCALING_UNSPECIFIED; /* FIXME */ }
static void STDMETHODCALLTYPE d3d11_texture2d_GetDesc(ID3D11Texture2D *iface, D3D11_TEXTURE2D_DESC *desc) { struct d3d_texture2d *texture = impl_from_ID3D11Texture2D(iface); struct wined3d_resource_desc wined3d_desc; TRACE("iface %p, desc %p.\n", iface, desc); *desc = texture->desc; wined3d_mutex_lock(); wined3d_resource_get_desc(wined3d_texture_get_resource(texture->wined3d_texture), &wined3d_desc); wined3d_mutex_unlock(); /* FIXME: Resizing swapchain buffers can cause these to change. We'd like * to get everything from wined3d, but e.g. bind flags don't exist as such * there (yet). */ desc->Width = wined3d_desc.width; desc->Height = wined3d_desc.height; desc->Format = dxgi_format_from_wined3dformat(wined3d_desc.format); desc->SampleDesc.Count = wined3d_desc.multisample_type == WINED3D_MULTISAMPLE_NONE ? 1 : wined3d_desc.multisample_type; desc->SampleDesc.Quality = wined3d_desc.multisample_quality; }