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