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/3751
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGLESv2/Framebuffer.cpp b/src/OpenGL/libGLESv2/Framebuffer.cpp
index 9ae0381..90b4db2 100644
--- a/src/OpenGL/libGLESv2/Framebuffer.cpp
+++ b/src/OpenGL/libGLESv2/Framebuffer.cpp
@@ -223,7 +223,17 @@
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()
diff --git a/src/OpenGL/libGLESv2/Framebuffer.h b/src/OpenGL/libGLESv2/Framebuffer.h
index 03f7c4f..7c290ca 100644
--- a/src/OpenGL/libGLESv2/Framebuffer.h
+++ b/src/OpenGL/libGLESv2/Framebuffer.h
@@ -60,6 +60,8 @@
GLuint getStencilbufferName();
GLint getColorbufferLayer(GLuint index);
+ GLint getDepthbufferLayer();
+ GLint getStencilbufferLayer();
bool hasStencil();
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index 946d7ad..08d3c0a 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -2962,7 +2962,7 @@
GLenum attachmentType;
GLuint attachmentHandle;
- GLint attachmentLayer = 0;
+ GLint attachmentLayer;
Renderbuffer* renderbuffer = nullptr;
switch(attachment)
{
@@ -2971,6 +2971,7 @@
{
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 @@
case GL_DEPTH_ATTACHMENT:
attachmentType = framebuffer->getDepthbufferType();
attachmentHandle = framebuffer->getDepthbufferName();
+ attachmentLayer = framebuffer->getDepthbufferLayer();
renderbuffer = framebuffer->getDepthbuffer();
break;
case GL_STENCIL:
@@ -3025,6 +3027,7 @@
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 @@
{
attachmentType = framebuffer->getDepthbufferType();
attachmentHandle = framebuffer->getDepthbufferName();
+ attachmentLayer = framebuffer->getDepthbufferLayer();
if(attachmentHandle != framebuffer->getStencilbufferName())
{
// Different attachments to DEPTH and STENCIL, query fails