Commit Graph

868 Commits

Author SHA1 Message Date
Mathias Agopian
d75f84d641 reduce PB size from 2MB to 512KB
this allows us to enable h/w acceleration on low-end
devices while keeping memory usage down.

Bug: 6557760
Change-Id: I8af2de3038dc2579360b8b73aa452cb7a0e506a9
2012-06-05 21:44:43 -07:00
Jamie Gennis
1401ad526c Add the EGL_ANDROID_fence_sync spec.
Change-Id: I8c26e5caaf8d89a60a09a5308d55e336537b916e
2012-05-30 16:34:32 -07:00
Jesse Hall
83e7c8c431 Implement the EGL_KHR_fence_sync in libagl
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
2012-05-22 12:11:41 -07:00
Mathias Agopian
cc2b1560e8 fix EGL_CLIENT_STRING
it should read OpenGL_ES (with an underscore)

Bug: 6529643

Change-Id: I7caf07793bffe5a8dcceaff496a222077486fc87
2012-05-21 14:02:53 -07:00
Siva Velusamy
2fdcc81ddf gltrace: Allow receiving commands of length > 4
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
2012-05-16 12:00:24 -07:00
Jesse Hall
201f3b2da5 Disable EGL hibernation due to jank
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
2012-05-04 15:21:35 -07:00
Siva Velusamy
c7d767ad57 gldebugger: Allow connections from root user
Change-Id: I26ce670ae93c43bd36843576e824a9d7acea644d
2012-04-26 09:07:41 -07:00
Mathias Agopian
4a8111bc8c Merge "Added an EGLTest for eglTerminate" 2012-04-19 17:22:48 -07:00
Jesse Hall
a0fef1c8bb Fix deadlock when cleaning objects in eglTerminate
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
2012-04-17 14:52:13 -07:00
Daniel Lam
1cbcb98a25 Added an EGLTest for eglTerminate
This tests if eglTerminate can succeed while objects
are leaked.  Currently the test fails because of a deadlock.

Change-Id: Ibe26edfda28691284d0674e803e8d3114f3ce4c6
2012-04-16 22:25:13 -07:00
Jesse Hall
258385978c Hibernate the EGL implementation when idle
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
2012-04-09 21:36:17 -07:00
Jesse Hall
b29e5e8c26 Increment/decrement a counter around EGL calls
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
2012-04-09 21:35:17 -07:00
Jamie Gennis
28ef8d7911 EGL: add GPU frame completion tracing
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
2012-04-06 09:23:13 -07:00
Colin Cross
bb67556871 Merge "frameworks/native: prevent some opengl tests from building in pdk" 2012-03-27 10:28:58 -07:00
Colin Cross
9f64c2a9e4 frameworks/native: prevent some opengl tests from building in pdk
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
2012-03-26 16:01:43 -07:00
Mathias Agopian
7db993a98b debug.egl.finish can be used to force a glFinish() when eglSwapBuffers() is called
this debug property is evaludated at eglInitialize() time.

Change-Id: Ie439e4aac87f7fdc6ab2add86183d6d042f3ee8b
2012-03-25 00:49:46 -07:00
Mathias Agopian
b0e76f456a remove dependency of EGL on ndk header
Change-Id: Ia6e489b5b4f028864bdf54923e81f604710dd8ad
2012-03-23 14:15:44 -07:00
Siva Velusamy
8e2f3858d5 gltrace: Only accept connections from the shell.
Only accept incoming connections from the shell user.

Change-Id: Ibef1a796d794d45f73db59949b39cb1ce68542b4
2012-03-15 16:41:35 -07:00
Siva Velusamy
b13c78f852 gltrace: Expose a function to set OpenGL trace level.
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
2012-03-09 16:43:48 -08:00
Mathias Agopian
373c2b2869 fix include path
Change-Id: I84adf53594cd4083a4a8ab475f175abb7414cda5
2012-03-07 19:46:57 -08:00
Siva Velusamy
2178dcf149 Merge "gltrace: Send vertex attribute data after glDraw() call." 2012-03-06 08:59:32 -08:00
Mathias Agopian
622cfadc8f fixup include paths
- remove unneeded include deps
- remove some hardcoded include paths

Change-Id: Ifae0e2b2d738e0f94f8525c45be78f4227ce1673
2012-03-05 15:59:38 -08:00
Siva Velusamy
50129e4ae2 gltrace: Send vertex attribute data after glDraw() call.
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-03-01 17:41:53 -08:00
Jamie Gennis
1c8e95cf86 Add tracing to various graphics components.
This change adds ATRACE call tracing to BufferQueue,
SurfaceTextureClient, SurfaceTexture, SurfaceFlinger, Layer, and EGL.

Change-Id: I9d75ed26f5a3f0d1af635da38289520134cfbbb7
2012-02-27 17:50:35 -08:00
Mathias Agopian
864d2afbb3 libagl shouldn't export anything
Change-Id: Ia823dbc56aab2a0b8a6063df4348fe6baac124c6
2012-02-27 13:03:04 -08:00
Siva Velusamy
640579b736 Merge "gltrace: Make code 64-bit safe." 2012-02-27 12:31:01 -08:00
Siva Velusamy
9801142afb gltrace: Make code 64-bit safe.
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-27 12:08:47 -08:00
Siva Velusamy
0128a6b819 Merge "gltrace: attach buffer data sent with glBufferData" 2012-02-27 07:41:38 -08:00
Mathias Agopian
5f2165f945 remove dependency on android_native{s_priv|buffer}.h
Change-Id: Ie4b95f7061c240f37c504414259f92d72c4ffc89
2012-02-24 18:26:01 -08:00
Mathias Agopian
870b8aa15c remove libui dependency on libEGL
Change-Id: I1194f04085637d5c384e134967249430cc43b6ee
2012-02-24 16:42:46 -08:00
Siva Velusamy
9291da97cb gltrace: attach buffer data sent with glBufferData
Attach the buffer that is passed with glBufferData
and glBufferSubData to the proto buf.

Change-Id: I1b4c1172d405736b06cb0a356a6e241e1d60c4d5
2012-02-24 11:32:00 -08:00
Siva Velusamy
05df4504e5 gltrace: Trace thread time and wall clock time.
For each gl function, trace both the thread and wall clock
times.

Change-Id: I32b6caa67fa50bf915dab89b3c5021ee82e28d55
2012-02-17 11:09:47 -08:00
Mathias Agopian
3ac9473cb9 Merge "Don't wrap EGLImageKHR and EGLSyncKHR anymore" 2012-02-14 18:59:47 -08:00
Mathias Agopian
7c0441ac27 Don't wrap EGLImageKHR and EGLSyncKHR anymore
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-14 17:14:36 -08:00
Siva Velusamy
fefddbc181 Merge "gltrace: Patch up all glUniform*() calls." 2012-02-14 16:36:44 -08:00
Siva Velusamy
88e8e5a3f1 gltrace: Patch up all glUniform*() calls.
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-14 15:08:20 -08:00
Mathias Agopian
7773c435bc EGLConfig is now not remaped to an internal EGLConfig
this is possible now that we support only a single
EGL implementation. this allows a large code simplification.

Change-Id: I7a6b9db4c5d60f4407c6061e7a68729af63d5242
2012-02-13 20:23:15 -08:00
Mathias Agopian
ada798b7ca remove multiplexing of multiple EGL implementation
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-13 18:11:42 -08:00
Mathias Agopian
a4b2c04182 fix a dead-lock in eglMakeCurrent
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-03 15:24:51 -08:00
Siva Velusamy
a7167f3647 gltrace: fixup Push & Insert Marker calls
Change-Id: I58ced7225fac79ec636a65da4883614a5dce6dff
2012-02-01 12:16:40 -08:00
Mathias Agopian
fb87e54a9a fix a race condition in eglMakeCurrent()
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-30 18:20:52 -08:00
Mathias Agopian
0d6aa287d1 Merge "add all needed GL extension wrappers" 2012-01-30 17:44:09 -08:00
Mathias Agopian
a6d86e5ea7 add all needed GL extension wrappers
when increasing MAX_NUMBER_OF_GL_EXTENSIONS to 256
we also needed to create all the corresponding wrappers.

Change-Id: I90edaaf0885ccdfab48e7a1396bcf88e039cfb25
2012-01-30 17:40:29 -08:00
Mathias Agopian
9e2464c4b9 Merge "add support for GL_EXT_debug_marker" 2012-01-30 15:23:47 -08:00
Siva Velusamy
b8c3914547 Merge "gltrace: Use Unix Domain Socket rather than INET Socket" 2012-01-30 09:08:27 -08:00
Mathias Agopian
48d438d05f add support for GL_EXT_debug_marker
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-29 22:22:09 -08:00
Mathias Agopian
453851f3a0 Merge "update GLES headers and add support for corresponding new extensions." 2012-01-29 22:03:19 -08:00
Mathias Agopian
3127260614 update GLES headers and add support for corresponding new extensions.
Change-Id: I554d9659113b4721b748ee5c1a3b1ca82b11d75e
2012-01-28 20:41:35 -08:00
Mathias Agopian
cf701aa9fe remove unused code
Change-Id: If900fcc50f9ffc424e270cb6063b16a2d7bc04d3
2012-01-28 18:47:13 -08:00
Siva Velusamy
0832fb6407 gltrace: Use Unix Domain Socket rather than INET Socket
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-27 17:24:18 -08:00
Jamie Gennis
e8696a40e0 hack up frame latency measurement
Change-Id: I6d9a466a23285304f0e229a5649815636ab5d6af
2012-01-24 15:41:50 -08:00
Siva Velusamy
34c726efb5 gltrace: fixup data for glTexSubImage2D & glDeleteBuffers
Change-Id: I1c1deb8c6026ecf1fa0ed5287ccf601416eba6dc
2012-01-17 12:28:11 -08:00
Steve Block
e6f43ddce7 Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
2012-01-08 13:19:13 +00:00
Steve Block
32397c1cd3 Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
2012-01-06 10:07:54 +00:00
Steve Block
c267bab3d1 Merge "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE" 2012-01-05 14:07:02 -08:00
Siva Velusamy
3f194e6e3a gltrace: add user settings to control data captured.
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-04 12:50:13 -08:00
Steve Block
a19954ab37 Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/156801

Bug: 5449033
Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
2012-01-04 20:05:49 +00:00
Siva Velusamy
56ac6ff9bd gltrace: add start time & duration to each traced call.
Change-Id: Idfec8f715f6000594b6381cbfdee9fdf6d89f484
2012-01-04 11:38:37 -08:00
Siva Velusamy
93a826f78f gltrace: transport buffering and context management
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-04 11:38:37 -08:00
Siva Velusamy
59511ad1cb Merge "gltrace: attach contents of the appropriate framebuffer" 2012-01-04 11:18:29 -08:00
Steve Block
9d45368352 Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
2012-01-03 22:38:27 +00:00
Jack Palevich
2b93f0bf44 Fix convert8To4, convert8To5
See b/5680952 "Compilation warnings in etc1.cpp" for discussion.

