History log of /frameworks/base/core/java/android/view/HardwareRenderer.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
bd17bd34311ba5af4b6ac9ddc4b8c71888f2e6f1 24-Oct-2012 Romain Guy <romainguy@google.com> Ensure we have a GL context before deleting View layers
Bug #7391098

The existing code was doing a make current to guarantee we have a
current context. This can however fail when the surface is destroyed
which could lead to GL calls without an EGL context, and therefore
potential leaks. This change fixes the issue by using a technique
found in HardwareRenderer.destroyHardwareResources(). If the surface
is not available then we use a special 1x1 pbuffer as a way to get
a valid context.

Change-Id: I716d3799bf90120d793d76e90a83956837ecd491
/frameworks/base/core/java/android/view/HardwareRenderer.java
7c25aab491707f7324f9941b8cfa9bd2b4b97e76 19-Oct-2012 Romain Guy <romainguy@google.com> Defer layer rendering to avoid stalls
Bug #7326824

When a layer is taken out of the cache and initialized it gets cleared
to prepare it for future rendering. This triggers the following sequence
of operations:

glBindFramebuffer(layer.fbo)
attach texture storage to FBO
glClear()
glBindFramebuffer(defaultFbo)

The clear forces a resolve on tilers which stalls the CPU for a little
while, thus producing jank during animations. This change moves the
clear to the next frame when we know we will have to execute a resolve
anyway.

Change-Id: Ic1939c25df20ed65a4c48dc81ee549b2cd8b6ec3
/frameworks/base/core/java/android/view/HardwareRenderer.java
8efca54693b1fa956eede0367fffe8bb0d3531f0 16-Oct-2012 Romain Guy <romainguy@google.com> Ensure we always request conformant OpenGL ES 2.0 contexts

Change-Id: I6b9d6f2dace02ad28baef6811007302b8e552a54
/frameworks/base/core/java/android/view/HardwareRenderer.java
dfab363807b3b44be4032e410f016e0a0d018426 03-Oct-2012 Romain Guy <romainguy@google.com> Fix rendering artifacts on tiled renderers
Bug #7275145

This change fixes ViewRoot and adds extra debug information. It does
not solve the problem entirely. Another CL will.

Change-Id: I7e604ba38aad7f421769783dcbd998d6905ab2d9
/frameworks/base/core/java/android/view/HardwareRenderer.java
6a2d17f71342f981c9df1dc5beff33e30eb3ae2b 30-Sep-2012 Chet Haase <chet@google.com> Fix texture corruption

