1 //
2 // Copyright 2014 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 // entry_points_egl_ext.h : Defines the EGL extension entry points.
8 
9 #ifndef LIBGLESV2_ENTRYPOINTSEGLEXT_H_
10 #define LIBGLESV2_ENTRYPOINTSEGLEXT_H_
11 
12 #include <EGL/egl.h>
13 #include <EGL/eglext.h>
14 #include <export.h>
15 
16 extern "C" {
17 
18 // EGL_ANGLE_query_surface_pointer
19 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QuerySurfacePointerANGLE(EGLDisplay dpy,
20                                                                  EGLSurface surface,
21                                                                  EGLint attribute,
22                                                                  void **value);
23 
24 // EGL_NV_post_sub_buffer
25 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_PostSubBufferNV(EGLDisplay dpy,
26                                                         EGLSurface surface,
27                                                         EGLint x,
28                                                         EGLint y,
29                                                         EGLint width,
30                                                         EGLint height);
31 
32 // EGL_EXT_platform_base
33 ANGLE_EXPORT EGLDisplay EGLAPIENTRY EGL_GetPlatformDisplayEXT(EGLenum platform,
34                                                               void *native_display,
35                                                               const EGLint *attrib_list);
36 ANGLE_EXPORT EGLSurface EGLAPIENTRY EGL_CreatePlatformWindowSurfaceEXT(EGLDisplay dpy,
37                                                                        EGLConfig config,
38                                                                        void *native_window,
39                                                                        const EGLint *attrib_list);
40 ANGLE_EXPORT EGLSurface EGLAPIENTRY EGL_CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy,
41                                                                        EGLConfig config,
42                                                                        void *native_pixmap,
43                                                                        const EGLint *attrib_list);
44 
45 // EGL_EXT_device_query
46 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribEXT(EGLDisplay dpy,
47                                                               EGLint attribute,
48                                                               EGLAttrib *value);
49 
50 // EGL_ANGLE_feature_control
51 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribANGLE(EGLDisplay dpy,
52                                                                 EGLint attribute,
53                                                                 EGLAttrib *value);
54 
55 // EGL_EXT_device_query
56 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryDeviceAttribEXT(EGLDeviceEXT device,
57                                                              EGLint attribute,
58                                                              EGLAttrib *value);
59 ANGLE_EXPORT const char *EGLAPIENTRY EGL_QueryDeviceStringEXT(EGLDeviceEXT device, EGLint name);
60 
61 // EGL_KHR_image_base/EGL_KHR_image
62 ANGLE_EXPORT EGLImageKHR EGLAPIENTRY EGL_CreateImageKHR(EGLDisplay dpy,
63                                                         EGLContext ctx,
64                                                         EGLenum target,
65                                                         EGLClientBuffer buffer,
66                                                         const EGLint *attrib_list);
67 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image);
68 
69 // EGL_ANGLE_device_creation
70 ANGLE_EXPORT EGLDeviceEXT EGLAPIENTRY EGL_CreateDeviceANGLE(EGLint device_type,
71                                                             void *native_device,
72                                                             const EGLAttrib *attrib_list);
73 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_ReleaseDeviceANGLE(EGLDeviceEXT device);
74 
75 // EGL_KHR_stream
76 ANGLE_EXPORT EGLStreamKHR EGLAPIENTRY EGL_CreateStreamKHR(EGLDisplay dpy,
77                                                           const EGLint *attrib_list);
78 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_DestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream);
79 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_StreamAttribKHR(EGLDisplay dpy,
80                                                         EGLStreamKHR stream,
81                                                         EGLenum attribute,
82                                                         EGLint value);
83 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryStreamKHR(EGLDisplay dpy,
84                                                        EGLStreamKHR stream,
85                                                        EGLenum attribute,
86                                                        EGLint *value);
87 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryStreamu64KHR(EGLDisplay dpy,
88                                                           EGLStreamKHR stream,
89                                                           EGLenum attribute,
90                                                           EGLuint64KHR *value);
91 
92 // EGL_KHR_stream_consumer_gltexture
93 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_StreamConsumerGLTextureExternalKHR(EGLDisplay dpy,
94                                                                            EGLStreamKHR stream);
95 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_StreamConsumerAcquireKHR(EGLDisplay dpy,
96                                                                  EGLStreamKHR stream);
97 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_StreamConsumerReleaseKHR(EGLDisplay dpy,
98                                                                  EGLStreamKHR stream);
99 ANGLE_EXPORT EGLBoolean EGLAPIENTRY
100 EGL_StreamConsumerGLTextureExternalAttribsNV(EGLDisplay dpy,
101                                              EGLStreamKHR stream,
102                                              const EGLAttrib *attrib_list);
103 
104 // EGL_ANGLE_stream_producer_d3d_texture
105 ANGLE_EXPORT EGLBoolean EGLAPIENTRY
106 EGL_CreateStreamProducerD3DTextureANGLE(EGLDisplay dpy,
107                                         EGLStreamKHR stream,
108                                         const EGLAttrib *attrib_list);
109 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_StreamPostD3DTextureANGLE(EGLDisplay dpy,
110                                                                   EGLStreamKHR stream,
111                                                                   void *texture,
112                                                                   const EGLAttrib *attrib_list);
113 
114 // EGL_KHR_fence_sync
115 ANGLE_EXPORT EGLSync EGLAPIENTRY EGL_CreateSyncKHR(EGLDisplay dpy,
116                                                    EGLenum type,
117                                                    const EGLint *attrib_list);
118 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_DestroySyncKHR(EGLDisplay dpy, EGLSync sync);
119 ANGLE_EXPORT EGLint EGLAPIENTRY EGL_ClientWaitSyncKHR(EGLDisplay dpy,
120                                                       EGLSync sync,
121                                                       EGLint flags,
122                                                       EGLTime timeout);
123 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetSyncAttribKHR(EGLDisplay dpy,
124                                                          EGLSync sync,
125                                                          EGLint attribute,
126                                                          EGLint *value);
127 
128 // EGL_KHR_wait_sync
129 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_WaitSyncKHR(EGLDisplay dpy, EGLSync sync, EGLint flags);
130 
131 // EGL_CHROMIUM_sync_control
132 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetSyncValuesCHROMIUM(EGLDisplay dpy,
133                                                               EGLSurface surface,
134                                                               EGLuint64KHR *ust,
135                                                               EGLuint64KHR *msc,
136                                                               EGLuint64KHR *sbc);
137 
138 // EGL_ANGLE_sync_control_rate
139 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetMscRateANGLE(EGLDisplay dpy,
140                                                         EGLSurface surface,
141                                                         EGLint *numerator,
142                                                         EGLint *denominator);
143 
144 // EGL_KHR_swap_buffers_with_damage
145 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_SwapBuffersWithDamageKHR(EGLDisplay dpy,
146                                                                  EGLSurface surface,
147                                                                  EGLint *rects,
148                                                                  EGLint n_rects);
149 
150 // EGL_ANDROID_presentation_time
151 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_PresentationTimeANDROID(EGLDisplay dpy,
152                                                                 EGLSurface surface,
153                                                                 EGLnsecsANDROID time);
154 
155 // EGL_ANDRIOD_blob_cache
156 ANGLE_EXPORT void EGLAPIENTRY EGL_SetBlobCacheFuncsANDROID(EGLDisplay dpy,
157                                                            EGLSetBlobFuncANDROID set,
158                                                            EGLGetBlobFuncANDROID get);
159 
160 // EGL_ANGLE_program_cache_control
161 ANGLE_EXPORT EGLint EGLAPIENTRY EGL_ProgramCacheGetAttribANGLE(EGLDisplay dpy, EGLenum attrib);
162 ANGLE_EXPORT void EGLAPIENTRY EGL_ProgramCacheQueryANGLE(EGLDisplay dpy,
163                                                          EGLint index,
164                                                          void *key,
165                                                          EGLint *keysize,
166                                                          void *binary,
167                                                          EGLint *binarysize);
168 ANGLE_EXPORT void EGLAPIENTRY EGL_ProgramCachePopulateANGLE(EGLDisplay dpy,
169                                                             const void *key,
170                                                             EGLint keysize,
171                                                             const void *binary,
172                                                             EGLint binarysize);
173 ANGLE_EXPORT EGLint EGLAPIENTRY EGL_ProgramCacheResizeANGLE(EGLDisplay dpy,
174                                                             EGLint limit,
175                                                             EGLenum mode);
176 
177 // EGL_KHR_debug
178 ANGLE_EXPORT EGLint EGLAPIENTRY EGL_DebugMessageControlKHR(EGLDEBUGPROCKHR callback,
179                                                            const EGLAttrib *attrib_list);
180 
181 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_QueryDebugKHR(EGLint attribute, EGLAttrib *value);
182 
183 ANGLE_EXPORT EGLint EGLAPIENTRY EGL_LabelObjectKHR(EGLDisplay display,
184                                                    EGLenum objectType,
185                                                    EGLObjectKHR object,
186                                                    EGLLabelKHR label);
187 
188 // ANDROID_get_frame_timestamps
189 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetCompositorTimingSupportedANDROID(EGLDisplay dpy,
190                                                                             EGLSurface surface,
191                                                                             EGLint name);
192 
193 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetCompositorTimingANDROID(EGLDisplay dpy,
194                                                                    EGLSurface surface,
195                                                                    EGLint numTimestamps,
196                                                                    const EGLint *names,
197                                                                    EGLnsecsANDROID *values);
198 
199 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetNextFrameIdANDROID(EGLDisplay dpy,
200                                                               EGLSurface surface,
201                                                               EGLuint64KHR *frameId);
202 
203 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampSupportedANDROID(EGLDisplay dpy,
204                                                                           EGLSurface surface,
205                                                                           EGLint timestamp);
206 
207 ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampsANDROID(EGLDisplay dpy,
208                                                                   EGLSurface surface,
209                                                                   EGLuint64KHR frameId,
210                                                                   EGLint numTimestamps,
211                                                                   const EGLint *timestamps,
212                                                                   EGLnsecsANDROID *values);
213 
214 // EGL_ANGLE_feature_control
215 ANGLE_EXPORT const char *EGLAPIENTRY EGL_QueryStringiANGLE(EGLDisplay dpy,
216                                                            EGLint name,
217                                                            EGLint index);
218 
219 // EGL_ANDROID_get_native_client_buffer
220 ANGLE_EXPORT EGLClientBuffer EGLAPIENTRY
221 EGL_GetNativeClientBufferANDROID(const struct AHardwareBuffer *buffer);
222 
223 // EGL_ANDROID_native_fence_sync
224 ANGLE_EXPORT EGLint EGLAPIENTRY EGL_DupNativeFenceFDANDROID(EGLDisplay dpy, EGLSyncKHR sync);
225 
226 // EGL_ANGLE_swap_with_frame_token
227 ANGLE_EXPORT EGLBoolean EGLAPIENTRY
228 EGL_SwapBuffersWithFrameTokenANGLE(EGLDisplay dpy,
229                                    EGLSurface surface,
230                                    EGLFrameTokenANGLE frametoken);
231 
232 }  // extern "C"
233 
234 #endif  // LIBGLESV2_ENTRYPOINTSEGLEXT_H_
235