Implement proper BGRA extension support on D3D11.

See GL_EXT_texture_format_BGRA8888.

TRAC #22410
Signed-off-by: Geoff Lang
Signed-off-by: Daniel Koch
Author: Jamie Madill

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1771 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index 4c72599..95a3fc4 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -92,6 +92,8 @@
 
     mDriverConstantBufferVS = NULL;
     mDriverConstantBufferPS = NULL;
+
+    mBGRATextureSupport = false;
 }
 
 Renderer11::~Renderer11()
@@ -228,6 +230,19 @@
 
     initializeDevice();
 
+    // BGRA texture support is optional in feature levels 10 and 10_1
+    UINT formatSupport;
+    result = mDevice->CheckFormatSupport(DXGI_FORMAT_B8G8R8A8_UNORM, &formatSupport);
+    if (FAILED(result))
+    {
+        ERR("Error checking BGRA format support: 0x%08X", result);
+    }
+    else
+    {
+        const int flags = (D3D11_FORMAT_SUPPORT_TEXTURE2D | D3D11_FORMAT_SUPPORT_RENDER_TARGET);
+        mBGRATextureSupport = (formatSupport & flags) == flags;
+    }
+
     return EGL_SUCCESS;
 }
 
@@ -1752,6 +1767,11 @@
     return foo;
 }
 
+bool Renderer11::getBGRATextureSupport() const
+{
+    return mBGRATextureSupport;
+}
+
 bool Renderer11::getDXT1TextureSupport()
 {
     // TODO