Merge "Remove a few EGL tests using RGBA4 format from mustpass" into nougat-cts-dev
[platform/upstream/VK-GL-CTS.git] / framework / opengl / gluRenderConfig.hpp
1 #ifndef _GLURENDERCONFIG_HPP
2 #define _GLURENDERCONFIG_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program OpenGL ES Utilities
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 OpenGL rendering configuration.
24  *//*--------------------------------------------------------------------*/
25
26 #include "tcuDefs.hpp"
27 #include "gluRenderContext.hpp"
28
29 namespace tcu
30 {
31 class CommandLine;
32 }
33
34 namespace glu
35 {
36
37 /*--------------------------------------------------------------------*//*!
38  * \brief Rendering context configuration.
39  *//*--------------------------------------------------------------------*/
40 struct RenderConfig
41 {
42         enum SurfaceType
43         {
44                 SURFACETYPE_DONT_CARE = 0,
45                 SURFACETYPE_WINDOW,                             //!< Native window.
46                 SURFACETYPE_OFFSCREEN_NATIVE,   //!< Native renderable offscreen buffer, such as pixmap or bitmap.
47                 SURFACETYPE_OFFSCREEN_GENERIC,  //!< Generic offscreen buffer, such as EGL pbuffer.
48
49                 SURFACETYPE_LAST
50         };
51
52         enum Visibility
53         {
54                 VISIBILITY_HIDDEN = 0,
55                 VISIBILITY_VISIBLE,
56                 VISIBILITY_FULLSCREEN,
57
58                 VISIBILITY_LAST
59         };
60
61         enum
62         {
63                 DONT_CARE = -1
64         };
65
66         ContextType                     type;
67
68         int                                     width;
69         int                                     height;
70         SurfaceType                     surfaceType;
71         Visibility                      windowVisibility;
72
73         int                                     id;
74
75         int                                     redBits;
76         int                                     greenBits;
77         int                                     blueBits;
78         int                                     alphaBits;
79         int                                     depthBits;
80         int                                     stencilBits;
81         int                                     numSamples;
82
83         RenderConfig (ContextType type_ = ContextType())
84                 : type                          (type_)
85                 , width                         (DONT_CARE)
86                 , height                        (DONT_CARE)
87                 , surfaceType           (SURFACETYPE_DONT_CARE)
88                 , windowVisibility      (VISIBILITY_VISIBLE)
89                 , id                            (DONT_CARE)
90                 , redBits                       (DONT_CARE)
91                 , greenBits                     (DONT_CARE)
92                 , blueBits                      (DONT_CARE)
93                 , alphaBits                     (DONT_CARE)
94                 , depthBits                     (DONT_CARE)
95                 , stencilBits           (DONT_CARE)
96                 , numSamples            (DONT_CARE)
97         {
98         }
99 } DE_WARN_UNUSED_TYPE;
100
101 // Utilities
102
103 void                                            parseRenderConfig               (RenderConfig* config, const tcu::CommandLine& cmdLine);
104 RenderConfig::Visibility        parseWindowVisibility   (const tcu::CommandLine& cmdLine);
105
106 template<typename T>
107 T getValueOrDefault (const RenderConfig& config, const T RenderConfig::*field, T defaultValue)
108 {
109         T value = config.*field;
110         return value == (T)RenderConfig::DONT_CARE ? defaultValue : value;
111 }
112
113 } // glu
114
115 #endif // _GLURENDERCONFIG_HPP