511 Commits

Author SHA1 Message Date
Chris Craik
aa9972943c Merge "Revert "Add temporary functor lifetime logging"" into jb-dev 2012-05-08 13:35:09 -07:00
Chris Craik
12d434a9be Revert "Add temporary functor lifetime logging"
bug:6445573

This reverts commit 2fe99801e81bb7c0ff846b536cbb7a12707410ed
2012-05-08 13:07:13 -07:00
Chet Haase
4bbcae7eb8 Merge "Fix issue where scale-animating text would jump temporarily a few pixels" into jb-dev 2012-05-07 13:20:00 -07:00
Chet Haase
d3efd6920e Fix issue where scale-animating text would jump temporarily a few pixels
Some logic in the native matrix code would determine that a matrix was
'pureTranslate' based on the scale values of a matrix being close-enough to 1,
which was within a very small epsilon. This works in general, because screen space
coordinates make that epsilon value irrelevant, so close-enough really is close-enough.

However, TextView, when centering text, works in a coordinate system that is quite
huge, with left/right values about 500,000. These numbers multiplied times that small
epsilon value would give a result that was significant, and would cause a miscalculation
of up to 4-5 pixels, causing the snap that we'd see for a couple of frames as the
scale got "close enough" to 1.

The fix is to remove the optimization of "close enough". What we really need the matrix to
do is to identify itself as being translate-only when no scale as been set (which is the
default). For the purposes of that check, it is good enough to simply check the values against
1 directly. Similarly, the bounds-check logic needs to check against 0 and 1 directly.

Issue #6452687: Glitch when changing scale of a view containing text

Change-Id: I167fb45d02201fb879deea0e5a7ca95e38128e17
2012-05-07 12:18:19 -07:00
Chet Haase
d34dd71800 Fix hang/crash in native path code
An optimization for paths is to only create a texture for the original native
Path object, and have all copies of that object use that texture. This works in
most cases, but sometimes that original path object may get destroyed (when the
SDK path object is finalized) while we are still referencing and using that object
in the DisplayList code. This causes undefined errors such as crashes and hanging
as we iterate through the operations of a destroyed (and garbage-filled) path object.

The fix is to use the existing ResourceCache to refcount the original path until
we are done with it.

Issue #6414050 Analytics Dogfood App crashes reliably on Jellybean

Change-Id: I5dbec5c069f7d6a1e68c13424f454976a7d188e9
2012-05-03 11:14:50 -07:00
Chris Craik
2fe99801e8 Add temporary functor lifetime logging
bug:6405861

Note: revert once the above bug is verified fixed

Change-Id: Iae04ec6ffa73a2711f96e128d60011bcb5864b5c
2012-05-02 16:37:24 -07:00
Chet Haase
6f9ad204cc Fix launcher invisibility bug
There was a bug in the DisplayList code for layers where we would
set the alpha value for a layer only if the alpha were non-1. This works
most of the time (since the value is usually 1 and doesn't need to
be set at all, and if the value is non-1, it is set correctly). But when
the value has been set to a non-1 value, setting alpha back to 1 cannot happen
due to this logic. This caused launcher to have some invisible pages when
returning to Home because those pages previously had an alpha value of 0, and
setting the alpha to 1 had no effect due to this DisplayList code.

The fix is to simply remove the check for non-1 values; we should
always set the alpha value of layers to handle all cases.

Issue #6413892 alpha value is messed up after AlphaAnimation

Change-Id: Ia51acb2eaaf0609ea7189998ed449bdd9ea7e05f
2012-05-01 10:05:13 -07:00
Romain Guy
665a376d24 Merge "Work-around for a Skia rasterization bug Bug #6411457" into jb-dev 2012-04-27 15:20:04 -07:00
Romain Guy
fdd6fc1beb Work-around for a Skia rasterization bug
Bug #6411457

Skia does not generates the bottom right pixel of a rect when
drawing a rect as an SkPath into an alpha8 bitmap.

Change-Id: Ifb5286ae67745c9e44ee387b6d6ad607a9a2e6ce
2012-04-27 11:47:13 -07:00
Romain Guy
8bd12ea800 Merge "Decode common GL error codes when logging frame error status" into jb-dev 2012-04-26 14:06:41 -07:00
Romain Guy
a44a63ac5c Decode common GL error codes when logging frame error status
Change-Id: I38b333eea53aef20340ce48dfcb0dd30a223f7a8
2012-04-26 14:05:02 -07:00
John Reck
a75fbc3c76 Merge "On new content, attach functor directly" into jb-dev 2012-04-26 12:27:56 -07:00
Romain Guy
c189ef5322 Ensure we start every frame in the proper GL state
Bug #6345013, #6314960

