mesa/src/egl/main
Chia-I Wu 25328509c9 egl: Move fallback routines to eglfallbacks.c.
We do not want them to be all over the places.
2010-10-22 18:38:30 +08:00
..
Makefile egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
README.txt
SConscript egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
egl.def egl: Add egl.def for win32 build. 2010-08-20 19:22:50 +08:00
egl.pc.in
eglapi.c egl: Check extensions. 2010-09-30 16:55:07 +08:00
eglapi.h egl: Add EGL_MESA_drm_image extension 2010-08-25 09:17:47 -04:00
eglarray.c egl: Return the correct array size in _eglFlattenArray. 2010-07-15 10:05:46 +08:00
eglarray.h egl: Rework driver loading. 2010-07-06 16:16:39 +08:00
eglcompiler.h Define PUBLIC to dllexport on MSVC. 2010-05-31 11:31:07 +08:00
eglconfig.c egl: Access config attributes directly. 2010-10-14 17:16:14 +08:00
eglconfig.h egl_glx: Drop the use of [SG]ET_CONFIG_ATTRIB. 2010-10-22 16:26:25 +08:00
eglcontext.c egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglcontext.h egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglcurrent.c egl: Fix '_eglAddAtExitCall' implicit declaration warning. 2010-07-31 13:28:32 -07:00
eglcurrent.h
egldefines.h
egldisplay.c st/egl: Rename kms backend to drm. 2010-09-19 17:19:03 +08:00
egldisplay.h egl: Add EGL_MESA_drm_image extension 2010-08-25 09:17:47 -04:00
egldriver.c egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
egldriver.h egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglfallbacks.c egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglglobals.c egl: Add checks for EGL_MESA_screen_surface. 2010-07-31 17:49:32 +08:00
eglglobals.h egl: Add checks for EGL_MESA_screen_surface. 2010-07-31 17:49:32 +08:00
eglimage.c egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglimage.h egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
egllog.c egl: Use SConscript for Windows build. 2010-05-31 13:27:41 +08:00
egllog.h
eglmisc.c egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglmisc.h egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglmode.c egl: Display may be NULL in _eglLookup*. 2010-09-10 00:18:14 +08:00
eglmode.h egl: Add checks for EGL_MESA_screen_surface. 2010-07-31 17:49:32 +08:00
eglmutex.h
eglscreen.c egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglscreen.h egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglstring.c egl: Use SConscript for Windows build. 2010-05-31 13:27:41 +08:00
eglstring.h egl: s/_EGL_PLATFORM/_EGL_OS/ and s/POSIX/UNIX/. 2010-06-17 16:05:18 +08:00
eglsurface.c egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglsurface.h egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglsync.c egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
eglsync.h egl: Move fallback routines to eglfallbacks.c. 2010-10-22 18:38:30 +08:00
egltypedefs.h egl: Move attributes in _EGLImage to _EGLImageAttribs. 2010-10-22 17:15:45 +08:00

README.txt


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.