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
30namespace eglw
31{
32class Library;
33}
34
35namespace eglu
36{
37
38class ConfigInfo
39{
40public:
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
132void	queryCoreConfigInfo	(const eglw::Library& egl, eglw::EGLDisplay display, eglw::EGLConfig config, ConfigInfo* dst);
133void	queryExtConfigInfo	(const eglw::Library& egl, eglw::EGLDisplay display, eglw::EGLConfig config, ConfigInfo* dst);
134
135} // eglu
136
137#endif // _EGLUCONFIGINFO_HPP
138