mesa/src/egl/main
Dylan Noblesmith 071501a681 egl: fix uninitialized values
Noticed by clang:

eglimage.c:48:28: warning: argument to 'sizeof' in 'memset' call is
the same expression as the destination; did you mean to dereference
it? [-Wsizeof-pointer-memaccess]
   memset(attrs, 0, sizeof(attrs));
          ~~~~~            ^~~~~

NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: Brian Paul <brianp@vmware.com>
2012-04-13 14:25:08 +00:00
..
.gitignore Add Makefile.in to toplevel .gitignore 2012-03-20 11:50:50 -07:00
Android.mk android: bring in i915_dri and i965_dri automatically 2011-11-26 11:42:08 +08:00
egl.def egl: Add egl.def for win32 build. 2010-08-20 19:22:50 +08:00
egl.pc.in egl/main: Convert to automake. 2012-02-29 11:52:40 -08:00
eglapi.c egl: add EGL_NV_post_sub_buffer 2011-12-20 17:04:46 +08:00
eglapi.h egl: add EGL_NV_post_sub_buffer 2011-12-20 17:04:46 +08:00
eglarray.c egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglarray.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglcompiler.h Define INLINE macro in terms of inline. 2011-09-08 09:17:42 +01:00
eglconfig.c egl: EGL_MATCH_NATIVE_NATIVE_PIXMAP cannot be EGL_DONT_CARE 2011-07-29 10:24:45 +09:00
eglconfig.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglcontext.c egl: remove #ifdef's for official extensions 2011-12-20 16:59:09 +08:00
eglcontext.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglcurrent.c egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglcurrent.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
egldefines.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
egldisplay.c egl: silence unused var warning 2011-11-10 16:00:46 -07:00
egldisplay.h egl: add EGL_NV_post_sub_buffer 2011-12-20 17:04:46 +08:00
egldriver.c egl: add copyright notices 2011-07-02 18:21:31 +09:00
egldriver.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglfallbacks.c egl: remove #ifdef's for official extensions 2011-12-20 16:59:09 +08:00
eglglobals.c egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglglobals.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglimage.c egl: fix uninitialized values 2012-04-13 14:25:08 +00:00
eglimage.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
egllog.c egl: Don't include strings.h on Windows. 2012-03-01 06:37:30 +00:00
egllog.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglmisc.c egl: add EGL_NV_post_sub_buffer 2011-12-20 17:04:46 +08:00
eglmisc.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglmode.c egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglmode.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglmutex.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglscreen.c egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglscreen.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglstring.c egl: add copyright notices 2011-07-02 18:21:31 +09:00
eglstring.h egl: Don't include strings.h on Windows. 2012-03-01 06:37:30 +00:00
eglsurface.c egl: add EGL_NV_post_sub_buffer 2011-12-20 17:04:46 +08:00
eglsurface.h egl: add EGL_NV_post_sub_buffer 2011-12-20 17:04:46 +08:00
eglsync.c egl: remove #ifdef's for official extensions 2011-12-20 16:59:09 +08:00
eglsync.h egl: remove #ifdef's for official extensions 2011-12-20 16:59:09 +08:00
egltypedefs.h egl: add copyright notices 2011-07-02 18:21:31 +09:00
Makefile.am shared-glapi: Convert to automake 2012-03-19 11:13:06 -04:00
README.txt egl: some basic docs for libEGL 2008-06-11 19:35:52 -06:00
SConscript scons: Updates for targets/egl-static. 2011-01-12 17:40:01 +08: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.