1e5c31af7Sopenharmony_ci#ifndef _GLSSTATECHANGEPERFTESTCASES_HPP 2e5c31af7Sopenharmony_ci#define _GLSSTATECHANGEPERFTESTCASES_HPP 3e5c31af7Sopenharmony_ci/*------------------------------------------------------------------------- 4e5c31af7Sopenharmony_ci * drawElements Quality Program OpenGL (ES) Module 5e5c31af7Sopenharmony_ci * ----------------------------------------------- 6e5c31af7Sopenharmony_ci * 7e5c31af7Sopenharmony_ci * Copyright 2014 The Android Open Source Project 8e5c31af7Sopenharmony_ci * 9e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 10e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License. 11e5c31af7Sopenharmony_ci * You may obtain a copy of the License at 12e5c31af7Sopenharmony_ci * 13e5c31af7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 14e5c31af7Sopenharmony_ci * 15e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 16e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 17e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and 19e5c31af7Sopenharmony_ci * limitations under the License. 20e5c31af7Sopenharmony_ci * 21e5c31af7Sopenharmony_ci *//*! 22e5c31af7Sopenharmony_ci * \file 23e5c31af7Sopenharmony_ci * \brief State change performance tests. 24e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/ 25e5c31af7Sopenharmony_ci 26e5c31af7Sopenharmony_ci#include "tcuDefs.hpp" 27e5c31af7Sopenharmony_ci#include "tcuTestCase.hpp" 28e5c31af7Sopenharmony_ci 29e5c31af7Sopenharmony_cinamespace glu 30e5c31af7Sopenharmony_ci{ 31e5c31af7Sopenharmony_ciclass ShaderProgram; 32e5c31af7Sopenharmony_ciclass RenderContext; 33e5c31af7Sopenharmony_ci} 34e5c31af7Sopenharmony_ci 35e5c31af7Sopenharmony_cinamespace glw 36e5c31af7Sopenharmony_ci{ 37e5c31af7Sopenharmony_ciclass Functions; 38e5c31af7Sopenharmony_ci} 39e5c31af7Sopenharmony_ci 40e5c31af7Sopenharmony_cinamespace deqp 41e5c31af7Sopenharmony_ci{ 42e5c31af7Sopenharmony_cinamespace gls 43e5c31af7Sopenharmony_ci{ 44e5c31af7Sopenharmony_ci 45e5c31af7Sopenharmony_ciclass StateChangePerformanceCase : public tcu::TestCase 46e5c31af7Sopenharmony_ci{ 47e5c31af7Sopenharmony_cipublic: 48e5c31af7Sopenharmony_ci enum DrawType 49e5c31af7Sopenharmony_ci { 50e5c31af7Sopenharmony_ci DRAWTYPE_NOT_INDEXED = 0, //!< glDrawArrays() 51e5c31af7Sopenharmony_ci DRAWTYPE_INDEXED_USER_PTR, //!< glDrawElements(), indices from user pointer. 52e5c31af7Sopenharmony_ci DRAWTYPE_INDEXED_BUFFER, //!< glDrawElements(), indices in buffer. 53e5c31af7Sopenharmony_ci }; 54e5c31af7Sopenharmony_ci 55e5c31af7Sopenharmony_ci StateChangePerformanceCase (tcu::TestContext& testCtx, glu::RenderContext& renderCtx, const char* name, const char* description, DrawType drawType, int drawCallCount, int triangleCount); 56e5c31af7Sopenharmony_ci ~StateChangePerformanceCase (void); 57e5c31af7Sopenharmony_ci 58e5c31af7Sopenharmony_ci void init (void); 59e5c31af7Sopenharmony_ci void deinit (void); 60e5c31af7Sopenharmony_ci 61e5c31af7Sopenharmony_ci IterateResult iterate (void); 62e5c31af7Sopenharmony_ci 63e5c31af7Sopenharmony_ciprotected: 64e5c31af7Sopenharmony_ci void requireIndexBuffers (int count); 65e5c31af7Sopenharmony_ci void requireCoordBuffers (int count); 66e5c31af7Sopenharmony_ci void requirePrograms (int count); 67e5c31af7Sopenharmony_ci void requireTextures (int count); 68e5c31af7Sopenharmony_ci void requireFramebuffers (int count); 69e5c31af7Sopenharmony_ci void requireRenderbuffers (int count); 70e5c31af7Sopenharmony_ci void requireSamplers (int count); 71e5c31af7Sopenharmony_ci void requireVertexArrays (int count); 72e5c31af7Sopenharmony_ci 73e5c31af7Sopenharmony_ci virtual void setupInitialState (const glw::Functions& gl) = 0; 74e5c31af7Sopenharmony_ci virtual void renderTest (const glw::Functions& gl) = 0; 75e5c31af7Sopenharmony_ci virtual void renderReference (const glw::Functions& gl) = 0; 76e5c31af7Sopenharmony_ci 77e5c31af7Sopenharmony_ci void callDraw (const glw::Functions& gl); 78e5c31af7Sopenharmony_ci 79e5c31af7Sopenharmony_ci void logAndSetTestResult (void); 80e5c31af7Sopenharmony_ci 81e5c31af7Sopenharmony_ciprotected: 82e5c31af7Sopenharmony_ci glu::RenderContext& m_renderCtx; 83e5c31af7Sopenharmony_ci 84e5c31af7Sopenharmony_ci const DrawType m_drawType; 85e5c31af7Sopenharmony_ci const int m_iterationCount; 86e5c31af7Sopenharmony_ci const int m_callCount; 87e5c31af7Sopenharmony_ci const int m_triangleCount; 88e5c31af7Sopenharmony_ci 89e5c31af7Sopenharmony_ci std::vector<deUint32> m_indexBuffers; 90e5c31af7Sopenharmony_ci std::vector<deUint32> m_coordBuffers; 91e5c31af7Sopenharmony_ci std::vector<deUint32> m_textures; 92e5c31af7Sopenharmony_ci std::vector<glu::ShaderProgram*> m_programs; 93e5c31af7Sopenharmony_ci std::vector<deUint32> m_framebuffers; 94e5c31af7Sopenharmony_ci std::vector<deUint32> m_renderbuffers; 95e5c31af7Sopenharmony_ci std::vector<deUint32> m_samplers; 96e5c31af7Sopenharmony_ci std::vector<deUint32> m_vertexArrays; 97e5c31af7Sopenharmony_ci 98e5c31af7Sopenharmony_ciprivate: 99e5c31af7Sopenharmony_ci StateChangePerformanceCase (const StateChangePerformanceCase&); 100e5c31af7Sopenharmony_ci StateChangePerformanceCase& operator= (const StateChangePerformanceCase&); 101e5c31af7Sopenharmony_ci 102e5c31af7Sopenharmony_ci std::vector<deUint16> m_indices; 103e5c31af7Sopenharmony_ci 104e5c31af7Sopenharmony_ci std::vector<deUint64> m_interleavedResults; 105e5c31af7Sopenharmony_ci std::vector<deUint64> m_batchedResults; 106e5c31af7Sopenharmony_ci}; 107e5c31af7Sopenharmony_ci 108e5c31af7Sopenharmony_ciclass StateChangeCallPerformanceCase : public tcu::TestCase 109e5c31af7Sopenharmony_ci{ 110e5c31af7Sopenharmony_cipublic: 111e5c31af7Sopenharmony_ci 112e5c31af7Sopenharmony_ci StateChangeCallPerformanceCase (tcu::TestContext& testCtx, glu::RenderContext& renderCtx, const char* name, const char* description); 113e5c31af7Sopenharmony_ci ~StateChangeCallPerformanceCase (void); 114e5c31af7Sopenharmony_ci 115e5c31af7Sopenharmony_ci IterateResult iterate (void); 116e5c31af7Sopenharmony_ci 117e5c31af7Sopenharmony_ci virtual void execCalls (const glw::Functions& gl, int iterNdx, int callCount) = 0; 118e5c31af7Sopenharmony_ci 119e5c31af7Sopenharmony_ciprivate: 120e5c31af7Sopenharmony_ci void executeTest (void); 121e5c31af7Sopenharmony_ci void logTestCase (void); 122e5c31af7Sopenharmony_ci 123e5c31af7Sopenharmony_ci void logAndSetTestResult (void); 124e5c31af7Sopenharmony_ci 125e5c31af7Sopenharmony_ci glu::RenderContext& m_renderCtx; 126e5c31af7Sopenharmony_ci 127e5c31af7Sopenharmony_ci const int m_iterationCount; 128e5c31af7Sopenharmony_ci const int m_callCount; 129e5c31af7Sopenharmony_ci 130e5c31af7Sopenharmony_ci std::vector<deUint64> m_results; 131e5c31af7Sopenharmony_ci}; 132e5c31af7Sopenharmony_ci 133e5c31af7Sopenharmony_ci} // gls 134e5c31af7Sopenharmony_ci} // deqp 135e5c31af7Sopenharmony_ci 136e5c31af7Sopenharmony_ci#endif // _GLSSTATECHANGEPERFTESTCASES_HPP 137