Commit 6948e301 by Jamie Madill

Use immutable level count in gl::Texture.

Instead of storing a binary flag indicating if we've created immutable storage, store a level count. This indicates if or if not we've created immutable storage, as well as avoiding the call to the native storage to return the level count. BUG=angle:781 Change-Id: I08a6bd086d00ddf3255262a7711628be5212b4b7 Reviewed-on: https://chromium-review.googlesource.com/222921Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org>
parent 88d3b8cb
......@@ -51,7 +51,7 @@ Texture::Texture(rx::TextureImpl *impl, GLuint id, GLenum target)
: RefCountObject(id),
mTexture(impl),
mUsage(GL_NONE),
mImmutable(false),
mImmutableLevelCount(0),
mTarget(target)
{
}
......@@ -162,12 +162,12 @@ unsigned int Texture::getTextureSerial()
bool Texture::isImmutable() const
{
return mImmutable;
return (mImmutableLevelCount > 0);
}
int Texture::immutableLevelCount()
{
return (mImmutable ? getNativeTexture()->getLevelCount() : 0);
return mImmutableLevelCount;
}
int Texture::mipLevels() const
......@@ -290,7 +290,7 @@ Error Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, G
return error;
}
mImmutable = true;
mImmutableLevelCount = levels;
return Error(GL_NO_ERROR);
}
......@@ -551,7 +551,7 @@ Error TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei siz
return error;
}
mImmutable = true;
mImmutableLevelCount = levels;
return Error(GL_NO_ERROR);
}
......@@ -760,7 +760,7 @@ Error Texture3D::storage(GLsizei levels, GLenum internalformat, GLsizei width, G
return error;
}
mImmutable = true;
mImmutableLevelCount = levels;
return Error(GL_NO_ERROR);
}
......@@ -927,7 +927,7 @@ Error Texture2DArray::storage(GLsizei levels, GLenum internalformat, GLsizei wid
return error;
}
mImmutable = true;
mImmutableLevelCount = levels;
return Error(GL_NO_ERROR);
}
......
......@@ -77,7 +77,7 @@ class Texture : public RefCountObject
unsigned int getTextureSerial();
bool isImmutable() const;
int immutableLevelCount();
GLsizei immutableLevelCount();
rx::TextureImpl *getImplementation() { return mTexture; }
const rx::TextureImpl *getImplementation() const { return mTexture; }
......@@ -92,7 +92,7 @@ class Texture : public RefCountObject
SamplerState mSamplerState;
GLenum mUsage;
bool mImmutable;
GLsizei mImmutableLevelCount;
GLenum mTarget;
......
......@@ -3165,7 +3165,7 @@ void GL_APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
context->recordError(gl::Error(GL_INVALID_ENUM));
return;
}
*params = texture->immutableLevelCount();
*params = static_cast<GLint>(texture->immutableLevelCount());
break;
case GL_TEXTURE_USAGE_ANGLE:
*params = texture->getUsage();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment