diff --git a/src/d3d9/d3d9_common_texture.cpp b/src/d3d9/d3d9_common_texture.cpp index 386cf29d..fac10888 100644 --- a/src/d3d9/d3d9_common_texture.cpp +++ b/src/d3d9/d3d9_common_texture.cpp @@ -10,14 +10,15 @@ namespace dxvk { D3D9CommonTexture::D3D9CommonTexture( D3D9DeviceEx* pDevice, const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3DRESOURCETYPE ResourceType, - D3D9_VK_FORMAT_MAPPING Mapping) - : m_device(pDevice), m_desc(*pDesc), m_type(ResourceType), m_mapping(Mapping) { + D3DRESOURCETYPE ResourceType) + : m_device(pDevice), m_desc(*pDesc), m_type(ResourceType) { if (m_desc.Format == D3D9Format::Unknown) m_desc.Format = (m_desc.Usage & D3DUSAGE_DEPTHSTENCIL) ? D3D9Format::D32 : D3D9Format::X8R8G8B8; + m_mapping = pDevice->LookupFormat(m_desc.Format); + auto pxSize = m_mapping.VideoFormatInfo.MacroPixelSize; m_adjustedExtent = VkExtent3D{ m_desc.Width / pxSize.width, m_desc.Height / pxSize.height, m_desc.Depth }; @@ -71,14 +72,12 @@ namespace dxvk { HRESULT D3D9CommonTexture::NormalizeTextureProperties( D3D9DeviceEx* pDevice, - D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING* pMapping) { + D3D9_COMMON_TEXTURE_DESC* pDesc) { auto* options = pDevice->GetOptions(); ////////////////////// // Mapping Validation - - *pMapping = pDevice->LookupFormat(pDesc->Format); + auto mapping = pDevice->LookupFormat(pDesc->Format); // Handle DisableA8RT hack for The Sims 2 if (pDesc->Format == D3D9Format::A8 && @@ -92,7 +91,7 @@ namespace dxvk { // SCRATCH textures can still be made if the device does not support // the format at all. - if (!pMapping->IsValid() && pDesc->Format != D3D9Format::NULL_FORMAT) { + if (!mapping.IsValid() && pDesc->Format != D3D9Format::NULL_FORMAT) { auto info = pDevice->UnsupportedFormatInfo(pDesc->Format); if (pDesc->Pool != D3DPOOL_SCRATCH || info.elementSize == 0) diff --git a/src/d3d9/d3d9_common_texture.h b/src/d3d9/d3d9_common_texture.h index e08ff64b..828fb2aa 100644 --- a/src/d3d9/d3d9_common_texture.h +++ b/src/d3d9/d3d9_common_texture.h @@ -93,8 +93,7 @@ namespace dxvk { D3D9CommonTexture( D3D9DeviceEx* pDevice, const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3DRESOURCETYPE ResourceType, - D3D9_VK_FORMAT_MAPPING Mapping); + D3DRESOURCETYPE ResourceType); ~D3D9CommonTexture(); @@ -203,8 +202,7 @@ namespace dxvk { */ static HRESULT NormalizeTextureProperties( D3D9DeviceEx* pDevice, - D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING* pMapping); + D3D9_COMMON_TEXTURE_DESC* pDesc); /** * \brief Lock Flags diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 7db26d82..2fd5bb5e 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -398,12 +398,11 @@ namespace dxvk { desc.MultiSample = D3DMULTISAMPLE_NONE; desc.MultisampleQuality = 0; - D3D9_VK_FORMAT_MAPPING mapping; - if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc, &mapping))) + if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc))) return D3DERR_INVALIDCALL; try { - const Com texture = new D3D9Texture2D(this, &desc, mapping); + const Com texture = new D3D9Texture2D(this, &desc); void* initialData = nullptr; @@ -454,12 +453,11 @@ namespace dxvk { desc.MultiSample = D3DMULTISAMPLE_NONE; desc.MultisampleQuality = 0; - D3D9_VK_FORMAT_MAPPING mapping; - if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc, &mapping))) + if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc))) return D3DERR_INVALIDCALL; try { - const Com texture = new D3D9Texture3D(this, &desc, mapping); + const Com texture = new D3D9Texture3D(this, &desc); m_initializer->InitTexture(texture->GetCommonTexture()); *ppVolumeTexture = texture.ref(); @@ -500,12 +498,11 @@ namespace dxvk { desc.MultiSample = D3DMULTISAMPLE_NONE; desc.MultisampleQuality = 0; - D3D9_VK_FORMAT_MAPPING mapping; - if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc, &mapping))) + if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc))) return D3DERR_INVALIDCALL; try { - const Com texture = new D3D9TextureCube(this, &desc, mapping); + const Com texture = new D3D9TextureCube(this, &desc); m_initializer->InitTexture(texture->GetCommonTexture()); *ppCubeTexture = texture.ref(); @@ -3293,12 +3290,11 @@ namespace dxvk { desc.MultiSample = MultiSample; desc.MultisampleQuality = MultisampleQuality; - D3D9_VK_FORMAT_MAPPING mapping; - if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc, &mapping))) + if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc))) return D3DERR_INVALIDCALL; try { - const Com surface = new D3D9Surface(this, &desc, mapping); + const Com surface = new D3D9Surface(this, &desc); m_initializer->InitTexture(surface->GetCommonTexture()); *ppSurface = surface.ref(); return D3D_OK; @@ -3337,12 +3333,11 @@ namespace dxvk { desc.MultiSample = D3DMULTISAMPLE_NONE; desc.MultisampleQuality = 0; - D3D9_VK_FORMAT_MAPPING mapping; - if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc, &mapping))) + if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc))) return D3DERR_INVALIDCALL; try { - const Com surface = new D3D9Surface(this, &desc, mapping); + const Com surface = new D3D9Surface(this, &desc); m_initializer->InitTexture(surface->GetCommonTexture()); *ppSurface = surface.ref(); return D3D_OK; @@ -3383,12 +3378,11 @@ namespace dxvk { desc.MultiSample = MultiSample; desc.MultisampleQuality = MultisampleQuality; - D3D9_VK_FORMAT_MAPPING mapping; - if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc, &mapping))) + if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc))) return D3DERR_INVALIDCALL; try { - const Com surface = new D3D9Surface(this, &desc, mapping); + const Com surface = new D3D9Surface(this, &desc); m_initializer->InitTexture(surface->GetCommonTexture()); *ppSurface = surface.ref(); return D3D_OK; @@ -6523,11 +6517,10 @@ namespace dxvk { desc.MultiSample = pPresentationParameters->MultiSampleType; desc.MultisampleQuality = pPresentationParameters->MultiSampleQuality; - D3D9_VK_FORMAT_MAPPING mapping; - if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc, &mapping))) + if (FAILED(D3D9CommonTexture::NormalizeTextureProperties(this, &desc))) return D3DERR_NOTAVAILABLE; - m_autoDepthStencil = new D3D9Surface(this, &desc, mapping); + m_autoDepthStencil = new D3D9Surface(this, &desc); m_initializer->InitTexture(m_autoDepthStencil->GetCommonTexture()); SetDepthStencilSurface(m_autoDepthStencil.ptr()); } diff --git a/src/d3d9/d3d9_surface.cpp b/src/d3d9/d3d9_surface.cpp index 86472cb7..f4189d5d 100644 --- a/src/d3d9/d3d9_surface.cpp +++ b/src/d3d9/d3d9_surface.cpp @@ -7,11 +7,10 @@ namespace dxvk { D3D9Surface::D3D9Surface( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping) + const D3D9_COMMON_TEXTURE_DESC* pDesc) : D3D9SurfaceBase( pDevice, - new D3D9CommonTexture( pDevice, pDesc, D3DRTYPE_TEXTURE, Mapping ), + new D3D9CommonTexture( pDevice, pDesc, D3DRTYPE_TEXTURE), 0, 0, nullptr) { } diff --git a/src/d3d9/d3d9_surface.h b/src/d3d9/d3d9_surface.h index 7161c3a9..6e68bbae 100644 --- a/src/d3d9/d3d9_surface.h +++ b/src/d3d9/d3d9_surface.h @@ -19,8 +19,7 @@ namespace dxvk { D3D9Surface( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping); + const D3D9_COMMON_TEXTURE_DESC* pDesc); D3D9Surface( D3D9DeviceEx* pDevice, diff --git a/src/d3d9/d3d9_swapchain.cpp b/src/d3d9/d3d9_swapchain.cpp index 9eea9ea6..b7c53ebe 100644 --- a/src/d3d9/d3d9_swapchain.cpp +++ b/src/d3d9/d3d9_swapchain.cpp @@ -890,10 +890,8 @@ namespace dxvk { desc.Usage = D3DUSAGE_RENDERTARGET; desc.Discard = FALSE; - auto mapping = m_parent->LookupFormat(desc.Format); - for (uint32_t i = 0; i < NumBackBuffers; i++) - m_backBuffers[i] = new D3D9Surface(m_parent, &desc, mapping); + m_backBuffers[i] = new D3D9Surface(m_parent, &desc); m_swapImage = m_backBuffers[0]->GetCommonTexture()->GetImage(); diff --git a/src/d3d9/d3d9_texture.cpp b/src/d3d9/d3d9_texture.cpp index 33aaef25..6331e8c0 100644 --- a/src/d3d9/d3d9_texture.cpp +++ b/src/d3d9/d3d9_texture.cpp @@ -8,9 +8,8 @@ namespace dxvk { D3D9Texture2D::D3D9Texture2D( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping) - : D3D9Texture2DBase( pDevice, pDesc, D3DRTYPE_TEXTURE, Mapping ) { } + const D3D9_COMMON_TEXTURE_DESC* pDesc) + : D3D9Texture2DBase( pDevice, pDesc, D3DRTYPE_TEXTURE ) { } HRESULT STDMETHODCALLTYPE D3D9Texture2D::QueryInterface(REFIID riid, void** ppvObject) { @@ -87,9 +86,8 @@ namespace dxvk { D3D9Texture3D::D3D9Texture3D( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping) - : D3D9Texture3DBase( pDevice, pDesc, D3DRTYPE_VOLUMETEXTURE, Mapping ) { } + const D3D9_COMMON_TEXTURE_DESC* pDesc) + : D3D9Texture3DBase( pDevice, pDesc, D3DRTYPE_VOLUMETEXTURE ) { } HRESULT STDMETHODCALLTYPE D3D9Texture3D::QueryInterface(REFIID riid, void** ppvObject) { @@ -166,9 +164,8 @@ namespace dxvk { D3D9TextureCube::D3D9TextureCube( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping) - : D3D9TextureCubeBase( pDevice, pDesc, D3DRTYPE_CUBETEXTURE, Mapping ) { } + const D3D9_COMMON_TEXTURE_DESC* pDesc) + : D3D9TextureCubeBase( pDevice, pDesc, D3DRTYPE_CUBETEXTURE ) { } HRESULT STDMETHODCALLTYPE D3D9TextureCube::QueryInterface(REFIID riid, void** ppvObject) { diff --git a/src/d3d9/d3d9_texture.h b/src/d3d9/d3d9_texture.h index 187b19ac..eead55fe 100644 --- a/src/d3d9/d3d9_texture.h +++ b/src/d3d9/d3d9_texture.h @@ -22,10 +22,9 @@ namespace dxvk { D3D9BaseTexture( D3D9DeviceEx* pDevice, const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3DRESOURCETYPE ResourceType, - D3D9_VK_FORMAT_MAPPING Mapping) + D3DRESOURCETYPE ResourceType) : D3D9Resource ( pDevice ) - , m_texture ( pDevice, pDesc, ResourceType, Mapping ) + , m_texture ( pDevice, pDesc, ResourceType ) , m_lod ( 0 ) , m_autogenFilter ( D3DTEXF_LINEAR ) { const uint32_t arraySlices = m_texture.Desc()->ArraySize; @@ -117,8 +116,7 @@ namespace dxvk { D3D9Texture2D( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping); + const D3D9_COMMON_TEXTURE_DESC* pDesc); HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); @@ -143,8 +141,7 @@ namespace dxvk { D3D9Texture3D( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping); + const D3D9_COMMON_TEXTURE_DESC* pDesc); HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); @@ -169,8 +166,7 @@ namespace dxvk { D3D9TextureCube( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping); + const D3D9_COMMON_TEXTURE_DESC* pDesc); HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); diff --git a/src/d3d9/d3d9_volume.cpp b/src/d3d9/d3d9_volume.cpp index 46fb89d7..b52b35b4 100644 --- a/src/d3d9/d3d9_volume.cpp +++ b/src/d3d9/d3d9_volume.cpp @@ -7,11 +7,10 @@ namespace dxvk { D3D9Volume::D3D9Volume( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping) + const D3D9_COMMON_TEXTURE_DESC* pDesc) : D3D9VolumeBase( pDevice, - new D3D9CommonTexture( pDevice, pDesc, D3DRTYPE_VOLUMETEXTURE, Mapping ), + new D3D9CommonTexture( pDevice, pDesc, D3DRTYPE_VOLUMETEXTURE ), 0, 0, nullptr) { } diff --git a/src/d3d9/d3d9_volume.h b/src/d3d9/d3d9_volume.h index c74e8e49..9c33a788 100644 --- a/src/d3d9/d3d9_volume.h +++ b/src/d3d9/d3d9_volume.h @@ -13,8 +13,7 @@ namespace dxvk { D3D9Volume( D3D9DeviceEx* pDevice, - const D3D9_COMMON_TEXTURE_DESC* pDesc, - D3D9_VK_FORMAT_MAPPING Mapping); + const D3D9_COMMON_TEXTURE_DESC* pDesc); D3D9Volume( D3D9DeviceEx* pDevice,