blob: 9395a667ab3d5222fe08ec156ce59915fded5de4 [file] [log] [blame]
Brian Pauladbff7e2005-04-22 21:09:39 +00001#ifndef EGLDRIVER_INCLUDED
2#define EGLDRIVER_INCLUDED
3
4
5#include "egltypedefs.h"
Brian Pauldaf585d2005-11-24 04:02:16 +00006#include "eglapi.h"
Brian Paule084fe52008-05-28 15:22:17 -06007#include "egldefines.h"
Brian Paul51ac95b2005-05-16 02:15:42 +00008
Brian Pauladbff7e2005-04-22 21:09:39 +00009
Brian Pauladbff7e2005-04-22 21:09:39 +000010/**
Brian Paul5285c322005-11-29 04:43:37 +000011 * Optional EGL extensions info.
12 */
13struct _egl_extensions
14{
15 EGLBoolean MESA_screen_surface;
16 EGLBoolean MESA_copy_context;
17
Brian Paule084fe52008-05-28 15:22:17 -060018 char String[_EGL_MAX_EXTENSIONS_LEN];
Brian Paul5285c322005-11-29 04:43:37 +000019};
20
21
22/**
Brian Pauladbff7e2005-04-22 21:09:39 +000023 * Base class for device drivers.
24 */
25struct _egl_driver
26{
Brian Paulc56e15b2008-05-28 15:43:41 -060027 EGLBoolean Initialized; /**< set by driver after initialized */
Brian Pauladbff7e2005-04-22 21:09:39 +000028
Brian Paulc56e15b2008-05-28 15:43:41 -060029 void *LibHandle; /**< dlopen handle */
Brian Pauladbff7e2005-04-22 21:09:39 +000030
31 _EGLDisplay *Display;
32
Brian Paulc56e15b2008-05-28 15:43:41 -060033 int APImajor, APIminor; /**< as returned by eglInitialize() */
34 char Version[10]; /**< initialized from APImajor/minor */
35
Brian Paulb2006a42006-01-30 00:10:55 +000036 const char *ClientAPIs;
Brian Pauladbff7e2005-04-22 21:09:39 +000037
Brian Paulc56e15b2008-05-28 15:43:41 -060038 _EGLAPI API; /**< EGL API dispatch table */
Brian Paul51ac95b2005-05-16 02:15:42 +000039
Brian Paul5285c322005-11-29 04:43:37 +000040 _EGLExtensions Extensions;
Brian Pauladbff7e2005-04-22 21:09:39 +000041};
42
43
Brian Paul0c8908c2008-05-28 12:56:36 -060044extern _EGLDriver *_eglMain(_EGLDisplay *dpy, const char *args);
Brian Pauladbff7e2005-04-22 21:09:39 +000045
46
Brian Paul6052af12008-05-27 16:48:23 -060047extern const char *
48_eglChooseDriver(_EGLDisplay *dpy);
Brian Pauladbff7e2005-04-22 21:09:39 +000049
50
51extern _EGLDriver *
Brian Paul0c8908c2008-05-28 12:56:36 -060052_eglOpenDriver(_EGLDisplay *dpy, const char *driverName, const char *args);
Brian Pauladbff7e2005-04-22 21:09:39 +000053
54
55extern EGLBoolean
56_eglCloseDriver(_EGLDriver *drv, EGLDisplay dpy);
57
58
59extern _EGLDriver *
60_eglLookupDriver(EGLDisplay d);
61
62
63extern void
64_eglInitDriverFallbacks(_EGLDriver *drv);
65
66
67extern const char *
68_eglQueryString(_EGLDriver *drv, EGLDisplay dpy, EGLint name);
69
70
71extern EGLBoolean
72_eglWaitGL(_EGLDriver *drv, EGLDisplay dpy);
73
74
75extern EGLBoolean
76_eglWaitNative(_EGLDriver *drv, EGLDisplay dpy, EGLint engine);
77
78
79
80#endif /* EGLDRIVER_INCLUDED */