1cef7893435aa41160dd1255c43cb8498279738ccChris Craik/************************************************************************** 2cef7893435aa41160dd1255c43cb8498279738ccChris Craik * 3cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. 4cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com> 5cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Copyright 2010-2011 LunarG, Inc. 6cef7893435aa41160dd1255c43cb8498279738ccChris Craik * All Rights Reserved. 7cef7893435aa41160dd1255c43cb8498279738ccChris Craik * 8cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Permission is hereby granted, free of charge, to any person obtaining a 9cef7893435aa41160dd1255c43cb8498279738ccChris Craik * copy of this software and associated documentation files (the 10cef7893435aa41160dd1255c43cb8498279738ccChris Craik * "Software"), to deal in the Software without restriction, including 11cef7893435aa41160dd1255c43cb8498279738ccChris Craik * without limitation the rights to use, copy, modify, merge, publish, 12cef7893435aa41160dd1255c43cb8498279738ccChris Craik * distribute, sub license, and/or sell copies of the Software, and to 13cef7893435aa41160dd1255c43cb8498279738ccChris Craik * permit persons to whom the Software is furnished to do so, subject to 14cef7893435aa41160dd1255c43cb8498279738ccChris Craik * the following conditions: 15cef7893435aa41160dd1255c43cb8498279738ccChris Craik * 16cef7893435aa41160dd1255c43cb8498279738ccChris Craik * The above copyright notice and this permission notice (including the 17cef7893435aa41160dd1255c43cb8498279738ccChris Craik * next paragraph) shall be included in all copies or substantial portions 18cef7893435aa41160dd1255c43cb8498279738ccChris Craik * of the Software. 19cef7893435aa41160dd1255c43cb8498279738ccChris Craik * 20cef7893435aa41160dd1255c43cb8498279738ccChris Craik * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21cef7893435aa41160dd1255c43cb8498279738ccChris Craik * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22cef7893435aa41160dd1255c43cb8498279738ccChris Craik * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 23cef7893435aa41160dd1255c43cb8498279738ccChris Craik * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24cef7893435aa41160dd1255c43cb8498279738ccChris Craik * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 25cef7893435aa41160dd1255c43cb8498279738ccChris Craik * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 26cef7893435aa41160dd1255c43cb8498279738ccChris Craik * DEALINGS IN THE SOFTWARE. 27cef7893435aa41160dd1255c43cb8498279738ccChris Craik * 28cef7893435aa41160dd1255c43cb8498279738ccChris Craik **************************************************************************/ 29cef7893435aa41160dd1255c43cb8498279738ccChris Craik 30cef7893435aa41160dd1255c43cb8498279738ccChris Craik 31cef7893435aa41160dd1255c43cb8498279738ccChris Craik#ifndef EGLCONFIG_INCLUDED 32cef7893435aa41160dd1255c43cb8498279738ccChris Craik#define EGLCONFIG_INCLUDED 33cef7893435aa41160dd1255c43cb8498279738ccChris Craik 34cef7893435aa41160dd1255c43cb8498279738ccChris Craik 35cef7893435aa41160dd1255c43cb8498279738ccChris Craik#include <assert.h> 36cef7893435aa41160dd1255c43cb8498279738ccChris Craik#include <stddef.h> 37cef7893435aa41160dd1255c43cb8498279738ccChris Craik#include "egltypedefs.h" 38cef7893435aa41160dd1255c43cb8498279738ccChris Craik 39cef7893435aa41160dd1255c43cb8498279738ccChris Craik 40cef7893435aa41160dd1255c43cb8498279738ccChris Craik/* update _eglValidationTable and _eglOffsetOfConfig before updating this 41cef7893435aa41160dd1255c43cb8498279738ccChris Craik * struct */ 42cef7893435aa41160dd1255c43cb8498279738ccChris Craikstruct _egl_config 43cef7893435aa41160dd1255c43cb8498279738ccChris Craik{ 44cef7893435aa41160dd1255c43cb8498279738ccChris Craik _EGLDisplay *Display; 45cef7893435aa41160dd1255c43cb8498279738ccChris Craik 46cef7893435aa41160dd1255c43cb8498279738ccChris Craik /* core */ 47cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint BufferSize; 48cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint AlphaSize; 49cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint BlueSize; 50cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint GreenSize; 51cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint RedSize; 52cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint DepthSize; 53cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint StencilSize; 54cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint ConfigCaveat; 55cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint ConfigID; 56cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint Level; 57cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint MaxPbufferHeight; 58cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint MaxPbufferPixels; 59cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint MaxPbufferWidth; 60cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint NativeRenderable; 61cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint NativeVisualID; 62cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint NativeVisualType; 63cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint Samples; 64cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint SampleBuffers; 65cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint SurfaceType; 66cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint TransparentType; 67cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint TransparentBlueValue; 68cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint TransparentGreenValue; 69cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint TransparentRedValue; 70cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint BindToTextureRGB; 71cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint BindToTextureRGBA; 72cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint MinSwapInterval; 73cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint MaxSwapInterval; 74cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint LuminanceSize; 75cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint AlphaMaskSize; 76cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint ColorBufferType; 77cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint RenderableType; 78cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint MatchNativePixmap; 79cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint Conformant; 80cef7893435aa41160dd1255c43cb8498279738ccChris Craik 81cef7893435aa41160dd1255c43cb8498279738ccChris Craik /* extensions */ 82cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint YInvertedNOK; 83cef7893435aa41160dd1255c43cb8498279738ccChris Craik}; 84cef7893435aa41160dd1255c43cb8498279738ccChris Craik 85cef7893435aa41160dd1255c43cb8498279738ccChris Craik 86cef7893435aa41160dd1255c43cb8498279738ccChris Craik/** 87cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Map an EGL attribute enum to the offset of the member in _EGLConfig. 88cef7893435aa41160dd1255c43cb8498279738ccChris Craik */ 89cef7893435aa41160dd1255c43cb8498279738ccChris Craikstatic INLINE EGLint 90cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglOffsetOfConfig(EGLint attr) 91cef7893435aa41160dd1255c43cb8498279738ccChris Craik{ 92cef7893435aa41160dd1255c43cb8498279738ccChris Craik switch (attr) { 93cef7893435aa41160dd1255c43cb8498279738ccChris Craik#define ATTRIB_MAP(attr, memb) case attr: return offsetof(_EGLConfig, memb) 94cef7893435aa41160dd1255c43cb8498279738ccChris Craik /* core */ 95cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_BUFFER_SIZE, BufferSize); 96cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_ALPHA_SIZE, AlphaSize); 97cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_BLUE_SIZE, BlueSize); 98cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_GREEN_SIZE, GreenSize); 99cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_RED_SIZE, RedSize); 100cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_DEPTH_SIZE, DepthSize); 101cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_STENCIL_SIZE, StencilSize); 102cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_CONFIG_CAVEAT, ConfigCaveat); 103cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_CONFIG_ID, ConfigID); 104cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_LEVEL, Level); 105cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_MAX_PBUFFER_HEIGHT, MaxPbufferHeight); 106cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_MAX_PBUFFER_PIXELS, MaxPbufferPixels); 107cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_MAX_PBUFFER_WIDTH, MaxPbufferWidth); 108cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_NATIVE_RENDERABLE, NativeRenderable); 109cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_NATIVE_VISUAL_ID, NativeVisualID); 110cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_NATIVE_VISUAL_TYPE, NativeVisualType); 111cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_SAMPLES, Samples); 112cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_SAMPLE_BUFFERS, SampleBuffers); 113cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_SURFACE_TYPE, SurfaceType); 114cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_TRANSPARENT_TYPE, TransparentType); 115cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_TRANSPARENT_BLUE_VALUE, TransparentBlueValue); 116cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_TRANSPARENT_GREEN_VALUE, TransparentGreenValue); 117cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_TRANSPARENT_RED_VALUE, TransparentRedValue); 118cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_BIND_TO_TEXTURE_RGB, BindToTextureRGB); 119cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_BIND_TO_TEXTURE_RGBA, BindToTextureRGBA); 120cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_MIN_SWAP_INTERVAL, MinSwapInterval); 121cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_MAX_SWAP_INTERVAL, MaxSwapInterval); 122cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_LUMINANCE_SIZE, LuminanceSize); 123cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_ALPHA_MASK_SIZE, AlphaMaskSize); 124cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_COLOR_BUFFER_TYPE, ColorBufferType); 125cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_RENDERABLE_TYPE, RenderableType); 126cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_MATCH_NATIVE_PIXMAP, MatchNativePixmap); 127cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_CONFORMANT, Conformant); 128cef7893435aa41160dd1255c43cb8498279738ccChris Craik /* extensions */ 129cef7893435aa41160dd1255c43cb8498279738ccChris Craik ATTRIB_MAP(EGL_Y_INVERTED_NOK, YInvertedNOK); 130cef7893435aa41160dd1255c43cb8498279738ccChris Craik#undef ATTRIB_MAP 131cef7893435aa41160dd1255c43cb8498279738ccChris Craik default: 132cef7893435aa41160dd1255c43cb8498279738ccChris Craik return -1; 133cef7893435aa41160dd1255c43cb8498279738ccChris Craik } 134cef7893435aa41160dd1255c43cb8498279738ccChris Craik} 135cef7893435aa41160dd1255c43cb8498279738ccChris Craik 136cef7893435aa41160dd1255c43cb8498279738ccChris Craik 137cef7893435aa41160dd1255c43cb8498279738ccChris Craik/** 138cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Update a config for a given key. 139cef7893435aa41160dd1255c43cb8498279738ccChris Craik * 140cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Note that a valid key is not necessarily a valid attribute. There are gaps 141cef7893435aa41160dd1255c43cb8498279738ccChris Craik * in the attribute enums. The separation is to catch application errors. 142cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Drivers should never set a key that is an invalid attribute. 143cef7893435aa41160dd1255c43cb8498279738ccChris Craik */ 144cef7893435aa41160dd1255c43cb8498279738ccChris Craikstatic INLINE void 145cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglSetConfigKey(_EGLConfig *conf, EGLint key, EGLint val) 146cef7893435aa41160dd1255c43cb8498279738ccChris Craik{ 147cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint offset = _eglOffsetOfConfig(key); 148cef7893435aa41160dd1255c43cb8498279738ccChris Craik assert(offset >= 0); 149cef7893435aa41160dd1255c43cb8498279738ccChris Craik *((EGLint *) ((char *) conf + offset)) = val; 150cef7893435aa41160dd1255c43cb8498279738ccChris Craik} 151cef7893435aa41160dd1255c43cb8498279738ccChris Craik 152cef7893435aa41160dd1255c43cb8498279738ccChris Craik 153cef7893435aa41160dd1255c43cb8498279738ccChris Craik/** 154cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Return the value for a given key. 155cef7893435aa41160dd1255c43cb8498279738ccChris Craik */ 156cef7893435aa41160dd1255c43cb8498279738ccChris Craikstatic INLINE EGLint 157cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglGetConfigKey(const _EGLConfig *conf, EGLint key) 158cef7893435aa41160dd1255c43cb8498279738ccChris Craik{ 159cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint offset = _eglOffsetOfConfig(key); 160cef7893435aa41160dd1255c43cb8498279738ccChris Craik assert(offset >= 0); 161cef7893435aa41160dd1255c43cb8498279738ccChris Craik return *((EGLint *) ((char *) conf + offset)); 162cef7893435aa41160dd1255c43cb8498279738ccChris Craik} 163cef7893435aa41160dd1255c43cb8498279738ccChris Craik 164cef7893435aa41160dd1255c43cb8498279738ccChris Craik 165cef7893435aa41160dd1255c43cb8498279738ccChris CraikPUBLIC void 166cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglInitConfig(_EGLConfig *config, _EGLDisplay *dpy, EGLint id); 167cef7893435aa41160dd1255c43cb8498279738ccChris Craik 168cef7893435aa41160dd1255c43cb8498279738ccChris Craik 169cef7893435aa41160dd1255c43cb8498279738ccChris CraikPUBLIC EGLConfig 170cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglLinkConfig(_EGLConfig *conf); 171cef7893435aa41160dd1255c43cb8498279738ccChris Craik 172cef7893435aa41160dd1255c43cb8498279738ccChris Craik 173cef7893435aa41160dd1255c43cb8498279738ccChris Craikextern _EGLConfig * 174cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy); 175cef7893435aa41160dd1255c43cb8498279738ccChris Craik 176cef7893435aa41160dd1255c43cb8498279738ccChris Craik 177cef7893435aa41160dd1255c43cb8498279738ccChris Craik/** 178cef7893435aa41160dd1255c43cb8498279738ccChris Craik * Return the handle of a linked config. 179cef7893435aa41160dd1255c43cb8498279738ccChris Craik */ 180cef7893435aa41160dd1255c43cb8498279738ccChris Craikstatic INLINE EGLConfig 181cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglGetConfigHandle(_EGLConfig *conf) 182cef7893435aa41160dd1255c43cb8498279738ccChris Craik{ 183cef7893435aa41160dd1255c43cb8498279738ccChris Craik return (EGLConfig) conf; 184cef7893435aa41160dd1255c43cb8498279738ccChris Craik} 185cef7893435aa41160dd1255c43cb8498279738ccChris Craik 186cef7893435aa41160dd1255c43cb8498279738ccChris Craik 187cef7893435aa41160dd1255c43cb8498279738ccChris CraikPUBLIC EGLBoolean 188cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglValidateConfig(const _EGLConfig *conf, EGLBoolean for_matching); 189cef7893435aa41160dd1255c43cb8498279738ccChris Craik 190cef7893435aa41160dd1255c43cb8498279738ccChris Craik 191cef7893435aa41160dd1255c43cb8498279738ccChris CraikPUBLIC EGLBoolean 192cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglMatchConfig(const _EGLConfig *conf, const _EGLConfig *criteria); 193cef7893435aa41160dd1255c43cb8498279738ccChris Craik 194cef7893435aa41160dd1255c43cb8498279738ccChris Craik 195cef7893435aa41160dd1255c43cb8498279738ccChris CraikPUBLIC EGLBoolean 196cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy, 197cef7893435aa41160dd1255c43cb8498279738ccChris Craik const EGLint *attrib_list); 198cef7893435aa41160dd1255c43cb8498279738ccChris Craik 199cef7893435aa41160dd1255c43cb8498279738ccChris Craik 200cef7893435aa41160dd1255c43cb8498279738ccChris CraikPUBLIC EGLint 201cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglCompareConfigs(const _EGLConfig *conf1, const _EGLConfig *conf2, 202cef7893435aa41160dd1255c43cb8498279738ccChris Craik const _EGLConfig *criteria, EGLBoolean compare_id); 203cef7893435aa41160dd1255c43cb8498279738ccChris Craik 204cef7893435aa41160dd1255c43cb8498279738ccChris Craik 205cef7893435aa41160dd1255c43cb8498279738ccChris CraikPUBLIC EGLBoolean 206cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglFilterConfigArray(_EGLArray *array, EGLConfig *configs, 207cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint config_size, EGLint *num_configs, 208cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLBoolean (*match)(const _EGLConfig *, void *), 209cef7893435aa41160dd1255c43cb8498279738ccChris Craik EGLint (*compare)(const _EGLConfig *, const _EGLConfig *, 210cef7893435aa41160dd1255c43cb8498279738ccChris Craik void *), 211cef7893435aa41160dd1255c43cb8498279738ccChris Craik void *filter_data); 212cef7893435aa41160dd1255c43cb8498279738ccChris Craik 213cef7893435aa41160dd1255c43cb8498279738ccChris Craik 214cef7893435aa41160dd1255c43cb8498279738ccChris Craikextern EGLBoolean 215cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglChooseConfig(_EGLDriver *drv, _EGLDisplay *dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); 216cef7893435aa41160dd1255c43cb8498279738ccChris Craik 217cef7893435aa41160dd1255c43cb8498279738ccChris Craik 218cef7893435aa41160dd1255c43cb8498279738ccChris Craikextern EGLBoolean 219cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglGetConfigAttrib(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, EGLint attribute, EGLint *value); 220cef7893435aa41160dd1255c43cb8498279738ccChris Craik 221cef7893435aa41160dd1255c43cb8498279738ccChris Craik 222cef7893435aa41160dd1255c43cb8498279738ccChris Craikextern EGLBoolean 223cef7893435aa41160dd1255c43cb8498279738ccChris Craik_eglGetConfigs(_EGLDriver *drv, _EGLDisplay *dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); 224cef7893435aa41160dd1255c43cb8498279738ccChris Craik 225cef7893435aa41160dd1255c43cb8498279738ccChris Craik 226cef7893435aa41160dd1255c43cb8498279738ccChris Craik#endif /* EGLCONFIG_INCLUDED */ 227cef7893435aa41160dd1255c43cb8498279738ccChris Craik