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);