When memory gets low on a device, activities flush everything they can.
Hardware-accelerated activites, such as Launcher, flush GL resources and destroy
the GL context. However, some resources were still hanging around, due to deferred
destruction policies (we don't delete layers until the DisplayLists they are in
are finalized, to ensure we don't deref deleted objects). This meant that we were
referring to obsolete GL data in these objects. in particular, it meant that we might
come around later, after a new GL context was created, and delete a texture object
that was incorrect. We use the layer's "texture id" to refer to the texture underlying the
layer. But if there's a new GL context, then this texture ID is no longer valid, and
we may be deleting the texture that a different object (layer, icon, whatever) is referring
to, because the driver may return that same ID under the new GL context.

The fix is to more aggressively delete things that we know will not be used again
when the GL context is destroyed. In particular, we delete all resources being used
by all DisplayLists at GL context destruction time.

Issue #7195815 Textures corruption on all devices, in many apps

Change-Id: I52d2d208173690dbb794a83402d38f14ea4c6c22
/frameworks/base/core/java/android/view/HardwareRenderer.java
bd43152bda835c5a9a619a5869344a6a3af11917 26-Sep-2012 Romain Guy <romainguy@google.com> Always set the EGL_BUFFER_PRESERVED EGL_SWAP_BEHAVIOR
Bug #7221173

Change-Id: I231a47187792c93af9e3b9321fd1e25bc2f20117
/frameworks/base/core/java/android/view/HardwareRenderer.java
ed1b6f4fc0af836624b2edc2830eb918bf04cf3c 25-Sep-2012 Romain Guy <romainguy@google.com> Really Trigger the log when EGL_NO_CONTEXT is returned by eglCreateContext
Bug #7216919

Change-Id: Ie4a855ee51a0a4fad69bae8f377189d0c653f543
/frameworks/base/core/java/android/view/HardwareRenderer.java
c002936e4bd042db3024202b3e9696835a730cfa 25-Sep-2012 Romain Guy <romainguy@google.com> Trigger the log when EGL_NO_CONTEXT is returned by eglCreateContext
Bug #7216919

Change-Id: If2059227d55e8ddb2d2673ee36029c3c92dd9a3d
/frameworks/base/core/java/android/view/HardwareRenderer.java
4c7dc4aa5c6c155d7756ad40befc931fc0719976 25-Sep-2012 Romain Guy <romainguy@google.com> Add extra error check when eglCreateContext fails
Bug #7216919

Change-Id: I322cbe4579d7a4eb2a64d288175e145d0badc857
/frameworks/base/core/java/android/view/HardwareRenderer.java
7c450aaa3caac2a05fcb20a177483d0e92378426 22-Sep-2012 Romain Guy <romainguy@google.com> Add support for a new developer setting: overdraw debugging

Change-Id: I350ba4486577c3289f82c20938f7a35138778727
/frameworks/base/core/java/android/view/HardwareRenderer.java
11cb642756093a4af901b1525375b1eb2b5c3e2b 21-Sep-2012 Romain Guy <romainguy@google.com> Update layers in a single batch at the beginning of a frame
Bug #7186819

Change-Id: Ice5926dfedfb3be3a3064e65008dafa2852407da
/frameworks/base/core/java/android/view/HardwareRenderer.java
2b7028eabac80cec170572bc0e945a1d4224e595 20-Sep-2012 Romain Guy <romainguy@google.com> Add support for QCOM_tiled_rendering
Bug #7186819

This optional OpenGL extension can be used by tiled renderers to optimize
copies from main memory to tiles memory.

Change-Id: Id4a5d64e61ad17f50e773e8104b9bf584bb65077
/frameworks/base/core/java/android/view/HardwareRenderer.java
740ee65d460401c266a7108c9aa4c6e7fbe58489 18-Sep-2012 Romain Guy <romainguy@google.com> Add extra EGL error checking

Change-Id: I7cacef41ed08118c5eecf674e3d8461473692968
/frameworks/base/core/java/android/view/HardwareRenderer.java
4702a856973a553deb82f71b1d3b6c3db5dbf4ba 18-Aug-2012 Dianne Hackborn <hackbod@google.com> More view hierarchy, fragment debugging.

Add a View.toString() method.

Rename all of the View private flags to have a PFLAG prefix to
avoid going insane trying to figure out which constant goes with
which flag.

Activity.dump() now includes a summary of the activity's view
hierarchy, using the View.toString() method.

All exceptions thrown by FragmentManager now perform a dump of
the owning activity state, where appropriate.

Change-Id: I6482e397e10cb5a0612ab02ce6ed5131823437a6
/frameworks/base/core/java/android/view/HardwareRenderer.java
4ff0cf4b83605bff630c4e6f1fabe4f72a3f93a1 06-Aug-2012 Romain Guy <romainguy@google.com> Add new debug tool to track hardware layers updates

You can setprop debug.hwui.show_layers_updates true to flash
hw layers in green when they update. This is also a setting
in the Dev. section of the settings app.

Change-Id: Ibe1d63a4f81567dc1d590c9b088d2e7505df8abf
/frameworks/base/core/java/android/view/HardwareRenderer.java
786fc93d71b833ab6b02b0c7ea5e30f25cceeedf 25-Jul-2012 Romain Guy <romainguy@google.com> Make HardwareRenderer able to target generic Surface objects

Change-Id: I4b7199a1eb30e0df354ae12c4819adc69db5df40
/frameworks/base/core/java/android/view/HardwareRenderer.java
77e67cf9055378d00bb57f458129462f33047039 20-Jun-2012 Romain Guy <romainguy@google.com> Add extra systrace tracing

This change shows how much time is spent updating and executing
framework display lists within a frame.
This change also fixes a crash that happnes if you attempt to
perform a dumpsys gfxinfo while the app is drawing (we are telling
developers to use this new tool.)

Change-Id: Ia4047a78a42b545ab77176ef4f371c300686548c
/frameworks/base/core/java/android/view/HardwareRenderer.java
cb82b942c89bf69b6c03e2f4951f519c1be115dc 13-Jun-2012 Chris Craik <ccraik@google.com> Fix attachFunctor path to ignore delay

Don't defer functor invocation when calling attach functor directly.

bug:6653638

Change-Id: Ifffc027df16612f380f39b82b7d0a4411d53b4ea
/frameworks/base/core/java/android/view/HardwareRenderer.java
44b2fe3fc114ee5f7273c6b0fee2cc999bf244a2 07-Jun-2012 Chet Haase <chet@google.com> Track canvas clearing for swap buffers logic.

A previous fix made it necessary for a frame to render something to GL
in order to cause a call to eglSwapBuffers(). Besides the calls being
tracked as part of issuing a DisplayList, there is also a potential call
to clear the canvas (via glClear()) on non-opaque surfaces. This call is also
good to track, since a surface that gets cleared without any other drawing operations
is worth flipping to the screen (to erase old contents on that surface).

This fix tracks the status of the pre-draw operations to find out whether
glClear() was called and then sets the drawing status appropriately.

Issue #6606422 QuickContact dismissal is janky again (Tracking)

Change-Id: I5fcaccfdc9293dd46b83f2fc279730a5d2740ebf
/frameworks/base/core/java/android/view/HardwareRenderer.java
932b7f6765968bd526c03512f3805fbc3924dc29 06-Jun-2012 Chris Craik <ccraik@google.com> Revert "Add more temporary logging for investigating detachFunctor"

bug:6608646

This reverts commit 8857b2f76abad1e4ec742dfd85d0c997880be376

Change-Id: I1563b5974c52b84201ae448298f804eb0dcc235d
/frameworks/base/core/java/android/view/HardwareRenderer.java
8857b2f76abad1e4ec742dfd85d0c997880be376 05-Jun-2012 Chris Craik <ccraik@google.com> Add more temporary logging for investigating detachFunctor

bug:6596807
Change-Id: Ic9e34e323b12a887f2e8df0773a6155627b6a64f
/frameworks/base/core/java/android/view/HardwareRenderer.java
561ff8a74e3d9ea15f58d9b6534da9ea5a63d84b 01-Jun-2012 Chet Haase <chet@google.com> Merge "Skip eglSwapBuffers() call when we do not draw to GL" into jb-dev
486590963e2207d68eebd6944fec70d50d41116a 01-Jun-2012 Chet Haase <chet@google.com> Skip eglSwapBuffers() call when we do not draw to GL

The fix is to track when we issue GL drawing commands, and to skip the
call to eglSwapBuffers() when a DisplayList does not result in
any actual rendering calls to GL.

Issue #6364143 QuickMuni list items and buttons flicker instead of fade

Change-Id: I60a02c61a58c32d92481a1e814b4c8a49c6a37a3
/frameworks/base/core/java/android/view/HardwareRenderer.java
41ee465734d0006797a8fd36e88976c1e85d161c 01-Jun-2012 Chris Craik <ccraik@google.com> Force webview invalidates on unsuccessful functor attach

Functor attach should always be successful, but adding a fallback just in
case. Also invalidates the WebView on initial content arriving.

bug:6511995
Change-Id: Ibca16505afec9f693ea4a7cc4966cd6d7353725c
/frameworks/base/core/java/android/view/HardwareRenderer.java
13b907353f18215b52b5ceda24bbf520d91d72a1 21-May-2012 Romain Guy <romainguy@google.com> Remove unused, obsolete debug code

All these features have either been abandonned and left un-maintained
for years or can be replaced by systrace.

Change-Id: I42e4579a8078744047e5fe08a7a15254970b09bc
/frameworks/base/core/java/android/view/HardwareRenderer.java
a21f877434dd25a93869b8641e3c38618bf317a9 07-May-2012 Romain Guy <romainguy@google.com> Log more frame data when profiling GL apps

Change-Id: Ib7377c22a2258aa6510677d80df34bb7e73dc714
/frameworks/base/core/java/android/view/HardwareRenderer.java
4b8c4f886b3d57e6ffe1a4650487c67334674a40 28-Apr-2012 Romain Guy <romainguy@google.com> New constant used by dev settings

Change-Id: I42f103ae8a9b9f051367c72131f0b216e200f6e0
/frameworks/base/core/java/android/view/HardwareRenderer.java
ba6be8a62dcdb3ffd210cd36b9af4e3a658eac47 24-Apr-2012 Romain Guy <romainguy@google.com> 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
/frameworks/base/core/java/android/view/HardwareRenderer.java
19f86e831ee0629b24385b0bb51d27ff91961dd2 24-Apr-2012 Romain Guy <romainguy@google.com> Invoke onTrimMemory with an EGL context
Bug #6369600

Change-Id: I3ded47c3688ef2f2873495392c35e898357204da
/frameworks/base/core/java/android/view/HardwareRenderer.java
1271e2cc80b01d577e9db339459ef0222bb9320d 20-Apr-2012 Chet Haase <chet@google.com> 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
/frameworks/base/core/java/android/view/HardwareRenderer.java
1ac4765e959c79101f64b1279887ed469334c268 12-Apr-2012 Romain Guy <romainguy@google.com> Fix SurfaceTexture leak in TextureView
Bug #6318631

Change-Id: I282a7c9bb648365ba61c52a84ff510c8779130ef
/frameworks/base/core/java/android/view/HardwareRenderer.java
3da2dc9d4cc4785d2a0eacaf8d00222a46df150b 10-Apr-2012 Jesse Hall <jessehall@google.com> Merge "Release the scratch pbuffer surface after use"
3d4d2159bc84f03ea4be12af8c7de9500985bb82 06-Apr-2012 Chris Craik <ccraik@google.com> Merge "fix functor flag parsing, tweak process delay"
0872b370422eb1f9007b4717b8796543873e6390 02-Apr-2012 Jesse Hall <jessehall@google.com> Release the scratch pbuffer surface after use

Change-Id: Icf010969d19b20c3ddf64b44a78a115ac92f7ea5
/frameworks/base/core/java/android/view/HardwareRenderer.java
65924a3e56c2e7ac863f8e25e9f9a58b9db7d513 06-Apr-2012 Chris Craik <ccraik@google.com> fix functor flag parsing, tweak process delay

Change-Id: I0a679cc33f92ff6fd2e33db9ad58b52622def012
/frameworks/base/core/java/android/view/HardwareRenderer.java
2af3524beb75150d347accc925022daa53b4a789 05-Apr-2012 Jamie Gennis <jgennis@google.com> TextureView: add setSurfaceTexture method

This change adds support for transferring control of a TextureView's
SurfaceTexture between the UI framework and the application. It makes the
TextureView detach the SurfaceTexture from the UI framework's GLES context
before calling the surfaceTextureDestroyed callback, allowing the app to use
the SurfaceTexture in its own GLES context if it so chooses. This change also
adds the TextureView#setSurfaceTexture method, allowing an app have the
TextureView use a SurfaceTexture that already exists rather than creating a new
one.

Change-Id: Iac9cc917687e4239dd1c24eae553709aa37512da
/frameworks/base/core/java/android/view/HardwareRenderer.java
09280606dc5dc1b8f12f9317cf6922772b7d10a7 04-Apr-2012 Chet Haase <chet@google.com> Enhanced frame profiling from gfxinfo

You can now set the max number of frames being tracked by the gfxinfo
profiling data by doing 'adb shell setprop hwui.profil.maxframes #'.
Also, running gfxinfo automatically resets the data so that any set of
frame data always starts from the beginning.

Change-Id: I87ae3fb4d580741a1b2fba75be4ec540de7c52a4
/frameworks/base/core/java/android/view/HardwareRenderer.java
db8c9a6a4d9bf8c39f834b25611926caf21380f6 22-Mar-2012 Chet Haase <chet@google.com> 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
/frameworks/base/core/java/android/view/HardwareRenderer.java
8f3b8e32993d190a26c70c839a63d8ce4c3b16d9 28-Mar-2012 Romain Guy <romainguy@google.com> Allow fine-grained control over functors execution

Adds non-drawing execution mode

Change-Id: I82f92cf1b9a3b9ff2ca6d7427c4e02b73e04e6bf
/frameworks/base/core/java/android/view/HardwareRenderer.java
e6c966caa3aff3099e6fb00caefa10387f57b9c3 02-Apr-2012 Michael Jurka <mikejurka@google.com> Merge "Add frame counter to dumpGfxInfo"
7687882800f49e3fc3a14f1d7540412f77d6bd4d 30-Mar-2012 Romain Guy <romainguy@google.com> Detect surface resizes

HardwareRenderer normally relies on the window manager to be notified of
surface dimension changes. It is however possible to execute a drawing pass
before receiving the window manager notification. We must therefore compare
the actual size of the target surface to the window size and perform a full
redraw when they are not the same.

Change-Id: Idccc8592f3f777edee1ef67a98a4c2a825dcfba7
/frameworks/base/core/java/android/view/HardwareRenderer.java
a3fabff98590d26f0c362cb09dc378fece66215c 28-Mar-2012 Michael Jurka <mikejurka@google.com> Add frame counter to dumpGfxInfo

Change-Id: I016f706e32cbdbce014795d8fc537b15c389dc7a
/frameworks/base/core/java/android/view/HardwareRenderer.java
244ada1d35419b7be9de0fc833bb03955b725ffa 29-Mar-2012 Romain Guy <romainguy@google.com> Refactor GLES20Canvas/HardwareRenderer JNI layers

GLES20Canvas defined several JNI functions used only by HardwareRenderer.
Now that we have a JNI layer dedicated to HardwareRenderer we should
host the renderer related methods there.

Change-Id: I0bcb4ad0bcc1c4a37290df10c1685f2cfe5504ca
/frameworks/base/core/java/android/view/HardwareRenderer.java
6554943a1dd6854c0f4976900956e556767b49e1 27-Mar-2012 Romain Guy <romainguy@google.com> 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
/frameworks/base/core/java/android/view/HardwareRenderer.java
a998dff5d49a423aaf7097aa8f96bf5bdc681d25 24-Mar-2012 Romain Guy <romainguy@google.com> Destroy the hardware renderer when ViewRootImpl's die is post-poned
Bug #6109035

ViewRootImpl.die() can be invoked in such a way that doDie() will be
executed later. On memory limited device, an eglTerminate() may happen
before doDie() is executed which leads to unstable behaviors. This
change makes sure the renderer is destroyed as soon as possible.

Change-Id: I3322410cdd744b464951e2055aeade6069d1d673
/frameworks/base/core/java/android/view/HardwareRenderer.java
5d6999e1ca457948e06792ea6259ffa947c9fa81 23-Mar-2012 Romain Guy <romainguy@google.com> Don't make GLRenderer aware of GLES20Renderer

Change-Id: Ic9bab34070a3046b9252f6fd576b4d40553374fc
/frameworks/base/core/java/android/view/HardwareRenderer.java
e979e62ac7313b7cffe9b131bb8a99c356068b45 20-Mar-2012 Romain Guy <romainguy@google.com> Code cleanup

Change-Id: I390e92b4a778bd9dcde6535178c1a6b204b29fe4
/frameworks/base/core/java/android/view/HardwareRenderer.java
9d1992deaeb3d60d5928f05b649a2cc654ba98a3 13-Mar-2012 Chet Haase <chet@google.com> 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
/frameworks/base/core/java/android/view/HardwareRenderer.java
27ff913d56de8400083a13fc572e2812b32c890c 06-Mar-2012 Dianne Hackborn <hackbod@google.com> Work on more low memory reporting to apps.

There are now some new trim memory levels that are sent to
non-background applications as RAM becomes low.

There is a new API for an application to retrieve information
about memory trimming and such on demand.

Fixed various checks against the memory trim level to be
robust (not compare against exact values).

Change-Id: Ifd1c6151124350168aef20a94e517166fd2e03eb
/frameworks/base/core/java/android/view/HardwareRenderer.java
cfef12374c15b11b3c2a1041582be9728152e15d 23-Feb-2012 Romain Guy <romainguy@google.com> Perform early intersect to avoid unnecessary draws

Change-Id: I48d61c4488e622f93733d8e53a50c93e6a20166d
/frameworks/base/core/java/android/view/HardwareRenderer.java
b7ee8e2cb427820f7ac0e7e91b40705601516e9b 23-Feb-2012 Michael Jurka <mikejurka@google.com> am 6ad5d69d: am 0a232673: am bf378fd7: Don\'t allow screen invalidations to go outside bounds of screen

* commit '6ad5d69da5cff2e4b5fb7acdb2699e2315b83307':
Don't allow screen invalidations to go outside bounds of screen
bf378fd7d7a91085685fe9e5528b84c485041c77 23-Feb-2012 Michael Jurka <mikejurka@google.com> Don't allow screen invalidations to go outside bounds of screen

Fixes invalidation issue in Launcher

Change-Id: Iab32149489aed6884e917f0ac5a548d4ae26896e
/frameworks/base/core/java/android/view/HardwareRenderer.java
33f6beb10f98e8ba96250e284876d607055d278d 17-Feb-2012 Romain Guy <romainguy@google.com> Record possible clip rejects when recording display lists

This optimization allows us to quickly skip operations that lie
entirely outside of the known bounds of a display list. Because
of ViewGroup.setClipChildren, we must keep the operations recorded
in the display list. setClipChildren(false) is however a very
uncommon operation and we will therefore often benefit from this
new optimization.

Change-Id: I0942c864e55298e6dccd9977d15adefbce3ba3ad
/frameworks/base/core/java/android/view/HardwareRenderer.java
b04f7e9438e8f73081f9be3fda166098042263a5 15-Feb-2012 Romain Guy <romainguy@google.com> Make it easier to enable dirty regions debugging

adb shell setprop hwui.debug_dirty_regions true

Change-Id: Ifd269c443f5257b1e9c4ea987b134dcf6231106c
/frameworks/base/core/java/android/view/HardwareRenderer.java
a676ad7e34c9afbaafaeca8c3fe96e95c518828e 14-Feb-2012 Romain Guy <romainguy@google.com> New debugging tool in adb shell dumpsys gfxinfo

This tool lets you visualize the time it took, in ms, to:
- Build display lists ("Draw" phase)
- Process display lists ("Process" phase)
- Swap GL buffers ("Execute" phase)

To use this tool:
- adb shell setprop hwui.profile true
- adb shell dumpsys gfxinfo <process name>
- Copy the profile data and paste it in a spreadsheet
- Generate a graph (stacked graph) and enjoy

Change-Id: I7840c0ea0f153550425aa798e3ada2f357688cf5
/frameworks/base/core/java/android/view/HardwareRenderer.java
13631f3da855f200a151e7837ed9f6b079622b58 31-Jan-2012 Romain Guy <romainguy@google.com> Add debug markers to OpenGLRenderer

These markers will be used to group the GL commands by View in the
OpenGL ES debugging tool. This will help correlate individual GL
calls to higher level components like Views.

Change-Id: I73607ba2e7224a80ac32527968261ee008f049c6
/frameworks/base/core/java/android/view/HardwareRenderer.java
530041d3191ce817832a0108514617768e43cda6 26-Jan-2012 Romain Guy <romainguy@google.com> Add stencil buffer to the EGL config

Change-Id: If76c0cd6127534d90f9526b75c0f8e56259c6722
/frameworks/base/core/java/android/view/HardwareRenderer.java
b335fad4705348ff78d764fb4be53dcbe6b67abe 16-Jan-2012 Jamie Gennis <jgennis@google.com> hack up frame latency measurement

Change-Id: I6d9a466a23285304f0e229a5649815636ab5d6af
/frameworks/base/core/java/android/view/HardwareRenderer.java
893eace60992a640064b454d7ad477c1bbffcb1d 13-Jan-2012 Gilles Debunne <debunne@google.com> Merge "Sub display list in TextView"
44d79747b5e434e8f43928b5548442c65e40e5c3 13-Jan-2012 Romain Guy <romainguy@google.com> Remove unused parameter

Change-Id: I0896b2cdb9f1fa9c5e191e4ea425e22ac6f10f29
/frameworks/base/core/java/android/view/HardwareRenderer.java
b35ab7b72967adcfd01cec483a705dafe8b951d1 06-Dec-2011 Gilles Debunne <debunne@google.com> Sub display list in TextView

TextView uses a sub-display list to 'cache' the rendering of its
text. This saves time when drawing an editable text, where the blinking
cursor forces a re-draw twice per second, which creates pauses during
scrolling.

Added a sub-display list invalidation when an appearance span is
modified/added/removed.

Also added an invalidation of the display list when selection range
is changed.

Change-Id: I41e8068a12902b8a745c5bb77de8c77def76a270
/frameworks/base/core/java/android/view/HardwareRenderer.java
9477c6e6581ce97976250951f33e1297604ac777 09-Dec-2011 Romain Guy <romainguy@google.com> Enable dirty regions on newly created EGL surfaces

This change fixes an issue on some tiler architectures that do not
enable the swap buffer behavior by default on EGL surfaces.

Change-Id: Ibda1ae582da1a20afad3be9c3361080e72df5206
/frameworks/base/core/java/android/view/HardwareRenderer.java
95db2b20d7bc0aaf00b1d4418124f5cf0a755d74 01-Dec-2011 Jeff Brown <jeffbrown@google.com> Improve latency instrumentation.

Change-Id: I4edfa0a5659d207f7e46722e48ffa1dc43d2aa13
/frameworks/base/core/java/android/view/HardwareRenderer.java
08837c246c9c27902c59b41c8661c2f27a4aa2bc 28-Nov-2011 Chet Haase <chet@google.com> Fix flashing wifi dialog after rotating back from landscape.

There was an error in some of the OpenGL layer logic such that we would
occasionally set up a layer for rendering and then not clean up when it was
done. This caused future OpenGL rendering to go into that layer instead of
to the buffers being displayed on the screen, resulting in artifacts including
flashes and displaying of stale content. This happened specifically when
using the wifi settings dialog with the InputMethod keyboard displayed,
but it was probably visible in other situations as well.

Issue #5628248: Flickering/flashing after entering password for WiFi

Change-Id: I38139f620b310f4309570fa7224552d2ee633999
/frameworks/base/core/java/android/view/HardwareRenderer.java
31f2c2e94656530fbf6282803e62edb47e9a894d 21-Nov-2011 Romain Guy <romainguy@google.com> Notify views when EGL resources are about to be destroyed
Bug #5639899

Change-Id: I7c5d8bebf02294426f5b3ab1358a31c38a4fd064
/frameworks/base/core/java/android/view/HardwareRenderer.java
717a25dc2a411edb548859cd6870363346c71b01 16-Nov-2011 Dianne Hackborn <hackbod@google.com> Add new ManagedEGLContext class to help apps participate in memory trimming.

This class provides an API for an application to know when it is time to
destroy its EGL context when memory is being trimmed. By having this in
the framework, we can still detect whether it will be useful to destroy
any EGL contexts (because we know if doing so will destroy all of them).

Change-Id: I1eac8d640052778052926b875c7928008f752182
/frameworks/base/core/java/android/view/HardwareRenderer.java
50a66f0e9c5a85a6af4a99eb66656a69eba24572 11-Nov-2011 Romain Guy <romainguy@google.com> Merge "Terminate EGL when an app goes in the background" into ics-mr1
8ff6b9ebeeb24a6161ec6098e6bfdf8790ee5695 10-Nov-2011 Romain Guy <romainguy@google.com> 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
/frameworks/base/core/java/android/view/HardwareRenderer.java
a95826582773a194ed7fb66bc29c9b82fe9bb8d1 10-Nov-2011 Romain Guy <romainguy@google.com> Initialize egl_cache with an app writeable file

Change-Id: I5dda234feab0fedd6e4179a80715ae20dee1c833
/frameworks/base/core/java/android/view/HardwareRenderer.java
40e0383dce630ed9b2b1aa0e497709b89dfab6ef 06-Oct-2011 Chet Haase <chet@google.com> Fix issue #5384631: hw windows not resizing correctly

When the SystemUi becomes visible, the activity window resizes.
The hardware renderer was not begin resized to suit, so it was drawing
to a surface larger than that of the activity window, and some of the
rendering (like the action bar) appeared off the screen.

The fix is to keep track of the surface size in HardwareRenderer and to
recreate the surface when the size changes.

This change also removes the BUFFER_CHANGE flag from WindowManager.LayoutParams.
The only reason the flag existed was to trigger a hardware surface recreation,
but checking the old/new size is a more direct way of handling this.

Change-Id: I9d6bf6385794886d1d93c60609c170864cdcdfab
/frameworks/base/core/java/android/view/HardwareRenderer.java
5d927c2d8e832fcfcb0154c8741f896001141ef4 02-Sep-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5150899: Call activity takes 15MB we never get back.

Persistent process can no longer use hardware acclerated drawing
when running on a low-memory device.

Change-Id: I3110335617af1c98fcede9bf41f4a1d0c20d0e87
/frameworks/base/core/java/android/view/HardwareRenderer.java
16260e73f6c1c9dc94acf0d328a3c564426b8711 01-Sep-2011 Romain Guy <romainguy@google.com> Dispatch onDetachedFromWindow before destroying everything
Bug #5245686

Change-Id: I637178ee0bb47fbec9b59198b388bb8de22c1786
/frameworks/base/core/java/android/view/HardwareRenderer.java
eca9b1f53c2c291cbfb89b5f3cc45db7bdca6c7d 26-Aug-2011 Romain Guy <romainguy@google.com> Prevent crash in VPN settings
Bug #5217245

Change-Id: Ibacf4cbd40537cd417f1518b5ac4367a3f3d7d03
/frameworks/base/core/java/android/view/HardwareRenderer.java
407ec78b828173257b0c5dae221649a4ccd8b058 25-Aug-2011 Romain Guy <romainguy@google.com> Add OpenGL backend to ImageWallpaper
Bug #5204874

Currently disabled.

Change-Id: I5e7b35dce2981b0691f107e39c6394b260466543
/frameworks/base/core/java/android/view/HardwareRenderer.java
86e3e22ba81fb75a5c7e5e007ca1c0cacfda3afb 16-Aug-2011 Romain Guy <romainguy@google.com> Prevent NPE in HardwareRenderer
Bug #5169815

Change-Id: I168b61f3a6cea679e455cf28282b69bb7f3072e5
/frameworks/base/core/java/android/view/HardwareRenderer.java
50d133e290468fd149b5c03e46549afca2ee05f8 13-Aug-2011 Romain Guy <romainguy@google.com> <blink/> is not an acceptable default behavior.
Bug #5156334

Change-Id: I9f803b090e81f4e490d0cccd6347a0f9f64bd20f
/frameworks/base/core/java/android/view/HardwareRenderer.java
1d0c708961f824ac5171238c205a7bf328d5d8a5 04-Aug-2011 Romain Guy <romainguy@google.com> Destroy the EGL surface when the ViewRootImpl surface is invalid
Bug #5109839

Change-Id: Icebde9abf43b852397a73ffef519004993b46901
/frameworks/base/core/java/android/view/HardwareRenderer.java
d3facf341bf106588aade72c0164532cd4bf941f 03-Aug-2011 Romain Guy <romainguy@google.com> Don't recreate the EGL surface if the surface is not ready
Bug #5114545

Change-Id: I95149dc18e0582ca358716a6b0d89a4edc8fca26
/frameworks/base/core/java/android/view/HardwareRenderer.java
cf15efba0792b052dca5baa350d9fb00e6a60667 02-Aug-2011 Romain Guy <romainguy@google.com> Properly cancel pending buffers on window size change

Change-Id: Id6108ce61a971673f3ebc8270e9dd00849c91ae5
/frameworks/base/core/java/android/view/HardwareRenderer.java
357c942462e4eb1d0b2e91b3fe8ec9ac7524bbed 02-Aug-2011 Romain Guy <romainguy@google.com> Prevent crash with NPE in HardwareRenderer
Bug #5109839

Change-Id: I402fc70ff4b25d273cf3150759d6f2d4d971975d
/frameworks/base/core/java/android/view/HardwareRenderer.java
1a7b1158c5c2566808c39638d54cae624bd2a361 30-Jul-2011 Romain Guy <romainguy@android.com> Trim HardwareRenderer memory more frequently.

Change-Id: I92e72ce5da324f9ffcfdf7a54d8b368c2531799c
/frameworks/base/core/java/android/view/HardwareRenderer.java
c68c913d357e2955d4bd7ca52829071e531c7825 29-Jul-2011 Dianne Hackborn <hackbod@google.com> Various work on out of memory managment.

- Improve how we handle processes that have shown UI, to take care
of more cases where we want to push them into the background LRU
list.
- New trim memory level for when an application that has done UI
is no longer visible to the user.
- Add APIs to get new trim memory callback.
- Add a host of new bind flags to tweak how the system will adjust
the OOM level of the target process.

Change-Id: I23ba354112f411a9f8773a67426b4dff85fa2439
/frameworks/base/core/java/android/view/HardwareRenderer.java
65b345fa22b878e141b8fd8ece9c208df00fa40f 28-Jul-2011 Romain Guy <romainguy@google.com> Reclaim more memory, more often.

Yay.

Change-Id: I04557ad575c307a55088549f48f0e9ad994b7275
/frameworks/base/core/java/android/view/HardwareRenderer.java
6d7475d666baefaa3ba9f0dcee25238739454241 28-Jul-2011 Romain Guy <romainguy@google.com> Destroy layers and flush layers cache when a window is destroyed.

Change-Id: I3fa1bc3ff50fb99e3d2e490925bd6b0a0f809fff
/frameworks/base/core/java/android/view/HardwareRenderer.java
912a7b32d0c59ba38265c5dd6ff84ce93f909a7f 27-Jul-2011 Romain Guy <romainguy@google.com> Make sure we have a current EGL context when invoking EGL
Bug #5081795

Change-Id: Iee3382d362a71c1e6c5c498b319bf7f7bcf5a2f0
/frameworks/base/core/java/android/view/HardwareRenderer.java
29d23ecfd8612ecd4a7b2140acd344934b73a558 25-Jul-2011 Romain Guy <romainguy@google.com> Add debug flag to print out the EGL configuration used by libhwui

Change-Id: I8be5aebb60b7441342d430131168d11dc551ec34
/frameworks/base/core/java/android/view/HardwareRenderer.java
484c719c1c4a86d10d7be821782a808d0e12ea4e 25-Jul-2011 Romain Guy <romainguy@google.com> Add ELG config debugging to HardwareRenderer

Change-Id: I1954111e999ea95982c273eb50b9ea82397bc823
/frameworks/base/core/java/android/view/HardwareRenderer.java
162a0217563f4665da6eb183dfce0fef740f641f 22-Jul-2011 Jeff Brown <jeffbrown@google.com> Decouple GLES20RecordingCanvas lifetime from GLES20DisplayList.
Bug: 5062011

Previously, each GLES20DisplayList would hold onto an instance of
GLES20RecordingCanvas. In turn, each GLES20RecordingCanvas
held onto an SkWriter with a 16Kb buffer along with several other
objects. With one display list per view and hundreds of views,
the overhead could add up to a few megabytes.

Ensured that the GLES20RecordingCanvas is reset as soon as
the display list has been constructed, thereby promptly freeing
the 16Kb buffer.

Changed GLES20DisplayList so that it acquires a GLES20RecordingCanvas
from a pool as needed and recycles it when done.

Removed some dead code and cruft related to the construction of
GLES20Canvas objects in general. Some code was written with the
assumption that the underlying renderer object could change
behind the scenes or might be lazily constructed, but that isn't
actually the case so we can simplify things.

Removed an unnecessary weak reference from GLES20DisplayList
to the View. It isn't actually used anywhere.

Fixed a bug in GLES20DisplayList where isValid() would return
true while the display list was being recorded. This is incorrect
because the native display list might not actually exist. Worse,
even if the native display list does exist, it is stale and
potentially refers to old Bitmaps that have been GC'd (because the
mBitmaps list was cleared when recording started).

