Commit 0fecd6f3 by Alexis Hetu Committed by Alexis Hétu

Follow up on Framebuffer Layer query

According to a comment that was added after the cl was landed, depth and stencil layer queries are valid, so support for it was added. Here's a link to the original cl: https://swiftshader-review.googlesource.com/#/c/3541 Change-Id: Ib2eb50fb8cea6537da53bf45b5c7afa1f1a7b61b Reviewed-on: https://swiftshader-review.googlesource.com/3751Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent e5d01414
......@@ -223,7 +223,17 @@ GLuint Framebuffer::getStencilbufferName()
GLint Framebuffer::getColorbufferLayer(GLuint index)
{
Renderbuffer *colorbuffer = mColorbufferPointer[index];
return (colorbuffer != nullptr) ? colorbuffer->getLayer() : 0;
return colorbuffer ? colorbuffer->getLayer() : 0;
}
GLint Framebuffer::getDepthbufferLayer()
{
return mDepthbufferPointer ? mDepthbufferPointer->getLayer() : 0;
}
GLint Framebuffer::getStencilbufferLayer()
{
return mStencilbufferPointer ? mStencilbufferPointer->getLayer() : 0;
}
bool Framebuffer::hasStencil()
......
......@@ -60,6 +60,8 @@ public:
GLuint getStencilbufferName();
GLint getColorbufferLayer(GLuint index);
GLint getDepthbufferLayer();
GLint getStencilbufferLayer();
bool hasStencil();
......
......@@ -2962,7 +2962,7 @@ void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenu
GLenum attachmentType;
GLuint attachmentHandle;
GLint attachmentLayer = 0;
GLint attachmentLayer;
Renderbuffer* renderbuffer = nullptr;
switch(attachment)
{
......@@ -2971,6 +2971,7 @@ void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenu
{
attachmentType = framebuffer->getColorbufferType(0);
attachmentHandle = framebuffer->getColorbufferName(0);
attachmentLayer = framebuffer->getColorbufferLayer(0);
renderbuffer = framebuffer->getColorbuffer(0);
}
else return error(GL_INVALID_ENUM);
......@@ -3014,6 +3015,7 @@ void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenu
case GL_DEPTH_ATTACHMENT:
attachmentType = framebuffer->getDepthbufferType();
attachmentHandle = framebuffer->getDepthbufferName();
attachmentLayer = framebuffer->getDepthbufferLayer();
renderbuffer = framebuffer->getDepthbuffer();
break;
case GL_STENCIL:
......@@ -3025,6 +3027,7 @@ void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenu
case GL_STENCIL_ATTACHMENT:
attachmentType = framebuffer->getStencilbufferType();
attachmentHandle = framebuffer->getStencilbufferName();
attachmentLayer = framebuffer->getStencilbufferLayer();
renderbuffer = framebuffer->getStencilbuffer();
break;
case GL_DEPTH_STENCIL_ATTACHMENT:
......@@ -3032,6 +3035,7 @@ void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenu
{
attachmentType = framebuffer->getDepthbufferType();
attachmentHandle = framebuffer->getDepthbufferName();
attachmentLayer = framebuffer->getDepthbufferLayer();
if(attachmentHandle != framebuffer->getStencilbufferName())
{
// Different attachments to DEPTH and STENCIL, query fails
......
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