summaryrefslogtreecommitdiffstats
path: root/opengl/libs/EGL
Commit message (Collapse)AuthorAgeFilesLines
...
* | EGL: Add the EGL_ANDROID_wait_sync extensionJamie Gennis2012-09-092-0/+17
| | | | | | | | Change-Id: Ie9a78e07fcaf27c5c13797141ad3c692217607fb
* | EGL: add the native_fence_sync extensionJamie Gennis2012-09-063-1/+17
| | | | | | | | | | | | | | This change adds support for the EGL_ANDROID_native_fence_sync extension to the Android EGL layer. It also fixes a couple minor issues with the extension spec. Change-Id: Ic8829d21f37b701f33aa9c72c3d25e88e03fa3cd
* | am 6e820eec: am 6f89ebde: Merge "EGL: do not use sparse files for shader"Jean-Baptiste Queru2012-08-201-14/+15
|\ \ | |/ | | | | | | * commit '6e820eec21917f8e25c40dbc8b972468535af0e8': EGL: do not use sparse files for shader
| * EGL: do not use sparse files for shadervijay gupta2012-07-231-14/+15
| | | | | | | | | | | | | | | | | | | | | | | | - Process is killed by system with SIGBUS signal if it writes data to mapped sparse file on full filesystem. - Allocate space using write() function instead of ftruncate() to avoid creation of sparse files on full filesystem. Catch write() errors to handle out-of-space case during allocation. Bug: http://code.google.com/p/android/issues/detail?id=35376 Change-Id: Ifc366454f34e71a43a0973eda4f591a920ea3a14 Signed-off-by: Kirill Artamonov <kartamonov@nvidia.com>
* | Merge "don't error out when eglTerminate()ing an already terminated display"Mathias Agopian2012-06-131-1/+7
|\ \ | |/ |/|
| * don't error out when eglTerminate()ing an already terminated displayMathias Agopian2012-06-131-1/+7
| | | | | | | | | | | | so says the EGL specification, section 3.2 Change-Id: Ice60530f8f6e47b4e14e06d2ab8eba799a7688a6
* | reduce PB size from 2MB to 512KBMathias Agopian2012-06-051-0/+47
|/ | | | | | | | this allows us to enable h/w acceleration on low-end devices while keeping memory usage down. Bug: 6557760 Change-Id: I8af2de3038dc2579360b8b73aa452cb7a0e506a9
* fix EGL_CLIENT_STRINGMathias Agopian2012-05-211-1/+1
| | | | | | | | it should read OpenGL_ES (with an underscore) Bug: 6529643 Change-Id: I7caf07793bffe5a8dcceaff496a222077486fc87
* Disable EGL hibernation due to jankJesse Hall2012-05-042-7/+13
| | | | | | | | | | Hibernating EGL takes a long time (>100 ms) and blocks all other rendering. During window animations, the outgoing activity begins hibernation before the animation stops, causing visible stutter. Hibernation is still available by setting 'BOARD_ALLOW_EGL_HIBERNATION := true' in the devices BoardConfig.mk Change-Id: Iab4e00723a1adcd97481e81b2efdc821b3e9712f
* Fix deadlock when cleaning objects in eglTerminateJesse Hall2012-04-172-29/+79
| | | | | | | | | | | | | | | | | | When eglTerminate() is called with a window surface still exists, a deadlock would occur since egl_display_t::terminate() holds a lock while destroying the window surface, which calls onWindowSurfaceDestroyed() which attempts to take the same lock. This change refactors the hibernation code and data into a separate object with its own lock, separate from the egl_display_t lock. This avoids the deadlock and better encapsulates the hibernation logic. The change also fixes a bug discovered incidentally while debugging: hibernating after calling eglTerminate() succeeds, but will cause awakens from subsequent eglInitialize() to fail. We will no longer hibernate a terminated display. Change-Id: If55e5bb603d4f8953babc439ffc8d8a60af103d9
* Hibernate the EGL implementation when idleJesse Hall2012-04-096-17/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | If the EGL implementation supports the EGL_IMG_hibernate_process extension, use it to hibernate (and hopefully release memory or other resources) when the process isn't actively using EGL or OpenGL ES. The idleness heuristic used in this change is: (a) Wake up when entering any EGL API call, and remain awake for the duration of the call. (b) Do not hibernate when any window surface exists; this means the application is very likely in the foreground. (c) Do not hibernate while any context is made current to a thread. The app may be using a client API without the EGL layer knowing, so it is not safe to hibernate. (d) Only check these conditions and attempt to hibernate after a window surface is destroyed or a thread's context is detached. By not attempting to hibernate at the end of every EGL call, we avoid some transient wakeups/hibernate cycles when the app is mostly idle, or is starting to become active but hasn't created its window surface yet. On a Galaxy Nexus, hibernating frees 1567 VM pages from the process. Both hibernating and waking can take anywhere from 30ms to over 100ms -- measurements have been very inconsistent. Change-Id: Ib555f5d9d069aefccca06e8173a89625b5f32d7e
* Increment/decrement a counter around EGL callsJesse Hall2012-04-096-91/+169
| | | | | | | | | | | | This is in preparation for a change that will hibernate the underlying EGL when idle. Instead of a bare egl_display_t*, get_display() now returns a egl_display_ptr, which acts like a smart pointer. The "wakecount" counter managed by the smart pointer isn't used for anything in this change. It will be used to make sure we don't hibernate when any thread is in an EGL call, without having to hold a mutex for the duration of the call. Change-Id: Iee52f3549a51162efc3800e1195d3f76bba2f2ce
* EGL: add GPU frame completion tracingJamie Gennis2012-04-063-3/+84
| | | | | | | This change adds a debug option to EGL to use an EGLSyncKHR each frame to determine when the GPU finishes rendering the frame. Change-Id: I09ce071db904b44f07ca814c586c291c8b59385a
* debug.egl.finish can be used to force a glFinish() when eglSwapBuffers() is ↵Mathias Agopian2012-03-253-1/+21
| | | | | | | | called this debug property is evaludated at eglInitialize() time. Change-Id: Ie439e4aac87f7fdc6ab2add86183d6d042f3ee8b
* gltrace: Expose a function to set OpenGL trace level.Siva Velusamy2012-03-092-17/+45
| | | | | | | | This patch adds a function setGlDebugLevel() to libEGL to enable GL tracing. This will be used by the Java layer to add an option to "am start" that can enable tracing for a particular application. Change-Id: Ie1dbdd550f502df8633553595cb33ee9d9ae44e1
* Add tracing to various graphics components.Jamie Gennis2012-02-271-0/+5
| | | | | | | This change adds ATRACE call tracing to BufferQueue, SurfaceTextureClient, SurfaceTexture, SurfaceFlinger, Layer, and EGL. Change-Id: I9d75ed26f5a3f0d1af635da38289520134cfbbb7
* Don't wrap EGLImageKHR and EGLSyncKHR anymoreMathias Agopian2012-02-143-230/+35
| | | | | | | | this simplify our EGL wrapper implementation a lot. This wrapping is no longer needed now that we can only support a single underlaying EGL implementation. Change-Id: I8213df7ac69daac447f1fe6e37044b78aac4e9a9
* EGLConfig is now not remaped to an internal EGLConfigMathias Agopian2012-02-136-261/+54
| | | | | | | this is possible now that we support only a single EGL implementation. this allows a large code simplification. Change-Id: I7a6b9db4c5d60f4407c6061e7a68729af63d5242
* remove multiplexing of multiple EGL implementationMathias Agopian2012-02-1310-427/+258
| | | | | | | | | | from now on, the system can only have one EGL implementation. this means the software and h/w renderer cannot be used at the same time on a device. Of course, the h/w renderer is always prefered; in its absence we default to the software renderer. Change-Id: Ib579f58055dd0ce4c4a99144131efa11c16ca3d3
* fix a dead-lock in eglMakeCurrentMathias Agopian2012-02-032-22/+54
| | | | | | | | | | this was introduced in a recent change. eglMakeCurrent can end up calling eglDestroyImageKHR via ANativewWindow::disconnect when the consumer is in the same process. we make sure we don't hold the lock while this is happening. Change-Id: Id17fe4fd76eecf5f962cefb9aa32be41fc1b042d
* fix a race condition in eglMakeCurrent()Mathias Agopian2012-01-303-35/+52
| | | | | | | | | | | | | | it would happen when a context was made non-current, in this case we would call the implementation's eglMakeCurrent() which would succeed, if we're rescheduled at that point, another eglMakeCurrent() could make that context current to another thread, however, when we came back to the original call we would overwrite egl_context_t internal state. this is fixed by moving the critical section under egl_display_t's lock. Change-Id: I743c85696e13263d3a9570824940263df0caacdc
* Merge "add all needed GL extension wrappers"Mathias Agopian2012-01-301-16/+34
|\
| * add all needed GL extension wrappersMathias Agopian2012-01-301-16/+34
| | | | | | | | | | | | | | when increasing MAX_NUMBER_OF_GL_EXTENSIONS to 256 we also needed to create all the corresponding wrappers. Change-Id: I90edaaf0885ccdfab48e7a1396bcf88e039cfb25
* | add support for GL_EXT_debug_markerMathias Agopian2012-01-296-10/+84
|/ | | | | | | | | | | | | | This extension is always added to the GL_EXTENSIONS extension string for the current GL context, regardless of if it's supported by the h/w driver. The extension itself will be handled by GLES_trace (eventually), when GLES_trace is not enabled, it'll result to a no-op. If the h/w implementation has this extension, we'll call that version instead of our dummy version. Change-Id: Ie5dd3387c4d45cd5ed5f03b73bda6045620a96bc
* hack up frame latency measurementJamie Gennis2012-01-241-0/+20
| | | | Change-Id: I6d9a466a23285304f0e229a5649815636ab5d6af
* Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGESteve Block2012-01-087-25/+25
| | | | | | | See https://android-git.corp.google.com/g/#/c/157220 Bug: 5449033 Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
* Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGESteve Block2012-01-063-6/+6
| | | | | | | See https://android-git.corp.google.com/g/157065 Bug: 5449033 Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
* gltrace: transport buffering and context managementSiva Velusamy2012-01-042-2/+8
| | | | | | | | | | | This patch adds two improvements: 1. Protobuf messages are buffered and sent in chunks. 2. Multiple EGL contexts are handled properly: Corresponding to each EGLContext, a GLTraceContext with a unique ID is created. On eglMakeCurrent, the appropriate GLTraceContext is set and is used while tracing subsequent GL Calls in that thread. Change-Id: I34076376d3e5af205c87c7396ea47659844abd6e
* Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGESteve Block2012-01-034-25/+25
| | | | | | | See https://android-git.corp.google.com/g/156016 Bug: 5449033 Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
* Merge "glestrace: Framework for GLES tracing library"Siva Velusamy2011-12-026-48/+32
|\
| * glestrace: Framework for GLES tracing librarySiva Velusamy2011-12-026-48/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch provides a framework for tracing GLES 1.0 and 2.0 functions. It is missing a lot of features, but here are the things it accomplishes: - Stop building the glesv2dbg library, and build the glestrace library instead. - Replace the hooks for glesv2dbg with the ones for glestrace. - Add the basics for the trace library. Currently, this traces all GL functions, but not all required data is sent for all the functions. As a result, it will not be possible to reconstruct the entire GL state on the host side. The files gltrace.pb.* and gltrace_api.* are both generated using the tools/genapi.py script. Change-Id: Id60a468f7278657f008bc6ea1df01f9bdfecfdd3
* | add a way to access the version string of the h/w implementation of EGLMathias Agopian2011-11-291-0/+8
|/ | | | | | | we use a hidden egl extension. the version string is printed in SF's dumpsys log. Change-Id: I123eb4bde6de462bb2404c67b74d6d6219a48d6a
* Merge "EGL: Use cache sizes defined in the BoardConfig" into ics-mr1Jamie Gennis2011-11-211-2/+10
|\
| * EGL: Use cache sizes defined in the BoardConfigJamie Gennis2011-11-211-2/+10
| | | | | | | | | | | | | | | | | | | | | | This change introduces two new BoardConfig variables to control the size limits of the EGL blob cache. MAX_EGL_CACHE_ENTRY_SIZE is the size limit for values inserted into the cache, and MAX_EGL_CACHE_SIZE is the size limit for all entries in the entire cache (including both keys and values). If either of these BoardConfig variables are not defined then a default size limit is used instead. Change-Id: I6703d93f966b6389c6499f23d841e42339f9c9d7
* | EGL: default to swap interval 1Jamie Gennis2011-11-211-0/+5
|/ | | | | | | This change explicitly sets swap interval 1 on the window when an EGLSurface is created to render to it. Change-Id: I91eb29dbee3ae4a55076b921f084d503fbe94e03
* Merge "EGL: fix blob cache extension detection" into ics-mr1Jamie Gennis2011-11-171-1/+1
|\
| * EGL: fix blob cache extension detectionJamie Gennis2011-11-171-1/+1
| | | | | | | | | | Bug: 5474671 Change-Id: I6359063ccf23f076fc84c80b8a2f6731a65eef18
* | be a bit more defensive when parsing extension stringsMathias Agopian2011-11-161-9/+13
| | | | | | | | | | | | | | hopefully this will fix a crash in the emulator. Bug: 5624674 Change-Id: I96586e29ea20efd73c4ad50870df5b7368bf3c3b
* | rework a bit how we manage EGL extensionsMathias Agopian2011-11-143-41/+77
|/ | | | | | | | | | | | | - don't advertise extensions that are not supported by any implementation - remove EGL_ANDROID_swap_rectangle which is not implemented by anybody and confuses people - add some comments about mandatory extensions Bug: 5428001 Change-Id: Id8dc48116ac1d1eb79ec9ef55d03e29d4257c1f3
* fix crash when validating an invalid EGL objectsMathias Agopian2011-11-146-41/+48
| | | | | | | | | | | | the code that validated EGL objects dereferenced the object to access its EGLDisplay -- needed for validation (!). This was wrong for two reasons, first we dereferenced the object before validating it (potentially leading to a crash), secondly we didn't validate that the object existed in the right EGLDisplay. We now use the EGLDisplay passed by the user API. Change-Id: I66f9e851d4f8507892a6b1fee3065f124c4e7138
* Merge "EGL: add the ANDROID suffix to the blob cache ext" into ics-mr1Jamie Gennis2011-11-143-24/+26
|\
| * EGL: add the ANDROID suffix to the blob cache extJamie Gennis2011-11-113-24/+26
| | | | | | | | | | | | | | This change adds the ANDROID suffix to the all the types and functions defined by the EGL_ANDROID_blob_cache extension. Change-Id: I087875b96d9a7053efb9c8d5614f9f765eed799d
* | Merge "Terminate EGL when an app goes in the background" into ics-mr1Romain Guy2011-11-101-0/+2
|\ \ | |/ |/|
| * Terminate EGL when an app goes in the backgroundRomain Guy2011-11-101-0/+2
| | | | | | | | | | | | | | | | This does not happen on high end gfx devices. This happens only if only one EGL context is initialized in the current process. Change-Id: Ibd1737efdf84eef8a84108b05795440d1ae9964e
* | EGL: add deferred saving of the cacheJamie Gennis2011-11-082-0/+34
|/ | | | | | | | This change causes any insertions into the EGL cache to trigger an attempt to save the cache contents to disk. The save operation is deferred to allow multiple cache insertions to be batched up. Change-Id: I6cfec9c0dbbef94d3f8880860e2a365dccc296c7
* EGL: implement loading and saving the cacheJamie Gennis2011-11-083-5/+179
| | | | | | | This change adds support for saving and loading the contents of the EGL cache. It also adds some simple tests for the EGL cache. Change-Id: I18e5e789e0897a0783d29d1c1e64d26de2dd44c4
* EGL: use an in-memory the blob cacheJamie Gennis2011-11-073-16/+152
| | | | | | | | This change makes the makes the stub EGL_ANDROID_blob_cache callbacks actually use a BlobCache object. Bug: 5474671 Change-Id: I5cbaae2dea3aad2fe306c9f57029c3f215a0863a
* EGL: Add stubs for EGL_ANDROID_blob_cacheJamie Gennis2011-11-044-0/+138
| | | | | | | This change adds a stub cache implementation that gets passed to the underlying EGL implementation at initialization time. Change-Id: I14437c5b6f91b7a34a19bb02ad802e6e54f88d2a
* don't log EGL errors due to unimplemented proprietary extensionsMathias Agopian2011-10-053-15/+24
| | | | Change-Id: Icfc33d4f55d1e7fb49390ce0921ba37a438c9fc2
* cleanup: fix typos in logsMathias Agopian2011-09-161-1/+1
| | | | Change-Id: Ib5744564a873ea2b84100174673dc4d3ae109fcf