summaryrefslogtreecommitdiffstats
path: root/opengl/libs/GLES_trace
Commit message (Collapse)AuthorAgeFilesLines
* Don't try to capture the pointer when using PBOs for texture APIsBen Clayton2014-08-203-34/+85
| | | | | | | | | | If a PBO is bound, then the pointer argument is a relative offset from the start of the PBO, not an absolute address. Fixes b/17063439 Change-Id: I39629ce6c9bb3cb6bac5c9b0311287628306ddd4 (cherry picked from commit 0ad707f2f3d714af7d983d68330ed51dace815f5)
* Use the count parameter to store all the uniform vectors, not just the first ↵Ben Clayton2014-07-211-4/+8
| | | | | | | one. DO NOT MERGE. Change-Id: Ib56d859051f0b895de5c12ffa371cd4b2b65ac0b (cherry picked from commit 31b0aec64ba44b1ee0581e00a588d84f4b081512)
* Add data capturing of glCompressedTexImage2D and glCompressedTexSubImage2D ↵Ben Clayton2014-07-071-0/+63
| | | | | | calls. Change-Id: I38643f5d279a84f1b7069801d7c106fc8f1ae394
* opengl: Regenerate code with ES 3.1 and new extensionsJesse Hall2014-05-216-2/+4732
| | | | | | | | | | | | | | | | | | | | Enable ES 3.1 generation in glgen.py, and regenerate everything to add support for that as well as these new extensions in the registry: - EXT_copy_image - EXT_draw_buffers_indexed - EXT_geometry_shader - EXT_gpu_shader5 - EXT_primitive_bounding_box - EXT_shader_implicit_conversions - EXT_shader_io_blocks - EXT_tessellation_shader - EXT_texture_border_clamp - EXT_texture_buffer - EXT_texture_cube_map_array - EXT_texture_view Bug: 15028495 Change-Id: I3f45a7ef5367c70e54ce6b36a8c030ae11033434
* opengl: Update GLES headers and generate *.in from registry XMLJesse Hall2014-05-216-2134/+7030
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Import GLES headers from Khronos SVN r26322: https://cvs.khronos.org/svn/repos/registry/trunk/public/gles/api There are many non-functional whitespace and parameter name changes included here. These were introduced upstream when converting from the old .spec registry to the new XML registry. There are also some new extensions added. Unfortunately there isn't a version of the XML that matches the headers the previous versions of the *.in files were generated from, so I can't separate out the non-functional changes from the new extensions (other than temporarily hacking them out of the XML). See below for a list. Finally, I had to hack the official glext.h. Khronos hasn't updated the official GLES1 headers since switching to the XML registry, and there is one critical difference: a "const void**" parameter in the official header is "const void* const*" in the registry. I changed the header to avoid build errors with code generated from the registry. Dependencies on the *.in files required manually updating some GLES_trace/ files as well: - gltrace_api.{h,cpp} must be manually re-generated using tools/genapi.py. - New GL prototypes must be manually added to gltrace.proto. - gltrace.pb.{h,cpp} must be regenerated using aprotoc (see dev.make) New GLES extensions in libs/GLES_CM/glext_api.in: - GL_OES_byte_coordinates - GL_EXT_map_buffer_range - GL_APPLE_copy_texture_levels - GL_APPLE_sync New GLES2 extensions in libs/GLES2/gl2ext_api.in: - GL_KHR_blend_equation_advanced - GL_KHR_debug - GL_OES_sample_shading - GL_OES_texture_storage_multisample_2d_array - GL_EXT_disjoint_timer_query - GL_EXT_draw_buffers - GL_EXT_draw_instanced - GL_EXT_instanced_arrays - GL_EXT_map_buffer_range - GL_EXT_map_buffer_range - GL_EXT_multiview_draw_buffers - GL_EXT_separate_shader_objects - GL_ANGLE_instanced_arrays - GL_ANGLE_translated_shader_source - GL_APPLE_copy_texture_levels - GL_APPLE_sync - GL_INTEL_performance_query - GL_NV_blend_equation_advanced - GL_NV_copy_buffer - GL_NV_draw_instanced - GL_NV_framebuffer_blit - GL_NV_framebuffer_multisample - GL_NV_instanced_arrays - GL_NV_non_square_matrices Bug: 15028495 Change-Id: I902517c23354e14f9c63b1584db286d682315bb5
* Revert "opengl: Generate *.in from registry XML"Jesse Hall2014-05-206-7030/+2134
| | | | | | This reverts commit 4a73962c694bfe57eb2bea40ed6fb626be7006aa. Change-Id: I1fa5cbe4d0b86f6df69d616157b3fec68d706d7a
* opengl: Generate *.in from registry XMLJesse Hall2014-05-196-2134/+7030
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are many non-functional whitespace and parameter name changes included here. These were introduced upstream when converting from the old .spec registry to the new XML registry. There are also some new extensions added. Unfortunately there isn't a version of the XML that matches the headers the previous versions of the *.in files were generated from, so I can't separate out the non-functional changes from the new extensions (other than temporarily hacking them out of the XML). See below. Finally, I had to hack the official glext.h. Khronos hasn't updated the official GLES1 headers since switching to the XML registry, and there is one critical difference: a "const void**" parameter in the official header is "const void* const*" in the registry. I changed the header to avoid build errors with code generated from the registry. Dependencies on the *.in files required manually updating some GLES_trace/ files as well: - gltrace_api.{h,cpp} must be manually re-generated using tools/genapi.py. - New GL prototypes must be manually added to gltrace.proto. - gltrace.pb.{h,cpp} must be regenerated using aprotoc (see dev.make) New GLES extensions in libs/GLES_CM/glext_api.in: - GL_OES_byte_coordinates - GL_EXT_map_buffer_range - GL_APPLE_copy_texture_levels - GL_APPLE_sync New GLES2 extensions in libs/GLES2/gl2ext_api.in: - GL_KHR_blend_equation_advanced - GL_KHR_debug - GL_OES_sample_shading - GL_OES_texture_storage_multisample_2d_array - GL_EXT_disjoint_timer_query - GL_EXT_draw_buffers - GL_EXT_draw_instanced - GL_EXT_instanced_arrays - GL_EXT_map_buffer_range - GL_EXT_map_buffer_range - GL_EXT_multiview_draw_buffers - GL_EXT_separate_shader_objects - GL_ANGLE_instanced_arrays - GL_ANGLE_translated_shader_source - GL_APPLE_copy_texture_levels - GL_APPLE_sync - GL_INTEL_performance_query - GL_NV_blend_equation_advanced - GL_NV_copy_buffer - GL_NV_draw_instanced - GL_NV_framebuffer_blit - GL_NV_framebuffer_multisample - GL_NV_instanced_arrays - GL_NV_non_square_matrices Bug: 15028495 Change-Id: Ib3fa700a146adf7f1487a93e459b1e6df0dcdc42
* Rationalize GLES2/3 .in files.Jesse Hall2014-05-173-4/+2
| | | | | | | | | | | | | | We weren't using gl2_api.in, since gl3_api.in was a superset. And gl3ext_api.in was empty, and Khronos has decided to keep it that way (any GLES2/3/... extensions will be in gl2ext.h). Since libGLES2.so will have all future backwards-compatible GLES APIs, it makes sense to just use gl2_api.in and gl2ext_api.in to build its contents. This changes renames gl3_api.in to gl2_api.in and updates uses of it, and removes gl3ext_api.in and references. Bug: 15028495 Change-Id: I0745eda27ec91ee625f03e957e4fdb22035dd781
* native frameworks: 64-bit compile issuesMark Salyzyn2014-03-121-1/+1
| | | | | | | - Fix format (print/scanf) - Suppress unused argument warning messages (bonus) Change-Id: I05c7724d2aba6da1e82a86000e11f3a8fef4e728
* GLES_trace: fix compile errors on 64 bit architecturesSiva Velusamy2014-01-282-638/+640
| | | | | | | | | | GLES_trace passes some pointers back to the host. Encode them using int64's rather than int32's This fix requires an update to the host tool to look at pointers as 64 bit, and if not found, then fall back to 32 bit integers. Change-Id: I11ff2ca51290f05913c1b9143cecee1caf015543
* free EGL resources associated to a thread when it terminatesMathias Agopian2013-05-301-1/+1
| | | | | | | | | | | | | destroyed but current-to-a-thread resources are only destroyed when they're made not-current; however, we were not destroying those when the thread itself terminated, causing these resources to be leaked forever. we now install a tls-key destructor that takes care of this by calling eglReleaseThread upon thread termination. Bug: 9209776 Change-Id: I88298a34e3a27488eb81eab76717715569c7d57c
* Add liblogYing Wang2013-04-091-1/+1
| | | | | Bug: 8580410 Change-Id: I2ca4fa00dde0b574df3619134836bcb9315bd506
* Merge changes Ic344ef63,If9bb02be,Ic8f94634Jesse Hall2013-02-246-33/+5371
|\ | | | | | | | | | | | | * changes: Symlink /system/lib/libGLESv3.so -> libGLESv2.so Add ES3 support to libGLESv2 and tracing tools Import OpenGL ES 3.0 headers from Khronos SVN
| * Add ES3 support to libGLESv2 and tracing toolsJesse Hall2013-02-126-33/+5371
| | | | | | | | | | | | | | | | Since ES3 is backwards compatible with ES2, a new wrapper isn't necessary, and the Khronos implementation guidelines recommend supporting both versions with the same library. Change-Id: If9bb02be60ce01cc5fe25d1f40c4e7f37244ebf6
* | Merge changes I45836219,I70a4075eJesse Hall2013-02-232-2/+2
|\ \ | |/ | | | | | | | | * changes: Regenerate API/trace files for constness change Import constness fix from gl3.h into gl2.h.
| * Regenerate API/trace files for constness changeJesse Hall2013-02-112-2/+2
| | | | | | | | Change-Id: I45836219fc0e97607d83d458de9babb44f4c7534
* | am 45b0e435: Merge "Simplify OpenGL TLS access on ARM."Elliott Hughes2013-02-141-9/+0
|\ \ | |/ |/| | | | | | | # Via Elliott Hughes (1) and Gerrit Code Review (1) * commit '45b0e4350d3404bd194edc569e36ecca017c3d76': Simplify OpenGL TLS access on ARM.
| * Simplify OpenGL TLS access on ARM.Elliott Hughes2013-02-131-9/+0
| | | | | | | | | | | | bionic now assumes the TLS register is available, so OpenGL can too. Change-Id: If2b56a4c08de9f887759b78f70022026a181dc47
* | gltrace: Add support for tracing running applications.Siva Velusamy2012-12-202-13/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, to activate OpenGL tracing, an application has to be start with --opengl-trace option (or have a debug prop set). This CL adds support for tracing an application which may already be running. This is implemented as follows: - DDMS initiates a JDWP message to the VM indicating that opengl traces be enabled. - When that message is received, a flag is set that indicates that tracing should be enabled. - The trace flag is checked during every eglSwap() operation, and if it finds that tracing should be active and it isn't, then it starts the tracing component. Change-Id: I3347fe89fc06c7404d7aa9360f4b21e5bf36ebcb
* | am 168dfe71: am 5e530e02: am a151a19d: Merge "Fix return type of ↵Andrew Hsieh2012-11-063-8/+8
|\ \ | |/ | | | | | | | | | | glGetAttribLocation and glGetUniformLocation" * commit '168dfe71bfafebaa26b6f75df553f5fad7607669': Fix return type of glGetAttribLocation and glGetUniformLocation
| * am a151a19d: Merge "Fix return type of glGetAttribLocation and ↵Andrew Hsieh2012-11-063-8/+8
| |\ | | | | | | | | | | | | | | | | | | glGetUniformLocation" * commit 'a151a19db2fa07295837027fb5d84c02401cc78d': Fix return type of glGetAttribLocation and glGetUniformLocation
| | * Fix return type of glGetAttribLocation and glGetUniformLocationAndrew Hsieh2012-11-063-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from int to GLint. See: http://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetAttribLocation.xml http://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetUniformLocation.xml Change-Id: I4a9f8e9e34b8c3cca239ae84bfe8f3cdfd94802a
* | | gltrace: Fix NPESiva Velusamy2012-10-011-4/+2
|/ / | | | | | | Change-Id: Id7af9cd388f3508201f96a0624966c2ce01b4da5
* | gltrace: flush trace buffer on createContext & makeCurrentSiva Velusamy2012-08-161-0/+2
| | | | | | | | | | | | | | | | | | | | Certain apps (e.g. chrome) seem to create contexts which are unused for long periods of time. If tracing is stopped before those contexts are used, then the debugger never gets to know that these contexts were created. Flushing the trace after these calls ensures that the debugger knows about all created/used contexts. Change-Id: I01baa11aa56ac89eddce3c2851e4bf01076984d1
* | gltrace: Fixup vertex attrib pointers only for GLES2Siva Velusamy2012-06-113-3/+22
|/ | | | Change-Id: Ibf280c2a4372ce6e598e164eef0d72b7c0a6d1c2
* 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
* gldebugger: Allow connections from root userSiva Velusamy2012-04-261-2/+3
| | | | Change-Id: I26ce670ae93c43bd36843576e824a9d7acea644d
* 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: 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
* 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
* 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
* 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
* 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
* gltrace: fixup Push & Insert Marker callsSiva Velusamy2012-02-011-0/+8
| | | | Change-Id: I58ced7225fac79ec636a65da4883614a5dce6dff
* 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
* | update GLES headers and add support for corresponding new extensions.Mathias Agopian2012-01-287-23/+2656
|/ | | | Change-Id: I554d9659113b4721b748ee5c1a3b1ca82b11d75e
* 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-083-8/+8
| | | | | | | See https://android-git.corp.google.com/g/#/c/157220 Bug: 5449033 Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
* gltrace: add user settings to control data captured.Siva Velusamy2012-01-045-8/+135
| | | | | | | | | | | | | | | | | | 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
* gltrace: add start time & duration to each traced call.Siva Velusamy2012-01-049-511/+1344
| | | | Change-Id: Idfec8f715f6000594b6381cbfdee9fdf6d89f484
* gltrace: transport buffering and context managementSiva Velusamy2012-01-0411-1215/+1068
| | | | | | | | | | | 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
* Merge "gltrace: attach contents of the appropriate framebuffer"Siva Velusamy2012-01-045-13/+33
|\
| * gltrace: attach contents of the appropriate framebufferSiva Velusamy2011-12-075-13/+33
| | | | | | | | | | | | | | | | | | 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
* | Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGESteve Block2012-01-031-3/+3
|/ | | | | | | See https://android-git.corp.google.com/g/156016 Bug: 5449033 Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
* gltrace: Make framebuffer contents an optional message.Siva Velusamy2011-12-054-13/+495
| | | | | | | | | | | | 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
* glestrace: Framework for GLES tracing librarySiva Velusamy2011-12-0223-0/+17385
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