Split Caps into Caps, Extensions and TextureFormatCaps.
Context now holds it's own Caps, Extensions and TextureFormat caps so that it
can modify them based on client version or work-arounds.
BUG=angle:658
Change-Id: Id71b6c89b7aa36e1f3dc42b0e4720eaed1851fb9
Reviewed-on: https://chromium-review.googlesource.com/206480
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index f5cf7c3..b973c54 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -1990,7 +1990,7 @@
}
GLenum internalFormat = texture->getBaseLevelInternalFormat();
- const gl::TextureCaps &formatCaps = context->getCaps().textureCaps.get(internalFormat);
+ const gl::TextureCaps &formatCaps = context->getTextureCaps().get(internalFormat);
// GenerateMipmap should not generate an INVALID_OPERATION for textures created with
// unsized formats or that are color renderable and filterable. Since we do not track if
@@ -2017,7 +2017,7 @@
}
// Non-power of 2 ES2 check
- if (!context->getCaps().extensions.textureNPOT && (!gl::isPow2(texture->getBaseLevelWidth()) || !gl::isPow2(texture->getBaseLevelHeight())))
+ if (!context->getExtensions().textureNPOT && (!gl::isPow2(texture->getBaseLevelWidth()) || !gl::isPow2(texture->getBaseLevelHeight())))
{
ASSERT(context->getClientVersion() <= 2 && (target == GL_TEXTURE_2D || target == GL_TEXTURE_CUBE_MAP));
return gl::error(GL_INVALID_OPERATION);
@@ -2553,7 +2553,7 @@
case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:
break;
case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
- if (clientVersion < 3 && !context->getCaps().extensions.sRGB)
+ if (clientVersion < 3 && !context->getExtensions().sRGB)
{
return gl::error(GL_INVALID_ENUM);
}
@@ -3091,7 +3091,7 @@
case GL_RENDERBUFFER_DEPTH_SIZE: *params = renderbuffer->getDepthSize(); break;
case GL_RENDERBUFFER_STENCIL_SIZE: *params = renderbuffer->getStencilSize(); break;
case GL_RENDERBUFFER_SAMPLES_ANGLE:
- if (!context->getCaps().extensions.framebufferMultisample)
+ if (!context->getExtensions().framebufferMultisample)
{
return gl::error(GL_INVALID_ENUM);
}
@@ -3310,7 +3310,7 @@
case GL_VENDOR:
return (GLubyte*)"Google Inc.";
case GL_RENDERER:
- return (GLubyte*)((context != NULL) ? context->getRendererString() : "ANGLE");
+ return (GLubyte*)((context != NULL) ? context->getRendererString().c_str() : "ANGLE");
case GL_VERSION:
if (context->getClientVersion() == 2)
{
@@ -3330,7 +3330,7 @@
return (GLubyte*)"OpenGL ES GLSL ES 3.00 (ANGLE " ANGLE_VERSION_STRING ")";
}
case GL_EXTENSIONS:
- return (GLubyte*)((context != NULL) ? context->getExtensionString() : "");
+ return (GLubyte*)((context != NULL) ? context->getExtensionString().c_str() : "");
default:
return gl::error(GL_INVALID_ENUM, (GLubyte*)NULL);
}
@@ -3394,7 +3394,7 @@
*params = (GLfloat)texture->getUsage();
break;
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- if (!context->getCaps().extensions.textureFilterAnisotropic)
+ if (!context->getExtensions().textureFilterAnisotropic)
{
return gl::error(GL_INVALID_ENUM);
}
@@ -3520,7 +3520,7 @@
*params = texture->getUsage();
break;
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- if (!context->getCaps().extensions.textureFilterAnisotropic)
+ if (!context->getExtensions().textureFilterAnisotropic)
{
return gl::error(GL_INVALID_ENUM);
}
@@ -4900,7 +4900,7 @@
case GL_TEXTURE_MIN_FILTER: texture->getSamplerState().minFilter = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_MAG_FILTER: texture->getSamplerState().magFilter = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_USAGE_ANGLE: texture->setUsage(gl::uiround<GLenum>(param)); break;
- case GL_TEXTURE_MAX_ANISOTROPY_EXT: texture->getSamplerState().maxAnisotropy = std::min(param, context->getCaps().extensions.maxTextureAnisotropy); break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT: texture->getSamplerState().maxAnisotropy = std::min(param, context->getExtensions().maxTextureAnisotropy); break;
case GL_TEXTURE_COMPARE_MODE: texture->getSamplerState().compareMode = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_COMPARE_FUNC: texture->getSamplerState().compareFunc = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_SWIZZLE_R: texture->getSamplerState().swizzleRed = gl::uiround<GLenum>(param); break;
@@ -4956,7 +4956,7 @@
case GL_TEXTURE_MIN_FILTER: texture->getSamplerState().minFilter = (GLenum)param; break;
case GL_TEXTURE_MAG_FILTER: texture->getSamplerState().magFilter = (GLenum)param; break;
case GL_TEXTURE_USAGE_ANGLE: texture->setUsage((GLenum)param); break;
- case GL_TEXTURE_MAX_ANISOTROPY_EXT: texture->getSamplerState().maxAnisotropy = std::min((float)param, context->getCaps().extensions.maxTextureAnisotropy); break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT: texture->getSamplerState().maxAnisotropy = std::min((float)param, context->getExtensions().maxTextureAnisotropy); break;
case GL_TEXTURE_COMPARE_MODE: texture->getSamplerState().compareMode = (GLenum)param; break;
case GL_TEXTURE_COMPARE_FUNC: texture->getSamplerState().compareFunc = (GLenum)param; break;
case GL_TEXTURE_SWIZZLE_R: texture->getSamplerState().swizzleRed = (GLenum)param; break;
@@ -4993,7 +4993,7 @@
if (context)
{
- if (!context->getCaps().extensions.textureStorage)
+ if (!context->getExtensions().textureStorage)
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -7997,7 +7997,7 @@
return gl::error(GL_INVALID_VALUE, reinterpret_cast<GLubyte*>(NULL));
}
- return reinterpret_cast<const GLubyte*>(context->getExtensionString(index));
+ return reinterpret_cast<const GLubyte*>(context->getExtensionString(index).c_str());
}
}
ANGLE_CATCH_ALL
@@ -9612,7 +9612,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- const gl::TextureCaps &formatCaps = context->getCaps().textureCaps.get(internalformat);
+ const gl::TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
if (!formatCaps.colorRendering && !formatCaps.depthRendering && !formatCaps.stencilRendering)
{
return gl::error(GL_INVALID_ENUM);