History log of /frameworks/base/libs/hwui/DisplayList.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cd1c3eba69d044b551cededad75474038f919890 14-Apr-2016 John Reck <jreck@google.com> Add a callback for when a gl functor is released

Bug: 27709981

Change-Id: Id5be3e8f88d6d84a9c59c7ed23e7e8862feefbe8
d645640180c25c2711e99aa82ec629155f8e91ba 11-Apr-2016 Chris Craik <ccraik@google.com> Apply clip at reorder barriers to shadows

Fixes: 28004930

Change-Id: I208b78430c770a3135afd68c53cf8ff3fba50c52
1d8e194661085f9a18ab1b3cd12f9e19d3a86be5 03-Mar-2016 Doris Liu <tianliu@google.com> Make AVD thread safe

This CL introduces staging properties to VectorDrawable, which holds
properties coming from UI thread. When staging properties are changed,
they are marked dirty, and the staging properties then get pushed to
RenderThread at sync point. In cases where no staging property has
been changed, at sync point we sync the render thread properties back
to staging properties to reflect the latest render thread animation
value change.

Also, update Vector Drawable bitmap only when it's dirty

Bug: 27343970
Bug: 27385912
Bug: 27263667
Bug: 27927674
Bug: 27774383

Change-Id: Ia864f5400a53a08dbfb284fae581fb1aac4fff87
8d1f2120fe80b23ab03c7168e3b6b2d13bafe2e7 25-Nov-2015 Chris Craik <ccraik@google.com> Support projection in OpReorderer


Change-Id: Iceb71732dc50957cfb47fa1ba9b8e18e6fc51132
0b7e8245db728d127ada698be63d78b33fc6e4da 29-Oct-2015 Chris Craik <ccraik@google.com> Initial HW layer support in new reorderer/renderer

Shares vast majority of clipped savelayer code, with only minor
differences in lifecycle.

Doesn't yet handle fill region, resize, or window transform.

Change-Id: Iabdd71811590d2b937eb11e1b01ce556ade54a5a
b36af87f8275f4b982906f88193ec27600f2746a 16-Oct-2015 Chris Craik <ccraik@google.com> Use LinearStdAllocator in DisplayList


This removes most of the remaining calls to malloc when
recording DisplayLists.

Change-Id: If928bd53dac0f145aadc436a62759086b67da0ed
003cc3dec8e2a92e51086fbcd5ee1bb236efa701 16-Oct-2015 Chris Craik <ccraik@google.com> Rename DisplayListData to DisplayList

Change-Id: I25f6bb88ffdf9baf7e8e4e2a294aa8c9d2a4605b
10ed692118552a01ff97b095295852b631e51bee 15-Oct-2015 Chris Craik <ccraik@google.com> Use typedefs to differentiate between flavors of DisplayLists

Change-Id: Id3b0a5aa045f2343fb046ca0889b375a7d00e03f
b565df13a9e5c7b1d7d93bdfa4a793752d66d3cc 05-Oct-2015 Chris Craik <ccraik@google.com> Initial commit of new Canvas operation recording / replay

- drawRect, drawBitmap, drawColor, drawPaint, drawRenderNode, drawRegion
- Recording with new DisplayList format
- batching & reordering
- Stateless op reorder
- Stateless op rendering
- Frame lifecycle (clear, geterror, cleanup)

Not done:
- SaveLayer (clipped and unclipped)
- HW layers
- Complex clipping
- Ripple projection
- Z reordering
- Z shadows
- onDefer prefetching (text + task kickoff)
- round rect clip
- linear allocation for std collections
- AssetAtlas support

Change-Id: Iaf98c1a3aeab5fa47cc8f9c6d964420abc0e7691
272a685f17cc4828257e521a6f62b7b17870f75e 30-Jul-2015 John Reck <jreck@google.com> Replace most usages of utils/Vector.h

Change-Id: I540d1b3523244d6c71fc52d6fb30555271c25644
5a4690bf26932c0d6940e4af8516d920e09ae81a 14-Jul-2015 Chris Craik <ccraik@google.com> Clean up unncessary defines

LOG_TAG and TRACE_TAG are already defined in the makefile

Change-Id: I9e53e3dacbe018441edd74cb7c8c90846defee74
db663fe83f976107fd8fd9307d871b37d9e47370 20-Apr-2015 Chris Craik <ccraik@google.com> Rename native DisplayListRenderer to DisplayListCanvas