Change-Id: Ib12d5483688cb253478edeb0156d34c476c2566b
/frameworks/base/core/java/android/view/HardwareRenderer.java
566b3efb25299d2a9c8ae827522802bad965426a 19-Jul-2011 Romain Guy <romainguy@google.com> Let HardwareRenderer support multiple threads.

This change will be useful to create multiples instances of
HardwareRenderer outside of ViewRootImpl. This will allow
the use of hardware accelerated canvas on TextureView or
for live wallpapers.

Change-Id: I877e43a31ba83d98a1a30556813c7e8a8a920eb5
/frameworks/base/core/java/android/view/HardwareRenderer.java
bdf7609867a3f886455c51dba91623a86cceb6e2 19-Jul-2011 Romain Guy <romainguy@google.com> Trim OpenGLRenderer's memory usage whenever possible

Change-Id: I9225077184f374b1a43300add15cc1d5b6869d1c
/frameworks/base/core/java/android/view/HardwareRenderer.java
08645eb0f4a8d73b2b2f26d3232f45cf459a27bc 13-Jul-2011 Romain Guy <romainguy@google.com> Revert "Don't preload HardwareRenderer, its static initialization is process dependant."

This reverts commit 821e24336b3ab1f902fc3ee8da423226f50b540c.
/frameworks/base/core/java/android/view/HardwareRenderer.java
821e24336b3ab1f902fc3ee8da423226f50b540c 13-Jul-2011 Romain Guy <romainguy@google.com> Don't preload HardwareRenderer, its static initialization is process dependant.

