Use a Caps structure to store extension and texture format support.

Removes support for fallbacks in D3D9 texture formats. The fallback
formats did not work properly anyways.

BUG=angle:658

Change-Id: Idfa5183bf71fd8ebf4608f940f9d93177b9eff08
Reviewed-on: https://chromium-review.googlesource.com/200813
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index b78419f..e209dee 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -1,6 +1,6 @@
 #include "precompiled.h"
 //
-// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
+// Copyright (c) 2002-2014 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
@@ -476,18 +476,18 @@
                 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
             }
 
+            GLenum internalformat = colorbuffer->getInternalFormat();
+            const TextureCaps &formatCaps = mRenderer->getCaps().textureCaps.get(internalformat);
             if (mColorbuffers[colorAttachment].type() == GL_RENDERBUFFER)
             {
-                if (!gl::IsColorRenderingSupported(colorbuffer->getInternalFormat(), mRenderer))
+                if (!formatCaps.colorRendering)
                 {
                     return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
                 }
             }
             else if (IsInternalTextureTarget(mColorbuffers[colorAttachment].type(), mRenderer->getCurrentClientVersion()))
             {
-                GLenum internalformat = colorbuffer->getInternalFormat();
-
-                if (!gl::IsColorRenderingSupported(internalformat, mRenderer))
+                if (!formatCaps.colorRendering)
                 {
                     return GL_FRAMEBUFFER_UNSUPPORTED;
                 }
@@ -566,23 +566,28 @@
             return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
         }
 
+        GLenum internalformat = depthbuffer->getInternalFormat();
+        const TextureCaps &formatCaps = mRenderer->getCaps().textureCaps.get(internalformat);
         if (mDepthbuffer.type() == GL_RENDERBUFFER)
         {
-            if (!gl::IsDepthRenderingSupported(depthbuffer->getInternalFormat(), mRenderer))
+            if (!formatCaps.depthRendering)
             {
                 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
             }
         }
         else if (IsInternalTextureTarget(mDepthbuffer.type(), mRenderer->getCurrentClientVersion()))
         {
-            GLenum internalformat = depthbuffer->getInternalFormat();
-
             // depth texture attachments require OES/ANGLE_depth_texture
-            if (!mRenderer->getDepthTextureSupport())
+            if (!mRenderer->getCaps().extensions.depthTextures)
             {
                 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
             }
 
+            if (!formatCaps.depthRendering)
+            {
+                return GL_FRAMEBUFFER_UNSUPPORTED;
+            }
+
             if (gl::GetDepthBits(internalformat, clientVersion) == 0)
             {
                 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
@@ -625,24 +630,29 @@
             return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
         }
 
+        GLenum internalformat = stencilbuffer->getInternalFormat();
+        const TextureCaps &formatCaps = mRenderer->getCaps().textureCaps.get(internalformat);
         if (mStencilbuffer.type() == GL_RENDERBUFFER)
         {
-            if (!gl::IsStencilRenderingSupported(stencilbuffer->getInternalFormat(), mRenderer))
+            if (!formatCaps.stencilRendering)
             {
                 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
             }
         }
         else if (IsInternalTextureTarget(mStencilbuffer.type(), mRenderer->getCurrentClientVersion()))
         {
-            GLenum internalformat = stencilbuffer->getInternalFormat();
-
             // texture stencil attachments come along as part
             // of OES_packed_depth_stencil + OES/ANGLE_depth_texture
-            if (!mRenderer->getDepthTextureSupport())
+            if (!mRenderer->getCaps().extensions.depthTextures)
             {
                 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
             }
 
+            if (!formatCaps.stencilRendering)
+            {
+                return GL_FRAMEBUFFER_UNSUPPORTED;
+            }
+
             if (gl::GetStencilBits(internalformat, clientVersion) == 0)
             {
                 return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;