egl: Some per-driver data should be per-display.
[mesa.git] / src / egl / main / egldriver.h
index 51ec27c06ff3b6ea4d1b9eefc5267c5cfd2d78f0..7fba9380859f956c87ad0d2b17023b660b9a1e1b 100644 (file)
@@ -5,55 +5,47 @@
 #include "egltypedefs.h"
 #include "eglapi.h"
 
-/* should probably use a dynamic-length string, but this will do */
-#define MAX_EXTENSIONS_LEN 1000
-
-
-/**
- * Optional EGL extensions info.
- */
-struct _egl_extensions
-{
-   EGLBoolean MESA_screen_surface;
-   EGLBoolean MESA_copy_context;
-
-   char String[MAX_EXTENSIONS_LEN];
-};
-
 
 /**
  * Base class for device drivers.
  */
 struct _egl_driver
 {
-   EGLBoolean Initialized; /* set by driver after initialized */
-
-   void *LibHandle; /* dlopen handle */
+   void *LibHandle; /**< dlopen handle */
+   const char *Path;  /**< path to this driver */
+   const char *Args;  /**< args to load this driver */
 
-   _EGLDisplay *Display;
+   const char *Name;  /**< name of this driver */
+   /**< probe a display to see if it is supported */
+   EGLBoolean (*Probe)(_EGLDriver *drv, _EGLDisplay *dpy);
+   /**< called before dlclose to release this driver */
+   void (*Unload)(_EGLDriver *drv);
 
-   int ABIversion;
-   int APImajor, APIminor; /* returned through eglInitialize */
+   _EGLAPI API;  /**< EGL API dispatch table */
+};
 
-   _EGLAPI API;
 
-   _EGLExtensions Extensions;
-};
+extern _EGLDriver *_eglMain(const char *args);
 
 
-extern _EGLDriver *_eglMain(_EGLDisplay *dpy);
+extern const char *
+_eglChooseDRMDriver(int card);
 
 
-extern _EGLDriver *
-_eglChooseDriver(EGLDisplay dpy);
+extern const char *
+_eglPreloadDriver(_EGLDisplay *dpy);
 
 
 extern _EGLDriver *
-_eglOpenDriver(_EGLDisplay *dpy, const char *driverName);
+_eglOpenDriver(_EGLDisplay *dpy);
 
 
 extern EGLBoolean
-_eglCloseDriver(_EGLDriver *drv, EGLDisplay dpy);
+_eglCloseDriver(_EGLDriver *drv, _EGLDisplay *dpy);
+
+
+void
+_eglUnloadDrivers(void);
 
 
 extern _EGLDriver *
@@ -64,17 +56,8 @@ extern void
 _eglInitDriverFallbacks(_EGLDriver *drv);
 
 
-extern const char *
-_eglQueryString(_EGLDriver *drv, EGLDisplay dpy, EGLint name);
-
-
-extern EGLBoolean
-_eglWaitGL(_EGLDriver *drv, EGLDisplay dpy);
-
-
-extern EGLBoolean
-_eglWaitNative(_EGLDriver *drv, EGLDisplay dpy, EGLint engine);
-
+extern EGLint
+_eglFindAPIs(void);
 
 
 #endif /* EGLDRIVER_INCLUDED */