Change-Id: I6985f7f233eb6a5f9223e9f4be3f323154b5dbf0
2012-04-25 20:02:53 -07:00
Chris Craik
c2c9543c13 On new content, attach functor directly
bug:6323847

depends on external/webkit change: https://android-git.corp.google.com/g/#/c/184314/

Change-Id: Ibdf997f3ee4f5c5c1ea5a320556813f175fea93f
2012-04-25 15:42:59 -07:00
Romain Guy
3d745c03ac Fix the build before the bot yells at me.
Change-Id: Ice7fe02b684ad662262aae3cac7a48a835ebcad5
2012-04-23 20:36:17 -07:00
Romain Guy
ba6be8a62d Prevent WebView from crashing when detached from the window
Bug #6365056

WebView enqueues a functor in the hardware renderer to handle
animations and this functor is called at a later time by the
hardware renderer. However, the functor was not removed from
the queue when WebView was removed from the window. This could
cause the hardware renderer to attempt to execute an invalid
functor and lead to a crash.

Change-Id: I9d38e80f3fdc5e29d4d0cdfa1e893c251a954508
2012-04-23 20:29:31 -07:00
Chet Haase
1271e2cc80 Remove USE_DISPLAY_LIST_PROPERTIES flag
This flag was still hanging around pending any need to disable
DisplayList properties. But things seem stable, so it's time to clean up
and simplify the code.

At the same time, I reduced redundance in DisplayList dimensions. We
used to call drawDisplayList() with width/height parameters that were
used to do a clip reject. This is redundant with the DisplayList properties
that set the bounds of the DisplayList; the left/right and top/bottom properties
represent the same width/height properties formerly used in drawDisplayList().
The new approach is to not pass dimensions to drawDisplayList(), but to
instead pull those dimensions directly from the DisplayList when needed.

Change-Id: I8871beff03b1d4be95f7c6e079c31a71d31e0c56
2012-04-23 11:13:17 -07:00
Chet Haase
a23eed808a Fix layer blending bug
Cached layers were sometimes retaining an obsolete blending
value, causing artifacts where translucent objects were disappearing
completely. Also, added extra tracing info for DisplayLists.

Issue #6303668 Flickering views during SwipeHelper drag

Change-Id: I66ce158652c4a3ed316040585b40b1744e1fad0c
2012-04-12 15:20:16 -07:00
Chet Haase
7b6a75872b Pass width/height parameters to webview
When webview draws into an fbo layer, it needs to know the
size of that surface to create the rendering transform appropriately.
This change copies in the current viewport size to the structure that
is passed to the webview.

Change-Id: I7160b0836d00834134c799c95a439cdc045e2035
2012-04-11 14:32:02 -07:00
Chris Craik
65924a3e56 fix functor flag parsing, tweak process delay
Change-Id: I0a679cc33f92ff6fd2e33db9ad58b52622def012
2012-04-05 17:52:11 -07:00
Romain Guy
fda531c9e4 Merge "Disable AA lines vertex attrib arrays after rendering" 2012-04-04 11:53:28 -07:00
Romain Guy
7b63142d2f Disable AA lines vertex attrib arrays after rendering
Change-Id: I2f035e9d87f4f97bc1e37355c84570fd58df0374
2012-04-04 11:38:54 -07:00
Romain Guy
8c8c240092 Merge "Optimize FBOs composition" 2012-04-03 19:33:06 -07:00
Romain Guy
e0aa84b7dc Optimize FBOs composition
Change-Id: Ifc8eada8922509373c0e4c3b2ed75b6f08d098de
2012-04-03 19:30:26 -07:00
Chet Haase
db8c9a6a4d Optimization of alpha with DisplayList properties
Some views (such as ImageView and TextView) handle non-opaque alpha
values directly. This was originally an optimization, but we can handle it faster
in many cases without this optimization when DisplayList properties are enabled.
Basically, if a view has non-overlapping rendering, we set the alpha value directly
on the renderer (the equivalent of setting it on the Paint object) and draw each
primitive with that alpha value. Doing it this way avoids re-creating DisplayLists
while getting the same speedup that onSetAlpha() used to get pre-DisplayList properties.

Change-Id: I0f7827f075d3b35093a882d4adbb300a1063c288
2012-04-03 14:02:17 -07:00
Romain Guy
e2eaf6997d Merge "Prevent crash when flushing the layers cache Bug #6258973" 2012-04-02 17:49:20 -07:00
Romain Guy
5c88fc744d Prevent crash when flushing the layers cache
Bug #6258973

When flushing the layer caches we would attempt to delete the FBOs
associate with layers in the cache. The FBO property was however not
always properly cleared when recycling layers.

