Add caps for texture size limits and other caps in the 6.28 table.
BUG=angle:658
Change-Id: Ia265fe1d3713db7701b41e8430d6d186f352ab4a
Reviewed-on: https://chromium-review.googlesource.com/201363
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/validationES3.cpp b/src/libGLESv2/validationES3.cpp
index 92ee329..dfb0356 100644
--- a/src/libGLESv2/validationES3.cpp
+++ b/src/libGLESv2/validationES3.cpp
@@ -51,6 +51,8 @@
return gl::error(GL_INVALID_VALUE, false);
}
+ const gl::Caps &caps = context->getCaps();
+
gl::Texture *texture = NULL;
bool textureCompressed = false;
GLenum textureInternalFormat = GL_NONE;
@@ -61,8 +63,8 @@
{
case GL_TEXTURE_2D:
{
- if (width > (context->getMaximum2DTextureDimension() >> level) ||
- height > (context->getMaximum2DTextureDimension() >> level))
+ if (static_cast<GLuint>(width) > (caps.max2DTextureSize >> level) ||
+ static_cast<GLuint>(height) > (caps.max2DTextureSize >> level))
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -92,7 +94,7 @@
return gl::error(GL_INVALID_VALUE, false);
}
- if (width > (context->getMaximumCubeTextureDimension() >> level))
+ if (static_cast<GLuint>(width) > (caps.maxCubeMapTextureSize >> level))
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -112,9 +114,9 @@
case GL_TEXTURE_3D:
{
- if (width > (context->getMaximum3DTextureDimension() >> level) ||
- height > (context->getMaximum3DTextureDimension() >> level) ||
- depth > (context->getMaximum3DTextureDimension() >> level))
+ if (static_cast<GLuint>(width) > (caps.max3DTextureSize >> level) ||
+ static_cast<GLuint>(height) > (caps.max3DTextureSize >> level) ||
+ static_cast<GLuint>(depth) > (caps.max3DTextureSize >> level))
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -134,9 +136,9 @@
case GL_TEXTURE_2D_ARRAY:
{
- if (width > (context->getMaximum2DTextureDimension() >> level) ||
- height > (context->getMaximum2DTextureDimension() >> level) ||
- depth > (context->getMaximum2DArrayTextureLayers() >> level))
+ if (static_cast<GLuint>(width) > (caps.max2DTextureSize >> level) ||
+ static_cast<GLuint>(height) > (caps.max2DTextureSize >> level) ||
+ static_cast<GLuint>(depth) > (caps.maxArrayTextureLayers >> level))
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -365,6 +367,8 @@
return gl::error(GL_INVALID_OPERATION, false);
}
+ const gl::Caps &caps = context->getCaps();
+
gl::Texture *texture = NULL;
switch (target)
{
@@ -372,8 +376,8 @@
{
texture = context->getTexture2D();
- if (width > (context->getMaximum2DTextureDimension()) ||
- height > (context->getMaximum2DTextureDimension()))
+ if (static_cast<GLuint>(width) > caps.max2DTextureSize ||
+ static_cast<GLuint>(height) > caps.max2DTextureSize)
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -389,7 +393,7 @@
return gl::error(GL_INVALID_VALUE, false);
}
- if (width > (context->getMaximumCubeTextureDimension()))
+ if (static_cast<GLuint>(width) > caps.maxCubeMapTextureSize)
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -400,9 +404,9 @@
{
texture = context->getTexture3D();
- if (width > (context->getMaximum3DTextureDimension()) ||
- height > (context->getMaximum3DTextureDimension()) ||
- depth > (context->getMaximum3DTextureDimension()))
+ if (static_cast<GLuint>(width) > caps.max3DTextureSize ||
+ static_cast<GLuint>(height) > caps.max3DTextureSize ||
+ static_cast<GLuint>(depth) > caps.max3DTextureSize)
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -413,9 +417,9 @@
{
texture = context->getTexture2DArray();
- if (width > (context->getMaximum2DTextureDimension()) ||
- height > (context->getMaximum2DTextureDimension()) ||
- depth > (context->getMaximum2DArrayTextureLayers()))
+ if (static_cast<GLuint>(width) > caps.max2DTextureSize ||
+ static_cast<GLuint>(height) > caps.max2DTextureSize ||
+ static_cast<GLuint>(depth) > caps.maxArrayTextureLayers)
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -463,6 +467,7 @@
return false;
}
+ const gl::Caps &caps = context->getCaps();
if (texture != 0)
{
gl::Texture *tex = context->getTexture(texture);
@@ -488,7 +493,7 @@
{
case GL_TEXTURE_2D:
{
- if (level > gl::log2(context->getMaximum2DTextureDimension()))
+ if (level > gl::log2(caps.max2DTextureSize))
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -511,7 +516,7 @@
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
{
- if (level > gl::log2(context->getMaximumCubeTextureDimension()))
+ if (level > gl::log2(caps.maxCubeMapTextureSize))
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -537,12 +542,12 @@
{
case GL_TEXTURE_2D_ARRAY:
{
- if (level > gl::log2(context->getMaximum2DTextureDimension()))
+ if (level > gl::log2(caps.max2DTextureSize))
{
return gl::error(GL_INVALID_VALUE, false);
}
- if (layer >= context->getMaximum2DArrayTextureLayers())
+ if (static_cast<GLuint>(layer) >= caps.maxArrayTextureLayers)
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -558,12 +563,12 @@
case GL_TEXTURE_3D:
{
- if (level > gl::log2(context->getMaximum3DTextureDimension()))
+ if (level > gl::log2(caps.max3DTextureSize))
{
return gl::error(GL_INVALID_VALUE, false);
}
- if (layer >= context->getMaximum3DTextureDimension())
+ if (static_cast<GLuint>(layer) >= caps.max3DTextureSize)
{
return gl::error(GL_INVALID_VALUE, false);
}
@@ -717,7 +722,7 @@
return gl::error(GL_INVALID_ENUM, false);
}
- if (attachments[i] >= GL_COLOR_ATTACHMENT0 + context->getMaximumRenderTargets())
+ if (attachments[i] >= GL_COLOR_ATTACHMENT0 + context->getCaps().maxColorAttachments)
{
return gl::error(GL_INVALID_OPERATION, false);
}