Change-Id: I229357aaaa10b19209983c122f98dd3c07e01d7f
/frameworks/base/core/java/android/view/HardwareRenderer.java
039857520b1a03a52051b966d87d587225bdfcc3 12-Jul-2011 Romain Guy <romainguy@google.com> Always make GL calls with a valid EGL context.
Bug #5010760

Change-Id: If7500ef69683948e727df1406f458f18b11259d1
/frameworks/base/core/java/android/view/HardwareRenderer.java
7e1160e8664a9c5c79367f4ba3c2266a39bbcef5 09-Jul-2011 Romain Guy <romainguy@google.com> Always redraw the UI on orientation change
Bug #4994715

In some cases, on some architectures, the hardware renderer could fail
to properly render a window after an orientation change. The fix is
to force the GL driver to drop any existing buffer to make sure the
next buffer used to draw has the correct geometry.

This change also fixes an issue that was preventing partial screen
updates from being properly enabled.

Change-Id: I874a48590845a8624425130af7db8e20022895dd
/frameworks/base/core/java/android/view/HardwareRenderer.java
9ace8f5e79e76893fe4ca9e4d10f6c4056330485 08-Jul-2011 Romain Guy <romainguy@google.com> Use NEAREST filtering for layers whenever possible.

Change-Id: Id5bee1bd4a322cf93e8000b08e18f1e1b058648e
/frameworks/base/core/java/android/view/HardwareRenderer.java
02ccac69fd1c0a03c24c5f3ace0ad4bed337b1fd 24-Jun-2011 Romain Guy <romainguy@google.com> Code cleanup

