252 Commits

Author SHA1 Message Date
Jack Palevich
3608891b83 Add a Java API for OpenGL ES 2.0.
Currently this API is hidden.

Add a test program.
2009-12-09 16:34:33 +08:00
Jack Palevich
9bb4dbae91 Improve error message thrown when eglCreateContext fails. 2009-12-04 17:15:07 +08:00
Jack Palevich
d682ab72c5 Improve error reporting by always returning the public
EGL10.EGL_NO_XXX objects for displays, surfaces, and contexts.

This allows clients to compare the returned object against
the public EGL10.EGL_NO_XXX object using a simple == operation.

This fixes bug 2303947 "Java layer EGL API makes it difficult
to tell when certain methods have failed"
2009-12-04 17:07:31 +08:00
Li Wenhao
51438c18f5 the vertex index should be "first + i". 2009-12-02 21:15:33 -08:00
Mathias Agopian
77f17095ed am 533a2803: Merge change I18ffb549 into eclair
Merge commit '533a2803506cc4f196403fdfafd948bd4f8e60d9' into eclair-mr2

* commit '533a2803506cc4f196403fdfafd948bd4f8e60d9':
  fix [2069023] STOPSHIP: disable DEBUG_COPYBIT
2009-12-01 17:13:50 -08:00
Mathias Agopian
18ffb5493b fix [2069023] STOPSHIP: disable DEBUG_COPYBIT 2009-11-30 12:10:53 -08:00
Jack Palevich
9c0b39c47e am ca00dee2: Merge change I5aa3adcf into eclair
Merge commit 'ca00dee21425882619aef4ecbe3e0d08de0544e5' into eclair-mr2

* commit 'ca00dee21425882619aef4ecbe3e0d08de0544e5':
  Improve the exception message text by including eglGetError().
2009-11-25 13:48:54 -08:00
Jack Palevich
5aa3adcf30 Improve the exception message text by including eglGetError().
Should help us track down the cause of bug 2285187
2009-11-25 13:56:21 +08:00
Mathias Agopian
b439f561a6 am 13feccf5: Merge change I39f0003e into eclair
Merge commit '13feccf592d6870b41b3b8a0a31d2abefad0d7ae' into eclair-mr2

* commit '13feccf592d6870b41b3b8a0a31d2abefad0d7ae':
  fix [2235414] libagl glDeleteBuffers() crashes
2009-11-19 19:07:36 -08:00
Mathias Agopian
39f0003e3a fix [2235414] libagl glDeleteBuffers() crashes
don't dereference null pointers, would happen if one of the array wasn't bound.
2009-11-19 17:32:05 -08:00
Jack Palevich
a822f02bb9 resolved conflicts for merge of dc49acb0 to eclair-mr2 2009-11-17 11:39:54 +08:00
Jack Palevich
a08d46d8aa More GLSurfaceView cleanup.
+ The mDone flag is now a pair of flags: mShouldExit and mExited. The
problem with mDone was that it meant "had been asked to exit", but was
being used by some observers as "had exited". Using two variables means
that observers can observe either "had been asked to exit" or "had exited",
as they prefer.

+ Simplyify where we check for mShouldExit. We now check for it at the
  top of our innermost guardedRun while loop.

+ requestExitAndWait now waits for mExited to be set to true to know
that a thread has exited, rather than using join(). This means we can use
wait() for the check, which releases the sGLThreadManager
monitor, avoiding a potential deadlock.

+ move the event queue into the sGLThreadManager monitor. This avoids
having to acquire two locks in order to enque/deque events, which also
avoids the potential for lock ordering deadlocks.

+ Simplify the event dequeueing code. We now deque one event each time
through the main GLSurfaceView loop. Events still have priority over
rendering, so there isn't any semantic change, it just cleans up the code.

+ Avoid trying to acquire an egl Surface if we're paused.

+ To simplify reasoning about the code, call sGLThreadManager.notifyAll()
in every case where we modify one of the variables that's protected by
the sGLThreadManager monitor. It would be slightly more efficient to only
notify when we change variables that could cause a thread to wait(), but
then we would have to redo our analysis every time we change any code.

+ Clean up the logic for creating the EGL surface and then calling the
renderer's onSurfaceCreated / onSurfaceChanged methods.

