Files
mesa/src/egl/main
Chia-I Wu e7d8f92570 egl: Fix EGL_VERSION string.
Fix a copy-and-paste error in a4a38dcf61.
2011-01-14 14:29:19 +08:00
..
2010-08-20 19:22:50 +08:00
2010-05-04 14:13:46 -04:00
2010-01-30 22:55:49 +08:00
2011-01-13 18:15:45 +08:00
2011-01-13 18:15:45 +08:00
2011-01-13 18:10:38 +08:00
2010-10-27 09:51:11 -07:00
2010-11-02 01:37:16 +08:00
2010-01-30 22:55:49 +08:00
2011-01-14 14:29:19 +08:00
2010-10-27 09:51:11 -07:00
2010-10-23 11:20:41 +08:00
2009-08-11 22:14:35 -06:00
2010-10-27 09:51:11 -07:00
2010-10-23 11:20:41 +08:00
2011-01-12 18:10:15 +08:00
2008-06-11 19:35:52 -06:00


Notes about the EGL library:


The EGL code here basically consists of two things:

1. An EGL API dispatcher.  This directly routes all the eglFooBar() API
   calls into driver-specific functions.

2. Fallbacks for EGL API functions.  A driver _could_ implement all the
   EGL API calls from scratch.  But in many cases, the fallbacks provided
   in libEGL (such as eglChooseConfig()) will do the job.



Bootstrapping:

When the apps calls eglOpenDisplay() a device driver is selected and loaded
(look for dlsym() or LoadLibrary() in egldriver.c).

The driver's _eglMain() function is then called.  This driver function
allocates, initializes and returns a new _EGLDriver object (usually a
subclass of that type).

As part of initialization, the dispatch table in _EGLDriver->API must be
populated with all the EGL entrypoints.  Typically, _eglInitDriverFallbacks()
can be used to plug in default/fallback functions.  Some functions like
driver->API.Initialize and driver->API.Terminate _must_ be implemented
with driver-specific code (no default/fallback function is possible).


A bit later, the app will call eglInitialize().  This will get routed
to the driver->API.Initialize() function.  Any additional driver
initialization that wasn't done in _eglMain() should be done at this
point.  Typically, this will involve setting up visual configs, etc.



Special Functions:

Certain EGL functions _must_ be implemented by the driver.  This includes:

eglCreateContext
eglCreateWindowSurface
eglCreatePixmapSurface
eglCreatePBufferSurface
eglMakeCurrent
eglSwapBuffers

Most of the EGLConfig-related functions can be implemented with the
defaults/fallbacks.  Same thing for the eglGet/Query functions.




Teardown:

When eglTerminate() is called, the driver->API.Terminate() function is
called.  The driver should clean up after itself.  eglTerminate() will
then close/unload the driver (shared library).




Subclassing:

The internal libEGL data structures such as _EGLDisplay, _EGLContext,
_EGLSurface, etc should be considered base classes from which drivers
will derive subclasses.