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 ¶ms); 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