+ Implement work-around for bug 2263168	"Need to draw twice after
  screen rotation..."
2009-11-16 18:48:26 +08:00
Mathias Agopian
66b5d902a2 am 27407208: Merge change Icf335098 into eclair
Merge commit '274072089ceff6eacb9ccfb59290a18f43739c87' into eclair-mr2

* commit '274072089ceff6eacb9ccfb59290a18f43739c87':
  fix [2236865] STOPSHIP: bump soft gl and egl minor version number
2009-11-12 23:06:15 -08:00
Mathias Agopian
cf3350982f fix [2236865] STOPSHIP: bump soft gl and egl minor version number 2009-11-12 15:19:42 -08:00
Jack Palevich
1179efbb3b resolved conflicts for merge of ba56915a to eclair-mr2 2009-11-11 10:01:46 +08:00
Android (Google) Code Review
ba56915a71 Merge change Ie806ae6f into eclair
* changes:
  Fix multi-lock ordering issues in GLSurfaceView
2009-11-10 15:21:28 -08:00
Jack Palevich
67dcd6c239 Fix multi-lock ordering issues in GLSurfaceView
There were potential deadlocks between the per-GLThread monitors and the
GLThreadManager monitor.

To avoid these deadlocks we now use a single monitor for
both the GLThreadManager state and the per-GLThread state.

Converted GLThreadManager's semaphore into the equivalent
synchronized-wait-notifyAll code. This enables us to wait for
either mDone, or user events, or the EGL surface with a single "wait()".

Simplified the logic used to acquire and release the EGL surface. The
EGL surface is now only requested while the surfaceFlinger surface
is acquired.

Removed the "egl surface stealing" policy we had recently inserted.
It's not needed now that we reliably quit when requested.

Pulled user event processing outside of the  GLThreadManager monitor
so that we don't call any potentially-long-running code while
inside the monitor.

This should help with bug 2228262.
2009-11-10 18:26:42 +08:00
Mathias Agopian
0b9d3ba2fe am c421fc2a: Merge change Id09376d1 into eclair
Merge commit 'c421fc2ada7c1bff104733b840bd640151bebbbb' into eclair-mr2

* commit 'c421fc2ada7c1bff104733b840bd640151bebbbb':
  fix [2071412] work around mdp 32-bits fade limitation
2009-11-09 19:34:59 -08:00
Mathias Agopian
d09376d1e2 fix [2071412] work around mdp 32-bits fade limitation
make sure to always specify blits *inside* the source bitmap.
2009-11-09 17:55:59 -08:00
Jack Palevich
8da3ac92a6 resolved conflicts for merge of 3f857b78 to eclair-mr2 2009-11-10 08:04:53 +08:00
Jack Palevich
32d4165184 Allow a GLThread to release and reacquire the EGL Surface as needed.
We currently only allow one GLThread to have an active EGL Surface at a
time.(This may be lifted in the future, when EGL and GL are reentrant.)

Prior to this change we would enforce this rule by having older GLThreads
quit when a new GLThread started. That had the drawback of leaving the
older GLSurfaceViews in a zombie state -- their GLThreads would be
gone.

We now enforce this rule by just releasing and reacquiring the EGL surface
context as needed.

Specific changes to the code:

created private helper methods - startEgl and stopEgl to help manage
starting and stopping EGL.

Move the calls to sGLThreadManager start and end from the outermost run
method into the startEgl / stopEgl methods.

Reworked the wait loop to handle starting and stopping EGL as needed.

needToWait() gets simpler -- just looks at current status.

sGLThreadManager.shouldQuit was replaced by shouldHaveEgl.


This is another step in fixing bug 2228262.
2009-11-08 10:55:56 +08:00
Jack Palevich
a3a351e5d1 resolved conflicts for merge of 4e3fadd0 to eclair-mr2 2009-11-06 16:35:19 -08:00
Jack Palevich
a44249500f Fix stupid bug in GLThreadManager implementation.
The code intended to copy the old value of a field, before the
field was updated. However, what the code was actually doing was
copying the new value of the field, after the field was updated.

The fix was to move the copy to before the update.

This is work towards fixing bug 2228262
2009-11-07 07:49:15 +08:00
Jack Palevich
79447b2087 resolved conflicts for merge of 84872738 to eclair-mr2 2009-11-06 00:13:38 -08:00
Jack Palevich
8b2c9c9ecb Improve GLSurfaceView to avoid deadlocks and race conditions.
This is work towards fixing bug 2228262

