From 365f992a977ef62a1ab3198c9319b574444cae8a Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Mon, 4 Dec 2017 13:47:18 +0100 Subject: [PATCH] [d3d11] CreateRenderTargetView now uses proper format --- src/d3d11/d3d11_device.cpp | 13 ++++++++++--- src/d3d11/d3d11_device.h | 15 ++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index bc8928e3..f7430ea4 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -19,6 +19,14 @@ namespace dxvk { m_featureFlags (featureFlags), m_dxvkDevice (m_dxgiDevice->GetDXVKDevice()), m_dxvkAdapter (m_dxvkDevice->adapter()) { + + Com adapter; + + if (FAILED(m_dxgiDevice->GetAdapter(&adapter)) + || FAILED(adapter->QueryInterface(__uuidof(IDXGIAdapterPrivate), + reinterpret_cast(&m_dxgiAdapter)))) + throw DxvkError("D3D11Device: Failed to query adapter"); + m_dxgiDevice->SetDeviceLayer(this); m_presentDevice->SetDeviceLayer(this); @@ -179,9 +187,8 @@ namespace dxvk { // Fill in Vulkan image view info DxvkImageViewCreateInfo viewInfo; - // FIXME look up Vulkan format for DXGI format - viewInfo.format = image->info().format; - viewInfo.aspect = VK_IMAGE_ASPECT_COLOR_BIT; + viewInfo.format = m_dxgiAdapter->LookupFormat(desc.Format).actual; + viewInfo.aspect = VK_IMAGE_ASPECT_COLOR_BIT; switch (desc.ViewDimension) { case D3D11_RTV_DIMENSION_TEXTURE2D: diff --git a/src/d3d11/d3d11_device.h b/src/d3d11/d3d11_device.h index 9062111b..63ada07d 100644 --- a/src/d3d11/d3d11_device.h +++ b/src/d3d11/d3d11_device.h @@ -230,16 +230,17 @@ namespace dxvk { private: - const Com m_dxgiDevice; - const Com m_presentDevice; + const Com m_dxgiDevice; + Com m_dxgiAdapter; + const Com m_presentDevice; - const D3D_FEATURE_LEVEL m_featureLevel; - const UINT m_featureFlags; + const D3D_FEATURE_LEVEL m_featureLevel; + const UINT m_featureFlags; - const Rc m_dxvkDevice; - const Rc m_dxvkAdapter; + const Rc m_dxvkDevice; + const Rc m_dxvkAdapter; - Com m_context; + Com m_context; };