* Called via eglCreateWindowSurface(), drv->CreateWindowSurface().
*/
static _EGLSurface *
-haiku_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
+haiku_create_window_surface(const _EGLDriver *drv, _EGLDisplay *disp,
_EGLConfig *conf, void *native_window, const EGLint *attrib_list)
{
CALLED();
static _EGLSurface *
-haiku_create_pixmap_surface(_EGLDriver *drv, _EGLDisplay *disp,
+haiku_create_pixmap_surface(const _EGLDriver *drv, _EGLDisplay *disp,
_EGLConfig *conf, void *native_pixmap, const EGLint *attrib_list)
{
return NULL;
static _EGLSurface *
-haiku_create_pbuffer_surface(_EGLDriver *drv, _EGLDisplay *disp,
+haiku_create_pbuffer_surface(const _EGLDriver *drv, _EGLDisplay *disp,
_EGLConfig *conf, const EGLint *attrib_list)
{
return NULL;
static EGLBoolean
-haiku_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
+haiku_destroy_surface(const _EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
{
if (_eglPutSurface(surf)) {
// XXX: detach haiku_egl_surface::gl from the native window and destroy it
extern "C"
EGLBoolean
-init_haiku(_EGLDriver *drv, _EGLDisplay *disp)
+init_haiku(_EGLDisplay *disp)
{
_EGLDevice *dev;
CALLED();
if (!haiku_add_configs_for_visuals(disp))
return EGL_FALSE;
- disp->Version = 14;
-
TRACE("Initialization finished\n");
return EGL_TRUE;
extern "C"
EGLBoolean
-haiku_terminate(_EGLDriver* drv,_EGLDisplay *disp)
+haiku_terminate(const _EGLDriver* drv,_EGLDisplay *disp)
{
return EGL_TRUE;
}
extern "C"
_EGLContext*
-haiku_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf,
+haiku_create_context(const _EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf,
_EGLContext *share_list, const EGLint *attrib_list)
{
CALLED();
extern "C"
EGLBoolean
-haiku_destroy_context(_EGLDriver* drv, _EGLDisplay *disp, _EGLContext* ctx)
+haiku_destroy_context(const _EGLDriver* drv, _EGLDisplay *disp, _EGLContext* ctx)
{
struct haiku_egl_context* context = haiku_egl_context(ctx);
extern "C"
EGLBoolean
-haiku_make_current(_EGLDriver* drv, _EGLDisplay *disp, _EGLSurface *dsurf,
+haiku_make_current(const _EGLDriver* drv, _EGLDisplay *disp, _EGLSurface *dsurf,
_EGLSurface *rsurf, _EGLContext *ctx)
{
CALLED();
extern "C"
EGLBoolean
-haiku_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
+haiku_swap_buffers(const _EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
{
struct haiku_egl_surface* surface = haiku_egl_surface(surf);
}
-/**
- * This is the main entrypoint into the driver, called by libEGL.
- * Gets an _EGLDriver object and init its dispatch table.
- */
extern "C"
-void
-_eglInitDriver(_EGLDriver *driver)
-{
- CALLED();
-
- driver->Initialize = init_haiku;
- driver->Terminate = haiku_terminate;
- driver->CreateContext = haiku_create_context;
- driver->DestroyContext = haiku_destroy_context;
- driver->MakeCurrent = haiku_make_current;
- driver->CreateWindowSurface = haiku_create_window_surface;
- driver->CreatePixmapSurface = haiku_create_pixmap_surface;
- driver->CreatePbufferSurface = haiku_create_pbuffer_surface;
- driver->DestroySurface = haiku_destroy_surface;
-
- driver->SwapBuffers = haiku_swap_buffers;
-
- TRACE("API Calls defined\n");
-}
+const _EGLDriver _eglDriver = {
+ .Initialize = init_haiku,
+ .Terminate = haiku_terminate,
+ .CreateContext = haiku_create_context,
+ .DestroyContext = haiku_destroy_context,
+ .MakeCurrent = haiku_make_current,
+ .CreateWindowSurface = haiku_create_window_surface,
+ .CreatePixmapSurface = haiku_create_pixmap_surface,
+ .CreatePbufferSurface = haiku_create_pbuffer_surface,
+ .DestroySurface = haiku_destroy_surface,
+ .SwapBuffers = haiku_swap_buffers,
+};