Specific issues fixed by this change:

+ GLThread names now include the thread id, making it easier to tell one
GLThread from another.

+ A private final static boolean LOG_THREADS can be set to true at compile
time to print out thread-related trace information, helpful for debugging
GLSurfaceView behavior. This static defaults to "false".

+ Changed calls to "notify" to "notifyAll" to make the code more
robust in case more than two threads are blocked on the same monitor.

+ Add a GLThreadManager to help manage the transition to
a new GLThread. Currently only one GLThread can be active in an address
space. When the second thread starts up, the GLThreadManager helps the old
GLThread to shut down,

+ Make sure we stop waiting for dead GLThreads. This is done by adding
checks for a variable mDone being true to our monitor wait loops. And
we use a "finally" clause at the end of GLThread.run() method to set mDone
and notifyAll any wait loops.
2009-11-06 10:21:46 +08:00
Mathias Agopian
6d9e0c7aa7 am 36fe3eea: part of fix [2186418] switch passion to 24-bits framebuffer
Merge commit '36fe3eeaa056ff13455c0df73b495b2bae8c1469' into eclair-mr2

* commit '36fe3eeaa056ff13455c0df73b495b2bae8c1469':
  part of fix [2186418] switch passion to 24-bits framebuffer
2009-11-04 14:59:44 -08:00
Mathias Agopian
36fe3eeaa0 part of fix [2186418] switch passion to 24-bits framebuffer
add support for RGBX_8888 EGLConfigs in the software renderer
(since that's what we're using in the MDP case)
2009-11-04 14:51:18 -08:00
Mathias Agopian
8e5e44e953 am 9a54d7dd: Merge change Ibbf945f3 into eclair
Merge commit '9a54d7dddcbc982d644c627693dc39fb2cb5c0fb' into eclair-mr2

* commit '9a54d7dddcbc982d644c627693dc39fb2cb5c0fb':
  fix [2236832] software OpenGL ES driver doesn't work on sholes
2009-11-04 13:14:59 -08:00
Mathias Agopian
bbf945f3c0 fix [2236832] software OpenGL ES driver doesn't work on sholes
make sure to not pass our fake handles to the real gralloc
2009-11-03 21:08:06 -08:00
Mathias Agopian
65ab88c789 am 21977eb0: Merge change I56981989 into eclair
Merge commit '21977eb0f1d22497d0beed0492e579f953a56552' into eclair-mr2

* commit '21977eb0f1d22497d0beed0492e579f953a56552':
  fix [2231527] Compatibility with SpaceJunk game (OpenGL)
2009-11-03 15:11:11 -08:00
Android (Google) Code Review
21977eb0f1 Merge change I56981989 into eclair
* changes:
  fix [2231527] Compatibility with SpaceJunk game (OpenGL)
2009-11-03 18:04:49 -05:00
Mathias Agopian
07d38c6669 am 8637759a: Merge change I36d0184e into eclair
Merge commit '8637759a1d34a4adda292579d5f8790587659235' into eclair-mr2

* commit '8637759a1d34a4adda292579d5f8790587659235':
  fix[2228133] pixelflinger ignores the "vertical stride" leading to artifacts when playing back video
2009-11-03 09:34:40 -08:00
Mathias Agopian
5698198967 fix [2231527] Compatibility with SpaceJunk game (OpenGL)
we treated all lights as local lights when transforming their
position back to object space.
2009-11-02 18:33:08 -08:00
Mathias Agopian
36d0184e08 fix[2228133] pixelflinger ignores the "vertical stride" leading to artifacts when playing back video
we lost the concept of vertical stride when moving video playback to EGLImage.
Here we bring it back in a somewhat hacky-way that will work only for the
softgl/mdp backend.
2009-11-02 17:48:33 -08:00
Iliyan Malchev
8385baea47 am 05cb5610: Merge change I8c0eb9a6 into eclair
Merge commit '05cb5610fdfb7b69cf90a9230853e59b4ae5e219' into eclair-mr2

* commit '05cb5610fdfb7b69cf90a9230853e59b4ae5e219':
  libagl: silence a LOGD