Change-Id: I33e6f8cc85da1e7da7ff7bf18d4ebde64222067a
ee248599d49a15fc207c5aeb0b90ec263cc1d600 12-Feb-2015 Derek Sollenberger <djsollen@google.com> Refactor DisplayList path caching.

This removes dependence on SkPath ptrs that HWUI does not control
the lifecycle of. This clears up some errors where the paths are
not generated from Java, but rather the Skia test suites.

Cherry-pick of a change that originally landed in master-skia and is
dependent on a skia merge (ag/655422).

Change-Id: I41b9797a2b0af5d6b4ea51891565469d4f1d832d
3d4eed7f1aa99401dabe2e45b82f98fb4fc2d754 04-Dec-2014 Derek Sollenberger <djsollen@google.com> Update HWUI to store its own SkBitmap objects

This enables us to...

1) simplify the lifecycle/ownership between Java and HWUI
2) remove DisplayListRenderer::drawBitmapData and associated logic
3) track pixel lifecycle using standard SkPixelRef refcounting
4) Remove uncessary calls to ref/unref the bitmap's pixels and colorTable

Change-Id: I3c95078da20995444f6388a029414280fd654318
51d6a3db97bdd5315f1a17a4b447d10a92217b98 23-Dec-2014 Chris Craik <ccraik@google.com> Cleanup various clang warnings, use unique_ptrs in several places

Change-Id: I347904b25e51fcc7de14b1e72f1acd0f6ba26f3f
07adacf4996c8ca494332ec938786fa15832c722 19-Dec-2014 Chris Craik <ccraik@google.com> Cleanup

Change-Id: I91ffb9c66697741116fdeaa31abdf6cfd79155df
e2831a181f14dd6ca0e601a4c3cdc313a58faaae 11-Dec-2014 Chris Craik <ccraik@google.com> resolved conflicts for merge of 5369b769 to master

Change-Id: Iccb2ce948321534e05d67e64dc40a38332adb1a7
5369b76963a344d08fda4532227a6f0da28fd23a 11-Dec-2014 Chris Craik <ccraik@google.com> resolve merge conflicts of ed211b9 to lmp-mr1-dev-plus-aosp.

Change-Id: Ib9d6d301282bbaae6b23b9ce07b9e6a4e9075991
4ac36f80beb958c77a92a3e1a235f6ed9daaa510 10-Dec-2014 Chris Craik <ccraik@google.com> Fix frame-allocated path lifecycles


Previously, we were allocating per-frame temporary paths within the
PlaybackStateStruct, but these are not safe as layers allocate these
transiently. Instead, move these to the OpenGLRenderer, which has
better define lifecycle.

Additionally, don't store SkPath objects directly in vector, since
they are then subject to relocation.

Change-Id: I8187ef542fcd5b030502bb75eb123ee26c0daa96
45670c1dc55c3d853c03a252623428aeffa731e7 12-Nov-2014 Dan Albert <danalbert@google.com> am b28ff487: resolved conflicts for merge of 5e6cf242 to lmp-mr1-dev-plus-aosp

* commit 'b28ff487fb6db4a44e4d18aa17d8253f00a63bb6':
Move frameworks/base over to libc++.
b28ff487fb6db4a44e4d18aa17d8253f00a63bb6 12-Nov-2014 Dan Albert <danalbert@google.com> resolved conflicts for merge of 5e6cf242 to lmp-mr1-dev-plus-aosp

Change-Id: If21bd328a5c8ea3474abfe624e910d4830c72dc9
ff1d8a6635fb6441615778a47e2881129574a5b1 12-Nov-2014 Dan Albert <danalbert@google.com> Move frameworks/base over to libc++.

Bug: 15193147
Change-Id: I96109d2d383f0c8a4aaa611f29fcf887afb3c69e
edaecc1db0584fa017822dfc2da0c968b53967e6 11-Nov-2014 Andreas Gampe <agampe@google.com> resolved conflicts for merge of 1d03b816 to lmp-mr1-dev-plus-aosp

(cherry picked from commit 1272887050a269d6d506b42099c2857847ad100b)

Change-Id: Ib673768fe5fc03615626ef4b10590e5317f22172
1272887050a269d6d506b42099c2857847ad100b 11-Nov-2014 Andreas Gampe <agampe@google.com> resolved conflicts for merge of 1d03b816 to lmp-mr1-dev-plus-aosp

