Merge commit 'origin/master' into gallium-0.2
[mesa.git] / src / egl / main / egldriver.h
1 #ifndef EGLDRIVER_INCLUDED
2 #define EGLDRIVER_INCLUDED
3
4
5 #include "egltypedefs.h"
6 #include "eglapi.h"
7 #include "egldefines.h"
8
9
10 /**
11 * Optional EGL extensions info.
12 */
13 struct _egl_extensions
14 {
15 EGLBoolean MESA_screen_surface;
16 EGLBoolean MESA_copy_context;
17
18 char String[_EGL_MAX_EXTENSIONS_LEN];
19 };
20
21
22 /**
23 * Base class for device drivers.
24 */
25 struct _egl_driver
26 {
27 EGLBoolean Initialized; /**< set by driver after initialized */
28
29 void *LibHandle; /**< dlopen handle */
30
31 const char *Name; /**< name of this driver */
32
33 int APImajor, APIminor; /**< as returned by eglInitialize() */
34 char Version[1000]; /**< initialized from APImajor/minor, Name */
35
36 /** Bitmask of supported APIs (EGL_xx_BIT) set by the driver during init */
37 EGLint ClientAPIsMask;
38
39 _EGLAPI API; /**< EGL API dispatch table */
40
41 _EGLExtensions Extensions;
42
43 int LargestPbuffer;
44 };
45
46
47 extern _EGLDriver *_eglMain(_EGLDisplay *dpy, const char *args);
48
49
50 extern const char *
51 _eglChooseDRMDriver(int card);
52
53 extern const char *
54 _eglChooseDriver(_EGLDisplay *dpy);
55
56
57 extern _EGLDriver *
58 _eglOpenDriver(_EGLDisplay *dpy, const char *driverName, const char *args);
59
60
61 extern EGLBoolean
62 _eglCloseDriver(_EGLDriver *drv, EGLDisplay dpy);
63
64
65 extern void
66 _eglSaveDriver(_EGLDriver *drv);
67
68
69 extern _EGLDriver *
70 _eglLookupDriver(EGLDisplay d);
71
72
73 extern void
74 _eglInitDriverFallbacks(_EGLDriver *drv);
75
76
77 extern EGLint
78 _eglFindAPIs(void);
79
80
81 #endif /* EGLDRIVER_INCLUDED */