summaryrefslogtreecommitdiffstats
path: root/opengl
Commit message (Collapse)AuthorAgeFilesLines
* Merge "libagl: Transform the vertex if using eye space lighting with point ↵Mathias Agopian2012-09-191-0/+7
|\ | | | | | | lights"
| * libagl: Transform the vertex if using eye space lighting with point lightsMartin Storsjo2012-07-121-0/+7
| | | | | | | | | | | | | | This fixes lighting when using point lights, when eye space lighting is used (which is the default). Change-Id: I0cd0d2329893d6b5f8af3b1e595274c2076fc322
* | 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>
* reduce PB size from 2MB to 512KBMathias Agopian2012-06-052-1/+53
| | | | | | | | this allows us to enable h/w acceleration on low-end devices while keeping memory usage down. Bug: 6557760 Change-Id: I8af2de3038dc2579360b8b73aa452cb7a0e506a9
* Implement the EGL_KHR_fence_sync in libaglJesse Hall2012-05-222-0/+78
| | | | | | | | | Implementing this in libagl allows us to start using it for SurfaceTexture in emulator builds, which is necessary to avoid corruption in the Browser when using the host-accelerated GL path. Bug: 6515813 Change-Id: Icafba8687cb5d010d8d42b3866b298d2be984fc9
* fix EGL_CLIENT_STRINGMathias Agopian2012-05-212-2/+2
| | | | | | | | it should read OpenGL_ES (with an underscore) Bug: 6529643 Change-Id: I7caf07793bffe5a8dcceaff496a222077486fc87
* gltrace: Allow receiving commands of length > 4Siva Velusamy2012-05-163-9/+53
| | | | | | | | | | | | | Currently, gltrace offers very few trace collection options. As a result, these options are encoded in a single integer. The trace control task simply receives integers and interprets them as commands. This patch changes the control protocol to first receive the command length followed by the actual command itself. This allows for future flexibility to provide enable other commands. Change-Id: Id5f56c80a025bbbe7613ab4457e092732e7d9dc9
* Disable EGL hibernation due to jankJesse Hall2012-05-043-7/+17
| | | | | | | | | | 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
* gldebugger: Allow connections from root userSiva Velusamy2012-04-261-2/+3
| | | | Change-Id: I26ce670ae93c43bd36843576e824a9d7acea644d
* Merge "Added an EGLTest for eglTerminate"Mathias Agopian2012-04-192-0/+33
|\
| * Added an EGLTest for eglTerminateDaniel Lam2012-04-162-0/+33
| | | | | | | | | | | | | | This tests if eglTerminate can succeed while objects are leaked. Currently the test fails because of a deadlock. Change-Id: Ibe26edfda28691284d0674e803e8d3114f3ce4c6
* | 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-097-18/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Merge "frameworks/native: prevent some opengl tests from building in pdk"Colin Cross2012-03-271-1/+39
|\
| * frameworks/native: prevent some opengl tests from building in pdkColin Cross2012-03-261-1/+39
| | | | | | | | | | | | | | | | Some of the tests in frameworks/native/opengl/tests depend on java or jni, and shouldn't be in frameworks/native. Prevent them from building in pdk builds for now. Change-Id: Ie7a012513dd03992ac1f093bd245aeca826c9cb9
* | 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
* remove dependency of EGL on ndk headerMathias Agopian2012-03-231-2/+1
| | | | Change-Id: Ia6e489b5b4f028864bdf54923e81f604710dd8ad
* gltrace: Only accept connections from the shell.Siva Velusamy2012-03-151-0/+14
| | | | | | Only accept incoming connections from the shell user. Change-Id: Ibef1a796d794d45f73db59949b39cb1ce68542b4
* 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
* fix include pathMathias Agopian2012-03-071-2/+2
| | | | Change-Id: I84adf53594cd4083a4a8ab475f175abb7414cda5
* 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
* 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 "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
|\ \