Home | History | Annotate | Download | only in common
      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 {
     66 	Config(ConfigType type_, int id_, deUint32 surfaceTypes_) : type(type_), id(id_), surfaceTypes(surfaceTypes_)
     67 	{
     68 	}
     69 
     70 	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 {
     81 	ExcludedConfig(ConfigType type_, int id_, ExcludeReason reason_) : type(type_), id(id_), reason(reason_)
     82 	{
     83 	}
     84 
     85 	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 {
     96 	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 
    111 	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