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