]> git.cworth.org Git - apitrace/blobdiff - retrace/dxgistate.cpp
Use the correct terminator EGL_NONE for eglChooseConfig attrib_list.
[apitrace] / retrace / dxgistate.cpp
index 45d46ceac0d13ea71ae2b1e8a10ffa3402eb2562..0b1bf76a291aa0aef19857a51aa964ac5a701d91 100644 (file)
@@ -26,6 +26,8 @@
 
 #include <assert.h>
 
+#include <iostream>
+
 #include "image.hpp"
 
 #include "dxgistate.hpp"
@@ -208,11 +210,22 @@ ConvertFormat(DXGI_FORMAT SrcFormat,
 
     DirectX::Rect rect(0, 0, Width, Height);
 
+    hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
+    assert(SUCCEEDED(hr));
+    if (FAILED(hr)) {
+        return hr;
+    }
+
     if (SrcFormat != DstFormat) {
         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);
         }
@@ -249,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;
     }