WebGLCompatibility: Allow GL_DEPTH_STENCIL_ATTACHMENT.
Permits depth-stencil attachment points for WebGL.
BUG=angleproject:2090
Change-Id: I7f5a7c63f2a4a76116ce5639833e5fd8d7f50ffb
Reviewed-on: https://chromium-review.googlesource.com/764591
Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index f3679b7..1f0559c 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -3857,10 +3857,8 @@
switch (attachment)
{
case GL_BACK:
- case GL_FRONT:
case GL_DEPTH:
case GL_STENCIL:
- case GL_DEPTH_STENCIL_ATTACHMENT:
if (clientVersion < 3)
{
ANGLE_VALIDATION_ERR(context, InvalidEnum(), InvalidAttachment);
@@ -3868,6 +3866,14 @@
}
break;
+ case GL_DEPTH_STENCIL_ATTACHMENT:
+ if (clientVersion < 3 && !context->isWebGL1())
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidEnum(), InvalidAttachment);
+ return false;
+ }
+ break;
+
case GL_COLOR_ATTACHMENT0:
case GL_DEPTH_ATTACHMENT:
case GL_STENCIL_ATTACHMENT:
@@ -3922,7 +3928,7 @@
break;
case GL_DEPTH_STENCIL_ATTACHMENT:
- if (!framebuffer->hasValidDepthStencil())
+ if (!framebuffer->hasValidDepthStencil() && !context->isWebGL1())
{
context->handleError(InvalidOperation());
return false;
@@ -4008,7 +4014,7 @@
if (clientVersion < 3)
{
ANGLE_VALIDATION_ERR(context, InvalidEnum(),
- InvalidFramebufferTextureParameter);
+ InvalidFramebufferAttachmentParameter);
return false;
}
break;
@@ -4017,13 +4023,13 @@
if (clientVersion < 3)
{
ANGLE_VALIDATION_ERR(context, InvalidEnum(),
- InvalidFramebufferTextureParameter);
+ InvalidFramebufferAttachmentParameter);
return false;
}
else
{
ANGLE_VALIDATION_ERR(context, InvalidOperation(),
- InvalidFramebufferTextureParameter);
+ InvalidFramebufferAttachmentParameter);
return false;
}
}