Change-Id: Ib673768fe5fc03615626ef4b10590e5317f22172
1e19674107e1aa2224c2b8c7d12bfa057efe80ea 11-Nov-2014 Andreas Gampe <agampe@google.com> Frameworks/base: Wall Werror in libs/hwui

Turn on -Wall -Werror in libs/hwui. Fix errors.

Change-Id: I74962d08c889712dacbd0d86d6760fc10802b6bd
107843de4507b3511006cb9c77b8d0364374385a 08-Sep-2014 Tom Hudson <tomhudson@google.com> Remove status return from all uirenderer::Renderer functions

This moves the interface closer to android::Canvas. The only use of
return values was in the OpenGLRenderer subclass; that is replaced
with an internal dirty flag: returned from finish(), checked by

This is part of a series of CLs to refactor the Graphics JNI bindings.


Change-Id: Ifd533eb8839a254b0d3a5d04fc5a2905afdfc89e
9481684560b2815d2706512086bb36467ef6acc0 01-Nov-2014 John Reck <jreck@google.com> am e05575e9: am a8d83d63: Merge "Layer changes" into lmp-mr1-dev automerge: a51fba0

* commit 'e05575e9c36850d8cfe49396ac9a1372511b12bf':
Layer changes
0e89e2b7bcb2c035e8cee77f93120e7c5617f8d2 31-Oct-2014 John Reck <jreck@google.com> Layer changes

Bug: 17208461

* Switch Layer to be VirtualLightRefBase instead of
Caches' side-channel ref-counting
* Include active layers in gfxinfo dump
* Run gfxinfo dump on the correct thread
* Dump gfxinfo on Layer creation failure

Change-Id: I28d195699e2334518e215ab28c7a17355aee9678
2dc236b2bae13b9a0ed9b3f7320502aecd7983b3 15-Oct-2014 Tom Hudson <tomhudson@google.com> Clean up physical coupling

Narrow the use of #include directives in hwui, replacing with forward
declarations where straightforward. Speeds compiles; doesn't do any
restructuring of code.

Change-Id: Icac2baffb5896f55d8c6718e9bd9d4bfa02d3ca0
8afd0f245cc0c4a0366f39f41b5f78e47ee83be3 22-Aug-2014 Chris Craik <ccraik@google.com> Create z reordering boundaries around dispatchDraw


This means rendernodes with a Z will no longer be drawn at the end of
their parent's DisplayList, but at the end of the associated reorder
region (DisplayListData::Chunk).

Change-Id: Ia033fee9d9a4db567b2a8d5e90fc57a4d0a64544
7466986d2055eb8711f36a85ac539b1572ffe805 08-Aug-2014 Chris Craik <ccraik@google.com> Fix leak of SkPathRefs


SkPath objects owned by DisplayListOps weren't being torn down, and
thus weren't releasing their SkPathRef innards.

Change-Id: I2581e124600a93a399ef3251f456c02ab52839a8
09d5cddf67b676018700bcc10a72242641cd7eec 24-Jul-2014 John Reck <jreck@google.com> Add kModeSync

Bug: 16526750

Change-Id: I4c087160e80432739321172fd57880846c8de6e0
a7090e0cfd7c719a6d4c03aae34f5db98754cbdd 21-Jun-2014 Chris Craik <ccraik@google.com> Update 'DisplayList' vs 'RenderNode' naming in several places

Change-Id: I635c6627d098b661fb9b0ba1bd42fa6d7277d287
139088228faa7f3c446af7387e017933998a5570 10-Dec-2013 Derek Sollenberger <djsollen@google.com> Update HWUI matrix API

1. more closely mirror Skia API by using const ref instead of ptrs
2. store SkMatrix in the drawOp instead of the linear allocation heap

Change-Id: I4b9f6f76b9f7d19325e29303d27b793679fd4823
d1ad5e62fda248c6d185cde3cb6d9f01a223066c 05-May-2014 Leon Scroggins III <scroggo@google.com> Inspect SkShader to determine hw shader.

Instead of duplicating internal info about SkShader, inspect the
SkShader installed on the SkPaint.

Remove setupModifiers, nResetModifiers, and nSetupShader.

Remove calls to create/destroy the (previously) attached SkiaShader.

