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/tests/gl_tests/FramebufferMultiviewTest.cpp b/src/tests/gl_tests/FramebufferMultiviewTest.cpp
index 70cd876..0165f49 100644
--- a/src/tests/gl_tests/FramebufferMultiviewTest.cpp
+++ b/src/tests/gl_tests/FramebufferMultiviewTest.cpp
@@ -1294,6 +1294,39 @@
     EXPECT_EQ(GLColor::red, getLayerColor(3, GL_COLOR_ATTACHMENT0, 0, 1));
 }
 
+// Test that detaching an attachment does not generate an error whenever the multi-view related
+// arguments are invalid.
+TEST_P(FramebufferMultiviewTest, InvalidMultiviewArgumentsOnDetach)
+{
+    if (!requestMultiviewExtension())
+    {
+        return;
+    }
+
+    GLFramebuffer fbo;
+    glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+
+    // Invalid base view index.
+    glFramebufferTextureMultiviewLayeredANGLE(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 0, 0, -1, 1);
+    EXPECT_GL_NO_ERROR();
+
+    // Invalid number of views.
+    glFramebufferTextureMultiviewLayeredANGLE(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 0, 0, 0, 0);
+    EXPECT_GL_NO_ERROR();
+
+    // Invalid number of views.
+    const GLint kValidViewportOffsets[2] = {0, 0};
+    glFramebufferTextureMultiviewSideBySideANGLE(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 0, 0, 0,
+                                                 kValidViewportOffsets);
+    EXPECT_GL_NO_ERROR();
+
+    // Invalid viewport offsets.
+    const GLint kInvalidViewportOffsets[2] = {-1, -1};
+    glFramebufferTextureMultiviewSideBySideANGLE(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 0, 0, 1,
+                                                 kInvalidViewportOffsets);
+    EXPECT_GL_NO_ERROR();
+}
+
 ANGLE_INSTANTIATE_TEST(FramebufferMultiviewTest, ES3_OPENGL());
 ANGLE_INSTANTIATE_TEST(FramebufferMultiviewSideBySideClearTest, ES3_OPENGL(), ES3_D3D11());
 ANGLE_INSTANTIATE_TEST(FramebufferMultiviewLayeredClearTest, ES3_OPENGL(), ES3_D3D11());
\ No newline at end of file