// // Copyright 2017 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // Framebuffer multiview tests: // The tests modify and examine the multiview state. // #include "test_utils/MultiviewTest.h" #include "test_utils/gl_raii.h" usingnamespaceangle; namespace { std::vector<GLenum> GetDrawBufferRange(size_t numColorAttachments) { … } } // namespace // Base class for tests that care mostly about draw call validity and not rendering results. class FramebufferMultiviewTest : public MultiviewTest { … }; class FramebufferMultiviewLayeredClearTest : public FramebufferMultiviewTest { … }; // Test that the framebuffer tokens introduced by OVR_multiview2 can be used to query the // framebuffer state and that their corresponding default values are correctly set. TEST_P(FramebufferMultiviewTest, DefaultState) { … } // Test that without having the OVR_multiview2 extension, querying for the framebuffer state using // the OVR_multiview2 tokens results in an INVALID_ENUM error. TEST_P(FramebufferMultiviewTest, NegativeFramebufferStateQueries) { … } // Test that the correct errors are generated whenever glFramebufferTextureMultiviewOVR is // called with invalid arguments. TEST_P(FramebufferMultiviewTest, InvalidMultiviewLayeredArguments) { … } // Test that an INVALID_OPERATION error is generated whenever the OVR_multiview2 extension is not // available. TEST_P(FramebufferMultiviewTest, ExtensionNotAvailableCheck) { … } // Test that the active read framebuffer can be read with glCopyTex* if it only has one layered // view. TEST_P(FramebufferMultiviewTest, CopyTex) { … } // Test that glBlitFramebuffer succeeds if the current read framebuffer has just one layered view. TEST_P(FramebufferMultiviewTest, Blit) { … } // Test that glReadPixels succeeds from a layered multiview framebuffer with just one view. TEST_P(FramebufferMultiviewTest, ReadPixels) { … } // Test that glFramebufferTextureMultiviewOVR modifies the internal multiview state. TEST_P(FramebufferMultiviewTest, ModifyLayeredState) { … } // Test framebuffer completeness status of a layered framebuffer with color attachments. TEST_P(FramebufferMultiviewTest, IncompleteViewTargetsLayered) { … } // Test that glClear clears the contents of the color buffer for only the attached layers to a // layered FBO. TEST_P(FramebufferMultiviewLayeredClearTest, ColorBufferClear) { … } // Test that glClearBufferfv can be used to clear individual color buffers of a layered FBO. TEST_P(FramebufferMultiviewLayeredClearTest, ClearIndividualColorBuffer) { … } // Test that glClearBufferfi clears the contents of the stencil buffer for only the attached layers // to a layered FBO. TEST_P(FramebufferMultiviewLayeredClearTest, ClearBufferfi) { … } // Test that glClear does not clear the content of a detached texture. TEST_P(FramebufferMultiviewLayeredClearTest, UnmodifiedDetachedTexture) { … } // Test that glClear clears only the contents within the scissor rectangle of the attached layers. TEST_P(FramebufferMultiviewLayeredClearTest, ScissoredClear) { … } // Test that glClearBufferfi clears the contents of the stencil buffer for only the attached layers // to a layered FBO. TEST_P(FramebufferMultiviewLayeredClearTest, ScissoredClearBufferfi) { … } // Test that detaching an attachment does not generate an error whenever the multi-view related // arguments are invalid. TEST_P(FramebufferMultiviewTest, InvalidMultiviewArgumentsOnDetach) { … } // Test that glClear clears the contents of the color buffer whenever all layers of a 2D texture // array are attached. The test is added because a special fast code path is used for this case. TEST_P(FramebufferMultiviewLayeredClearTest, ColorBufferClearAllLayersAttached) { … } // Test that attaching a multisampled texture array is not possible if all the required extensions // are not enabled. TEST_P(FramebufferMultiviewTest, NegativeMultisampledFramebufferTest) { … } GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(…); ANGLE_INSTANTIATE_TEST(…); GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(…); ANGLE_INSTANTIATE_TEST(…);