860 Commits

Author SHA1 Message Date
Mathias Agopian
29e0bd2f5a GLSurfaceView defaults to 888 instead of 565
Change-Id: Ie00fe578136365031e4bb878a04b68dc40e24b9e
2012-09-18 15:36:10 -07:00
Dianne Hackborn
f02b60aa4f Rename UserId to UserHandle.
This is the start of turning this into a formal public API.

Change-Id: I5786d2c320f1de41a06ed5d0f65adb68967287a0
2012-08-16 12:46:38 -07:00
Jeff Brown
1296c63bf1 Enable use of Surface as a native window in EGL14 wrapper.
Change-Id: Ia3546fd02f9b60d4505fbc0602522b95e3e5b6be
2012-08-08 18:23:59 -07:00
Romain Guy
42e1e0d482 Improve gradients
Avoid using textures for common gradients (two stops from 0.0 to 1.0)

Change-Id: Iff55d21b126c8cfc4cfb701669f2339c8f6b131a
2012-07-31 18:55:16 -07:00
Romain Guy
0a088f5d46 Fix android.opengl.Matrix frustum's generation
External bug report: http://code.google.com/p/android/issues/detail?id=35646

Change-Id: I845783c05da46855f0c1d824c9a367f0e4673b85
2012-07-30 14:06:35 -07:00
Romain Guy
63cf075222 Merge "Make HardwareRenderer able to target generic Surface objects" 2012-07-24 17:21:56 -07:00
Romain Guy
786fc93d71 Make HardwareRenderer able to target generic Surface objects
Change-Id: I4b7199a1eb30e0df354ae12c4819adc69db5df40
2012-07-24 16:41:21 -07:00
Thomas Tafertshofer
dd06946252 updated gles20 bindings, fixes broken methods
this adds correct versions of the broken GLES20 methods
glGetShaderSource, glGetActiveAttrib and glGetActiveUniform.
the old functions are still there and need to be @hide later.

Bug: 6006380
Change-Id: I8127a77c4b89aa8a9a54bea88774077535e2139d
2012-07-19 17:04:47 -07:00
Thomas Tafertshofer
9b18b51590 EGL 1.4 API without @hide
Change-Id: If03d23082b011aaba41594712601495dcbd70f6a
2012-07-13 17:44:00 -07:00
Thomas Tafertshofer
6b1e838fc1 EGL 1.4 bindings generated by glgen
Change-Id: I1c3da57101f4ea089a12f1796f25b72d6852141e
2012-07-10 15:48:30 -07:00
Jack Palevich
cee059dc76 Improve GLSurfaceView Pausing.
When pausing we want to do three separate things, in order:

 + release the EGL surface
 + optionally release the EGL context
 + optionally terminate Egl

Previously we would only do these things if we had an EGL surface. But
it is possible that we don't have an EGL Surface, but still have an EGL
context. And in that situation we still want to release the EGL context.

Now we check the preconditions for the three cases separately.

Bug: 6338235
Change-Id: I804683b3d5c136cc98ea3f5051067eea18152ddf
2012-04-16 12:25:36 -07:00
Jack Palevich
7dee7a38ba Notify monitor waiters when changing mSurfaceIsBad value.
Otherwise the waiters might not wake up, leading to ANRs.

Bug: 6307843
Change-Id: I0646b4e8368f80dbff46342f75709992796973fd
2012-04-10 06:05:42 -07:00
Jack Palevich
7d73df83f9 Try to survive a failure return from eglMakeCurrent.
Assume a failure in eglMakeCurrent occurs because the SurfaceView
surface has been destroyed.

See b/6257956 for an example of this failure happening during rotation
stress testing.

Change-Id: I4618703b5291aba3a3f0c6bd83c3435a67b97d33
2012-03-29 16:24:58 -07:00
Jack Palevich
db6c78b5bd Make GLSurfaceView handle eglSwapBuffers errors more robustly.
A careful reading of the EGL spec, as well as experience with many
different EGL drivers, has shown that it is error prone to attempt to
discriminate between different error conditions.

We now treat any error besides EGL_CONTEXT_LOST as an indication that the
EGL context is in a bad state, most likely due to the window manager
having removed the underlying surface flinger surface.

In addition, we changed the way we deal with this kind of error:
Previously we would ignore the error and keep rendering. But if the
EGL context and surface has become invalid, it would be better to
stop drawing. We now stop drawing until the surface view surface is
recreated.

See b/6032663 for an example of this problem affecting the GMM app,
but note that GMM is using their own version of GLSurfaceView, so this
change won't help them directly. They'll have to make a similar change
to their version of GLSurfaceView.

Change-Id: Iffe3e1e3a3c7a91d03140fd34391eadeaecf777e
Signed-off-by: Jack Palevich <jackpal@google.com>
2012-03-29 12:23:57 -07:00
Amith Yamasani
ad812a23df Merge "Package restrictions per user" 2012-03-22 15:11:51 -07:00
Jack Palevich
f7f4c20605 Merge "Remove EGL context limit for Adreno GPUs." 2012-03-22 11:47:30 -07:00
Amith Yamasani
483f3b06ea Package restrictions per user
Packages can be enabled/disabled per user.
This requires maintaining stopped/launched states and
enabled / disabled components and packages per user.

