]> git.cworth.org Git - apitrace/commitdiff
d3dretrace: Dump DXGI_FORMAT_R32G32B32A32_FLOAT images in floating point.
authorJosé Fonseca <jfonseca@vmware.com>
Mon, 16 Sep 2013 11:20:40 +0000 (12:20 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Mon, 16 Sep 2013 11:20:40 +0000 (12:20 +0100)
retrace/dxgistate.cpp

index 0b1bf76a291aa0aef19857a51aa964ac5a701d91..8dde7d326f28db71fb52f6956225f7e65417379d 100644 (file)
@@ -42,8 +42,10 @@ namespace d3dstate {
 
 
 static DXGI_FORMAT
-ChooseConversionFormat(DXGI_FORMAT Format)
+ChooseConversionFormat(DXGI_FORMAT Format, image::ChannelType &channelType)
 {
+    channelType = image::TYPE_UNORM8;
+
     switch (Format) {
 
     // Float
@@ -58,7 +60,8 @@ ChooseConversionFormat(DXGI_FORMAT Format)
     case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
     case DXGI_FORMAT_BC6H_UF16:
     case DXGI_FORMAT_BC6H_SF16:
-        return DXGI_FORMAT_R8G8B8A8_UNORM;
+        channelType = image::TYPE_FLOAT;
+        return DXGI_FORMAT_R32G32B32A32_FLOAT;
 
     // Unsigned normalized
     case DXGI_FORMAT_R16G16B16A16_UNORM:
@@ -243,13 +246,14 @@ ConvertImage(DXGI_FORMAT SrcFormat,
              UINT SrcPitch,
              UINT Width, UINT Height)
 {
+    image::ChannelType channelType;
 
-    DXGI_FORMAT DstFormat = ChooseConversionFormat(SrcFormat);
+    DXGI_FORMAT DstFormat = ChooseConversionFormat(SrcFormat, channelType);
     if (DstFormat == DXGI_FORMAT_UNKNOWN) {
         return NULL;
     }
 
-    image::Image *image = new image::Image(Width, Height, 4);
+    image::Image *image = new image::Image(Width, Height, 4, false, channelType);
     if (!image) {
         return NULL;
     }