some initial EGL 1.2 work
[mesa.git] / src / egl / main / eglapi.h
1 #ifndef EGLAPI_INCLUDED
2 #define EGLAPI_INCLUDED
3
4 /**
5 * Typedefs for all EGL API entrypoint functions.
6 */
7
8
9 /* driver funcs */
10 typedef EGLBoolean (*Initialize_t)(_EGLDriver *, EGLDisplay dpy, EGLint *major, EGLint *minor);
11 typedef EGLBoolean (*Terminate_t)(_EGLDriver *, EGLDisplay dpy);
12
13 /* config funcs */
14 typedef EGLBoolean (*GetConfigs_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
15 typedef EGLBoolean (*ChooseConfig_t)(_EGLDriver *drv, EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
16 typedef EGLBoolean (*GetConfigAttrib_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
17
18 /* context funcs */
19 typedef EGLContext (*CreateContext_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, EGLContext share_list, const EGLint *attrib_list);
20 typedef EGLBoolean (*DestroyContext_t)(_EGLDriver *drv, EGLDisplay dpy, EGLContext ctx);
21 typedef EGLBoolean (*MakeCurrent_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
22 typedef EGLBoolean (*QueryContext_t)(_EGLDriver *drv, EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
23
24 /* surface funcs */
25 typedef EGLSurface (*CreateWindowSurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attrib_list);
26 typedef EGLSurface (*CreatePixmapSurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, NativePixmapType pixmap, const EGLint *attrib_list);
27 typedef EGLSurface (*CreatePbufferSurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
28 typedef EGLBoolean (*DestroySurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface);
29 typedef EGLBoolean (*QuerySurface_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
30 typedef EGLBoolean (*SurfaceAttrib_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
31 typedef EGLBoolean (*BindTexImage_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, EGLint buffer);
32 typedef EGLBoolean (*ReleaseTexImage_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, EGLint buffer);
33 typedef EGLBoolean (*SwapInterval_t)(_EGLDriver *drv, EGLDisplay dpy, EGLint interval);
34 typedef EGLBoolean (*SwapBuffers_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface draw);
35 typedef EGLBoolean (*CopyBuffers_t)(_EGLDriver *drv, EGLDisplay dpy, EGLSurface surface, NativePixmapType target);
36
37 /* misc funcs */
38 typedef const char *(*QueryString_t)(_EGLDriver *drv, EGLDisplay dpy, EGLint name);
39 typedef EGLBoolean (*WaitGL_t)(_EGLDriver *drv, EGLDisplay dpy);
40 typedef EGLBoolean (*WaitNative_t)(_EGLDriver *drv, EGLDisplay dpy, EGLint engine);
41
42
43 #ifdef EGL_MESA_screen_surface
44 typedef EGLBoolean (*ChooseModeMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
45 typedef EGLBoolean (*GetModesMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint mode_size, EGLint *num_mode);
46 typedef EGLBoolean (*GetModeAttribMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value);
47 typedef EGLBoolean (*CopyContextMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLContext source, EGLContext dest, EGLint mask);
48 typedef EGLBoolean (*GetScreensMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
49 typedef EGLSurface (*CreateScreenSurfaceMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
50 typedef EGLBoolean (*ShowScreenSurfaceMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLSurface surface, EGLModeMESA mode);
51 typedef EGLBoolean (*ScreenPositionMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y);
52 typedef EGLBoolean (*QueryScreenMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value);
53 typedef EGLBoolean (*QueryScreenSurfaceMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface);
54 typedef EGLBoolean (*QueryScreenModeMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode);
55 typedef const char * (*QueryModeStringMESA_t)(_EGLDriver *drv, EGLDisplay dpy, EGLModeMESA mode);
56 #endif /* EGL_MESA_screen_surface */
57
58
59 #ifdef EGL_VERSION_1_2
60 typedef EGLBoolean (*WaitClient_t)(_EGLDriver *drv, EGLDisplay dpy);
61 typedef 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 */
69 struct _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 */