2009-10-30 18:35:51 -07:00
Iliyan Malchev
8c0eb9a6eb libagl: silence a LOGD
Signed-off-by: Iliyan Malchev <malchev@google.com>
2009-10-30 18:29:08 -07:00
Mathias Agopian
cbf583d722 am 77bd91f8: Merge change Ie3e80456 into eclair
Merge commit '77bd91f8af44867935ea2df22f69fb244b009b94' into eclair-mr2

* commit '77bd91f8af44867935ea2df22f69fb244b009b94':
  Turns out the SGX driver is correct and the bug was in this test.
2009-10-30 17:07:49 -07:00
Android (Google) Code Review
77bd91f8af Merge change Ie3e80456 into eclair
* changes:
  Turns out the SGX driver is correct and the bug was in this test.
2009-10-30 19:40:09 -04:00
Mathias Agopian
e3e80456fb Turns out the SGX driver is correct and the bug was in this test.
make sure the 565 1-texel wide texture is specified with an alignment of 4
which is the OpenGL ES default.
2009-10-30 16:32:52 -07:00
Mathias Agopian
d85545d0b4 am d01767f8: Merge change I56779290 into eclair
Merge commit 'd01767f8b7038108f9125cd2122b117db9919824' into eclair-mr2

* commit 'd01767f8b7038108f9125cd2122b117db9919824':
  fix[2222341] Soft reset while going back from camcorder settings
2009-10-30 15:01:57 -07:00
Mathias Agopian
74d4640c0b am f989c114: Merge change If007a2fa into eclair
Merge commit 'f989c1140bbc84480498df38abec0fafff04e6ee' into eclair-mr2

* commit 'f989c1140bbc84480498df38abec0fafff04e6ee':
  return proper error code from eglCreateImageKHR
2009-10-30 15:01:44 -07:00
Android (Google) Code Review
d01767f8b7 Merge change I56779290 into eclair
* changes:
  fix[2222341] Soft reset while going back from camcorder settings
2009-10-30 17:54:10 -04:00
Android (Google) Code Review
f989c1140b Merge change If007a2fa into eclair
* changes:
  return proper error code from eglCreateImageKHR
2009-10-30 17:54:03 -04:00
Mathias Agopian
0b0722f980 fix[2222341] Soft reset while going back from camcorder settings
add a way to convert a mapped "pushbuffer" buffer to a gralloc handle
which then can be safely used by surfaceflinger, without including
gralloc_priv.h
2009-10-30 14:48:50 -07:00
Mathias Agopian
af7d2dda80 am 5dc7a21c: Merge change I4e036287 into eclair
Merge commit '5dc7a21cbbd4af908e39e55e5ca7ab14cda25d4a' into eclair-mr2

* commit '5dc7a21cbbd4af908e39e55e5ca7ab14cda25d4a':
  update line test to expose some bug on SGX530 ed4
2009-10-29 19:34:15 -07:00
Mathias Agopian
f007a2faa1 return proper error code from eglCreateImageKHR 2009-10-29 16:45:41 -07:00
Mathias Agopian
4e036287fd update line test to expose some bug on SGX530 ed4 2009-10-29 15:47:12 -07:00
Mathias Agopian
2b770bbe46 am 85ade33e: fix [2071412] work around mdp 32-bits fade limitation
Merge commit '85ade33edcc7d9be462ad7b8455d27f6654aca5e' into eclair-mr2

* commit '85ade33edcc7d9be462ad7b8455d27f6654aca5e':
  fix [2071412] work around mdp 32-bits fade limitation
2009-10-29 13:43:26 -07:00
Mathias Agopian
a2151b2b98 am 7bde36e6: added GL test for textured lines
Merge commit '7bde36e64e66c81f0150d0372e1357a31f4ec704' into eclair-mr2

* commit '7bde36e64e66c81f0150d0372e1357a31f4ec704':
  added GL test for textured lines
2009-10-29 01:27:18 -07:00
Mathias Agopian
893cb4da10 am 73e17015: Merge change I8d2de438 into eclair
Merge commit '73e17015d3cd67c93ccad5d63d31c439ff6fa694' into eclair-mr2

* commit '73e17015d3cd67c93ccad5d63d31c439ff6fa694':
  fix [2143798] Need to figure out how to do video
2009-10-29 01:26:48 -07:00