Fixes b/5680952

Change-Id: I0af6ba5ed5e60f3ed7a6a28eba3b09504fee1a3f
2011-12-09 14:06:07 -08:00
Siva Velusamy
f132ac35d8 gltrace: attach contents of the appropriate framebuffer
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-07 16:00:58 -08:00
Siva Velusamy
a8cfde8897 gltrace: Make framebuffer contents an optional message.
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-05 14:13:16 -08:00
Siva Velusamy
73d2b3c7e5 Merge "glestrace: Framework for GLES tracing library" 2011-12-02 15:49:01 -08:00
Siva Velusamy
0469dd6d55 glestrace: Framework for GLES tracing library
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-12-02 15:30:17 -08:00
Mathias Agopian
bc2d79ed7a add a way to access the version string of the h/w implementation of EGL
we use a hidden egl extension. the version string is printed
in SF's dumpsys log.

Change-Id: I123eb4bde6de462bb2404c67b74d6d6219a48d6a
2011-11-29 18:00:35 -08:00
Jamie Gennis
e011aa2b0f Merge "EGL: Use cache sizes defined in the BoardConfig" into ics-mr1 2011-11-21 15:54:54 -08:00
Jamie Gennis
59769469e4 EGL: default to swap interval 1
This change explicitly sets swap interval 1 on the window when an
EGLSurface is created to render to it.

Change-Id: I91eb29dbee3ae4a55076b921f084d503fbe94e03
2011-11-21 14:37:29 -08:00
Jamie Gennis
89c1d61c16 EGL: Use cache sizes defined in the BoardConfig
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-21 11:48:17 -08:00
Jamie Gennis
0f83b2f976 Merge "EGL: fix blob cache extension detection" into ics-mr1 2011-11-17 17:10:32 -08:00
Jamie Gennis
11f8fde84d Merge "GLES: add image external enums" into ics-mr1 2011-11-17 15:47:28 -08:00
Jamie Gennis
9f43009177 EGL: fix blob cache extension detection
Bug: 5474671
Change-Id: I6359063ccf23f076fc84c80b8a2f6731a65eef18
2011-11-17 14:06:46 -08:00
Mathias Agopian
f3ae82d813 be a bit more defensive when parsing extension strings
hopefully this will fix a crash in the emulator.

Bug: 5624674
Change-Id: I96586e29ea20efd73c4ad50870df5b7368bf3c3b
2011-11-16 16:49:25 -08:00
Jamie Gennis
9c6c6992e0 GLES: add image external enums
This change adds Java definitions for the enums of the
GL_OES_EGL_image_external OpenGL ES extension.

Bug: 3482193
Change-Id: Ib50326f8be9b9cc9021753855c3846ddcdc5eaa2
2011-11-15 11:35:46 -08:00
Mathias Agopian
4b9511c161 rework a bit how we manage EGL extensions
- 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-14 19:05:45 -08:00
Mathias Agopian
f0480de374 fix crash when validating an invalid EGL objects
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-14 17:40:21 -08:00
Jamie Gennis
7cd230c508 Merge "EGL: add the ANDROID suffix to the blob cache ext" into ics-mr1 2011-11-14 17:36:46 -08:00
Jamie Gennis
c42fcf05ce EGL: add the ANDROID suffix to the blob cache ext
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-11 13:17:03 -08:00
Romain Guy
c58b9999e1 Merge "Terminate EGL when an app goes in the background" into ics-mr1 2011-11-10 17:10:41 -08:00
Romain Guy
4725e2ca80 Terminate EGL when an app goes in the background
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
2011-11-10 16:44:49 -08:00
Jamie Gennis
99c3d700d2 EGL: add deferred saving of the cache
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
2011-11-08 17:59:36 -08:00
Jamie Gennis
98c6383580 EGL: implement loading and saving the cache
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
2011-11-08 15:54:36 -08:00
Jamie Gennis
766010858e EGL: use an in-memory the blob cache
This change makes the makes the stub EGL_ANDROID_blob_cache callbacks
actually use a BlobCache object.

Bug: 5474671
Change-Id: I5cbaae2dea3aad2fe306c9f57029c3f215a0863a
2011-11-07 10:48:42 -08:00
Jamie Gennis
aca51c06f3 EGL: Add stubs for EGL_ANDROID_blob_cache
This change adds a stub cache implementation that gets passed to the
underlying EGL implementation at initialization time.

Change-Id: I14437c5b6f91b7a34a19bb02ad802e6e54f88d2a
2011-11-04 15:01:51 -07:00
Mathias Agopian
0e8bbee577 don't log EGL errors due to unimplemented proprietary extensions
Change-Id: Icfc33d4f55d1e7fb49390ce0921ba37a438c9fc2
2011-10-05 19:15:32 -07:00
Mathias Agopian
1ac8b72f4f fix EGL debugger
always use GL_RGBA, GL_UNSIGNED_BYTE for screen capture
and make sure to handle GL_BGRA_EXT used on some gpu.

Change-Id: If9c973677fec8a5c4e72be22e7ef7d4bf5f008f4
2011-09-19 14:44:37 -07:00
Mathias Agopian
06649fece4 cleanup: fix typos in logs
Change-Id: Ib5744564a873ea2b84100174673dc4d3ae109fcf
2011-09-16 11:56:40 -07:00
Jonas Yang
1c3d72a229 Add (support for) EGL_NV_system_time extension.
Change-Id: I62bf0fcb5ccdc77c042b425a42054fb3122575b6
Signed-off-by: Mathias Agopian <mathias@google.com>
2011-09-13 16:44:22 -07:00
Mathias Agopian
ecfe091af3 add an option to EGL to dump stack traces on errors
enable by setting debug.egl.callstack to 1

Change-Id: I7fad9ce71b4c4c5ece97d4f9d139348eab742a3c
2011-09-06 18:06:04 -07:00
David 'Digit' Turner
80b30c24ff opengl: EGL: special case for GLES emulation
This patch modifies the library loaded in libEGL.so to
handle the case of GLES emulation as follows:

- if we detect that we run inside the emulator, check the
  GPU emulation status through ro.kernel.qemu.gles, which
  will be set to 1 if supported, or 0 otherwise.

  When trying to run on an older version of the emulator,
  the kernel parameter will not be defined at all.

- if GPU emulation is supported, use egl.cfg as usual.
  It will contain a line like "0 0 emulation" that will
  load libEGL_android.so appropriately.

- nothing is changed if we don't run inside the emulator.

NOTE: Ideally, we would modify libEGL_emulation.so to
      redirect all calls to libEGL_android.so in this case.

      However, this turns out to be extremely tedious to implement
      (too many functions with different signatures).

      As such,  it is much simpler to make the check before
      loading the library.

Change-Id: I9930bc168d9013cc8700feedc57b979384467c37
2011-09-02 15:41:13 +02:00
Mathias Agopian
a45c547910 fix another bug that prevented the gl debugger to work
we didn't set the debug tls properly

Change-Id: Iad9cc5b5d230a8eb7f680c4b70925c5e43e73051
2011-09-01 17:50:52 -07:00
Mathias Agopian
ccfa5c3364 this should fix the GL debugger
we were checking against to the wrong variable

Change-Id: Iff3f5ab2d6ba5ac0d3d8161011b38e673ee7e67b
2011-09-01 14:55:00 -07:00
Mathias Agopian
5fecea776a fix logging of eglMakeCurrent() errors
Change-Id: Ie22cabff822a8fb3186f082491234b9503b431c3
2011-08-25 18:38:24 -07:00
Jamie Gennis
9f24fd020e EGL: move disconnect to surface dtor
This change moves the call to native_window_api_disconnect from
eglDestroySurface to the egl_surface_t destructor.  The egl_surface_t
can outlive the external EGLSurface if eglDestroySurface is called while
the surface is made current on a thread.

Change-Id: I0df6117a5633c2a19935fe356579abdd76fc471f
2011-08-24 15:00:23 -07:00
Mathias Agopian
3a0cae8e5f implement EGL_TEXTURE_EXTERNAL_OES in libagl
this allows the emulator to display some graphics

Change-Id: Ib4671ad70b8df598d02307f2b9c5b843421cea25
2011-08-18 16:26:21 -07:00
Mathias Agopian
7dddeac971 fix test-opengl-swapinterval
EGLConfig selection should now work on any device

Change-Id: I4d4580e891d1faf817fa853838406fb49d12e50a
2011-08-15 15:25:40 -07:00
Mathias Agopian
81a6335052 connect/disconnect is now called from our EGL wrapper
the original connect/disconnect hooks are deprecated
and replace by api_connect/api_disconnect. the original
hooks are no no-ops.
api_connect/api_disconnect is now only called from the
android framework.

Bug: 5057915
Change-Id: I8ca64cd1acd6cabf915bf54689ec2e5f6dfa495a
2011-08-01 14:06:20 -07:00
Romain Guy
868a0aff31 Add new OpenGL test
Change-Id: Icab48d71945bf94dd53f58b728a951d46380d945
2011-07-19 17:20:35 -07:00
Jamie Gennis
dc159f92fa EGL: update EGL_ANDROID_recordable extension.
This change adds an enum value and a description of the expected
implementations to the EGL_ANDROID_recordable extension specification.
It also adds the new enum value to the 'eglext.h' header.

Change-Id: Ia0de2d5613708445ff83b85a7e550f9417531ee4
2011-07-17 18:42:09 -07:00
Jeff Brown
7175398247 Merge "Remove the simulator target from all makefiles. Bug: 5010576" 2011-07-12 12:15:07 -07:00
Jeff Brown
baa44b89ec Remove the simulator target from all makefiles.
Bug: 5010576

Change-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8
2011-07-11 22:12:16 -07:00
Jamie Gennis
1a14b442e0 Merge changes I002177a6,Ibaff52fe
* changes:
  Add the EGL_ANDROID_recordable spec.
  Add the spec for EGL_ANDROID_blob_cache.
2011-07-11 17:14:33 -07:00
Jamie Gennis
bd3b6ef117 Add the EGL_ANDROID_recordable spec.
Change-Id: I002177a68fafd6bb941aa64445c85fd5ff56223a
2011-07-11 17:13:02 -07:00
Jamie Gennis
0d0c5a6d6b Merge "EGL: fix the ANativeWindow size/fmt override" 2011-07-11 15:47:20 -07:00
Romain Guy
e03de93794 Always make GL calls with a valid EGL context.
Bug #5010760

