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;