From 4bdfcb9bb7171abf05a4d814e2eb56c9c11ddc64 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Tue, 9 Jul 2013 13:27:00 +0100 Subject: [PATCH] d3dstate: Dump compressed D3D10/11 textures. --- retrace/dxgistate.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/retrace/dxgistate.cpp b/retrace/dxgistate.cpp index 3361894..0b1bf76 100644 --- a/retrace/dxgistate.cpp +++ b/retrace/dxgistate.cpp @@ -26,6 +26,8 @@ #include +#include + #include "image.hpp" #include "dxgistate.hpp" @@ -218,7 +220,12 @@ ConvertFormat(DXGI_FORMAT SrcFormat, DirectX::ScratchImage ScratchImage; ScratchImage.Initialize2D(DstFormat, Width, Height, 1, 1); - hr = DirectX::Convert(SrcImage, DstFormat, DirectX::TEX_FILTER_DEFAULT, 0.0f, ScratchImage); + if (DirectX::IsCompressed(SrcFormat)) { + hr = DirectX::Decompress(SrcImage, DstFormat, ScratchImage); + } else { + hr = DirectX::Convert(SrcImage, DstFormat, DirectX::TEX_FILTER_DEFAULT, 0.0f, ScratchImage); + } + if (SUCCEEDED(hr)) { hr = CopyRectangle(*ScratchImage.GetImage(0, 0, 0), rect, DstImage, DirectX::TEX_FILTER_DEFAULT, 0, 0); } @@ -255,6 +262,7 @@ ConvertImage(DXGI_FORMAT SrcFormat, image->start(), image->stride(), Width, Height); if (FAILED(hr)) { + std::cerr << "warning: failed to convert from format " << SrcFormat << " to format " << DstFormat << "\n"; delete image; image = NULL; } -- 2.43.0