Prefer using caps to system attachment limits.
The caps structure can often give a lower and faster bound, as well
as being more general. We should gradually move away from the
implementation limits.
BUG=angleproject:930
Change-Id: I979472cdb6f59c6f0cc0c80f1c29c51295872bea
Reviewed-on: https://chromium-review.googlesource.com/256731
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index 0a3ca79..77dc273 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -524,7 +524,7 @@
GLenum readInternalFormat = readColorBuffer->getInternalFormat();
const InternalFormat &readFormatInfo = GetInternalFormatInfo(readInternalFormat);
- for (unsigned int i = 0; i < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; i++)
+ for (GLuint i = 0; i < context->getCaps().maxColorAttachments; i++)
{
if (drawFramebuffer->isEnabledColorAttachment(i))
{
@@ -580,7 +580,7 @@
return false;
}
- for (unsigned int colorAttachment = 0; colorAttachment < gl::IMPLEMENTATION_MAX_DRAW_BUFFERS; colorAttachment++)
+ for (GLuint colorAttachment = 0; colorAttachment < context->getCaps().maxColorAttachments; ++colorAttachment)
{
if (drawFramebuffer->isEnabledColorAttachment(colorAttachment))
{
@@ -1123,11 +1123,13 @@
return false;
}
+ const Caps &caps = context->getCaps();
+
if (pname >= GL_DRAW_BUFFER0 && pname <= GL_DRAW_BUFFER15)
{
unsigned int colorAttachment = (pname - GL_DRAW_BUFFER0);
- if (colorAttachment >= context->getCaps().maxDrawBuffers)
+ if (colorAttachment >= caps.maxDrawBuffers)
{
context->recordError(Error(GL_INVALID_OPERATION));
return false;
@@ -1140,7 +1142,7 @@
case GL_TEXTURE_BINDING_CUBE_MAP:
case GL_TEXTURE_BINDING_3D:
case GL_TEXTURE_BINDING_2D_ARRAY:
- if (context->getState().getActiveSampler() >= context->getCaps().maxCombinedTextureImageUnits)
+ if (context->getState().getActiveSampler() >= caps.maxCombinedTextureImageUnits)
{
context->recordError(Error(GL_INVALID_OPERATION));
return false;