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;
}