1 #ifndef EGLDRIVER_INCLUDED
2 #define EGLDRIVER_INCLUDED
5 #include "egltypedefs.h"
9 typedef EGLBoolean (*Initialize_t
)(_EGLDriver
*, EGLDisplay dpy
, EGLint
*major
, EGLint
*minor
);
10 typedef EGLBoolean (*Terminate_t
)(_EGLDriver
*, EGLDisplay dpy
);
13 typedef EGLBoolean (*GetConfigs_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLConfig
*configs
, EGLint config_size
, EGLint
*num_config
);
14 typedef EGLBoolean (*ChooseConfig_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, const EGLint
*attrib_list
, EGLConfig
*configs
, EGLint config_size
, EGLint
*num_config
);
15 typedef EGLBoolean (*GetConfigAttrib_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLConfig config
, EGLint attribute
, EGLint
*value
);
18 typedef EGLContext (*CreateContext_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLConfig config
, EGLContext share_list
, const EGLint
*attrib_list
);
19 typedef EGLBoolean (*DestroyContext_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLContext ctx
);
20 typedef EGLBoolean (*MakeCurrent_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLSurface draw
, EGLSurface read
, EGLContext ctx
);
21 typedef EGLBoolean (*QueryContext_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLContext ctx
, EGLint attribute
, EGLint
*value
);
24 typedef EGLSurface (*CreateWindowSurface_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLConfig config
, NativeWindowType window
, const EGLint
*attrib_list
);
25 typedef EGLSurface (*CreatePixmapSurface_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLConfig config
, NativePixmapType pixmap
, const EGLint
*attrib_list
);
26 typedef EGLSurface (*CreatePbufferSurface_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLConfig config
, const EGLint
*attrib_list
);
27 typedef EGLBoolean (*DestroySurface_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLSurface surface
);
28 typedef EGLBoolean (*QuerySurface_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLSurface surface
, EGLint attribute
, EGLint
*value
);
29 typedef EGLBoolean (*SurfaceAttrib_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLSurface surface
, EGLint attribute
, EGLint value
);
30 typedef EGLBoolean (*BindTexImage_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLSurface surface
, EGLint buffer
);
31 typedef EGLBoolean (*ReleaseTexImage_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLSurface surface
, EGLint buffer
);
32 typedef EGLBoolean (*SwapInterval_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLint interval
);
33 typedef EGLBoolean (*SwapBuffers_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLSurface draw
);
34 typedef EGLBoolean (*CopyBuffers_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLSurface surface
, NativePixmapType target
);
37 typedef const char *(*QueryString_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLint name
);
38 typedef EGLBoolean (*WaitGL_t
)(_EGLDriver
*drv
, EGLDisplay dpy
);
39 typedef EGLBoolean (*WaitNative_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLint engine
);
42 /* EGL_MESA_screen extension */
43 typedef EGLBoolean (*ChooseModeMESA_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLint screen_number
, const EGLint
*attrib_list
, EGLModeMESA
*modes
, EGLint modes_size
, EGLint
*num_modes
);
44 typedef EGLBoolean (*GetModesMESA_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLint screen_number
, EGLModeMESA
*modes
, EGLint mode_size
, EGLint
*num_mode
);
45 typedef EGLBoolean (*GetModeAttribMESA_t
)(_EGLDriver
*drv
, EGLDisplay dpy
, EGLModeMESA mode
, EGLint attribute
, EGLint
*value
);
51 * Base class for device drivers.
55 EGLBoolean Initialized
; /* set by driver after initialized */
57 void *LibHandle
; /* dlopen handle */
62 int APImajor
, APIminor
; /* returned through eglInitialize */
65 * The API dispatcher jumps through these functions
67 Initialize_t Initialize
;
68 Terminate_t Terminate
;
70 GetConfigs_t GetConfigs
;
71 ChooseConfig_t ChooseConfig
;
72 GetConfigAttrib_t GetConfigAttrib
;
74 CreateContext_t CreateContext
;
75 DestroyContext_t DestroyContext
;
76 MakeCurrent_t MakeCurrent
;
77 QueryContext_t QueryContext
;
79 CreateWindowSurface_t CreateWindowSurface
;
80 CreatePixmapSurface_t CreatePixmapSurface
;
81 CreatePbufferSurface_t CreatePbufferSurface
;
82 DestroySurface_t DestroySurface
;
83 QuerySurface_t QuerySurface
;
84 SurfaceAttrib_t SurfaceAttrib
;
85 BindTexImage_t BindTexImage
;
86 ReleaseTexImage_t ReleaseTexImage
;
87 SwapInterval_t SwapInterval
;
88 SwapBuffers_t SwapBuffers
;
89 CopyBuffers_t CopyBuffers
;
91 QueryString_t QueryString
;
93 WaitNative_t WaitNative
;
95 /* EGL_MESA_screen extension */
96 ChooseModeMESA_t ChooseModeMESA
;
97 GetModesMESA_t GetModesMESA
;
98 GetModeAttribMESA_t GetModeAttribMESA
;
105 _eglDefaultMain(NativeDisplayType d
);
109 _eglChooseDriver(EGLDisplay dpy
);
113 _eglOpenDriver(_EGLDisplay
*dpy
, const char *driverName
);
117 _eglCloseDriver(_EGLDriver
*drv
, EGLDisplay dpy
);
121 _eglLookupDriver(EGLDisplay d
);
125 _eglInitDriverFallbacks(_EGLDriver
*drv
);
129 _eglQueryString(_EGLDriver
*drv
, EGLDisplay dpy
, EGLint name
);
133 _eglWaitGL(_EGLDriver
*drv
, EGLDisplay dpy
);
137 _eglWaitNative(_EGLDriver
*drv
, EGLDisplay dpy
, EGLint engine
);
141 #endif /* EGLDRIVER_INCLUDED */