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);
}