xref: /aosp_15_r20/external/deqp/modules/glshared/glsTextureTestUtil.hpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker #ifndef _GLSTEXTURETESTUTIL_HPP
2*35238bceSAndroid Build Coastguard Worker #define _GLSTEXTURETESTUTIL_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 Texture test utilities.
24*35238bceSAndroid Build Coastguard Worker  *
25*35238bceSAndroid Build Coastguard Worker  * About coordinates:
26*35238bceSAndroid Build Coastguard Worker  *  + Quads consist of 2 triangles, rendered using explicit indices.
27*35238bceSAndroid Build Coastguard Worker  *  + All TextureTestUtil functions and classes expect texture coordinates
28*35238bceSAndroid Build Coastguard Worker  *    for quads to be specified in order (-1, -1), (-1, 1), (1, -1), (1, 1).
29*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
30*35238bceSAndroid Build Coastguard Worker 
31*35238bceSAndroid Build Coastguard Worker #include "tcuDefs.hpp"
32*35238bceSAndroid Build Coastguard Worker #include "tcuTexture.hpp"
33*35238bceSAndroid Build Coastguard Worker #include "tcuSurface.hpp"
34*35238bceSAndroid Build Coastguard Worker #include "tcuPixelFormat.hpp"
35*35238bceSAndroid Build Coastguard Worker #include "tcuRenderTarget.hpp"
36*35238bceSAndroid Build Coastguard Worker #include "tcuTestContext.hpp"
37*35238bceSAndroid Build Coastguard Worker #include "tcuTestLog.hpp"
38*35238bceSAndroid Build Coastguard Worker #include "tcuCompressedTexture.hpp"
39*35238bceSAndroid Build Coastguard Worker #include "tcuTextureUtil.hpp"
40*35238bceSAndroid Build Coastguard Worker #include "tcuTexVerifierUtil.hpp"
41*35238bceSAndroid Build Coastguard Worker 
42*35238bceSAndroid Build Coastguard Worker #include "gluShaderProgram.hpp"
43*35238bceSAndroid Build Coastguard Worker #include "gluShaderUtil.hpp"
44*35238bceSAndroid Build Coastguard Worker #include "gluTextureTestUtil.hpp"
45*35238bceSAndroid Build Coastguard Worker 
46*35238bceSAndroid Build Coastguard Worker #include "deInt32.h"
47*35238bceSAndroid Build Coastguard Worker 
48*35238bceSAndroid Build Coastguard Worker #include <map>
49*35238bceSAndroid Build Coastguard Worker 
50*35238bceSAndroid Build Coastguard Worker namespace tcu
51*35238bceSAndroid Build Coastguard Worker {
52*35238bceSAndroid Build Coastguard Worker struct LookupPrecision;
53*35238bceSAndroid Build Coastguard Worker struct LodPrecision;
54*35238bceSAndroid Build Coastguard Worker struct TexComparePrecision;
55*35238bceSAndroid Build Coastguard Worker } // namespace tcu
56*35238bceSAndroid Build Coastguard Worker 
57*35238bceSAndroid Build Coastguard Worker namespace deqp
58*35238bceSAndroid Build Coastguard Worker {
59*35238bceSAndroid Build Coastguard Worker namespace gls
60*35238bceSAndroid Build Coastguard Worker {
61*35238bceSAndroid Build Coastguard Worker namespace TextureTestUtil
62*35238bceSAndroid Build Coastguard Worker {
63*35238bceSAndroid Build Coastguard Worker 
64*35238bceSAndroid Build Coastguard Worker enum Program
65*35238bceSAndroid Build Coastguard Worker {
66*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_FLOAT = 0,
67*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_INT,
68*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_UINT,
69*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_SHADOW,
70*35238bceSAndroid Build Coastguard Worker 
71*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_FLOAT_BIAS,
72*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_INT_BIAS,
73*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_UINT_BIAS,
74*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_SHADOW_BIAS,
75*35238bceSAndroid Build Coastguard Worker 
76*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_FLOAT,
77*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_INT,
78*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_UINT,
79*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_SHADOW,
80*35238bceSAndroid Build Coastguard Worker 
81*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_FLOAT_BIAS,
82*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_INT_BIAS,
83*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_UINT_BIAS,
84*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_SHADOW_BIAS,
85*35238bceSAndroid Build Coastguard Worker 
86*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_FLOAT,
87*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_INT,
88*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_UINT,
89*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_SHADOW,
90*35238bceSAndroid Build Coastguard Worker 
91*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_FLOAT_BIAS,
92*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_INT_BIAS,
93*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_UINT_BIAS,
94*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_SHADOW_BIAS,
95*35238bceSAndroid Build Coastguard Worker 
96*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_ARRAY_FLOAT,
97*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_ARRAY_INT,
98*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_ARRAY_UINT,
99*35238bceSAndroid Build Coastguard Worker     PROGRAM_1D_ARRAY_SHADOW,
100*35238bceSAndroid Build Coastguard Worker 
101*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_ARRAY_FLOAT,
102*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_ARRAY_INT,
103*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_ARRAY_UINT,
104*35238bceSAndroid Build Coastguard Worker     PROGRAM_2D_ARRAY_SHADOW,
105*35238bceSAndroid Build Coastguard Worker 
106*35238bceSAndroid Build Coastguard Worker     PROGRAM_3D_FLOAT,
107*35238bceSAndroid Build Coastguard Worker     PROGRAM_3D_INT,
108*35238bceSAndroid Build Coastguard Worker     PROGRAM_3D_UINT,
109*35238bceSAndroid Build Coastguard Worker 
110*35238bceSAndroid Build Coastguard Worker     PROGRAM_3D_FLOAT_BIAS,
111*35238bceSAndroid Build Coastguard Worker     PROGRAM_3D_INT_BIAS,
112*35238bceSAndroid Build Coastguard Worker     PROGRAM_3D_UINT_BIAS,
113*35238bceSAndroid Build Coastguard Worker 
114*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_ARRAY_FLOAT,
115*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_ARRAY_INT,
116*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_ARRAY_UINT,
117*35238bceSAndroid Build Coastguard Worker     PROGRAM_CUBE_ARRAY_SHADOW,
118*35238bceSAndroid Build Coastguard Worker 
119*35238bceSAndroid Build Coastguard Worker     PROGRAM_BUFFER_FLOAT,
120*35238bceSAndroid Build Coastguard Worker     PROGRAM_BUFFER_INT,
121*35238bceSAndroid Build Coastguard Worker     PROGRAM_BUFFER_UINT,
122*35238bceSAndroid Build Coastguard Worker 
123*35238bceSAndroid Build Coastguard Worker     PROGRAM_LAST
124*35238bceSAndroid Build Coastguard Worker };
125*35238bceSAndroid Build Coastguard Worker 
126*35238bceSAndroid Build Coastguard Worker class ProgramLibrary
127*35238bceSAndroid Build Coastguard Worker {
128*35238bceSAndroid Build Coastguard Worker public:
129*35238bceSAndroid Build Coastguard Worker     ProgramLibrary(const glu::RenderContext &context, tcu::TestLog &log, glu::GLSLVersion glslVersion,
130*35238bceSAndroid Build Coastguard Worker                    glu::Precision texCoordPrecision);
131*35238bceSAndroid Build Coastguard Worker     ~ProgramLibrary(void);
132*35238bceSAndroid Build Coastguard Worker 
133*35238bceSAndroid Build Coastguard Worker     glu::ShaderProgram *getProgram(Program program);
134*35238bceSAndroid Build Coastguard Worker     void clear(void);
135*35238bceSAndroid Build Coastguard Worker     glu::Precision getTexCoordPrecision();
136*35238bceSAndroid Build Coastguard Worker 
137*35238bceSAndroid Build Coastguard Worker private:
138*35238bceSAndroid Build Coastguard Worker     ProgramLibrary(const ProgramLibrary &other);
139*35238bceSAndroid Build Coastguard Worker     ProgramLibrary &operator=(const ProgramLibrary &other);
140*35238bceSAndroid Build Coastguard Worker 
141*35238bceSAndroid Build Coastguard Worker     const glu::RenderContext &m_context;
142*35238bceSAndroid Build Coastguard Worker     tcu::TestLog &m_log;
143*35238bceSAndroid Build Coastguard Worker     glu::GLSLVersion m_glslVersion;
144*35238bceSAndroid Build Coastguard Worker     glu::Precision m_texCoordPrecision;
145*35238bceSAndroid Build Coastguard Worker     std::map<Program, glu::ShaderProgram *> m_programs;
146*35238bceSAndroid Build Coastguard Worker };
147*35238bceSAndroid Build Coastguard Worker 
148*35238bceSAndroid Build Coastguard Worker class TextureRenderer
149*35238bceSAndroid Build Coastguard Worker {
150*35238bceSAndroid Build Coastguard Worker public:
151*35238bceSAndroid Build Coastguard Worker     TextureRenderer(const glu::RenderContext &context, tcu::TestLog &log, glu::GLSLVersion glslVersion,
152*35238bceSAndroid Build Coastguard Worker                     glu::Precision texCoordPrecision);
153*35238bceSAndroid Build Coastguard Worker     ~TextureRenderer(void);
154*35238bceSAndroid Build Coastguard Worker 
155*35238bceSAndroid Build Coastguard Worker     void clear(void); //!< Frees allocated resources. Destructor will call clear() as well.
156*35238bceSAndroid Build Coastguard Worker 
157*35238bceSAndroid Build Coastguard Worker     void renderQuad(int texUnit, const float *texCoord, glu::TextureTestUtil::TextureType texType);
158*35238bceSAndroid Build Coastguard Worker     void renderQuad(int texUnit, const float *texCoord, const glu::TextureTestUtil::RenderParams &params);
159*35238bceSAndroid Build Coastguard Worker     glu::Precision getTexCoordPrecision();
160*35238bceSAndroid Build Coastguard Worker 
161*35238bceSAndroid Build Coastguard Worker private:
162*35238bceSAndroid Build Coastguard Worker     TextureRenderer(const TextureRenderer &other);
163*35238bceSAndroid Build Coastguard Worker     TextureRenderer &operator=(const TextureRenderer &other);
164*35238bceSAndroid Build Coastguard Worker 
165*35238bceSAndroid Build Coastguard Worker     const glu::RenderContext &m_renderCtx;
166*35238bceSAndroid Build Coastguard Worker     tcu::TestLog &m_log;
167*35238bceSAndroid Build Coastguard Worker     ProgramLibrary m_programLibrary;
168*35238bceSAndroid Build Coastguard Worker };
169*35238bceSAndroid Build Coastguard Worker 
170*35238bceSAndroid Build Coastguard Worker class RandomViewport
171*35238bceSAndroid Build Coastguard Worker {
172*35238bceSAndroid Build Coastguard Worker public:
173*35238bceSAndroid Build Coastguard Worker     int x;
174*35238bceSAndroid Build Coastguard Worker     int y;
175*35238bceSAndroid Build Coastguard Worker     int width;
176*35238bceSAndroid Build Coastguard Worker     int height;
177*35238bceSAndroid Build Coastguard Worker 
178*35238bceSAndroid Build Coastguard Worker     RandomViewport(const tcu::RenderTarget &renderTarget, int preferredWidth, int preferredHeight, uint32_t seed);
179*35238bceSAndroid Build Coastguard Worker };
180*35238bceSAndroid Build Coastguard Worker 
181*35238bceSAndroid Build Coastguard Worker } // namespace TextureTestUtil
182*35238bceSAndroid Build Coastguard Worker } // namespace gls
183*35238bceSAndroid Build Coastguard Worker } // namespace deqp
184*35238bceSAndroid Build Coastguard Worker 
185*35238bceSAndroid Build Coastguard Worker #endif // _GLSTEXTURETESTUTIL_HPP
186