Save side-by-side function arguments into attachment's state
Handle glFramebufferTextureMultiviewSideBySideANGLE calls by saving the
arguments into the attachment's state.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Idc5441d673b48640f47415b07b2854fbdf566c8d
Reviewed-on: https://chromium-review.googlesource.com/574915
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/tests/gl_tests/FramebufferMultiviewTest.cpp b/src/tests/gl_tests/FramebufferMultiviewTest.cpp
index 4a4ce9a..3228dd2 100644
--- a/src/tests/gl_tests/FramebufferMultiviewTest.cpp
+++ b/src/tests/gl_tests/FramebufferMultiviewTest.cpp
@@ -226,4 +226,50 @@
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
}
+// Test that glFramebufferTextureMultiviewSideBySideANGLE modifies the internal multiview state.
+TEST_P(FramebufferMultiviewTest, ModifySideBySideState)
+{
+ if (!requestMultiviewExtension())
+ {
+ return;
+ }
+
+ const GLint viewportOffsets[4] = {0, 0, 1, 2};
+ createTexture2D();
+ glFramebufferTextureMultiviewSideBySideANGLE(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, mTexture2D,
+ 0, 2, &viewportOffsets[0]);
+ ASSERT_GL_NO_ERROR();
+
+ GLint numViews = -1;
+ glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_ANGLE,
+ &numViews);
+ ASSERT_GL_NO_ERROR();
+ EXPECT_EQ(2, numViews);
+
+ GLint baseViewIndex = -1;
+ glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_ANGLE,
+ &baseViewIndex);
+ ASSERT_GL_NO_ERROR();
+ EXPECT_EQ(0, baseViewIndex);
+
+ GLint multiviewLayout = GL_NONE;
+ glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_MULTIVIEW_LAYOUT_ANGLE,
+ &multiviewLayout);
+ ASSERT_GL_NO_ERROR();
+ EXPECT_EQ(GL_FRAMEBUFFER_MULTIVIEW_SIDE_BY_SIDE_ANGLE, multiviewLayout);
+
+ GLint internalViewportOffsets[4] = {-1};
+ glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_VIEWPORT_OFFSETS_ANGLE,
+ &internalViewportOffsets[0]);
+ ASSERT_GL_NO_ERROR();
+ for (size_t i = 0u; i < 4u; ++i)
+ {
+ EXPECT_EQ(viewportOffsets[i], internalViewportOffsets[i]);
+ }
+}
+
ANGLE_INSTANTIATE_TEST(FramebufferMultiviewTest, ES3_OPENGL());
\ No newline at end of file