eglapi.h revision b2006a40eb22899d38cd31691640555228e36975
1#ifndef EGLAPI_INCLUDED
2#define EGLAPI_INCLUDED
3
4/**
5 * Typedefs for all EGL API entrypoint functions.
6 */
7
8
9/* driver funcs */
10typedef EGLBoolean (*Initialize_t)(_EGLDriver *, EGLDisplay dpy, EGLint *major, EGLint *minor);
11typedef EGLBoolean (*Terminate_t)(_EGLDriver *, EGLDisplay dpy);
12
13/* config funcs */
14typedef EGLBoolean (*GetConfigs_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
15typedef EGLBoolean (*ChooseConfig_t)(_EGLDriver *drv, EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
16typedef EGLBoolean (*GetConfigAttrib_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
17
18/* context funcs */
19typedef EGLContext (*CreateContext_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, EGLContext share_list, const EGLint *attrib_list);
20typedef EGLBoolean (*DestroyContext_t)(_EGLDriver *drv, EGLDisplay dpy, EGLContext ctx);
21typedef EGLBoolean (*MakeCurrent_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
22typedef EGLBoolean (*QueryContext_t)(_EGLDriver *drv, EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
23
24/* surface funcs */
25typedef EGLSurface (*CreateWindowSurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attrib_list);
26typedef EGLSurface (*CreatePixmapSurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, NativePixmapType pixmap, const EGLint *attrib_list);
27typedef EGLSurface (*CreatePbufferSurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
28typedef EGLBoolean (*DestroySurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface);
29typedef EGLBoolean (*QuerySurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
30typedef EGLBoolean (*SurfaceAttrib_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
31typedef EGLBoolean (*BindTexImage_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, EGLint buffer);
32typedef EGLBoolean (*ReleaseTexImage_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, EGLint buffer);
33typedef EGLBoolean (*SwapInterval_t)(_EGLDriver *drv, EGLDisplay dpy, EGLint interval);
34typedef EGLBoolean (*SwapBuffers_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface draw);
35typedef EGLBoolean (*CopyBuffers_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, NativePixmapType target);
36
37/* misc funcs */
38typedef const char *(*QueryString_t)(_EGLDriver *drv, EGLDisplay dpy, EGLint name);
39typedef EGLBoolean (*WaitGL_t)(_EGLDriver *drv, EGLDisplay dpy);
40typedef EGLBoolean (*WaitNative_t)(_EGLDriver *drv, EGLDisplay dpy, EGLint engine);
41
42
43#ifdef EGL_MESA_screen_surface
44typedef EGLBoolean (*ChooseModeMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
45typedef EGLBoolean (*GetModesMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint mode_size, EGLint *num_mode);
46typedef EGLBoolean (*GetModeAttribMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value);
47typedef EGLBoolean (*CopyContextMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLContext source, EGLContext dest, EGLint mask);
48typedef EGLBoolean (*GetScreensMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
49typedef EGLSurface (*CreateScreenSurfaceMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
50typedef EGLBoolean (*ShowScreenSurfaceMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLSurface surface, EGLModeMESA mode);
51typedef EGLBoolean (*ScreenPositionMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y);
52typedef EGLBoolean (*QueryScreenMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value);
53typedef EGLBoolean (*QueryScreenSurfaceMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface);
54typedef EGLBoolean (*QueryScreenModeMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode);
55typedef const char * (*QueryModeStringMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLModeMESA mode);
56#endif /* EGL_MESA_screen_surface */
57
58
59#ifdef EGL_VERSION_1_2
60typedef EGLBoolean (*WaitClient_t)(_EGLDriver *drv, EGLDisplay dpy);
61typedef EGLSurface (*CreatePbufferFromClientBuffer_t)(_EGLDriver *drv, EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
62#endif /* EGL_VERSION_1_2 */
63
64
65
66/**
67 * The API dispatcher jumps through these functions
68 */
69struct _egl_api
70{
71   Initialize_t Initialize;
72   Terminate_t Terminate;
73
74   GetConfigs_t GetConfigs;
75   ChooseConfig_t ChooseConfig;
76   GetConfigAttrib_t GetConfigAttrib;
77
78   CreateContext_t CreateContext;
79   DestroyContext_t DestroyContext;
80   MakeCurrent_t MakeCurrent;
81   QueryContext_t QueryContext;
82
83   CreateWindowSurface_t CreateWindowSurface;
84   CreatePixmapSurface_t CreatePixmapSurface;
85   CreatePbufferSurface_t CreatePbufferSurface;
86   DestroySurface_t DestroySurface;
87   QuerySurface_t QuerySurface;
88   SurfaceAttrib_t SurfaceAttrib;
89   BindTexImage_t BindTexImage;
90   ReleaseTexImage_t ReleaseTexImage;
91   SwapInterval_t SwapInterval;
92   SwapBuffers_t SwapBuffers;
93   CopyBuffers_t CopyBuffers;
94
95   QueryString_t QueryString;
96   WaitGL_t WaitGL;
97   WaitNative_t WaitNative;
98
99   /* EGL_MESA_screen extension */
100   ChooseModeMESA_t ChooseModeMESA;
101   GetModesMESA_t GetModesMESA;
102   GetModeAttribMESA_t GetModeAttribMESA;
103   CopyContextMESA_t CopyContextMESA;
104   GetScreensMESA_t GetScreensMESA;
105   CreateScreenSurfaceMESA_t CreateScreenSurfaceMESA;
106   ShowScreenSurfaceMESA_t ShowScreenSurfaceMESA;
107   ScreenPositionMESA_t ScreenPositionMESA;
108   QueryScreenMESA_t QueryScreenMESA;
109   QueryScreenSurfaceMESA_t QueryScreenSurfaceMESA;
110   QueryScreenModeMESA_t QueryScreenModeMESA;
111   QueryModeStringMESA_t QueryModeStringMESA;
112
113#ifdef EGL_VERSION_1_2
114   WaitClient_t WaitClient;
115   CreatePbufferFromClientBuffer_t CreatePbufferFromClientBuffer;
116#endif
117};
118
119#endif /* EGLAPI_INCLUDED */
120