Remove Texture::levelCount() and replace it with isValidLevel().

TRAC #23978

Signed-off-by: Shannon Woods
Signed-off-by: Geoff Lang
diff --git a/src/libGLESv2/Texture.cpp b/src/libGLESv2/Texture.cpp
index 7cc140a..d1bc214 100644
--- a/src/libGLESv2/Texture.cpp
+++ b/src/libGLESv2/Texture.cpp
@@ -532,7 +532,7 @@
 
 void Texture2D::commitRect(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height)
 {
-    if (level < levelCount())
+    if (isValidLevel(level))
     {
         rx::Image *image = mImageArray[level];
         if (image->copyToStorage(mTexStorage, level, xoffset, yoffset, width, height))
@@ -591,7 +591,7 @@
         ensureRenderTarget();
         mImageArray[level]->markClean();
 
-        if (width != 0 && height != 0 && level < levelCount())
+        if (width != 0 && height != 0 && isValidLevel(level))
         {
             gl::Rectangle sourceRect;
             sourceRect.x = x;
@@ -624,7 +624,7 @@
     {
         ensureRenderTarget();
         
-        if (level < levelCount())
+        if (isValidLevel(level))
         {
             updateStorageLevel(level);
 
@@ -992,9 +992,9 @@
     return mTexStorage->getRenderTarget(level);
 }
 
-int Texture2D::levelCount()
+bool Texture2D::isValidLevel(int level) const
 {
-    return mTexStorage ? mTexStorage->levelCount() : 0;
+    return (mTexStorage ? (level < mTexStorage->levelCount()) : false);
 }
 
 TextureCubeMap::TextureCubeMap(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_CUBE_MAP)
@@ -1096,7 +1096,7 @@
 
 void TextureCubeMap::commitRect(int faceIndex, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height)
 {
-    if (level < levelCount())
+    if (isValidFaceLevel(faceIndex, level))
     {
         rx::Image *image = mImageArray[faceIndex][level];
         if (image->copyToStorage(mTexStorage, faceIndex, level, xoffset, yoffset, width, height))
@@ -1450,7 +1450,7 @@
 
         ASSERT(width == height);
 
-        if (width > 0 && level < levelCount())
+        if (width > 0 && isValidFaceLevel(faceIndex, level))
         {
             gl::Rectangle sourceRect;
             sourceRect.x = x;
@@ -1488,7 +1488,7 @@
     {
         ensureRenderTarget();
         
-        if (level < levelCount())
+        if (isValidFaceLevel(faceIndex, level))
         {
             updateStorageFaceLevel(faceIndex, level);
 
@@ -1645,9 +1645,9 @@
     return mTexStorage->getRenderTarget(target, level);
 }
 
-int TextureCubeMap::levelCount()
+bool TextureCubeMap::isValidFaceLevel(int faceIndex, int level) const
 {
-    return mTexStorage ? mTexStorage->levelCount() - getLodOffset() : 0;
+    return (mTexStorage ? (level < mTexStorage->levelCount()) : 0);
 }
 
 Texture3D::Texture3D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_3D)
@@ -1858,7 +1858,7 @@
     {
         ensureRenderTarget();
 
-        if (level < levelCount())
+        if (isValidLevel(level))
         {
             updateStorageLevel(level);
 
@@ -1985,9 +1985,9 @@
     return (ensureRenderTarget() ? mTexStorage->getRenderTargetSerial(level, layer) : 0);
 }
 
-int Texture3D::levelCount()
+bool Texture3D::isValidLevel(int level) const
 {
-    return mTexStorage ? mTexStorage->levelCount() : 0;
+    return (mTexStorage ? (level < mTexStorage->levelCount()) : 0);
 }
 
 void Texture3D::initializeStorage(bool renderTarget)
@@ -2176,7 +2176,7 @@
 
 void Texture3D::commitRect(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)
 {
-    if (level < levelCount())
+    if (isValidLevel(level))
     {
         rx::Image *image = mImageArray[level];
         if (image->copyToStorage(mTexStorage, level, xoffset, yoffset, zoffset, width, height, depth))
@@ -2417,7 +2417,7 @@
     {
         ensureRenderTarget();
 
-        if (level < levelCount())
+        if (isValidLevel(level))
         {
             updateStorageLevel(level);
 
@@ -2541,9 +2541,9 @@
     return (ensureRenderTarget() ? mTexStorage->getRenderTargetSerial(level, layer) : 0);
 }
 
-int Texture2DArray::levelCount()
+bool Texture2DArray::isValidLevel(int level) const
 {
-    return mTexStorage ? mTexStorage->levelCount() : 0;
+    return (mTexStorage ? (level < mTexStorage->levelCount()) : 0);
 }
 
 void Texture2DArray::initializeStorage(bool renderTarget)
@@ -2737,7 +2737,7 @@
 
 void Texture2DArray::commitRect(GLint level, GLint xoffset, GLint yoffset, GLint layerTarget, GLsizei width, GLsizei height)
 {
-    if (level < levelCount() && layerTarget < getDepth(level))
+    if (isValidLevel(level) && layerTarget < getDepth(level))
     {
         rx::Image *image = mImageArray[level][layerTarget];
         if (image->copyToStorage(mTexStorage, level, xoffset, yoffset, layerTarget, width, height))
diff --git a/src/libGLESv2/Texture.h b/src/libGLESv2/Texture.h
index cb165df..501d031 100644
--- a/src/libGLESv2/Texture.h
+++ b/src/libGLESv2/Texture.h
@@ -191,7 +191,6 @@
     friend class RenderbufferTexture2D;
     rx::RenderTarget *getRenderTarget(GLint level);
     rx::RenderTarget *getDepthSencil(GLint level);
-    virtual int levelCount();
 
   private:
     DISALLOW_COPY_AND_ASSIGN(Texture2D);
@@ -206,6 +205,7 @@
     virtual const rx::Image *getBaseLevelImage() const;
 
     bool isMipmapComplete() const;
+    bool isValidLevel(int level) const;
     bool isLevelComplete(int level) const;
     void updateStorageLevel(int level);
 
@@ -261,7 +261,6 @@
     friend class RenderbufferTextureCubeMap;
     rx::RenderTarget *getRenderTarget(GLenum target, GLint level);
     rx::RenderTarget *getDepthStencil(GLenum target, GLint level);
-    virtual int levelCount();
 
   private:
     DISALLOW_COPY_AND_ASSIGN(TextureCubeMap);
@@ -276,6 +275,7 @@
     virtual const rx::Image *getBaseLevelImage() const;
 
     bool isMipmapCubeComplete() const;
+    bool isValidFaceLevel(int faceIndex, int level) const;
     bool isFaceLevelComplete(int faceIndex, int level) const;
     void updateStorageFaceLevel(int faceIndex, int level);
 
@@ -323,7 +323,6 @@
     rx::RenderTarget *getRenderTarget(GLint level);
     rx::RenderTarget *getRenderTarget(GLint level, GLint layer);
     rx::RenderTarget *getDepthStencil(GLint level, GLint layer);
-    virtual int levelCount();
 
   private:
     DISALLOW_COPY_AND_ASSIGN(Texture3D);
@@ -341,6 +340,7 @@
     void redefineImage(GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
     void commitRect(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
 
+    bool isValidLevel(int level) const;
     bool isLevelComplete(int level) const;
     void updateStorageLevel(int level);
 
@@ -383,7 +383,6 @@
     friend class RenderbufferTexture2DArrayLayer;
     rx::RenderTarget *getRenderTarget(GLint level, GLint layer);
     rx::RenderTarget *getDepthStencil(GLint level, GLint layer);
-    virtual int levelCount();
 
   private:
     DISALLOW_COPY_AND_ASSIGN(Texture2DArray);
@@ -402,6 +401,7 @@
     void redefineImage(GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
     void commitRect(GLint level, GLint xoffset, GLint yoffset, GLint layerTarget, GLsizei width, GLsizei height);
 
+    bool isValidLevel(int level) const;
     bool isLevelComplete(int level) const;
     void updateStorageLevel(int level);