Change-Id: I64c346004e0adf9a776d0315534d4fe445f0c0ca
/frameworks/base/core/java/android/view/HardwareRenderer.java
a9489274d67b540804aafb587a226f7c2ae4464d 23-Jun-2011 Romain Guy <romainguy@google.com> Add the ability to specify the opacity of a TextureView

TextureView assumes its content is opaque by default.

Change-Id: Iba873423566a5b67c388081838bd910dceba32ba
/frameworks/base/core/java/android/view/HardwareRenderer.java
e5e0c50f7dfaccc220725c5595080e921ffda1e4 16-Jun-2011 Romain Guy <romainguy@android.com> Properly refcount SurfaceTexture in the JNI layer.

Change-Id: I4b4c8020c13b8d6ce0d302fe42410033bf5785a6
/frameworks/base/core/java/android/view/HardwareRenderer.java
77a811610f99e21da7f88dafef60d09f345d0506 15-Jun-2011 Romain Guy <romainguy@google.com> Add TextureView.getBitmap()

This API can be used to get a Bitmap copy of the content of a
TextureView.

Change-Id: I07522216c353720fba5cab333174f58f484eb911
/frameworks/base/core/java/android/view/HardwareRenderer.java
6f7d9394ec69e9fb38ca5fc2caf6d2aef6f7442d 02-Jun-2011 Romain Guy <romainguy@google.com> Take advantage of EGL_BUFFER_PRESERVED on IMG.

