WebGL Compat: Add DEPTH_STENCIL renderbuffers.
This special internal format was defined in the WebGL 1 spec as a
special unsized format with at least 16 bits of depth and at least
8 bits of stencil. Intenally ANGLE will translate this to packed
24/8 depth/stencil.
The new test is adapted from the WebGL test:
conformance/renderbuffers/framebuffer-object-attachment
BUG=angleproject:1708
Change-Id: I44b03e41889eed02481f603b8d52c530dcfed5ce
Reviewed-on: https://chromium-review.googlesource.com/442094
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index 9985573..2a911a7 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -1954,7 +1954,10 @@
return false;
}
- const TextureCaps &formatCaps = context->getTextureCaps().get(internalformat);
+ // Hack for the special WebGL 1 "DEPTH_STENCIL" internal format.
+ GLenum convertedInternalFormat = context->getConvertedRenderbufferFormat(internalformat);
+
+ const TextureCaps &formatCaps = context->getTextureCaps().get(convertedInternalFormat);
if (!formatCaps.renderable)
{
context->handleError(Error(GL_INVALID_ENUM));
@@ -1964,7 +1967,7 @@
// ANGLE_framebuffer_multisample does not explicitly state that the internal format must be
// sized but it does state that the format must be in the ES2.0 spec table 4.5 which contains
// only sized internal formats.
- const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalformat);
+ const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(convertedInternalFormat);
if (formatInfo.pixelBytes == 0)
{
context->handleError(Error(GL_INVALID_ENUM));