Use the FormatCaps for multisample validation and queries.

BUG=angle:658

Change-Id: Ic9fa53fb62d7eff62f07b68d7ddada461ecad859
Reviewed-on: https://chromium-review.googlesource.com/206832
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 75386b7..09e9ce0 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -957,9 +957,7 @@
       case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
         params[0] = mNumCompressedTextureFormats;
         break;
-      case GL_MAX_SAMPLES_ANGLE:
-        *params = static_cast<GLint>(getMaxSupportedSamples());
-        break;
+      case GL_MAX_SAMPLES_ANGLE:                        *params = mExtensions.maxSamples;                               break;
       case GL_IMPLEMENTATION_COLOR_READ_TYPE:
       case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
         {
@@ -2003,26 +2001,6 @@
            mRenderer->getMaxFragmentShaderUniformBuffers();
 }
 
-int Context::getMaxSupportedSamples() const
-{
-    return mRenderer->getMaxSupportedSamples();
-}
-
-GLsizei Context::getMaxSupportedFormatSamples(GLenum internalFormat) const
-{
-    return mRenderer->getMaxSupportedFormatSamples(internalFormat);
-}
-
-GLsizei Context::getNumSampleCounts(GLenum internalFormat) const
-{
-    return mRenderer->getNumSampleCounts(internalFormat);
-}
-
-void Context::getSampleCounts(GLenum internalFormat, GLsizei bufSize, GLint *params) const
-{
-    mRenderer->getSampleCounts(internalFormat, bufSize, params);
-}
-
 unsigned int Context::getMaxTransformFeedbackBufferBindings() const
 {
     return mRenderer->getMaxTransformFeedbackBuffers();
@@ -2522,6 +2500,7 @@
         //mExtensions.sRGB = false;
     }
 
+    GLuint maxSamples = 0;
     const TextureCapsMap &rendererFormats = mRenderer->getRendererTextureCaps();
     for (TextureCapsMap::const_iterator i = rendererFormats.begin(); i != rendererFormats.end(); i++)
     {
@@ -2533,9 +2512,20 @@
             // Update the format caps based on the client version and extensions
             formatCaps.renderable = IsRenderingSupported(format, mExtensions, clientVersion);
             formatCaps.filterable = IsFilteringSupported(format, mExtensions, clientVersion);
+
+            // OpenGL ES does not support multisampling with integer formats
+            GLenum componentType = GetComponentType(format);
+            if (componentType == GL_INT || componentType == GL_UNSIGNED_INT)
+            {
+                formatCaps.sampleCounts.clear();
+            }
+            maxSamples = std::max(maxSamples, formatCaps.getMaxSamples());
+
             mTextureCaps.insert(format, formatCaps);
         }
     }
+
+    mExtensions.maxSamples = maxSamples;
 }
 
 }