Added utility functions for converting depth stencil DXGI_FORMATs.

TRAC #22500

Signed-off-by: Jamie Madill
Signed-off-by: Nicolas Capens
Author: Geoff Lang

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1907 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/renderer/renderer11_utils.cpp b/src/libGLESv2/renderer/renderer11_utils.cpp
index 98a1b48..585dfe7 100644
--- a/src/libGLESv2/renderer/renderer11_utils.cpp
+++ b/src/libGLESv2/renderer/renderer11_utils.cpp
@@ -575,14 +575,40 @@
 {
     switch (format)
     {
-      case DXGI_FORMAT_D16_UNORM:
+      case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
+      case DXGI_FORMAT_D32_FLOAT:
       case DXGI_FORMAT_D24_UNORM_S8_UINT:
+      case DXGI_FORMAT_D16_UNORM:
         return true;
       default:
         return false;
     }
 }
 
+DXGI_FORMAT GetDepthTextureFormat(DXGI_FORMAT format)
+{
+    switch (format)
+    {
+      case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return DXGI_FORMAT_R32G8X24_TYPELESS;
+      case DXGI_FORMAT_D32_FLOAT:            return DXGI_FORMAT_R32_TYPELESS;
+      case DXGI_FORMAT_D24_UNORM_S8_UINT:    return DXGI_FORMAT_R24G8_TYPELESS;
+      case DXGI_FORMAT_D16_UNORM:            return DXGI_FORMAT_R16_TYPELESS;
+      default: UNREACHABLE();                return DXGI_FORMAT_UNKNOWN;
+    }
+}
+
+DXGI_FORMAT GetDepthShaderResourceFormat(DXGI_FORMAT format)
+{
+    switch (format)
+    {
+      case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS;
+      case DXGI_FORMAT_D32_FLOAT:            return DXGI_FORMAT_R32_UINT;
+      case DXGI_FORMAT_D24_UNORM_S8_UINT:    return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
+      case DXGI_FORMAT_D16_UNORM:            return DXGI_FORMAT_R16_UNORM;
+      default: UNREACHABLE();                return DXGI_FORMAT_UNKNOWN;
+    }
+}
+
 HRESULT SetDebugName(ID3D11DeviceChild *resource, const char *name)
 {
 #if defined(_DEBUG)