Change-Id: If7500ef69683948e727df1406f458f18b11259d1
2011-07-11 15:33:51 -07:00
Jamie Gennis
bee205fd58 EGL: fix the ANativeWindow size/fmt override
This change fixes how the Android EGL layer overrides the size and
format of an ANativeWindow in eglCreateWindowSurface.  The new behavior
is to leave the size untouched when overriding the format.  The previous
behavior was to reset the ANativeWindow to use the default size set by
the ANativeWindow implementation.

It also adds two new 'perform' methods to the ANativeWindow interface:
set_buffers_dimensions and set_buffers_format, and redefines the
behavior of set_buffers_geometry to be the combination of these two new
methods.

Additionally, this change adds an error check for the return value of
the new native_window_set_buffers_format call, which required adding a
(stub) handler for to FramebufferNativeWindow.

Change-Id: I805c7ccd8d4730dfb132d10d8bc3fb058a0b9df1
2011-07-11 12:31:45 -07:00
Jamie Gennis
34d3f3810d Add the spec for EGL_ANDROID_blob_cache.
Change-Id: Ibaff52fee5c856283536ad37251cc80a9f3f938b
2011-07-11 12:06:54 -07:00
Mathias Agopian
2f739f8f04 Add a simple EGL test
currently it just tests EGLConfig selection

Change-Id: Id9d9971012d733147dd7dc02fa2054307960235e
2011-07-08 14:40:39 -07:00
Mathias Agopian
1cadb25da1 fix x86 build
Change-Id: I03cfbfeaeb8b13842248856b14b4a23711036e10
2011-05-23 17:48:36 -07:00
Mathias Agopian
5b287a6ea8 eglTerminate() now actually frees up all active egl objects
as specified by the EGL specification, terminated objects's
handles become invalid, the objects themselves are destroyed
when they're not current to some thread.

Change-Id: Id3a4a5736a5bbc3926a9ae8385d43772edb88eeb
2011-05-16 19:03:33 -07:00
Mathias Agopian
518ec112f4 refactor EGL source code
no changes is functionality. split various objects into their own files.
make egl_display objec's lock internal.
2011-05-16 19:02:45 -07:00
Mathias Agopian
0ad71a97c6 fix (Again) adding OES postfix when looking for gl functions
Change-Id: Ib14723ed5355fdc423226ec20a32e26fe7dd68fe
2011-05-11 20:37:47 -07:00
Jeff Boody
e647f3c76c add OES postfix without truncating function
Change-Id: Id47304cf38914190cec58d703801f456ab916f63
2011-05-11 18:05:49 -07:00
Mathias Agopian
69e43b71af fix libagl surface initialization
this broke recently when removing copybit support.

Change-Id: I5cc7ff7f49268411c6c2cfb2d97590d52b13dbd5
2011-05-11 13:41:09 -07:00
Iliyan Malchev
697526bc9e frameworks/base: android_native_buffer_t -> ANativeWindowBuffer
Change-Id: Idc2eabaa805bb6d308ebb315872623f28d428417
Signed-off-by: Iliyan Malchev <malchev@google.com>
2011-05-03 16:40:14 -07:00
Mathias Agopian
75c1535eb3 remove last traces of copybit
Change-Id: Ia0f13a0ee6f702256482b5eb29d7fa2aa840bfc7
2011-05-02 16:27:21 -07:00
Mathias Agopian
9cdb01da71 get rid of dependency on copybit HAL module
Change-Id: Ia608099a2426c11a91d33063ba53c93e1eccb428
2011-04-28 19:50:21 -07:00
Jamie Gennis
1b528fb9d8 EGL: Allow creating a SurfaceTexture EGLSurface.
This change removes the check that disallowed the creation of an
EGLSurface that would send frames to a SurfaceTexture.

Change-Id: I44c6d5df503cc676a88144d72d39b414692ce4c9
2011-04-25 16:41:11 -07:00
David Li
133cf52ac9 GLES2Dbg: noop - format & comment
Change-Id: Ibb36508181d4322e236b6595b28d253f282c36d7
Signed-off-by: David Li <davidxli@google.com>
2011-04-21 14:15:10 -07:00
David Li
620676eec7 GLES2Dbg: send some GL implementation constants to client
Change-Id: Ic6c51c09b1c3d2e1e1a28c6ed552714c3243827c
Signed-off-by: David Li <davidxli@google.com>
2011-04-19 14:44:51 -07:00
David Li
7b271eba88 GLES2Dbg: initial tests
Change-Id: Ibf07eff68d39267fd5c9bec2870f59a5ae2f51e3
2011-04-19 14:42:14 -07:00
David Li
c2ca836b17 GLES2Dbg: added CaptureDraw and CaptureSwap options
CaptureDraw specifies how many glDrawArrays/Elements to glReadPixel
CaptureSwap similarly applies to eglSwapBuffers

Change-Id: Ie7a7e3392b4ecdc0659dcee04f4bab97c35267dc
Signed-off-by: David Li <davidxli@google.com>
2011-04-12 15:56:10 -07:00
David Li
499c6f02e6 GLES2Dbg: use dump.gles2dbg file when fails to create socket
setprop debug.egl.debug_forceUseFile 1: always use file
setprop debug.egl.debug_maxFileSize <int MB>: exit when reached
setprop debug.egl.debug_filePath <path>: may need to make the file
 writable first.
setprop debug.egl.debug_port <unsigned short>
setprop debug.egl.debug_proc <proc cmdline>: to match debuggee process

Change-Id: I34ca1f3092f3abf17e2ded9d1689d0cdef6e07e8
Signed-off-by: David Li <davidxli@google.com>
2011-04-12 15:56:10 -07:00
David Li
904f18f792 GLES2Dbg: add EXTEND_AFTER_CALL_Debug_* macro and improve protocol
To allow auto generate of Debug_glReadPixels function.
Also added AfterGeneratedCall messag type, and client override
 of expectResponse for improving protocol.
Also implemented callers for client to get shader/program iv & infolog

Change-Id: I8426de0be4b7ffcb8b2b4f063ad85d19a9d2d72e
Signed-off-by: David Li <davidxli@google.com>
2011-04-12 15:56:10 -07:00
David Li
864f839e96 GLES2Dbg: change GLES2_dbg to shared library
Change-Id: I493e9bff431bd939f4e80e1e9c614dd557307fa2
Signed-off-by: David Li <davidxli@google.com>
2011-04-12 15:56:10 -07:00
Elliott Hughes
9875750593 Kill the global references in the OpenGL wrappers.
Just use jniThrowException instead. Note that it would be trivial to throw
seemingly more appropriate exceptions (NullPointerException and
OutOfMemoryException in particular), but I'm only attempting to preserve
existing behavior here.

I also found shadowing bugs in some of the special-case functions, which
would previously always have leaked memory.

This also moves an accidental change to a generated file (ActivityThread ->
AppGlobals) into the generator, so it won't be overwritten in future.

Change-Id: Iab570310b568cb406c60dd0e2b8211f8a36ae590
2011-04-11 15:31:20 -07:00
Eric Hassold
7fecf8c1ff Initialize reference counter for egl_display_t
Add missing member initialization for reference counter, used to determine
if a context is ready.

Change-Id: I45f81177ac2851129681f827afe015b60b3cd73c
2011-03-31 16:52:02 -07:00
Eino-Ville Talvala
2e2132d773 Merge "Add a simple OpenGL ES 2.0 test program that displays a camera preview stream." 2011-03-29 13:34:03 -07:00
David Li
214c31dbe5 Merge "GLES2Dbg: use 256KB chunks for lzf compression" 2011-03-29 12:00:07 -07:00
Eino-Ville Talvala
55c617aa2d Add a simple OpenGL ES 2.0 test program that displays a camera preview stream.
Uses a SurfaceTexture feeding into a OpenGL ES2 GLSurfaceView. Also
uses accelerometer data and SurfaceTexture-provided timestamps for a
simple physics simulation which moves the camera preview oval in
response to device movement.

Change-Id: I275a0c6a4e25829d617e635b25e70e2a9c8455cb
2011-03-28 15:27:19 -07:00
Jack Palevich
62d08f5bc3 Add Java support for a few accidentally omitted OpenGL ES APIs.
Fixes 3491494 Support OpenGL APIs: glBlendEquationSeparate and friends

Change-Id: I8fdc94b6ea14e9a7e3d402a965d500790a3d8f77
2011-03-28 14:49:12 -07:00
David Li
7a52015696 GLES2Dbg: use 256KB chunks for lzf compression
Data format is uint32_t totalDecompressedSize, then repeat:
uint32_t chunkDecompressedSize, chunkCompressedSize, chunk data.
If chunkCompressedSize == 0, then chunk is not compressed.

Also start fixing integer sizes on server.
On client, set endianness to match server.

Change-Id: I0d5afa16976ea6019b91c4e21d284605da7e135e
Signed-off-by: David Li <davidxli@google.com>
2011-03-28 10:32:37 -07:00
Eric Hassold
11c01568c3 Make objects collection a member of egl_display object
Move EGL objects (contexts, surfaces, ...) collection from global
static into EGL display object. Since EGL implementation currently
supports only one display, this doesn't change current logic. This
aims at preparing for next coming changes in eglTerminate() to
support per-display cleanup.

Bug: 4152714
Change-Id: I5e424781b89c3c275f9922f943463d5f6b1f6bc6
2011-03-25 14:37:19 -07:00
David Li
922ddd6dad Merge "GLESv2Dbg: ability to create GL calls from client" 2011-03-24 16:43:02 -07:00
David Li
fef0451f7f Merge "GLES2Dbg: added SETPROP expectResponse" 2011-03-24 16:42:58 -07:00
David Li
3f9c90c1ec Merge "GLES2Dbg: added reference frame for glReadPixels" 2011-03-24 16:42:53 -07:00
David Li
e315b16e8f Merge "GLES2Dbg: use libLZF for compressing images" 2011-03-24 16:42:44 -07:00
Eric Hassold
3ede7c133a Check for initialized EGLDisplay when required by specification
Check for initialized display, and set EGL error to EGL_NOT_INITIALIZED
whenever it isn't, for all EGL functions taking an EGLDisplay as argument
and requiring it to have been initialized.

Bug: 3366011
Change-Id: Ib1d8a3a207257995518f4430fe97f8c406c7fc13
2011-03-23 15:59:00 -07:00
David Li
49633ca2ed GLESv2Dbg: ability to create GL calls from client
caller.cpp Is generated by generate_caller_cpp.py
Hand written functions are in caller.h

Change-Id: I27ed9792df52569159a2d1b8a78207c7a7518537
Signed-off-by: David Li <davidxli@google.com>
2011-03-22 18:42:22 -07:00
David Li
ebcfe2d632 GLES2Dbg: added SETPROP expectResponse
to allow "stepping" in functions.
Also fix bug in reference frame.

