From ed70f9a07c38f9f095a4543d2dc1c167bd75672f Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sun, 22 Aug 2021 22:33:40 +0200 Subject: [PATCH] [d3d9] Support unsupported formats in LockRect --- src/d3d9/d3d9_device.cpp | 6 +++++- src/d3d9/d3d9_format.h | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 496277558..8047f7eee 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -4102,7 +4102,11 @@ namespace dxvk { const Rc mappedBuffer = pResource->GetBuffer(Subresource); - auto formatInfo = imageFormatInfo(pResource->GetFormatMapping().FormatColor); + auto& formatMapping = pResource->GetFormatMapping(); + + const DxvkFormatInfo* formatInfo = formatMapping.IsValid() + ? imageFormatInfo(formatMapping.FormatColor) : UnsupportedFormatInfo(pResource->Desc()->Format); + auto subresource = pResource->GetSubresourceFromIndex( formatInfo->aspectMask, Subresource); diff --git a/src/d3d9/d3d9_format.h b/src/d3d9/d3d9_format.h index 732eb6e6c..43ec86299 100644 --- a/src/d3d9/d3d9_format.h +++ b/src/d3d9/d3d9_format.h @@ -165,7 +165,7 @@ namespace dxvk { VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_IDENTITY }; D3D9_CONVERSION_FORMAT_INFO ConversionFormatInfo = { }; - bool IsValid() { return FormatColor != VK_FORMAT_UNDEFINED; } + bool IsValid() const { return FormatColor != VK_FORMAT_UNDEFINED; } }; D3D9_VK_FORMAT_MAPPING ConvertFormatUnfixed(D3D9Format Format);