Add a method to return the Texture serial of a Renderbuffer, or zero if this is a non-texture Renderbuffer.

TRAC #24039

Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp
index a21fe2b..fd01cd5 100644
--- a/src/libGLESv2/Renderbuffer.cpp
+++ b/src/libGLESv2/Renderbuffer.cpp
@@ -100,6 +100,11 @@
     return mTexture2D->getRenderTargetSerial(mLevel);
 }
 
+unsigned int RenderbufferTexture2D::getTextureSerial() const
+{
+    return mTexture2D->getTextureSerial();
+}
+
 ///// RenderbufferTextureCubeMap Implementation ////////
 
 RenderbufferTextureCubeMap::RenderbufferTextureCubeMap(TextureCubeMap *texture, GLenum faceTarget, GLint level)
@@ -165,6 +170,11 @@
     return mTextureCubeMap->getRenderTargetSerial(mFaceTarget, mLevel);
 }
 
+unsigned int RenderbufferTextureCubeMap::getTextureSerial() const
+{
+    return mTextureCubeMap->getTextureSerial();
+}
+
 ///// RenderbufferTexture3DLayer Implementation ////////
 
 RenderbufferTexture3DLayer::RenderbufferTexture3DLayer(Texture3D *texture, GLint level, GLint layer)
@@ -230,6 +240,11 @@
     return mTexture3D->getRenderTargetSerial(mLevel, mLayer);
 }
 
+unsigned int RenderbufferTexture3DLayer::getTextureSerial() const
+{
+    return mTexture3D->getTextureSerial();
+}
+
 ////// RenderbufferTexture2DArrayLayer Implementation //////
 
 RenderbufferTexture2DArrayLayer::RenderbufferTexture2DArrayLayer(Texture2DArray *texture, GLint level, GLint layer)
@@ -293,6 +308,11 @@
     return mTexture2DArray->getRenderTargetSerial(mLevel, mLayer);
 }
 
+unsigned int RenderbufferTexture2DArrayLayer::getTextureSerial() const
+{
+    return mTexture2DArray->getTextureSerial();
+}
+
 ////// Renderbuffer Implementation //////
 
 Renderbuffer::Renderbuffer(rx::Renderer *renderer, GLuint id, RenderbufferInterface *instance) : RefCountObject(id)
@@ -405,6 +425,11 @@
     return mInstance->getSerial();
 }
 
+unsigned int Renderbuffer::getTextureSerial() const
+{
+    return mInstance->getTextureSerial();
+}
+
 void Renderbuffer::setStorage(RenderbufferStorage *newStorage)
 {
     ASSERT(newStorage != NULL);
diff --git a/src/libGLESv2/Renderbuffer.h b/src/libGLESv2/Renderbuffer.h
index c278b26..5e66bb2 100644
--- a/src/libGLESv2/Renderbuffer.h
+++ b/src/libGLESv2/Renderbuffer.h
@@ -56,6 +56,7 @@
     virtual GLsizei getSamples() const = 0;
 
     virtual unsigned int getSerial() const = 0;
+    virtual unsigned int getTextureSerial() const = 0;
 
   private:
     DISALLOW_COPY_AND_ASSIGN(RenderbufferInterface);
@@ -81,6 +82,7 @@
     virtual GLsizei getSamples() const;
 
     virtual unsigned int getSerial() const;
+    virtual unsigned int getTextureSerial() const;
 
   private:
     DISALLOW_COPY_AND_ASSIGN(RenderbufferTexture2D);
@@ -109,6 +111,7 @@
     virtual GLsizei getSamples() const;
 
     virtual unsigned int getSerial() const;
+    virtual unsigned int getTextureSerial() const;
 
   private:
     DISALLOW_COPY_AND_ASSIGN(RenderbufferTextureCubeMap);
@@ -138,6 +141,7 @@
     virtual GLsizei getSamples() const;
 
     virtual unsigned int getSerial() const;
+    virtual unsigned int getTextureSerial() const;
 
 private:
     DISALLOW_COPY_AND_ASSIGN(RenderbufferTexture3DLayer);
@@ -167,6 +171,7 @@
     virtual GLsizei getSamples() const;
 
     virtual unsigned int getSerial() const;
+    virtual unsigned int getTextureSerial() const;
 
 private:
     DISALLOW_COPY_AND_ASSIGN(RenderbufferTexture2DArrayLayer);
@@ -196,6 +201,7 @@
     virtual GLsizei getSamples() const;
 
     virtual unsigned int getSerial() const;
+    virtual unsigned int getTextureSerial() const { return 0; }
 
     static unsigned int issueSerials(GLuint count);
 
@@ -249,6 +255,7 @@
     GLsizei getSamples() const;
 
     unsigned int getSerial() const;
+    unsigned int getTextureSerial() const;
 
     void setStorage(RenderbufferStorage *newStorage);