Change-Id: I7dedfe391d659a0849f1e1d84df17313b2c6e2b2
2012-04-02 17:45:25 -07:00
Chris Craik
b6a80077dc Merge "Allow fine-grained control over functors execution" 2012-04-02 17:07:21 -07:00
Chet Haase
8d56b0e1d2 Enabling DisplayList properties
An earlier commit fixed problems with enabling DisplayList properties.
This CL actually enables the properties.

Change-Id: I5c41d0c64e9241822af53eb367de0fed7d9608e0
2012-04-02 16:34:48 -07:00
Chet Haase
9420abd56a Re-enable DisplayList properties.
Re-enabling DisplayList properties last week caused some app
errors due to the way that some transforms were being handled (specifically,
those coming from the old Animations and ViewGroup's childStaticTransformation
field). This change pushes *all* transform/alpha data from View.draw() into
the view's DisplayList, making DisplayLists more encapsulated (and correct).

Change-Id: Ia702c6aae050784bb3ed505aa87553113f8a1938
2012-04-02 15:31:24 -07:00
Romain Guy
8f3b8e3299 Allow fine-grained control over functors execution
Adds non-drawing execution mode

Change-Id: I82f92cf1b9a3b9ff2ca6d7427c4e02b73e04e6bf
2012-04-02 15:15:07 -07:00
Chet Haase
76240dafe8 Disable DisplayList properties pending fixes for AlphaAnimation
The new DisplayList properties design has ordering conflicts with the
way that alpha works with old animations (AlphaAnimation). This CL
disables DiksplayList properties while I'm working on a fix and some
more thorough tests for old animations-vs-DL properties in general.

Change-Id: I8f6893138f939171491c2ec3c889214ee55d17b7
2012-03-29 09:42:34 -07:00
Chet Haase
b85967b9af Re-enabling DisplayList properties
Several issues came up after DisplayList properties were enabled,
so they were disabled pending fixes. Those issues have been fixed, so
DisplayList properties are once again being enabled by default. This
CL both re-enables these properties (in View.java and DisplayListRenderer.h)
and fixes the various issues that enabling them caused the first time around.

Related issues (all currently marked as Fixed, though that was simply because
DL properties were disabled - this CL provides the real fixes now that
DL properties are enabled by default):
Issue #6198276 Text input broken
Issue #6198472 Native crash at pc 00076428 in many different apps in JRM80
Issue #6204173 Date/time picker isn't rendering all parts of UI
Issue #6203941 All Apps overscroll effect is rendered weirdly/has flickering
Issue #6200058 CAB rendering issue - not drawing items?
Issue #6198578 Front camera shows black screen after taking picture.
Issue #6232010 Layers not recreated when children change (DisplayList properties)

Change-Id: I8b5f9ec342208ecb20d3e6a60d26cf7c6112ec8b
2012-03-27 08:17:54 -07:00
Romain Guy
6554943a1d Use a status_t return type for GL functors
WebView needs more fine-grained control over the behavior of the
framework upon execution of the display lists. The new status_t
allows WebView to requests its functor to be re-executed directly
without causing a redraw of the entire hierarchy.

Change-Id: I97a8141dc5c6eeb6805b6024cc1e76fce07d24cc
2012-03-26 16:45:05 -07:00
Romain Guy
a9dd820184 Prevent random crashes on SGX architecture
Bug #6219894

Change-Id: If77f29da03e557a50e53bae505e1c638a1dbe2cc
2012-03-26 14:52:00 -07:00
Chet Haase
ad13c81371 Disable DisplayList properties
DisplayList properties are (again) disabled by default, via flags in
View.java and DisplayListRenderer.h. There are various artifacts to
chase down before enabling by default.

Issue #6198472 Native crash at pc 00076428 in many different apps in JRM80
Issue #6204173 Date/time picker isn't rendering all parts of UI
Issue #6203941 All Apps overscroll effect is rendered weirdly/has flickering
Issue #6200058 CAB rendering issue - not drawing items?
Issue #6198578 Front camera shows black screen after taking picture.

Change-Id: I045dc82ce1d85fedbae3bb88eb2a2dfb6891d41f
2012-03-22 08:33:09 -07:00
Romain Guy
b0317984d3 Plug memory leak.
Bug #6196903

Whenever a memory flush happens, the GL renderer discards some or all of its
font caches. Each font cache holds an array of vertex indices that was
initially designed to have the same life cycle as the process. This changed
when memory flushes were introduced but this array was never taken care of
in the destructor.

Change-Id: Ief124f609ea55b671c0a9b43637d9e013629ebaa
2012-03-21 11:52:52 -07:00
Chet Haase
bdd896c264 Enable DisplayList properties
This CL simply enables DisplayList property functionality. The code for
this feature is already there, but it's been disabled by default pending further
testing and analysis. This change sets these build-type flags to true
so that all hw-accelerated apps will now use DisplayList properties by default.