Refactored pm.Settings and PackageSettingsBase to keep
track of states per user.

Migrated the stopped-packages.xml to users/<u>/package-restrictions.xml

Changed intent resolution to handle individual user restrictions.
Bunch of IPackageManager calls now have a userId argument.
Make AppWidgetService handle removals of packages.

Added some tests for pm.Settings and PackageManager.

Change-Id: Ia83b529e1df88dbcb3bd55ebfc952a6e9b20e861
2012-03-22 10:08:24 -07:00
Jack Palevich
8b854cd74b Remove EGL context limit for Adreno GPUs.
This change allows Adreno GPUs to have multiple EGL contexts. We had
to limit this in earlier versions of Android due to limitations in
the Adreno GPU driver (only 8 EGL contexts allowed system wide.)
That brand of GPU has improved its EGL drivers to support multiple
EGL contexts in more recent versions of their drivers used on more
recent versions of Android.

Bug: 6142005
Change-Id: Id3030466be9a3d9fbe728f1785378c1f05da98fe
2012-03-19 11:17:40 -07:00
Jack Palevich
48a59c3d85 Ignore EGL_BAD_CURRENT_SURFACE errors from eglSwapBuffers
Certain EGL device drivers are generating this error, so we need to
survive it. (It's not clear from the EGL spec whether this is a
legitimate error code, but since it's being generated we need to
handle it.)

Remove logging of expected errors from elSwapBuffers. We expect these
errors to happen, and are handeling them by ignoring them.
No need to clutter the logs.

Bug: 6083241

Change-Id: If17dcfbb68d3009b92cf95a448728ccb47023b51
2012-03-15 11:50:45 -07:00
Siva Velusamy
64d10a1da0 Expose a function to set OpenGL Trace level.
This patch adds a function setGlDebugLevel() to libEGL, and
exposes it to the Java layer at android.opengl.GLUtils.enableTracing().

Change-Id: Ia5abb130bc32fcfe3ab25b0a0a5283a54c54f357
2012-03-09 15:25:29 -08:00
Mathias Agopian
8c79817dc6 remove files that moved to frameworks/native
Change-Id: I140d291e520097b1148930f736823650e08488f7
2012-03-07 19:36:08 -08:00
Mathias Agopian
08965ec67a fixup hardcoded include paths for new project
Change-Id: Id443ec5c99bb4d7653905f1be1f72a029e0cf087
2012-03-07 19:34:36 -08:00
Siva Velusamy
aa52141212 Merge "gltrace: Send vertex attribute data after glDraw() call." 2012-03-06 08:59:32 -08:00
Mathias Agopian
a1549ff1bf 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
1c5387e1cb 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
a85ca37c84 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
7d3916ff9c libagl shouldn't export anything
Change-Id: Ia823dbc56aab2a0b8a6063df4348fe6baac124c6
2012-02-27 13:03:04 -08:00
Siva Velusamy
89dd68f8d2 Merge "gltrace: Make code 64-bit safe." 2012-02-27 12:31:01 -08:00
Siva Velusamy
d4edba0fe9 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
0a66900ee5 Merge "gltrace: attach buffer data sent with glBufferData" 2012-02-27 07:41:38 -08:00
Mathias Agopian
af01feafc3 remove dependency on android_native{s_priv|buffer}.h
Change-Id: Ie4b95f7061c240f37c504414259f92d72c4ffc89
2012-02-24 18:26:01 -08:00
Mathias Agopian
cc0eaa6582 remove libui dependency on libEGL
Change-Id: I1194f04085637d5c384e134967249430cc43b6ee
2012-02-24 16:42:46 -08:00
Siva Velusamy
8293c92c75 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
7d5bb3ddf3 Merge "gltrace: Trace thread time and wall clock time." 2012-02-17 15:05:36 -08:00
Romain Guy
e97df97b6c Merge "Remove unused private APIs" 2012-02-17 13:09:19 -08:00
Romain Guy
97eda365fc Remove unused private APIs
Change-Id: Ib22005c7ed9923120089a1f1c806bca55bb90967
2012-02-17 13:08:35 -08:00
Siva Velusamy
3b4f3748f4 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
70579d5d41 Merge "Don't wrap EGLImageKHR and EGLSyncKHR anymore" 2012-02-14 18:59:47 -08:00
Mathias Agopian
508c165b19 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
03290d2714 Merge "gltrace: Patch up all glUniform*() calls." 2012-02-14 16:36:44 -08:00
Siva Velusamy
892fdd600f 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
b749dd8530 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
8db8509e3c 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
7b864906e5 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
a16cc6b271 gltrace: fixup Push & Insert Marker calls
Change-Id: I58ced7225fac79ec636a65da4883614a5dce6dff
2012-02-01 12:16:40 -08:00
Mathias Agopian
9eb95992ea 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
11c5db5e29 Merge "add all needed GL extension wrappers" 2012-01-30 17:44:09 -08:00
Mathias Agopian
d0393a9e18 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
818b423658 Merge "add support for GL_EXT_debug_marker" 2012-01-30 15:23:47 -08:00
Siva Velusamy
b09316736f Merge "gltrace: Use Unix Domain Socket rather than INET Socket" 2012-01-30 09:08:27 -08:00