Remove native code for setupShader and resetModifiers.

Remove code keeping track of native SkiaShader.

Include Extensions.h.

Compare shaders on the paint, instead of on DrawModifiers.

Remove vector of SkiaShaders.

Access the SkShader on mPaint.
Remove SetupShaderOp and ResetShaderOp.

Remove resetShader, setupShader, refShader, and mShaderMap.

Pass SkShader to setupDrawShader and setupDrawShaderUniforms.

Add LayerShader, a class inheriting from SkShader, to mimic the
behavior of SkiaLayerShader. Unlike SkiaLayerShader, it can be set on
the SkPaint so it can be inspected later.
Set a LayerShader instead of a SkiaLayerShader.
setupDrawShader and setupDrawShaderUniforms now inspect an SkShader
passed in.
Inspect SkShader instead of mDrawModifiers.mShader.
Remove resetShader and setupShader.
setupDrawColorUniforms now takes a boolean indicating whether there is
a shader.
Add an inline function for accessing the SkShader on an SkPaint.
In setupDrawBlending(Layer*, bool), do not check the shader (which will
never be set), but do check whether the color filter may change the
alpha (newly fixed behavior).
In setupDrawBlending(SkPaint, ...), check the SkShader and whether the
color filter affects alpha (the latter is new behavior).

Remove pure virtual functions setupShader and resetShader.

Remove functions for refing/unrefing shaders.

Much of this code was redundant and has been removed.
Convert structs into class with nothing but static functions for
calling describe/setupProgram.

Use the SkPixelRef as the key to the bitmap Lru cache, since shader
inspection will provide a different SkBitmap pointer (though it will
hold the correct SkPixelRef with the correct generation ID).

Update manual test to have more shaders: radial, sweep, compose,
invalid compose.


Change-Id: Iaa7189178bda1c55f96da044d2a9fa602ba36034
9fa4071c4768c63902c6a74a4b480b51a8b95d43 10-May-2014 John Reck <jreck@google.com> Refactor VirtualLightRefBase & JNI

Change-Id: I8e244e7109e59d5be96871b23bb9b1201c7f9eaa
52244fff29042926e21fa897ef5ab11148e35299 02-May-2014 John Reck <jreck@google.com> Add CanvasProperty for drawCircle

Change-Id: Icbcc030f5033d2094e567d7c519b9d672f2aac1c
087bc0c14bdccf7c258dce0cdef46a69a839b427 05-Apr-2014 John Reck <jreck@google.com> Refcount RenderNode

Change-Id: I7a86db8acc2b78ef33d987a43a119f5933d7d752
113e0824d6bddf4376240681f9cf6a2deded9498 18-Mar-2014 John Reck <jreck@google.com> Move RenderNode to own file

Change-Id: I9380d161fd3ddd7b569c262dd8e7aa0c96151b1e
acb6f07623b7df3d4179f70ae03ade574616ffa6 13-Mar-2014 John Reck <jreck@google.com> Split out RenderProperties

Change-Id: Ia9888b4fb2c849d95a8c395cafef2e2294a23aae
33896588e8f62815d3ea2bfcea59332070acf988 12-Mar-2014 John Reck <jreck@google.com> No-op isolatedZVolumen property

Change-Id: I7aa474d65a3d12efd4ffb731e07ee42f4d348183
e18264b079481a244b30e3f71012c53bbd861f92 12-Mar-2014 John Reck <jreck@google.com> Rename DisplayList->RenderNode

Change-Id: Id42e23c9a1a6eb6eaeafef707ced7fa6887b03d0
b79a3e301a8d89b9e1b1f6f3d7fd6aa56610a6f0 11-Mar-2014 Chris Craik <ccraik@google.com> Fix orthographic shadows projection, simplify shadow reordering

Separate matrix passed to shadow system into two parts, one for
transforming the polygon XY points (using the actual draw matrix) and
a separate one which respects correct 4x4 3d rotations and
translations for determining Z values.

Change-Id: I7e30a84774a8709df6b2241e8f51fc5583648fe8
8b6f2df48e10de35d43621ce174eb3dde394725c 03-Mar-2014 Chris Craik <ccraik@google.com> Draw shadows from casters together if the Z values are similar

