Commit 4907f2c4 by Geoff Lang

The Texture class now stores the target instead of using a virtual method.

TRAC #23470 Signed-off-by: Jamie Madill Signed-off-by: Shannon Woods Author: Geoff Lang
parent c90d73a0
......@@ -42,7 +42,7 @@ bool IsMipmapFiltered(const SamplerState &samplerState)
}
}
Texture::Texture(rx::Renderer *renderer, GLuint id) : RefCountObject(id)
Texture::Texture(rx::Renderer *renderer, GLuint id, GLenum target) : RefCountObject(id)
{
mRenderer = renderer;
......@@ -60,12 +60,19 @@ Texture::Texture(rx::Renderer *renderer, GLuint id) : RefCountObject(id)
mDirtyImages = true;
mImmutable = false;
mTarget = target;
}
Texture::~Texture()
{
}
GLenum Texture::getTarget() const
{
return mTarget;
}
// Returns true on successful filter state update (valid enum parameter)
bool Texture::setMinFilter(GLenum filter)
{
......@@ -358,7 +365,7 @@ GLint Texture::creationLevels(GLsizei size) const
return creationLevels(size, size);
}
Texture2D::Texture2D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id)
Texture2D::Texture2D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_2D)
{
mTexStorage = NULL;
mSurface = NULL;
......@@ -407,11 +414,6 @@ void Texture2D::releaseProxy(const Renderbuffer *proxy)
mColorbufferProxy = NULL;
}
GLenum Texture2D::getTarget() const
{
return GL_TEXTURE_2D;
}
GLsizei Texture2D::getWidth(GLint level) const
{
if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS)
......@@ -995,7 +997,7 @@ rx::TextureStorageInterface *Texture2D::getStorage(bool renderTarget)
return mTexStorage;
}
TextureCubeMap::TextureCubeMap(rx::Renderer *renderer, GLuint id) : Texture(renderer, id)
TextureCubeMap::TextureCubeMap(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_CUBE_MAP)
{
mTexStorage = NULL;
for (int i = 0; i < 6; i++)
......@@ -1055,11 +1057,6 @@ void TextureCubeMap::releaseProxy(const Renderbuffer *proxy)
}
}
GLenum TextureCubeMap::getTarget() const
{
return GL_TEXTURE_CUBE_MAP;
}
GLsizei TextureCubeMap::getWidth(GLenum target, GLint level) const
{
if (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS)
......@@ -1653,7 +1650,7 @@ rx::TextureStorageInterface *TextureCubeMap::getStorage(bool renderTarget)
return mTexStorage;
}
Texture3D::Texture3D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id)
Texture3D::Texture3D(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_3D)
{
mTexStorage = NULL;
mColorbufferProxy = NULL;
......@@ -1692,11 +1689,6 @@ void Texture3D::releaseProxy(const Renderbuffer *proxy)
mColorbufferProxy = NULL;
}
GLenum Texture3D::getTarget() const
{
return GL_TEXTURE_3D;
}
GLsizei Texture3D::getWidth(GLint level) const
{
return (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS) ? mImageArray[level]->getWidth() : 0;
......@@ -2124,7 +2116,7 @@ void Texture3D::commitRect(GLint level, GLint xoffset, GLint yoffset, GLint zoff
}
}
Texture2DArray::Texture2DArray(rx::Renderer *renderer, GLuint id) : Texture(renderer, id)
Texture2DArray::Texture2DArray(rx::Renderer *renderer, GLuint id) : Texture(renderer, id, GL_TEXTURE_2D_ARRAY)
{
mTexStorage = NULL;
mColorbufferProxy = NULL;
......@@ -2167,11 +2159,6 @@ void Texture2DArray::releaseProxy(const Renderbuffer *proxy)
mColorbufferProxy = NULL;
}
GLenum Texture2DArray::getTarget() const
{
return GL_TEXTURE_2D_ARRAY;
}
GLsizei Texture2DArray::getWidth(GLint level) const
{
return (level < IMPLEMENTATION_MAX_TEXTURE_LEVELS && mLayerCounts[level] > 0) ? mImageArray[level][0]->getWidth() : 0;
......
......@@ -59,14 +59,14 @@ enum
class Texture : public RefCountObject
{
public:
Texture(rx::Renderer *renderer, GLuint id);
Texture(rx::Renderer *renderer, GLuint id, GLenum target);
virtual ~Texture();
virtual void addProxyRef(const Renderbuffer *proxy) = 0;
virtual void releaseProxy(const Renderbuffer *proxy) = 0;
virtual GLenum getTarget() const = 0;
GLenum getTarget() const;
bool setMinFilter(GLenum filter);
bool setMagFilter(GLenum filter);
......@@ -133,6 +133,8 @@ class Texture : public RefCountObject
bool mImmutable;
GLenum mTarget;
private:
DISALLOW_COPY_AND_ASSIGN(Texture);
......@@ -149,8 +151,6 @@ class Texture2D : public Texture
void addProxyRef(const Renderbuffer *proxy);
void releaseProxy(const Renderbuffer *proxy);
virtual GLenum getTarget() const;
GLsizei getWidth(GLint level) const;
GLsizei getHeight(GLint level) const;
GLenum getInternalFormat(GLint level) const;
......@@ -219,8 +219,6 @@ class TextureCubeMap : public Texture
void addProxyRef(const Renderbuffer *proxy);
void releaseProxy(const Renderbuffer *proxy);
virtual GLenum getTarget() const;
GLsizei getWidth(GLenum target, GLint level) const;
GLsizei getHeight(GLenum target, GLint level) const;
GLenum getInternalFormat(GLenum target, GLint level) const;
......@@ -295,8 +293,6 @@ class Texture3D : public Texture
void addProxyRef(const Renderbuffer *proxy);
void releaseProxy(const Renderbuffer *proxy);
virtual GLenum getTarget() const;
GLsizei getWidth(GLint level) const;
GLsizei getHeight(GLint level) const;
GLsizei getDepth(GLint level) const;
......@@ -361,8 +357,6 @@ class Texture2DArray : public Texture
void addProxyRef(const Renderbuffer *proxy);
void releaseProxy(const Renderbuffer *proxy);
virtual GLenum getTarget() const;
GLsizei getWidth(GLint level) const;
GLsizei getHeight(GLint level) const;
GLsizei getDepth(GLint level) const;
......
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