Commit de3ed704 by Jamie Madill

Use ImageIndex to return Texture attachment properties.

This and subsequent patches will eliminate the need for typed attachments. BUG=angle:732 Change-Id: Ia1cfa672855b577f7a2ce219e6ed8ca1e3e16cc1 Reviewed-on: https://chromium-review.googlesource.com/213858Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarShannon Woods <shannonwoods@chromium.org>
parent f6be8d7c
...@@ -78,8 +78,9 @@ bool FramebufferAttachment::isTexture() const ...@@ -78,8 +78,9 @@ bool FramebufferAttachment::isTexture() const
///// TextureAttachment Implementation //////// ///// TextureAttachment Implementation ////////
TextureAttachment::TextureAttachment(GLenum binding) TextureAttachment::TextureAttachment(GLenum binding, const ImageIndex &index)
: FramebufferAttachment(binding) : FramebufferAttachment(binding),
mIndex(index)
{} {}
rx::TextureStorage *TextureAttachment::getTextureStorage() rx::TextureStorage *TextureAttachment::getTextureStorage()
...@@ -102,63 +103,63 @@ unsigned int TextureAttachment::getTextureSerial() const ...@@ -102,63 +103,63 @@ unsigned int TextureAttachment::getTextureSerial() const
return getTexture()->getTextureSerial(); return getTexture()->getTextureSerial();
} }
///// Texture2DAttachment Implementation //////// GLsizei TextureAttachment::getWidth() const
Texture2DAttachment::Texture2DAttachment(GLenum binding, Texture2D *texture, GLint level)
: TextureAttachment(binding),
mLevel(level)
{ {
mTexture2D.set(texture); return getTexture()->getWidth(mIndex);
} }
Texture2DAttachment::~Texture2DAttachment() GLsizei TextureAttachment::getHeight() const
{ {
mTexture2D.set(NULL); return getTexture()->getHeight(mIndex);
} }
rx::RenderTarget *Texture2DAttachment::getRenderTarget() GLenum TextureAttachment::getInternalFormat() const
{ {
return mTexture2D->getRenderTarget(mLevel); return getTexture()->getInternalFormat(mIndex);
} }
GLsizei Texture2DAttachment::getWidth() const GLenum TextureAttachment::getActualFormat() const
{ {
return mTexture2D->getWidth(mLevel); return getTexture()->getActualFormat(mIndex);
} }
GLsizei Texture2DAttachment::getHeight() const GLenum TextureAttachment::type() const
{ {
return mTexture2D->getHeight(mLevel); return mIndex.type;
} }
GLenum Texture2DAttachment::getInternalFormat() const GLint TextureAttachment::mipLevel() const
{ {
return mTexture2D->getInternalFormat(mLevel); return mIndex.mipIndex;
} }
GLenum Texture2DAttachment::getActualFormat() const GLint TextureAttachment::layer() const
{ {
return mTexture2D->getActualFormat(mLevel); return mIndex.layerIndex;
} }
unsigned int Texture2DAttachment::getSerial() const ///// Texture2DAttachment Implementation ////////
Texture2DAttachment::Texture2DAttachment(GLenum binding, Texture2D *texture, GLint level)
: TextureAttachment(binding, ImageIndex::Make2D(level)),
mLevel(level)
{ {
return mTexture2D->getRenderTargetSerial(mLevel); mTexture2D.set(texture);
} }
GLenum Texture2DAttachment::type() const Texture2DAttachment::~Texture2DAttachment()
{ {
return GL_TEXTURE_2D; mTexture2D.set(NULL);
} }
GLint Texture2DAttachment::mipLevel() const rx::RenderTarget *Texture2DAttachment::getRenderTarget()
{ {
return mLevel; return mTexture2D->getRenderTarget(mLevel);
} }
GLint Texture2DAttachment::layer() const unsigned int Texture2DAttachment::getSerial() const
{ {
return 0; return mTexture2D->getRenderTargetSerial(mLevel);
} }
Texture *Texture2DAttachment::getTexture() const Texture *Texture2DAttachment::getTexture() const
...@@ -169,8 +170,9 @@ Texture *Texture2DAttachment::getTexture() const ...@@ -169,8 +170,9 @@ Texture *Texture2DAttachment::getTexture() const
///// TextureCubeMapAttachment Implementation //////// ///// TextureCubeMapAttachment Implementation ////////
TextureCubeMapAttachment::TextureCubeMapAttachment(GLenum binding, TextureCubeMap *texture, GLenum faceTarget, GLint level) TextureCubeMapAttachment::TextureCubeMapAttachment(GLenum binding, TextureCubeMap *texture, GLenum faceTarget, GLint level)
: TextureAttachment(binding), : TextureAttachment(binding, ImageIndex::MakeCube(faceTarget, level)),
mFaceTarget(faceTarget), mLevel(level) mFaceTarget(faceTarget),
mLevel(level)
{ {
mTextureCubeMap.set(texture); mTextureCubeMap.set(texture);
} }
...@@ -185,46 +187,11 @@ rx::RenderTarget *TextureCubeMapAttachment::getRenderTarget() ...@@ -185,46 +187,11 @@ rx::RenderTarget *TextureCubeMapAttachment::getRenderTarget()
return mTextureCubeMap->getRenderTarget(mFaceTarget, mLevel); return mTextureCubeMap->getRenderTarget(mFaceTarget, mLevel);
} }
GLsizei TextureCubeMapAttachment::getWidth() const
{
return mTextureCubeMap->getWidth(mFaceTarget, mLevel);
}
GLsizei TextureCubeMapAttachment::getHeight() const
{
return mTextureCubeMap->getHeight(mFaceTarget, mLevel);
}
GLenum TextureCubeMapAttachment::getInternalFormat() const
{
return mTextureCubeMap->getInternalFormat(mFaceTarget, mLevel);
}
GLenum TextureCubeMapAttachment::getActualFormat() const
{
return mTextureCubeMap->getActualFormat(mFaceTarget, mLevel);
}
unsigned int TextureCubeMapAttachment::getSerial() const unsigned int TextureCubeMapAttachment::getSerial() const
{ {
return mTextureCubeMap->getRenderTargetSerial(mFaceTarget, mLevel); return mTextureCubeMap->getRenderTargetSerial(mFaceTarget, mLevel);
} }
GLenum TextureCubeMapAttachment::type() const
{
return mFaceTarget;
}
GLint TextureCubeMapAttachment::mipLevel() const
{
return mLevel;
}
GLint TextureCubeMapAttachment::layer() const
{
return 0;
}
Texture *TextureCubeMapAttachment::getTexture() const Texture *TextureCubeMapAttachment::getTexture() const
{ {
return mTextureCubeMap.get(); return mTextureCubeMap.get();
...@@ -233,7 +200,7 @@ Texture *TextureCubeMapAttachment::getTexture() const ...@@ -233,7 +200,7 @@ Texture *TextureCubeMapAttachment::getTexture() const
///// Texture3DAttachment Implementation //////// ///// Texture3DAttachment Implementation ////////
Texture3DAttachment::Texture3DAttachment(GLenum binding, Texture3D *texture, GLint level, GLint layer) Texture3DAttachment::Texture3DAttachment(GLenum binding, Texture3D *texture, GLint level, GLint layer)
: TextureAttachment(binding), : TextureAttachment(binding, ImageIndex::Make3D(level, layer)),
mLevel(level), mLevel(level),
mLayer(layer) mLayer(layer)
{ {
...@@ -250,46 +217,11 @@ rx::RenderTarget *Texture3DAttachment::getRenderTarget() ...@@ -250,46 +217,11 @@ rx::RenderTarget *Texture3DAttachment::getRenderTarget()
return mTexture3D->getRenderTarget(mLevel, mLayer); return mTexture3D->getRenderTarget(mLevel, mLayer);
} }
GLsizei Texture3DAttachment::getWidth() const
{
return mTexture3D->getWidth(mLevel);
}
GLsizei Texture3DAttachment::getHeight() const
{
return mTexture3D->getHeight(mLevel);
}
GLenum Texture3DAttachment::getInternalFormat() const
{
return mTexture3D->getInternalFormat(mLevel);
}
GLenum Texture3DAttachment::getActualFormat() const
{
return mTexture3D->getActualFormat(mLevel);
}
unsigned int Texture3DAttachment::getSerial() const unsigned int Texture3DAttachment::getSerial() const
{ {
return mTexture3D->getRenderTargetSerial(mLevel, mLayer); return mTexture3D->getRenderTargetSerial(mLevel, mLayer);
} }
GLenum Texture3DAttachment::type() const
{
return GL_TEXTURE_3D;
}
GLint Texture3DAttachment::mipLevel() const
{
return mLevel;
}
GLint Texture3DAttachment::layer() const
{
return mLayer;
}
Texture *Texture3DAttachment::getTexture() const Texture *Texture3DAttachment::getTexture() const
{ {
return mTexture3D.get(); return mTexture3D.get();
...@@ -298,7 +230,7 @@ Texture *Texture3DAttachment::getTexture() const ...@@ -298,7 +230,7 @@ Texture *Texture3DAttachment::getTexture() const
////// Texture2DArrayAttachment Implementation ////// ////// Texture2DArrayAttachment Implementation //////
Texture2DArrayAttachment::Texture2DArrayAttachment(GLenum binding, Texture2DArray *texture, GLint level, GLint layer) Texture2DArrayAttachment::Texture2DArrayAttachment(GLenum binding, Texture2DArray *texture, GLint level, GLint layer)
: TextureAttachment(binding), : TextureAttachment(binding, ImageIndex::Make2DArray(level, layer)),
mLevel(level), mLevel(level),
mLayer(layer) mLayer(layer)
{ {
...@@ -315,46 +247,11 @@ rx::RenderTarget *Texture2DArrayAttachment::getRenderTarget() ...@@ -315,46 +247,11 @@ rx::RenderTarget *Texture2DArrayAttachment::getRenderTarget()
return mTexture2DArray->getRenderTarget(mLevel, mLayer); return mTexture2DArray->getRenderTarget(mLevel, mLayer);
} }
GLsizei Texture2DArrayAttachment::getWidth() const
{
return mTexture2DArray->getWidth(mLevel);
}
GLsizei Texture2DArrayAttachment::getHeight() const
{
return mTexture2DArray->getHeight(mLevel);
}
GLenum Texture2DArrayAttachment::getInternalFormat() const
{
return mTexture2DArray->getInternalFormat(mLevel);
}
GLenum Texture2DArrayAttachment::getActualFormat() const
{
return mTexture2DArray->getActualFormat(mLevel);
}
unsigned int Texture2DArrayAttachment::getSerial() const unsigned int Texture2DArrayAttachment::getSerial() const
{ {
return mTexture2DArray->getRenderTargetSerial(mLevel, mLayer); return mTexture2DArray->getRenderTargetSerial(mLevel, mLayer);
} }
GLenum Texture2DArrayAttachment::type() const
{
return GL_TEXTURE_2D_ARRAY;
}
GLint Texture2DArrayAttachment::mipLevel() const
{
return mLevel;
}
GLint Texture2DArrayAttachment::layer() const
{
return mLayer;
}
Texture *Texture2DArrayAttachment::getTexture() const Texture *Texture2DArrayAttachment::getTexture() const
{ {
return mTexture2DArray.get(); return mTexture2DArray.get();
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "common/angleutils.h" #include "common/angleutils.h"
#include "common/RefCountObject.h" #include "common/RefCountObject.h"
#include "Texture.h"
#include "angle_gl.h" #include "angle_gl.h"
...@@ -24,11 +25,6 @@ class TextureStorage; ...@@ -24,11 +25,6 @@ class TextureStorage;
namespace gl namespace gl
{ {
class Texture;
class Texture2D;
class TextureCubeMap;
class Texture3D;
class Texture2DArray;
class Renderbuffer; class Renderbuffer;
// FramebufferAttachment implements a GL framebuffer attachment. // FramebufferAttachment implements a GL framebuffer attachment.
...@@ -86,15 +82,25 @@ class FramebufferAttachment ...@@ -86,15 +82,25 @@ class FramebufferAttachment
class TextureAttachment : public FramebufferAttachment class TextureAttachment : public FramebufferAttachment
{ {
public: public:
TextureAttachment(GLenum binding); TextureAttachment(GLenum binding, const ImageIndex &index);
rx::TextureStorage *getTextureStorage(); rx::TextureStorage *getTextureStorage();
virtual GLsizei getSamples() const; virtual GLsizei getSamples() const;
virtual GLuint id() const; virtual GLuint id() const;
virtual unsigned int getTextureSerial() const; virtual unsigned int getTextureSerial() const;
virtual GLsizei getWidth() const;
virtual GLsizei getHeight() const;
virtual GLenum getInternalFormat() const;
virtual GLenum getActualFormat() const;
virtual GLenum type() const;
virtual GLint mipLevel() const;
virtual GLint layer() const;
protected: protected:
virtual Texture *getTexture() const = 0; virtual Texture *getTexture() const = 0;
ImageIndex mIndex;
private: private:
DISALLOW_COPY_AND_ASSIGN(TextureAttachment); DISALLOW_COPY_AND_ASSIGN(TextureAttachment);
...@@ -108,17 +114,8 @@ class Texture2DAttachment : public TextureAttachment ...@@ -108,17 +114,8 @@ class Texture2DAttachment : public TextureAttachment
virtual ~Texture2DAttachment(); virtual ~Texture2DAttachment();
rx::RenderTarget *getRenderTarget(); rx::RenderTarget *getRenderTarget();
virtual GLsizei getWidth() const;
virtual GLsizei getHeight() const;
virtual GLenum getInternalFormat() const;
virtual GLenum getActualFormat() const;
virtual unsigned int getSerial() const; virtual unsigned int getSerial() const;
virtual GLenum type() const;
virtual GLint mipLevel() const;
virtual GLint layer() const;
virtual Texture *getTexture() const; virtual Texture *getTexture() const;
private: private:
...@@ -136,17 +133,8 @@ class TextureCubeMapAttachment : public TextureAttachment ...@@ -136,17 +133,8 @@ class TextureCubeMapAttachment : public TextureAttachment
virtual ~TextureCubeMapAttachment(); virtual ~TextureCubeMapAttachment();
rx::RenderTarget *getRenderTarget(); rx::RenderTarget *getRenderTarget();
virtual GLsizei getWidth() const;
virtual GLsizei getHeight() const;
virtual GLenum getInternalFormat() const;
virtual GLenum getActualFormat() const;
virtual unsigned int getSerial() const; virtual unsigned int getSerial() const;
virtual GLenum type() const;
virtual GLint mipLevel() const;
virtual GLint layer() const;
virtual Texture *getTexture() const; virtual Texture *getTexture() const;
private: private:
...@@ -165,17 +153,8 @@ class Texture3DAttachment : public TextureAttachment ...@@ -165,17 +153,8 @@ class Texture3DAttachment : public TextureAttachment
virtual ~Texture3DAttachment(); virtual ~Texture3DAttachment();
rx::RenderTarget *getRenderTarget(); rx::RenderTarget *getRenderTarget();
virtual GLsizei getWidth() const;
virtual GLsizei getHeight() const;
virtual GLenum getInternalFormat() const;
virtual GLenum getActualFormat() const;
virtual unsigned int getSerial() const; virtual unsigned int getSerial() const;
virtual GLenum type() const;
virtual GLint mipLevel() const;
virtual GLint layer() const;
virtual Texture *getTexture() const; virtual Texture *getTexture() const;
private: private:
...@@ -194,17 +173,8 @@ class Texture2DArrayAttachment : public TextureAttachment ...@@ -194,17 +173,8 @@ class Texture2DArrayAttachment : public TextureAttachment
virtual ~Texture2DArrayAttachment(); virtual ~Texture2DArrayAttachment();
rx::RenderTarget *getRenderTarget(); rx::RenderTarget *getRenderTarget();
virtual GLsizei getWidth() const;
virtual GLsizei getHeight() const;
virtual GLenum getInternalFormat() const;
virtual GLenum getActualFormat() const;
virtual unsigned int getSerial() const; virtual unsigned int getSerial() const;
virtual GLenum type() const;
virtual GLint mipLevel() const;
virtual GLint layer() const;
virtual Texture *getTexture() const; virtual Texture *getTexture() const;
private: private:
......
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