The IMG architecture does not support the EGL_SWAP_BEHAVIOR_PRESERVED_BIT
in EGL configurations. This bit is used only to be able to change the
EGL_SWAP_BEHAVIOR, which matters when the default behavior is not the
one we want. However on IMG, the default swap behavior is the one we
desire.

Change-Id: Iff5980c97df9e41bc837e424baf83b8eadbb7161
/frameworks/base/core/java/android/view/HardwareRenderer.java
7d70fbf0b5672bada8b25f065bc292796c3d4812 25-May-2011 Romain Guy <romainguy@google.com> Use OpenGL to render transition bitmaps.

When the IME is opened/dismissed, ViewAncestor would draw the
view hierarchy into a Bitmap, using the software rendering
pipeline. With this change, ViewAncestor will now use OpenGL.

Change-Id: I69e24570e12ff55f6f3cec18a664b33410a0eaf4
/frameworks/base/core/java/android/view/HardwareRenderer.java
c6cc0f8c19d9eccf408a443fa2bf668af261dcd0 12-Apr-2011 Joe Onorato <joeo@google.com> Rename ViewRoot to ViewAncestor.

ViewRoot is about to be a new public class for poking at ViewAncestor.

Change-Id: Ie95d707c6d8bbb48f78d093d7b2667851812a7d5
/frameworks/base/core/java/android/view/HardwareRenderer.java
df0a7fbdcff3c683641b7980da50a7d0eebe0876 03-May-2011 Romain Guy <romainguy@google.com> Merge "Allows to render with an OpenGL context inside a TextureView."
8f0095cd33558e9cc8a440047908e53b68906f5f 03-May-2011 Romain Guy <romainguy@google.com> Allows to render with an OpenGL context inside a TextureView.

Change-Id: I59453f7fc3997f0502a1c5d325d37fed376fabc7
/frameworks/base/core/java/android/view/HardwareRenderer.java
e91a9c7ab075c43e983fdeb9af80447caa501337 02-May-2011 Romain Guy <romainguy@google.com> Remove unnecessary code.

Change-Id: I0352bf861192df51fe78873d439e8d7ff887118e
/frameworks/base/core/java/android/view/HardwareRenderer.java
aa6c24c21c727a196451332448d4e3b11a80be69 29-Apr-2011 Romain Guy <romainguy@google.com> New widget: TextureView
Bug #4343984

TextureView can be used to render media content (video, OpenGL,
RenderScript) inside a View.

The key difference with SurfaceView is that TextureView does
not create a new Surface. This gives the ability to seamlessly
transform, animate, fade, etc. a TextureView, which was hard
if not impossible to do with a SurfaceView.
A TextureView also interacts perfectly with ScrollView,
ListView, etc. It allows application to embed media content
in a much more flexible way than before.

For instance, to render the camera preview at 50% opacity,
all you need to do is the following:

mTextureView.setAlpha(0.5f);
Camera c = Camera.open();
c.setPreviewTexture(mTextureView.getSurfaceTexture());
c.startPreview();

TextureView uses a SurfaceTexture to get the job done. More
APIs are required to make it easy to create OpenGL contexts
for a TextureView. It can currently be done with a bit of
JNI code.

Change-Id: Iaa7953097ab5beb8437bcbbfa03b2df5b7f80cd7
/frameworks/base/core/java/android/view/HardwareRenderer.java
4e91a180be46c0c7c3bf398d4df4cbe2404216b5 07-Apr-2011 Jeff Brown <jeffbrown@google.com> Coalesce input events that arrive faster than 333Hz.

Some drivers report individual finger updates one at a time
instead of all at once. When 10 fingers are down, this can
cause the framework to have to handle 10 times as many events
each with 10 times as much data. Applications like
PointerLocation would get significantly bogged down by all
of the redundant samples.

This change coalesces samples that are closely spaced in time,
before they are dispatched, as part of the motion event batching
protocol.

Increased the size of the InputChannel shared memory buffer so
that applications can catch up faster if they accumulate a
backlog of samples.

Added logging code to help measure input dispatch and drawing
latency issues in the view hierarchy. See ViewDebug.DEBUG_LATENCY.

Change-Id: Ia5898f781f19901d2225c529a910c32bdf4f504f
/frameworks/base/core/java/android/view/HardwareRenderer.java
aaceeb0c5be11121a81e44b9633c06fc5c0fcd4d 24-Mar-2011 Romain Guy <romainguy@google.com> Use the correct API to query system properties.

Change-Id: Ie120dee0e24959d4db3fdb0100b6d8fe7fe46cdb
/frameworks/base/core/java/android/view/HardwareRenderer.java
7b5b6abf852c039983eded25ebe43a70fef5a4ab 15-Mar-2011 Romain Guy <romainguy@google.com> Fix rendering artifact in edge fades.
Bug #4092053

The problem always existed but was made visible by partial invalidation.
When saving a layer, the renderer would try to postpone glClear()
operations until the next drawing command. This however does not work
since the clip might have changed. The fix is rather simple and
simply gets rid of this "optimization" (that turned out to be
usless anyway given how View issues saveLayer() calls.)

This change also fixes an issue with gradients (color stops where
not properly computed when using a null stops array) and optimizes
display lists rendering (quickly rejects larger portions of the
tree to avoid executing unnecessary code.)

Change-Id: I0f5b5f6e1220d41a09cc2fa84c212b0b4afd9c46
/frameworks/base/core/java/android/view/HardwareRenderer.java
e294d41593f13edc5598cf62f8a89e573b3eb653 09-Mar-2011 Romain Guy <romainguy@google.com> Prevents NPE when a View was detached
Bug #4068284