Change-Id: Ia33620eaf2c5f4e615f7aad2df277b6afc617060
Signed-off-by: David Li <davidxli@google.com>
2011-03-22 18:42:22 -07:00
David Li
8b27d3592d GLES2Dbg: added reference frame for glReadPixels
Change-Id: I37398d8d835e54a1764dfabd617fdc2c640864c2
2011-03-22 18:42:03 -07:00
David Li
c615816679 GLES2Dbg: use libLZF for compressing images
liblzf is in external/liblzf, it's BSD-type licence (optionally GPL2)

Change-Id: Idc7883fe2155f366cda384e64796a1493335ae4f
Signed-off-by: David Li <davidxli@google.com>
2011-03-21 18:23:28 -07:00
David Li
5a0d29009c Merge "GLES2Debugger: Make command exchange async to improve performance." 2011-03-17 14:38:37 -07:00
Mathias Agopian
7d7723d330 am 9405d987: am a05a8ac5: am af831a7b: Merge "fix [4107131] nvidia driver call takes a very long time" into honeycomb-mr1
* commit '9405d98705db1c8102b77ef960f344ac416d165c':
  fix [4107131] nvidia driver call takes a very long time
2011-03-16 16:03:24 -07:00
Mathias Agopian
36bdf14a75 fix [4107131] nvidia driver call takes a very long time
We were leaking all EGLSyncKHR objects, over time the list
would grow and become very slow to operate on.

Bug: 4107131
Change-Id: I6c82daf49fe3189d04550781d64d57c30c95f552
2011-03-16 14:19:03 -07:00
Jamie Gennis
9db01a7c1c am 0ea44ac0: am 00f47af8: Merge "SurfaceTexture: disallow unsupported uses." into honeycomb-mr1
* commit '0ea44ac0deb5cc95d60dd512c3a8f6a1bb69f5d1':
  SurfaceTexture: disallow unsupported uses.
2011-03-15 13:01:27 -07:00
Jamie Gennis
5c0c93a8c4 SurfaceTexture: disallow unsupported uses.
This change makes the ANativeWindow_lock NDK function error out if it is
passed an ANativeWindow with a concrete type that is not Surface.  It
also makes eglCreateWindowSurface fail if it is passed a
SurfaceTextureClient as its 'window' argument.

Bug: 4087277
Change-Id: Ie68c50c52d88f72d8a387f6c094908044c83a88c
2011-03-15 10:37:37 -07:00
Iliyan Malchev
3875d79ef6 Merge "frameworks/base: remove LOCAL_PRELINK_MODULE" 2011-03-14 16:58:05 -07:00
Jamie Gennis
5b92e39c14 am dcbc2557: am c313b59b: am 071929b2: Merge "gl2_yuvtex: use the gralloc-provided stride." into honeycomb-mr1
* commit 'dcbc255734e506bacd36d8d9483b7f3d6d96d10b':
  gl2_yuvtex: use the gralloc-provided stride.
2011-03-14 15:25:14 -07:00
Iliyan Malchev
9dde9efd0b frameworks/base: remove LOCAL_PRELINK_MODULE
Change-Id: I54dd62ebef47e7690afa5a858f3cad941b135481
Signed-off-by: Iliyan Malchev <malchev@google.com>
2011-03-14 14:25:59 -07:00
Jamie Gennis
181f1c33c2 gl2_yuvtex: use the gralloc-provided stride.
This change fixes the gl2_yuvtex test to use the stride chosen by the
gralloc implementation rather than hard-coding it.

Bug: 4081948
Change-Id: If7c96a20fc3fb1df2ff25e6afaa9f34dbad2002c
2011-03-14 11:30:02 -07:00
David Li
85f33a7168 GLES2Debugger: Make command exchange async to improve performance.
In message loop, use select to check for available commands from client,
 rather than always expecting commands in eglSwapBuffers.

Change-Id: Ifc34dd77c2528c8b9c71f594e3eda4f93400cd2b
Signed-off-by: David Li <davidxli@google.com>
2011-03-11 11:09:09 -08:00
David Li
65948aa046 GLES2Debugger: Added DbgContext and vertex data capturing.
Send VBO related commands to client, which tracks the state.
Maintain index buffer content and vertex attrib pointer/buffer state on server.
During glDrawArrays/Elements, send user memory data to client.

Change-Id: Ia920e90479329b301ae4b5735e833eeb20293c94
Signed-off-by: David Li <davidxli@google.com>
2011-03-10 16:40:37 -08:00
David Li
c95e452508 Merge "Added screenshot after glDraw* option to GLES2 Debugger" 2011-03-09 10:05:38 -08:00
David Li
c7ec152b9d Merge "Initial commit of GLESv2 debugger server" 2011-03-09 10:04:46 -08:00
David Li
aa1f54d78f Initial commit of libAgl2 using Pixelflinger2 in external/mesa3d
Somewhat functional, refer to README for details.
Need to enable Android.mk to build.
It builds libGLES_android.so, which needs to replace
 the one in system/lib/egl built by libagl.

Change-Id: Iec3aaa8f3963a4185d81955cd24019eb0c4a5850
Signed-off-by: David Li <davidxli@google.com>
2011-03-08 17:41:29 -08:00
David Li
b33d5cff62 Added screenshot after glDraw* option to GLES2 Debugger
Also added timing mode option using utils/Timers.h.
Factored out common code to reduce size.
Improved Protobuf message.
Uploads data from glBufferData and glBufferSubData.

Change-Id: Iaae5e706235d942df81c7eada7223fb0b0583911
Signed-off-by: David Li <davidxli@google.com>
2011-03-04 17:50:48 -08:00
David Li
2f5a6557ef Initial commit of GLESv2 debugger server
Use debug.egl.debug_proc property to match process cmdline.
Binds to TCP:5039 and waits for client connection.
Sends function call parameters, textures and shaders using Protobuf.
Java Eclipse client plug-in is next.

Change-Id: I183b755263663f87e86dde1ad12f527d0445fd57
Signed-off-by: David Li <davidxli@google.com>
2011-03-03 18:28:43 -08:00
Kenny Root
af1cf07134 Clean up use of HAVE_ANDROID_OS
HAVE_ANDROID_OS was defined as "1" for targets, but never defined as "0"
for non-targets. Changing them to #ifdef should be safe and matches
all the other uses of HAVE_ANDROID_OS throughout the system.

Change-Id: I82257325a8ae5e4e4371ddfc4dbf51cea8ea0abb
2011-02-16 10:56:32 -08:00
Jamie Gennis
8446681ebe Merge "Clear all EGL errors when entering EGL funcs." 2011-01-31 15:40:06 -08:00
Jamie Gennis
f1cde8e0ed Clear all EGL errors when entering EGL funcs.
This changes the clearError function in the EGL wrapper layer to simply
call eglGetError().  That should clear any pending errors from all the
underlying EGL implementations, which is needed to correctly report the
error for the most recently called EGL function.

Change-Id: Iad19c69f0c5305e873f3c2f96d353280d31f7b61
2011-01-31 14:08:23 -08:00
Jamie Gennis
2076f35549 Fix a multithreading bug in libagl's EGL.
The bug caused libagl to return 0 from eglGetError if an EGL error value
(including EGL_SUCCESS) was set on a different thread but not yet on the
current thread.

Bug: 3403756
Change-Id: Ifd965091d116745c2e22c121151ade9e78eb14c6
2011-01-30 15:59:36 -08:00
Michael I. Gold
4aea6bff14 egl: clear error on function entry
Clear the current thread error state on entry to API functions as
mandated by the EGL 1.4 specification, section 3.1.  glGetError
returns additional information about the "most recent EGL function".

Change-Id: Ic24c64b39294ffc1a4e43fa72663e076b9d7decf
2011-01-25 15:36:21 -08:00
Michael I. Gold
609bb4dbf0 egl: fix GetProcAddress for EGLimage extensions
Return wrappers from GetProcAddress for glEGLImageTargetTexture2DOES
and glEGLImageTargetRenderbufferStorageOES which unwrap the EGLimage
handle before calling through to the implementation.

Change-Id: I2f5b180ab3ccdb28a4f510a2bd8c2eee941a84df
2011-01-16 18:12:04 -08:00
Michael I. Gold
ca41e36266 egl: expose EGLimage extensions
Add EGL_KHR_gl_texture_cubemap_image and EGL_KHR_gl_renderbuffer_image
to the static EGL extension string since these require no new APIs
beyond what is already required.

Change-Id: I2d1fde86b19bb9eee46b3b977f51784a17cfcc3c
2011-01-16 18:02:52 -08:00
Louis Huemiller
ee8e64a539 Hardware Composer Test hwcCommit set blend type
Change-Id: If345641bd009cfd131b1a8e74cd4a9e8e4a7dfc7
2011-01-10 18:03:05 -08:00
Louis Huemiller
06c3ae9457 Hardware Composer Test Overlap Stats
Change-Id: I2f4a02924149f3964de31fb6250f4c21a64d96aa
2011-01-10 17:21:15 -08:00
Louis Huemiller
9a8244b8f8 Hardware Composer Test Lib HBlen off by 1
Change-Id: If51727a041e20afa307e5d1735b77da5a54a712b
2011-01-09 19:02:05 -08:00
Louis Huemiller
653f810879 Hardware Composer Commit Points Benchmark
Change-Id: Ie997d13559c0e4e9dc3babfe92ca1acacef2a549
2011-01-09 10:59:31 -08:00
Louis Huemiller
734d8d898c Hardware Composer new and refactored test cases
Change-Id: Iabf46fc5d75891f917e06a257470a0e3f2bd3c95
2011-01-06 21:25:50 -08:00
Michael I. Gold
0c3ce2a365 egl: fixes for object refcounts
eglMakeCurrent() would only deref the previous surfaces if the old and
new contexts were the same.  eglTerminate() should not touch TLS.
eglReleaseThread() needs to unbind the current context.

Change-Id: I213b8be77b1a23b5a8a6afaac60643662c8aa010
2010-12-23 16:12:19 -08:00
Louis Huemiller
1812cfde39 HWC Stress Test - relocate print msg
Change-Id: I95f9f5c6edffff8c737c4a6996f97e69bccc0448
2010-12-14 14:58:55 -08:00
Louis Huemiller
5d86b53dc1 HWC Stres Test Enhancments
+ YV12 width/height divisable by 2
  + Row width determined by getStride()
  + Misc comment and whitespace fixes
  + printf changed to testPrintI