Change-Id: Ib5d00c83e81d9d4c384685a84988a681da8b4490
44fd8d24f761f82d21e9b00932648a1b6bf91449 26-Feb-2014 John Reck <jreck@google.com> DisplayList overhaul

Change-Id: I53418d580c98f706e971545cff81b9921c12cc5f
e9b8817bd720cd2a294126074eb533f943a9348f 11-Feb-2014 Chris Craik <ccraik@google.com> Make outline and shadow APIs public

Change-Id: If40dc27b2fdc41c3ed355bc9029474b1344c1a03
eef1be1d83eeb35377cfeb8a4932e317a3a975a7 10-Feb-2014 Derek Sollenberger <djsollen@google.com> Merge "Removing SkiaColorFilter and inspecting the native object directly."
b67a7bf27ba2ecdb55be2117717b6818053f47fc 08-Feb-2014 Chris Craik <ccraik@google.com> Add shadow casting / global perspective APIs, hidden for now.

Global perspective isn't yet hooked up in rendering.

Change-Id: I64ad272ea5dc523505260ce114f0a6bebdcfe9dc
76d3a1b8d035d27bc80b0f2fc480a903bd001514 10-Dec-2013 Derek Sollenberger <djsollen@google.com> Removing SkiaColorFilter and inspecting the native object directly.

bug: 10650594
Change-Id: I4fcf66d008765afa0e35d011f58bc792183cb74f
fad4593a3c9db193a4308c34168cc91c28218e2b 06-Feb-2014 ztenghui <ztenghui@google.com> Add the clipToOutline by just using the clipPathOp

Change-Id: I6ba23b589e579599d018600d0744be0efe2028c1
27bfb24518934f0344c79a1d655ea8d1208d2446 07-Feb-2014 Chris Craik <ccraik@google.com> Merge "Rework and clean up DisplayList projection"
1df26446b7eac7050767c38ca977fde03a41a033 06-Feb-2014 Chris Craik <ccraik@google.com> Rework and clean up DisplayList projection

Move the projection surface to be a property of a DisplayList,
set to true for every background drawable.

Additionally, handle a projecting view background such that it doesn't
try to project onto itself (which is undesirable).

Change-Id: Ic70b17474bd87340e80767f8518f73b233419c7a
629f67709b84a6bebdecdc8a500bf83560f557d0 05-Feb-2014 Chris Craik <ccraik@google.com> Simplify DisplayList matrices

Somewhat unifies the ortho/perspecive paths - the property matrix
(translate/scale/rotate) is now always a Matrix4.

Change-Id: I36e4fe83d1150ee6e4be5f64f34d0fc8d6525cc6
a2fe7affd3d077ac163da90996cb2e5e0ca3b8d1 29-Jan-2014 Chris Craik <ccraik@google.com> Add initial hidden outline APIs

Background drawable outline usage and drawable outline calculation
still to come.

Change-Id: I8c7539f1638f86e1f8eb11f4fe49f705f61d58ba
6657a6c53930eb0ff8d03317eb10ea7ddb0c49b4 26-Jan-2014 Chris Craik <ccraik@google.com> Update reordering method names, and make 3d reordering API public

IsContainedVolume -> hasIsolatedZVolume conveys that this affects Z
ordering of views

ProjectToContainedBackground -> ProjectBackwards, since it ended up
using its own projection target, separate from the 3d volume bit

Change-Id: Ia2cde838cc4da134366fe6ff623290fbd65e50c3
3783e70b557fe58f51d551242a42e7232e991c10 27-Jan-2014 Chris Craik <ccraik@google.com> Remove logging of DisplayList staleness

Change-Id: Ie6b3af3065d4d10ec0bc9b419223d3458d297ea8
bb615a6ffbc8a051007163916f1ed085d10b5327 24-Jan-2014 Chris Craik <ccraik@google.com> Clear root level reorder lists to prevent accessing stale DisplayLists


Adds temporary logging which should log/crash earlier on incorrectly
reordering hierarchies.

Change-Id: Iee00940718c3cc868161e754aff93cd3b2747094
f533e947035795a485344f4c270e16507f974901 15-Jan-2014 Chris Craik <ccraik@google.com> Support projection of DisplayLists onto ancestors.

For now, ancestor views signal the acceptance of projections with a
save(0x20)/restore pair.

During the order traversal, each view with the save(0x20) code will
collect descendent views with mProjectToContainedVolume (which still
needs to be renamed) so that they can be drawn out of order later.

