xref: /aosp_15_r20/external/deqp/framework/egl/egluStrUtil.cpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
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 } // namespace eglu
271