]> git.cworth.org Git - apitrace/commitdiff
d3dstate: Dump compressed D3D10/11 textures.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 9 Jul 2013 12:27:00 +0000 (13:27 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Tue, 9 Jul 2013 12:27:00 +0000 (13:27 +0100)
retrace/dxgistate.cpp

index 3361894c9257b9ce3ea7d855a29eadc2e9f593cc..0b1bf76a291aa0aef19857a51aa964ac5a701d91 100644 (file)
@@ -26,6 +26,8 @@
 
 #include <assert.h>
 
+#include <iostream>
+
 #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;
     }