Squash the Texture attachment classes into one.

BUG=angle:732

Change-Id: Ib6b26fe1351bc09e729178f6ec8b8d2ec1f7ff58
Reviewed-on: https://chromium-review.googlesource.com/213970
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libGLESv2/FramebufferAttachment.cpp b/src/libGLESv2/FramebufferAttachment.cpp
index a354a89..971f188 100644
--- a/src/libGLESv2/FramebufferAttachment.cpp
+++ b/src/libGLESv2/FramebufferAttachment.cpp
@@ -78,14 +78,21 @@
 
 ///// TextureAttachment Implementation ////////
 
-TextureAttachment::TextureAttachment(GLenum binding, const ImageIndex &index)
+TextureAttachment::TextureAttachment(GLenum binding, Texture *texture, const ImageIndex &index)
     : FramebufferAttachment(binding),
       mIndex(index)
-{}
+{
+    mTexture.set(texture);
+}
+
+TextureAttachment::~TextureAttachment()
+{
+    mTexture.set(NULL);
+}
 
 rx::TextureStorage *TextureAttachment::getTextureStorage()
 {
-    return getTexture()->getNativeTexture()->getStorageInstance();
+    return mTexture->getNativeTexture()->getStorageInstance();
 }
 
 GLsizei TextureAttachment::getSamples() const
@@ -95,32 +102,32 @@
 
 GLuint TextureAttachment::id() const
 {
-    return getTexture()->id();
+    return mTexture->id();
 }
 
 unsigned int TextureAttachment::getTextureSerial() const
 {
-    return getTexture()->getTextureSerial();
+    return mTexture->getTextureSerial();
 }
 
 GLsizei TextureAttachment::getWidth() const
 {
-    return getTexture()->getWidth(mIndex);
+    return mTexture->getWidth(mIndex);
 }
 
 GLsizei TextureAttachment::getHeight() const
 {
-    return getTexture()->getHeight(mIndex);
+    return mTexture->getHeight(mIndex);
 }
 
 GLenum TextureAttachment::getInternalFormat() const
 {
-    return getTexture()->getInternalFormat(mIndex);
+    return mTexture->getInternalFormat(mIndex);
 }
 
 GLenum TextureAttachment::getActualFormat() const
 {
-    return getTexture()->getActualFormat(mIndex);
+    return mTexture->getActualFormat(mIndex);
 }
 
 GLenum TextureAttachment::type() const
@@ -140,91 +147,12 @@
 
 rx::RenderTarget *TextureAttachment::getRenderTarget()
 {
-    return getTexture()->getRenderTarget(mIndex);
+    return mTexture->getRenderTarget(mIndex);
 }
 
 unsigned int TextureAttachment::getSerial() const
 {
-    return getTexture()->getRenderTargetSerial(mIndex);
-}
-
-///// Texture2DAttachment Implementation ////////
-
-Texture2DAttachment::Texture2DAttachment(GLenum binding, Texture2D *texture, GLint level)
-    : TextureAttachment(binding, ImageIndex::Make2D(level)),
-      mLevel(level)
-{
-    mTexture2D.set(texture);
-}
-
-Texture2DAttachment::~Texture2DAttachment()
-{
-    mTexture2D.set(NULL);
-}
-
-Texture *Texture2DAttachment::getTexture() const
-{
-    return mTexture2D.get();
-}
-
-///// TextureCubeMapAttachment Implementation ////////
-
-TextureCubeMapAttachment::TextureCubeMapAttachment(GLenum binding, TextureCubeMap *texture, GLenum faceTarget, GLint level)
-    : TextureAttachment(binding, ImageIndex::MakeCube(faceTarget, level)),
-      mFaceTarget(faceTarget),
-      mLevel(level)
-{
-    mTextureCubeMap.set(texture);
-}
-
-TextureCubeMapAttachment::~TextureCubeMapAttachment()
-{
-    mTextureCubeMap.set(NULL);
-}
-
-Texture *TextureCubeMapAttachment::getTexture() const
-{
-    return mTextureCubeMap.get();
-}
-
-///// Texture3DAttachment Implementation ////////
-
-Texture3DAttachment::Texture3DAttachment(GLenum binding, Texture3D *texture, GLint level, GLint layer)
-    : TextureAttachment(binding, ImageIndex::Make3D(level, layer)),
-      mLevel(level),
-      mLayer(layer)
-{
-    mTexture3D.set(texture);
-}
-
-Texture3DAttachment::~Texture3DAttachment()
-{
-    mTexture3D.set(NULL);
-}
-
-Texture *Texture3DAttachment::getTexture() const
-{
-    return mTexture3D.get();
-}
-
-////// Texture2DArrayAttachment Implementation //////
-
-Texture2DArrayAttachment::Texture2DArrayAttachment(GLenum binding, Texture2DArray *texture, GLint level, GLint layer)
-    : TextureAttachment(binding, ImageIndex::Make2DArray(level, layer)),
-      mLevel(level),
-      mLayer(layer)
-{
-    mTexture2DArray.set(texture);
-}
-
-Texture2DArrayAttachment::~Texture2DArrayAttachment()
-{
-    mTexture2DArray.set(NULL);
-}
-
-Texture *Texture2DArrayAttachment::getTexture() const
-{
-    return mTexture2DArray.get();
+    return mTexture->getRenderTargetSerial(mIndex);
 }
 
 ////// RenderbufferAttachment Implementation //////