Change-Id: I27551141bafbfb258eb1b6b7f63c5295b1f9501a
2010-12-14 10:31:57 -08:00
Louis Huemiller
b526594d84 Hardware Composer Stress Test Enhancements
Enhancements include:
  + Change default delay after each set operation
    from 0.1 to 0.0 seconds.  This significantly
    increases the default rate at which operations
    are performed.

  + Make sourceCrop to displayFrame scale
    factor of 1.0 a frequent occurance.

  + Enable use of RGB888 and YV12 graphic formats.

  + Add initCheck() call after creation of a
    GraphicBuffer, to confirm it was created
    without any errors.

Change-Id: I1606dff3924a23bdd5cb27ba302bebb4f200d768
2010-12-13 13:19:13 -08:00
Mathias Agopian
695b66f082 fix build.
Change-Id: I49262ac143da297efcaec4eed04052274c73b7f8
2010-12-08 17:44:07 -08:00
Mathias Agopian
2fa3af5b43 am 054ae782: am e1752f41: Merge "fix [3258603] \'Quadrant\' benchmark crashes inside eglQueryContext on GB/Crespo" into gingerbread
* commit '054ae78245fe9b4c14bbc372ae77cd0a977ded73':
  fix [3258603] 'Quadrant' benchmark crashes inside eglQueryContext on GB/Crespo
2010-12-08 17:20:39 -08:00
Mathias Agopian
18c35abd39 am e1752f41: Merge "fix [3258603] \'Quadrant\' benchmark crashes inside eglQueryContext on GB/Crespo" into gingerbread
* commit 'e1752f41d34249c891564889b07963262b1bd8bf':
  fix [3258603] 'Quadrant' benchmark crashes inside eglQueryContext on GB/Crespo
2010-12-08 16:20:23 -08:00
Mathias Agopian
c3ce880972 fix [3258603] 'Quadrant' benchmark crashes inside eglQueryContext on GB/Crespo
eglQueryContext(..., EGL_CONFIG_ID, ...) is dereferencing an uninitialized pointer
due to a typo.

Change-Id: I100addf3150f19cb6dfbce9987fb5239dd240878
2010-12-08 15:34:02 -08:00
Dan Bornstein
47c9507c91 Merge "Fix another set of out-of-date headers." 2010-12-07 16:39:45 -08:00
Dan Bornstein
4bb407d47e Fix another set of out-of-date headers.
This time in XML files.

Change-Id: Iebe36810c3a2d7a6ff354f43808b1b8649b85637
2010-12-07 16:27:55 -08:00
Dan Bornstein
a5651f24b8 Merge "Fix newlines in this file." 2010-12-07 16:27:31 -08:00
Dan Bornstein
22b03897a8 Fix newlines in this file.
They were CRLF instead of just LF.

Change-Id: I2d06d19b4d8ca969527d93bd996103c161e48a79
2010-12-07 16:23:05 -08:00
Mathias Agopian
b0c48b8993 am 0484a673: am daef0a04: Merge "[3229973, 3247470, ...] set EGLNativeWindowSurface\'s format in EGL" into gingerbread
* commit '0484a673c5839d2be9e615e52c6a45febdf1127b':
  [3229973, 3247470, ...] set EGLNativeWindowSurface's format in EGL
2010-12-06 18:25:58 -08:00
Mathias Agopian
d6a9c7d2db am daef0a04: Merge "[3229973, 3247470, ...] set EGLNativeWindowSurface\'s format in EGL" into gingerbread
* commit 'daef0a040de7a9825bdbcba7b2eae66195e3a95f':
  [3229973, 3247470, ...] set EGLNativeWindowSurface's format in EGL
2010-12-06 18:22:57 -08:00
Mathias Agopian
644bb2a29e [3229973, 3247470, ...] set EGLNativeWindowSurface's format in EGL
(there are multiple bugs this should fix)

we now use the EGL_NATIVE_VISUAL_ID of a config to set
the ANativeWindow's format from eglCreateWindowSurface(),
this guarantees that the surface's format will match
whatever EGLConfig the user chose.

this should fix all current and future config/surface format
mismatch and allow users to easily select 32-bits surfaces.

Change-Id: I3835d0eb70c75eeecded3c3509a0a8207554c98b
2010-12-03 14:15:40 -08:00
Louis Huemiller
365b2c66a2 Hardware Composer Stress Test
Change-Id: Ief08b22dacd052483f10754b3ab61aa09ca28b17
2010-11-29 14:08:57 -08:00
Mathias Agopian
a8422af09e am 17fd21fc: Merge "DO NOT MERGE. workaround [3177481] eglGetProcAddress() returns the wrong pointer for some GL extensions" into gingerbread
* commit '17fd21fc0638d8734867b6f189efbabb227f3ae1':
  DO NOT MERGE. workaround [3177481] eglGetProcAddress() returns the wrong pointer for some GL extensions
2010-11-10 14:15:57 -08:00
Mathias Agopian
70745094cc Merge "DO NOT MERGE. workaround [3177481] eglGetProcAddress() returns the wrong pointer for some GL extensions" into gingerbread 2010-11-10 14:09:17 -08:00
David 'Digit' Turner
ab5426e53d am b02ca27f: am b7a109c0: Merge "Refresh EGL header to work with the NDK" into gingerbread
* commit 'b02ca27f05a47fad75c57d6d8c52ccc5b21a8043':
  Refresh EGL header to work with the NDK
2010-11-09 16:42:27 -08:00
David 'Digit' Turner
2346d0223f am b7a109c0: Merge "Refresh EGL header to work with the NDK" into gingerbread
* commit 'b7a109c02735bb0d9e0bcb8f84e4aa3923701460':
  Refresh EGL header to work with the NDK
2010-11-09 16:25:58 -08:00
Mathias Agopian
744026fed6 DO NOT MERGE. workaround [3177481] eglGetProcAddress() returns the wrong pointer for some GL extensions
We just make sure eglGetProcAddress() will return NULL for
 glEGLImageTargetTexture2DOES
 glEGLImageTargetRenderbufferStorageOES

which is better than returning the address of the wrong implementation.

the correct fix is more involved.

Change-Id: I585a1f40e564f862e5dd382224609ccd069cd3b5
2010-11-09 14:41:13 -08:00
David 'Digit' Turner
dfd0759ff6 Refresh EGL header to work with the NDK
This change allows to use this header with the NDK's standalone toolchain.
For the record, the NDK toolchain defines __ANDROID__ as a compiler built-in
macro, this is however not the case currently for the prebuilt binaries that
are being used by the full Android build system, which otherwise defines ANDROID.

This change allows the header to be used by all toolchains properly. Note however
that we should properly should change our toolchain and sources to provide and
rely on __ANDROID__ instead of ANDROID though.

Change-Id: Iaa1aa1146985b5f24dcf3a83d9ddb9b4b59dc328
2010-11-07 23:36:28 +01:00
Jamie Gennis
b27cb7f5bf Merge "OpenGL ES 1 YUV texturing test" 2010-10-28 15:44:11 -07:00
Jamie Gennis
e6bb73a1cd Merge "YUV texturing test." 2010-10-28 15:44:01 -07:00
Jack Palevich
6132b3703d Trace glUniformXXv and glUniformMatrixXfv calls.
Change-Id: I653021d2174fa1a7343d10b0fd2c29b3e5147be6
2010-10-27 15:37:01 -07:00
Nuno Subtil
ce0a5ca423 OpenGL ES 1 YUV texturing test
Change-Id: I295e5bce16a8ab088b99929f788f2fbbe8492b8d
2010-10-27 15:14:56 -07:00
Michael I. Gold
6ecdb49b25 YUV texturing test.
Change-Id: Ib2a6b7eb2a5fc98ecaace032d6c63d50613aaa0d
2010-10-27 14:51:43 -07:00
Kristian Monsen
72c384e0a1 Fix for simulator build
The code looks correct, but causes an internal compiler error on
simulator builds on mine (an other) gLucid desktops.

Change-Id: Iaf0d8120778ec1c6fc739ef13e6eaaac53e3bcc8
2010-10-27 22:49:34 +01:00
Jack Palevich
8c026c039f Merge "OpenGL tracing." 2010-10-26 18:37:10 -07:00
Jack Palevich
a2dd6cf599 OpenGL tracing.
Enable with:

adb shell setprop debug.egl.trace 1

Change-Id: Icfbc795f5260141510975228e72234e9aab56a85
2010-10-26 15:21:24 -07:00
Mathias Agopian
698346ed59 am d9588e9c: am a7b745ca: Merge "fix eglChooseConfig() for special attributes." into gingerbread 2010-10-26 12:23:46 -07:00
Mathias Agopian
3e98e38510 am a7b745ca: Merge "fix eglChooseConfig() for special attributes." into gingerbread 2010-10-26 12:19:43 -07:00
Mathias Agopian
639716736f fix eglChooseConfig() for special attributes.
affects software renderer (emu) only.

per EGL spec:
  If EGL_MAX_PBUFFER_WIDTH, EGL_MAX_PBUFFER_HEIGHT,
  EGL_MAX_PBUFFER_PIXELS, or EGL_NATIVE_VISUAL_ID are specified
  in attrib list, then they are ignored

Change-Id: I3d5214ce896986da2f11d2eb1889afc41731eaa6
2010-10-25 15:51:24 -07:00
Mathias Agopian
2e6153ee11 am 49af98ed: am aa6df366: Merge "fix [3119687] [Maps][4.6.0] Force close in street view" into gingerbread
Merge commit '49af98ed877e8a2db5a6b5be811c798e6f73dff7'

* commit '49af98ed877e8a2db5a6b5be811c798e6f73dff7':
  fix [3119687] [Maps][4.6.0] Force close in street view
2010-10-21 17:23:24 -07:00
Mathias Agopian
613493c424 am aa6df366: Merge "fix [3119687] [Maps][4.6.0] Force close in street view" into gingerbread
Merge commit 'aa6df3669deab2a804c6f8cc1ea3fd5af0a28685' into gingerbread-plus-aosp

* commit 'aa6df3669deab2a804c6f8cc1ea3fd5af0a28685':
  fix [3119687] [Maps][4.6.0] Force close in street view
2010-10-21 17:07:15 -07:00
Mathias Agopian
6af358e0a7 fix [3119687] [Maps][4.6.0] Force close in street view
The EGLConfig attributes MUST be sorted, because they're used in a binary search.
A recent change introduced a bug where 2 of the configs had improperly
sorted attributes.

Change-Id: I1ac53e4463d62f27125ca9f82ed946e6c98ddba0
2010-10-21 15:58:25 -07:00
Mathias Agopian
e3c5974719 am 63ac8f53: am 2b2da526: Merge "Add a test application to dump all the EGLConfig available" into gingerbread
Merge commit '63ac8f5377833303a7f8c4d60f0d74daf903e6ea'

* commit '63ac8f5377833303a7f8c4d60f0d74daf903e6ea':
  Add a test application to dump all the EGLConfig available
