summaryrefslogtreecommitdiffstats
path: root/opengl
Commit message (Collapse)AuthorAgeFilesLines
* Improve GLSurfaceView Pausing.Jack Palevich2012-04-161-2/+12
| | | | | | | | | | | | | | | | | When pausing we want to do three separate things, in order: + release the EGL surface + optionally release the EGL context + optionally terminate Egl Previously we would only do these things if we had an EGL surface. But it is possible that we don't have an EGL Surface, but still have an EGL context. And in that situation we still want to release the EGL context. Now we check the preconditions for the three cases separately. Bug: 6338235 Change-Id: I804683b3d5c136cc98ea3f5051067eea18152ddf
* Notify monitor waiters when changing mSurfaceIsBad value.Jack Palevich2012-04-101-2/+9
| | | | | | | Otherwise the waiters might not wake up, leading to ANRs. Bug: 6307843 Change-Id: I0646b4e8368f80dbff46342f75709992796973fd
* Try to survive a failure return from eglMakeCurrent.Jack Palevich2012-03-291-14/+25
| | | | | | | | | | Assume a failure in eglMakeCurrent occurs because the SurfaceView surface has been destroyed. See b/6257956 for an example of this failure happening during rotation stress testing. Change-Id: I4618703b5291aba3a3f0c6bd83c3435a67b97d33
* Make GLSurfaceView handle eglSwapBuffers errors more robustly.Jack Palevich2012-03-291-34/+31
| | | | | | | | | | | | | | | | | | | | | | | | A careful reading of the EGL spec, as well as experience with many different EGL drivers, has shown that it is error prone to attempt to discriminate between different error conditions. We now treat any error besides EGL_CONTEXT_LOST as an indication that the EGL context is in a bad state, most likely due to the window manager having removed the underlying surface flinger surface. In addition, we changed the way we deal with this kind of error: Previously we would ignore the error and keep rendering. But if the EGL context and surface has become invalid, it would be better to stop drawing. We now stop drawing until the surface view surface is recreated. See b/6032663 for an example of this problem affecting the GMM app, but note that GMM is using their own version of GLSurfaceView, so this change won't help them directly. They'll have to make a similar change to their version of GLSurfaceView. Change-Id: Iffe3e1e3a3c7a91d03140fd34391eadeaecf777e Signed-off-by: Jack Palevich <jackpal@google.com>
* Merge "Package restrictions per user"Amith Yamasani2012-03-221-1/+2
|\
| * Package restrictions per userAmith Yamasani2012-03-221-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Packages can be enabled/disabled per user. This requires maintaining stopped/launched states and enabled / disabled components and packages per user. Refactored pm.Settings and PackageSettingsBase to keep track of states per user. Migrated the stopped-packages.xml to users/<u>/package-restrictions.xml Changed intent resolution to handle individual user restrictions. Bunch of IPackageManager calls now have a userId argument. Make AppWidgetService handle removals of packages. Added some tests for pm.Settings and PackageManager. Change-Id: Ia83b529e1df88dbcb3bd55ebfc952a6e9b20e861
* | Merge "Remove EGL context limit for Adreno GPUs."Jack Palevich2012-03-221-2/+6
|\ \
| * | Remove EGL context limit for Adreno GPUs.Jack Palevich2012-03-191-2/+6
| |/ | | | | | | | | | | | | | | | | | | | | | | This change allows Adreno GPUs to have multiple EGL contexts. We had to limit this in earlier versions of Android due to limitations in the Adreno GPU driver (only 8 EGL contexts allowed system wide.) That brand of GPU has improved its EGL drivers to support multiple EGL contexts in more recent versions of their drivers used on more recent versions of Android. Bug: 6142005 Change-Id: Id3030466be9a3d9fbe728f1785378c1f05da98fe
* | Ignore EGL_BAD_CURRENT_SURFACE errors from eglSwapBuffersJack Palevich2012-03-151-4/+8
|/ | | | | | | | | | | | | | | Certain EGL device drivers are generating this error, so we need to survive it. (It's not clear from the EGL spec whether this is a legitimate error code, but since it's being generated we need to handle it.) Remove logging of expected errors from elSwapBuffers. We expect these errors to happen, and are handeling them by ignoring them. No need to clutter the logs. Bug: 6083241 Change-Id: If17dcfbb68d3009b92cf95a448728ccb47023b51
* Expose a function to set OpenGL Trace level.Siva Velusamy2012-03-091-2/+11
| | | | | | | This patch adds a function setGlDebugLevel() to libEGL, and exposes it to the Java layer at android.opengl.GLUtils.enableTracing(). Change-Id: Ia5abb130bc32fcfe3ab25b0a0a5283a54c54f357
* remove files that moved to frameworks/nativeMathias Agopian2012-03-07293-75622/+0
| | | | Change-Id: I140d291e520097b1148930f736823650e08488f7
* fixup hardcoded include paths for new projectMathias Agopian2012-03-071-2/+2
| | | | Change-Id: Id443ec5c99bb4d7653905f1be1f72a029e0cf087
* Merge "gltrace: Send vertex attribute data after glDraw() call."Siva Velusamy2012-03-067-51/+418
|\
| * gltrace: Send vertex attribute data after glDraw() call.Siva Velusamy2012-03-017-51/+418
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch enables tracing of vertex attribute data that is specified using glVertexAttribPointer(). At the time the glVertexAttribPointer() call is made, we only receive a pointer in client space, without any indication of the size (# of attributes). This size is known only at the time of the glDraw() call. This patch generates a new message glVertexAttribPointerData() when a draw call is issued that contains the vertex attribute data. A glDrawArrays() call directly gives the size of data to copy. A glDrawElements() call gives the indices to copy. In such a case, all data between the min & max indices drawn are copied and sent to the host. To support glDrawElements() with an element array buffer, this patch also adds state that maintains a copy of all element array buffers. Change-Id: I434da794a0aa9ada8e7474e219ffb1d79b183ecf
* | fixup include pathsMathias Agopian2012-03-0520-29/+24
|/ | | | | | | - remove unneeded include deps - remove some hardcoded include paths Change-Id: Ifae0e2b2d738e0f94f8525c45be78f4227ce1673
* 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
* libagl shouldn't export anythingMathias Agopian2012-02-271-18/+640
| | | | Change-Id: Ia823dbc56aab2a0b8a6063df4348fe6baac124c6
* Merge "gltrace: Make code 64-bit safe."Siva Velusamy2012-02-274-555/+2118
|\
| * gltrace: Make code 64-bit safe.Siva Velusamy2012-02-274-555/+2118
| | | | | | | | | | | | | | | | | | Currently, the trace API passes the pointers that need to be patched up via 32 bit integers. Such code will not be 64 bit safe. This patch sends all pointers in a separate array of pointers for the fixup calls to read from. Change-Id: If975333f11a6f6f9a74fba57de328affaed452a5
* | Merge "gltrace: attach buffer data sent with glBufferData"Siva Velusamy2012-02-271-0/+28
|\ \ | |/
| * gltrace: attach buffer data sent with glBufferDataSiva Velusamy2012-02-241-0/+28
| | | | | | | | | | | | | | Attach the buffer that is passed with glBufferData and glBufferSubData to the proto buf. Change-Id: I1b4c1172d405736b06cb0a356a6e241e1d60c4d5
* | remove dependency on android_native{s_priv|buffer}.hMathias Agopian2012-02-243-6/+3
| | | | | | | | Change-Id: Ie4b95f7061c240f37c504414259f92d72c4ffc89
* | remove libui dependency on libEGLMathias Agopian2012-02-2438-70/+189
|/ | | | Change-Id: I1194f04085637d5c384e134967249430cc43b6ee
* Merge "gltrace: Trace thread time and wall clock time."Siva Velusamy2012-02-178-1334/+3138
|\
| * gltrace: Trace thread time and wall clock time.Siva Velusamy2012-02-178-1334/+3138
| | | | | | | | | | | | | | For each gl function, trace both the thread and wall clock times. Change-Id: I32b6caa67fa50bf915dab89b3c5021ee82e28d55
* | Merge "Remove unused private APIs"Romain Guy2012-02-174-655/+0
|\ \ | |/ |/|
| * Remove unused private APIsRomain Guy2012-02-174-655/+0
| | | | | | | | Change-Id: Ib22005c7ed9923120089a1f1c806bca55bb90967
* | Merge "Don't wrap EGLImageKHR and EGLSyncKHR anymore"Mathias Agopian2012-02-149-289/+39
|\ \ | |/ |/|
| * Don't wrap EGLImageKHR and EGLSyncKHR anymoreMathias Agopian2012-02-149-289/+39
| | | | | | | | | | | | | | | | 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
* | Merge "gltrace: Patch up all glUniform*() calls."Siva Velusamy2012-02-141-0/+154
|\ \ | |/ |/|
| * gltrace: Patch up all glUniform*() calls.Siva Velusamy2012-02-141-0/+154
| | | | | | | | | | | | | | | | | | | | This patch updates the trace information for all glUniform*() calls to have the right data (the actual uniforms that are passed). In addition, as soon as a program is linked, information regarding all the active attributes and uniforms is passed on to the debugger. Change-Id: Icfbc6722789b42c413a845cf546577fa6de7da2b
* | 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
* gltrace: fixup Push & Insert Marker callsSiva Velusamy2012-02-011-0/+8
| | | | Change-Id: I58ced7225fac79ec636a65da4883614a5dce6dff
* 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
* | Merge "add support for GL_EXT_debug_marker"Mathias Agopian2012-01-3012-12/+118
|\ \ | |/ |/|
| * add support for GL_EXT_debug_markerMathias Agopian2012-01-2912-12/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "gltrace: Use Unix Domain Socket rather than INET Socket"Siva Velusamy2012-01-303-19/+21
|\ \ | |/ |/|
| * gltrace: Use Unix Domain Socket rather than INET SocketSiva Velusamy2012-01-273-19/+21
| | | | | | | | | | | | | | | | Export trace information via abstract Unix Domain Socket (UDS). This allows tracing of applications without INTERNET permission, and should be faster as well. Change-Id: Iabb67fcc2bc2484afd8128af07dca723b81c52c6
* | Merge "update GLES headers and add support for corresponding new extensions."Mathias Agopian2012-01-2915-83/+3951
|\ \
| * | update GLES headers and add support for corresponding new extensions.Mathias Agopian2012-01-2815-83/+3951
| |/ | | | | | | Change-Id: I554d9659113b4721b748ee5c1a3b1ca82b11d75e
* | remove unused codeMathias Agopian2012-01-2820-10596/+0
|/ | | | Change-Id: If900fcc50f9ffc424e270cb6063b16a2d7bc04d3
* hack up frame latency measurementJamie Gennis2012-01-241-0/+20
| | | | Change-Id: I6d9a466a23285304f0e229a5649815636ab5d6af
* gltrace: fixup data for glTexSubImage2D & glDeleteBuffersSiva Velusamy2012-01-171-23/+64
| | | | Change-Id: I1c1deb8c6026ecf1fa0ed5287ccf601416eba6dc
* Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGESteve Block2012-01-0818-51/+51
| | | | | | | 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-064-7/+7
| | | | | | | See https://android-git.corp.google.com/g/157065 Bug: 5449033 Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
* Merge "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE"Steve Block2012-01-055-15/+15
|\