1 //
2 // Copyright(c) 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 namespace egl
17 {
18 
19 // EGL_ANGLE_query_surface_pointer
20 ANGLE_EXPORT EGLBoolean EGLAPIENTRY QuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
21 
22 // EGL_NV_post_sub_buffer
23 ANGLE_EXPORT EGLBoolean EGLAPIENTRY PostSubBufferNV(EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
24 
25 // EGL_EXT_platform_base
26 ANGLE_EXPORT EGLDisplay EGLAPIENTRY GetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list);
27 
28 // EGL_EXT_device_query
29 ANGLE_EXPORT EGLBoolean EGLAPIENTRY QueryDisplayAttribEXT(EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
30 ANGLE_EXPORT EGLBoolean EGLAPIENTRY QueryDeviceAttribEXT(EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
31 ANGLE_EXPORT const char * EGLAPIENTRY QueryDeviceStringEXT(EGLDeviceEXT device, EGLint name);
32 
33 // EGL_KHR_image_base/EGL_KHR_image
34 ANGLE_EXPORT EGLImageKHR EGLAPIENTRY CreateImageKHR(EGLDisplay dpy,
35                                                     EGLContext ctx,
36                                                     EGLenum target,
37                                                     EGLClientBuffer buffer,
38                                                     const EGLint *attrib_list);
39 ANGLE_EXPORT EGLBoolean EGLAPIENTRY DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image);
40 
41 // EGL_EXT_device_creation
42 ANGLE_EXPORT EGLDeviceEXT EGLAPIENTRY CreateDeviceANGLE(EGLint device_type,
43                                                         void *native_device,
44                                                         const EGLAttrib *attrib_list);
45 ANGLE_EXPORT EGLBoolean EGLAPIENTRY ReleaseDeviceANGLE(EGLDeviceEXT device);
46 
47 // EGL_KHR_stream
48 ANGLE_EXPORT EGLStreamKHR EGLAPIENTRY CreateStreamKHR(EGLDisplay dpy, const EGLint *attrib_list);
49 ANGLE_EXPORT EGLBoolean EGLAPIENTRY DestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream);
50 ANGLE_EXPORT EGLBoolean EGLAPIENTRY StreamAttribKHR(EGLDisplay dpy,
51                                                     EGLStreamKHR stream,
52                                                     EGLenum attribute,
53                                                     EGLint value);
54 ANGLE_EXPORT EGLBoolean EGLAPIENTRY QueryStreamKHR(EGLDisplay dpy,
55                                                    EGLStreamKHR stream,
56                                                    EGLenum attribute,
57                                                    EGLint *value);
58 ANGLE_EXPORT EGLBoolean EGLAPIENTRY QueryStreamu64KHR(EGLDisplay dpy,
59                                                       EGLStreamKHR stream,
60                                                       EGLenum attribute,
61                                                       EGLuint64KHR *value);
62 
63 // EGL_KHR_stream_consumer_gltexture
64 ANGLE_EXPORT EGLBoolean EGLAPIENTRY StreamConsumerGLTextureExternalKHR(EGLDisplay dpy,
65                                                                        EGLStreamKHR stream);
66 ANGLE_EXPORT EGLBoolean EGLAPIENTRY StreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR stream);
67 ANGLE_EXPORT EGLBoolean EGLAPIENTRY StreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream);
68 ANGLE_EXPORT EGLBoolean EGLAPIENTRY
69 StreamConsumerGLTextureExternalAttribsNV(EGLDisplay dpy,
70                                          EGLStreamKHR stream,
71                                          const EGLAttrib *attrib_list);
72 
73 // EGL_ANGLE_stream_producer_d3d_texture_nv12
74 ANGLE_EXPORT EGLBoolean EGLAPIENTRY
75 CreateStreamProducerD3DTextureNV12ANGLE(EGLDisplay dpy,
76                                         EGLStreamKHR stream,
77                                         const EGLAttrib *attrib_list);
78 ANGLE_EXPORT EGLBoolean EGLAPIENTRY StreamPostD3DTextureNV12ANGLE(EGLDisplay dpy,
79                                                                   EGLStreamKHR stream,
80                                                                   void *texture,
81                                                                   const EGLAttrib *attrib_list);
82 
83 // EGL_CHROMIUM_get_sync_values
84 ANGLE_EXPORT EGLBoolean EGLAPIENTRY GetSyncValuesCHROMIUM(EGLDisplay dpy,
85                                                           EGLSurface surface,
86                                                           EGLuint64KHR *ust,
87                                                           EGLuint64KHR *msc,
88                                                           EGLuint64KHR *sbc);
89 
90 // EGL_EXT_swap_buffers_with_damage
91 ANGLE_EXPORT EGLBoolean SwapBuffersWithDamageEXT(EGLDisplay dpy,
92                                                  EGLSurface surface,
93                                                  EGLint *rects,
94                                                  EGLint n_rects);
95 
96 //
97 ANGLE_EXPORT EGLint EGLAPIENTRY ProgramCacheGetAttribANGLE(EGLDisplay dpy, EGLenum attrib);
98 ANGLE_EXPORT void EGLAPIENTRY ProgramCacheQueryANGLE(EGLDisplay dpy,
99                                                      EGLint index,
100                                                      void *key,
101                                                      EGLint *keysize,
102                                                      void *binary,
103                                                      EGLint *binarysize);
104 ANGLE_EXPORT void EGLAPIENTRY ProgramCachePopulateANGLE(EGLDisplay dpy,
105                                                         const void *key,
106                                                         EGLint keysize,
107                                                         const void *binary,
108                                                         EGLint binarysize);
109 ANGLE_EXPORT EGLint EGLAPIENTRY ProgramCacheResizeANGLE(EGLDisplay dpy, EGLint limit, EGLenum mode);
110 
111 }  // namespace egl
112 
113 #endif // LIBGLESV2_ENTRYPOINTSEGLEXT_H_
114