1 /*------------------------------------------------------------------------- 2 * drawElements Quality Program OpenGL ES 3.0 Module 3 * ------------------------------------------------- 4 * 5 * Copyright 2014 The Android Open Source Project 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 *//*! 20 * \file 21 * \brief Sampler object tests. 22 *//*--------------------------------------------------------------------*/ 23 #include "es3fSamplerObjectTests.hpp" 24 25 #include "glsSamplerObjectTest.hpp" 26 27 #include "tcuTexture.hpp" 28 #include "tcuSurface.hpp" 29 #include "tcuTextureUtil.hpp" 30 #include "tcuImageCompare.hpp" 31 #include "tcuTestLog.hpp" 32 #include "tcuRGBA.hpp" 33 #include "tcuRenderTarget.hpp" 34 35 #include "gluShaderProgram.hpp" 36 #include "gluPixelTransfer.hpp" 37 #include "gluRenderContext.hpp" 38 39 #include "deRandom.hpp" 40 #include "deString.h" 41 42 #include "glwEnums.hpp" 43 44 namespace deqp 45 { 46 namespace gles3 47 { 48 namespace Functional 49 { 50 51 SamplerObjectTests::SamplerObjectTests (Context& context) 52 : TestCaseGroup(context, "samplers", "Texture sampler tests") 53 { 54 } 55 56 SamplerObjectTests::~SamplerObjectTests (void) 57 { 58 } 59 60 void SamplerObjectTests::init (void) 61 { 62 gls::TextureSamplerTest::TestSpec simpleTestCases[] = { 63 { "diff_wrap_t", "Different GL_TEXTURE_WRAP_T", GL_TEXTURE_2D, 64 { GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 65 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 66 }, 67 { "diff_wrap_s", "Different GL_TEXTURE_WRAP_S", GL_TEXTURE_2D, 68 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 69 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 70 }, 71 { "diff_wrap_r", "Different GL_TEXTURE_WRAP_R", GL_TEXTURE_2D, 72 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f }, 73 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 74 }, 75 { "diff_min_filter", "Different GL_TEXTURE_MIN_FILTER", GL_TEXTURE_2D, 76 { GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 77 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 78 }, 79 { "diff_mag_filter", "Different GL_TEXTURE_MAG_FILTER", GL_TEXTURE_2D, 80 { GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 81 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 82 }, 83 { "diff_max_lod", "Different GL_TEXTURE_MAX_LOD", GL_TEXTURE_2D, 84 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 85 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f } 86 }, 87 { "diff_min_lod", "Different GL_TEXTURE_MIN_LOD", GL_TEXTURE_2D, 88 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f }, 89 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f } 90 } 91 }; 92 93 TestCaseGroup* simpleTexture2D = new TestCaseGroup(m_context, "single_tex_2d", "Simple 2D texture with sampler"); 94 95 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(simpleTestCases); testNdx++) 96 simpleTexture2D->addChild(new gls::TextureSamplerTest(m_testCtx, m_context.getRenderContext(), simpleTestCases[testNdx])); 97 98 addChild(simpleTexture2D); 99 100 gls::MultiTextureSamplerTest::TestSpec multiTestCases[] = { 101 { "diff_wrap_t", "Different GL_TEXTURE_WRAP_T", GL_TEXTURE_2D, 102 { GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 103 { GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 104 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 105 }, 106 { "diff_wrap_s", "Different GL_TEXTURE_WRAP_S", GL_TEXTURE_2D, 107 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 108 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 109 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 110 }, 111 { "diff_wrap_r", "Different GL_TEXTURE_WRAP_R", GL_TEXTURE_2D, 112 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f }, 113 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f }, 114 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 115 }, 116 { "diff_min_filter", "Different GL_TEXTURE_MIN_FILTER", GL_TEXTURE_2D, 117 { GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 118 { GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 119 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 120 }, 121 { "diff_mag_filter", "Different GL_TEXTURE_MAG_FILTER", GL_TEXTURE_2D, 122 { GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 123 { GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 124 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 125 }, 126 { "diff_max_lod", "Different GL_TEXTURE_MAX_LOD", GL_TEXTURE_2D, 127 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 128 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 129 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f } 130 }, 131 { "diff_min_lod", "Different GL_TEXTURE_MIN_LOD", GL_TEXTURE_2D, 132 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f }, 133 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f }, 134 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f } 135 } 136 }; 137 138 TestCaseGroup* multiTexture2D = new TestCaseGroup(m_context, "multi_tex_2d", "Multiple texture units 2D texture with sampler"); 139 140 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(multiTestCases); testNdx++) 141 multiTexture2D->addChild(new gls::MultiTextureSamplerTest(m_testCtx, m_context.getRenderContext(), multiTestCases[testNdx])); 142 143 addChild(multiTexture2D); 144 145 gls::TextureSamplerTest::TestSpec simpleTestCases3D[] = { 146 { "diff_wrap_t", "Different GL_TEXTURE_WRAP_T", GL_TEXTURE_3D, 147 { GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 148 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 149 }, 150 { "diff_wrap_s", "Different GL_TEXTURE_WRAP_S", GL_TEXTURE_3D, 151 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 152 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 153 }, 154 { "diff_wrap_r", "Different GL_TEXTURE_WRAP_R", GL_TEXTURE_3D, 155 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f }, 156 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 157 }, 158 { "diff_min_filter", "Different GL_TEXTURE_MIN_FILTER", GL_TEXTURE_3D, 159 { GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 160 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 161 }, 162 { "diff_mag_filter", "Different GL_TEXTURE_MAG_FILTER", GL_TEXTURE_3D, 163 { GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 164 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 165 }, 166 { "diff_max_lod", "Different GL_TEXTURE_MAX_LOD", GL_TEXTURE_3D, 167 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 168 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f } 169 }, 170 { "diff_min_lod", "Different GL_TEXTURE_MIN_LOD", GL_TEXTURE_3D, 171 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f }, 172 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f } 173 } 174 }; 175 176 TestCaseGroup* simpleTexture3D = new TestCaseGroup(m_context, "single_tex_3d", "Simple 3D texture with sampler"); 177 178 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(simpleTestCases3D); testNdx++) 179 simpleTexture3D->addChild(new gls::TextureSamplerTest(m_testCtx, m_context.getRenderContext(), simpleTestCases3D[testNdx])); 180 181 addChild(simpleTexture3D); 182 183 gls::MultiTextureSamplerTest::TestSpec multiTestCases3D[] = { 184 { "diff_wrap_t", "Different GL_TEXTURE_WRAP_T", GL_TEXTURE_3D, 185 { GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 186 { GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 187 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 188 }, 189 { "diff_wrap_s", "Different GL_TEXTURE_WRAP_S", GL_TEXTURE_3D, 190 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 191 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 192 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 193 }, 194 { "diff_wrap_r", "Different GL_TEXTURE_WRAP_R", GL_TEXTURE_3D, 195 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f }, 196 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f }, 197 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 198 }, 199 { "diff_min_filter", "Different GL_TEXTURE_MIN_FILTER", GL_TEXTURE_3D, 200 { GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 201 { GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 202 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 203 }, 204 { "diff_mag_filter", "Different GL_TEXTURE_MAG_FILTER", GL_TEXTURE_3D, 205 { GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 206 { GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 207 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 208 }, 209 { "diff_max_lod", "Different GL_TEXTURE_MAX_LOD", GL_TEXTURE_3D, 210 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 211 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 212 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f } 213 }, 214 { "diff_min_lod", "Different GL_TEXTURE_MIN_LOD", GL_TEXTURE_3D, 215 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f }, 216 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f }, 217 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f } 218 } 219 }; 220 221 TestCaseGroup* multiTexture3D = new TestCaseGroup(m_context, "multi_tex_3d", "Multiple texture units 3D texture with sampler"); 222 223 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(multiTestCases3D); testNdx++) 224 multiTexture3D->addChild(new gls::MultiTextureSamplerTest(m_testCtx, m_context.getRenderContext(), multiTestCases3D[testNdx])); 225 226 addChild(multiTexture3D); 227 228 gls::TextureSamplerTest::TestSpec simpleTestCasesCube[] = { 229 { "diff_wrap_t", "Different GL_TEXTURE_WRAP_T", GL_TEXTURE_CUBE_MAP, 230 { GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 231 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 232 }, 233 { "diff_wrap_s", "Different GL_TEXTURE_WRAP_S", GL_TEXTURE_CUBE_MAP, 234 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 235 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 236 }, 237 { "diff_wrap_r", "Different GL_TEXTURE_WRAP_R", GL_TEXTURE_CUBE_MAP, 238 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f }, 239 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 240 }, 241 { "diff_min_filter", "Different GL_TEXTURE_MIN_FILTER", GL_TEXTURE_CUBE_MAP, 242 { GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 243 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 244 }, 245 { "diff_mag_filter", "Different GL_TEXTURE_MAG_FILTER", GL_TEXTURE_CUBE_MAP, 246 { GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 247 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 248 }, 249 { "diff_max_lod", "Different GL_TEXTURE_MAX_LOD", GL_TEXTURE_CUBE_MAP, 250 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 251 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f } 252 }, 253 { "diff_min_lod", "Different GL_TEXTURE_MIN_LOD", GL_TEXTURE_CUBE_MAP, 254 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f }, 255 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f } 256 } 257 }; 258 259 TestCaseGroup* simpleTextureCube = new TestCaseGroup(m_context, "single_cubemap", "Simple cubemap texture with sampler"); 260 261 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(simpleTestCasesCube); testNdx++) 262 simpleTextureCube->addChild(new gls::TextureSamplerTest(m_testCtx, m_context.getRenderContext(), simpleTestCasesCube[testNdx])); 263 264 addChild(simpleTextureCube); 265 266 gls::MultiTextureSamplerTest::TestSpec multiTestCasesCube[] = { 267 { "diff_wrap_t", "Different GL_TEXTURE_WRAP_T", GL_TEXTURE_CUBE_MAP, 268 { GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 269 { GL_NEAREST, GL_NEAREST, GL_MIRRORED_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 270 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 271 }, 272 { "diff_wrap_s", "Different GL_TEXTURE_WRAP_S", GL_TEXTURE_CUBE_MAP, 273 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 274 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_MIRRORED_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 275 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 276 }, 277 { "diff_wrap_r", "Different GL_TEXTURE_WRAP_R", GL_TEXTURE_CUBE_MAP, 278 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f }, 279 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_MIRRORED_REPEAT, -1000.0f, 1000.0f }, 280 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 281 }, 282 { "diff_min_filter", "Different GL_TEXTURE_MIN_FILTER", GL_TEXTURE_CUBE_MAP, 283 { GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 284 { GL_LINEAR, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 285 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 286 }, 287 { "diff_mag_filter", "Different GL_TEXTURE_MAG_FILTER", GL_TEXTURE_CUBE_MAP, 288 { GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 289 { GL_NEAREST, GL_LINEAR, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 290 { GL_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f } 291 }, 292 { "diff_max_lod", "Different GL_TEXTURE_MAX_LOD", GL_TEXTURE_CUBE_MAP, 293 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 294 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, 1000.0f }, 295 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, -1000.0f, -999.0f } 296 }, 297 { "diff_min_lod", "Different GL_TEXTURE_MIN_LOD", GL_TEXTURE_CUBE_MAP, 298 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f }, 299 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 0.0f, 1000.0f }, 300 { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, GL_REPEAT, GL_REPEAT, GL_REPEAT, 100.0f, 1000.0f } 301 } 302 }; 303 304 TestCaseGroup* multiTextureCube = new TestCaseGroup(m_context, "multi_cubemap", "Multiple texture units cubemap textures with sampler"); 305 306 for (int testNdx = 0; testNdx < DE_LENGTH_OF_ARRAY(multiTestCasesCube); testNdx++) 307 multiTextureCube->addChild(new gls::MultiTextureSamplerTest(m_testCtx, m_context.getRenderContext(), multiTestCasesCube[testNdx])); 308 309 addChild(multiTextureCube); 310 } 311 312 } // Functional 313 } // gles3 314 } // deqp 315