• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*-------------------------------------------------------------------------
2  * drawElements Quality Program EGL Utilities
3  * ------------------------------------------
4  *
5  * Copyright 2014 The Android Open Source Project
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  *//*!
20  * \file
21  * \brief EGL String Utilities.
22  *//*--------------------------------------------------------------------*/
23 
24 #include "egluStrUtil.hpp"
25 #include "eglwEnums.hpp"
26 
27 namespace eglu
28 {
29 
operator <<(std::ostream & str,const ConfigAttribValueFmt & attribFmt)30 std::ostream& operator<< (std::ostream& str, const ConfigAttribValueFmt& attribFmt)
31 {
32 	switch (attribFmt.attribute)
33 	{
34 		case EGL_COLOR_BUFFER_TYPE:
35 			return str << getColorBufferTypeStr(attribFmt.value);
36 
37 		case EGL_CONFIG_CAVEAT:
38 			return str << getConfigCaveatStr(attribFmt.value);
39 
40 		case EGL_CONFORMANT:
41 		case EGL_RENDERABLE_TYPE:
42 			return str << getAPIBitsStr(attribFmt.value);
43 
44 		case EGL_SURFACE_TYPE:
45 			return str << getSurfaceBitsStr(attribFmt.value);
46 
47 		case EGL_MATCH_NATIVE_PIXMAP:
48 			if (attribFmt.value == EGL_NONE)
49 				return str << "EGL_NONE";
50 			else
51 				return str << tcu::toHex(attribFmt.value);
52 
53 		case EGL_TRANSPARENT_TYPE:
54 			return str << getTransparentTypeStr(attribFmt.value);
55 
56 		case EGL_BIND_TO_TEXTURE_RGB:
57 		case EGL_BIND_TO_TEXTURE_RGBA:
58 		case EGL_NATIVE_RENDERABLE:
59 		case EGL_RECORDABLE_ANDROID:
60 			return str << getBoolDontCareStr(attribFmt.value);
61 
62 		case EGL_ALPHA_MASK_SIZE:
63 		case EGL_ALPHA_SIZE:
64 		case EGL_BLUE_SIZE:
65 		case EGL_BUFFER_SIZE:
66 		case EGL_CONFIG_ID:
67 		case EGL_DEPTH_SIZE:
68 		case EGL_GREEN_SIZE:
69 		case EGL_LEVEL:
70 		case EGL_LUMINANCE_SIZE:
71 		case EGL_MAX_SWAP_INTERVAL:
72 		case EGL_MIN_SWAP_INTERVAL:
73 		case EGL_RED_SIZE:
74 		case EGL_SAMPLE_BUFFERS:
75 		case EGL_SAMPLES:
76 		case EGL_STENCIL_SIZE:
77 		case EGL_TRANSPARENT_RED_VALUE:
78 		case EGL_TRANSPARENT_GREEN_VALUE:
79 		case EGL_TRANSPARENT_BLUE_VALUE:
80 			return str << (int)attribFmt.value;
81 
82 		default:
83 			return str << tcu::toHex(attribFmt.value);
84 	}
85 }
86 
operator <<(std::ostream & str,const ContextAttribValueFmt & attribFmt)87 std::ostream& operator<< (std::ostream& str, const ContextAttribValueFmt& attribFmt)
88 {
89 	switch (attribFmt.attribute)
90 	{
91 		case EGL_CONFIG_ID:
92 		case EGL_CONTEXT_CLIENT_VERSION:
93 			return str << (int)attribFmt.value;
94 
95 		case EGL_CONTEXT_CLIENT_TYPE:
96 			return str << getAPIStr(attribFmt.value);
97 
98 		case EGL_RENDER_BUFFER:
99 			return str << getRenderBufferStr(attribFmt.value);
100 
101 		default:
102 			return str << tcu::toHex(attribFmt.value);
103 	}
104 }
105 
operator <<(std::ostream & str,const SurfaceAttribValueFmt & attribFmt)106 std::ostream& operator<< (std::ostream& str, const SurfaceAttribValueFmt& attribFmt)
107 {
108 	switch (attribFmt.attribute)
109 	{
110 		case EGL_CONFIG_ID:
111 		case EGL_WIDTH:
112 		case EGL_HEIGHT:
113 		case EGL_HORIZONTAL_RESOLUTION:
114 		case EGL_VERTICAL_RESOLUTION:
115 		case EGL_PIXEL_ASPECT_RATIO:
116 			return str << (int)attribFmt.value;
117 
118 		case EGL_LARGEST_PBUFFER:
119 		case EGL_MIPMAP_TEXTURE:
120 			return str << getBoolDontCareStr(attribFmt.value);
121 
122 		case EGL_MULTISAMPLE_RESOLVE:
123 			return str << getMultisampleResolveStr(attribFmt.value);
124 
125 		case EGL_RENDER_BUFFER:
126 			return str << getRenderBufferStr(attribFmt.value);
127 
128 		case EGL_SWAP_BEHAVIOR:
129 			return str << getSwapBehaviorStr(attribFmt.value);
130 
131 		case EGL_TEXTURE_FORMAT:
132 			return str << getTextureFormatStr(attribFmt.value);
133 
134 		case EGL_TEXTURE_TARGET:
135 			return str << getTextureTargetStr(attribFmt.value);
136 
137 		case EGL_ALPHA_FORMAT:
138 			return str << getAlphaFormatStr(attribFmt.value);
139 
140 		case EGL_COLORSPACE:
141 			return str << getColorspaceStr(attribFmt.value);
142 
143 		default:
144 			return str << tcu::toHex(attribFmt.value);
145 	}
146 }
147 
operator <<(std::ostream & str,const ConfigAttribListFmt & fmt)148 std::ostream& operator<< (std::ostream& str, const ConfigAttribListFmt& fmt)
149 {
150 	int pos = 0;
151 
152 	str << "{ ";
153 
154 	for (;;)
155 	{
156 		int attrib = fmt.attribs[pos];
157 
158 		if (pos != 0)
159 			str << ", ";
160 
161 		if (attrib == EGL_NONE)
162 		{
163 			// Terminate.
164 			str << "EGL_NONE";
165 			break;
166 		}
167 
168 		const char*	attribName = getConfigAttribName(attrib);
169 
170 		if (attribName)
171 		{
172 			// Valid attribute, print value.
173 			str << attribName << ", " << getConfigAttribValueStr(attrib, fmt.attribs[pos+1]);
174 			pos += 2;
175 		}
176 		else
177 		{
178 			// Invalid attribute. Terminate parsing.
179 			str << tcu::toHex(attrib) << ", ???";
180 			break;
181 		}
182 	}
183 
184 	str << " }";
185 	return str;
186 }
187 
operator <<(std::ostream & str,const SurfaceAttribListFmt & fmt)188 std::ostream& operator<< (std::ostream& str, const SurfaceAttribListFmt& fmt)
189 {
190 	int pos = 0;
191 
192 	str << "{ ";
193 
194 	for (;;)
195 	{
196 		int attrib = fmt.attribs[pos];
197 
198 		if (pos != 0)
199 			str << ", ";
200 
201 		if (attrib == EGL_NONE)
202 		{
203 			// Terminate.
204 			str << "EGL_NONE";
205 			break;
206 		}
207 
208 		const char*	attribName = getSurfaceAttribName(attrib);
209 
210 		if (attribName)
211 		{
212 			// Valid attribute, print value.
213 			str << attribName << ", " << getSurfaceAttribValueStr(attrib, fmt.attribs[pos+1]);
214 			pos += 2;
215 		}
216 		else
217 		{
218 			// Invalid attribute. Terminate parsing.
219 			str << tcu::toHex(attrib) << ", ???";
220 			break;
221 		}
222 	}
223 
224 	str << " }";
225 	return str;
226 }
227 
operator <<(std::ostream & str,const ContextAttribListFmt & fmt)228 std::ostream& operator<< (std::ostream& str, const ContextAttribListFmt& fmt)
229 {
230 	int pos = 0;
231 
232 	str << "{ ";
233 
234 	for (;;)
235 	{
236 		int attrib = fmt.attribs[pos];
237 
238 		if (pos != 0)
239 			str << ", ";
240 
241 		if (attrib == EGL_NONE)
242 		{
243 			// Terminate.
244 			str << "EGL_NONE";
245 			break;
246 		}
247 
248 		const char*	attribName = getContextAttribName(attrib);
249 
250 		if (attribName)
251 		{
252 			// Valid attribute, print value.
253 			str << attribName << ", " << getContextAttribValueStr(attrib, fmt.attribs[pos+1]);
254 			pos += 2;
255 		}
256 		else
257 		{
258 			// Invalid attribute. Terminate parsing.
259 			str << tcu::toHex(attrib) << ", ???";
260 			break;
261 		}
262 	}
263 
264 	str << " }";
265 	return str;
266 }
267 
268 #include "egluStrUtil.inl"
269 
270 } // eglu
271