Add support for more depth buffer formats in our EGLConfigs.
This includes no depth buffer and 16-bit depth buffer with no stencil buffer.
TRAC #22496
Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
Author: Jamie Madill
git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1851 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/renderer/renderer11_utils.cpp b/src/libGLESv2/renderer/renderer11_utils.cpp
index 2247e50..98a1b48 100644
--- a/src/libGLESv2/renderer/renderer11_utils.cpp
+++ b/src/libGLESv2/renderer/renderer11_utils.cpp
@@ -229,6 +229,8 @@
{
switch (format)
{
+ case DXGI_FORMAT_UNKNOWN: return GL_NONE;
+ case DXGI_FORMAT_D16_UNORM: return GL_DEPTH_COMPONENT16;
case DXGI_FORMAT_D24_UNORM_S8_UINT: return GL_DEPTH24_STENCIL8_OES;
default:
UNREACHABLE();
@@ -245,6 +247,8 @@
return GL_BGRA8_EXT;
case DXGI_FORMAT_R8G8B8A8_UNORM:
return GL_RGBA8_OES;
+ case DXGI_FORMAT_D16_UNORM:
+ return GL_DEPTH_COMPONENT16;
case DXGI_FORMAT_D24_UNORM_S8_UINT:
return GL_DEPTH24_STENCIL8_OES;
default:
@@ -284,6 +288,8 @@
return GL_R16F_EXT;
case DXGI_FORMAT_R16G16_FLOAT:
return GL_RG16F_EXT;
+ case DXGI_FORMAT_D16_UNORM:
+ return GL_DEPTH_COMPONENT16;
case DXGI_FORMAT_D24_UNORM_S8_UINT:
return GL_DEPTH24_STENCIL8_OES;
case DXGI_FORMAT_UNKNOWN:
@@ -313,6 +319,7 @@
case GL_BGRA8_EXT:
return DXGI_FORMAT_B8G8R8A8_UNORM;
case GL_DEPTH_COMPONENT16:
+ return DXGI_FORMAT_D16_UNORM;
case GL_STENCIL_INDEX8:
case GL_DEPTH24_STENCIL8_OES:
return DXGI_FORMAT_D24_UNORM_S8_UINT;
@@ -368,6 +375,7 @@
case GL_RG16F_EXT:
return DXGI_FORMAT_R16G16_FLOAT;
case GL_DEPTH_COMPONENT16:
+ return DXGI_FORMAT_D16_UNORM;
case GL_DEPTH_COMPONENT32_OES:
case GL_DEPTH24_STENCIL8_OES:
return DXGI_FORMAT_D24_UNORM_S8_UINT;
@@ -563,6 +571,18 @@
}
}
+bool IsDepthStencilFormat(DXGI_FORMAT format)
+{
+ switch (format)
+ {
+ case DXGI_FORMAT_D16_UNORM:
+ case DXGI_FORMAT_D24_UNORM_S8_UINT:
+ return true;
+ default:
+ return false;
+ }
+}
+
HRESULT SetDebugName(ID3D11DeviceChild *resource, const char *name)
{
#if defined(_DEBUG)