// // Copyright 2015 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. // // IndexBufferOffsetTest.cpp: Test glDrawElements with an offset and an index buffer #include "test_utils/ANGLETest.h" #include "test_utils/gl_raii.h" #include "util/test_utils.h" usingnamespaceangle; enum class UpdateType { … }; class IndexBufferOffsetTest : public ANGLETest<> { … }; class IndexBufferOffsetTestES3 : public IndexBufferOffsetTest { … }; // Test using an offset for an UInt8 index buffer TEST_P(IndexBufferOffsetTest, UInt8Index) { … } // Test using an offset for an UInt16 index buffer TEST_P(IndexBufferOffsetTest, UInt16Index) { … } // Test using an offset for an UInt32 index buffer TEST_P(IndexBufferOffsetTest, UInt32Index) { … } // Test using an offset for an UInt8 index buffer with small buffer updates TEST_P(IndexBufferOffsetTest, UInt8IndexSmallUpdates) { … } // Test using an offset for an UInt16 index buffer with small buffer updates TEST_P(IndexBufferOffsetTest, UInt16IndexSmallUpdates) { … } // Test using an offset for an UInt32 index buffer with small buffer updates TEST_P(IndexBufferOffsetTest, UInt32IndexSmallUpdates) { … } // Test using an offset for an UInt8 index buffer after uploading data to a buffer that is in use TEST_P(IndexBufferOffsetTestES3, UseAsUBOThenUpdateThenUInt8Index) { … } // Test using an offset for an UInt16 index buffer after uploading data to a buffer that is in use TEST_P(IndexBufferOffsetTestES3, UseAsUBOThenUpdateThenUInt16Index) { … } // Test using an offset for an UInt32 index buffer after uploading data to a buffer that is in use TEST_P(IndexBufferOffsetTestES3, UseAsUBOThenUpdateThenUInt32Index) { … } // Test using an offset for an UInt8 index buffer after uploading data to a buffer that is in use, // with small buffer updates TEST_P(IndexBufferOffsetTestES3, UseAsUBOThenUpdateThenUInt8IndexSmallUpdates) { … } // Test using an offset for an UInt16 index buffer after uploading data to a buffer that is in use, // with small buffer updates TEST_P(IndexBufferOffsetTestES3, UseAsUBOThenUpdateThenUInt16IndexSmallUpdates) { … } // Test using an offset for an UInt32 index buffer after uploading data to a buffer that is in use, // with small buffer updates TEST_P(IndexBufferOffsetTestES3, UseAsUBOThenUpdateThenUInt32IndexSmallUpdates) { … } // Uses index buffer offset and 2 drawElement calls one of the other, makes sure the second // drawElement call will use the correct offset. TEST_P(IndexBufferOffsetTest, DrawAtDifferentOffsets) { … } // Uses index buffer offset and 2 drawElement calls one of the other, one has aligned // offset and one doesn't TEST_P(IndexBufferOffsetTest, DrawAtDifferentOffsetAlignments) { … } // Draw with the same element buffer, but with two different types of data. TEST_P(IndexBufferOffsetTest, DrawWithSameBufferButDifferentTypes) { … } // Draw with GL_LINE_LOOP and followed by GL_TRIANGLES, all using the same element buffer. TEST_P(IndexBufferOffsetTest, DrawWithSameBufferButDifferentModes) { … } // Draw with GL_LINE_LOOP and followed by GL_TRIANGLES, all using the same element buffer. TEST_P(IndexBufferOffsetTest, DrawArraysLineLoopFollowedByDrawElementsTriangle) { … } // Uses index buffer offset and 2 drawElement calls one of the other with different counts, // makes sure the second drawElement call will have its data available. TEST_P(IndexBufferOffsetTest, DrawWithDifferentCountsSameOffset) { … } ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(…); ANGLE_INSTANTIATE_TEST_ES3(…);