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
///// TextureAttachment Implementation ////////
TextureAttachment::TextureAttachment(GLenum binding)
: FramebufferAttachment(binding)
TextureAttachment::TextureAttachment(GLenum binding, const ImageIndex &index)
: FramebufferAttachment(binding),
mIndex(index)
{}
rx::TextureStorage *TextureAttachment::getTextureStorage()
......@@ -102,63 +103,63 @@ unsigned int TextureAttachment::getTextureSerial() const
return getTexture()->getTextureSerial();
}
///// Texture2DAttachment Implementation ////////
Texture2DAttachment::Texture2DAttachment(GLenum binding, Texture2D *texture, GLint level)
: TextureAttachment(binding),
mLevel(level)
GLsizei TextureAttachment::getWidth() const
{
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
......@@ -169,8 +170,9 @@ Texture *Texture2DAttachment::getTexture() const
///// TextureCubeMapAttachment Implementation ////////
TextureCubeMapAttachment::TextureCubeMapAttachment(GLenum binding, TextureCubeMap *texture, GLenum faceTarget, GLint level)
: TextureAttachment(binding),
mFaceTarget(faceTarget), mLevel(level)
: TextureAttachment(binding, ImageIndex::MakeCube(faceTarget, level)),
mFaceTarget(faceTarget),
mLevel(level)
{
mTextureCubeMap.set(texture);
}
......@@ -185,46 +187,11 @@ rx::RenderTarget *TextureCubeMapAttachment::getRenderTarget()
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
{
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
{
return mTextureCubeMap.get();
......@@ -233,7 +200,7 @@ Texture *TextureCubeMapAttachment::getTexture() const
///// Texture3DAttachment Implementation ////////
Texture3DAttachment::Texture3DAttachment(GLenum binding, Texture3D *texture, GLint level, GLint layer)
: TextureAttachment(binding),
: TextureAttachment(binding, ImageIndex::Make3D(level, layer)),
mLevel(level),
mLayer(layer)
{
......@@ -250,46 +217,11 @@ rx::RenderTarget *Texture3DAttachment::getRenderTarget()
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
{
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
{
return mTexture3D.get();
......@@ -298,7 +230,7 @@ Texture *Texture3DAttachment::getTexture() const
////// Texture2DArrayAttachment Implementation //////
Texture2DArrayAttachment::Texture2DArrayAttachment(GLenum binding, Texture2DArray *texture, GLint level, GLint layer)
: TextureAttachment(binding),
: TextureAttachment(binding, ImageIndex::Make2DArray(level, layer)),
mLevel(level),
mLayer(layer)
{
......@@ -315,46 +247,11 @@ rx::RenderTarget *Texture2DArrayAttachment::getRenderTarget()
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
{
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
{
return mTexture2DArray.get();
......
......@@ -12,6 +12,7 @@
#include "common/angleutils.h"
#include "common/RefCountObject.h"
#include "Texture.h"
#include "angle_gl.h"
......@@ -24,11 +25,6 @@ class TextureStorage;
namespace gl
{
class Texture;
class Texture2D;
class TextureCubeMap;
class Texture3D;
class Texture2DArray;
class Renderbuffer;
// FramebufferAttachment implements a GL framebuffer attachment.
......@@ -86,15 +82,25 @@ class FramebufferAttachment
class TextureAttachment : public FramebufferAttachment
{
public:
TextureAttachment(GLenum binding);
TextureAttachment(GLenum binding, const ImageIndex &index);
rx::TextureStorage *getTextureStorage();
virtual GLsizei getSamples() const;
virtual GLuint id() 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:
virtual Texture *getTexture() const = 0;
ImageIndex mIndex;
private:
DISALLOW_COPY_AND_ASSIGN(TextureAttachment);
......@@ -108,17 +114,8 @@ class Texture2DAttachment : public TextureAttachment
virtual ~Texture2DAttachment();
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 GLenum type() const;
virtual GLint mipLevel() const;
virtual GLint layer() const;
virtual Texture *getTexture() const;
private:
......@@ -136,17 +133,8 @@ class TextureCubeMapAttachment : public TextureAttachment
virtual ~TextureCubeMapAttachment();
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 GLenum type() const;
virtual GLint mipLevel() const;
virtual GLint layer() const;
virtual Texture *getTexture() const;
private:
......@@ -165,17 +153,8 @@ class Texture3DAttachment : public TextureAttachment
virtual ~Texture3DAttachment();
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 GLenum type() const;
virtual GLint mipLevel() const;
virtual GLint layer() const;
virtual Texture *getTexture() const;
private:
......@@ -194,17 +173,8 @@ class Texture2DArrayAttachment : public TextureAttachment
virtual ~Texture2DArrayAttachment();
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 GLenum type() const;
virtual GLint mipLevel() const;
virtual GLint layer() const;
virtual Texture *getTexture() const;
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