2010-10-21 13:48:50 -07:00
Mathias Agopian
f6715ba6de am 6d90e89a: am a0795fc9: Merge "software renderer: fix [3117351] GL driver doesn\'t set the EGL_NATIVE_VISUAL_ID" into gingerbread
Merge commit '6d90e89afa47293cf5fe18f512cce43d2fa6df82'

* commit '6d90e89afa47293cf5fe18f512cce43d2fa6df82':
  software renderer: fix [3117351] GL driver doesn't set the EGL_NATIVE_VISUAL_ID
2010-10-21 13:47:59 -07:00
Mathias Agopian
41e5645b1a am add9db83: am f4cd9be0: Merge "fix [2236865] STOPSHIP: bump soft gl and egl minor version number" into gingerbread
Merge commit 'add9db83fdbf939f0610f8b357788fd3e8ad9ab5'

* commit 'add9db83fdbf939f0610f8b357788fd3e8ad9ab5':
  fix [2236865] STOPSHIP: bump soft gl and egl minor version number
2010-10-21 10:47:32 -07:00
Mathias Agopian
483d824271 am 2b2da526: Merge "Add a test application to dump all the EGLConfig available" into gingerbread
Merge commit '2b2da52608303b149d22418865e67c8030c70e73' into gingerbread-plus-aosp

* commit '2b2da52608303b149d22418865e67c8030c70e73':
  Add a test application to dump all the EGLConfig available
2010-10-20 21:28:34 -07:00
Mathias Agopian
a6da12c071 Merge "Add a test application to dump all the EGLConfig available" into gingerbread 2010-10-20 20:05:28 -07:00
Mathias Agopian
3f9f60fa42 am a0795fc9: Merge "software renderer: fix [3117351] GL driver doesn\'t set the EGL_NATIVE_VISUAL_ID" into gingerbread
Merge commit 'a0795fc9bdf97703780cbf0ec47c06eccb642e72' into gingerbread-plus-aosp

* commit 'a0795fc9bdf97703780cbf0ec47c06eccb642e72':
  software renderer: fix [3117351] GL driver doesn't set the EGL_NATIVE_VISUAL_ID
2010-10-20 18:22:17 -07:00
Mathias Agopian
d8e5ceb963 software renderer: fix [3117351] GL driver doesn't set the EGL_NATIVE_VISUAL_ID
Change-Id: I371bc0abfee6065247bc6f04b0e0451645eb2dbf
2010-10-20 17:21:43 -07:00
Mathias Agopian
16a3e39cc0 Add a test application to dump all the EGLConfig available
Change-Id: Iddf27f2a9dd51733f6b90081a523ca37bfe310fa
2010-10-20 17:10:47 -07:00
Mathias Agopian
309be7131f am f4cd9be0: Merge "fix [2236865] STOPSHIP: bump soft gl and egl minor version number" into gingerbread
Merge commit 'f4cd9be0390135269e22e42fd2e1fe61fdcf9863' into gingerbread-plus-aosp

* commit 'f4cd9be0390135269e22e42fd2e1fe61fdcf9863':
  fix [2236865] STOPSHIP: bump soft gl and egl minor version number
2010-10-19 18:26:28 -07:00
Mathias Agopian
141550bc18 fix [2236865] STOPSHIP: bump soft gl and egl minor version number
Change-Id: Ibf46b18d7493348e189f2c93e969a6cac61f68b5
2010-10-19 14:47:08 -07:00
Ari Hirvonen
551dc26ebd libagl: eglSwapInterval fix
SW egl returned always EGL_FALSE even when the display was valid.
This made calls to eglSwapInterval to fail on HW since the wrapper
fails if either SW or HW egl fails.

Letting SW eglSwapInterval to return true when display is valid is
ok since spec says that interval parameter is silently clamped.

Change-Id: Ib4aa1dbfccf510a0f36621796e79a4d46852ee6a
2010-10-06 16:44:37 -07:00
Jim Shuma
257d2bbcbf Initial checkin of a framerate test app
Measures the time to do nothing but clear the screen in an
OpenGL Java app. Spews frame time statistics to the log.

Control long frame time by setting debug.longframe_ms;
e.g., adb shell setprop debug.longframe_ms 33

Change-Id: I435a3cb170048349e00417c44db42121c68744b2
2010-09-28 14:59:20 -07:00
Mathias Agopian
30faafb7d3 am 4eb1ad5e: am 524a6d8e: Merge "better fix for [3028370] GL get error should return a valid error if no context is bound." into gingerbread
Merge commit '4eb1ad5e98c7b36f7ac4ec8c3270f9763afd107e'

* commit '4eb1ad5e98c7b36f7ac4ec8c3270f9763afd107e':
  better fix for [3028370] GL get error should return a valid error if no context is bound.
2010-09-23 21:41:30 -07:00
Mathias Agopian
303f3eb352 am 524a6d8e: Merge "better fix for [3028370] GL get error should return a valid error if no context is bound." into gingerbread
Merge commit '524a6d8e9bb4df9cec0520ac1d9733642b13e76f' into gingerbread-plus-aosp

* commit '524a6d8e9bb4df9cec0520ac1d9733642b13e76f':
  better fix for [3028370] GL get error should return a valid error if no context is bound.
2010-09-23 18:17:08 -07:00
Mathias Agopian
6f0871222f better fix for [3028370] GL get error should return a valid error if no context is bound.
it turns out that we cannot return INVALID_OPERATION from glGetError() because the
GL spec says that it must be called in a loop until it returns GL_NO_ERROR.

now, we always return 0 from GL functions called from a thread with no
context bound. This means that glGetError() will return NO_ERROR in this case,
which is better than returning a random value (which could trap the app in a loop).

if this happens in the main thread of a process, we LOG an error message once.

Change-Id: Id59620e675a890286ef62a257c02b06e0fdcaf69
2010-09-23 16:44:48 -07:00
Mathias Agopian
aa22d20554 am 9c4d7d67: am 5c6c5c7a: fix [3028370] GL get error should return a valid error if no context is bound.
Merge commit '9c4d7d677097981a349c718902e29050dad3d59f'

* commit '9c4d7d677097981a349c718902e29050dad3d59f':
  fix [3028370] GL get error should return a valid error if no context is bound.
2010-09-23 13:28:47 -07:00
Mathias Agopian
6ee79cfa2f am 5c6c5c7a: fix [3028370] GL get error should return a valid error if no context is bound.
Merge commit '5c6c5c7a43d44316395f5c35ab713372124b8b4c' into gingerbread-plus-aosp

* commit '5c6c5c7a43d44316395f5c35ab713372124b8b4c':
  fix [3028370] GL get error should return a valid error if no context is bound.
2010-09-23 13:24:11 -07:00
Mathias Agopian
05c53113e0 fix [3028370] GL get error should return a valid error if no context is bound.
glGetError() will now always return GL_INVALID_OPERATION if called from a thread
with no GL context bound.

Change-Id: I28ba458871db051bb4f5a26668a1fa123526869c
2010-09-23 13:19:02 -07:00
Mathias Agopian
cd2c51cf45 am d01ce192: am 9d5fac51: Merge "fix small bug in EGL error management" into gingerbread
Merge commit 'd01ce1924a51539c4d47ef1f55913bdf1a018124'

* commit 'd01ce1924a51539c4d47ef1f55913bdf1a018124':
  fix small bug in EGL error management
2010-09-22 14:41:45 -07:00
Mathias Agopian
d7a0841a19 am 9d5fac51: Merge "fix small bug in EGL error management" into gingerbread
Merge commit '9d5fac517463526450268bf6353e32c13a8cdd0c' into gingerbread-plus-aosp

* commit '9d5fac517463526450268bf6353e32c13a8cdd0c':
  fix small bug in EGL error management
2010-09-22 14:21:01 -07:00
Mathias Agopian
f3c24f8703 Merge "fix typo EGL_NO_IMAGE_KHR -> EGL_NO_SYNC_KHR" 2010-09-22 14:15:15 -07:00
Jack Palevich
d7a4f91401 Add simple interactive end-to-end latency test.
Change-Id: I4c2f2acf797a3a753f8a6061db3d2bcdc7d642f0
2010-09-22 12:13:02 -07:00
Mathias Agopian
a93b957e8e fix typo EGL_NO_IMAGE_KHR -> EGL_NO_SYNC_KHR
Change-Id: I38c87803e32030918f2deb06381eabce0faa870c
2010-09-21 16:22:10 -07:00
Mathias Agopian
02dafb5068 fix small bug in EGL error management
make sure to clear our EGL implementation's error when returning
an error from an underlying implementation

Change-Id: Ibce4726cef1f900e4c7f16002345d7a07f8cdf41
2010-09-21 15:43:59 -07:00
Brian Swetland
04b9ff8e26 am 5c746522: am 181e5ea8: Merge "support loading EGL libraries from /vendor/lib/egl as well as /system/lib/egl" into gingerbread
Merge commit '5c7465220d52c64c87fe4566fe109c649ec5c4f7'

* commit '5c7465220d52c64c87fe4566fe109c649ec5c4f7':
  support loading EGL libraries from /vendor/lib/egl as well as /system/lib/egl
2010-09-20 19:32:01 -07:00
Brian Swetland
d77cec91b0 am 181e5ea8: Merge "support loading EGL libraries from /vendor/lib/egl as well as /system/lib/egl" into gingerbread
Merge commit '181e5ea8087360742b3ed0a7f2e6f8f8baa0a760' into gingerbread-plus-aosp

* commit '181e5ea8087360742b3ed0a7f2e6f8f8baa0a760':
  support loading EGL libraries from /vendor/lib/egl as well as /system/lib/egl
2010-09-20 14:08:46 -07:00
Brian Swetland
2b9e4f6a24 support loading EGL libraries from /vendor/lib/egl as well as /system/lib/egl
Change-Id: Idd9ca85ce3ba6c92234375071b53e5365e689062
2010-09-20 12:58:15 -07:00
Mathias Agopian
fe0a0af7bd am 793b2293: am 1bcb8b1a: Merge "surfaceflinger / GL extensions cleanup" into gingerbread
Merge commit '793b2293797ea930078640c4827d3cbdf449c227'

* commit '793b2293797ea930078640c4827d3cbdf449c227':
  surfaceflinger / GL extensions cleanup
2010-09-16 18:26:19 -07:00
Mathias Agopian
c05246ae34 am 1bcb8b1a: Merge "surfaceflinger / GL extensions cleanup" into gingerbread
Merge commit '1bcb8b1afbfa2fc387a0f7068740f1efbe9a1f69' into gingerbread-plus-aosp

* commit '1bcb8b1afbfa2fc387a0f7068740f1efbe9a1f69':
  surfaceflinger / GL extensions cleanup
