Context now returns maximum texture levels per texture type, updated validation to validate mip level based on the texture target.

TRAC #23630

Signed-off-by: Jamie Madill
Signed-off-by: Shannon Woods
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 1a74a90..e9a9801 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -317,12 +317,17 @@
                                           (int)gl::IMPLEMENTATION_MAX_3D_TEXTURE_SIZE);
         mMax2DArrayTextureLayers = mRenderer->getMaxTextureArrayLayers();
         mMaxRenderbufferDimension = mMax2DTextureDimension;
-        mMaxTextureLevel = log2(mMax2DTextureDimension) + 1;
+        mMax2DTextureLevel = log2(mMax2DTextureDimension) + 1;
+        mMaxCubeTextureLevel = log2(mMaxCubeTextureDimension) + 1;
+        mMax3DTextureLevel = log2(mMax3DTextureDimension) + 1;
+        mMax2DArrayTextureLevel = log2(mMax2DTextureDimension) + 1;
         mMaxTextureAnisotropy = mRenderer->getTextureMaxAnisotropy();
         TRACE("Max2DTextureDimension=%d, MaxCubeTextureDimension=%d, Max3DTextureDimension=%d, Max2DArrayTextureLayers = %d, "
-              "MaxRenderbufferDimension=%d, MaxTextureLevel=%d, MaxTextureAnisotropy=%f",
+              "Max2DTextureLevel=%d, MaxCubeTextureLevel=%d, Max3DTextureLevel=%d, Max2DArrayTextureLevel=%d, "
+              "MaxRenderbufferDimension=%d, MaxTextureAnisotropy=%f",
               mMax2DTextureDimension, mMaxCubeTextureDimension, mMax3DTextureDimension, mMax2DArrayTextureLayers,
-              mMaxRenderbufferDimension, mMaxTextureLevel, mMaxTextureAnisotropy);
+              mMax2DTextureLevel, mMaxCubeTextureLevel, mMax3DTextureLevel, mMax2DArrayTextureLevel,
+              mMaxRenderbufferDimension, mMaxTextureAnisotropy);
 
         mSupportsEventQueries = mRenderer->getEventQuerySupport();
         mSupportsOcclusionQueries = mRenderer->getOcclusionQuerySupport();
@@ -3069,9 +3074,24 @@
     return mMax2DArrayTextureLayers;
 }
 
-int Context::getMaximumTextureLevel() const
+int Context::getMaximum2DTextureLevel() const
 {
-    return mMaxTextureLevel;
+    return mMax2DTextureLevel;
+}
+
+int Context::getMaximumCubeTextureLevel() const
+{
+    return mMaxCubeTextureLevel;
+}
+
+int Context::getMaximum3DTextureLevel() const
+{
+    return mMax3DTextureLevel;
+}
+
+int Context::getMaximum2DArrayTextureLevel() const
+{
+    return mMax2DArrayTextureLevel;
 }
 
 bool Context::supportsLuminanceTextures() const