13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program OpenGL ES 3.0 Module 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ------------------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Texture State Query tests. 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "es3fTextureStateQueryTests.hpp" 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glsStateQueryUtil.hpp" 26c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry#include "glsTextureStateQueryTests.hpp" 27c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluRenderContext.hpp" 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glwEnums.hpp" 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 31c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyryusing namespace deqp::gls::StateQueryUtil; 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace deqp 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace gles3 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace Functional 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 40c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyrystatic const char* getVerifierSuffix (QueryType type) 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 42c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry switch (type) 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 44c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry case QUERY_TEXTURE_PARAM_INTEGER: return "_gettexparameteri"; 45c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry case QUERY_TEXTURE_PARAM_FLOAT: return "_gettexparameterf"; 46c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry default: 47c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry DE_ASSERT(DE_FALSE); 48c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry return DE_NULL; 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define FOR_EACH_VERIFIER(VERIFIERS, CODE_BLOCK) \ 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (int _verifierNdx = 0; _verifierNdx < DE_LENGTH_OF_ARRAY(VERIFIERS); _verifierNdx++) \ 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { \ 55dc795cd4f3d064cbbe2bf9899bf2088d206b7434Chih-Hung Hsieh QueryType verifier = (VERIFIERS)[_verifierNdx]; \ 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry CODE_BLOCK; \ 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 593c827367444ee418f129b2c238299f49d3264554Jarkko PoyryTextureStateQueryTests::TextureStateQueryTests (Context& context) 60c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry : TestCaseGroup(context, "texture", "Texture State Query tests") 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid TextureStateQueryTests::init (void) 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 66c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry using namespace gls::TextureStateQueryTests; 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 68c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry static const QueryType verifiers[] = 69c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { 70c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry QUERY_TEXTURE_PARAM_INTEGER, 71c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry QUERY_TEXTURE_PARAM_FLOAT 72c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry }; 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 74c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry static const struct 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const char* name; 77c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry glw::GLenum target; 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } textureTargets[] = 793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 80c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_2d", GL_TEXTURE_2D }, 81c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_3d", GL_TEXTURE_3D }, 82c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_2d_array", GL_TEXTURE_2D_ARRAY }, 83c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_cube_map", GL_TEXTURE_CUBE_MAP } 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 85c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry static const struct 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 87c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry const char* name; 88c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry const char* desc; 89c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry TesterType tester; 90c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry } states[] = 91c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { 92c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_swizzle_r", "TEXTURE_SWIZZLE_R", TESTER_TEXTURE_SWIZZLE_R }, 93c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_swizzle_g", "TEXTURE_SWIZZLE_G", TESTER_TEXTURE_SWIZZLE_G }, 94c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_swizzle_b", "TEXTURE_SWIZZLE_B", TESTER_TEXTURE_SWIZZLE_B }, 95c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_swizzle_a", "TEXTURE_SWIZZLE_A", TESTER_TEXTURE_SWIZZLE_A }, 96c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_wrap_s", "TEXTURE_WRAP_S", TESTER_TEXTURE_WRAP_S }, 97c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_wrap_t", "TEXTURE_WRAP_T", TESTER_TEXTURE_WRAP_T }, 98c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_wrap_r", "TEXTURE_WRAP_R", TESTER_TEXTURE_WRAP_R }, 99c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_mag_filter", "TEXTURE_MAG_FILTER", TESTER_TEXTURE_MAG_FILTER }, 100c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_min_filter", "TEXTURE_MIN_FILTER", TESTER_TEXTURE_MIN_FILTER }, 101c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_min_lod", "TEXTURE_MIN_LOD", TESTER_TEXTURE_MIN_LOD }, 102c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_max_lod", "TEXTURE_MAX_LOD", TESTER_TEXTURE_MAX_LOD }, 103c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_base_level", "TEXTURE_BASE_LEVEL", TESTER_TEXTURE_BASE_LEVEL }, 104c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_max_level", "TEXTURE_MAX_LEVEL", TESTER_TEXTURE_MAX_LEVEL }, 105c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_compare_mode", "TEXTURE_COMPARE_MODE", TESTER_TEXTURE_COMPARE_MODE }, 106c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_compare_func", "TEXTURE_COMPARE_FUNC", TESTER_TEXTURE_COMPARE_FUNC }, 107c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_immutable_levels", "TEXTURE_IMMUTABLE_LEVELS", TESTER_TEXTURE_IMMUTABLE_LEVELS }, 108c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { "texture_immutable_format", "TEXTURE_IMMUTABLE_FORMAT", TESTER_TEXTURE_IMMUTABLE_FORMAT }, 109c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry }; 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 111c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry for (int targetNdx = 0; targetNdx < DE_LENGTH_OF_ARRAY(textureTargets); ++targetNdx) 112c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { 113c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry addChild(createIsTextureTest(m_testCtx, 114c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry m_context.getRenderContext(), 115c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry std::string() + textureTargets[targetNdx].name + "_is_texture", 116c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry "IsTexture", 117c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry textureTargets[targetNdx].target)); 1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 119c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry for (int stateNdx = 0; stateNdx < DE_LENGTH_OF_ARRAY(states); ++stateNdx) 120c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry { 121c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry if (!isLegalTesterForTarget(textureTargets[targetNdx].target, states[stateNdx].tester)) 122c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry continue; 1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 124c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry FOR_EACH_VERIFIER(verifiers, addChild(createTexParamTest(m_testCtx, 125c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry m_context.getRenderContext(), 126c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry std::string() + textureTargets[targetNdx].name + "_" + states[stateNdx].name + getVerifierSuffix(verifier), 127c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry states[stateNdx].desc, 128c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry verifier, 129c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry textureTargets[targetNdx].target, 130c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry states[stateNdx].tester))); 131c423ce6164cdd88c8c3e47bec4ec34476743042aJarkko Pöyry } 1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // Functional 1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // gles3 1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // deqp 138