Adding support for GL_DEPTH_STENCIL_ATTACHMENT

ES3 supports set/get for both stencil and depth
attachments simultaneously though
GL_DEPTH_STENCIL_ATTACHMENT, so support for it
was added in FramebufferRenderbuffer and
GetFramebufferAttachmentParameteriv.

Change-Id: I09b077de1f31899a20baacbd651c65dfa9e7fc5d
Reviewed-on: https://swiftshader-review.googlesource.com/3546
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index 421fdd4..7cc8418 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -2231,6 +2231,14 @@
 		case GL_STENCIL_ATTACHMENT:

 			framebuffer->setStencilbuffer(GL_RENDERBUFFER, renderbuffer);

 			break;

+		case GL_DEPTH_STENCIL_ATTACHMENT:

+			if(clientVersion >= 3)

+			{

+				framebuffer->setDepthbuffer(GL_RENDERBUFFER, renderbuffer);

+				framebuffer->setStencilbuffer(GL_RENDERBUFFER, renderbuffer);

+				break;

+			}

+			else return error(GL_INVALID_ENUM);

 		default:

 			return error(GL_INVALID_ENUM);

 		}

@@ -2981,6 +2989,18 @@
 			attachmentType = framebuffer->getStencilbufferType();

 			attachmentHandle = framebuffer->getStencilbufferName();

 			break;

+		case GL_DEPTH_STENCIL_ATTACHMENT:

+			if(clientVersion >= 3)

+			{

+				attachmentType = framebuffer->getDepthbufferType();

+				attachmentHandle = framebuffer->getDepthbufferName();

+				if(attachmentHandle != framebuffer->getStencilbufferName())

+				{

+					// Different attachments to DEPTH and STENCIL, query fails

+					return error(GL_INVALID_OPERATION);

+				}

+			}

+			else return error(GL_INVALID_ENUM);

 		default:

 			return error(GL_INVALID_ENUM);

 		}