Relax multi-view end-point validation on detach
Passing invalid arguments to the multi-view end-points should not
generate an error if a texture is being detached from the framebuffer.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I22e1ed13b64db046724031d0189612d5e111dcac
Reviewed-on: https://chromium-review.googlesource.com/635166
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/validationES3.cpp b/src/libANGLE/validationES3.cpp
index 4f52b0f..de011ec 100644
--- a/src/libANGLE/validationES3.cpp
+++ b/src/libANGLE/validationES3.cpp
@@ -45,7 +45,7 @@
return false;
}
- if (numViews < 1)
+ if (texture != 0 && numViews < 1)
{
context->handleError(InvalidValue() << "numViews cannot be less than 1.");
return false;
@@ -2727,14 +2727,14 @@
return false;
}
- if (baseViewIndex < 0)
- {
- context->handleError(InvalidValue() << "baseViewIndex cannot be less than 0.");
- return false;
- }
-
if (texture != 0)
{
+ if (baseViewIndex < 0)
+ {
+ context->handleError(InvalidValue() << "baseViewIndex cannot be less than 0.");
+ return false;
+ }
+
Texture *tex = context->getTexture(texture);
ASSERT(tex);
@@ -2781,19 +2781,19 @@
return false;
}
- const GLsizei numViewportOffsetValues = numViews * 2;
- for (GLsizei i = 0; i < numViewportOffsetValues; ++i)
- {
- if (viewportOffsets[i] < 0)
- {
- context->handleError(InvalidValue()
- << "viewportOffsets cannot contain negative values.");
- return false;
- }
- }
-
if (texture != 0)
{
+ const GLsizei numViewportOffsetValues = numViews * 2;
+ for (GLsizei i = 0; i < numViewportOffsetValues; ++i)
+ {
+ if (viewportOffsets[i] < 0)
+ {
+ context->handleError(InvalidValue()
+ << "viewportOffsets cannot contain negative values.");
+ return false;
+ }
+ }
+
Texture *tex = context->getTexture(texture);
ASSERT(tex);