Change-Id: Ied1c9b8d32a3e9957c6b165642ba40bbdaf35d53
/frameworks/base/core/java/android/view/HardwareRenderer.java
cabfcc1364eb7e4de0b15b3574fba45027b45cfc 08-Mar-2011 Romain Guy <romainguy@google.com> Add support for partial invalidates in WebView
Bug #3461349

This change also fixes two bugs that prevented partial invalidates
from working with other views. Both bugs were in our EGL implementation:
they were preventing the caller from comparing the current context/surface
with another context/surface. This was causing HardwareRenderer to always
redraw the entire screen.

Change-Id: I33e096b304d4a0b7e6c8f92930f71d2ece9bebf5
/frameworks/base/core/java/android/view/HardwareRenderer.java
648251710162cdaf7371012a1cbb79b9bc5bc0e4 03-Mar-2011 Dianne Hackborn <hackbod@google.com> Fix issue #3485923: Gmail crash

Allow application to try to recover if a surface OOM error
happens on the client side.

Change-Id: I0308bd99647a35e4bcac448340b7fc6330a828f6
/frameworks/base/core/java/android/view/HardwareRenderer.java
069ea0e31a0aa283c83fae79f31a1798a6d85dde 08-Feb-2011 Romain Guy <romainguy@google.com> Better handling of EGL_SWAP_BEHAVIOR_PRESERVED_BIT
Bug #3410832
Bug #3410834

Change-Id: I6025d6b7200e4d23e43f783e9401df13a13e7b63
/frameworks/base/core/java/android/view/HardwareRenderer.java
62687ec12cb8e0b1d4044a235b1387b9a8c3b4b4 03-Feb-2011 Romain Guy <romainguy@google.com> Don't clobber the local dirty rect after rendering a layer.
Bug #3417254
Bug #3413433

Change-Id: I8045e9ec414ebe4ce4d38124142a00726d2c634d
/frameworks/base/core/java/android/view/HardwareRenderer.java
d88f54c5c4ce59585b8b9e6009836f14c00be743 25-Jan-2011 Romain Guy <romainguy@google.com> Fix rendering issues in Movie Studio.

Change-Id: I5b293767b9bdedeef0df4d27a179d0da48d7fe32
/frameworks/base/core/java/android/view/HardwareRenderer.java
7d7b5490a0b0763e831b31bc11f17d8159b5914a 25-Jan-2011 Romain Guy <romainguy@google.com> Enable partial invalidates when rendering with OpenGL.

Change-Id: Ie8be06c4776b815e8737753eb8003b4fd8936130
/frameworks/base/core/java/android/view/HardwareRenderer.java
daf98e941e140e8739458126640183b9f296a2ab 10-Jan-2011 Chet Haase <chet@google.com> Use optimized display lists for all hwaccelerated rendering

Previously, display lists were used only if hardware acceleration
was enabled for an application (hardwareAccelerated=true) *and* if
setDrawingCacheEnabled(true) was called. This change makes the framework
use display lists for all views in an application if hardware acceleration
is enabled.

In addition, display list renderering has been optimized so that
any view's recreation of its own display list (which is necessary whenever
the visuals of that view change) will not cause any other display list
in its parent hierarchy to change. Instead, when there are any visual
changes in the hierarchy, only those views which need to have new
display list content will recreate their display lists.

This optimization works by caching display list references in each
parent display list (so the container of some child will refer to its
child's display list by a reference to the child's display list). Then when
a view needs to recreate its display list, it will do so inside the same
display list object. This will cause the content to get refreshed, but not
the reference to that content. Then when the view hierarchy is redrawn,
it will automatically pick up the new content from the old reference.

This optimization will not necessarily improve performance when applications
need to update the entire view hierarchy or redraw the entire screen, but it does
show significant improvements when redrawing only a portion of the screen,
especially when the regions that are not refreshed are complex and time-
consuming to redraw.

Change-Id: I68d21cac6a224a05703070ec85253220cb001eb4
/frameworks/base/core/java/android/view/HardwareRenderer.java
2a83f001fdb189f945e82e81e717ba204824b112 19-Jan-2011 Romain Guy <romainguy@google.com> Recreate the EGL surface when ViewRoot's surface changes.
Bug #3306150

Change-Id: Ifbf0ab9deca7a34eff7d844ea7276d12d7284788
/frameworks/base/core/java/android/view/HardwareRenderer.java
4f6aff386045000c2c03b903c7109cb42092b7ea 13-Jan-2011 Romain Guy <romainguy@google.com> Only enable GL rendering on the main thread.

Change-Id: I41950f4c0a5063ee5d6950cf137eb60a1c7a72fe
/frameworks/base/core/java/android/view/HardwareRenderer.java
6c319ca1275c8db892c39b48fc54864c949f9171 11-Jan-2011 Romain Guy <romainguy@google.com> Better backend for hardware layers.

With this new backend, a hardware layer is only recreated when
its associated view is udpated. This offers fast composition
in GL and fast update of the layer in GL as well.

Change-Id: I97c43a612f5955c6bf1c192c8ca4af10fdf1d076
/frameworks/base/core/java/android/view/HardwareRenderer.java
b8c0de2c2726f4e8f0029710047efe0c8e6661ed 13-Dec-2010 Romain Guy <romainguy@google.com> Improve error detection in HardwareRenderer.draw().
Bug #3280872

This should avoid crashes before we detect a GL error and we switch over to
software rendering.

Change-Id: Ieb4992576d20014e194aab863a456f09c5e19672
/frameworks/base/core/java/android/view/HardwareRenderer.java
9745fae73b584f3e9a9c304098ed9b11f506e93b 08-Dec-2010 Romain Guy <romainguy@google.com> Fallback to software rendering when eglMakeCurrent fails.
Bug #3200621

Change-Id: Id8a455e64a1af23840752124b49c070c00e5e2a6
/frameworks/base/core/java/android/view/HardwareRenderer.java
67f27952c1bcb2230beef9b5ca0bf42edad436a9 08-Dec-2010 Romain Guy <romainguy@google.com> Correctly release the OpenGL Canvas on EGL error.

Change-Id: Ib31fd8445f7ce5f7aa7e0205de0e7db80d024fc2
/frameworks/base/core/java/android/view/HardwareRenderer.java
0f761d6b8f5d5a607c87dbcdca6fe0ec7911970e 01-Dec-2010 Dianne Hackborn <hackbod@google.com> Implement issue #3201795: Improve transition when keyboard comes up

ViewRoot now does a fade animation between a snapshot of the previous
layout to the new one when its content rect changes.

Also tweaked some things in the window manager to fix problems in
deciding when to animate the movement of a window and when not to.

Change-Id: I9b4b3bd53c8258bd39a2f2fc315e77cfc56a409c
/frameworks/base/core/java/android/view/HardwareRenderer.java
5c13d89c1332fcc499379b9064b891187b75ca32 08-Oct-2010 Chet Haase <chet@google.com> Optimizing display lists by referencing pointers to resources instead of copying them

Change-Id: I81ad3551d74aa1e5bb64d69e33d2eb29a6c1eb6a
/frameworks/base/core/java/android/view/HardwareRenderer.java
d10cd5765a2b706fc174f16b951d6b0a5d3740d3 10-Oct-2010 Romain Guy <romainguy@google.com> Always create OpenGL accelerated windows in RGBA 8888.

Bug #3081600

The OpenGL renderer in libhwui uses a single EGL context per process and
thus create it with an RGBA 8888 EGL configuration. To ensure that all
windows are compatible with this configuration, this change modifies
the window manager and SurfaceFlinger.

The window manager now checks the window's flags and if the window is
hardware accelerated, it forces the window's pixel format to be
translucent when creating the surface. The window itself is still
marked as opaque if we know that the window will be opaque on screen.
This keeps existing optimizations in place.

