1 #ifndef _GLSSAMPLEROBJECTTEST_HPP 2 #define _GLSSAMPLEROBJECTTEST_HPP 3 /*------------------------------------------------------------------------- 4 * drawElements Quality Program OpenGL ES 3.0 Module 5 * ------------------------------------------------- 6 * 7 * Copyright 2014 The Android Open Source Project 8 * 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 * 21 *//*! 22 * \file 23 * \brief Sampler object testcases. 24 *//*--------------------------------------------------------------------*/ 25 26 #include "tcuTestCase.hpp" 27 #include "tcuTestLog.hpp" 28 #include "deRandom.hpp" 29 #include "tcuSurface.hpp" 30 #include "gluRenderContext.hpp" 31 #include "glw.h" 32 #include "glwEnums.hpp" 33 #include "gluShaderProgram.hpp" 34 35 namespace deqp 36 { 37 namespace gls 38 { 39 40 class TextureSamplerTest : public tcu::TestCase 41 { 42 public: 43 struct SamplingState 44 { 45 GLenum minFilter; 46 GLenum magFilter; 47 GLenum wrapT; 48 GLenum wrapS; 49 GLenum wrapR; 50 GLfloat minLod; 51 GLfloat maxLod; 52 }; 53 54 struct TestSpec 55 { 56 const char* name; 57 const char* desc; 58 GLenum target; 59 SamplingState textureState; 60 SamplingState samplerState; 61 }; 62 63 TextureSamplerTest (tcu::TestContext& testCtx, glu::RenderContext& renderCtx, const TestSpec& spec); 64 ~TextureSamplerTest (void); 65 66 void init (void); 67 void deinit (void); 68 69 IterateResult iterate (void); 70 71 private: 72 void renderReferences (tcu::Surface& textureRef, tcu::Surface& samplerRef, int x, int y); 73 void renderResults (tcu::Surface& textureResult, tcu::Surface& samplerResult, int x, int y); 74 75 void render (void); 76 77 static void setTextureState (const glw::Functions& gl, GLenum target, SamplingState state); 78 static void setSamplerState (const glw::Functions& gl, SamplingState state, GLuint sampler); 79 80 static GLuint createTexture2D (const glw::Functions& gl); 81 static GLuint createTexture3D (const glw::Functions& gl); 82 static GLuint createTextureCube (const glw::Functions& gl); 83 static GLuint createTexture (const glw::Functions& gl, GLenum target); 84 85 static const char* selectVertexShader (GLenum target); 86 static const char* selectFragmentShader (GLenum target); 87 88 glu::RenderContext& m_renderCtx; 89 glu::ShaderProgram* m_program; 90 91 GLenum m_target; 92 SamplingState m_textureState; 93 SamplingState m_samplerState; 94 95 de::Random m_random; 96 }; 97 98 class MultiTextureSamplerTest : public tcu::TestCase 99 { 100 public: 101 struct SamplingState 102 { 103 GLenum minFilter; 104 GLenum magFilter; 105 GLenum wrapT; 106 GLenum wrapS; 107 GLenum wrapR; 108 GLfloat minLod; 109 GLfloat maxLod; 110 }; 111 112 struct TestSpec 113 { 114 const char* name; 115 const char* desc; 116 GLenum target; 117 SamplingState textureState1; 118 SamplingState textureState2; 119 SamplingState samplerState; 120 }; 121 122 MultiTextureSamplerTest (tcu::TestContext& testCtx, glu::RenderContext& renderCtx, const TestSpec& spec); 123 ~MultiTextureSamplerTest (void); 124 125 void init (void); 126 void deinit (void); 127 128 IterateResult iterate (void); 129 130 private: 131 void renderReferences (tcu::Surface& textureRef, tcu::Surface& samplerRef, int x, int y); 132 void renderResults (tcu::Surface& textureResult, tcu::Surface& samplerResult, int x, int y); 133 134 void render (void); 135 136 static void setTextureState (const glw::Functions& gl, GLenum target, SamplingState state); 137 static void setSamplerState (const glw::Functions& gl, SamplingState state, GLuint sampler); 138 139 static GLuint createTexture2D (const glw::Functions& gl, int id); 140 static GLuint createTexture3D (const glw::Functions& gl, int id); 141 static GLuint createTextureCube (const glw::Functions& gl, int id); 142 static GLuint createTexture (const glw::Functions& gl, GLenum target, int id); 143 144 static const char* selectVertexShader (GLenum target); 145 static const char* selectFragmentShader (GLenum target); 146 147 glu::RenderContext& m_renderCtx; 148 glu::ShaderProgram* m_program; 149 150 GLenum m_target; 151 SamplingState m_textureState1; 152 SamplingState m_textureState2; 153 SamplingState m_samplerState; 154 155 de::Random m_random; 156 }; 157 158 159 } // gls 160 } // deqp 161 162 #endif // _GLSSAMPLEROBJECTTEST_HPP 163