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