From: José Fonseca Date: Tue, 9 Jul 2013 12:27:00 +0000 (+0100) Subject: d3dstate: Dump compressed D3D10/11 textures. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=4bdfcb9bb7171abf05a4d814e2eb56c9c11ddc64;p=apitrace d3dstate: Dump compressed D3D10/11 textures. --- 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; }