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/validationES2.cpp b/src/libGLESv2/validationES2.cpp
index a0ef855..9c54ee9 100644
--- a/src/libGLESv2/validationES2.cpp
+++ b/src/libGLESv2/validationES2.cpp
@@ -1,6 +1,6 @@
 #include "precompiled.h"
 //
-// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
+// Copyright (c) 2013-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.
 //
@@ -233,19 +233,19 @@
         {
           case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
           case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-            if (!context->supportsDXT1Textures())
+            if (!context->getCaps().extensions.textureCompressionDXT1)
             {
                 return gl::error(GL_INVALID_ENUM, false);
             }
             break;
           case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-            if (!context->supportsDXT3Textures())
+            if (!context->getCaps().extensions.textureCompressionDXT1)
             {
                 return gl::error(GL_INVALID_ENUM, false);
             }
             break;
           case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-            if (!context->supportsDXT5Textures())
+              if (!context->getCaps().extensions.textureCompressionDXT5)
             {
                 return gl::error(GL_INVALID_ENUM, false);
             }
@@ -292,7 +292,8 @@
             }
             break;
           case GL_RED:
-              if (!context->supportsRGTextures())
+          case GL_RG:
+              if (!context->getCaps().extensions.textureRG)
               {
                   return gl::error(GL_INVALID_ENUM, false);
               }
@@ -306,21 +307,6 @@
                   return gl::error(GL_INVALID_OPERATION, false);
               }
               break;
-          case GL_RG:
-              if (!context->supportsRGTextures())
-              {
-                  return gl::error(GL_INVALID_ENUM, false);
-              }
-              switch (type)
-              {
-              case GL_UNSIGNED_BYTE:
-              case GL_FLOAT:
-              case GL_HALF_FLOAT_OES:
-                  break;
-              default:
-                  return gl::error(GL_INVALID_OPERATION, false);
-              }
-              break;
           case GL_RGB:
             switch (type)
             {
@@ -387,7 +373,7 @@
         {
           case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
           case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-            if (context->supportsDXT1Textures())
+            if (context->getCaps().extensions.textureCompressionDXT1)
             {
                 return gl::error(GL_INVALID_OPERATION, false);
             }
@@ -397,7 +383,7 @@
             }
             break;
           case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-            if (context->supportsDXT3Textures())
+            if (context->getCaps().extensions.textureCompressionDXT3)
             {
                 return gl::error(GL_INVALID_OPERATION, false);
             }
@@ -407,7 +393,7 @@
             }
             break;
           case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-            if (context->supportsDXT5Textures())
+            if (context->getCaps().extensions.textureCompressionDXT5)
             {
                 return gl::error(GL_INVALID_OPERATION, false);
             }
@@ -418,7 +404,7 @@
             break;
           case GL_DEPTH_COMPONENT:
           case GL_DEPTH_STENCIL_OES:
-            if (!context->supportsDepthTextures())
+            if (!context->getCaps().extensions.depthTextures)
             {
                 return gl::error(GL_INVALID_VALUE, false);
             }
@@ -439,14 +425,14 @@
 
         if (type == GL_FLOAT)
         {
-            if (!context->supportsFloat32Textures())
+            if (!context->getCaps().extensions.textureFloat)
             {
                 return gl::error(GL_INVALID_ENUM, false);
             }
         }
         else if (type == GL_HALF_FLOAT_OES)
         {
-            if (!context->supportsFloat16Textures())
+            if (!context->getCaps().extensions.textureHalfFloat)
             {
                 return gl::error(GL_INVALID_ENUM, false);
             }
@@ -629,7 +615,7 @@
             break;
           case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
           case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-            if (context->supportsDXT1Textures())
+            if (context->getCaps().extensions.textureCompressionDXT1)
             {
                 return gl::error(GL_INVALID_OPERATION, false);
             }
@@ -639,7 +625,7 @@
             }
             break;
           case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-            if (context->supportsDXT3Textures())
+            if (context->getCaps().extensions.textureCompressionDXT3)
             {
                 return gl::error(GL_INVALID_OPERATION, false);
             }
@@ -649,7 +635,7 @@
             }
             break;
           case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-            if (context->supportsDXT5Textures())
+            if (context->getCaps().extensions.textureCompressionDXT5)
             {
                 return gl::error(GL_INVALID_OPERATION, false);
             }
@@ -663,7 +649,7 @@
           case GL_DEPTH_COMPONENT32_OES:
           case GL_DEPTH_STENCIL_OES:
           case GL_DEPTH24_STENCIL8_OES:
-            if (context->supportsDepthTextures())
+            if (context->getCaps().extensions.depthTextures)
             {
                 return gl::error(GL_INVALID_OPERATION, false);
             }
@@ -731,7 +717,7 @@
         return gl::error(GL_INVALID_ENUM, false);
     }
 
-    if (levels != 1 && !context->supportsNonPower2Texture())
+    if (levels != 1 && !context->getCaps().extensions.textureNPOT)
     {
         if (!gl::isPow2(width) || !gl::isPow2(height))
         {
@@ -743,19 +729,19 @@
     {
       case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
       case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
-        if (!context->supportsDXT1Textures())
+        if (!context->getCaps().extensions.textureCompressionDXT1)
         {
             return gl::error(GL_INVALID_ENUM, false);
         }
         break;
       case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
-        if (!context->supportsDXT3Textures())
+        if (!context->getCaps().extensions.textureCompressionDXT3)
         {
             return gl::error(GL_INVALID_ENUM, false);
         }
         break;
       case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
-        if (!context->supportsDXT5Textures())
+        if (!context->getCaps().extensions.textureCompressionDXT5)
         {
             return gl::error(GL_INVALID_ENUM, false);
         }
@@ -765,7 +751,7 @@
       case GL_ALPHA32F_EXT:
       case GL_LUMINANCE32F_EXT:
       case GL_LUMINANCE_ALPHA32F_EXT:
-        if (!context->supportsFloat32Textures())
+        if (!context->getCaps().extensions.textureFloat)
         {
             return gl::error(GL_INVALID_ENUM, false);
         }
@@ -775,7 +761,7 @@
       case GL_ALPHA16F_EXT:
       case GL_LUMINANCE16F_EXT:
       case GL_LUMINANCE_ALPHA16F_EXT:
-        if (!context->supportsFloat16Textures())
+        if (!context->getCaps().extensions.textureHalfFloat)
         {
             return gl::error(GL_INVALID_ENUM, false);
         }
@@ -786,7 +772,7 @@
       case GL_RG16F_EXT:
       case GL_R32F_EXT:
       case GL_RG32F_EXT:
-        if (!context->supportsRGTextures())
+        if (!context->getCaps().extensions.textureRG)
         {
             return gl::error(GL_INVALID_ENUM, false);
         }
@@ -794,7 +780,7 @@
       case GL_DEPTH_COMPONENT16:
       case GL_DEPTH_COMPONENT32_OES:
       case GL_DEPTH24_STENCIL8_OES:
-        if (!context->supportsDepthTextures())
+        if (!context->getCaps().extensions.depthTextures)
         {
             return gl::error(GL_INVALID_ENUM, false);
         }
@@ -970,7 +956,7 @@
         break;
       case GL_RG_EXT:
       case GL_RED_EXT:
-        if (!context->supportsRGTextures())
+        if (!context->getCaps().extensions.textureRG)
         {
             return false;
         }