Merge vk-gl-cts/opengl-es-cts-3.2.3 into vk-gl-cts/opengl-es-cts-3.2.4
[platform/upstream/VK-GL-CTS.git] / framework / egl / egluConfigInfo.hpp
1 #ifndef _EGLUCONFIGINFO_HPP
2 #define _EGLUCONFIGINFO_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program Tester Core
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 EGL config info.
24  *//*--------------------------------------------------------------------*/
25
26 #include "tcuDefs.hpp"
27 #include "eglwDefs.hpp"
28 #include "eglwEnums.hpp"
29
30 namespace eglw
31 {
32 class Library;
33 }
34
35 namespace eglu
36 {
37
38 class ConfigInfo
39 {
40 public:
41         // Core attributes
42         deInt32                 bufferSize;
43         deInt32                 redSize;
44         deInt32                 greenSize;
45         deInt32                 blueSize;
46         deInt32                 luminanceSize;
47         deInt32                 alphaSize;
48         deInt32                 alphaMaskSize;
49         deUint32                bindToTextureRGB;
50         deUint32                bindToTextureRGBA;
51         deUint32                colorBufferType;
52         deUint32                configCaveat;
53         deInt32                 configId;
54         deInt32                 conformant;
55         deInt32                 depthSize;
56         deInt32                 level;
57         deInt32                 maxPbufferWidth;
58         deInt32                 maxPbufferHeight;
59         deInt32                 maxSwapInterval;
60         deInt32                 minSwapInterval;
61         deUint32                nativeRenderable;
62         deInt32                 nativeVisualId;
63         deInt32                 nativeVisualType;
64         deInt32                 renderableType;
65         deInt32                 sampleBuffers;
66         deInt32                 samples;
67         deInt32                 stencilSize;
68         deInt32                 surfaceType;
69         deUint32                transparentType;
70         deInt32                 transparentRedValue;
71         deInt32                 transparentGreenValue;
72         deInt32                 transparentBlueValue;
73
74         // Extension attributes - set by queryExtConfigInfo()
75
76         // EGL_EXT_yuv_surface
77         deUint32                yuvOrder;
78         deInt32                 yuvNumberOfPlanes;
79         deUint32                yuvSubsample;
80         deUint32                yuvDepthRange;
81         deUint32                yuvCscStandard;
82         deInt32                 yuvPlaneBpp;
83
84         // EGL_EXT_pixel_format_float
85         deUint32                colorComponentType;
86
87         ConfigInfo (void)
88                 : bufferSize                    (0)
89                 , redSize                               (0)
90                 , greenSize                             (0)
91                 , blueSize                              (0)
92                 , luminanceSize                 (0)
93                 , alphaSize                             (0)
94                 , alphaMaskSize                 (0)
95                 , bindToTextureRGB              (0)
96                 , bindToTextureRGBA             (0)
97                 , colorBufferType               (0)
98                 , configCaveat                  (0)
99                 , configId                              (0)
100                 , conformant                    (0)
101                 , depthSize                             (0)
102                 , level                                 (0)
103                 , maxPbufferWidth               (0)
104                 , maxPbufferHeight              (0)
105                 , maxSwapInterval               (0)
106                 , minSwapInterval               (0)
107                 , nativeRenderable              (0)
108                 , nativeVisualId                (0)
109                 , nativeVisualType              (0)
110                 , renderableType                (0)
111                 , sampleBuffers                 (0)
112                 , samples                               (0)
113                 , stencilSize                   (0)
114                 , surfaceType                   (0)
115                 , transparentType               (0)
116                 , transparentRedValue   (0)
117                 , transparentGreenValue (0)
118                 , transparentBlueValue  (0)
119                 , yuvOrder                              (EGL_NONE)
120                 , yuvNumberOfPlanes             (0)
121                 , yuvSubsample                  (EGL_NONE)
122                 , yuvDepthRange                 (EGL_NONE)
123                 , yuvCscStandard                (EGL_NONE)
124                 , yuvPlaneBpp                   (EGL_YUV_PLANE_BPP_0_EXT)
125                 , colorComponentType    (EGL_NONE)
126         {
127         }
128
129         deInt32 getAttribute (deUint32 attribute) const;
130 };
131
132 void    queryCoreConfigInfo     (const eglw::Library& egl, eglw::EGLDisplay display, eglw::EGLConfig config, ConfigInfo* dst);
133 void    queryExtConfigInfo      (const eglw::Library& egl, eglw::EGLDisplay display, eglw::EGLConfig config, ConfigInfo* dst);
134
135 } // eglu
136
137 #endif // _EGLUCONFIGINFO_HPP