xref: /aosp_15_r20/frameworks/native/opengl/tests/configdump/configdump.cpp (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1*38e8c45fSAndroid Build Coastguard Worker /*
2*38e8c45fSAndroid Build Coastguard Worker ** Copyright 2010, The Android Open Source Project
3*38e8c45fSAndroid Build Coastguard Worker **
4*38e8c45fSAndroid Build Coastguard Worker ** Licensed under the Apache License, Version 2.0 (the "License");
5*38e8c45fSAndroid Build Coastguard Worker ** you may not use this file except in compliance with the License.
6*38e8c45fSAndroid Build Coastguard Worker ** You may obtain a copy of the License at
7*38e8c45fSAndroid Build Coastguard Worker **
8*38e8c45fSAndroid Build Coastguard Worker **     http://www.apache.org/licenses/LICENSE-2.0
9*38e8c45fSAndroid Build Coastguard Worker **
10*38e8c45fSAndroid Build Coastguard Worker ** Unless required by applicable law or agreed to in writing, software
11*38e8c45fSAndroid Build Coastguard Worker ** distributed under the License is distributed on an "AS IS" BASIS,
12*38e8c45fSAndroid Build Coastguard Worker ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*38e8c45fSAndroid Build Coastguard Worker ** See the License for the specific language governing permissions and
14*38e8c45fSAndroid Build Coastguard Worker ** limitations under the License.
15*38e8c45fSAndroid Build Coastguard Worker */
16*38e8c45fSAndroid Build Coastguard Worker 
17*38e8c45fSAndroid Build Coastguard Worker #include <stdlib.h>
18*38e8c45fSAndroid Build Coastguard Worker #include <stdio.h>
19*38e8c45fSAndroid Build Coastguard Worker 
20*38e8c45fSAndroid Build Coastguard Worker #include <EGL/egl.h>
21*38e8c45fSAndroid Build Coastguard Worker #include <EGL/eglext.h>
22*38e8c45fSAndroid Build Coastguard Worker 
23*38e8c45fSAndroid Build Coastguard Worker #define ATTRIBUTE(_attr) { _attr, #_attr }
24*38e8c45fSAndroid Build Coastguard Worker 
25*38e8c45fSAndroid Build Coastguard Worker struct Attribute {
26*38e8c45fSAndroid Build Coastguard Worker     EGLint attribute;
27*38e8c45fSAndroid Build Coastguard Worker     char const* name;
28*38e8c45fSAndroid Build Coastguard Worker };
29*38e8c45fSAndroid Build Coastguard Worker 
30*38e8c45fSAndroid Build Coastguard Worker // clang-format off
31*38e8c45fSAndroid Build Coastguard Worker Attribute attributes[] = {
32*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_BUFFER_SIZE ),
33*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_ALPHA_SIZE ),
34*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_BLUE_SIZE ),
35*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_GREEN_SIZE ),
36*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_RED_SIZE ),
37*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_DEPTH_SIZE ),
38*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_STENCIL_SIZE ),
39*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_CONFIG_CAVEAT ),
40*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_CONFIG_ID ),
41*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_LEVEL ),
42*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_MAX_PBUFFER_HEIGHT ),
43*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_MAX_PBUFFER_WIDTH ),
44*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_MAX_PBUFFER_PIXELS ),
45*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_NATIVE_RENDERABLE ),
46*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_NATIVE_VISUAL_ID ),
47*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_NATIVE_VISUAL_TYPE ),
48*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_SAMPLES ),
49*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_SAMPLE_BUFFERS ),
50*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_SURFACE_TYPE ),
51*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_TRANSPARENT_TYPE ),
52*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_TRANSPARENT_BLUE_VALUE ),
53*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_TRANSPARENT_GREEN_VALUE ),
54*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_TRANSPARENT_RED_VALUE ),
55*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_BIND_TO_TEXTURE_RGB ),
56*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_BIND_TO_TEXTURE_RGBA ),
57*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_MIN_SWAP_INTERVAL ),
58*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_MAX_SWAP_INTERVAL ),
59*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_LUMINANCE_SIZE ),
60*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_ALPHA_MASK_SIZE ),
61*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_COLOR_BUFFER_TYPE ),
62*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_RENDERABLE_TYPE ),
63*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_MATCH_NATIVE_PIXMAP ),
64*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_CONFORMANT ),
65*38e8c45fSAndroid Build Coastguard Worker         ATTRIBUTE( EGL_COLOR_COMPONENT_TYPE_EXT ),
66*38e8c45fSAndroid Build Coastguard Worker };
67*38e8c45fSAndroid Build Coastguard Worker // clang-format on
68*38e8c45fSAndroid Build Coastguard Worker 
main(int,char **)69*38e8c45fSAndroid Build Coastguard Worker int main(int /*argc*/, char** /*argv*/) {
70*38e8c45fSAndroid Build Coastguard Worker     EGLConfig* configs;
71*38e8c45fSAndroid Build Coastguard Worker     EGLint n;
72*38e8c45fSAndroid Build Coastguard Worker 
73*38e8c45fSAndroid Build Coastguard Worker     EGLDisplay dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
74*38e8c45fSAndroid Build Coastguard Worker     eglInitialize(dpy, 0, 0);
75*38e8c45fSAndroid Build Coastguard Worker     eglGetConfigs(dpy, NULL, 0, &n);
76*38e8c45fSAndroid Build Coastguard Worker     configs = new EGLConfig[n];
77*38e8c45fSAndroid Build Coastguard Worker     eglGetConfigs(dpy, configs, n, &n);
78*38e8c45fSAndroid Build Coastguard Worker 
79*38e8c45fSAndroid Build Coastguard Worker     for (EGLint i=0 ; i<n ; i++) {
80*38e8c45fSAndroid Build Coastguard Worker         printf("EGLConfig[%d]\n", i);
81*38e8c45fSAndroid Build Coastguard Worker         for (unsigned attr = 0 ; attr<sizeof(attributes)/sizeof(Attribute) ; attr++) {
82*38e8c45fSAndroid Build Coastguard Worker             EGLint value;
83*38e8c45fSAndroid Build Coastguard Worker             eglGetConfigAttrib(dpy, configs[i], attributes[attr].attribute, &value);
84*38e8c45fSAndroid Build Coastguard Worker             printf("\t%-32s: %10d (0x%08x)\n", attributes[attr].name, value, value);
85*38e8c45fSAndroid Build Coastguard Worker         }
86*38e8c45fSAndroid Build Coastguard Worker     }
87*38e8c45fSAndroid Build Coastguard Worker 
88*38e8c45fSAndroid Build Coastguard Worker     delete [] configs;
89*38e8c45fSAndroid Build Coastguard Worker     eglTerminate(dpy);
90*38e8c45fSAndroid Build Coastguard Worker     return 0;
91*38e8c45fSAndroid Build Coastguard Worker }
92