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