- *Temporary* sample code added to HwAccelerationTest.

- Note that a projected displaylist must not be clipped.

Change-Id: I45c493e845961535b958d59c53e8aff3f8891d9f
9f68c096263b36f59c383435e587bd8bd279af34 10-Jan-2014 Chris Craik <ccraik@google.com> Simplify Z reordering logic

Change-Id: I9e36f68d7be5cfd4d69a84a51824cb9a642fe18d
58f09b352417c4ff7e01365727cbf8a09b9bed23 09-Jan-2014 Alan Viverette <alanv@google.com> Add DisplayList bit for projecting onto a contained volume

Does not handle reordering/translating the projected DisplayList.

Change-Id: I6f1ebb2b20b7436c86fe849b35d582fd9c8a8967
d218a92c0afb8c0d98135b20b52ac87236e1c935 03-Jan-2014 Chris Craik <ccraik@google.com> Use const where possible for drawing parameters

They should never be modified by a Renderer, only read and copied.

Change-Id: I9d8d55dca19115ee9dfeb2bb3f092ba2fb327cd4
d863a10b2870ca27f631b2ec69f3e13faed1d02a 19-Dec-2013 Chris Craik <ccraik@google.com> Add initial APIs for 3d view manipulation.

Change-Id: I6de00bc577d5b3a1fbc9ca3a3b3668fcfa32b867
18809c063b89d9b235401d080b952885a4ef9628 13-Dec-2013 Chris Craik <ccraik@google.com> Merge "3d view system!"
f57776b2d195f0937906eb88b777bb55ccc36967 26-Oct-2013 Chris Craik <ccraik@google.com> 3d view system!

True 3d transformations are now supported by DisplayLists and the
renderer, initially with the translationZ property on view.

Renderer operations used directly by DisplayList (formerly,
clip/save/restore/saveLayer) are now more simply managed by allocating
them temporarily on the handler's allocator, which exists for a single
frame. This is much simpler than continuing to expand the pool of
pre-allocated DisplayListOps now that more operations are called
directly by DisplayList, especially with z ordered drawing.

Still TODO:
-APIs for camera positioning, shadows
-Make Z apis public, and expose through XML
-Make invalidation / input 3d aware

Change-Id: I95fe6fa03f9b6ddd34a7e0c6ec8dd9fe47c6c6eb
630491973269da1b260e69d6a3f9490b97705037 11-Dec-2013 John Reck <jreck@google.com> Unbreak display list debug dumping

Change-Id: I1c6a79f047b29fa60907f6e128cb843a45b88bff
c1c5f0870282b56dafe5a4d756e4b9e6884655a7 12-Sep-2013 Chris Craik <ccraik@google.com> Move DeferredDisplayState out of ops


Instead of storing DeferredDisplayState within an op (thus forcing ops
to be tied to a single state instance), associate each op with a new
state at DeferredDisplayList insertion time.

Now, DisplayLists (and the ops within) can be reused in a single
DeferredDisplayList draw call, as ops will use different state
instances at different points in the frame.

Change-Id: I525ab2abe0c3883679f2fa00b219b293e9ec53d9
e3b0a0117a2ab4118f868a731b238fe8f2430276 27-Jun-2013 Romain Guy <romainguy@google.com> Refcount 9-patches and properly handle GC events

This change adds refcounting of Res_png_9patch instances, the native
data structure used to represent 9-patches. The Dalvik NinePatch class
now holds a native pointer instead of a Dalvik byte[]. This pointer
is used whenever we need to draw the 9-patch (software or hardware.)

Since we are now tracking garbage collection of NinePatch objects
libhwui's PatchCache must keep a list of free blocks in the VBO
used to store the meshes.

This change also removes unnecessary instances tracking from
GLES20DisplayList. Bitmaps and 9-patches are refcounted at the
native level and do not need to be tracked by the Dalvik layer.

Change-Id: Ib8682d573a538aaf1945f8ec5a9bd5da5d16f74b
9846de68f1b4f2720da421e5242017c28cfc93ed 13-Jun-2013 Chris Craik <ccraik@google.com> Remove crash workarounds, add logging

Change-Id: I748c27f979af1a303be01db29aedcbad6d608c38
450dc7554de90026a6dd2a1ec7108c1423fce18e 05-Jun-2013 Romain Guy <romainguy@google.com> Remove string allocations when creating display lists

