summaryrefslogtreecommitdiff
path: root/src/egl/main/eglapi.c
AgeCommit message (Collapse)Author
2010-07-28egl: EGL_KHR_surfaceless_* extensionsKristian Høgsberg
These extensions allow an application to make a context current by passing EGL_NO_SURFACE for the write and read surface in the call to eglMakeCurrent. The motivation is that applications that only want to render to client API targets (such as OpenGL framebuffer objects) should not need to create a throw-away EGL surface just to get a current context.
2010-07-06egl: Remove unnecessary headers.Vinson Lee
2010-07-06egl: Rework driver loading.Chia-I Wu
Driver loading is now splitted into two stages. In the first stage, an _EGLModule is created for each driver: user driver, default drivers, and all files in the search directories that start with "egl_". Modules are not loaded at this stage. In the second stage, each module is loaded to initialize a display. The process stops at the first module that can initialize the display. If eglGetProcAddress is called before eglInitialize, the same code path will be taken to find the first module that supports EGL_DEFAULT_DISPLAY. Because we do not want to initialize the display, drv->Probe is used instead in this case.
2010-07-03egl: Always use EGLAPIENTRY in api function prototypesnobled
Fixes the build on Windows.
2010-06-23egl: Add support for EGL_MESA_drm_display.Chia-I Wu
The extension defines eglGetDRMDisplay that creates an EGLDisplay from a DRM fd. Calling eglCreateWindowSurace or eglCreatePixmapSurface with such displays will generate EGL_BAD_NATIVE_WINDOW or EGL_BAD_NATIVE_PIXMAP.
2010-06-23egl: Introduce platform displays internally.Chia-I Wu
This commit introduces type-safe platform displays internally. A platform display consists of a generic pointer and an enum that specifies the platform. An EGLDisplay is created from a platform display. Native displays become platform displays whose platform is determined by _eglGetNativePlatform(). Platform windows and pixmaps may also be introduced if needed.
2010-05-31egl: Use SConscript for Windows build.Chia-I Wu
Fix several portability issues and add SConscript for Windows build.
2010-05-14egl: Silence uninitialized variable warnings.Vinson Lee
2010-05-13egl: Implement EGL_NOK_swap_regionKristian Høgsberg
This extension adds a new function which provides an alternative to eglSwapBuffers. eglSwapBuffersRegionNOK accepts two new parameters in addition to those in eglSwapBuffers. The new parameters consist of a pointer to a list of 4-integer blocks defining rectangles (x, y, width, height) and an integer specifying the number of rectangles in the list.
2010-05-13egl: Allow a prioritized list of default driversKristian Høgsberg
When there is no user driver or any matching display drivers we fall back to the default driver. This patch lets us have a list of default drivers instead of just one. The drivers are loaded in turn and we attempt to initialize the display. If it fails we unload the driver and move on to the next one. Compared to the display driver mechanism, this avoids loading a number of drivers and then only using one. Also, we call Initialize to see if the driver will work instead of relying on Probe. To know for sure that a driver will work, Probe really have to do a full Initialize, so we will just use Initialize directly.
2010-02-19egl: Silence warnings in check/return macros.Chia-I Wu
The macros give warnings when compiled with -pedantic. This commit is based on a patch by Brian Paul, with minor changes to add do {} while(0) and rename the check macros.
2010-02-17egl: Always lock a display before using it.Chia-I Wu
This gives a simple access control to the display. It is potentially slow, but a finer grained mutex can always be used in the future. The benefit of this simple approach is that drivers need not to worry about thread-safety.
2010-02-17egl: Make eglGetDisplay atomic.Chia-I Wu
Merge _eglNewDisplay and _eglLinkDisplay into _eglFindDisplay. Remove unused _eglUnlinkDisplay.
2010-02-17egl: eglGetError should return the status of the last call.Chia-I Wu
Use macros to record the status of the function call before returning. This is the only way that eglGetError can return the status of the most recent function call.
2010-02-17egl: Use new error checking macros.Chia-I Wu
Replace all uses of _EGL_DECLARE_* and _eglCheck* by _EGL_CHECK_*.
2010-02-17egl: Add new error checking macros.Chia-I Wu
Add _EGL_CHECK_* which will replace _EGL_DECLARE_* for error checking. Move _eglCheck* earlier in the file so that the macros and the functions are grouped together.
2010-01-30egl: Clean up header inclusions.Chia-I Wu
Mainly to remove eglcurrent.h and egldisplay.h from eglglobals.h.
2010-01-28egl: Correctly unbind contexts in eglReleaseThread.Chia-I Wu
MakeCurrent unbinds the current context of the current API. Modify the current API to make sure all contexts are correctly unbound.
2010-01-28egl: eglMakeCurrent should accept an uninitialized display.Chia-I Wu
When no context or surface are given, the display is allowed to be uninitialized. Most drivers cannot handle an uninitialized display. But they are updated to at least throw a fatal message.
2010-01-28egl: Use a boolean to indicate whether a display is initialized.Chia-I Wu
The driver pointer of the display was used to decide whether a display is initialized. Use a boolean for that purpose allows accessing the driver of an uninitialized display.
2010-01-26egl: Remove _eglOpenDriver and _eglCloseDriver.Chia-I Wu
_eglCloseDriver is no-op and _eglOpenDriver does nothing but call _eglMatchDriver. Export _eglMatchDriver directly.
2010-01-26egl: Remove _eglGetCurrentSurface and _eglGetCurrentDisplay.Chia-I Wu
They have little use in drivers since drivers need to work for multiple current contexts.
2010-01-26egl: Fix leaks in eglReleaseThread.Chia-I Wu
There may be multiple bound contexts that should be unbound.
2010-01-25egl: Native types are renamed in EGL 1.3.Chia-I Wu
Rename Native*Type to EGLNative*Type.
2010-01-25egl: Add support for EGL_KHR_image.Chia-I Wu
Individual drivers still need to implement the API hooks.
2010-01-25egl: Update headers.Chia-I Wu
Update to the current versions found at http://www.khronos.org/registry/egl/. There is one modification in khrplatform.h for GCC visibility.
2010-01-24egl: Make surfaces and contexts resources.Chia-I Wu
Turn _EGLSurface and _EGLContext into _EGLResource so that they can be managed uniformly.
2010-01-20egl: Use _eglPreloadDrivers.Chia-I Wu
Replace the use of _eglPreloadDriver by _eglPreloadDrivers. The latter supports EGL_DISPLAY which have a better chance to "just work".
2010-01-12egl: Add _EGLDriver as the first argument to GetProcAddress.Chia-I Wu
The rest of the driver API has it as the first argument. It should be there so that a driver has access to itself.
2009-10-15egl: Rework the synchronization primitives.Chia-I Wu
This adds error checking to the synchronization primitives. And eglWaitGL is now implemented by eglWaitClient. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-10-15egl: Rework eglSwapInterval.Chia-I Wu
This adds error checking to eglSwapInterval and clamps the swap interval. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-10-15egl: Rework error checking in eglSwapBuffers.Chia-I Wu
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-10-15egl: Update comments about eglapi.c.Chia-I Wu
Mention that opaque handles are looked up and checked. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-10-15egl: Rework error checking in eglGetCurrentSurface.Chia-I Wu
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-10-13egl: Allow binding to any client API.Chia-I Wu
As a result, EGL_NONE is no longer a valid client API. And it is possible that no config supports the current bound API. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-10-13egl: Preload a driver if eglGetProcAddress is called early.Chia-I Wu
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-10-13egl: Remove core functions from eglGetProcAddress.Chia-I Wu
eglGetProcAddress may not be used to query core (non-extension) functions. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-08-18egl: _eglCloseDriver should be no-op.Chia-I Wu
Move drv->API.Terminate call to eglTerminate. Remove _eglReleaseDisplayResource as drivers are doing it. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-08-18egl: Some per-driver data should be per-display.Chia-I Wu
Move some fields of _EGLDriver to _EGLDisplay. It also becomes unnecessary to pass _EGLDisplay to drivers when _eglMain is called. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-08-18egl: Change the way drivers are loaded.Chia-I Wu
Driver is chosen and preloaded when eglGetDisplay is called. Later when eglInitialize is called, the same driver is matched to initialize the display. Also, add new, but unused, hooks to EGLDriver to allow a driver to probe a display or unload itself. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-08-18egl: Overhaul driver API.Chia-I Wu
The motivation is so that drivers do not need to look up and check for bad display, context, and etc. It also becomes unnecessary for drivers to call the link functions. This commit makes eglapi.[ch] do the lookup and check. As a result, the driver API is overhauled, and almost all sources and drivers need update. The updates are mainly find and replace with human brains. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-08-11egl: Make _eglGlobal initialize statically.Chia-I Wu
Now that display and surface hash tables are moved out, _eglGlobal can be initialized statically. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-07-17egl: Return the same EGL Display for the same native display.Chia-I Wu
The latest revision of the spec explicitly requires the same handle to be returned for the same native display. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-07-17egl: Add funtions to link contexts and surfaces to displays.Chia-I Wu
EGL contexts and surfaces are resources of displays. They should be managed by displays. This commit adds a bunch of functions to egldisplay.c to help establish the links between contexts/surfaces and displays. How links are established is considered opaque outside display. Functions like _eglGetSurfaceHandle or _eglLookupSurface are therefore moved to egldisplay.c, with some small modifications. The idea is also extended to display. That is, displays need to link to themselves to be looked up. This commit only adds the functions. A commit to use them should follow. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-07-17egl: Extend per-thread info for multiple current contexts.Chia-I Wu
EGL allows multiple current contexts, as long as they are bound to different client APIs. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2009-07-17egl: Support per-thread info.Chia-I Wu
This commit introduces a "current" system to manage per-thread info. It uses TLS, if GLX_USE_TLS is defined, or pthread, if PTHREADS is defined. If none of them are defined, it uses a dummy implementation that is just like before. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
2008-08-06egl: fix version handlingJonathan White
2008-05-30egl: new eglGetProcAddress() codeBrian Paul
The idea is to pass the call down to the device driver where an API-specific query can be made. Untested.
2008-05-30egl: clean-up re-org of the client API stateBrian Paul
2008-05-29egl: added Name field to _EGLDriver so a driver name string can propogate up ↵Brian Paul
through EGL_VERSION string