2010-09-16 17:57:34 -07:00
Michael I. Gold
7f198b6bff surfaceflinger / GL extensions cleanup
Add correct enumerants for OES_EGL_image_external to glext.h.
SurfaceFlinger now checks for the correct extension name.

Change-Id: I2ba2728a01fa2260bd086d2df4316c68f694a9b1
2010-09-15 17:15:31 -07:00
Mathias Agopian
c291f58585 Add support for KHR_fence_sync
Change-Id: Ie2771b5869c9c8dcf5ecf9318e2ee6d4d1cd5cc9
2010-09-10 14:01:45 -07:00
Jason Sams
9e14a3404b Merge "Rework gl perf test to focus on important use cases." 2010-09-09 14:51:56 -07:00
Mathias Agopian
0b30bf5782 am 45bd9946: am fec5d38b: Merge "option to enable multisampling" into gingerbread
Merge commit '45bd99466ce9962778eacaefff1c0a44bb268f0c'

* commit '45bd99466ce9962778eacaefff1c0a44bb268f0c':
  option to enable multisampling
2010-09-09 14:23:09 -07:00
Mathias Agopian
acd8fd0493 am a9ff29b5: am 6808e6a8: Merge "Fix a few typos in EGL wrapper" into gingerbread
Merge commit 'a9ff29b59cf33e552285a0bff3caf7a44f93f1c0'

* commit 'a9ff29b59cf33e552285a0bff3caf7a44f93f1c0':
  Fix a few typos in EGL wrapper
2010-09-09 14:21:55 -07:00
Mathias Agopian
bae7b39496 am fec5d38b: Merge "option to enable multisampling" into gingerbread
Merge commit 'fec5d38baf4487d8ab0143451a3f2c39edeeb5b2' into gingerbread-plus-aosp

* commit 'fec5d38baf4487d8ab0143451a3f2c39edeeb5b2':
  option to enable multisampling
2010-09-09 11:58:14 -07:00
Mathias Agopian
8296221138 option to enable multisampling
multisampling can be enabled by specifying the number of
samples desired on the command line.

Change-Id: I5f93c93ae7ada54bcd646c1065e07890d0cb9808
2010-09-09 11:53:17 -07:00
Mathias Agopian
358fea99da am 6808e6a8: Merge "Fix a few typos in EGL wrapper" into gingerbread
Merge commit '6808e6a867ba0b32f8bd97163e134c2866423f01' into gingerbread-plus-aosp

* commit '6808e6a867ba0b32f8bd97163e134c2866423f01':
  Fix a few typos in EGL wrapper
2010-09-09 11:23:16 -07:00
Mathias Agopian
e7bca18f79 Merge "Fix a few typos in EGL wrapper" into gingerbread 2010-09-09 11:20:02 -07:00
Mathias Agopian
77fbf8ddd9 Fix a few typos in EGL wrapper
Change-Id: I3b815ca6ec334ca12088f9721eece33df42b2e46
2010-09-09 11:12:54 -07:00
Mathias Agopian
e3372bd6f0 am 099aa9a1: am edbb8083: Merge "add a fps counter to sanangeles demo" into gingerbread
Merge commit '099aa9a1b4eaf6536decbcafac43476c4908ef24'

* commit '099aa9a1b4eaf6536decbcafac43476c4908ef24':
  add a fps counter to sanangeles demo
2010-09-08 19:04:07 -07:00
Mathias Agopian
7d1588e4e3 am edbb8083: Merge "add a fps counter to sanangeles demo" into gingerbread
Merge commit 'edbb8083a815e9d911f8e659fc5c293543fdf502' into gingerbread-plus-aosp

* commit 'edbb8083a815e9d911f8e659fc5c293543fdf502':
  add a fps counter to sanangeles demo
2010-09-08 19:01:37 -07:00
Mathias Agopian
879ba138fc add a fps counter to sanangeles demo
Change-Id: I9a9473ce213301cc7661fddfb1ef5a6ffcb346d4
2010-09-08 18:55:42 -07:00
Jason Sams
74b28e45c3 Rework gl perf test to focus on important use cases.
Change-Id: I82825dbe3b24a520b79f6b05d01f37e1b5008b62
2010-09-08 15:48:53 -07:00
Mathias Agopian
8e4b5a3e6a Add KHR_gl_texture_2D_image extension string. 2010-08-27 16:08:03 -07:00
Mathias Agopian
27e2fac337 cleanup EGL a bit. remove unused extension.
Change-Id: I7758bc7d6dc2e70fc3590fe939ebf71fbcde7059
2010-08-27 15:30:16 -07:00
Mathias Agopian
1bd3674343 am ff3dcf27: Merge "cleanup EGL a bit. remove unused extension." into gingerbread
Merge commit 'ff3dcf27be2bbb259b7605396d36e50ade35266f' into gingerbread-plus-aosp

* commit 'ff3dcf27be2bbb259b7605396d36e50ade35266f':
  cleanup EGL a bit. remove unused extension.
2010-08-27 14:17:00 -07:00
Mathias Agopian
10cab190ba cleanup EGL a bit. remove unused extension.
Change-Id: Ia87120b076ab1bf7b28f06087878d8161fb46c88
2010-08-27 13:17:32 -07:00
Mathias Agopian
d56f54b269 am b3aaf3ba: am bccfcd95: Merge "fix [2931718] glDrawArrays skips a triangle when more than 70 vertices are used." into gingerbread
Merge commit 'b3aaf3baa7fd811af19835bbc8837a88984c160a'

* commit 'b3aaf3baa7fd811af19835bbc8837a88984c160a':
  fix [2931718] glDrawArrays skips a triangle when more than 70 vertices are used.
2010-08-21 09:42:53 -07:00
Mathias Agopian
c3fb41b1db am 43647129: am 17da0663: Merge "fix [2931161] crash in labyritnth when completing a level" into gingerbread
Merge commit '43647129d676e8c802850ca493f2ebc6064a4a1a'

* commit '43647129d676e8c802850ca493f2ebc6064a4a1a':
  fix [2931161] crash in labyritnth when completing a level
2010-08-21 09:34:22 -07:00
Mathias Agopian
8807ecb3c1 am bccfcd95: Merge "fix [2931718] glDrawArrays skips a triangle when more than 70 vertices are used." into gingerbread
Merge commit 'bccfcd95d3cc4029c1ed8514d31436a857283873' into gingerbread-plus-aosp

* commit 'bccfcd95d3cc4029c1ed8514d31436a857283873':
  fix [2931718] glDrawArrays skips a triangle when more than 70 vertices are used.
2010-08-19 11:46:43 -07:00
Mathias Agopian
e3586182ec fix [2931718] glDrawArrays skips a triangle when more than 70 vertices are used.
a typo prevented the last 2 vertices of a batch to be copied to the front of
the next batch. Instead, the 2 very first vertices were used.

Change-Id: I3c344784dac1cef64df2fb6f6efb2f901cc788db
2010-08-18 20:07:25 -07:00
Mathias Agopian
1071c20143 am 17da0663: Merge "fix [2931161] crash in labyritnth when completing a level" into gingerbread
Merge commit '17da06631041f9f2237738fb673a74a85b1d9cf4' into gingerbread-plus-aosp

* commit '17da06631041f9f2237738fb673a74a85b1d9cf4':
  fix [2931161] crash in labyritnth when completing a level
2010-08-18 16:34:40 -07:00
Mathias Agopian
031213e5b3 fix [2931161] crash in labyritnth when completing a level
Change-Id: I821d67effaf73d7008b2828d06f5489d1f976a1e
2010-08-18 16:07:34 -07:00
Romain Guy
62d59ed785 am a4ed1c67: am 1e4aa48c: Merge "fix [2912927] Can\'t get NV_draw_path extension to work" into gingerbread
Merge commit 'a4ed1c6788ead0324106d76f497233ee42a1f1ac'

* commit 'a4ed1c6788ead0324106d76f497233ee42a1f1ac':
  fix [2912927] Can't get NV_draw_path extension to work
2010-08-16 07:49:24 -07:00
Romain Guy
5e1bf8d4fa am 1e4aa48c: Merge "fix [2912927] Can\'t get NV_draw_path extension to work" into gingerbread
Merge commit '1e4aa48cfd2b2c13c4f7ace8c9fcb33adfa18661' into gingerbread-plus-aosp

* commit '1e4aa48cfd2b2c13c4f7ace8c9fcb33adfa18661':
  fix [2912927] Can't get NV_draw_path extension to work
2010-08-13 14:27:36 -07:00
Mathias Agopian
4a88b52235 fix [2912927] Can't get NV_draw_path extension to work
there was a problem with eglGetProcAddress() which would only work with
GLES 1.x contexts.

Change-Id: I4747671cbf7ed469bb471a377f1d6f36550d24df
2010-08-13 14:17:58 -07:00
Mathias Agopian
5d708a5916 am 553a333d: am 603a34ee: Merge "improve a bit the implementation of eglGetProcAddress" into gingerbread
Merge commit '553a333d4446bb34330da92f02daa515dc597939'

* commit '553a333d4446bb34330da92f02daa515dc597939':
  improve a bit the implementation of eglGetProcAddress
2010-08-10 13:55:34 -07:00
Mathias Agopian
14a4443344 am 603a34ee: Merge "improve a bit the implementation of eglGetProcAddress" into gingerbread
Merge commit '603a34ee30e7d14ddc02c1beb7bca915622ae4bf' into gingerbread-plus-aosp

* commit '603a34ee30e7d14ddc02c1beb7bca915622ae4bf':
  improve a bit the implementation of eglGetProcAddress
2010-08-10 13:52:58 -07:00
Romain Guy
761eaed2ff Fix tons of bugs and add new text rendering support.
Change-Id: I326c66b10784006f6df2f12d38e120cef94cd0d7
2010-08-10 12:22:01 -07:00
Mathias Agopian
7f781d1552 improve a bit the implementation of eglGetProcAddress
Change-Id: Ie07f33ae2162830df1e4f3d3b5e00fcfb8c350d6
2010-08-09 18:35:43 -07:00
Mathias Agopian
ff1448b53f am d12a98e2: am 9abce39a: Merge "fix [2421247] implement eglGetProcAddress(), needed in the ndk" into gingerbread
Merge commit 'd12a98e2b1eb3a2ae20eace8a7d4b5fa13bbedfb'

* commit 'd12a98e2b1eb3a2ae20eace8a7d4b5fa13bbedfb':
  fix [2421247] implement eglGetProcAddress(), needed in the ndk
2010-08-04 11:12:25 -07:00
Mathias Agopian
574a26fa52 am 9abce39a: Merge "fix [2421247] implement eglGetProcAddress(), needed in the ndk" into gingerbread
Merge commit '9abce39a991a6bc1cfab4284b5448a4f676bb06f' into gingerbread-plus-aosp