Change-Id: Id520db981a3988cb980c8da5dbea8f26ef94989f
dd671599bed9d3ca28e2c744e8c224e1e15bc914 19-Apr-2013 Chet Haase <chet@google.com> Fix quickReject logic to account for setClipChildren() setting

The rendering code optimizes by rejecting drawing operations that
lie outside of the bounds of their views. This works in most
situations, but breaks down when containers have called
setClipChildren(false), because we reject drawing that is outside
of that container, but which should be drawn anyway.

Fix is to pass in the value of that flag to the DisplayList drawing
routines which take that flag into account when deciding whether
to quickReject any particular operation.

Issue #8659277 animation clipping

Change-Id: Ief568e4db01b533a97b3c5ea5ad777c03c0eea71
a08f95cfeca7217f9c533b03663bf0dceedd259a 16-Mar-2013 Chris Craik <ccraik@google.com> Use snapshot alpha for layers

Removes mMultipliedAlpha, using the snapshot alpha for all
non-overlapping display list alpha control.

Additionally, fixes opacity issues where children of
hasOverlappingRendering=false displaylists (both hw layer sublists and
other sublists with hasOverlappingRendering=false)

Change-Id: I6adc16da855835f9f518f8967628e5d0135c789b
ff78583d8a73ca35ce65b5d2592570ff6fb9901b 08-Mar-2013 Chris Craik <ccraik@google.com> Fully deferred displaylist replay


A recursive drawDisplayList call is now entirely deferred before
playing back to the screen and issuing GL commands. This way, the
entire stream can be inspected, optimized, and batch work (such as
uploading textures) before issuing commands.

Additionally, this fixes an issue where operations draw could move
across restores corresponding to saveLayer(alpha). Those and other
similar cases (such as complex clipping, requiring the stencil) are
now treated as batching barriers, with the operations that change
renderer state in a way that's difficult to defer are just re-issued
at flush time.

Change-Id: Ie7348166662a5ad89fb9b1e87558334fb826b01e
505d1d64eda6e47caabf8701cb39ec9b176b3238 22-Feb-2013 Romain Guy <romainguy@google.com> Merge "Prettify display lists logging"
7031ff68bb998dbbd7caf3b2fd75eef747a86725 22-Feb-2013 Romain Guy <romainguy@google.com> Prettify display lists logging

This change makes it a lot easier to see the tree structure.

Change-Id: I4969abd1eb010f1d529671f8d86dc4c930be24f6
b98a016c6769b9e80d392df22fe77a2fca048d9f 21-Feb-2013 Chris Craik <ccraik@google.com> Fix clipping and stencil layer issues


Ensure rectangle clipping operations disable deferring when necessary
(i.e., when the op might create a non-rect region), including in

Additionally, makes clipping with a kUnion always use a region, for
consistency with software rendering

Change-Id: I6730f1a80250bcf3f91cd4afde646d470a12dbc2
52036b19a5f82bc4d75cfcbff99c65df8d25a99b 15-Feb-2013 Romain Guy <romainguy@google.com> Expose display list APIs

The exposed APIs are slightly simpler than the full APIs used internally.
Only APIs useful to applications are exposed.

Change-Id: Ie03014628d40ad5ef63dedbc52ce3def84429d54
c3566d06421c8acc0aafb18f7e307e5725ce87e1 05-Feb-2013 Chris Craik <ccraik@google.com> DisplayList draw operation reordering


The reordering enables similar operations to draw together, minimizing the
OpenGL state change operations that go inbetween draws. Eventually, multiple
complete canvas draw operations will be merged (into a single glDrawArrays call,
for example)

Reorders DisplayList draw operations when:

-They can move backwards in the command stream to be after similar
operations without violating draw ordering

-The OpenGLRenderer is in a simple, replayable state (no complex clip,
or filter/shadow etc)

Also adds two system properties to control the deferral/reordering:
which can be set to "true" to control the display list manipulation

Change-Id: I5e89f3cb0ea2d2afd3e15c64d7f32b8406777a32
0776a6069365bdea83855db154fa2d37f9d1d808 15-Feb-2013 Chris Craik <ccraik@google.com> Move DisplayList to its own cpp file

Change-Id: Ic9c1bbf4673ad5c756f3908b2ab7e699edd6a119