5.2.8. EGL limitations

The EGL library has sufficient functionality for the OpenGL ES Emulator to pass Khronos OpenGL ES 2.0 conformance tests and to provide a platform for OpenGL ES 2.0 applications to be run on a PC with either Windows XP or Windows 7.

The EGL library is a limited implementation of the EGL 1.3 specification. This section provides additional information about these limitations:

Support for OpenGL ES 1.1 and OpenGL ES 2.0 only

The EGL library does not support graphics contexts and surfaces for use with OpenVG. No configurations are returned from eglChooseConfig() for values of EGL_RENDERABLE_TYPE other than EGL_OPENGL_ES2_BIT or EGL_OPENGL_ES_BIT.

Context creation fails unless EGL_CONTEXT_CLIENT_VERSION is set to 1 or 2.

Multiple threads and multiple contexts

Multiple contexts are supported, but multiple threads are not supported and might lead to unpredictable behavior.

Window pixel format

You must set pixel format only through eglCreateWindowSurface().

Limited bitmap support

Bitmap rendering only works correctly for uncompressed, bottom-up, 32-bit RGB bitmaps.

Limited results from surface queries

All parameters to eglQuerySurface() are implemented, but those specific to OpenVG, and those that depend on the physical properties of the display, for example EGL_HORIZONTAL_RESOLUTION, return arbitrary values or EGL_UNKNOWN.

No support for swap intervals

The eglSwapInterval() function has no effect and always succeeds. The swap interval depends on the OpenGL 2.0 driver.

Changing display modes does not check pbuffer lost event

Changing display modes is not supported. A change of display mode might result in loss of Pbuffer memory. This event is not checked for. Do not change display modes while running the emulator.


Pbuffers and pixmaps are supported with the WGL_ARB_pbuffer extension. This specifies that a WGL_PBUFFER_LOST_ARB query can check for loss of memory due to a display mode change.

Use of displays following eglTerminate

Displays are destroyed in eglTerminate(). Later calls treat the display as invalid.

EGL_MATCH_NATIVE_PIXMAP attribute not supported

The attribute EGL_MATCH_NATIVE_PIXMAP is not supported by eglChooseConfig().

The EGL 1.3 specification says that the attribute EGL_MATCH_NATIVE_PIXMAP was introduced to make it easier to choose an EGLConfig to match a native pixmap. This attribute is accepted by the emulator, but is ignored other than to validate the provided handle.

Applications should work as expected even if the chosen EGLConfig does not match the pixmap format because rendering is done to an internal buffer and then copied to the pixmap, including any necessary pixel format conversions. If an eight bit per channel EGLConfig is desired (to ensure the same color precision as the native pixmap), then EGL_RED_SIZE, EGL_GREEN_SIZE and EGL_BLUE_SIZE should be explicitly passed to eglChooseConfig().

Resizing a native window

Resizing a native window does not update the surface attributes.

EglChooseConfig always sets WGL_DOUBLE_BUFFER_ARB true

The EGL attribute list is translated to an attribute list for WGL. This WGL attribute list always has WGL_DOUBLE_BUFFER_ARB set to true. This means that some available matching WGL configurations might not be returned.

Copyright © 2009-2012 ARM. All rights reserved.ARM DUI 0511E