1 #ifndef _GLCCONFIGLIST_HPP 2 #define _GLCCONFIGLIST_HPP 3 /*------------------------------------------------------------------------- 4 * OpenGL Conformance Test Suite 5 * ----------------------------- 6 * 7 * Copyright (c) 2016 Google Inc. 8 * Copyright (c) 2016 The Khronos Group Inc. 9 * 10 * Licensed under the Apache License, Version 2.0 (the "License"); 11 * you may not use this file except in compliance with the License. 12 * You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, software 17 * distributed under the License is distributed on an "AS IS" BASIS, 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 * See the License for the specific language governing permissions and 20 * limitations under the License. 21 * 22 */ /*! 23 * \file 24 * \brief CTS rendering configuration list utility. 25 */ /*-------------------------------------------------------------------*/ 26 27 #include "gluPlatform.hpp" 28 #include "tcuCommandLine.hpp" 29 #include "tcuDefs.hpp" 30 31 #include <string> 32 #include <vector> 33 34 namespace glcts 35 { 36 37 enum ConfigType 38 { 39 CONFIGTYPE_DEFAULT = 0, //!< Only default config (no parameters). 40 CONFIGTYPE_EGL, //!< EGL config. 41 CONFIGTYPE_WGL, //!< WGL config. 42 43 CONFIGTYPE_LAST 44 }; 45 46 enum SurfaceTypeFlags 47 { 48 SURFACETYPE_WINDOW = (1 << tcu::SURFACETYPE_WINDOW), 49 SURFACETYPE_PIXMAP = (1 << tcu::SURFACETYPE_OFFSCREEN_NATIVE), 50 SURFACETYPE_PBUFFER = (1 << tcu::SURFACETYPE_OFFSCREEN_GENERIC), 51 SURFACETYPE_FBO = (1 << tcu::SURFACETYPE_FBO), 52 }; 53 54 enum ExcludeReason 55 { 56 EXCLUDEREASON_NOT_COMPATIBLE = 0, //!< Not compatible with target API 57 EXCLUDEREASON_NOT_CONFORMANT, //!< Compatible but not conformant 58 EXCLUDEREASON_MSAA, //!< Compatible but not testable with current tests 59 EXCLUDEREASON_FLOAT, //!< Compatible but not testable with current tests 60 EXCLUDEREASON_YUV, //!< Compatible but not testable with current tests 61 EXCLUDEREASON_LAST 62 }; 63 64 struct Config 65 { Configglcts::Config66 Config(ConfigType type_, int id_, deUint32 surfaceTypes_) : type(type_), id(id_), surfaceTypes(surfaceTypes_) 67 { 68 } 69 Configglcts::Config70 Config(void) : type(CONFIGTYPE_LAST), id(0), surfaceTypes(0) 71 { 72 } 73 74 ConfigType type; 75 int id; 76 deUint32 surfaceTypes; 77 }; 78 79 struct ExcludedConfig 80 { ExcludedConfigglcts::ExcludedConfig81 ExcludedConfig(ConfigType type_, int id_, ExcludeReason reason_) : type(type_), id(id_), reason(reason_) 82 { 83 } 84 ExcludedConfigglcts::ExcludedConfig85 ExcludedConfig(void) : type(CONFIGTYPE_LAST), id(0), reason(EXCLUDEREASON_LAST) 86 { 87 } 88 89 ConfigType type; 90 int id; 91 ExcludeReason reason; 92 }; 93 94 struct AOSPConfig 95 { AOSPConfigglcts::AOSPConfig96 AOSPConfig(ConfigType type_, int id_, deUint32 surfaceTypes_, deInt32 redBits_, deInt32 greenBits_, 97 deInt32 blueBits_, deInt32 alphaBits_, deInt32 depthBits_, deInt32 stencilBits_, deInt32 samples_) 98 : type(type_) 99 , id(id_) 100 , surfaceTypes(surfaceTypes_) 101 , redBits(redBits_) 102 , greenBits(greenBits_) 103 , blueBits(blueBits_) 104 , alphaBits(alphaBits_) 105 , depthBits(depthBits_) 106 , stencilBits(stencilBits_) 107 , samples(samples_) 108 { 109 } 110 AOSPConfigglcts::AOSPConfig111 AOSPConfig(void) 112 : type(CONFIGTYPE_LAST) 113 , id(0) 114 , surfaceTypes(0) 115 , redBits(0) 116 , greenBits(0) 117 , blueBits(0) 118 , alphaBits(0) 119 , depthBits(0) 120 , stencilBits(0) 121 , samples(0) 122 { 123 } 124 125 ConfigType type; 126 int id; 127 deUint32 surfaceTypes; 128 deInt32 redBits; 129 deInt32 greenBits; 130 deInt32 blueBits; 131 deInt32 alphaBits; 132 deInt32 depthBits; 133 deInt32 stencilBits; 134 deInt32 samples; 135 }; 136 137 class ConfigList 138 { 139 public: 140 // Configs exposed by an implementation which are required to pass all non-AOSP tests. 141 // This includes all configs marked as conformant but not multisample configs. 142 std::vector<Config> configs; 143 // Configs exposed by an implementation which are not required to pass the CTS. 144 // This includes non-conformant and multisample configs. 145 std::vector<ExcludedConfig> excludedConfigs; 146 // Configs exposed by an implementation which will be used to determine AOSP runs parameters. 147 // This includes all configs marked as conformant. 148 std::vector<AOSPConfig> aospConfigs; 149 }; 150 151 void getDefaultConfigList(tcu::Platform& platform, glu::ApiType type, ConfigList& configList); 152 153 } // glcts 154 155 #endif // _GLCCONFIGLIST_HPP 156