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