* commit '9abce39a991a6bc1cfab4284b5448a4f676bb06f':
  fix [2421247] implement eglGetProcAddress(), needed in the ndk
2010-08-03 11:30:42 -07:00
Mathias Agopian
24035338ed fix [2421247] implement eglGetProcAddress(), needed in the ndk
Change-Id: I5027a27b43c0dd449a404024087853ca05bb8e4e
2010-08-02 18:23:36 -07:00
Mathias Agopian
90f7672a6f am 67e4ff76: am 4d7fc365: Merge "remove copybit hack from software opengl (libagl)" into gingerbread
Merge commit '67e4ff768d71088a64fbac3b8e398e2e16dd84ec'

* commit '67e4ff768d71088a64fbac3b8e398e2e16dd84ec':
  remove copybit hack from software opengl (libagl)
2010-07-31 12:19:26 -07:00
Mathias Agopian
d7beac601a am 4d7fc365: Merge "remove copybit hack from software opengl (libagl)" into gingerbread
Merge commit '4d7fc3651bd93d588d2b8580010414b59bc67729' into gingerbread-plus-aosp

* commit '4d7fc3651bd93d588d2b8580010414b59bc67729':
  remove copybit hack from software opengl (libagl)
2010-07-30 18:03:17 -07:00
Mathias Agopian
bb0628d9de remove copybit hack from software opengl (libagl)
h/w acceleration is not supported through software gl + copybit anylonger,
instead, h/w opengl must be used. in the system compositor, a new h/w
composition api will be introduced to allow h/w accelerated composition with
overlays and/or 2D blocks.

Change-Id: I04949cb074ba8c4d637319ace23497c16a58d5bf
2010-07-29 23:28:03 -07:00
Mathias Agopian
bcfcddf94a am eb248a58: am 55a76dd8: Merge "fix [2870926] Issue 9802: EGL wrapper has not been implemented correctly for eglQuerySurface()." into gingerbread
Merge commit 'eb248a58fabac31873982e4f389ba81981f4041f'

* commit 'eb248a58fabac31873982e4f389ba81981f4041f':
  fix [2870926] Issue 9802: EGL wrapper has not been implemented correctly for eglQuerySurface().
2010-07-29 22:25:15 -07:00
Mathias Agopian
31fc9fd037 am 55a76dd8: Merge "fix [2870926] Issue 9802: EGL wrapper has not been implemented correctly for eglQuerySurface()." into gingerbread
Merge commit '55a76dd8d9996c1e93762d7611789aea696d536c' into gingerbread-plus-aosp

* commit '55a76dd8d9996c1e93762d7611789aea696d536c':
  fix [2870926] Issue 9802: EGL wrapper has not been implemented correctly for eglQuerySurface().
2010-07-29 20:54:12 -07:00
Mathias Agopian
cee79391c8 fix [2870926] Issue 9802: EGL wrapper has not been implemented correctly for eglQuerySurface().
rework how our EGL wrapper manages EGLConfig:

- we now store the EGLConfig with the EGLSurface and EGLContext
  so that we can have easy access to it from eglQueryContext
  and eglQuerySurface.

- EGLConfig now are an index into a sorted table of egl_config_t,
  we use a binary search to retrieve our EGLConfig (the index) from
  the implementation's EGLConfig.

- egl_config_t keeps track of the implementation's index,
  EGLConfig and CONFIG_ID as well as our CONFIG_ID.

In many ways, this implementation is simpler and more robust, as it doesn't
assume anything about the number of implementations nor what EGLConfig is
made of (the previous code assumed EGLConfig didn't usem more than 24-bits).

Change-Id: Id5abe923aacb6e1fd2b63bd8c15d7b04ae824922
2010-07-26 21:14:59 -07:00
Jason Sams
7920987182 Update filltest.
Change-Id: I37f2bde9898046eafb6431519dae78bf6f368f05
2010-07-21 15:24:02 -07:00
Jack Palevich
3e9eb868b3 Fix extraMath state variable.
Change-Id: Iba76d3e4e3bab0b993d176755f588201c8a967cd
2010-07-19 18:01:39 -07:00
Jack Palevich
92a9ae4a02 Try to handle end-of-application better.
Handle rotation from portrait to landscape by restarting test if not
finished.

Don't write blank line to csv file.

Change-Id: I154443138817bcec9530123c8388fcf659632336
2010-07-19 17:52:12 -07:00
Jack Palevich
63bcb5f8e2 Write test timings to /sdcard/glperf.csv
Change-Id: If09e209a9d8049f03320dbd7df257137bf06949e
2010-07-19 17:39:52 -07:00
Jack Palevich
965b95468d Keep screen on for whole test.
Print only one set of timings per test.

Draw blank black screen when done.

Change-Id: I963bcbca99ff5975683b15e60437978eb1a8beb8
2010-07-19 17:01:25 -07:00
Jack Palevich
eb69d2ae19 An application version of the GL test.
Change-Id: Ibcccdf2560eb24d3037c02c4740f0048b60d070c
2010-07-19 16:27:54 -07:00
Jason Sams
e0f1cff1fa gl perf test cleanup.
Change-Id: Ic486774e25421bd2f412f0ba2bbac4660e3982b8
2010-07-12 11:59:34 -07:00
Andy McFadden
a5c381fd51 Fix build.
Added missing #include <string.h>.

Change-Id: Idf151876851110098fe538a042f896784821919b
2010-07-12 09:17:13 -07:00
Jason Sams
e448dd1a4f Remove points from fixed function.
Add basic GL performance test.

Change-Id: I421a41b6683b2c5f70045cdd0f610a6939105fee
2010-07-09 15:34:32 -07:00
Mathias Agopian
c64622bcb0 am 5219a82f: am 8ecfb60a: Merge "Fix a bug that prevented the creation of EGL shared contexts." into gingerbread
Merge commit '5219a82f9d64a7d13401dcf9a0703a0ca2cd842d'

* commit '5219a82f9d64a7d13401dcf9a0703a0ca2cd842d':
  Fix a bug that prevented the creation of EGL shared contexts.
2010-07-02 13:39:38 -07:00
Mathias Agopian
7c1c974d79 am 8ecfb60a: Merge "Fix a bug that prevented the creation of EGL shared contexts." into gingerbread
Merge commit '8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d' into gingerbread-plus-aosp

* commit '8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d':
  Fix a bug that prevented the creation of EGL shared contexts.
2010-07-02 12:34:22 -07:00
Mathias Agopian
bf83375c73 Merge "Fix a bug that prevented the creation of EGL shared contexts." into gingerbread 2010-07-02 12:32:33 -07:00
Jamie Gennis
4c39f8f9e2 Fix a bug that prevented the creation of EGL shared contexts.
Change-Id: I6b0ec5ef86abdd4e9083067ba297107cfb094df3
2010-07-02 12:05:07 -07:00
Jean-Baptiste Queru
d26e345f29 resolved conflicts for merge of f601ce2c to master
Change-Id: I9e880aacef9d949d83945d41ee5b6eb63ddc4cc7
2010-07-02 07:46:21 -07:00
The Android Open Source Project
3541b20f6f merge from open-source master
Change-Id: Ifec16490ea2170728cb6ccb18d2e74fcb3478db6
2010-07-02 07:38:30 -07:00
Dianne Hackborn
ed2b843c91 am 177c405a: am c6e1d880: Merge "Introduce official public NativeWindow type." into gingerbread
Merge commit '177c405a242e811b1010bd8382b5807ab8df31a8'

* commit '177c405a242e811b1010bd8382b5807ab8df31a8':
  Introduce official public NativeWindow type.
2010-06-30 16:11:21 -07:00
Dianne Hackborn
d729836ff8 am c6e1d880: Merge "Introduce official public NativeWindow type." into gingerbread
Merge commit 'c6e1d88022db800773401c16803e1ab27fd01a7e' into gingerbread-plus-aosp

* commit 'c6e1d88022db800773401c16803e1ab27fd01a7e':
  Introduce official public NativeWindow type.
2010-06-30 16:08:24 -07:00
Dianne Hackborn
4b5e91e482 Introduce official public NativeWindow type.
Not yet hooked up to anything in the NDK, but requires renaming
the existing android_native_window_t type everywhere.

Change-Id: Iffee6ea39c93b8b34e20fb69e4d2c7c837e5ea2e
2010-06-30 15:32:04 -07:00
Bruce Beare
a1a79197c0 Fix missing NL
Change-Id: I323f0c01d2e9ad4c9f07cad24bf6b63edc28ad62
Signed-off-by: Bruce Beare <brucex.j.beare@intel.com>
2010-06-25 09:08:12 -07:00
Jack Palevich
037256be7e am 1e08cc1d: am 224107a4: Add OpenGL ES 2.0 VBO versions glDrawElements and glVertexAttribPointer.
Merge commit '1e08cc1dfda9a0264fcf62898af0bdd6ed5a205c'

* commit '1e08cc1dfda9a0264fcf62898af0bdd6ed5a205c':
  Add OpenGL ES 2.0 VBO versions glDrawElements and glVertexAttribPointer.
2010-06-23 10:30:34 -07:00
Mathias Agopian
243ce507c4 am cefb8858: am 28333315: Merge "Added support for the GL_TEXTURE_EXTERNAL target" into gingerbread
Merge commit 'cefb88587443323d147e687ff78eae9195eb584c'

* commit 'cefb88587443323d147e687ff78eae9195eb584c':
  Added support for the GL_TEXTURE_EXTERNAL target
2010-06-23 10:17:56 -07:00
Jack Palevich
0a51628683 am 224107a4: Add OpenGL ES 2.0 VBO versions glDrawElements and glVertexAttribPointer.
Merge commit '224107a421e2611b15d1ec736df54bca9ee3e78d' into gingerbread-plus-aosp

* commit '224107a421e2611b15d1ec736df54bca9ee3e78d':
  Add OpenGL ES 2.0 VBO versions glDrawElements and glVertexAttribPointer.
2010-06-22 05:16:24 -07:00
Jack Palevich
b3ffef9dfe Add OpenGL ES 2.0 VBO versions glDrawElements and glVertexAttribPointer.
Change-Id: Id0069535e97fe96eef74e4d0c1d19b010061fe3b
2010-06-22 20:08:40 +08:00
Mathias Agopian
38c371361b am 28333315: Merge "Added support for the GL_TEXTURE_EXTERNAL target" into gingerbread
Merge commit '28333315c6f62b303de2ec0ac9e48158ed419f06' into gingerbread-plus-aosp

* commit '28333315c6f62b303de2ec0ac9e48158ed419f06':
  Added support for the GL_TEXTURE_EXTERNAL target
2010-06-21 15:14:29 -07:00