116a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian/* 216a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** Copyright 2010, The Android Open Source Project 316a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** 416a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** Licensed under the Apache License, Version 2.0 (the "License"); 516a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** you may not use this file except in compliance with the License. 616a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** You may obtain a copy of the License at 716a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** 816a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** http://www.apache.org/licenses/LICENSE-2.0 916a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** 1016a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** Unless required by applicable law or agreed to in writing, software 1116a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** distributed under the License is distributed on an "AS IS" BASIS, 1216a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1316a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** See the License for the specific language governing permissions and 1416a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian** limitations under the License. 1516a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian*/ 1616a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 1716a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian#include <stdlib.h> 1816a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian#include <stdio.h> 1916a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 2016a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian#include <EGL/egl.h> 2116a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 2216a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian#define ATTRIBUTE(_attr) { _attr, #_attr } 2316a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 2416a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopianstruct Attribute { 2516a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian EGLint attribute; 2616a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian char const* name; 2716a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian}; 2816a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 2916a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias AgopianAttribute attributes[] = { 3016a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_BUFFER_SIZE ), 3116a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_ALPHA_SIZE ), 3216a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_BLUE_SIZE ), 3316a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_GREEN_SIZE ), 3416a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_RED_SIZE ), 3516a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_DEPTH_SIZE ), 3616a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_STENCIL_SIZE ), 3716a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_CONFIG_CAVEAT ), 3816a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_CONFIG_ID ), 3916a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_LEVEL ), 4016a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_MAX_PBUFFER_HEIGHT ), 4116a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_MAX_PBUFFER_WIDTH ), 4216a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_MAX_PBUFFER_PIXELS ), 4316a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_NATIVE_RENDERABLE ), 4416a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_NATIVE_VISUAL_ID ), 4516a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_NATIVE_VISUAL_TYPE ), 4616a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_SAMPLES ), 4716a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_SAMPLE_BUFFERS ), 4816a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_SURFACE_TYPE ), 4916a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_TRANSPARENT_TYPE ), 5016a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_TRANSPARENT_BLUE_VALUE ), 5116a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_TRANSPARENT_GREEN_VALUE ), 5216a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_TRANSPARENT_RED_VALUE ), 5316a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_BIND_TO_TEXTURE_RGB ), 5416a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_BIND_TO_TEXTURE_RGBA ), 5516a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_MIN_SWAP_INTERVAL ), 5616a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_MAX_SWAP_INTERVAL ), 5716a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_LUMINANCE_SIZE ), 5816a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_ALPHA_MASK_SIZE ), 5916a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_COLOR_BUFFER_TYPE ), 6016a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_RENDERABLE_TYPE ), 6116a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_MATCH_NATIVE_PIXMAP ), 6216a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian ATTRIBUTE( EGL_CONFORMANT ), 6316a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian}; 6416a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 6516a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 6616a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopianint main(int argc, char** argv) 6716a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian{ 6816a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian EGLConfig* configs; 6916a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian EGLint n; 7016a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 7116a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian EGLDisplay dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); 7216a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian eglInitialize(dpy, 0, 0); 7316a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian eglGetConfigs(dpy, NULL, 0, &n); 7416a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian configs = new EGLConfig[n]; 7516a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian eglGetConfigs(dpy, configs, n, &n); 7616a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 7716a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian for (EGLint i=0 ; i<n ; i++) { 7816a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian printf("EGLConfig[%d]\n", i); 7916a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian for (int attr = 0 ; attr<sizeof(attributes)/sizeof(Attribute) ; attr++) { 8016a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian EGLint value; 8116a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian eglGetConfigAttrib(dpy, configs[i], attributes[attr].attribute, &value); 8216a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian printf("\t%-32s: %10d (0x%08x)\n", attributes[attr].name, value, value); 8316a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian } 8416a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian } 8516a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian 8616a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian delete [] configs; 8716a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian eglTerminate(dpy); 8816a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian return 0; 8916a3e39cc007ebf7c7ee38d7464f99efed3e2574Mathias Agopian} 90