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