In particular, this feature enables a fast-path for changes that affect the
handful of View properties involved in animations (alpha, translationX, etc.).
Setting these properties now gets propagated to the native DisplayList associated
with the View, avoiding costly recreation of the SDK-level DisplayList and
also enabling faster invalidation of the view hierarchy.

Change-Id: Ic99c8f28fa9183f2e54e9e4860b333eb9c540f7c
2012-03-19 13:40:49 -07:00
Chet Haase
4bf8b20995 Merge "Optimizing DisplayList properties" 2012-03-16 09:21:14 -07:00
Chet Haase
9d1992deae Optimizing DisplayList properties
DisplayList properties are still disabled default (flags in View.java
and DisplayListRenderer.h). When they are enabled, and when a View has
a DisplayList, invalidations due to property changes are now optimized
to avoid causing DisplayList recreation. This eliminates the drawing step
of invalidation (due to changes in these properties), only requiring
issuing the previously-created DisplayList to the GL renderer. Invalidation
is slightly faster (less overhead as we walk up the hierarchy), getDisplayList()
is potentially much faster (going down to ~0ms), depending on the complexity
of the View being redrawn and the size of the invalidated hierarchy.

Change-Id: I57587d5b810c3595bdd72a6c52349c2a3d1bdf25
2012-03-16 09:14:52 -07:00
Romain Guy
acdd4b9c4b Set the default text length to -1, not 1
Change-Id: Iccf6f8366c0b659ba7c90df99ae05ebc5d81fcbb
2012-03-15 14:36:52 -07:00
Romain Guy
390f882f89 Correctly compute the number of bytes written by each op.
Bug #6157792

Previously, DisplayListRenderer would compute the number of bytes
written after a drawing op by looking at the difference between
the start pointer of the command stream and the end pointer of
the command stream. The SkWriter class used to record the commands
stream allocates blocks of storage which would cause a crash when
a command spanned two blocks.

Change-Id: I4d79d3feeb6d72d9d4e6ab05ecebd72d004be56c
2012-03-13 18:00:10 -07:00
Chet Haase
491189f6bb Fix garbage deref with DisplayList property structures
This is the real fix to issue 6158892. We currently delete
transform/camera structures at DisplayList destructor time, if these
structures are not NULL. We set the fields to NULL in an init() method
called (eventually) by the constructor. But it is possible for the object
to be destroyed before that init code is called, resulting in the deref
bug reported. The fi is to set these structures to NULL directly in the
constructor.

Issue 6158892i: Device runtime restarts frequently

Change-Id: Ibfa0f9314767eed6fd51f4ec7edc0d0edd5fdd0f
2012-03-13 11:42:34 -07:00
Romain Guy
3c9d9c18b4 Merge "Follow the include style used elsewhere in the library" 2012-03-13 11:19:26 -07:00
Romain Guy
d5a85fb63d Follow the include style used elsewhere in the library
Change-Id: I14aebdaeb04b6f4c611153ece4ac1f6ad9bfc15f
2012-03-13 11:18:20 -07:00
Chet Haase
866ed817d0 Fix garbage deref in DisplayList structures
Issue #6158892: Device runtime restarts frequently

Change-Id: I4e6afaaf9ac66d6846caf0ed82ea67163d8b15c2
2012-03-13 11:13:36 -07:00
Chet Haase
a1cff5043d Handle view properties at the native level
Basic functionality of handling View properties (transforms,
left/right/top/bottom, and alpha) at the native DisplayList level.
This logic is disabled for now (via compile-time flags in View.java and
DisplayListRenderer.h) as we continue work on it (there is no advantage
to the new approach until we optimize invalidation and rendering paths
to use the new code path).

Change-Id: I370c8d21fbd291be415f55515ab8dced6f6d51a3
2012-03-12 15:41:48 -07:00
Romain Guy
3fe4eb9c60 Turn down the number of glGetError() calls.
glGetError() was invoked every time a display list was updated. This
was unnecessary since display list updates do not execute OpenGL code.

Change-Id: Ia0a75a65ccf2a4701fb3a828848cd0c42f256c6c
2012-03-12 12:49:41 -07:00
Romain Guy
55fd2c9b2e Don't bind data to missing uniforms
Change-Id: Ib9d1f14eb0bef04e0910baa4eaf3e49cce81c0ce
2012-03-09 17:37:29 -08:00
Derek Sollenberger
6d159451bb Merge "Add missing includes for Mutex.h" 2012-03-06 05:27:31 -08:00