egldriver.h revision e3805cad0d15ed25ce8f6c5a1f1ea913e5d0986a
1adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#ifndef EGLDRIVER_INCLUDED
2adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#define EGLDRIVER_INCLUDED
3adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
4adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
5adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#include "egltypedefs.h"
6daf585d0f00df1d4d2e8dc5b465dad60a4bf0122Brian Paul#include "eglapi.h"
7e084fe54f93c9d51df99812b76d3299b0cff57a3Brian Paul#include "egldefines.h"
851ac95ba8945711cf65e94a2deba6c896dea5f0eBrian Paul
9adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
10adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul/**
115285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul * Optional EGL extensions info.
125285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul */
135285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paulstruct _egl_extensions
145285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul{
155285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   EGLBoolean MESA_screen_surface;
165285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   EGLBoolean MESA_copy_context;
175285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul
18e084fe54f93c9d51df99812b76d3299b0cff57a3Brian Paul   char String[_EGL_MAX_EXTENSIONS_LEN];
195285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul};
205285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul
215285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul
225285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul/**
23adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul * Base class for device drivers.
24adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul */
25adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulstruct _egl_driver
26adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul{
27c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul   EGLBoolean Initialized; /**< set by driver after initialized */
28adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
29c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul   void *LibHandle; /**< dlopen handle */
30adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
311c73b4ba86b424ba66a16c4006a57db505bd3ca3Brian Paul   const char *Name;  /**< name of this driver */
321c73b4ba86b424ba66a16c4006a57db505bd3ca3Brian Paul
33c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul   int APImajor, APIminor; /**< as returned by eglInitialize() */
341c73b4ba86b424ba66a16c4006a57db505bd3ca3Brian Paul   char Version[1000];       /**< initialized from APImajor/minor, Name */
35c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul
36d5078b94323241a6482f54797756116b1c864327Brian Paul   /** Bitmask of supported APIs (EGL_xx_BIT) set by the driver during init */
37d5078b94323241a6482f54797756116b1c864327Brian Paul   EGLint ClientAPIsMask;
38adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
39c56e15b093c367e7e17ebd2e153baab8cafd213aBrian Paul   _EGLAPI API;  /**< EGL API dispatch table */
4051ac95ba8945711cf65e94a2deba6c896dea5f0eBrian Paul
415285c32a17a8ec260dcb5d412d862e50bced0ce9Brian Paul   _EGLExtensions Extensions;
42adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul};
43adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
44adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
450c8908c411c434eda318b41b4f2a370a1e794831Brian Paulextern _EGLDriver *_eglMain(_EGLDisplay *dpy, const char *args);
46adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
47adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
486052af172f0241e6678cd16efac0a0f14f40146cBrian Paulextern const char *
496052af172f0241e6678cd16efac0a0f14f40146cBrian Paul_eglChooseDriver(_EGLDisplay *dpy);
50adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
51adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
52adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern _EGLDriver *
530c8908c411c434eda318b41b4f2a370a1e794831Brian Paul_eglOpenDriver(_EGLDisplay *dpy, const char *driverName, const char *args);
54adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
55adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
56adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern EGLBoolean
57adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglCloseDriver(_EGLDriver *drv, EGLDisplay dpy);
58adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
59adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
60e3805cad0d15ed25ce8f6c5a1f1ea913e5d0986aBrian Paulextern void
61e3805cad0d15ed25ce8f6c5a1f1ea913e5d0986aBrian Paul_eglSaveDriver(_EGLDriver *drv);
62e3805cad0d15ed25ce8f6c5a1f1ea913e5d0986aBrian Paul
63e3805cad0d15ed25ce8f6c5a1f1ea913e5d0986aBrian Paul
64adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern _EGLDriver *
65adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglLookupDriver(EGLDisplay d);
66adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
67adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
68adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paulextern void
69adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul_eglInitDriverFallbacks(_EGLDriver *drv);
70adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
71adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul
72adbff7e977c7c768e752a24fb643d68bdf961bfeBrian Paul#endif /* EGLDRIVER_INCLUDED */
73