Fix BlitFramebuffer validation for BGRA sources and targets.
It is legal to blit between GL_RGBA8 and GL_BGRA8 sources and
destinations when resolving multisampled renderbuffers. Expand
BlitFramebuffer's validation to handle this case.
Query GL_MAX_VERTEX_OUTPUT_COMPONENTS on the Core Profile to work
around an error generated on macOS when querying
GL_MAX_VARYING_COMPONENTS.
Expand the BlitFramebuffer tests to cover these cases and start
running them on the OpenGL backend.
Fix detectition of multisampled D3D11 rendertargets when the sample count
is 1.
BUG=angleproject:891
Change-Id: Ief5531756651caa66f612e647d3d5c05c8c51ff5
Reviewed-on: https://chromium-review.googlesource.com/587459
Reviewed-by: Kenneth Russell <kbr@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index 9240290..2ed8d3a 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -1727,7 +1727,7 @@
}
if (readColorBuffer->getSamples() > 0 &&
- (!Format::SameSized(readFormat, drawFormat) || !sameBounds))
+ (!Format::EquivalentForBlit(readFormat, drawFormat) || !sameBounds))
{
context->handleError(InvalidOperation());
return false;
@@ -1778,7 +1778,7 @@
if (readBuffer && drawBuffer)
{
- if (!Format::SameSized(readBuffer->getFormat(), drawBuffer->getFormat()))
+ if (!Format::EquivalentForBlit(readBuffer->getFormat(), drawBuffer->getFormat()))
{
context->handleError(InvalidOperation());
return false;