1f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu/**************************************************************************
2f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu *
3877128505431adaf817dc8069172ebe4a1cdf5d8José Fonseca * Copyright 2008 VMware, Inc.
4f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
5f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * Copyright 2010-2011 LunarG, Inc.
6f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * All Rights Reserved.
7f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu *
8f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * Permission is hereby granted, free of charge, to any person obtaining a
9f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * copy of this software and associated documentation files (the
10f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * "Software"), to deal in the Software without restriction, including
11f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * without limitation the rights to use, copy, modify, merge, publish,
12f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * distribute, sub license, and/or sell copies of the Software, and to
13f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * permit persons to whom the Software is furnished to do so, subject to
14f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * the following conditions:
15f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu *
16f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * The above copyright notice and this permission notice (including the
17f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * next paragraph) shall be included in all copies or substantial portions
18f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * of the Software.
19f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu *
20f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
23f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu * DEALINGS IN THE SOFTWARE.
27f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu *
28f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu **************************************************************************/
29f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu
30f2001df508fda599a18b3586d2775e970a3db13aChia-I Wu
31adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#ifndef EGLCONFIG_INCLUDED
32adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#define EGLCONFIG_INCLUDED
33adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
34adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
35358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu#include <assert.h>
36601498ae73e654c2de997ea75075613a694d604dJosé Fonseca#include <stddef.h>
377bd1693877e4de9aaf8f6776649fc48db54ec82bEmil Velikov#include "c99_compat.h"
387bd1693877e4de9aaf8f6776649fc48db54ec82bEmil Velikov
39adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#include "egltypedefs.h"
40adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
41adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
428362068c1b28eb2d3e334abc980c4711957d61fdAlexander von Gluck IV#ifdef __cplusplus
438362068c1b28eb2d3e334abc980c4711957d61fdAlexander von Gluck IVextern "C" {
448362068c1b28eb2d3e334abc980c4711957d61fdAlexander von Gluck IV#endif
458362068c1b28eb2d3e334abc980c4711957d61fdAlexander von Gluck IV
46282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu/* update _eglValidationTable and _eglOffsetOfConfig before updating this
47282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu * struct */
48adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulstruct _egl_config
49adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul{
5056822b0812cd500bd54bb7c4b573c54547efb657Chia-I Wu   _EGLDisplay *Display;
51282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu
52282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   /* core */
53282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint BufferSize;
54282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint AlphaSize;
55282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint BlueSize;
56282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint GreenSize;
57282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint RedSize;
58282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint DepthSize;
59282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint StencilSize;
60282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint ConfigCaveat;
61282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint ConfigID;
62282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint Level;
63282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint MaxPbufferHeight;
64282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint MaxPbufferPixels;
65282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint MaxPbufferWidth;
66282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint NativeRenderable;
67282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint NativeVisualID;
68282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint NativeVisualType;
69282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint Samples;
70282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint SampleBuffers;
71282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint SurfaceType;
72282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint TransparentType;
73282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint TransparentBlueValue;
74282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint TransparentGreenValue;
75282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint TransparentRedValue;
76282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint BindToTextureRGB;
77282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint BindToTextureRGBA;
78282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint MinSwapInterval;
79282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint MaxSwapInterval;
80282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint LuminanceSize;
81282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint AlphaMaskSize;
82282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint ColorBufferType;
83282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint RenderableType;
84282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint MatchNativePixmap;
85282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint Conformant;
86282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu
87282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   /* extensions */
88282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint YInvertedNOK;
898975527f58afd4af77966c6e46b485fc04008779Rob Herring   EGLint FramebufferTargetAndroid;
90e21e81aa1885287e438970429d44abb8b3dabb96Rob Herring   EGLint RecordableAndroid;
91adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul};
92adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
93adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
94a37dc17c122ed25365b100aefe4b941df1b526c0Chia-I Wu/**
95282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu * Map an EGL attribute enum to the offset of the member in _EGLConfig.
96358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu */
977bd1693877e4de9aaf8f6776649fc48db54ec82bEmil Velikovstatic inline EGLint
98282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu_eglOffsetOfConfig(EGLint attr)
99358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu{
100282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   switch (attr) {
101282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu#define ATTRIB_MAP(attr, memb) case attr: return offsetof(_EGLConfig, memb)
102282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   /* core */
103282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_BUFFER_SIZE,               BufferSize);
104282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_ALPHA_SIZE,                AlphaSize);
105282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_BLUE_SIZE,                 BlueSize);
106282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_GREEN_SIZE,                GreenSize);
107282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_RED_SIZE,                  RedSize);
108282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_DEPTH_SIZE,                DepthSize);
109282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_STENCIL_SIZE,              StencilSize);
110282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_CONFIG_CAVEAT,             ConfigCaveat);
111282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_CONFIG_ID,                 ConfigID);
112282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_LEVEL,                     Level);
113282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_MAX_PBUFFER_HEIGHT,        MaxPbufferHeight);
114282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_MAX_PBUFFER_PIXELS,        MaxPbufferPixels);
115282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_MAX_PBUFFER_WIDTH,         MaxPbufferWidth);
116282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_NATIVE_RENDERABLE,         NativeRenderable);
117282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_NATIVE_VISUAL_ID,          NativeVisualID);
118282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_NATIVE_VISUAL_TYPE,        NativeVisualType);
119282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_SAMPLES,                   Samples);
120282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_SAMPLE_BUFFERS,            SampleBuffers);
121282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_SURFACE_TYPE,              SurfaceType);
122282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_TRANSPARENT_TYPE,          TransparentType);
123282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_TRANSPARENT_BLUE_VALUE,    TransparentBlueValue);
124282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_TRANSPARENT_GREEN_VALUE,   TransparentGreenValue);
125282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_TRANSPARENT_RED_VALUE,     TransparentRedValue);
126282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_BIND_TO_TEXTURE_RGB,       BindToTextureRGB);
127282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_BIND_TO_TEXTURE_RGBA,      BindToTextureRGBA);
128282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_MIN_SWAP_INTERVAL,         MinSwapInterval);
129282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_MAX_SWAP_INTERVAL,         MaxSwapInterval);
130282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_LUMINANCE_SIZE,            LuminanceSize);
131282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_ALPHA_MASK_SIZE,           AlphaMaskSize);
132282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_COLOR_BUFFER_TYPE,         ColorBufferType);
133282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_RENDERABLE_TYPE,           RenderableType);
134282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_MATCH_NATIVE_PIXMAP,       MatchNativePixmap);
135282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_CONFORMANT,                Conformant);
136282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   /* extensions */
137282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   ATTRIB_MAP(EGL_Y_INVERTED_NOK,            YInvertedNOK);
1388975527f58afd4af77966c6e46b485fc04008779Rob Herring   ATTRIB_MAP(EGL_FRAMEBUFFER_TARGET_ANDROID, FramebufferTargetAndroid);
139e21e81aa1885287e438970429d44abb8b3dabb96Rob Herring   ATTRIB_MAP(EGL_RECORDABLE_ANDROID,        RecordableAndroid);
140282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu#undef ATTRIB_MAP
1415dc0f49084f322dd8ff6eb585212eea8b50e3377Kristian Høgsberg   default:
142358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu      return -1;
1435dc0f49084f322dd8ff6eb585212eea8b50e3377Kristian Høgsberg   }
144358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu}
145358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu
146358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu
147358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu/**
148358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu * Update a config for a given key.
149a37dc17c122ed25365b100aefe4b941df1b526c0Chia-I Wu *
150a37dc17c122ed25365b100aefe4b941df1b526c0Chia-I Wu * Note that a valid key is not necessarily a valid attribute.  There are gaps
151a37dc17c122ed25365b100aefe4b941df1b526c0Chia-I Wu * in the attribute enums.  The separation is to catch application errors.
152a37dc17c122ed25365b100aefe4b941df1b526c0Chia-I Wu * Drivers should never set a key that is an invalid attribute.
153358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu */
1547bd1693877e4de9aaf8f6776649fc48db54ec82bEmil Velikovstatic inline void
155358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu_eglSetConfigKey(_EGLConfig *conf, EGLint key, EGLint val)
156358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu{
157282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint offset = _eglOffsetOfConfig(key);
158282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   assert(offset >= 0);
159282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   *((EGLint *) ((char *) conf + offset)) = val;
160358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu}
161358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu
162358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu
163358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu/**
164358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu * Return the value for a given key.
165358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu */
1667bd1693877e4de9aaf8f6776649fc48db54ec82bEmil Velikovstatic inline EGLint
167358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu_eglGetConfigKey(const _EGLConfig *conf, EGLint key)
168358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu{
169282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   EGLint offset = _eglOffsetOfConfig(key);
170282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   assert(offset >= 0);
171282e514240c8f514da768af6377ae61b9f79c81fChia-I Wu   return *((EGLint *) ((char *) conf + offset));
172358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu}
173358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu
174358c5a8fd1d518930c3e87316a2c743a661ac553Chia-I Wu
175dd438ae34bdbaa6651cdd226d5fec15a892923bfEmil Velikovextern void
176216925ccd122a06505dafae425323e3ac858f80eChia-I Wu_eglInitConfig(_EGLConfig *config, _EGLDisplay *dpy, EGLint id);
177adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
178adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
179dd438ae34bdbaa6651cdd226d5fec15a892923bfEmil Velikovextern EGLConfig
1808a6bdf3979c2dda0efc6771308bf9e5c32bbdab4Chia-I Wu_eglLinkConfig(_EGLConfig *conf);
181721ba15bf4596b2e9589e7656005b387724875c3Brian Paul
182721ba15bf4596b2e9589e7656005b387724875c3Brian Paul
1838a6bdf3979c2dda0efc6771308bf9e5c32bbdab4Chia-I Wuextern _EGLConfig *
1848a6bdf3979c2dda0efc6771308bf9e5c32bbdab4Chia-I Wu_eglLookupConfig(EGLConfig config, _EGLDisplay *dpy);
18556822b0812cd500bd54bb7c4b573c54547efb657Chia-I Wu
18656822b0812cd500bd54bb7c4b573c54547efb657Chia-I Wu
18756822b0812cd500bd54bb7c4b573c54547efb657Chia-I Wu/**
1888a6bdf3979c2dda0efc6771308bf9e5c32bbdab4Chia-I Wu * Return the handle of a linked config.
18956822b0812cd500bd54bb7c4b573c54547efb657Chia-I Wu */
1907bd1693877e4de9aaf8f6776649fc48db54ec82bEmil Velikovstatic inline EGLConfig
19156822b0812cd500bd54bb7c4b573c54547efb657Chia-I Wu_eglGetConfigHandle(_EGLConfig *conf)
19256822b0812cd500bd54bb7c4b573c54547efb657Chia-I Wu{
1938a6bdf3979c2dda0efc6771308bf9e5c32bbdab4Chia-I Wu   return (EGLConfig) conf;
19456822b0812cd500bd54bb7c4b573c54547efb657Chia-I Wu}
195c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul
196c22990c29a5cdff89e6e3914aa565acc88a6a407Brian Paul
197dd438ae34bdbaa6651cdd226d5fec15a892923bfEmil Velikovextern EGLBoolean
19895cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu_eglValidateConfig(const _EGLConfig *conf, EGLBoolean for_matching);
19995cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu
20095cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu
201dd438ae34bdbaa6651cdd226d5fec15a892923bfEmil Velikovextern EGLBoolean
20295cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu_eglMatchConfig(const _EGLConfig *conf, const _EGLConfig *criteria);
20395cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu
20495cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu
205dd438ae34bdbaa6651cdd226d5fec15a892923bfEmil Velikovextern EGLBoolean
2068a6bdf3979c2dda0efc6771308bf9e5c32bbdab4Chia-I Wu_eglParseConfigAttribList(_EGLConfig *conf, _EGLDisplay *dpy,
2078a6bdf3979c2dda0efc6771308bf9e5c32bbdab4Chia-I Wu                          const EGLint *attrib_list);
20895cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu
20995cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu
210dd438ae34bdbaa6651cdd226d5fec15a892923bfEmil Velikovextern EGLint
21195cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu_eglCompareConfigs(const _EGLConfig *conf1, const _EGLConfig *conf2,
21295cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu                   const _EGLConfig *criteria, EGLBoolean compare_id);
21395cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu
21495cdd697e7e72cec1d0fe79c59a8ba7b8cef8571Chia-I Wu
215dd438ae34bdbaa6651cdd226d5fec15a892923bfEmil Velikovextern EGLBoolean
21631520548b763947da6b70b6debe38820835c5bccChia-I Wu_eglFilterConfigArray(_EGLArray *array, EGLConfig *configs,
21731520548b763947da6b70b6debe38820835c5bccChia-I Wu                      EGLint config_size, EGLint *num_configs,
21831520548b763947da6b70b6debe38820835c5bccChia-I Wu                      EGLBoolean (*match)(const _EGLConfig *, void *),
21931520548b763947da6b70b6debe38820835c5bccChia-I Wu                      EGLint (*compare)(const _EGLConfig *, const _EGLConfig *,
22031520548b763947da6b70b6debe38820835c5bccChia-I Wu                                        void *),
22131520548b763947da6b70b6debe38820835c5bccChia-I Wu                      void *filter_data);
222adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
223adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
224adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
2252f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu_eglChooseConfig(_EGLDriver *drv, _EGLDisplay *dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
226adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
227adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
228adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
2292f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu_eglGetConfigAttrib(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *conf, EGLint attribute, EGLint *value);
230adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
231adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
232adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
2332f2cf461c57974abd89e4917945cc8ae6a67a72eChia-I Wu_eglGetConfigs(_EGLDriver *drv, _EGLDisplay *dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
234adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
235adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
2368362068c1b28eb2d3e334abc980c4711957d61fdAlexander von Gluck IV#ifdef __cplusplus
2378362068c1b28eb2d3e334abc980c4711957d61fdAlexander von Gluck IV}
2388362068c1b28eb2d3e334abc980c4711957d61fdAlexander von Gluck IV#endif
2398362068c1b28eb2d3e334abc980c4711957d61fdAlexander von Gluck IV
240adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#endif /* EGLCONFIG_INCLUDED */
241