Similarly in SurfaceFlinger, a translucent Surface can now be created
with the Surface.OPAQUE flag, indicating SurfaceFlinger that the surface
does not require blending, despite its RGBA 8888 configuration.

Change-Id: Ic747b6b12564ba064412d842117880fcc199eb7c
/frameworks/base/core/java/android/view/HardwareRenderer.java
53ca03d9a3a6a95286302802173c4820b16328ce 09-Oct-2010 Romain Guy <romainguy@google.com> Don't set hwAccelerated=true when libhwui is not present.

Change-Id: I6df5a89e4b4d94d76e96b5d0a678b7a8f646268a
/frameworks/base/core/java/android/view/HardwareRenderer.java
5d3e2ea6f3a02b5bd073887eabfa4f50a59bbcf0 08-Oct-2010 Mike Dodd <mdodd@google.com> HardwareRenderer: When throwing an exception because of an EGL
error, include the specific error.

Change-Id: I8e4b0cdbc207824df4f4bb55c3b379b0ee4aeec2
/frameworks/base/core/java/android/view/HardwareRenderer.java
6b7bd24659fb175fe1f0e97c86c18969918b496a 07-Oct-2010 Romain Guy <romainguy@google.com> Don't clear the framebuffer when not needed.
/frameworks/base/core/java/android/view/HardwareRenderer.java
b051e895ccb696604349c6c5efe7c4747e1d1ab6 29-Sep-2010 Romain Guy <romainguy@google.com> Add display lists caching.

Change-Id: Iac3a248a81ed8cb076a83ef9d186b8ebba685b4c
/frameworks/base/core/java/android/view/HardwareRenderer.java
9a40babc62416259d18783ce8c03c00042ec317b 24-Sep-2010 Romain Guy <romainguy@google.com> Add drawing profiling to the HardwareRenderer.

Change-Id: Idf410f1764f3e73590b587d0d76a8d10c021f056
/frameworks/base/core/java/android/view/HardwareRenderer.java
b025b9c8b4efefadb01937db61a1f8ee7d2452bf 16-Sep-2010 Romain Guy <romainguy@google.com> Better error handling in the OpenGL renderer.

Add a glGetError() check on every frame
Don't attempt to create textures larger than the maximum size allowed

Change-Id: Iee4afae16089406dbe8bf10fc93b674f1271a0ca
/frameworks/base/core/java/android/view/HardwareRenderer.java
5233920a216302b4aa03b100c32e8b3efe33cbc6 04-Sep-2010 Romain Guy <romainguy@google.com> Prevent the system process from using the HardwareRenderer.

This change allows applications with the system UID to use the hardware
renderer.

Change-Id: I3c5d776ee9c07bb14933dbe3060cad4175e4fc95
/frameworks/base/core/java/android/view/HardwareRenderer.java
4caa4ed120a86e855d4d3b6b455c6fb9ca22e365 25-Aug-2010 Romain Guy <romainguy@google.com> Only destroy the GL Canvas when necessary.

Change-Id: I6caf4873b02dc4a6d7c8c91925d2447b3b0e0593
/frameworks/base/core/java/android/view/HardwareRenderer.java
fb8b763f762ae21923c58d64caa729b012f40e05 24-Aug-2010 Romain Guy <romainguy@google.com> Use only one GL context per process, share chaches.

Change-Id: Ieabaa25338d2f4b8d4fd90e7401ad6e7452eae11
/frameworks/base/core/java/android/view/HardwareRenderer.java
8fb954263dd2f918ad339045cc6d82e346515599 18-Aug-2010 Romain Guy <romainguy@google.com> Fix save()/restore() issues in the OpenGL renderer.

The save stack now behaves exactly like in Skia.

Change-Id: If7e642f41f2c8f693f6e8c26cba81507d466562e
/frameworks/base/core/java/android/view/HardwareRenderer.java
959c91f7f7b4f921d341264f5b4ef54e702a0df0 12-Aug-2010 Romain Guy <romainguy@google.com> Bunch of fixes.

Fixes memory leak, fixes multiple context support, fix 3d transforms.

Change-Id: I7462cfbc57857dbd4de4e76b9d4cba58a1bce77b
/frameworks/base/core/java/android/view/HardwareRenderer.java
61c8c9c5b2006d18e9310b6521c65b36ffe75ce4 10-Aug-2010 Romain Guy <romainguy@google.com> Fix tons of bugs and add new text rendering support.

Change-Id: I326c66b10784006f6df2f12d38e120cef94cd0d7
/frameworks/base/core/java/android/view/HardwareRenderer.java
163935113919a184122b8b3bd672ef08c8df65dc 08-Aug-2010 Romain Guy <romainguy@android.com> Make libhwui entirely optional.

The makefile variable USE_OPENGL_RENDERER must be set to true to compile
libhwui and the related code in the JNI layer.

This change also removes obsolete APIs from Canvas that must not be used
and would be confusing if left in. These APIs were remnants of our first
attempt at an OpenGL renderer for the view hierarchy and had not been
taken out before Android 1.0 was released.

Change-Id: I2475ff1307212bab26c926724f3c508681c7dae1
/frameworks/base/core/java/android/view/HardwareRenderer.java
dbd77cd444f89d94ec5333223c1bc17dbe0c90cd 09-Jul-2010 Romain Guy <romainguy@google.com> Remove support for density compatibility in the hardware renderer.

Change-Id: I535e919986e5ccfb344ede8516ccd84c02642823
/frameworks/base/core/java/android/view/HardwareRenderer.java
f86ef57f8bcd8ba43ce222ec6a8b4f67d3600640 01-Jul-2010 Romain Guy <romainguy@google.com> Don't use full screen FBOs, this dramatically increase performance.

The next step will be to add an FBO cache to avoid churning memory on every
frame we draw. This change also adds support for drawBitmap(Bitmap, Matrix, Paint).

Change-Id: I7825cdcf0cad9bffe6219e05d8328a53d4a6e583
/frameworks/base/core/java/android/view/HardwareRenderer.java
ce0537b80087a6225273040a987414b1dd081aa0 30-Jun-2010 Romain Guy <romainguy@google.com> Add hooks for drawBitmap().

Change-Id: I58e962c3a8b2bc75c2605fe369ad3002579d86e0

Add texture cache.

Change-Id: I1c0e5581d228869e114438258a1014e33e024ad7
/frameworks/base/core/java/android/view/HardwareRenderer.java
e4d011201cea40d46cb2b2eef401db8fddc5c9c6 17-Jun-2010 Romain Guy <romainguy@google.com> Add libhwui, to hardware accelerate the Canvas API using OpenGL ES 2.0.

This is the initial checkin to setup the library and turn on OEGL ES 2.0
in ViewRoot, not a functional renderer.

Change-Id: I6655c54166e2967da2e21e7d6dcfba78bf113b44
/frameworks/base/core/java/android/view/HardwareRenderer.java
e3924992733234fd7d7a614c165a94e0a2cd6b84 11-Jun-2010 Romain Guy <romainguy@google.com> Refactor HardwareRenderer to allow the use of OpenGL ES 2.0.

The current OpenGL ES 2.0 HardwareRenderer will fail and does not
even attempt to create a Canvas. The next step will be to create
a new native-backed Canvas that relies on OpenGL ES 2.0 and bypasses
the current OpenGL ES 1.0 implementation done in Skia.

Change-Id: I7a8e9f87f316e9137ef191bb5609213e160eaa4c
/frameworks/base/core/java/android/view/HardwareRenderer.java
2d6145993e19d2bb664766dbaf3c1e9ad3d12cdc 10-Jun-2010 Romain Guy <romainguy@google.com> Move OpenGL support out of ViewRoot into a new HardwareRenderer class.

Change-Id: Iffaed924a5defc3c4df26223c390dc27eee115b1
/frameworks/base/core/java/android/view/HardwareRenderer.java