Amends CopyTexImage validation to conform to new language in the ES 3.0.3 spec.
bug=angle:582
Also performs format checks for non-subimage copies, and permits unsized format
textures as destination for the copy.
Change-Id: Id647bb968416fbd35e1c70e5da21c81367e08f07
Reviewed-on: https://chromium-review.googlesource.com/189431
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Shannon Woods <shannonwoods@chromium.org>
diff --git a/src/libGLESv2/validationES3.cpp b/src/libGLESv2/validationES3.cpp
index b0ada6d..4b2bd45 100644
--- a/src/libGLESv2/validationES3.cpp
+++ b/src/libGLESv2/validationES3.cpp
@@ -435,12 +435,21 @@
return gl::error(GL_INVALID_VALUE, false);
}
- if (!gl::IsValidCopyTexImageCombination(textureInternalFormat, colorbufferInternalFormat,
+ if (!gl::IsValidCopyTexImageCombination(textureInternalFormat, colorbufferInternalFormat, context->getReadFramebufferHandle(),
context->getClientVersion()))
{
return gl::error(GL_INVALID_OPERATION, false);
}
}
+ else
+ {
+ if (!gl::IsValidCopyTexImageCombination(internalformat, colorbufferInternalFormat, context->getReadFramebufferHandle(),
+ context->getClientVersion()))
+ {
+ return gl::error(GL_INVALID_OPERATION, false);
+ }
+ }
+
// If width or height is zero, it is a no-op. Return false without setting an error.
return (width > 0 && height > 0);