Commit 526a89d0 by Alexis Hetu Committed by Alexis Hétu

Fixed setting Renderbuffer's layer and level

The original code allowed Renderbuffer objects to select layer and level at construction time, but after that point these parameters were not modifiable. This cl adds the code to modify layer and/or level when requested. Change-Id: Ic694904f83b794879110bd0505a36a011d79a2a5 Reviewed-on: https://swiftshader-review.googlesource.com/4765Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent 4d208956
...@@ -347,6 +347,11 @@ GLint Renderbuffer::getLayer() const ...@@ -347,6 +347,11 @@ GLint Renderbuffer::getLayer() const
return mInstance->getLayer(); return mInstance->getLayer();
} }
GLint Renderbuffer::getLevel() const
{
return mInstance->getLevel();
}
GLenum Renderbuffer::getFormat() const GLenum Renderbuffer::getFormat() const
{ {
return mInstance->getFormat(); return mInstance->getFormat();
...@@ -392,6 +397,16 @@ GLsizei Renderbuffer::getSamples() const ...@@ -392,6 +397,16 @@ GLsizei Renderbuffer::getSamples() const
return mInstance->getSamples(); return mInstance->getSamples();
} }
void Renderbuffer::setLayer(GLint layer)
{
return mInstance->setLayer(layer);
}
void Renderbuffer::setLevel(GLint level)
{
return mInstance->setLevel(level);
}
void Renderbuffer::setStorage(RenderbufferStorage *newStorage) void Renderbuffer::setStorage(RenderbufferStorage *newStorage)
{ {
ASSERT(newStorage != NULL); ASSERT(newStorage != NULL);
......
...@@ -49,10 +49,14 @@ public: ...@@ -49,10 +49,14 @@ public:
virtual GLsizei getHeight() const = 0; virtual GLsizei getHeight() const = 0;
virtual GLsizei getDepth() const { return 1; } virtual GLsizei getDepth() const { return 1; }
virtual GLint getLayer() const { return 0; } virtual GLint getLayer() const { return 0; }
virtual GLint getLevel() const { return 0; }
virtual GLenum getFormat() const = 0; virtual GLenum getFormat() const = 0;
virtual sw::Format getInternalFormat() const = 0; virtual sw::Format getInternalFormat() const = 0;
virtual GLsizei getSamples() const = 0; virtual GLsizei getSamples() const = 0;
virtual void setLayer(GLint) {}
virtual void setLevel(GLint) {}
GLuint getRedSize() const; GLuint getRedSize() const;
GLuint getGreenSize() const; GLuint getGreenSize() const;
GLuint getBlueSize() const; GLuint getBlueSize() const;
...@@ -77,10 +81,13 @@ public: ...@@ -77,10 +81,13 @@ public:
virtual GLsizei getWidth() const; virtual GLsizei getWidth() const;
virtual GLsizei getHeight() const; virtual GLsizei getHeight() const;
virtual GLint getLevel() const { return mLevel; }
virtual GLenum getFormat() const; virtual GLenum getFormat() const;
virtual sw::Format getInternalFormat() const; virtual sw::Format getInternalFormat() const;
virtual GLsizei getSamples() const; virtual GLsizei getSamples() const;
virtual void setLevel(GLint level) { mLevel = level; }
private: private:
gl::BindingPointer<Texture2D> mTexture2D; gl::BindingPointer<Texture2D> mTexture2D;
GLint mLevel; GLint mLevel;
...@@ -104,10 +111,14 @@ public: ...@@ -104,10 +111,14 @@ public:
virtual GLsizei getHeight() const; virtual GLsizei getHeight() const;
virtual GLsizei getDepth() const; virtual GLsizei getDepth() const;
virtual GLint getLayer() const { return mLayer; } virtual GLint getLayer() const { return mLayer; }
virtual GLint getLevel() const { return mLevel; }
virtual GLenum getFormat() const; virtual GLenum getFormat() const;
virtual sw::Format getInternalFormat() const; virtual sw::Format getInternalFormat() const;
virtual GLsizei getSamples() const; virtual GLsizei getSamples() const;
virtual void setLayer(GLint layer) { mLayer = layer; }
virtual void setLevel(GLint level) { mLevel = level; }
private: private:
gl::BindingPointer<Texture3D> mTexture3D; gl::BindingPointer<Texture3D> mTexture3D;
GLint mLevel; GLint mLevel;
...@@ -130,10 +141,13 @@ public: ...@@ -130,10 +141,13 @@ public:
virtual GLsizei getWidth() const; virtual GLsizei getWidth() const;
virtual GLsizei getHeight() const; virtual GLsizei getHeight() const;
virtual GLint getLevel() const { return mLevel; }
virtual GLenum getFormat() const; virtual GLenum getFormat() const;
virtual sw::Format getInternalFormat() const; virtual sw::Format getInternalFormat() const;
virtual GLsizei getSamples() const; virtual GLsizei getSamples() const;
virtual void setLevel(GLint level) { mLevel = level; }
private: private:
gl::BindingPointer<TextureCubeMap> mTextureCubeMap; gl::BindingPointer<TextureCubeMap> mTextureCubeMap;
GLenum mTarget; GLenum mTarget;
...@@ -193,6 +207,7 @@ public: ...@@ -193,6 +207,7 @@ public:
GLsizei getHeight() const; GLsizei getHeight() const;
GLsizei getDepth() const; GLsizei getDepth() const;
GLint getLayer() const; GLint getLayer() const;
GLint getLevel() const;
GLenum getFormat() const; GLenum getFormat() const;
sw::Format getInternalFormat() const; sw::Format getInternalFormat() const;
GLuint getRedSize() const; GLuint getRedSize() const;
...@@ -203,6 +218,8 @@ public: ...@@ -203,6 +218,8 @@ public:
GLuint getStencilSize() const; GLuint getStencilSize() const;
GLsizei getSamples() const; GLsizei getSamples() const;
void setLayer(GLint layer);
void setLevel(GLint level);
void setStorage(RenderbufferStorage *newStorage); void setStorage(RenderbufferStorage *newStorage);
private: private:
......
...@@ -941,6 +941,10 @@ Renderbuffer *Texture2D::getRenderbuffer(GLenum target, GLint level, GLint layer ...@@ -941,6 +941,10 @@ Renderbuffer *Texture2D::getRenderbuffer(GLenum target, GLint level, GLint layer
{ {
mColorbufferProxy = new Renderbuffer(name, new RenderbufferTexture2D(this, level)); mColorbufferProxy = new Renderbuffer(name, new RenderbufferTexture2D(this, level));
} }
else
{
mColorbufferProxy->setLevel(level);
}
return mColorbufferProxy; return mColorbufferProxy;
} }
...@@ -1424,6 +1428,10 @@ Renderbuffer *TextureCubeMap::getRenderbuffer(GLenum target, GLint level, GLint ...@@ -1424,6 +1428,10 @@ Renderbuffer *TextureCubeMap::getRenderbuffer(GLenum target, GLint level, GLint
{ {
mFaceProxies[face] = new Renderbuffer(name, new RenderbufferTextureCubeMap(this, target, level)); mFaceProxies[face] = new Renderbuffer(name, new RenderbufferTextureCubeMap(this, target, level));
} }
else
{
mFaceProxies[face]->setLevel(level);
}
return mFaceProxies[face]; return mFaceProxies[face];
} }
...@@ -1903,6 +1911,11 @@ Renderbuffer *Texture3D::getRenderbuffer(GLenum target, GLint level, GLint layer ...@@ -1903,6 +1911,11 @@ Renderbuffer *Texture3D::getRenderbuffer(GLenum target, GLint level, GLint layer
{ {
mColorbufferProxy = new Renderbuffer(name, new RenderbufferTexture3D(this, level, layer)); mColorbufferProxy = new Renderbuffer(name, new RenderbufferTexture3D(this, level, layer));
} }
else
{
mColorbufferProxy->setLevel(level);
mColorbufferProxy->setLayer(layer);
}
return mColorbufferProxy; return mColorbufferProxy;
} }
......
...@@ -3020,7 +3020,7 @@ void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenu ...@@ -3020,7 +3020,7 @@ void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenu
case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:
if(attachmentObjectType == GL_TEXTURE) if(attachmentObjectType == GL_TEXTURE)
{ {
*params = 0; // FramebufferTexture2D will not allow level to be set to anything else in GL ES 2.0 *params = clientVersion < 3 ? 0 : renderbuffer->getLevel(); // FramebufferTexture2D will not allow level to be set to anything else in GL ES 2.0
} }
else else
{ {
......
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