summaryrefslogtreecommitdiff
path: root/opengl/libs
AgeCommit message (Collapse)Author
2012-03-07remove files that moved to frameworks/nativeMathias Agopian
Change-Id: I140d291e520097b1148930f736823650e08488f7
2012-03-01gltrace: Send vertex attribute data after glDraw() call.Siva Velusamy
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
2012-02-27Add tracing to various graphics components.Jamie Gennis
This change adds ATRACE call tracing to BufferQueue, SurfaceTextureClient, SurfaceTexture, SurfaceFlinger, Layer, and EGL. Change-Id: I9d75ed26f5a3f0d1af635da38289520134cfbbb7
2012-02-27gltrace: Make code 64-bit safe.Siva Velusamy
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
2012-02-24gltrace: attach buffer data sent with glBufferDataSiva Velusamy
Attach the buffer that is passed with glBufferData and glBufferSubData to the proto buf. Change-Id: I1b4c1172d405736b06cb0a356a6e241e1d60c4d5
2012-02-17gltrace: Trace thread time and wall clock time.Siva Velusamy
For each gl function, trace both the thread and wall clock times. Change-Id: I32b6caa67fa50bf915dab89b3c5021ee82e28d55
2012-02-14Merge "Don't wrap EGLImageKHR and EGLSyncKHR anymore"Mathias Agopian
2012-02-14Don't wrap EGLImageKHR and EGLSyncKHR anymoreMathias Agopian
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
2012-02-14Merge "gltrace: Patch up all glUniform*() calls."Siva Velusamy
2012-02-14gltrace: Patch up all glUniform*() calls.Siva Velusamy
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
2012-02-13EGLConfig is now not remaped to an internal EGLConfigMathias Agopian
this is possible now that we support only a single EGL implementation. this allows a large code simplification. Change-Id: I7a6b9db4c5d60f4407c6061e7a68729af63d5242
2012-02-13remove multiplexing of multiple EGL implementationMathias Agopian
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
2012-02-03fix a dead-lock in eglMakeCurrentMathias Agopian
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
2012-02-01gltrace: fixup Push & Insert Marker callsSiva Velusamy
Change-Id: I58ced7225fac79ec636a65da4883614a5dce6dff
2012-01-30fix a race condition in eglMakeCurrent()Mathias Agopian
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
2012-01-30Merge "add all needed GL extension wrappers"Mathias Agopian
2012-01-30add all needed GL extension wrappersMathias Agopian
when increasing MAX_NUMBER_OF_GL_EXTENSIONS to 256 we also needed to create all the corresponding wrappers. Change-Id: I90edaaf0885ccdfab48e7a1396bcf88e039cfb25
2012-01-30Merge "add support for GL_EXT_debug_marker"Mathias Agopian
2012-01-30Merge "gltrace: Use Unix Domain Socket rather than INET Socket"Siva Velusamy
2012-01-29add support for GL_EXT_debug_markerMathias Agopian
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
2012-01-29Merge "update GLES headers and add support for corresponding new extensions."Mathias Agopian
2012-01-28update GLES headers and add support for corresponding new extensions.Mathias Agopian
Change-Id: I554d9659113b4721b748ee5c1a3b1ca82b11d75e
2012-01-28remove unused codeMathias Agopian
Change-Id: If900fcc50f9ffc424e270cb6063b16a2d7bc04d3
2012-01-27gltrace: Use Unix Domain Socket rather than INET SocketSiva Velusamy
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
2012-01-24hack up frame latency measurementJamie Gennis
Change-Id: I6d9a466a23285304f0e229a5649815636ab5d6af
2012-01-17gltrace: fixup data for glTexSubImage2D & glDeleteBuffersSiva Velusamy
Change-Id: I1c1deb8c6026ecf1fa0ed5287ccf601416eba6dc
2012-01-08Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGESteve Block
See https://android-git.corp.google.com/g/#/c/157220 Bug: 5449033 Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
2012-01-06Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGESteve Block
See https://android-git.corp.google.com/g/157065 Bug: 5449033 Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
2012-01-04gltrace: add user settings to control data captured.Siva Velusamy
Currently users do not have control over the amount of data captured during tracing. This patch adds 3 settings that users can enable/disable at runtime: - capture framebuffer on eglSwap() calls - capture framebuffer on glDraw*() calls - capture texture data passed to glTexImage*() calls Disabling these options when not needed signficantly decreases the size of the trace file, and reduces performance overhead for the running application. These settings are stored in the per process GLTraceState. A separate thread listens for commands from the host, and updates the state based on the user commands. Change-Id: Ic4518b94e8bcbc5330ac7138153721caa98b365d
2012-01-04gltrace: add start time & duration to each traced call.Siva Velusamy
Change-Id: Idfec8f715f6000594b6381cbfdee9fdf6d89f484
2012-01-04gltrace: transport buffering and context managementSiva Velusamy
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
2012-01-04Merge "gltrace: attach contents of the appropriate framebuffer"Siva Velusamy
2012-01-03Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGESteve Block
See https://android-git.corp.google.com/g/156016 Bug: 5449033 Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
2011-12-09Fix convert8To4, convert8To5Jack Palevich
See b/5680952 "Compilation warnings in etc1.cpp" for discussion. Fixes b/5680952 Change-Id: I0af6ba5ed5e60f3ed7a6a28eba3b09504fee1a3f
2011-12-07gltrace: attach contents of the appropriate framebufferSiva Velusamy
Currently, gltrace always attaches the contents of the currently bound framebuffer. This patch changes it to attach the contents of FB0 on eglSwap, and the currently bound framebuffer for the glDraw* calls. Change-Id: Ice0520d45d75638fe61cd91149df773074216510
2011-12-05gltrace: Make framebuffer contents an optional message.Siva Velusamy
Currently, the contents of the FrameBuffer are sent by encoding them as the last argument to the function call. As a result, it is not possible to know if a message has the framebuffer encoded in it without looking at the function type. This patch modifies the protobuf definition to include a separate optional framebuffer message. Change-Id: Ief3a6950052d927ca0743e729457435b48c25a92
2011-12-02Merge "glestrace: Framework for GLES tracing library"Siva Velusamy
2011-12-02glestrace: Framework for GLES tracing librarySiva Velusamy
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
2011-11-29add a way to access the version string of the h/w implementation of EGLMathias Agopian
we use a hidden egl extension. the version string is printed in SF's dumpsys log. Change-Id: I123eb4bde6de462bb2404c67b74d6d6219a48d6a
2011-11-21Merge "EGL: Use cache sizes defined in the BoardConfig" into ics-mr1Jamie Gennis
2011-11-21EGL: default to swap interval 1Jamie Gennis
This change explicitly sets swap interval 1 on the window when an EGLSurface is created to render to it. Change-Id: I91eb29dbee3ae4a55076b921f084d503fbe94e03
2011-11-21EGL: Use cache sizes defined in the BoardConfigJamie Gennis
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
2011-11-17Merge "EGL: fix blob cache extension detection" into ics-mr1Jamie Gennis
2011-11-17EGL: fix blob cache extension detectionJamie Gennis
Bug: 5474671 Change-Id: I6359063ccf23f076fc84c80b8a2f6731a65eef18
2011-11-16be a bit more defensive when parsing extension stringsMathias Agopian
hopefully this will fix a crash in the emulator. Bug: 5624674 Change-Id: I96586e29ea20efd73c4ad50870df5b7368bf3c3b
2011-11-14rework a bit how we manage EGL extensionsMathias Agopian
- 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
2011-11-14fix crash when validating an invalid EGL objectsMathias Agopian
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
2011-11-14Merge "EGL: add the ANDROID suffix to the blob cache ext" into ics-mr1Jamie Gennis
2011-11-11EGL: add the ANDROID suffix to the blob cache extJamie Gennis
This change adds the ANDROID suffix to the all the types and functions defined by the EGL_ANDROID_blob_cache extension. Change-Id: I087875b96d9a7053efb9c8d5614f9f765eed799d
2011-11-10Merge "Terminate EGL when an app goes in the background" into ics-mr1Romain Guy