• Home
  • History
  • Annotate
  • only in /frameworks/base/libs/hwui/
History log of /frameworks/base/libs/hwui/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0e40462e11d27eb859b829b112cecb8c6f0d7afb 13-May-2015 John Reck <jreck@google.com> Revert "DO NOT MERGE Backport of limited jank-tracking metrics"

This reverts commit 2614bd225f84f7a23e6b30fc6b47bede153e5f4c.

Change-Id: I344b4cbaa0bb0caf50bceb806d1446ee27ea52d8
ndroid.mk
rameInfo.cpp
rameInfo.h
ankTracker.cpp
ankTracker.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/RenderThread.cpp
enderthread/RenderThread.h
enderthread/TimeLord.cpp
enderthread/TimeLord.h
ests/main.cpp
tils/Macros.h
tils/RingBuffer.h
d5a4a1aac980c304d6f46f07f15bfc5c94d8f9d0 19-Feb-2015 John Reck <jreck@google.com> DO NOT MERGE Backport of limited jank-tracking metrics

Bug: 19821830

Cherry-pick of ba6adf66d3c44c0aa2fd8a224862ff1901d64300
Cherry-pick of e70c5754d01f2ab0ff47ea3eabaa88aca5ed2a36

Change-Id: Id342fa0ab345f204bec58acf45ce72f6de950cfb
ndroid.mk
rameInfo.cpp
rameInfo.h
ankTracker.cpp
ankTracker.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/RenderThread.cpp
enderthread/RenderThread.h
enderthread/TimeLord.cpp
enderthread/TimeLord.h
ests/main.cpp
tils/Macros.h
tils/RingBuffer.h
57998017ff137f7d4ec33df21b6596141f8c4547 29-Jan-2015 John Reck <jreck@google.com> Allow ~Layer() to happen after onGLContextDestroyed

Bug: 19146354
Change-Id: I9e885936168bd541bfbed4064ad67ab524f58e32
aches.cpp
ayer.cpp
ayer.h
enderState.cpp
enderState.h
a22c9b2cd171a656fa684d57a915dbe636da5f6a 14-Jan-2015 John Reck <jreck@google.com> Vsyncs are hard

Bug: 18866485
Change-Id: I7d304df0f20a3296956cb6887a72adba9243f117
enderthread/RenderThread.cpp
a733f89c05567c97359169832f41389b939baaad 19-Dec-2014 John Reck <jreck@google.com> Tweak RT-animator scheduling

Bug: 18226391

The issue occurs as a result of a dispatchFrame itself
taking longer than 12ms, the alloted budget. The result
is that a vsync request (which occured at the end) would
miss the vsync that occured 1ms prior to the end of the frame.
As a result it would end up waiting for the following vsync,
essentially dropping to 30fps even though 60 could have been
sustained.

Fix this with a few tweaks.
First, adjust the UI thread's delay bias from (now + 4ms) to
(vsync + 4ms), this prevents RT animators from slowly drifting
if the vsync occurs mid-task.
Second, request a vsync preemptively prior to running callbacks.
This way if any callbacks needs the next vsync and it takes
"too long", we will catch that vsync.
Finally, fix an issue where the display event queue was always
drained & rejected at the end of a task loop. Instead, drain
and reject all stale vsyncs. This still prevents the issue of
both UI thread & RT thread trying to drive 2 frames in a single
pulse, but also allows RT to notice that it missed a vsync
pulse it needed and that it should speed-up a bit in response

Change-Id: I9d6be037737e9283297898cac2e3563453e797cd
enderthread/RenderThread.cpp
enderthread/RenderThread.h
enderthread/TimeLord.cpp
enderthread/TimeLord.h
c748832f759cd7a390a32890530e854b9711eb7c 17-Dec-2014 Chris Craik <ccraik@google.com> Merge "Revert overdraw avoidance visualization change" into lmp-mr1-dev
ef8d6f272ae451aaedb0f02249c0f9f0576efdf3 17-Dec-2014 Chris Craik <ccraik@google.com> Revert overdraw avoidance visualization change

bug:18787324

Partial revert of 23d307c8d88f4a3849163b9e5b7cd11d0d4f372c.

Change-Id: Ic8b91b046707fc5b8fa53c35ea7b37bb19c3c943
eferredDisplayList.cpp
eferredDisplayList.h
penGLRenderer.cpp
b9a4d15d0942a55c7dc32a471ee40890986e3fab 11-Dec-2014 John Reck <jreck@google.com> Merge "Force-flush state sync on texid change" into lmp-mr1-dev
63c7b24645d94c92dc6dc32d57c23b5167950c8b 11-Dec-2014 Chris Craik <ccraik@google.com> Merge "Correct layer size formatting in trace" into lmp-mr1-dev
c2379070a46f208bce490b938e0673ba00373e2e 11-Dec-2014 Chris Craik <ccraik@google.com> Correct layer size formatting in trace

bug:18722704
Change-Id: Icef9aaa62633b2d86ad250f43d4c8fa5cc0b6842
enderNode.cpp
9a7fe1a034bf0a9dea7c0676211bb780d3ab30be 11-Dec-2014 John Reck <jreck@google.com> Force-flush state sync on texid change

Bug: 18718646

Caused because the Texture object thought the GLES texture
was in a different state than it was as it persists across
EGL/GL contexts. Fix this by force-flushing the default
values when the texid has changed.

Change-Id: I264bac9a2beb08df8e2ba8a85ad15f0dd1fce22a
ssetAtlas.cpp
eb2dcc791e649e07ec8114e00752b54965c46e65 11-Dec-2014 John Reck <jreck@google.com> Merge "Don't preload textures for AssetAtlas" into lmp-mr1-dev
ebd52610cfeff6e557fde284a7e1efc5e6438285 11-Dec-2014 John Reck <jreck@google.com> Don't preload textures for AssetAtlas

Bug: 18317479

RenderNode::prepareSubTree calls prefetchAndMarkInUse
on every bitmapResoruce in the DisplayList. However,
this resulted in textures being uploaded for bitmaps
that would be drawn from the AssetAtlas instead.

To fix this we teach TextureCache about the AssetAtlas
so that calls to TextureCache return the Texture from
AssetAtlas if it exists. Thus usage of AssetAtlas
is now purely to allow for further optimizations via
draw merging instead of a requirement to get
any benefit at all.

Change-Id: I65282fa05bac46f4e93822b3467ffa0261ccf200
ssetAtlas.cpp
ssetAtlas.h
aches.cpp
aches.h
isplayListOp.h
penGLRenderer.cpp
enderState.cpp
enderState.h
extureCache.cpp
extureCache.h
enderthread/EglManager.cpp
4ac36f80beb958c77a92a3e1a235f6ed9daaa510 10-Dec-2014 Chris Craik <ccraik@google.com> Fix frame-allocated path lifecycles

bug:18667472

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
mbientShadow.cpp
isplayList.h
penGLRenderer.cpp
penGLRenderer.h
4f1942d999c60fd91cb826651b6d978d47a74321 10-Dec-2014 John Reck <jreck@google.com> Merge "Teach AssetAtlas about more drawables" into lmp-mr1-dev
dad7d84c04c5954b63ea8bb58c52b2291f44b4df 09-Dec-2014 John Reck <jreck@google.com> Teach AssetAtlas about more drawables

Bug: 18317479

Change-Id: I16868ee204d24af72af9a2efc987f7e9eb1d266b
isplayListOp.h
ee648e517f09cccf59010a7423240a38aaeb2c04 09-Dec-2014 Derek Sollenberger <djsollen@google.com> Remove unnecessary/erroneous reference counting

The SkBitmap* used by HWUI holds a reference to the PixelRef (which
in turn holds the colorTable) so keeping an additional ref is not
only unnecessary, but also potentially problematic.

If a bitmap changes its pixelRef after it has been added to a displayList,
then we end up with unbalanced ref/unref calls that cause the newly added
PixelRef to be unref'd and prematurely deleted, while the original PixelRef
is leaked.

bug: 18659976
Change-Id: I34a06152e7bb2d733249a207dafd36b9b5dc0712
esourceCache.cpp
01a5ea35fbba4c5bb1d7790ae1677a2fa752e042 03-Dec-2014 John Reck <jreck@google.com> Resume RT-animations after a pauseSurface

Bug: 18203577

The issue occurs as a result of performTraversals() both doing
a window relayout call *and* early-returning because it's not dirty.

To fix this pauseSurface() returns whether or not the RT-side is
"dirty" to force ViewRootImpl to do a draw even if mDirty is
otherwise empty.

Change-Id: I534f367e75d18d273ebf14df3927f5c464ef6bef
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/RenderThread.cpp
enderthread/RenderThread.h
ef124887c616d03cf0a689d2b7d5b1894405d12e 02-Dec-2014 Chris Craik <ccraik@google.com> Merge "Clip outline to View clip bounds for shadow computation" into lmp-mr1-dev
faa79ff9d964de940660d2226d5b06ded9294597 01-Dec-2014 Chris Craik <ccraik@google.com> Clip outline to View clip bounds for shadow computation

bug:18509823

This allows animations of View clipBounds (and other callers of
setClipBounds) to affect shadows, instead of leaving them floating.

Change-Id: I249fa4b371a170cb0c54001f5b0e0097e109b8b8
enderNode.cpp
76de89820c51c4bc288b440a82374b9d6c806244 01-Dec-2014 John Reck <jreck@google.com> Merge "Prevent calling GL functions with an invalid surface" into lmp-mr1-dev
a12b2405df5c12363e24cebc684f5f3a5c9a5b7b 21-Nov-2014 Sangkyu Lee <sk82.lee@lge.com> Prevent calling GL functions with an invalid surface

Bug: 18518580

When destroying CanvasContext, the surface can be invalid
state. So the surface should be updated to null prior to
destroying GL resources to ensure that GL functions
are not called with an invalid surface.
Some GL implementation makes an error if GL functions
are called with an invalid surface. (Adreno 3xx)

Cherry picked from AOSP: f76d36f96bf221672e98e440c9df7cbf0e02e84e

Change-Id: Ie6f6ea081ec931fc9df30b2c3ed066ec1ae9d294
enderthread/CanvasContext.cpp
659de832b9796e14de44b6411980a65e33283a93 01-Dec-2014 Chris Craik <ccraik@google.com> Merge "Enable stencil clipping within clearLayerRegions" into lmp-mr1-dev
ca84c8b1b0e364e01ce392f0dbca5132830a148d 26-Nov-2014 Chris Craik <ccraik@google.com> Merge "Revert "Force-use the pbuffer surface for destroy"" into lmp-mr1-dev
9f81485a76dd02a07fd460a29db6adddd2ca2efe 26-Nov-2014 Chris Craik <ccraik@google.com> Revert "Force-use the pbuffer surface for destroy"

bug:18528859

This reverts commit b945f2313aee6e49a082ba5caaf95334d2570d52.

Change-Id: I6915624d356cb8570471eb3a5b8921f59b58db6d
enderthread/CanvasContext.cpp
52b2cf9fdf95ccdcbb3f5e403eb9691c1ead1214 24-Nov-2014 Dohyun Lee <dohyun.lee@lge.com> Enable stencil clipping within clearLayerRegions

bug:18538502

Cherry-pick of adc0d9da8648abfea1035fb1108eceea9fd9b5b1 from AOSP

Previously stencil clipping within clearLayerRegions is disabled by commit
62d307c2402777d5e53b4590af5f32f8c55afd81. However, clearing whole layer
regions causes black-colored triangle regions when a TextView has
RotateAnimation because the draw within clearLayerRegions does not
affected by the current stencil clip.

Change-Id: Id32a0b16754b109905f833e063ebfa156bd953f2
Signed-off-by: Dohyun Lee <dohyun.lee@lge.com>
penGLRenderer.cpp
dec3f138c2f6a31879b0fe055a26d618e4874bb5 25-Nov-2014 John Reck <jreck@google.com> Merge "Force-use the pbuffer surface for destroy" into lmp-mr1-dev
ee6606519d22805c1caf23a3c75cde9fc97b34eb 25-Nov-2014 Chris Craik <ccraik@google.com> Merge "Improve DisplayList state output" into lmp-mr1-dev
b945f2313aee6e49a082ba5caaf95334d2570d52 25-Nov-2014 John Reck <jreck@google.com> Force-use the pbuffer surface for destroy

Bug: 18518580

If CanvasContext is being destroyed() the Surface
is probably no longer valid as well, so make sure to
makeCurrent() to the pbuffer surface so that the
subsequent GL operations are not using an invalid
EGLSurface

Change-Id: Ica5d6a065841772c47e00ad65aa7894c7e27e043
enderthread/CanvasContext.cpp
71d08a07189c2b433080203895d9d5e936b16b9e 25-Nov-2014 John Reck <jreck@google.com> Switch TextureCache to SkPixelRef::fStableId

Bug: 18245805
Change-Id: I08e6792dbeed86b13e569c7f2137de0e50dc2763
esourceCache.cpp
esourceCache.h
extureCache.cpp
extureCache.h
b5a5435a77bae40b55053ccde93b1ed45d0e8329 21-Nov-2014 Chris Craik <ccraik@google.com> Improve DisplayList state output

bug:17991451

Log hardware layers and shadow casting

Change-Id: I2ae40f270d18f5b2a5af985513e0f5e8841216c2
enderNode.cpp
enderProperties.h
ests/Android.mk
29dc496a42d49a37dcd99c0465f3cec18a47e6ff 21-Nov-2014 Chris Craik <ccraik@google.com> Merge "Revert "Add a way to override Xfermode DO NOT MERGE"" into lmp-mr1-dev
69e65019b0a6204f0ed9487d8fd7b3564eba6df8 21-Nov-2014 Chris Craik <ccraik@google.com> Revert "Add a way to override Xfermode DO NOT MERGE"

Feature no longer needed.

bug:18448377

This reverts commit 4678dcc5524258908eadc5fe1e5e1874768967eb.

Change-Id: Ib0a19946e966a54857165555827b5fa7b34b6bea
isplayListRenderer.cpp
isplayListRenderer.h
3b2ba44be3699a4e133d7a09cb4ed182405d7ff9 20-Nov-2014 Chris Craik <ccraik@google.com> Merge "Improve logging around performance critical events" into lmp-mr1-dev
70850ea258cbf91477efa57a1f1a23cc0044cc93 18-Nov-2014 Chris Craik <ccraik@google.com> Improve logging around performance critical events

bug:17702227

Add details useful to developers (such as layer size/View name), and
switch away from logging implementation names/details, since they
are generally not relevant to developers.

Change-Id: Iee605d182f241450f7e75a6d0c283d51fa1312f5
ayer.cpp
ayerRenderer.cpp
penGLRenderer.cpp
athCache.cpp
rogram.cpp
enderNode.cpp
extureCache.cpp
ont/Font.cpp
tils/TraceUtils.h
fbc8df03e498baf47ff1a5e05e182f1bcd60c770 15-Nov-2014 John Reck <jreck@google.com> Trace some interesting events

Bug: 18337099
Change-Id: Ie2e60da2b9f06e0368061c944d8123ab6903355c
ssetAtlas.cpp
aches.cpp
enderthread/CanvasContext.cpp
enderthread/EglManager.cpp
41a8043b30a289bdba55a2469e598b3fe67c3bf1 12-Nov-2014 Rob Tsuk <robtsuk@google.com> Merge "Add a way to override Xfermode DO NOT MERGE" into lmp-mr1-dev
4e50ee4f42e4fdf753b9f681a6236f4a46e25bb0 12-Nov-2014 ztenghui <ztenghui@google.com> Merge "Shadow: Fix the crash in spot shadow" into lmp-mr1-dev
3932063bc75dc1e4efc2c428ca208d2e2290164d 12-Nov-2014 ztenghui <ztenghui@google.com> Shadow: Fix the crash in spot shadow

Fix the crash from searching for closest umbra vertex by initialized the
starting index correctly.

Fix another potential crash related to ray intersection by introducing epsilon.

b/18315089

Change-Id: I9ac9a781a885701a8388714d44f79a1d905e5d33
potShadow.cpp
4678dcc5524258908eadc5fe1e5e1874768967eb 12-Nov-2014 Rob Tsuk <robtsuk@google.com> Add a way to override Xfermode DO NOT MERGE

Add a non-public API to Canvas/GLES20Canvas to provide a way to draw
the touch ripple animation without using a save layer.

Change-Id: I6e2095adffe515194f669fb75bb67abf813bd518
isplayListRenderer.cpp
isplayListRenderer.h
ca93f69c96df85bd6bc72a2a47dae6c0d5336ab2 07-Nov-2014 John Reck <jreck@google.com> Merge "Have an actual fallback if the surface is lost" into lmp-mr1-dev
aa95a88327d9a3ac8a4a00b065b78ac0f28b3a19 07-Nov-2014 John Reck <jreck@google.com> Have an actual fallback if the surface is lost

Bug: 17516789

This will force a relayout/reinitialize pass if the Surface
is lost mid-render instead of crashing on the next frame

Change-Id: If08bfa16f740728fa7c05904fa11e26f07b81e2e
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
4b19b7aaff1d1ff972ebe68101c2107454bbe5de 07-Nov-2014 John Reck <jreck@google.com> Merge "Fix wrong-thread issue" into lmp-mr1-dev
12f5e3433226f0a2886a98b0b8da8d5e947c5cde 07-Nov-2014 John Reck <jreck@google.com> Fix wrong-thread issue

Bug: 18259560

Change-Id: Ic63a86efba9c86f21defac0695a73db8b09ae284
eferredLayerUpdater.h
isplayListRenderer.cpp
isplayListRenderer.h
enderer.h
7ae6fc81efd05a7561ee2de853184d2a3788b88d 07-Nov-2014 ztenghui <ztenghui@google.com> Merge "A better looking and faster spot shadow." into lmp-mr1-dev
d2dcd6fded3a036f334a88bf9593398833f2919a 30-Oct-2014 ztenghui <ztenghui@google.com> A better looking and faster spot shadow.

1. This improve the looking, the star shape (spike) on long action bar is gone.
Shadow is more smooth now.

2. The performance is better, too. For averaging around rect, round rect and
circle, the spot shadow itself is 3 times faster. On N7 v1, it could be less than
0.1 ms.

b/14976551
b/16712006

Change-Id: I61ed546ee56e7c8dbe504dfcaef12d084904b4b8
mbientShadow.cpp
potShadow.cpp
potShadow.h
ector.h
a35778c799e8073a42b9e22191bde9d838327ab7 06-Nov-2014 John Reck <jreck@google.com> Yank ResourceCache out of Caches

Bug: 17947547

Pull the ResourceCache (aka, ref-counting side channel) out of
Caches so that DisplayListRenderer doesn't use Caches, avoiding
the risk of instantiating Caches on the wrong thread or
without a GL context

Change-Id: I7d63b70b3b0a0163308c5dedd6ef255eadebe8fd
aches.h
isplayList.cpp
isplayListRenderer.cpp
isplayListRenderer.h
enderNode.cpp
esourceCache.cpp
esourceCache.h
fd15f475541a4d13293374f18204cb1b3e010582 05-Nov-2014 Rob Tsuk <robtsuk@google.com> Log shader source when it fails to compile

So that there will be something to diagnose when such failures occur during
stability tests.

Bug: 18092655
Change-Id: I9a9d8d33b34273a477f2a9dbcf092887dcbc91c0
rogram.cpp
e6c0bda5dd945f3668b4108c49ee52f1a04253d6 04-Nov-2014 Rob Tsuk <robtsuk@google.com> Merge "Make points drawn with default paint visible" into lmp-mr1-dev
b7c26562d08bf72882eeca268a1bb51ea579653d 04-Nov-2014 Rob Tsuk <robtsuk@google.com> Make points drawn with default paint visible

When no stroke width is set, use 0.5 instead of 0.25 to make
sure the resulting rectangle spans at least one pixel.

Bug: 15455111
Change-Id: Id0a4b6d014c542ffc98b13a032f88ae0ce69b3a1
athTessellator.cpp
88f5fc7c5a9fb1e677c508165f732cd76f5eef3a 03-Nov-2014 John Reck <jreck@google.com> Fix counting

Change-Id: I9a3568908a7223d69430c1765fb5a4db96d7ac9c
aches.cpp
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
aches.cpp
eferredLayerUpdater.cpp
isplayList.cpp
isplayList.h
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
ayer.h
ayerCache.cpp
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
enderNode.cpp
enderNode.h
enderState.cpp
enderState.h
esourceCache.cpp
esourceCache.h
enderthread/CanvasContext.cpp
enderthread/EglManager.cpp
enderthread/EglManager.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/RenderThread.cpp
141823ec6313d9545b8354ea1e3e017a1da3cfa8 29-Oct-2014 John Reck <jreck@google.com> Merge "Be more conservative about current buffer" into lmp-mr1-dev
950ff1b88cc1330f8e80d62ed3aa15bee6be0556 27-Oct-2014 John Reck <jreck@google.com> Be more conservative about current buffer

Bug: 18065565
Change-Id: I0b9c85ecf384ebe525e3a38803ab77d7ee37f33a
enderthread/EglManager.cpp
23d307c8d88f4a3849163b9e5b7cd11d0d4f372c 27-Oct-2014 John Reck <jreck@google.com> Cleanup debug options

Bug: 18138852
Bug: 18065434
Change-Id: Ibb07b73b147c2a8b287fe8aee3f6624582f21b00
eferredDisplayList.cpp
eferredDisplayList.h
rawProfiler.cpp
rawProfiler.h
penGLRenderer.cpp
penGLRenderer.h
rogram.h
rogramCache.cpp
roperties.h
badac04dfd445a1fd3e3ecea04815e83fad5226c 23-Oct-2014 John Reck <jreck@google.com> Merge "Add some free zoom to lockHardwareCanvas" into lmp-mr1-dev
1125d1fa92ab9f3b8315bbfb72e038b62dfd454b 23-Oct-2014 John Reck <jreck@google.com> Add some free zoom to lockHardwareCanvas

Bug: 18099195

Don't use EGL_SWAP_BUFFER_PRESERVED on surfaces that will
never benefit. Also clean up some confusing naming

Change-Id: I674ca64e0464a3282cff79e5ecd350d08f47c014
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/EglManager.cpp
enderthread/EglManager.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
5c9d717d3e7064db76d2a01223af51379dadf2c3 22-Oct-2014 John Reck <jreck@google.com> Fix damage bug

Bug: 18087374
Change-Id: Ie183392122c73f93010fb3f4be071c924b352966
enderNode.cpp
733bb3bc78cfb4553441f5d86fce02eb12e32d02 22-Oct-2014 John Reck <jreck@google.com> Merge "Fix memory corruption in test" into lmp-mr1-dev
bb2d0cc7e1d487f7021b1f9ec0c6740e41b535f2 21-Oct-2014 John Reck <jreck@google.com> Surface:lockHardwareCanvas

Bug: 17440886

Change-Id: I1f2d98c63ec1a2814c2258cf7e0096139263770a
enderthread/TimeLord.cpp
ests/main.cpp
af608319f22989f673d1d0d4d3105f62109274bd 16-Oct-2014 John Reck <jreck@google.com> Fix memory corruption in test

Bug: 18012918
Change-Id: I8d69624e9be9f0399ddba10ce3903f93177d5930
ests/main.cpp
94c40fe92117f301c7758de2861ab0c1d6cfded0 08-Oct-2014 John Reck <jreck@google.com> CARD LAND!

Bug: 16712006

Initial work towards benchmarking HWUI systems
Currently this will just create a screen full of
"cards" to simulate a high load scenario for
shadows and clipping

Change-Id: Ie9f9a9570844e136db8053e8fc62fe06cb922a5f
ests/Android.mk
ests/TestContext.cpp
ests/TestContext.h
ests/main.cpp
786afcb3eec18315ec54987a08814ff28f13d09f 25-Sep-2014 Jorim Jaggi <jjaggi@google.com> Trim graphics memory when closing the shade

Graphics memory usually gets trimmed in applications when the
activity goes into the background. We use quite a lot of graphics
memory when the shade/lockscreen is open, and some of them never gets
freed unless the recents activity is closed, because we don't have
these activity-trimming-heuristics for the shade. This change
proactively trims the graphics memory when the shade gets closed or
when the lockscreen is hidden, to emulate the same heuristics as for
activities.

This change also adds trimMemory on RenderThread to systrace to
verify that no jank is introduced with this change.

This change immediately saves around 10-30 MB on an xxhdpi device
after the shade is closed.

Bug: 17581375
Change-Id: I4fb622efb51815fe08187be97ba15d012d4de5d4
enderthread/CanvasContext.cpp
8cdb0bc08728f18b75eca429678ea9b778191b6e 06-Oct-2014 ztenghui <ztenghui@google.com> Merge "Use float instead of double to increase spot shadow perf" into lmp-mr1-dev
6a2296d856fe4db524ab71c6500f356ff0454f29 04-Oct-2014 John Reck <jreck@google.com> am 9da6e743: am d988a45d: Merge "Cleanup DeferredLayerUpdater" into lmp-dev

* commit '9da6e7435945e34d05e0c8c5c9a324218480c6ff':
Cleanup DeferredLayerUpdater
9122b1b168d2a74d51517ed7282f4d6a8adea367 03-Oct-2014 ztenghui <ztenghui@google.com> Use float instead of double to increase spot shadow perf

This is helping spot shadow for 15%-20% increase.
With the new algorithm, we are less sensitive to the floating point error.

b/16712006

Change-Id: Ie30a6ce01e73d56054a0cf65a84549454339a7fd
potShadow.cpp
potShadow.h
749906b468912dab7bf69a86e852deac3e80b0cc 04-Oct-2014 John Reck <jreck@google.com> Cleanup DeferredLayerUpdater

Bug: 17765082

DeferredLayerUpdater had fallen behind RT updates. Re-snap to
latest expectations, ensuring to call requireGlContext() prior
to detachSurfaceTexture to avoid leaking SurfaceTextures

Change-Id: Ic65fb9831e5284f658866da8da9ad5af1d227699
eferredLayerUpdater.cpp
eferredLayerUpdater.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
497cb6c0a9818c5ba27df3e5a50878144505405f 02-Oct-2014 Chris Craik <ccraik@google.com> Merge "Avoid creating Caches instance with gfxinfo dump" into lmp-mr1-dev
59e129fbc8a70d58d124ccc309661719f562b486 02-Oct-2014 Chris Craik <ccraik@google.com> Merge "Account for colorfilter transparency in determining paint opacity" into lmp-mr1-dev
5f243860a79ec158fc9f769bda7202dfd202da59 02-Oct-2014 ztenghui <ztenghui@google.com> am 9ad17521: am f9033048: Merge "+ correcting shadow visual appearance (b/17610926)" into lmp-dev

* commit '9ad17521ac073562991cddb78f14d6df8d5fd05a':
+ correcting shadow visual appearance (b/17610926)
c5b5f0556b542a22f01d254e6284f69e9eb23e74 02-Oct-2014 Chris Craik <ccraik@google.com> Account for colorfilter transparency in determining paint opacity

bug:17765601
Change-Id: I90d76ee199bb357c71fc8f537c1abfa20d848416
isplayListOp.h
penGLRenderer.cpp
enderer.h
8def74de33b197c0c5ec8774576b1d71c7ec4f1b 02-Oct-2014 ztenghui <ztenghui@google.com> + correcting shadow visual appearance (b/17610926)

+ adjusting spot and ambient shadow opacity constants to achieve desired appearance
+ reducing ambient scale ratio back to 1.0 to address over-lightening at higher elevations
+ partially revert ag/546290

Change-Id: I9d7f664f73a7b9b83df73b739103c97054bd4f6e
hadowTessellator.cpp
059476a24502500bbc277b86f9a4f7e840d1b5f5 30-Sep-2014 Chris Craik <ccraik@google.com> Avoid creating Caches instance with gfxinfo dump

bug:17509891
Change-Id: I182851068ba04926d60226b3ace95efea59eac45
enderNode.cpp
a8bea8edde2f20cae48e5cc8de782679306b3cc3 24-Sep-2014 Chris Craik <ccraik@google.com> Add tracing for saveLayer

bug:17702227

Change-Id: Ia9cbf31b360c93f712e021bea406cb63e4cc4c2a
penGLRenderer.cpp
bc341912b124ea52d1a383bb8cc0a12d0671eaa2 23-Sep-2014 Chris Craik <ccraik@google.com> Reject transparent draws more conservatively

bug:17600162

Transparent draws are not safe to reject for all xfermodes other than
clear. Now, to be safe, only perform the rejection for SrcOver draws
since other modes are fairly uncommon.

We could specifically determine whether the xfermode could change the
output given a transparent input, but there's little to be gained from
the additional complexity.

Change-Id: Ia699ac4bdc4da3353955840b53f1922d3cb1d85d
enderer.h
9e7c91919159050f397e28ba8df04d0b42b96e01 20-Sep-2014 Chris Craik <ccraik@google.com> Merge "Account for alpha in hasShadow()" into lmp-dev
9fa364dc72613f4301b0783f0547fe6b01abac39 20-Sep-2014 Chris Craik <ccraik@google.com> Account for alpha in hasShadow()

bug:17587220
Change-Id: Ic7f2dea95302b713dc93edb4a0193a7be77fb2eb
enderProperties.h
6cc6219f6fc5bf5a0e1ac22f2cb752fefddec02c 19-Sep-2014 John Reck <jreck@google.com> Merge "glFinish to flush deletes" into lmp-dev
4ced2620b730a7c7140f73da503946f9827442bc 19-Sep-2014 John Reck <jreck@google.com> glFinish to flush deletes

Bug: 17479800
Change-Id: I4d4a3eeda510e037f806052025184f3cde18c847
aches.cpp
651486d0186755f30f08d17126a61bf7127cba96 19-Sep-2014 Chris Craik <ccraik@google.com> Merge "Fix garbage showing up beneath dialogs" into lmp-dev
284b24358410cb0200e525a5ba36994090c83f20 19-Sep-2014 Chris Craik <ccraik@google.com> Fix garbage showing up beneath dialogs

bug:17463894

Fixes the setViewport method to immediately affect the return values
of getViewportWidth/Height methods.

Also works around tiling extension issues observed on first frame
after window resize by disabling tiling for that frame.

Change-Id: Ie172d572d20d74a1be9cc58ad389af2cffa0e4b6
penGLRenderer.cpp
penGLRenderer.h
tatefulBaseRenderer.cpp
enderthread/CanvasContext.cpp
f16b4940e6449752fe425f23d508325775ffdb4e 18-Sep-2014 John Reck <jreck@google.com> Merge "Special case EGL_BAD_SURFACE" into lmp-dev
2cdbc7d2283aae3d77b12c8fdbba8ca4bd3db5ea 18-Sep-2014 John Reck <jreck@google.com> Special case EGL_BAD_SURFACE

Bug: 17516789

Change-Id: I3dcb10360c2aef6326f7dbbff6815866d4c143b6
enderthread/CanvasContext.cpp
enderthread/EglManager.cpp
enderthread/EglManager.h
5083943ff85c7452b166e6c2b044e3d9dae9d017 17-Sep-2014 John Reck <jreck@google.com> Merge "Change default fbo cache size to 0" into lmp-dev
e9cd97ee88e6628897e878889d3920857e9c118a 17-Sep-2014 John Reck <jreck@google.com> Change default fbo cache size to 0

Bug: 17479800

FBO cache is very expensive and no longer necessary, disable
it by just setting size to 0.

Change-Id: I664616f262c8339919e1d20baaafa5de2b628d7e
roperties.h
73821c8d2bd453de6bf3f516e1f1cdb9a132f4a7 17-Sep-2014 Chris Craik <ccraik@google.com> Handle premultiplication correctly for ColorMatrixColorFilters

bug:17405627

Previously, the input content to the color matrix computation was left
premultiplied. Since the color matrix could reduce the alpha channel,
the alpha was re-multiplied, but this was incomplete, and incorrect.

Instead, apply the color matrix in unpremultiplied space.

Change-Id: I87b8e03d2e228e6ded81f7bbfea952605d7a095c
rogramCache.cpp
enderer.h
072707dfad1da6f49f4d3ce58ca104f6c46a7266 15-Sep-2014 Jorim Jaggi <jjaggi@google.com> Use RenderThread for navigation bar ripples

Bug: 17506181
Change-Id: Icf3b80f8c4bc29fe85313381d4019dda3ef85ea9
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
025207b3cfbb0bbbaa8c1b8f7e14941fc38160aa 15-Sep-2014 Chris Craik <ccraik@google.com> Merge "Force isolation of clip and matrix within layer" into lmp-dev
4ace7305608442ab35ea9aa65a4220df152c187f 15-Sep-2014 Chris Craik <ccraik@google.com> Force isolation of clip and matrix within layer

bug:17379260

Unclipped save layers need to isolate their clips and matrices
so that the save time readout of background content matches clip and
position with the restore/compose step.

Change-Id: I2de474cda76e960d080852f1716d6ddfa8a512d4
isplayListRenderer.cpp
penGLRenderer.cpp
2f259016321d672373ed8c0880ffe6a24e5184a6 13-Sep-2014 Chris Craik <ccraik@google.com> Merge "Correctly initialize animator asynchronousity" into lmp-dev
572d9acd598517c20c7bf2feb189357e925fa879 13-Sep-2014 Chris Craik <ccraik@google.com> Correctly initialize animator asynchronousity

bug:17483792
Change-Id: Icb6b6e6318d4c79ee94228806cb60b275424b9c9
nimator.cpp
692737be4fdc5c4e6f209a1c1816858e85024718 13-Sep-2014 ztenghui <ztenghui@google.com> Merge "Update the shadow strength" into lmp-dev
f7d76dffd86398a787f0d8bd092a571c019daf04 13-Sep-2014 ztenghui <ztenghui@google.com> Update the shadow strength

b/17486691

Change-Id: I8e8f0b64e757772c18f038f6b329ef91a4e155a5
hadowTessellator.cpp
1aec711b2e7c2e43fdc2069be229cfd3c9ddba16 12-Sep-2014 Chris Craik <ccraik@google.com> Merge "Disable layer leak tracking" into lmp-dev
21029ef131d6a98862ae6faf3305bee2872e9c5f 12-Sep-2014 Chris Craik <ccraik@google.com> Disable layer leak tracking

bug:17208461
Change-Id: Ibbdf3ec79c4fd19e1935a559d425d074b611e162
enderState.cpp
enderState.h
4340c260c002f0cf7bc41571673e57913b5df19f 12-Sep-2014 Chris Craik <ccraik@google.com> Snap outline clipping to integer coordinates correctly

bug:17403105
Change-Id: I65b5d7103aac58ba6feb4b021c276c67e9341716
penGLRenderer.cpp
24a95a10db926e9608c00e522293c372bf566d38 11-Sep-2014 ztenghui <ztenghui@google.com> Merge "Finer tessellation can draw better looking shadows for circles." into lmp-dev
5be52c11d98ba85c559634bc9be96368332ac78c 11-Sep-2014 Chris Craik <ccraik@google.com> Merge "Update HWUI paint filter to understand new location of skia bitmap filter preference" into lmp-dev
591be6c7af512a7dbae5a7f0cc9890b82af74e58 11-Sep-2014 Chris Craik <ccraik@google.com> Update HWUI paint filter to understand new location of skia bitmap filter preference

bug:17455286
Change-Id: I3b0e04833f0c2699a1322fdd7e98c155841c0d93
penGLRenderer.cpp
25e5a02d1cbbaa8352be314c45f9cf3599a8f30e 11-Sep-2014 ztenghui <ztenghui@google.com> Finer tessellation can draw better looking shadows for circles.

b/14976551

Change-Id: I4b9e320b025dbee37cd1893881ddbaad62e3a6e2
essellationCache.cpp
ca517b97e06dc76c07c031a6ee6e3aabd530495f 11-Sep-2014 ztenghui <ztenghui@google.com> Merge "Re-triangulate the spot shadow." into lmp-dev
512e643ce83b1d48ad9630a3622276f795cf4fb2 10-Sep-2014 ztenghui <ztenghui@google.com> Re-triangulate the spot shadow.

Fix the valid umbra detection.

This looks better b/c every vertex will have one ray shooting at it, such that
we don't miss the corner.

This performs better too, due to the polygon intersection is removed and less ray
intersection. 2x performance for rect and circle for spot shadow in test app.

b/17288227
b/15598793
b/16712006

Change-Id: I4a5ee397b9e192e93c8e35e6260b499e3e38a6f4
mbientShadow.cpp
hadowTessellator.cpp
hadowTessellator.h
potShadow.cpp
potShadow.h
ertexBuffer.h
bfd1cd620991ac2fa9202fdce6c00ec47d071935 10-Sep-2014 Chris Craik <ccraik@google.com> Additional layer logging

bug:17208461

Track layer's last known state.

Change-Id: Ic1799191f5839a1d6cc56f598f2ac2671dc27a6f
aches.cpp
ayer.cpp
ayer.h
ayerCache.cpp
enderState.cpp
b2201151f367a432650a5ea2ba7b2b22fccf1f20 09-Sep-2014 Chris Craik <ccraik@google.com> Merge "hwui: Caches: use mBoundTextures only for GL_TEXTURE_2D" into lmp-dev
70735bd5ddd6ba3063d5537f510324cb2515aba6 29-Aug-2014 Fred Fettinger <fred.fettinger@motorola.com> hwui: Caches: use mBoundTextures only for GL_TEXTURE_2D

bug:17441218

GLConsumer uses glBindTexture() directly instead of going through
Caches::bindTexture(). This can cause libhwui to draw with the wrong
texture bound in the following case which involves 2 TextureViews:

Frame 1:
GLConsumer::updateTexImage() calls glBindTexture(GL_TEXTURE_EXTERNAL_OES, 1)
HWUI renders TextureView A:
calls Caches::bindTexture(GL_TEXTURE_EXTERNAL_OES, 1) and draws

Frame 2:
GLConsumer::updateTexImage() calls glBindTexture(GL_TEXTURE_EXTERNAL_OES, 1)
GLConsumer::updateTexImage() calls glBindTexture(GL_TEXTURE_EXTERNAL_OES, 2)
HWUI renders TextureView A:
calls Caches::bindTexture(GL_TEXTURE_EXTERNAL_OES, 1) and draws
HWUI renders TextureView B:
calls Caches::bindTexture(GL_TEXTURE_EXTERNAL_OES, 2) and draws

In this case, HWUI will incorrectly draw TextureView A using texture 2 on
frame 2, because mBoundTextures[0]=1, even though the texture currently
bound to GL_TEXTURE_EXTERNAL_OES is 2.

Since GLConsumer is always used with a target of GL_TEXTURE_EXTERNAL_OES,
work around this problem by having mBoundTextures[] store only the
textures bound to the target GL_TEXTURE_2D. This is the common case
where the extra performance is needed. Since it's legal to have
different textures bound to GL_TEXTURE_2D and GL_TEXTURE_EXTERNAL_OES
on one texture unit, Caches::bindTexture() does not need to clear
mBoundTextures[mTextureUnit] when target != GL_TEXTURE_2D.

Change-Id: I8bc54ab8adcfacad7f3ed17a31236dc7a86c967a
Signed-off-by: Fred Fettinger <fred.fettinger@motorola.com>
aches.cpp
aches.h
69fb8a23990fd8948be6f0045c2b0b988b6ca6d6 09-Sep-2014 Chris Craik <ccraik@google.com> Merge "Fix tessellation bounds computation" into lmp-dev
21bcfc4ff8642771bf42b264e1524ef47b00ae22 09-Sep-2014 Chris Craik <ccraik@google.com> Fix tessellation bounds computation

bug:17401066

Now correctly accounts for scale, both in hairline case (where scale
needs to be accounted for), and in standard case (where scale
shouldn't be applied, since bounds are in local space)

Change-Id: I597a20834dce42ddb741b46e4c1a4f3169a48ccc
athTessellator.cpp
8a226d24b8b2fde4c855d0051cb7bfc5b5813c36 09-Sep-2014 Chris Craik <ccraik@google.com> Don't track TextureLayer lifecycles in RenderState

bug:17208461

They are destroyed via finalizer-enqueued destroy method, so it's not
valid to check that they've been destroyed at gl context destruction
time.

Change-Id: I670f69825547facd5f31d44acb406418881fee00
ayer.cpp
ayer.h
ayerCache.cpp
ayerRenderer.cpp
5f5df97df96895c92f0d067c90d527aab2d7f1e3 08-Sep-2014 Chris Craik <ccraik@google.com> Merge "Fix save count offsetting within DisplayList chunks" into lmp-dev
c166b6c4fc3e1158ca08cfed24639409161055cf 06-Sep-2014 Chris Craik <ccraik@google.com> Fix save count offsetting within DisplayList chunks

bug:17388541
Change-Id: I7cb1139b8cd30f72ae7c6de2074c3c5865b8f309
enderNode.cpp
3207ffe12045ed6d8a2ea04993738cf71320183d 06-Sep-2014 John Reck <jreck@google.com> Merge "Disable RT-anim for AnimatorSet" into lmp-dev
f5945a0c8bb868f978d9d0d22043a8b44464a86e 06-Sep-2014 John Reck <jreck@google.com> Disable RT-anim for AnimatorSet

Bug: 17317184

Unfortunately this will disable *all* RT animations in a scene,
but we don't have more selective targetting currently

Change-Id: I57e1c0ae43957f45229473bdcdaf34c05825fab7
nimator.h
nimatorManager.cpp
4e849178ef35687d0ce679487d8cfb6c5521fe3b 06-Sep-2014 John Reck <jreck@google.com> Merge "Fix race condition" into lmp-dev
83eb430270a8de2e231639d6498f6451b9958fc6 06-Sep-2014 Chris Craik <ccraik@google.com> Merge "Add shadow/clipping properties to HierarchyViewer" into lmp-dev
ec845a215e343cdb3b2e4c7b6aff7b24beb0236b 06-Sep-2014 John Reck <jreck@google.com> Fix race condition

Bug: 17372309

AnimationContext::startFrame() happens both with and without
the UI thread lock. Pass the TraversalMode into it so
that ThreadedRenderer's subclass can correctly decide
when it is safe to push over mPendingAnimatingRenderNodes, as doing
so outside of the lock is Very Bad.

Change-Id: Ife5dd3a2b46b0a207cd9234c159a674afdbf5efd
nimationContext.cpp
nimationContext.h
enderthread/CanvasContext.cpp
5c75c52e048a01c23b18f4e31ae624b5fe43e23c 05-Sep-2014 Chris Craik <ccraik@google.com> Add shadow/clipping properties to HierarchyViewer

bug:15777980

Change-Id: Ic3d24326f585d2d2b9889486f0ed322eb98b5af8
enderProperties.h
599e254ea33231b1809466ae765dbee53dc4685c 06-Sep-2014 Chris Craik <ccraik@google.com> Additional layer logging, and added mutex

bug:17208461
Change-Id: I006d432a3b633235dde0b81ad2bf28b835b5335f
enderState.cpp
enderState.h
6dad93eff6cb62aded9d07bc3381cf1cbea468b9 05-Sep-2014 John Reck <jreck@google.com> Merge "Yet more layer tracking logging" into lmp-dev
443a714fa7c0dd07fee3527cc5bc3d3ca1fb7d44 05-Sep-2014 John Reck <jreck@google.com> Yet more layer tracking logging

Bug: 17208461

Change-Id: I55e7d0921eb565867e966d68b798b7b92c391b55
ayer.cpp
ayer.h
penGLRenderer.cpp
penGLRenderer.h
enderNode.cpp
enderNode.h
enderState.cpp
enderState.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderThread.h
2d3f9033f8803d471720be60228d9894dd385488 04-Sep-2014 Chris Craik <ccraik@google.com> Merge "Prioritize reveal clipping over Outline clipping" into lmp-dev
e83cbd451868a734bfac07ccd680d5617080b579 04-Sep-2014 Chris Craik <ccraik@google.com> Prioritize reveal clipping over Outline clipping

bug:15780987
bug:17350602

Also update docs around clipping nesting behavior,
and some Z ordering behavior.

Change-Id: Iaa204350a0adfdcbd8c4b821fb4a9c0ae22f2613
enderNode.cpp
napshot.cpp
napshot.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
e23b8dd58fba275802d48fccb43170845aac0382 04-Sep-2014 Derek Sollenberger <djsollen@google.com> Merge "Remove invalid premul step from HWUI's matrix color filter." into lmp-dev
e2478d45ccbe5b6abb360ac9d44771b5f4a50bde 04-Sep-2014 John Reck <jreck@google.com> Fix some wrong-thread issues around animator management

Bug: 17372309

Fixes a case where UI thread and RT thread both used the same method
which wasn't safe for either of them.

Adds additional assertions & logging in unusual circumstances to
try and track down where the issue is occuring from.

Change-Id: I93d31a6fd0c5927259b67bdf96a475944226eee6
nimationContext.cpp
nimationContext.h
nimator.cpp
nimator.h
nimatorManager.cpp
nimatorManager.h
enderthread/CanvasContext.cpp
17035b0211a3c9d45ea46a99217a6acbe76e8fbe 03-Sep-2014 John Reck <jreck@google.com> Have destroy call freePrefetchedLayers

Bug: 17208461

There's a potential race condition between HardwareRenderer.destroy()
being called (which calls destroyCanvasAndSurface()) and the renderer
being finalized (which is what calls freePrefetchedLayers), during which
time it's possible we get a TRIM_MEMORY_COMPLETE and destroy the EGL
context.

Fix this race condition by moving stopDrawing() and freePrefetchedLayers()
into destroyCanvasAndSurface() where they should have been in the first
place.

Also, if we hit the assertion failure, dump the current state of
Caches to try and provide more context for the failure.

Change-Id: Ife0ba3562041e8b08e87e3e13640472b3004eed6
aches.cpp
aches.h
ayerCache.cpp
ayerCache.h
enderState.cpp
enderState.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
3d3f5f8c688fbaaf251cfde0ed04507279d9cadb 03-Sep-2014 John Reck <jreck@google.com> Merge "Implement TODO" into lmp-dev
1661715d4066a557ab0877271d62762579a38fa9 03-Sep-2014 John Reck <jreck@google.com> Implement TODO

Change-Id: I551ad0dab6356baa4c7787718b54d5b7337a3f26
enderthread/CanvasContext.cpp
0fd79c955b3745648d5f326bc784ced1e1188935 02-Sep-2014 Chris Craik <ccraik@google.com> Merge "Fix precision issues for roundrect clipping" into lmp-dev
26131368ecc2e16dfb4965b9165632ee3ca4f1d9 02-Sep-2014 ztenghui <ztenghui@google.com> Fix the (0,0) vector case for extra vertices computation

TODO: Figure out why we have collided vertices from input polygon.

b/17340792

Change-Id: I6636ff957ef17514bd11cf290ccc0a2c302aca0b
mbientShadow.cpp
68a73e8700c3bb30395e4ebf1b6e5a9b81699a5a 30-Aug-2014 Chris Craik <ccraik@google.com> Fix precision issues for roundrect clipping

bug:16984008
Change-Id: I941232d569293717f6bcd249d9e01f72a7409d2e
rogramCache.cpp
cbf4c08796ee76a513b6bc30e8756f78d936cdc6 29-Aug-2014 ztenghui <ztenghui@google.com> Merge "Ambient shadow tessellation improvement." into lmp-dev
d5e8ade498b41b42874273cbfa375aed7b4d6a08 14-Aug-2014 ztenghui <ztenghui@google.com> Ambient shadow tessellation improvement.

Using the vertices, instead of ray casting for the triangulation.

This request a dynamic index buffer associated with vertex buffer,
so we update the VertexBuffer to support it.

The ambient shadow could be 3x-6x times faster for circle and rect now.

b/16712006
b/14257173

Change-Id: I2f22a8fe19bc59acee5c18e4a3a395acd5042a66
mbientShadow.cpp
mbientShadow.h
penGLRenderer.cpp
ector.h
ertexBuffer.h
7da70ed6a59b70bb48ab3f48a78b5cc29e1c8af7 29-Aug-2014 John Reck <jreck@google.com> Merge "Listener callbacks ordering fixups" into lmp-dev
4d2c47206a8e1706e5f89ef73c0e50e7321bf862 29-Aug-2014 John Reck <jreck@google.com> Listener callbacks ordering fixups

Bug: 17228458
Bug: 17317816

Ensure that onStart is called prior to onCancel/onFinished if those
happen prior to the UI-thread handled start delay.

Ensure that onFinished is called if cancel/end is called

Change-Id: I23c16ea1c4f925d59d41ec5281d62dfc0c38595b
nimator.cpp
dff9957cc22a1174a4cf91de6609c50934d29434 29-Aug-2014 John Reck <jreck@google.com> Free prefetched layers on TRIM_MEMORY

Bug: 17208461

Change-Id: I831c10d29d5920274b90e11a67d6cd106972a058
enderthread/CanvasContext.cpp
80068b735eb4ef26f0d9dbcb0fbc5e4982c5c215 29-Aug-2014 John Reck <jreck@google.com> Merge "Track buildLayer calls, destroy if unused" into lmp-dev
998a6d81896df8b662cc10ddeb35087b78b38d72 29-Aug-2014 John Reck <jreck@google.com> Track buildLayer calls, destroy if unused

Bug: 17208461

Change-Id: Ibdb104a493285d77a6891c5e74e38a52c7014da9
enderNode.cpp
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/EglManager.cpp
bf939b2671ba0618e0cdca3e6c75d59f35a83bba 28-Aug-2014 Chris Craik <ccraik@google.com> Merge "Update transform isolation to handle command chunks" into lmp-dev
c7e2993628a6c87500cb7e5369e6a52eacb3280c 28-Aug-2014 John Reck <jreck@google.com> Fix log line

Change-Id: I290491f559281c7b3d1d132495ea2fffcfaf4725
nimationContext.cpp
d0cd9db31639b246587fe494ec15d32d9fdb3dc7 28-Aug-2014 John Reck <jreck@google.com> Actually end animators on tree destruction

Bug: 17313962

Change-Id: I66b86d50b415f9aa33da23297f22e2cf7f96f565
nimationContext.cpp
nimationContext.h
nimatorManager.cpp
4c5a27b5f667ebc7cb2b188655820ad3fddedb52 28-Aug-2014 John Reck <jreck@google.com> Merge "Animator stuff" into lmp-dev
119907cd2575c56b1ebf66348b52e67aaf6a88d8 14-Aug-2014 John Reck <jreck@google.com> Animator stuff

Bug: 17228458

Change-Id: Id884a429a512f9cd2be0ed16dbd0f10e92b4440d
ndroid.mk
nimationContext.cpp
nimationContext.h
nimator.cpp
nimator.h
nimatorManager.cpp
nimatorManager.h
ContextFactory.h
enderNode.cpp
enderNode.h
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/TimeLord.cpp
enderthread/TimeLord.h
c3e75f9d54b3629b3fd27afafa2e07bd07dad9b3 28-Aug-2014 Chris Craik <ccraik@google.com> Update transform isolation to handle command chunks

bug:15570351

Prevent drawing transformations on a ViewGroup's canvas from directly
affecting the transformation of the children through the renderer,
since it's already baked into mTransformFromParent at record time.

Change-Id: I6310a2260dfe4def0bde1fd2c5b93791a645d586
isplayListOp.h
enderNode.cpp
enderNode.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
1d4774233304c484673e2af2c1de2ab41021c979 27-Aug-2014 Chris Craik <ccraik@google.com> Crash instead of leaking layers/textures between GL contexts

bug:17208461
Change-Id: I4d58f301cf0f5e8145e808a5d6ade4de7801970b
ayer.cpp
enderState.cpp
enderState.h
enderthread/EglManager.cpp
bed17d21b0b7c7aa8738198271d8c406440b259a 26-Aug-2014 ztenghui <ztenghui@google.com> Merge "Correctly detect the wrong Z value for the light" into lmp-dev
3bd3fa1f1d437e22aee35381a559dcee15a437dd 25-Aug-2014 ztenghui <ztenghui@google.com> Correctly detect the wrong Z value for the light

b/17221975

Change-Id: I2b46da95ad12ca5260d7fe9514a75558b6b6393b
potShadow.cpp
tils/MathUtils.h
1698297daf8068bc9e6971d43744d48f1672bab2 26-Aug-2014 John Reck <jreck@google.com> Merge "DO NOT MERGE Copy shaders" into lmp-dev
8afd0f245cc0c4a0366f39f41b5f78e47ee83be3 22-Aug-2014 Chris Craik <ccraik@google.com> Create z reordering boundaries around dispatchDraw

bug:16012254

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
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
enderNode.cpp
enderNode.h
c1469f39b571f5660346fc837ac30b19d7651a43 25-Aug-2014 John Reck <jreck@google.com> DO NOT MERGE Copy shaders

Bug: 16733996

Change-Id: I84afc1b24a23dd6ddf5ab48fb2bfcbe779f8d3e3
isplayListRenderer.h
190ead730fc3169a7b355f23d4cd3d8de8ad8fc3 22-Aug-2014 ztenghui <ztenghui@google.com> Merge "Improve the spot shadow computation." into lmp-dev
c50a03d78aaedd0003377e98710e7038bda330e9 21-Aug-2014 ztenghui <ztenghui@google.com> Improve the spot shadow computation.

Get rid of compuation of the intersection for penumbra and convex hull for umbra.
Use simple circle / normal to compute the penumbra and simple intersection for umbra.

The new way could be 2x to 4x faster from rectangle to round shape.
And this part is roughly half of the shadow computation, or 2/3 of spot shadow
computation.

This improve the spot shadow spikeness too.

b/16712006
b/14976551

Change-Id: I02911784868731369efa73f76fc915bc08248600
nterpolator.cpp
hadowTessellator.cpp
hadowTessellator.h
potShadow.cpp
potShadow.h
essellationCache.cpp
tils/MathUtils.h
759f780af0b838316556de69049fb892f7b11ed5 21-Aug-2014 Chris Craik <ccraik@google.com> Merge "Enable scissor for rounded outline clips" into lmp-dev
79d26c72aa6f898125df2386054f6a293da4122a 21-Aug-2014 Chris Craik <ccraik@google.com> Enable scissor for rounded outline clips

bug:17164074

Change-Id: I83ca428f4d7651c6774ab81ac390477fb90c5d38
tatefulBaseRenderer.cpp
7d3734491516fdda47059f2a36c1de9fa39dd8a9 21-Aug-2014 John Reck <jreck@google.com> Merge "Don't run animators in buildLayer" into lmp-dev
88180d269e5356db11e84a53755e470f430eceec 21-Aug-2014 Chris Craik <ccraik@google.com> Merge "Fix layer shadow transform crash" into lmp-dev
9eb9f6f8cbbbd87d45da8071aa54cb066a797723 21-Aug-2014 John Reck <jreck@google.com> Don't run animators in buildLayer

Bug: 17172689

Change-Id: Ib47d589c002543327fa336718440f9f8c95524e0
enderNode.cpp
reeInfo.h
enderthread/CanvasContext.cpp
c71bfcaa182e3d4fd9874362d3b4781fda934a21 21-Aug-2014 Chris Craik <ccraik@google.com> Fix layer shadow transform crash

bug:17180252

Change-Id: Ia648b8c98a217a3a4973917bf255d1397802cbbe
amageAccumulator.cpp
amageAccumulator.h
enderNode.cpp
79c9f9168919b0fbb26f8ecd5704875dbc6a539b 18-Aug-2014 Derek Sollenberger <djsollen@google.com> Remove invalid premul step from HWUI's matrix color filter.

bug: 16186699
Change-Id: Ia0b828e76ce4831ee9e3b4f54c697e6017f1604d
rogramCache.cpp
83f75c88a0f0dce2e7d92348d5a498caf32cbdbd 20-Aug-2014 Chris Craik <ccraik@google.com> Merge "Early reject drawText calls that will not draw" into lmp-dev
947eabf42d835d0dfb0daa2fe6d869139c7000d6 19-Aug-2014 Chris Craik <ccraik@google.com> Early reject drawText calls that will not draw

bug:17114102

Prevents high contrast text from drawing invisible text.

Also fixes stroked text bounds calculation.

Change-Id: Iaeff51ead8b7b8ef2a1a0ca8b89598564e0d443f
isplayListOp.h
isplayListRenderer.cpp
penGLRenderer.cpp
enderer.h
3e8249568cc428296ac76c7ddce3f0382d40fe5b 20-Aug-2014 John Reck <jreck@google.com> Implement full View.buildLayer

Bug: 17152292

Change-Id: Ia3cc2aadf72fe14517f50762fc634794df51ad5a
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
2262abbd16e4d6c7c2e40f7d81b02dfe7db846e8 19-Aug-2014 Chris Craik <ccraik@google.com> Respect round rect clip when determining op opaqueness

bug:17115570
Change-Id: I30184b4678d333b5d222af8b61daa07a5e865cab
isplayListOp.h
40f67da884e60970dc5b0259aa463941de4d2788 16-Aug-2014 Chris Craik <ccraik@google.com> Merge "Fix glyph positions underflow issue" into lmp-dev
39c5e7cbdfdc0c74eb5746467d9975dbaba3da61 16-Aug-2014 Chris Craik <ccraik@google.com> Fix glyph positions underflow issue

bug:16450675

Avoid using unsigned ints in math with negative numbers

Change-Id: Icdfb72451f03380dbf78b3703793869b2cd4e751
ont/Font.cpp
69e5adffb19135d51bde8e458f4907d7265f3e23 14-Aug-2014 Chris Craik <ccraik@google.com> Define shadow casting behavior within layers

bug:15860114

Savelayers and HW layers both now support shadow casting.

For save layers, the light source should always be correct, for HW
layers, the light source position is set when the layer is created,
and updated when it is resized.

Change-Id: Ie85567dd43c2bb0a0b08fd0bd4db41efa793ac2b
nimator.cpp
amageAccumulator.cpp
amageAccumulator.h
isplayListRenderer.cpp
ayer.cpp
ayer.h
penGLRenderer.cpp
penGLRenderer.h
enderNode.cpp
enderNode.h
napshot.cpp
napshot.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
essellationCache.cpp
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/RenderProxy.cpp
enderthread/RenderThread.cpp
21be43e142a6fcb3283d7b2da14eb39b690cf643 14-Aug-2014 John Reck <jreck@google.com> Fix hwuitask & RT priorities

Bug: 15993695

Change-Id: Ib6f07237cb834e8d10f3074f8fb206d27f91859a
enderthread/RenderThread.cpp
hread/TaskManager.cpp
hread/TaskManager.h
14a4e35208b7e97bbfa38f36130827c86bfafc2b 13-Aug-2014 ztenghui <ztenghui@google.com> Bring back the shadow strength tweak

bug:16712006

Change-Id: Ifc0ecca139d58140b45d7d227536a53069e1d480
aches.cpp
aches.h
penGLRenderer.cpp
91a8c7c62913c2597e3bf5a6d59d2ed5fc7ba4e0 12-Aug-2014 Chris Craik <ccraik@google.com> Switch to cos interpolation of shadow alpha

bug:16852257

Updates default shadow opacities to compensate.

Also, update variable/constant naming related to vertex alpha.

Change-Id: I9055b4ac3c9ac305ca9d515f21b52d6aa6dc9c5c
mbientShadow.cpp
penGLRenderer.cpp
penGLRenderer.h
rogram.h
rogramCache.cpp
potShadow.cpp
c7d62b777b4da14e45e010817e4dc9fbf316da7e 12-Aug-2014 Chris Craik <ccraik@google.com> Merge "Rework shadow interpolation" into lmp-dev
bf75945e7a1ae7c1000682716643c942c1e19ba6 12-Aug-2014 Chris Craik <ccraik@google.com> Rework shadow interpolation

bug:16852257

Use pow(alpha, 1.5) to avoid harsh edges on shadow alpha ramps.

Also adjusts shadow constants to compensate.

Change-Id: I5869956d7d292db2a8e496bc320084b6d64c3fb7
penGLRenderer.cpp
penGLRenderer.h
rogram.h
rogramCache.cpp
b3cca876c2e11b865cb4f83abe2c48a60b95af5b 09-Aug-2014 Chris Craik <ccraik@google.com> Fix ripples projecting to scrolled view

bug:16873774

1) Fix projectionReceiveIndex, which could in some cases point at
translate/restore ops.

2) Use background translateX / translateY for projected RenderNodes.
This makes them match background position, and thus properly account
for scroll.

Change-Id: Idbd5700858fd67c5abea0270a1012952fe09ac22
isplayListRenderer.cpp
isplayListRenderer.h
enderNode.cpp
a7c2ea20c43ab797bef5801530687e22e83def8f 08-Aug-2014 John Reck <jreck@google.com> Fix damage for layers for projection receivers

Bug: 16880228

Change-Id: I59ab760a21f49cc2cac0d8936b173cff292e6114
ndroid.mk
nimator.cpp
nimator.h
nimatorManager.cpp
nimatorManager.h
amageAccumulator.cpp
amageAccumulator.h
penGLRenderer.cpp
enderNode.cpp
enderNode.h
7466986d2055eb8711f36a85ac539b1572ffe805 08-Aug-2014 Chris Craik <ccraik@google.com> Fix leak of SkPathRefs

bug:15939479

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

Change-Id: I2581e124600a93a399ef3251f456c02ab52839a8
isplayList.h
isplayListOp.h
enderNode.cpp
74cf7e6a25c6d7b331c231b7bc2512044f9d2950 07-Aug-2014 Chris Craik <ccraik@google.com> Cap scales used for tessellation with minimum and maximum

bug:15615144
Change-Id: I3e833864af3a7b34e444bd13db34b6c90496a8b6
penGLRenderer.cpp
athTessellator.cpp
enderProperties.h
tils/MathUtils.h
dc0349bebafb486b044655f3c146450b527a5123 07-Aug-2014 John Reck <jreck@google.com> Add missing null check

Bug: 16352267

Change-Id: Ib60baa6d22ec02ba623a297660e2e3ecc7557d0f
enderNode.cpp
796475006f5d670e8383a2050f11719522437a43 06-Aug-2014 Chris Craik <ccraik@google.com> Move bitmap transforms out of bitmap ops

bug:11359533

This allows us to deduplicate a lot between the two ops, and fixes the
shader coordinate space for the left,top argument drawBitmap to match
software.

Change-Id: I53da05af9ee74c74e9e70b4ab8053190ca220b16
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
enderer.h
cd3a22cfec09c065d0667dd044c0788912e82465 06-Aug-2014 John Reck <jreck@google.com> Don't start RenderThread to do trimMemory

Bug: 16825138

Change-Id: I35f57898b14bc8526c3d93a3003bca6f5a3d7fbe
enderthread/RenderProxy.cpp
3b52c03f5035b833d365215420739aa840ac5080 06-Aug-2014 John Reck <jreck@google.com> clamp & round alpha

Bug: 16842521

Change-Id: Ifd93f40b5751746835c9d56bb3c2b5ba700bdccc
enderProperties.h
tils/MathUtils.h
f99f320dc79e290a89d668243b6d77c3442b36ab 06-Aug-2014 Chris Craik <ccraik@google.com> Fix large radius RR clipping issue on certain devices

bug:16804363

Since dist can be in the 1000s of pixels, and length() may square it
in its current precision, scale the value down significantly first,
since final precision isn't very important.

Change-Id: Id20f7a49d6171355c8e242442c2b5083f746dca3
rogramCache.cpp
c79eabcd3c6306bb2ec75f9584b79e661f265127 05-Aug-2014 John Reck <jreck@google.com> roundOut layer damage

Bug: 16734708

Change-Id: I8815b7cf5f74be6deda98aaaf7cde85509def373
enderNode.cpp
5c09e8ad5ee8e67976066366527ee58792551953 04-Aug-2014 Chris Craik <ccraik@google.com> Merge "Remove scaling bucket hack" into lmp-dev
a736cd9d3587a120e5233d627cd8bf06353be107 04-Aug-2014 Chris Craik <ccraik@google.com> Remove scaling bucket hack

bug:16626221

Fixes glyph cache pressure and double scaling artifacts.

Change-Id: I06cde720db646531b45943283cb4ecb48af8ff5b
aches.cpp
aches.h
penGLRenderer.cpp
77b5cad3efedd20f2b7cc14d87ccce1b0261960a 31-Jul-2014 Chris Craik <ccraik@google.com> Add outline alpha

bug:16140822
bug:16566746

This allows background drawables to alter the opacity of a shadow
being cast with their own alpha values.

Change-Id: I49698cc7c1bf4b2b55ffe2f82899543ca62bc61c
utline.h
enderNode.cpp
af4d04cab6d48ae0d6a5e79bd30f679af87abaad 29-Jul-2014 Chris Craik <ccraik@google.com> Use RoundRect clipping for circle reveal animation

bug:16630975

Also, remove inverse clipping feature from reveal animator.

Change-Id: I770a4eb48cd123b0ca0f39d16a0f3eefd1be3653
nimator.cpp
nimator.h
isplayListOp.h
penGLRenderer.cpp
enderNode.cpp
enderProperties.h
evealClip.h
napshot.cpp
napshot.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
62d307c2402777d5e53b4590af5f32f8c55afd81 29-Jul-2014 Chris Craik <ccraik@google.com> Fix behavior of stencil clipping within clearLayerRegions

bug:16376960

The draw within clearLayerRegions should never be affected by the
current stencil clip, since it's just ensuring that the content of the
layer is cleared, and not doing real content drawing.

Also, add optional verbose GL event logging

Change-Id: I538b1bc631fc091340b76e12db6af0c219851b57
ebug.h
penGLRenderer.cpp
penGLRenderer.h
ect.h
tatefulBaseRenderer.cpp
591a824c5df7f3a90722424308861d8f101e217f 29-Jul-2014 John Reck <jreck@google.com> Merge "Add layer/texture creation tracing" into lmp-dev
ec4cefc152749f9805d3a971a4a395687b5a3831 29-Jul-2014 John Reck <jreck@google.com> Add layer/texture creation tracing

Change-Id: I0af6a36c97a9f5f35d28e0e36539ba8d8011ea7c
ayer.cpp
ayerRenderer.cpp
extureCache.cpp
590b8d3601a518f6c3e00a28e88add36142bde22 28-Jul-2014 Bo Liu <boliu@google.com> Merge "Add kModeSync" into lmp-dev
09d5cddf67b676018700bcc10a72242641cd7eec 24-Jul-2014 John Reck <jreck@google.com> Add kModeSync

Bug: 16526750

Change-Id: I4c087160e80432739321172fd57880846c8de6e0
isplayList.cpp
isplayList.h
isplayListRenderer.cpp
enderNode.cpp
00cae4153e0a52494650cacaca7ac43be715f611 25-Jul-2014 Chris Craik <ccraik@google.com> am b5c4634e: am 63582f46: Move ClipBounds to native

* commit 'b5c4634e36d5e515852f05722afeb8de053dec62':
Move ClipBounds to native
a753f4c6cb8558795e673df1896532cd148781e2 24-Jul-2014 Chris Craik <ccraik@google.com> Move ClipBounds to native

bug:15698973

Also simplifies RenderNode LTRB properties

Change-Id: I09263a697b71d325a46b57cd5250a2b165f251c8
enderNode.cpp
enderProperties.cpp
enderProperties.h
7780176cd4ded3e8d992a0d6deab28325b734af8 25-Jul-2014 Chris Craik <ccraik@google.com> am 9cba57c5: am b6163d6d: Revert "Dump RenderThread stack on unresponsive"

* commit '9cba57c58ebdfc375bcfced53483fe47e2b5a03e':
Revert "Dump RenderThread stack on unresponsive"
738ec3aace180018560998d1c2cdeb9ddde5fbfa 25-Jul-2014 Chris Craik <ccraik@google.com> Revert "Dump RenderThread stack on unresponsive"

bug:16563871
bug:16565900
bug:16555847
bug:16551643

This reverts commit ca66e06b9db6e6c921662886e4b7ddd02ac92280.

Change-Id: I23e8d4eaf828b1b298126ba5f36e4e8e7451706a
enderthread/DrawFrameTask.cpp
enderthread/RenderProxy.cpp
enderthread/RenderThread.cpp
enderthread/RenderThread.h
15a807bb9c98455a175f42389bdc59f46c0bc195 25-Jul-2014 John Reck <jreck@google.com> am 4afa4696: am c8f0e9b1: Fix ALL compile warnings

* commit '4afa469652dd6baa277b57cb584c08cccaf23c50':
Fix ALL compile warnings
e6be6fada5ce8ae4a852b8f699efd11646804a42 25-Jul-2014 Chris Craik <ccraik@google.com> am 27222820: am 1a146fc8: Compute layer bounds over subset of VertexBuffer verts

* commit '2722282067f472e30e0642b8374034ac01bca314':
Compute layer bounds over subset of VertexBuffer verts
19393ccd037af058184097f92fa84263ae242898 25-Jul-2014 Chris Craik <ccraik@google.com> am 394e8703: am 2d3c6c93: Connect shadow style attributes to renderer

* commit '394e8703222d59f0de4da82afce423ada12c346f':
Connect shadow style attributes to renderer
1aa5d2d7068147ff781cfe911a93f01593a68c79 24-Jul-2014 John Reck <jreck@google.com> Fix ALL compile warnings

All warnings/errors fixed for GCC & Clang

Change-Id: I2ece3a136a5ae97a9acc3069537ed986238b5fd3
mbientShadow.cpp
ayerRenderer.h
penGLRenderer.cpp
athTessellator.cpp
enderNode.cpp
hadowTessellator.cpp
potShadow.cpp
essellationCache.cpp
ector.h
ertex.h
tils/MathUtils.h
a728570a9a21a5fb0881b3e99bc2fdf3e168d5e3 24-Jul-2014 John Reck <jreck@google.com> am dc7f7045: am ca66e06b: Dump RenderThread stack on unresponsive

* commit 'dc7f7045f66733dbd3bf46934ddd6dec5b12a64a':
Dump RenderThread stack on unresponsive
9a89bc6524620c87c7a321433470c668e2b95d69 24-Jul-2014 Chris Craik <ccraik@google.com> Compute layer bounds over subset of VertexBuffer verts

bug:15538815
Change-Id: I0dbb54f656a6ae99a87c5734761107e1c2351b65
mbientShadow.cpp
potShadow.cpp
ertexBuffer.h
058fc640017c90120c599d378a4cbc55668b05b7 24-Jul-2014 Chris Craik <ccraik@google.com> Connect shadow style attributes to renderer

bug:15859361

Moves lighting info out of StatefulBaseRenderer, since it's not useful
at record time, and only used by OGLR.

Change-Id: I7ab065d02d9304afad1dc4c48597a7a621366f8e
penGLRenderer.cpp
penGLRenderer.h
enderer.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
73b7a4db4116774156fda3a510cc3afa14be9ffd 23-Jul-2014 John Reck <jreck@google.com> Dump RenderThread stack on unresponsive

Bug: 16408405

Change-Id: I4ba4836fd1451fb8ba77c34cdb843d3cb4217bb8
enderthread/DrawFrameTask.cpp
enderthread/RenderProxy.cpp
enderthread/RenderThread.cpp
enderthread/RenderThread.h
99bc64e72162a19a76253617a3df7897ee5e3b3f 23-Jul-2014 Chris Craik <ccraik@google.com> am 97d572ec: am f2ecf428: Merge "Build layer damage bounds for shadows" into lmp-dev

* commit '97d572ecb4804fc764a2bc99d0a0f6dddfe6fbd8':
Build layer damage bounds for shadows
35763b1c0b3b26231d8b12329e435b1395bf4be2 23-Jul-2014 Chris Craik <ccraik@google.com> am 1f9b1c74: am d93bb9e1: Merge "Make setter methods on Outline call setEmpty() based on params" into lmp-dev

* commit '1f9b1c74aad278704920e8181c31229dd05bb49b':
Make setter methods on Outline call setEmpty() based on params
0645128b80621edee70f8cab4afb208fe0c26bec 21-Jul-2014 Chris Craik <ccraik@google.com> Make setter methods on Outline call setEmpty() based on params

bug:16142564

Additionally, better define behavior around null outline providers:

A view with an empty outline, and setClipToOutline=true will not be
rendered, though one with a null outline provider
(and thus no outline) will be.

Change-Id: Ic9549841b107b2eb51b417c66058a0cd69dd89eb
utline.h
enderNode.cpp
2923df53825ded6fae4ce2af8bf65690db244394 22-Jul-2014 Chris Craik <ccraik@android.com> am 48242d80: am 50a2d633: Merge "[HWUI] Fix invisible views are still shown in popup window"

* commit '48242d801c8719f458a615b14b31760ae590006e':
[HWUI] Fix invisible views are still shown in popup window
50a2d6339c7a6ee121c4aa52afc4cc027913f3fc 22-Jul-2014 Chris Craik <ccraik@android.com> Merge "[HWUI] Fix invisible views are still shown in popup window"
5eac9e114e648a1f4ec010302f73f041ebdc65b4 23-Jul-2014 Chris Craik <ccraik@google.com> Merge "Build layer damage bounds for shadows" into lmp-dev
c93e45cf045f41aea95f856173e4043d988a5a5c 16-Jul-2014 Chris Craik <ccraik@google.com> Build layer damage bounds for shadows

bug:15538815

Change-Id: I703afeb7e31c28002bd1aff9ce448ec8cdc4e70d
mbientShadow.cpp
athTessellator.cpp
ect.h
potShadow.cpp
essellationCache.cpp
ertexBuffer.h
d3de42cae84fadfa1befd082a2cf1bf72f9ad82a 15-Jul-2014 John Reck <jreck@google.com> Add RT-enabled reveal animator

Bug: 16161431

Also re-writes RevealAnimator to avoid using any listeners internally,
removing the logic around shadowing the update listeners.

Change-Id: I6ed8126398eed971a87f20bccb7584c9acafbb6c
nimator.cpp
nimator.h
evealClip.h
f3e85b5bac693780c75935f0d27acf536458702d 18-Jul-2014 Chris Craik <ccraik@google.com> Merge "[HWUI]: fix residual line on FrameBuffer" into lmp-dev
33f5a59ac3e304970920dda824958870f85f76ef 02-Jul-2014 henry.uh_chen <henry.uh_chen@htc.com> [HWUI]: fix residual line on FrameBuffer

Symptom: If app applies animation to enlarge a bitmap, there will be an residual
line on the screen

Root Cause: On platform which has Tile Rendering implementation (ex. Qualcomm
CPU), startTiling() call will restrict the framebuffer region which
GPU can affect. So the expansion of clear region by 1 will not take
effect if startTiling region is not expanded.

Solution: Expand the startTiling region by 1, too.

Reproduce steps: Apply animation to enlarge (and then shrink) a bitmap icon.

Cherry-pick of 20adb6ce4d52b15472e7e5ee953e06cc349a827c from AOSP

Change-Id: I163b898b87b74d221dc4210b7fa657aa93c82c19
penGLRenderer.cpp
penGLRenderer.h
5d705ee6ad828334a8ca1402f8ac784d46382490 17-Jul-2014 Chris Craik <ccraik@google.com> Merge "Minor cleanups around color usage" into lmp-dev
98d608dba6a0b3c15fb08f1fa2c8b9d170124c7c 17-Jul-2014 Chris Craik <ccraik@google.com> Minor cleanups around color usage

Change-Id: I56733cbe933a58d5977c032f056abb35265ee252
isplayListOp.h
penGLRenderer.cpp
athCache.cpp
5cdb8f998c58a2226112b36e4c391866346e5e17 17-Jul-2014 John Reck <jreck@google.com> Fix logging

Bug: 16357287

Change-Id: Ic14e32c941e42ab1f1ed51ff8ed7185979e57a55
enderthread/CanvasContext.cpp
58ddced27752b5e47b0d42fec66f8dcfde070ec1 17-Jul-2014 Chris Craik <ccraik@google.com> Initializing variables - generally a good practice

Change-Id: Ib29a69f741eda869701493bb04e155d786e6e402
aches.cpp
889fc94ffa70633e510e812b9da86723f4eee384 17-Jul-2014 Chris Craik <ccraik@google.com> Merge "Add accessibility text contrast setting" into lmp-dev
cce47eb580d666ead1f6095d1e3b65233592bbaa 17-Jul-2014 Chris Craik <ccraik@google.com> Add accessibility text contrast setting

b/14624452

Adds a feature which draws all text (in the HW accelerated standard
path) in a high contrast mode. Text is drawn at full alpha, and either
white or black (depending on its original color) with a starkly
contrasted outline beneath it.

Change-Id: I943f624b6367de35367cced3b2a8298f2bc62377
isplayListRenderer.cpp
isplayListRenderer.h
514a8b88f7a57fd348dde193ee9ced0403deebd4 17-Jul-2014 John Reck <jreck@google.com> Merge "Fix root RenderNode damage calculation" into lmp-dev
0a97330b98dd633b58dcfff405d94476c89e867d 16-Jul-2014 John Reck <jreck@google.com> Fix root RenderNode damage calculation

Bug: 15888445

Change-Id: I281ec9271c9889673dcdfcb6d31e341a7b47b7de
enderNode.h
enderthread/CanvasContext.cpp
0d5ac954a111d19270d6e618ee051a8d6419e1a5 15-Jul-2014 Chris Craik <ccraik@google.com> Fix translated VertexBuffer layer damage calculation

b/15986851

Change-Id: Id6be412e693c5233326164723a0a96e3802d9426
penGLRenderer.cpp
544e524db6e4da526af1c897fe5314036ede5012 11-Jul-2014 Chris Craik <ccraik@google.com> Fix arc 360 degree sweep rendering

bug:15947035
Change-Id: I83715968cb90f4fcf39b25fb283d241d1a1284b5
isplayListRenderer.cpp
73842582fe1d1268fb9561a59885e1714948d737 11-Jul-2014 Chris Craik <ccraik@google.com> Abort on shader link/compile failure

b/16207378

Change-Id: I12debb0846214a08459ad25454653a003f034402
rogram.cpp
83f7ee8d12df1e8f031a0d23a00084f4fcd0d2f3 10-Jul-2014 ztenghui <ztenghui@google.com> Remove the unnessary log

We still need to investigate the underlying problem and fix it.

bug:16015708

Change-Id: If38b550d5af990d5aaa6633ee129a61e927d66c1
hadowTessellator.cpp
3a1bffa835f279628e50385af3c85789bc737f64 03-Jul-2014 henry.uh_chen <henry.uh_chen@htc.com> [HWUI] Fix invisible views are still shown in popup window

Symptom: Invisible views are still shown in popup window

Root Cause: glClear isn't called if there is no draw command

Solution: Even if there is no draw command, it still calls glClear
by startFrame().

Reproduce steps: App set one view in a popup window to invisible,
it will be still visible.

Change-Id: I36bc7b752434ad388fbb80ea63341ac778f48d35
penGLRenderer.cpp
20adb6ce4d52b15472e7e5ee953e06cc349a827c 02-Jul-2014 henry.uh_chen <henry.uh_chen@htc.com> [HWUI]: fix residual line on FrameBuffer

Symptom: If app applies animation to enlarge a bitmap, there will be an residual
line on the screen

Root Cause: On platform which has Tile Rendering implementation (ex. Qualcomm
CPU), startTiling() call will restrict the framebuffer region which
GPU can affect. So the expansion of clear region by 1 will not take
effect if startTiling region is not expanded.

Solution: Expand the startTiling region by 1, too.

Reproduce steps: Apply animation to enlarge (and then shrink) a bitmap icon.

Change-Id: I7b4a59e180daa29dbe909d9e11f4093ae1d7396f
penGLRenderer.cpp
penGLRenderer.h
345c3099ae37b8e8c5ad6e6769c2d4864e83adb7 08-Jul-2014 John Reck <jreck@google.com> Merge "Fix layers lifecycle issues"
dcba6725e8b9d3eba9ad7a01258d6aa974feafba 08-Jul-2014 John Reck <jreck@google.com> Fix layers lifecycle issues

Bug: 16118540

Fix an issue where we could have a reference to a Layer after
the GL context was destroyed

Change-Id: I7bfd909d735ca6b942ebe188fc10099422eb6d95
enderNode.cpp
enderNode.h
reeInfo.h
enderthread/CanvasContext.cpp
83601538918620e63f5a765d3eaab3a63494b454 08-Jul-2014 John Reck <jreck@google.com> Revert "Fix destroyHardwareResources"

This reverts commit bac48c4d0c6f71f67074a430cd365ea2e15924b8.

Change-Id: Iba8b729d5e91ca31976fc2bdf9c1dd5fdb19de9a
enderNode.cpp
7f87e8acbbe02cb28af35f9f6dde09e700d7c5d2 08-Jul-2014 Chris Craik <ccraik@google.com> Merge "Query outline on background size change"
0f632046ddb26740aff356ef21b374521912075b 08-Jul-2014 Chris Craik <ccraik@google.com> Query outline on background size change

Background bounds are updated out of sync with View bounds, so query
as they change.

Change-Id: I9c94df17bac42dfcd4bb93b31903b59ebb58204b
utline.h
59744b79ec302000802cd56d30a1bf70f0183c80 02-Jul-2014 Chris Craik <ccraik@google.com> Add hack for custom re-rasterization buckets

bug:14083128

Moves all of the font transform management into
OpenGLRenderer::findBestFontTransform(), and now simply passes down
final rasterization transforms into the FontRenderer.

Change-Id: Ie02752e6af863347b142367c7d628db5f9fc2998
aches.cpp
aches.h
isplayListOp.h
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
ont/Font.cpp
ont/Font.h
3c2b7fa8c584c5ed56f1bd6ad53f2e87f0a6eb44 07-Jul-2014 John Reck <jreck@google.com> Add missing requireGlContext

Change-Id: I7100e5e9986f502f66a23ecea07a6057522c43ac
enderthread/CanvasContext.cpp
32fb6307de7c3ee9399a39dc6734f1c82ffd1dcb 07-Jul-2014 John Reck <jreck@google.com> Fix VPA.cancel()

Bug: 15978905

Need to make sure we re-sync the UI properties on animator cancel, also
don't animate for 1 frame after cancel() is called

Change-Id: Ib660c0fb195b9f02bd795d03d43ea67bffebb499
nimator.cpp
1103b3255945d2eb2fa9c191e84e2270b343cca9 08-Jul-2014 Mike Reed <reed@google.com> SkBitmap::Config is deprecated, use SkColorType

Change-Id: Ic953741325607bf85598c097bb3ab648d4a08996
isplayListOp.h
ayerRenderer.cpp
penGLRenderer.cpp
extureCache.cpp
ec0c92548071801c81e02ca72b9864739e1c080c 08-Jul-2014 John Reck <jreck@google.com> Fix destroyHardwareResources

The UI thread needs to know whether or not the display list is
valid, so bring back View.destroyHardwareResources and instead
have the native side assert that View did the right thing

Change-Id: I4f8dee6e9c13ec7ab520becdc5cfe20e92a76f8f
enderNode.cpp
8d8af3c1b768d590754d657a7d1242dcb462454b 02-Jul-2014 John Reck <jreck@google.com> Fixes to startDelay

Bug: 15991758

Don't update the UI thread with final value until after
startDelay

Change-Id: Ie8bffb5a3ace353ec1d82943a4efcbd01c42c28f
nimator.cpp
nimator.h
nimatorManager.cpp
d907e5b1efeae51c302fd502f42a06bd16d6cae3 01-Jul-2014 John Reck <jreck@google.com> Merge "Fix onTrimMemory for HardwareRenderer"
f47a594f5250b1914c36423ee6b371f0b8db09d0 01-Jul-2014 John Reck <jreck@google.com> Fix onTrimMemory for HardwareRenderer

Also fixes detachFunctor possibly drawing after return

Bug: 15189843
Bug: 15990672

Change-Id: I64c48cb674c461a8eeaba407b697e09f72c98ce3
enderNode.cpp
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
711ecaf000f66ea8e68e3d6fc8fe9212d1882e2a 30-Jun-2014 John Reck <jreck@google.com> Merge "More cleanups"
918ad523b2780e0c893f3d2a32d4ec13f2a7e921 27-Jun-2014 John Reck <jreck@google.com> More cleanups

Change-Id: Id5967944b949a2aec57e4fe9fdcdc04c11b8c35a
eferredLayerUpdater.cpp
eferredLayerUpdater.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
f23b25abfb76e75f63103abc882bc91b8327a957 27-Jun-2014 Chris Craik <ccraik@google.com> Remove isRecording() method from renderers

DisplayListRenderer is all that's accessed from java, and is entirely
separate from OpenGLRenderer now.

Change-Id: Ie733be71520c13fdb55dfe3522bb445ae2b50ac1
isplayListRenderer.h
penGLRenderer.cpp
enderer.h
906d47fd2bcedb9674b5765d01bd9c758069074c 28-Jun-2014 Chris Craik <ccraik@google.com> Deep copy SkPath parameter to PathCache task

bug:15440706
Change-Id: I2b5b25f620df838cb1155cc8502d86ad3644c212
athCache.cpp
athCache.h
ca1b3b83bb4289315e25520364182ebad951ba08 27-Jun-2014 John Reck <jreck@google.com> Cleanup

Change-Id: I8a75e6e32a4cb02e3978503305b4cdce1727e89a
isplayListOp.h
penGLRenderer.h
68bfe0a37a0dcef52abd81688d8520c5d16e1a85 25-Jun-2014 John Reck <jreck@google.com> Animator refactoring & fixes

Tweaks animators to have less unnecessary refcounting

Pull animator management out into seperate class

More control to tweak animator lifecycle, such as doing
Java-side handling of start delay by attaching but not
starting the animator

Change-Id: I4ff8207580ca11fb38f45ef0007b406e0097281c
ndroid.mk
nimator.cpp
nimator.h
nimatorManager.cpp
nimatorManager.h
eferredLayerUpdater.cpp
eferredLayerUpdater.h
enderNode.cpp
enderNode.h
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
3faf67c9b3aac71794cbafee91f8ecc4ab454bc3 24-Jun-2014 John Reck <jreck@google.com> Merge "Fix contants; RT-enable WebView pt2"
cd028f336e36b22dbe8cf623eb5bd2361314495c 24-Jun-2014 John Reck <jreck@google.com> Fix contants; RT-enable WebView pt2

Bug: 15838537

* Fix kSync_UIRedrawRequired constant value (woops)
* Tell CanvasContext that WebView is now rt-safe

Change-Id: Idf15cf21115c2ca24b8ccd00025e8502864cd87c
enderthread/CanvasContext.cpp
enderthread/DrawFrameTask.h
07126e12cc4409e31e64c47a8cf7eb620806ff29 23-Jun-2014 Derek Sollenberger <djsollen@google.com> Cleanup unused includes in the hwui library.

Change-Id: I94c188403f5fa541e47a03a3bd1c7cf00c29bf4e
ndroid.mk
6b39324d7756f1a36faf275941aabb19ee6bbb53 24-Jun-2014 John Reck <jreck@google.com> Merge "No-fail invokeFunctor"
3b20251a355c88193c439f928a84ae69483fb488 23-Jun-2014 John Reck <jreck@google.com> No-fail invokeFunctor

Bug: 15513308
Bug: 15449247

Change-Id: I13a29f9c8d4975cdda6dcb33b6332c2555ff0f7c
ndroid.mk
eferredDisplayList.cpp
eferredDisplayList.h
eferredLayerUpdater.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
ayer.h
ayerCache.cpp
ayerCache.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
enderNode.cpp
enderNode.h
enderState.cpp
enderState.h
enderer.h
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/EglManager.cpp
enderthread/EglManager.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/RenderThread.cpp
enderthread/RenderThread.h
61606cec5ceb705910dec94222b22e66a0365094 23-Jun-2014 Bo Liu <boliu@google.com> Merge "Enable asynchronous RenderThread for WebView"
826b56448691221e4cfe2f19a09c3d8790f78d2c 14-May-2014 Bo Liu <boliu@google.com> Enable asynchronous RenderThread for WebView

BUG: 12179257

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

Change-Id: I635c6627d098b661fb9b0ba1bd42fa6d7277d287
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
ayer.h
penGLRenderer.cpp
penGLRenderer.h
enderNode.cpp
enderNode.h
enderer.h
enderthread/CanvasContext.cpp
3281442aa75872b8947f0b0a5203257c6849129d 21-Jun-2014 Chris Craik <ccraik@google.com> Merge "Wrap ViewGroup content in save/restore to protect composited children"
80d4902196899d1325cd9f52c06ae0174cf9bd4c 21-Jun-2014 Chris Craik <ccraik@google.com> Wrap ViewGroup content in save/restore to protect composited children

bug:15570351

Pos Z composited children are drawn before the primary restore for a
RenderNode. This means that without an additional save/restore (which
wraps the content) they aren't protected from transformations/clips
that happen within the ViewGroup's DisplayList.

Also changes RenderNode to use OpenGLRenderer tag for displaylist
dumping consistency, and simplifies the entry points into RenderNode
drawing, since the distinction between tree root vs tree internal is
no longer important.

Change-Id: I2621eba0592c74d71f85a91a4ab3d0da2d7468d3
isplayListOp.h
ayer.cpp
penGLRenderer.cpp
enderNode.cpp
enderNode.h
b127713b58c1a8f8bae687742ef15e60b3dbeb44 20-Jun-2014 John Reck <jreck@google.com> Merge "Re-enable ViewPropAnimRT"
2218472d23483f09341bf655d55db21dcbabc1b6 20-Jun-2014 John Reck <jreck@google.com> Re-enable ViewPropAnimRT

Change-Id: I2f30547c4e2212747c479760dff4f3f901d1eaf3
nimator.cpp
nimator.h
enderNode.h
402c8f5a07470bd582a5e7d5c5ff581c5e03a545 20-Jun-2014 Mike Reed <reed@google.com> Merge "stop using (deprecated) SkBitmap::Config"
b933055cf3f7f8ea89bfd3bc9c37a3891ff7310a 16-Jun-2014 Mike Reed <reed@google.com> stop using (deprecated) SkBitmap::Config

Change-Id: Ic75b5fc6996578e9d95bd3a220439ec1541d7c3b
athCache.cpp
extureCache.cpp
7aab5a1f9f0be7f84010325d9b7f314540f2d36f 20-Jun-2014 John Reck <jreck@google.com> Add negative guard

Bug: 15631600

Change-Id: Idd7740f58876e73694fafb8ef55ebaff511f6dca
nterpolator.cpp
e48df005750549b5531a916368f168189e370acc 19-Jun-2014 Chris Craik <ccraik@google.com> Merge "Clean up tessellation cache in prep for other tesselation types"
6ac174b97246ed40fe780b29561603b61770fa17 17-Jun-2014 Chris Craik <ccraik@google.com> Clean up tessellation cache in prep for other tesselation types

bug:15536396

Also fixes compilation warning, avoids SkPaint deep copy

Change-Id: I74334f08b1d34c6789aabf968ff62db5bacbed1b
isplayListOp.h
isplayListRenderer.cpp
penGLRenderer.cpp
essellationCache.cpp
essellationCache.h
hread/Task.h
c25e506f7fc08790c0532f927f31310a2ca778b7 18-Jun-2014 John Reck <jreck@google.com> Throw ISE on too-big-views-with-layers

Bug: 12971954

Change-Id: I3ef995e91f236014b0a72a90846ef19ce6dc42b1
enderNode.cpp
reeInfo.h
ce9f308063cc2bc7851f3f58c881da8a7271eecc 18-Jun-2014 John Reck <jreck@google.com> Fix dirty calculation for layer updates

Bug: 15682142

Defer early return of alpha <= 0 for damage accumulation until
popTransform() so that layer updates will be performed regardless
of alpha

Change-Id: Ifb94dd3ed2d96d610e6f2f3071933903016273a5
amageAccumulator.cpp
enderNode.cpp
75af3f3c9693f939c73ce1a7c2889a7f8d4853c0 17-Jun-2014 Chris Craik <ccraik@google.com> Merge "Add abort logging for huge scales and tessellation recursion depth"
fe02b4b344c37200486d8afc972560fb550cb17e 17-Jun-2014 Chris Craik <ccraik@google.com> Add abort logging for huge scales and tessellation recursion depth

bug:15615144
Change-Id: I275732eb97f9d5179beed23eecd2ee3cc7112e10
athTessellator.cpp
enderProperties.h
c4fc71dec806a116c9cd7a562c433f5ded60765d 17-Jun-2014 Chris Craik <ccraik@google.com> Merge "Interrupt canvas before invoke"
734df4b4271e90e320f3ff37b4b0d49e92cb1e3c 16-Jun-2014 Chris Craik <ccraik@google.com> Interrupt canvas before invoke

Change-Id: I5b818958f6255c594339bd10d9efa99e9e2c00d4
enderthread/CanvasContext.cpp
81efa15fad43a2e70a14b1cae6ad4ea527292555 17-Jun-2014 John Reck <jreck@google.com> Merge "Make sure the root node has a type"
2dc223d23764a78f052529e86a59a1979d03b811 17-Jun-2014 John Reck <jreck@google.com> Make sure the root node has a type

Bug: 15686491

Change-Id: I4bd64a6470dd704740e99d21cfdbe84805961401
amageAccumulator.cpp
293e868bfc1b07aad2cb2ebeee5b07424852c510 17-Jun-2014 John Reck <jreck@google.com> Handle Z in DA

Bug: 15671775

Change-Id: I33c7a70e78ef523ffd03165fb6c39d8e04d04f1f
amageAccumulator.cpp
enderNode.cpp
enderProperties.h
0d28bb47d771a2ac99cec6e4a071a98d2cd705dd 17-Jun-2014 Chris Craik <ccraik@android.com> Merge "Fix the texture ID reuse issue in HWUI."
5e7ef9489f3247c02395202d88fb4fb425aa8412 17-Jun-2014 Chris Craik <ccraik@android.com> Merge "hwui: fix possible null pointer de-refrence"
0732ba5756296f1ae3da48a39e4d498aba366386 17-Jun-2014 Chris Craik <ccraik@android.com> am 88b1c9ad: am e709d53f: am 0d28bb47: Merge "Fix the texture ID reuse issue in HWUI."

* commit '88b1c9ad87ca6d6faaf824bff4ee9d3c799362e5':
Fix the texture ID reuse issue in HWUI.
11a8d4f8b99549262bcc9b64efe8ca21801c8f91 17-Jun-2014 Chris Craik <ccraik@android.com> am 678886fd: am b1fc06a4: am 5e7ef948: Merge "hwui: fix possible null pointer de-refrence"

* commit '678886fde5cd779de79f8e38479aa6de82f8e755':
hwui: fix possible null pointer de-refrence
88b1c9ad87ca6d6faaf824bff4ee9d3c799362e5 17-Jun-2014 Chris Craik <ccraik@android.com> am e709d53f: am 0d28bb47: Merge "Fix the texture ID reuse issue in HWUI."

* commit 'e709d53ff31c74a6abf2a27350966d18d8dad4f7':
Fix the texture ID reuse issue in HWUI.
678886fde5cd779de79f8e38479aa6de82f8e755 17-Jun-2014 Chris Craik <ccraik@android.com> am b1fc06a4: am 5e7ef948: Merge "hwui: fix possible null pointer de-refrence"

* commit 'b1fc06a4321f13360fcca49bbf87f87f34c22d58':
hwui: fix possible null pointer de-refrence
ecae1ffd7719a60e471550436f885299d27de7df 16-Jun-2014 Tenghui Zhu <ztenghui@android.com> am df36dd20: am 386caf6c: Merge "update parameters in uploadToTexture() for GLES20"

* commit 'df36dd200c55a6ad463b46bab0ffff49d21206ff':
update parameters in uploadToTexture() for GLES20
4a473c7d9406a2d6f6792f0f48d933424740ec5c 10-Jun-2014 jiayuanr <jiayuanr@codeaurora.org> Fix the texture ID reuse issue in HWUI.

Issue: When the layer of previous frame is destroyed, it doesn't clear the
texture id in mBoundTextures[mTextureUnit], so in the next frame, if
glGenTexture returns same texture ID of the previous frame,
the new texture is not bound.

CRs-fixed: 671736

Change-Id: Ifc5fd2115fb1863b3c006ab14b0faabeaeb4eab4
aches.cpp
aches.h
ayer.cpp
1fa4cef34a8ac07e2ef15f2fef3dcfe520848c8d 12-Jun-2014 Digish Pandya <digishp@codeaurora.org> hwui: fix possible null pointer de-refrence

add layer check for null before de-refrencing it.

issue link: http://code.google.com/p/android/issues/detail?id=61622

Change-Id: I54fc21ec594effcfb1eededd80dd5b0b52645c4c
ayerRenderer.cpp
c5e0a295418a1fd8c17608041962d70296af6794 27-Nov-2013 Lu, Shenghua <shenghua.lu@intel.com> update parameters in uploadToTexture() for GLES20

Google optimized the uploadToTexture with GLES3.0+,
This allows us to upload a sub-rectangle of texture,
but this has compliance issue with GLES 2.0.

With OpenGL ES 2.0 we need to copy the bitmap in a
temporary buffer if the stride doesn't match the width,
and then upload entire temporary stripes.

Change-Id: I8987cd8347913c61b7fa45bd47be1189aa6bdb05
Signed-off-by: Shenghua Lu <shenghua.lu@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Guobin Zhang<guobin.zhang@intel.com>
extureCache.cpp
extureCache.h
2357d72ce2427c7b91f8c23487f0d49590e78ea6 16-Jun-2014 ztenghui <ztenghui@google.com> resolved conflicts for merge of ecae1ffd to master

Change-Id: I1ba660ce832e3360fa136be6aa0415645bfda328
816f71b7e0dc263362e9fc8d251c8d1944bff17c 13-Jun-2014 John Reck <jreck@google.com> Merge "Move LayerType to RenderNode"
25fbb3fa1138675379102a44405852555cefccbd 12-Jun-2014 John Reck <jreck@google.com> Move LayerType to RenderNode

Change-Id: Icb79a5015cb0362b1f3a66d09007450730135a97
amageAccumulator.cpp
amageAccumulator.h
eferredLayerUpdater.cpp
eferredLayerUpdater.h
enderNode.cpp
enderNode.h
enderProperties.cpp
enderProperties.h
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/DrawFrameTask.cpp
a447d29c65fb811cd184775a3476101a1cede929 12-Jun-2014 John Reck <jreck@google.com> Fix DA bugs

* Now aware of transform of DrawDisplayListOp
* Supports projection

Bug: 15539677
Bug: 15506680

Change-Id: Ic16f482cd48c3add12e49eca529281be12b93491
amageAccumulator.cpp
amageAccumulator.h
atrix.cpp
atrix.h
enderNode.cpp
enderNode.h
enderProperties.cpp
enderProperties.h
reeInfo.h
bd2d97f2b7212a74c11ee09f3badaea70ba9fe0b 13-Jun-2014 Chris Craik <ccraik@google.com> am 9de2a8f4: Merge "Add AA flag to TessellationCache key" into lmp-preview-dev

* commit '9de2a8f42d88e50146947a7bf21b212ea134ee83':
Add AA flag to TessellationCache key
ed4ef0bc17c33ecd7e689e3c40244a7c1c6063d0 12-Jun-2014 Chris Craik <ccraik@google.com> Add AA flag to TessellationCache key

bug:15539571
Change-Id: I7cf470ca962041ab3c00c740e87c6ae9a95f06a8
essellationCache.cpp
essellationCache.h
5b368b3d9f1f99a9b92971a0596ccb15f77017d2 12-Jun-2014 Chris Craik <ccraik@google.com> am 98b10e48: Merge "Limit path approximation recursion depth" into lmp-preview-dev

* commit '98b10e480279d331e54b9f28546629687244a01c':
Limit path approximation recursion depth
0adb6d6e5090fd08242e7015b2ffdc91e3a42307 12-Jun-2014 Chris Craik <ccraik@google.com> Merge "Limit path approximation recursion depth" into lmp-preview-dev
9c3dd62d0fbec40ea15b0a56a01bcfefa3ceabdd 12-Jun-2014 Chris Craik <ccraik@google.com> Limit path approximation recursion depth

bug:15369119
Change-Id: I6f009f5e8790129e1aa8a51e1fc6cdd1415dd617
athTessellator.cpp
athTessellator.h
1b3be0877a07dac81fd21c898ba917e6ee5354b2 11-Jun-2014 Chris Craik <ccraik@google.com> Fix race in shadow tessellation by deep copying task params

bug:15369119
Change-Id: Ica1445f06693b1cfd038cf3494afe1210d5507c1
essellationCache.cpp
6ef8e0178d6ad9fee5b410da8fd28f97205c23eb 12-Jun-2014 Chris Craik <ccraik@google.com> Workaround to avoid polygon flashing DO NOT MERGE

b/15539571

Temporarily disables caching of tessellation.

Change-Id: If014b8c40664711aef761eec606d28aff1859b14
essellationCache.cpp
e830c37a4a499c439083afc56c64fa178ea5889d 12-Jun-2014 John Reck <jreck@google.com> Merge "Fix DA bugs"
3e136626daa184a8191808343c95be9c7313448b 12-Jun-2014 Chris Craik <ccraik@google.com> am 69453787: Merge "Fix race in shadow tessellation by deep copying task params" into lmp-preview-dev

* commit '6945378752381a04d81eb426876a6495488cd459':
Fix race in shadow tessellation by deep copying task params
546f353e7f562fdbcf59980bcb7dc11567658aa3 10-Jun-2014 Mark Salyzyn <salyzyn@google.com> hwui: 64-bit compile issue

Change-Id: Ic3e3dbc6cde4bc58b23a8ab267b0868f370ad149
enderthread/RenderProxy.cpp
1e5cf9aced40e6e14262e542d0ed0e24cda877a0 10-Jun-2014 Chris Craik <ccraik@google.com> am b1c76a1a: Merge "Tessellate on worker threads" into lmp-preview-dev

* commit 'b1c76a1abcfb2f33e12fef37ec71d20724863b5e':
Tessellate on worker threads
05f3d6e5111fd08df5cd9aae2c3d28399dc0e7f5 03-Jun-2014 Chris Craik <ccraik@google.com> Tessellate on worker threads

Tessellate and cache (where possible) shadow and round rect
tessellation tasks.

Change-Id: I2cfda8e11d83d51ea74af871235cf26e8f831d40
mbientShadow.cpp
mbientShadow.h
ndroid.mk
aches.cpp
aches.h
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
athCache.cpp
athCache.h
athTessellator.cpp
athTessellator.h
roperties.h
ect.h
hadowTessellator.cpp
hadowTessellator.h
potShadow.cpp
potShadow.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
essellationCache.cpp
essellationCache.h
ertexBuffer.h
hread/TaskManager.cpp
tils/Macros.h
tils/MathUtils.h
743922e9dfe295d4cc837eee1646272aa88da135 06-Jun-2014 John Reck <jreck@google.com> Merge changes Ie0773f85,Ie5e75505

* changes:
Even FASTER damage calculations!
Have all the setters return changed
c229c2a6a85c36015cd30353193df2628ba760fb 06-Jun-2014 Chris Craik <ccraik@google.com> am 8632b85b: Merge "Fix issues around GL on incorrect thread" into lmp-preview-dev

* commit '8632b85b3ceca1b64ca37843ffd87bc10f4ae72f':
Fix issues around GL on incorrect thread
56f46abdcdb6ad65225e5e8ff5b0ccae8d9bacce 05-Jun-2014 Chris Craik <ccraik@google.com> Merge "Fix issues around GL on incorrect thread" into lmp-preview-dev
18bf85d4aeedc5989475cadfee735751adac23ad 05-Jun-2014 Chris Craik <ccraik@google.com> Fix issues around GL on incorrect thread

bug:15416165
bug:15414673

DisplayListRenderer must override these callbacks from
StatefulBaseRenderer, since the super implementations call GL.
Eventually, we'll just have DisplayListRenderer inherit from
StatefulBaseRenderer directly.

Change-Id: I7b20aa0ac6cae3bf6c6969c63bf9ba98ab2831ff
isplayListRenderer.h
e4267ea4f20740c37c01bfb6aefcf61fddc4566a 04-Jun-2014 John Reck <jreck@google.com> Even FASTER damage calculations!

* Now with more native!
* Less matrix math thanks to bulk-property-update support!
* Zero JNI on the View.damageInParent() path!
* Fully aware of RT-driven animators!
* Likely full of new and exciting bugs!
* But it also fixes at least 1 existing invalidate bug!

Change-Id: Ie0773f85a60850ff2668370c58defef2e8aa079f
ndroid.mk
amageAccumulator.cpp
amageAccumulator.h
eferredLayerUpdater.cpp
rawProfiler.cpp
rawProfiler.h
enderNode.cpp
enderNode.h
enderProperties.cpp
enderProperties.h
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
79c7de77a7da9cbcb9428ab6203987feb35a427f 23-May-2014 John Reck <jreck@google.com> Have all the setters return changed

Change-Id: Ie5e755058a7094bb0c2fce60ec3cef47c23823ce
nimator.h
enderProperties.h
982e28cafdf847c97d0e33d06c177d4aa927c6f1 03-Jun-2014 John Reck <jreck@google.com> Merge "Cleanup"
ce444ca4006cfe0e2151d858da732fc413a716bd 03-Jun-2014 John Reck <jreck@google.com> Cleanup

Change-Id: Ie366390272724a2c1dfda99b0e85806b7a612744
ndroid.mk
isplayListOp.h
776512d4b6a7c1b1b7893cde5bec1f3d65c0ea94 02-Jun-2014 John Reck <jreck@google.com> am feccbdc4: Merge "Add setStartValue to RNA" into lmp-preview-dev

* commit 'feccbdc4d0bee3eb4c395bd93ba51cbc6616527a':
Add setStartValue to RNA
c6b3264e16f1d2b72e7f9508559981ce9970157c 02-Jun-2014 John Reck <jreck@google.com> Add setStartValue to RNA

Bug: 15198607
Should be good-enough for Ripples to use for pseudo-chaining
support.

Change-Id: Ia8666928ccb69ae401cb583751632a52bd928b63
nimator.cpp
nimator.h
c6b6154ac1eb4e839f363115aef3649c967bcfdd 30-May-2014 John Reck <jreck@google.com> am ea5af639: Merge "Re-jigger layers" into lmp-preview-dev

* commit 'ea5af63965bf323580aa1e2854efb2f8cc3dc396':
Re-jigger layers
d72e0a339b54af0c4e731513bbad120dff694723 30-May-2014 John Reck <jreck@google.com> Re-jigger layers

Bug: 15185239
Bug: 15238382

Make DeferredLayerUpdater ref counted so that
HardwareLayer:finalizer() works non-crashily on
leaked layers
Give DeferredLayerUpdater the ability to have a layer destroyer
set so that leaked layers can still be recycled on the
RenderThread
Order layer updates based off of pushLayerUpdate() calls to fix
issue with nested layers

Change-Id: I4449cee607f7e5126e02fed7464cf48038e3dfdf
eferredLayerUpdater.cpp
eferredLayerUpdater.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
25e40de45f89490f03ca010a88d2265d9c901493 30-May-2014 Kenny Root <kroot@google.com> resolved conflicts for merge of b68f5f09 to master

Change-Id: Ib8dd3a353f40a3357c8dc5ac591cd5e3ab4d0a4b
b68f5f0932511fb9975b7e04eebe48707af59e0a 30-May-2014 Chris Craik <ccraik@android.com> am 4d31c547: am ce7fa780: Merge "Fix a resource race bug in PathCache"

* commit '4d31c5474bcc4bcc6a6d8dfe232360dad701a3fc':
Fix a resource race bug in PathCache
4d31c5474bcc4bcc6a6d8dfe232360dad701a3fc 30-May-2014 Chris Craik <ccraik@android.com> am ce7fa780: Merge "Fix a resource race bug in PathCache"

* commit 'ce7fa780cdee2730b570cc34066f15c74d44e6ef':
Fix a resource race bug in PathCache
b2367cbf396f564cb6c66c0aaa51710ffa7bc052 30-May-2014 Derek Sollenberger <djsollen@google.com> Merge "Update HWUI matrix API"
7061f7d7910fdf1189ea7bf1398f6cf8b9bd0104 27-May-2014 yuyang <yuyang@codeaurora.org> Fix a resource race bug in PathCache

When enabled defer rendering, it will do precache for DrawPathOp.
The paint used for creating PathTask in precache just get the address
of mFilteredPaint of OpenGLRenderer. So for the following defer
operation like DrawTextOp has possibility change the mFilteredPaint
by getPaint while another WorkerThread in PathCache is using the paint
which pointed to the same address of mFilteredPaint to generate bitmap.
As a result, it will generate a wrong bitmap for generateTexture in
PathCache. To fix it, do a copy of paint when creating PathTask.

CRs-Fixed: 664244

Change-Id: I5516f5b143458b88d3573d15b7ebb34f688800c7
athCache.cpp
athCache.h
2cfc0e543f69750b4ccc9d5f52b384e525cf9e77 30-May-2014 John Reck <jreck@google.com> am 894bb170: Merge "Enable debug stuffs" into lmp-preview-dev

* commit '894bb1701ae15b87af1e3bfe865fe191081cc806':
Enable debug stuffs
2143fdba1c9bc22a7bd999be91db77a091666285 30-May-2014 John Reck <jreck@google.com> am b5797c9e: Merge "Re-enable atlas" into lmp-preview-dev

* commit 'b5797c9eebd6407bd19526d4d4ed371be147b323':
Re-enable atlas
aee470c0232afdac4256d13020fa0cf04f30395c 30-May-2014 John Reck <jreck@google.com> Merge "Enable debug stuffs" into lmp-preview-dev
fe5e7b7346a54537b980796ceeca66bfdbd05561 24-May-2014 John Reck <jreck@google.com> Enable debug stuffs

Bug: 14596762
* dumpsys gfxinfo implemented
* profile GPU visual_bars implemented

Change-Id: Icb948a9d5af5989b5615504d0d76ade64b93ef5b
ndroid.mk
rawProfiler.cpp
rawProfiler.h
roperties.h
enderNode.cpp
enderNode.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
c8affe0e1b1f3f63b12477f832a1a66019ac0df8 29-May-2014 John Reck <jreck@google.com> Re-enable atlas

Bug: 14590563

Change-Id: I04ed5bf1b2654dab4a65c1e43faaeba32459870f
enderthread/CanvasContext.cpp
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
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
enderNode.cpp
enderer.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
81d29b5f0c8018f3cb49d2598322aa652a4417f2 28-May-2014 John Reck <jreck@google.com> am 2d196d9f: Merge "Implement FlushCaches TODO" into lmp-preview-dev

* commit '2d196d9f9d4978fd0df80815e15012518be5ff18':
Implement FlushCaches TODO
45d01929291eba56e1bce582192941446b86bf5a 28-May-2014 John Reck <jreck@google.com> Merge "Implement FlushCaches TODO" into lmp-preview-dev
cd3a8245489fa36c528b075efe99a147cf4f6785 24-May-2014 Chris Craik <ccraik@google.com> Merge "DO NOT MERGE Inspect SkShader to determine hw shader." into lmp-preview-dev
e1628b7c6fc3822fa83cf02028ce8ad67abb0afe 24-May-2014 John Reck <jreck@google.com> Implement FlushCaches TODO

Change-Id: Id05429e98ffe0858275b32c41fb215c1d8d930b2
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
d04d303e5d8521403514cf960a694e566df19536 23-May-2014 John Reck <jreck@google.com> resolved conflicts for merge of 1f6c973b to master

Change-Id: I0d0a72f1d737fa80ac4c258c1f9fc52ef85724bd
a5dda645da738da7b4ae15e28fa7d93d3b04b94f 23-May-2014 John Reck <jreck@google.com> Bag of scheduling tweaks

Bug: 15118640

* Prevent over-stuffing the queue by dropping frames
* Prevent double-drawing in one pulse by RT by deferring
vsync registration until post-draw so that it catches
the next vsync pulse instead of the current one
* Bias vsync race condition towards the UI thread
* Fix queueDelay to actually work

Change-Id: Ibf584258bd93ebcbba058bd976dc8b307f1c6155
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/RenderThread.cpp
enderthread/RenderThread.h
c33fb2b5c014f37ce36dbc12eff1e969562f7d50 23-May-2014 Derek Sollenberger <djsollen@google.com> Merge "Pass the radius as a float deeper into HWUI allowing RS to generate more accurate blurs."
0fa2bd699ab5539c0ce6b79eb6b4b681734b8bb5 05-May-2014 Leon Scroggins III <scroggo@google.com> DO NOT MERGE Inspect SkShader to determine hw shader.

cherry-pick of Iaa7189178bda1c55f96da044d2a9fa602ba36034

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

core/java/android/view/GLES20Canvas.java:
Remove setupModifiers, nResetModifiers, and nSetupShader.

core/jni/android/graphics/Shader.cpp:
Remove calls to create/destroy the (previously) attached SkiaShader.

core/jni/android_view_GLES20Canvas.cpp:
Remove native code for setupShader and resetModifiers.

graphics/java/android/graphics/BitmapShader.java:
graphics/java/android/graphics/ComposeShader.java:
graphics/java/android/graphics/LinearGradient.java:
graphics/java/android/graphics/RadialGradient.java:
graphics/java/android/graphics/Shader.java:
graphics/java/android/graphics/SweepGradient.java:
Remove code keeping track of native SkiaShader.

libs/hwui/Caches.h:
Include Extensions.h.

libs/hwui/DeferredDisplayList.cpp:
Compare shaders on the paint, instead of on DrawModifiers.

libs/hwui/DisplayList.cpp:
libs/hwui/DisplayList.h:
Remove vector of SkiaShaders.

libs/hwui/DisplayListOp.h:
Access the SkShader on mPaint.
Remove SetupShaderOp and ResetShaderOp.

libs/hwui/DisplayListRenderer.cpp:
libs/hwui/DisplayListRenderer.h:
Remove resetShader, setupShader, refShader, and mShaderMap.

libs/hwui/FontRenderer.cpp:
Pass SkShader to setupDrawShader and setupDrawShaderUniforms.

libs/hwui/OpenGLRenderer.cpp:
libs/hwui/OpenGLRenderer.h:
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).

libs/hwui/Renderer.h:
Remove pure virtual functions setupShader and resetShader.

libs/hwui/ResourceCache.cpp:
libs/hwui/ResourceCache.h:
Remove functions for refing/unrefing shaders.

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

libs/hwui/TextureCache.cpp:
libs/hwui/TextureCache.h:
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).

tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java:
tests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java:
Update manual test to have more shaders: radial, sweep, compose,
invalid compose.

BUG:10650594
Change-Id: I2e7182b3fc28268e7ca82fac6780540b6b45365c
aches.h
eferredDisplayList.cpp
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
ontRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
enderer.h
esourceCache.cpp
esourceCache.h
kiaShader.cpp
kiaShader.h
extureCache.cpp
extureCache.h
d490aa426090fc358873821b47ef27ead0c97409 23-May-2014 Chris Craik <ccraik@google.com> Merge "Inspect SkShader to determine hw shader."
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.

core/java/android/view/GLES20Canvas.java:
Remove setupModifiers, nResetModifiers, and nSetupShader.

core/jni/android/graphics/Shader.cpp:
Remove calls to create/destroy the (previously) attached SkiaShader.

core/jni/android_view_GLES20Canvas.cpp:
Remove native code for setupShader and resetModifiers.

graphics/java/android/graphics/BitmapShader.java:
graphics/java/android/graphics/ComposeShader.java:
graphics/java/android/graphics/LinearGradient.java:
graphics/java/android/graphics/RadialGradient.java:
graphics/java/android/graphics/Shader.java:
graphics/java/android/graphics/SweepGradient.java:
Remove code keeping track of native SkiaShader.

libs/hwui/Caches.h:
Include Extensions.h.

libs/hwui/DeferredDisplayList.cpp:
Compare shaders on the paint, instead of on DrawModifiers.

libs/hwui/DisplayList.cpp:
libs/hwui/DisplayList.h:
Remove vector of SkiaShaders.

libs/hwui/DisplayListOp.h:
Access the SkShader on mPaint.
Remove SetupShaderOp and ResetShaderOp.

libs/hwui/DisplayListRenderer.cpp:
libs/hwui/DisplayListRenderer.h:
Remove resetShader, setupShader, refShader, and mShaderMap.

libs/hwui/FontRenderer.cpp:
Pass SkShader to setupDrawShader and setupDrawShaderUniforms.

libs/hwui/OpenGLRenderer.cpp:
libs/hwui/OpenGLRenderer.h:
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).

libs/hwui/Renderer.h:
Remove pure virtual functions setupShader and resetShader.

libs/hwui/ResourceCache.cpp:
libs/hwui/ResourceCache.h:
Remove functions for refing/unrefing shaders.

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

libs/hwui/TextureCache.cpp:
libs/hwui/TextureCache.h:
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).

tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java:
tests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java:
Update manual test to have more shaders: radial, sweep, compose,
invalid compose.

BUG:10650594

Change-Id: Iaa7189178bda1c55f96da044d2a9fa602ba36034
aches.h
eferredDisplayList.cpp
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
ontRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
enderer.h
esourceCache.cpp
esourceCache.h
kiaShader.cpp
kiaShader.h
extureCache.cpp
extureCache.h
b8fe2fcd71e438b5ea6a85b1e2024ca9dc62b9d1 22-May-2014 Chris Craik <ccraik@google.com> Merge "Define light position (using new lighting spec) in Java"
797b95b26bbb7557678af78b9a2a61830158920f 21-May-2014 Chris Craik <ccraik@google.com> Define light position (using new lighting spec) in Java

Also updates the relative shadow strengths.

Change-Id: I6cac7275d38df98aea9f0dda463cd7207102986a
aches.cpp
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
enderer.h
hadowTessellator.cpp
hadowTessellator.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
61317325b7b4b4ffafd9400ab5966e8d7c67df2e 21-May-2014 Chris Craik <ccraik@google.com> Disable shadow drawing for empty/null outlines

Change-Id: I60d0f326cfab97d88c49d17cf32e619b5e60b94a
isplayListOp.h
utline.h
enderNode.cpp
e392c81f6b8f9ace0c0a48c9d4df117fda31fd13 21-May-2014 Derek Sollenberger <djsollen@google.com> Pass the radius as a float deeper into HWUI allowing RS to generate more accurate blurs.

Also, when converting radius to an integer value snap to the appropriate integer boundaries.

bug: 10650594
Change-Id: Icca4bc17d88162bbcbc6035d4f81bd1d98a4de2d
ontRenderer.cpp
ontRenderer.h
tils/Blur.cpp
tils/Blur.h
f2985ba3f41c4619f7b64797d07e3a008e17b20a 19-May-2014 Chris Craik <ccraik@google.com> Merge "Correct viewport initialization, bounds comparison"
50b843883d6906b74ba14ddde285ee8716a23782 19-May-2014 Chris Craik <ccraik@android.com> am 3c769ec0: am 00fabcbe: am b1708e9b: Merge "Use alpha channel instead of red in drawCachedGlyphBitmap"

* commit '3c769ec02b8b82bec4dec2169bf76af58be94a9a':
Use alpha channel instead of red in drawCachedGlyphBitmap
3c769ec02b8b82bec4dec2169bf76af58be94a9a 19-May-2014 Chris Craik <ccraik@android.com> am 00fabcbe: am b1708e9b: Merge "Use alpha channel instead of red in drawCachedGlyphBitmap"

* commit '00fabcbeb035fb513293ea01d245002f40b3234f':
Use alpha channel instead of red in drawCachedGlyphBitmap
00fabcbeb035fb513293ea01d245002f40b3234f 19-May-2014 Chris Craik <ccraik@android.com> am b1708e9b: Merge "Use alpha channel instead of red in drawCachedGlyphBitmap"

* commit 'b1708e9b764268a06d91219a5c39ee9efd32ab00':
Use alpha channel instead of red in drawCachedGlyphBitmap
1a49868fd82f8975da5685fdb6ca3cc83a99bdf5 18-May-2014 Ben Cheng <bccheng@google.com> Use default visibility for Snapshot::getLocalClip (attempt #2).

The change appeared to be dropped.
See commit 65ba94f79d6e737c3e66c09032221999b2eb50d7 for details.

Change-Id: Ib60968d6327ef04d21e4adca2c394f66343f204b
napshot.h
ad2f8e334f3ef22d3e412b0660a2e1f996f94116 16-May-2014 Alan Viverette <alanv@google.com> Update ripple behavior, use render thread animation

Change-Id: Ib6bc1e08b05d29606f452961963d58b8fc866746
nimator.cpp
nimator.h
c9ee304c91b5572f0c1cd95e9bd1e4a84e28587d 16-May-2014 Chris Craik <ccraik@google.com> Merge "Round rect outline clipping"
deeda3d337aed1eee218b89a7aba5992ced371f0 06-May-2014 Chris Craik <ccraik@google.com> Round rect outline clipping

Change-Id: Iee9cf4f719f6f1917507b69189ad114fa365917b
eferredDisplayList.cpp
eferredDisplayList.h
penGLRenderer.cpp
penGLRenderer.h
utline.h
rogram.h
rogramCache.cpp
ect.h
enderNode.cpp
napshot.cpp
napshot.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
tils/MathUtils.h
924197513aa2df4c1fb2977c1727f5d2c21f2689 15-May-2014 Chris Craik <ccraik@google.com> Correct viewport initialization, bounds comparison

Change-Id: Ibd751856e3712991e149800ed179464397dad7c3
penGLRenderer.cpp
napshot.h
ff941dcd815021bb20d6504eb486acb1e50592c3 15-May-2014 John Reck <jreck@google.com> Animator start value...

Change-Id: Ifd35ed95a28c625086d7fa97764fe63ab4a997f1
nimator.cpp
nimator.h
enderNode.cpp
enderNode.h
reeInfo.h
c62c1cc17ded117433d23ba5dd6c364b05fbcdbd 12-May-2014 Digish Pandya <digishp@codeaurora.org> Use alpha channel instead of red in drawCachedGlyphBitmap

the correct value to copy in bitmap is alpha component from
the cachebuffer. currently it is offset to red channel if format is
RGBA which is wrong.

this is followup fix for https://android-review.googlesource.com/#/c/93943/

Change-Id: I96b5ba35df5ccaef44caf2542d35d6585ba1df80
Signed-off-by: Digish Pandya <digishp@codeaurora.org>
ixelBuffer.h
ont/Font.cpp
fe4c1e225d147fe9cb5d7c121b7d6d11a312844e 15-May-2014 Chris Craik <ccraik@google.com> Merge "Combine projection matrix, and viewport management"
96f266ee5ddb372eb3f5ac1200730d9403848907 15-May-2014 Chris Craik <ccraik@google.com> Merge "Remove Path based outline clipping"
2bcad176757386d906157bb898167fbcebe9f55e 15-May-2014 Chris Craik <ccraik@google.com> Remove Path based outline clipping

Change-Id: Ic5ccd98a7517b46e768e53d6b0c8fdcda305fb2c
enderNode.cpp
enderProperties.cpp
enderProperties.h
a64a2bef1048db5a742843f1e3bea9e80d0defc5 14-May-2014 Chris Craik <ccraik@google.com> Combine projection matrix, and viewport management

Merge management of ortho projection matrix with the viewport size,
since they should always be changed together.

Change-Id: Iccb8f30828f4fb7848999ac54852e7ed2d6f2eb1
isplayListRenderer.cpp
ayer.cpp
ayerRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
napshot.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
3eb9882a67167141817faef6556c0393fa6bab72 15-May-2014 John Reck <jreck@google.com> Merge "Disable texture atlas"
cdfeef6624613ca06fe8a7edfb92608afb0499ee 15-May-2014 John Reck <jreck@google.com> Disable texture atlas

Bug: 14952384

Change-Id: If38b3e4c08c2c3dd9c00ae9e6e8c10e208e737d1
enderthread/CanvasContext.cpp
a6464b38fc3c807abbce0cb4e7b542b2dd34111c 15-May-2014 ztenghui <ztenghui@google.com> Merge "Check the array before accessing it"
f11310f395a135ac7ef204ced5b3d3facf491422 14-May-2014 ztenghui <ztenghui@google.com> Check the array before accessing it

TODO: Figure out why the path is generating empty polygon.

bug: 14615368

Change-Id: If116e34388b7c6a71bf5ddd36e0c9716d7450732
hadowTessellator.cpp
bee74c2b479153bb6a4b9e03f068658042a5fdfc 13-May-2014 John Reck <jreck@google.com> Merge "Clamp to uint8 for alpha"
66f0be65a1046f54ddce0498b242c1fa0776b1ea 13-May-2014 John Reck <jreck@google.com> Wire up texture atlas

Bug: 14590563

Change-Id: I2dffbc089dc801f5fb2d1c8fd38e1c71d160e110
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
531ee701ddca2d1604fcce8e5d6d8837a3f651ac 13-May-2014 John Reck <jreck@google.com> Clamp to uint8 for alpha

Change-Id: Id3e51671297bfb879969ad2fe7a5741dd4cf4c29
nimator.cpp
c8ac775659fd252ce2cc9a61837c170ff70f0a1a 13-May-2014 John Reck <jreck@google.com> More native interpolators

Gotta collect 'em all

Change-Id: I3ccc2b5c842b27b906c8a0470fbedc2bf285bc38
nterpolator.cpp
nterpolator.h
315c329544d7c593d1072b071cbb92d9afe74021 10-May-2014 John Reck <jreck@google.com> Add TimeInterpolator support to RNA

Bug: 14678626

Change-Id: I6554e7fcd42c49fac3618ca792083bb68e358f55
nimator.h
nterpolator.cpp
nterpolator.h
tils/MathUtils.h
ddc52285ca6fd147f442a21e90e0e4702a10d304 11-May-2014 Jorim Jaggi <jjaggi@google.com> Revert "Simplify projection matrix management."

This reverts commit 0efaa71d5414287ed4beac0a88cf76f7e33a1e74.
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
napshot.h
2417f7e08ccdcb5bb0383de1aa6a0098ca98356c 10-May-2014 Chris Craik <ccraik@google.com> Merge "Simplify projection matrix management."
c42bfb95c6b7166b7916057af9df6e20d8c4c8ef 10-May-2014 John Reck <jreck@google.com> Merge "Refactor VirtualLightRefBase & JNI"
0c0ec26366045e515790a6acdab782965efc63b4 10-May-2014 Chris Craik <ccraik@google.com> Simplify projection matrix management.

Store in and use from snapshot, and remove the kFlagOrthoDirty flag,
as it's redundant with kFlagIsFboLayer.

Change-Id: I2bd380192d50117f4ce1fd2058213669a886f406
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
napshot.h
9fa4071c4768c63902c6a74a4b480b51a8b95d43 10-May-2014 John Reck <jreck@google.com> Refactor VirtualLightRefBase & JNI

Change-Id: I8e244e7109e59d5be96871b23bb9b1201c7f9eaa
nimator.h
anvasProperty.h
isplayList.h
enderNode.h
tils/VirtualLightRefBase.h
f9075798d7de2c23f67987d55ac1e4412de8265f 10-May-2014 Chris Craik <ccraik@android.com> am 90eaf92e: am 7e13d1d4: am f6c9c420: Merge "Correct stride for drawing to cached glyph bitmap"

* commit '90eaf92e325457ccb30286879a2f92b7ba517c7d':
Correct stride for drawing to cached glyph bitmap
90eaf92e325457ccb30286879a2f92b7ba517c7d 09-May-2014 Chris Craik <ccraik@android.com> am 7e13d1d4: am f6c9c420: Merge "Correct stride for drawing to cached glyph bitmap"

* commit '7e13d1d4a46a01ebaa412d622ef76d90bd39d12a':
Correct stride for drawing to cached glyph bitmap
7e13d1d4a46a01ebaa412d622ef76d90bd39d12a 09-May-2014 Chris Craik <ccraik@android.com> am f6c9c420: Merge "Correct stride for drawing to cached glyph bitmap"

* commit 'f6c9c4204c2f8f86277d081112c9dd863ddaa778':
Correct stride for drawing to cached glyph bitmap
e1f788b3e216329c570929eb4526332ae0db14d1 09-May-2014 Chris Craik <ccraik@google.com> Merge "Rename matrices for consistency"
b9312a54e49f2f0e35bf65f91d796eeb3a6084bc 09-May-2014 Digish Pandya <digishp@codeaurora.org> Correct stride for drawing to cached glyph bitmap

fixes the glyph cachebuffer index to account for pixelbuffer
format size.

issue: in launcher home screen create icon group and rename the
group to some text string with emo-icons (smilies). without this
change the drop shadows for emo-icons will look bad.

Change-Id: I525a9219d35f4541363fd64e7fc5fd1053269725
Signed-off-by: Digish Pandya <digishp@codeaurora.org>
ont/Font.cpp
e10e827ed68b0a9487cf8dd1fc545f9a09517ae9 08-May-2014 Chris Craik <ccraik@google.com> Rename matrices for consistency

The projection matrix no longer contains viewing transformation, and
has thus been renamed.

Change-Id: I4f85ccdac97f4cb4f987bb05c389816680f1c94f
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
e4aa95e3627226bcb0d8cc3e42dca6e4df8f421c 08-May-2014 Chris Craik <ccraik@google.com> Add logging utility methods

Change-Id: I0f316830dcc0bbf438292a6d0fbe9f8154368500
ndroid.mk
atrix.cpp
atrix.h
penGLRenderer.cpp
ect.h
napshot.cpp
tils/GLUtils.cpp
tils/GLUtils.h
tils/MathUtils.h
5b554f010358d8f47e31d92a42aa3edc4a71ec47 08-May-2014 Derek Sollenberger <djsollen@google.com> Merge "Avoid caching shadow properties in Java & HWUI."
ef27453cf71e331e4076df5e5c665b06d5c3e050 07-May-2014 John Reck <jreck@google.com> Merge "Cleanup attachFunctor"
832b151465ed81c43e59891d5eebe62128b21fbb 07-May-2014 John Reck <jreck@google.com> Cleanup attachFunctor

Bug: 13961296

Change-Id: Id48d11bfcc234afd1fd7e4fdd409a50e7208c81d
penGLRenderer.cpp
penGLRenderer.h
enderthread/CanvasContext.cpp
b6d9211d31d29221501a8f2a33e6ba0fe18d6ef5 07-May-2014 John Reck <jreck@google.com> Merge "Implement TODO(romainguy)"
63a06673253914510bbeebd500655008682dade1 07-May-2014 John Reck <jreck@google.com> Implement TODO(romainguy)

Bug: 14277445

Change-Id: Id52d6f7fcc023000adcc440bd4da67d9a673536b
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
368cdd85268999997fb495cf90c4417221797de0 07-May-2014 John Reck <jreck@google.com> Don't try to draw if there's no canvas or surface

Bug: 14616376

doFrame() can happen after the canvas or surface is destroyed,
handle it gracefully

Change-Id: Ibbbbdbfa77fa2134bd2abc215ca1a0886d706969
enderthread/CanvasContext.cpp
c29a0a4664a4b9871fadd668b632469a0db240b9 31-Mar-2014 Derek Sollenberger <djsollen@google.com> Avoid caching shadow properties in Java & HWUI.

bug: 10650594
Change-Id: I6f57df002710bb0567ed7e53fc0bfe96cfd504b8
eferredDisplayList.cpp
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
enderer.h
tils/Blur.cpp
tils/Blur.h
ebb9e69513b690881a5bad7bf45c6f32e0fc7062 06-May-2014 John Reck <jreck@google.com> Merge "Implement loadSystemProperties"
e4280baaa709c74d86cf6a389a4674ca665f5af6 06-May-2014 John Reck <jreck@google.com> Implement loadSystemProperties

Bug: 14087580

Change-Id: I7153f38c70b554a78c56a0e794da929fc401ee7a
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
81997fef183074728b8981fd8e858b82ec70ed27 05-May-2014 Chris Craik <ccraik@google.com> am 3cb74d21: am 5d8343b8: am a85db5ab: Merge "libhwui: Handle the blurImage() implement once RS::init fail"

* commit '3cb74d21b2ac2427e805f72a113e8d7a2cc460f3':
libhwui: Handle the blurImage() implement once RS::init fail
3cb74d21b2ac2427e805f72a113e8d7a2cc460f3 05-May-2014 Chris Craik <ccraik@google.com> am 5d8343b8: am a85db5ab: Merge "libhwui: Handle the blurImage() implement once RS::init fail"

* commit '5d8343b8e27e766b5bfaaed2f9b1952c0d15da8d':
libhwui: Handle the blurImage() implement once RS::init fail
5d8343b8e27e766b5bfaaed2f9b1952c0d15da8d 05-May-2014 Chris Craik <ccraik@google.com> am a85db5ab: Merge "libhwui: Handle the blurImage() implement once RS::init fail"

* commit 'a85db5ab785c59726c3644999801e48f449714f3':
libhwui: Handle the blurImage() implement once RS::init fail
a85db5ab785c59726c3644999801e48f449714f3 05-May-2014 Chris Craik <ccraik@google.com> Merge "libhwui: Handle the blurImage() implement once RS::init fail"
f9be77940e365036fecd8cc0e491e8545c34e79b 03-May-2014 John Reck <jreck@google.com> Make RenderNodeAnimator and WebView play nice

Change-Id: Ifaefcf510b2d377663fc86f60608d6ec9be8329a
enderNode.cpp
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
18f16e6fba74eda173e1e7c869e6e2e2acc073ff 03-May-2014 John Reck <jreck@google.com> TIME LORD!

Bug: 14444180

Change-Id: I68bec3807c4d1c88d5af1aec2fe6907d60b5f2f3
ndroid.mk
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/RenderThread.cpp
enderthread/RenderThread.h
enderthread/TimeLord.cpp
enderthread/TimeLord.h
52244fff29042926e21fa897ef5ab11148e35299 02-May-2014 John Reck <jreck@google.com> Add CanvasProperty for drawCircle

Change-Id: Icbcc030f5033d2094e567d7c519b9d672f2aac1c
nimator.cpp
nimator.h
anvasProperty.h
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.h
enderNode.cpp
enderNode.h
reeInfo.h
enderthread/DrawFrameTask.cpp
tils/Macros.h
64ab917e5eb3269c72c795781a512d4ee7d9d7a4 01-May-2014 Chris Craik <ccraik@google.com> Merge "Add more shadow control knobs"
f5be3ca5cc5b3a10747b577f60059a99862bb9a8 01-May-2014 Chris Craik <ccraik@google.com> Add more shadow control knobs

Change-Id: I1ff500bf429029a97b681ced9df652f4ee9f1332
aches.cpp
aches.h
penGLRenderer.cpp
hadowTessellator.cpp
hadowTessellator.h
52622668f91c69ec718b356d2e0f8555fc88435f 30-Apr-2014 John Reck <jreck@google.com> Use resize, not reserve

Reserve ensures the underlying buffer is the correct size, but
iterating across it is not necessarily valid. Use resize() instead
to ensure that the iterator access is valid

Change-Id: I35ff5f4416bb94cf4ce2c6acf72ffd17ab3e523a
enderNode.cpp
293513a59d36cd96a3e474dde5981380d372d8c9 30-Apr-2014 Bill Yi <byi@google.com> Merge commit '0b62467b142b61ee1e449ba958ba37dfd961ef56' into HEAD
25ff2c1ec1b0a3e33710fcf6777abd0fed809877 29-Apr-2014 John Reck <jreck@google.com> Merge "RenderThread animator support"
e45b1fd03b524d2b57cc6c222d89076a31a08bea 15-Apr-2014 John Reck <jreck@google.com> RenderThread animator support

Change-Id: Icf29098edfdaf7ed550bbe9d49e9eaefb4167084
ndroid.mk
nimator.cpp
nimator.h
nterpolator.cpp
nterpolator.h
enderNode.cpp
enderNode.h
enderProperties.cpp
enderProperties.h
reeInfo.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/RenderThread.cpp
enderthread/RenderThread.h
0d575b084fe5a691c2a99163515de0dc54f66e18 29-Apr-2014 ztenghui <ztenghui@google.com> Merge "Make sure the theta is correctly represented and incoming polygon is CW for shadow."
2e023f3827dfc0dfc1ed7c3dd54d02b4a993f0b4 29-Apr-2014 ztenghui <ztenghui@google.com> Make sure the theta is correctly represented and incoming polygon is CW for shadow.

Now the theta = 0 should be on +x axis.
And cos(theta) should correctly represent x value.
Without this fix, the poly theta (from atan2) can be wrongly rotated 90 degrees.

Also, make sure the incoming polygon is CW for the shadow system.
This fix visual artifacts in recent regression for spot shadows.

bug:13553955

Change-Id: I9bbf54db094e7f133326da4dae4610962da849c1
mbientShadow.cpp
penGLRenderer.cpp
hadowTessellator.cpp
hadowTessellator.h
potShadow.cpp
potShadow.h
cc39e16cb98855f35079941b5e7e6eac2b7bc388 26-Apr-2014 Chris Craik <ccraik@google.com> Add elevation, Z properties to View

Change-Id: I3dd3b683a66e248a0fdf2ca69d1e962615b0daf9
enderNode.cpp
enderProperties.cpp
enderProperties.h
tils/MathUtils.h
ea42e015277687cef168f960252b9d7596ff1160 14-Nov-2013 Lu, Shenghua <shenghua.lu@intel.com> libhwui: Handle the blurImage() implement once RS::init fail

Once the RS::init failed, go through the original single thread path,
this will avoid blocking the main thread(ANR), but we also should have
some implement in RenderScript component.

Change-Id: I3a21395ffd5bc144c15254893f425b1dd2643ba4
Signed-off-by: Shenghua Lu <shenghua.lu@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
ontRenderer.cpp
d2cd53d4e525d6cd5e5ff261274f4969e2e8f3fd 24-Apr-2014 ztenghui <ztenghui@google.com> Merge "Shoot the rays to the vertices of the incoming polygon."
7940dc57e3ffcf9c4a33375215f3a42250fa896c 22-Apr-2014 ztenghui <ztenghui@google.com> Shoot the rays to the vertices of the incoming polygon.

bug:13553955

Change-Id: I4825a49e8eaab969c40f2ee4086f7669c9c6fd29
mbientShadow.cpp
mbientShadow.h
hadowTessellator.h
717f39c7d98c7e4b08f7bb88102c720cb8990004 24-Apr-2014 Chris Craik <ccraik@google.com> Merge "Clip TouchFeedbackDrawable effect to receiver Outline"
3f085429fd47ebd32ac2463b3eae2a5a6c17be25 16-Apr-2014 Chris Craik <ccraik@google.com> Clip TouchFeedbackDrawable effect to receiver Outline

Projected RenderNodes are now wrapped with a ClipRect or masked
SaveLayer, so that they are clipped to the outline of the projection
receiver surface.

Change-Id: I1d4afc1bb5d638d650bc0b1dac51a498f216773e
isplayList.cpp
isplayListOp.h
isplayListRenderer.cpp
ayer.cpp
ayer.h
penGLRenderer.cpp
penGLRenderer.h
ect.h
enderNode.cpp
enderNode.h
enderer.h
kiaShader.cpp
kiaShader.h
napshot.h
tatefulBaseRenderer.h
e0bb87d4bdbd3b08ab6a8569c8e564ed59b8a5a7 23-Apr-2014 Chris Craik <ccraik@google.com> Fix translationZ matrix computation

bug:14259972

Ensure that translationZ is applied for true3dTransform property
transformations, even if the node doesn't have any other
transformation properties set.

Additionally, use fuzzy compare for translationZ, similar to
rotationX/Y, since they're expenive to leave set in rounding error
cases.

Change-Id: Idafa4423cc7751a8f433237b1f576aa7abb74f6e
enderNode.cpp
enderProperties.cpp
tils/MathUtils.h
2c423b22b42269c0652dff4155707cec823fbfc1 23-Apr-2014 Victoria Lease <violets@google.com> am df64ac68: ask skia to use flat gamma when rendering fonts from hwui

* commit 'df64ac688d400c74438db091952d236fffd5f778':
ask skia to use flat gamma when rendering fonts from hwui
df64ac688d400c74438db091952d236fffd5f778 23-Apr-2014 Victoria Lease <violets@google.com> ask skia to use flat gamma when rendering fonts from hwui

Bug: 13748392
Change-Id: I6930629b8e900628f15354f663b86dfb29a4db78
(cherry picked from commit b66270eac288de53207e55d10879b070a0ec8b6b)
ont/Font.cpp
ont/Font.h
b78263d37690a6a5cb12dd31d82ad2e140b3dfc7 23-Apr-2014 Victoria Lease <violets@google.com> Merge "ask skia to use flat gamma when rendering fonts from hwui"
b66270eac288de53207e55d10879b070a0ec8b6b 23-Apr-2014 Victoria Lease <violets@google.com> ask skia to use flat gamma when rendering fonts from hwui

Bug: 13748392
Change-Id: I6930629b8e900628f15354f663b86dfb29a4db78
ont/Font.cpp
ont/Font.h
222f33178b1547b70350ead660070eb01e56eac2 22-Apr-2014 Chris Craik <ccraik@google.com> Fix is_zero check

Fixes x/y rotations which were incorrectly disabled due to this check.

Change-Id: Ie8a7c8904c729a91b18243323b0be6110e743137
enderProperties.cpp
dbc9a86d05e5e835051de22f6cb30ec1921e9705 18-Apr-2014 John Reck <jreck@google.com> Force a full redraw on surface change

Bug: 13913604

Change-Id: Ie90c7ee74cf83358e19d8b4f0bae078540a93a8d
enderthread/CanvasContext.cpp
6f07a0dc875a9eac67312085a8e0133b9e2f4771 17-Apr-2014 John Reck <jreck@google.com> Add missing resume() call

Bug: 14087850

Change-Id: Ic555ca6027e617c7ed6e7e66b5cf713c36ed1c6c
enderthread/CanvasContext.cpp
e8a866d4a41daa43e394505e12503b32c2d929e4 14-Apr-2014 John Reck <jreck@google.com> Merge "Fix issue with bitmap uploading"
860d155f866cc15a725e7ce03763280987f24901 12-Apr-2014 John Reck <jreck@google.com> Fix issue with bitmap uploading

Bug: 13912749

Change-Id: Ic23fa1d280118dc93dc2716a4a24cc0bbbdca595
eferredLayerUpdater.cpp
eferredLayerUpdater.h
isplayListOp.h
enderNode.cpp
enderNode.h
exture.cpp
exture.h
extureCache.cpp
extureCache.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
fae904d63947fe1687d1d44be29234cc3d538f24 14-Apr-2014 John Reck <jreck@google.com> Fence on destruction

Bug: 14052927
destroyCanvasAndSurface() needs a fence as when it returns the
underlying BufferQueue is going to be released from under
the render thread.

Change-Id: I0147a1d5ec5adf0239c761ef22f65cd8c8a137df
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
286ffe4b28d2c004ce98f7ddb3a5f34441ab0d80 12-Apr-2014 Chris Craik <ccraik@google.com> Merge "Remove use-after-free signal in RenderNode"
dd35634cb0059b4b745161eb80234d8e8da38033 12-Apr-2014 Chris Craik <ccraik@google.com> Merge "Fix BitmapMesh buffer copy"
143912fef8eff58146705849a0ba441ab6163409 11-Apr-2014 Chris Craik <ccraik@google.com> Remove use-after-free signal in RenderNode

bug:9321162

mDestroyed is no longer useful, as RenderNode is ref counted (not to
mention having its lifecycle significantly redesigned).

Change-Id: I429b9dd7740362c85d6416fbae567f0d47098e4e
enderNode.cpp
enderNode.h
0664fef9e2a36025b3fad85b57b4d10617b4d66e 11-Apr-2014 Chris Craik <ccraik@google.com> Fix BitmapMesh buffer copy

Change-Id: I7c1a3651c7d91d7ff37ecbe18d974fa8cb1cf415
isplayListRenderer.cpp
f7483e3af0513a1baa8341d403df2e0c0896a9ff 11-Apr-2014 John Reck <jreck@google.com> Simplify matrix calculations

Bug: 13913604

Change-Id: I2c0f85a34e1e520050a5a6131306d6b7c352d827
enderNode.cpp
enderProperties.cpp
enderProperties.h
822bbb382fa6b6c8d1b45770e27c2c2732a7afb7 11-Apr-2014 John Reck <jreck@google.com> Merge "Make attachFunctor blocking"
d3d8dafc2f61fb118c060720b52684c59303f3db 11-Apr-2014 John Reck <jreck@google.com> Make attachFunctor blocking

Bug: 13930200

Change-Id: I9b0cf92fd16bb30baa09b6f8d7ae22a8b2a7fd80
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
8ca3eecc2b7fe507d3482745efc4cd2567ad15a1 10-Apr-2014 John Reck <jreck@google.com> Remove sync flush

Bug: 13952590
It was attempting to flush state changes after the canvas was
destroyed, which caused layer updates to crash.

Due to the removal of SetDisplayListData, the sync mode isn't able
to do anything ever, so remove it.

Change-Id: I1e18ce288d81fd47cc6e612afda9476f75ecef2e
eferredLayerUpdater.cpp
enderthread/CanvasContext.cpp
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
f4198b713e43c0c0f9adac74203cf24c2a49b802 10-Apr-2014 John Reck <jreck@google.com> Merge hasFunctors & pushStaging into prepareTree

Bug: 13902607
Fixes synchronous mode for WebView in HardwareLayers

Change-Id: I90de1e26dcfd9b75cc2f03bac72705fc23237b68
eferredLayerUpdater.cpp
eferredLayerUpdater.h
enderNode.cpp
enderNode.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
8e1f918738abf70a4dc86dbb12b386a9deea37f8 10-Apr-2014 John Reck <jreck@google.com> Merge "Switch DisplayListData to a staging model"
8de65a8e05285df52a1e6f0c1d5616dd233298a7 10-Apr-2014 John Reck <jreck@google.com> Switch DisplayListData to a staging model

Bug: 13912977

Change-Id: I5b2f664e797be22a58300964f57ceb4fab60528c
eferredLayerUpdater.cpp
penGLRenderer.cpp
enderNode.cpp
enderNode.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
972d0488a555ff65a9e18655795e65e4b5365175 09-Apr-2014 Chris Craik <ccraik@google.com> Merge "When recording a child node into a parent, read staging projection property"
f7d9c1dc84671d4e99657ef071d275700d85bb11 09-Apr-2014 John Reck <jreck@google.com> Fix ThreadedRenderer.setEnabled()

Bug: 13914116
Fixes lifecycle issues around setEnabled where ThreadedRenderer
was reporting as being enabled before it had a Surface. This is
incorrect.

Also fix some EGL lifecycle issues

Change-Id: I12ebb279707f9b533a570b61d68735d858b560bf
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
defb7f37fe67ef2389666f7adc5da1260df87017 09-Apr-2014 Chris Craik <ccraik@google.com> When recording a child node into a parent, read staging projection property

bug:13770920

The other properties should not be read from the UI thread.

Change-Id: I61d13774553d46a8963623727d8e8eeeb3385cc9
isplayListRenderer.cpp
enderNode.h
1949e7928eeec22cd3f74b5f763a4eb433238453 09-Apr-2014 John Reck <jreck@google.com> Ensure there's a GL context before creating a Layer

Bug: 13745587

Change-Id: Ib0ec059d9a5974a48734daeec9d83580cada94a3
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
e2c455264351964bf1ae78da2256c17258f0d3ea 08-Apr-2014 John Reck <jreck@google.com> Veto pool TODO

Change-Id: I50067dba630b75aa539e4406cfc15f66949684b3
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
85189c5dafb08f051c7024f42ceedcbcf5dbbc7c 08-Apr-2014 John Reck <jreck@google.com> Merge "Fence on draws that are reported"
28ad7b52e038ef0cdd89f753d9839444a434b299 08-Apr-2014 John Reck <jreck@google.com> Fence on draws that are reported

Change-Id: Ib2ec16cbda40f40df1710bdc868869ea8301f17e
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
087bc0c14bdccf7c258dce0cdef46a69a839b427 05-Apr-2014 John Reck <jreck@google.com> Refcount RenderNode

Change-Id: I7a86db8acc2b78ef33d987a43a119f5933d7d752
aches.cpp
aches.h
eferredLayerUpdater.cpp
eferredLayerUpdater.h
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
ayer.cpp
ayer.h
penGLRenderer.cpp
enderNode.cpp
enderNode.h
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
tils/VirtualLightRefBase.h
49e6c73913e9bee58ea5e3984be151ee8e033163 31-Mar-2014 Chris Craik <ccraik@google.com> Move most TransformationInfo properties to RenderNode

This change dedupes the various properties that were represented both
in TransformationInfo, and RenderProperties on the native side.

RenderNode (and its associated properties) are now permanently
attached to a View in SW or HW. The native copy of these properties
are their sole representation.

Alpha to come in a later CL.

Also fixed issue with copying RenderNode's transform, and added
support of deleting RenderNodes in software rendering.

Change-Id: Ideb6e7f32b780e87aa1c32637c368356b3eee3a1
enderNode.cpp
enderProperties.cpp
enderProperties.h
0e2806b171f135de35153a106d18d86646f4d1c0 02-Apr-2014 Ben Cheng <bccheng@google.com> am 3399ec31: am b386bfd7: am 89dddcc9: Merge "Use default visibility for Snapshot::getLocalClip."

* commit '3399ec317d8a318ca384036bc6fecf4656f1f118':
Use default visibility for Snapshot::getLocalClip.
3399ec317d8a318ca384036bc6fecf4656f1f118 02-Apr-2014 Ben Cheng <bccheng@google.com> am b386bfd7: am 89dddcc9: Merge "Use default visibility for Snapshot::getLocalClip."

* commit 'b386bfd791d77e24bcfe3261420f82b0a9d3851d':
Use default visibility for Snapshot::getLocalClip.
b386bfd791d77e24bcfe3261420f82b0a9d3851d 02-Apr-2014 Ben Cheng <bccheng@google.com> am 89dddcc9: Merge "Use default visibility for Snapshot::getLocalClip."

* commit '89dddcc948cb3e826bfddeefae73066849aba0fc':
Use default visibility for Snapshot::getLocalClip.
65ba94f79d6e737c3e66c09032221999b2eb50d7 02-Apr-2014 Ben Cheng <bccheng@google.com> Use default visibility for Snapshot::getLocalClip.

The method is in libhwui.so but used by libandroid_runtime.so
(via android_view_GLES20Canvas.cpp). If the compiler decides not to
inline this method, the linker won't be able to resolve the dependency
when it has hidden visibility.

The problem is found when testing GCC 4.9.

Change-Id: I3b4d096c7767f0bef0796886dfb2c5ba2ecff48c
napshot.h
0d1f634f4b5e1bb37aa51777efb6a68619488d01 29-Mar-2014 John Reck <jreck@google.com> Add invokeFunctor

Change-Id: I09e675d3e02e3e528642175ada00b2b17fab7652
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
c75db8266b352ef3a7a6b76654f770d7a24d547a 29-Mar-2014 John Reck <jreck@google.com> Merge "Remove kStatusInvoke & kStatusDraw"
750ca6dbdb259aea0ca5b77380a9303e586ef3ea 29-Mar-2014 John Reck <jreck@google.com> Remove kStatusInvoke & kStatusDraw

They are unused

Change-Id: I44ecf1164dc6bc1b09438e733976d5a97a25f00e
penGLRenderer.cpp
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
b265e2ca50b6ceb2fd2987ef1f7d063b1bde19ae 27-Mar-2014 Chris Craik <ccraik@google.com> Support shadows on the root RenderNode

bug:13211941

Cleans up some of the RenderNode method naming

Also removes unnecessary clip/save/restores, clipping shadows
predictably, as drawn by the parent, before drawing (and clipping,
etc.) the shadow casting child.

Change-Id: I795115e1fb869bbbdd7be43e279b97490fecc7e0
isplayListOp.h
ayer.cpp
penGLRenderer.cpp
enderNode.cpp
enderNode.h
08c96b5515f061f61e13b348f6022ce7c586e4c4 28-Mar-2014 Chris Craik <ccraik@google.com> Merge "Disable shadow overdraw avoidance in the inverse clip case"
024433f89684e1f9cb7b15ade7c480c9346fbe4d 26-Mar-2014 Chris Craik <ccraik@google.com> Disable shadow overdraw avoidance in the inverse clip case

The caster is effectivly transparent, so skip the optimization just as
is done for alpha < 1.0

Change-Id: I3d294222adf0137e20c1fb5808313d487e92e0a8
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
enderNode.cpp
07b6c552e6243c4f69a9c07ed9a08df78ff6d25e 27-Mar-2014 John Reck <jreck@google.com> Merge "Async drawing!"
668f0e38ef0277d55d3118af37e17b8c435df85c 26-Mar-2014 John Reck <jreck@google.com> Async drawing!

Change-Id: I7e728356f58af88174328a8c0b90d27b128bfe01
ndroid.mk
eferredLayerUpdater.cpp
eferredLayerUpdater.h
ayer.cpp
ayer.h
enderNode.cpp
enderNode.h
enderthread/CanvasContext.cpp
enderthread/DrawFrameTask.cpp
enderthread/DrawFrameTask.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
ecd072161ec57ba8dfb26659511c0f6605601560 27-Mar-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of 22d07464 to master

Change-Id: Ic037261eedd6e224938c960d2b4597590c81ed9d
22d074643ed0d010ebfdb0fca685d65eb2632e58 27-Mar-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of eaab4df0 to klp-modular-dev-plus-aosp

Change-Id: I871431e5a3ce45a33563ced845e044d37471689b
eaab4df0ddadf313ab6b3c832896003968525091 27-Mar-2014 Narayan Kamath <narayan@google.com> am cd3f60f3: Merge "AArch64: Make frameworks/base code more portable"

* commit 'cd3f60f30366a34b4499aab5a47b622069ba9cd6':
AArch64: Make frameworks/base code more portable
f5df700e6ce056ebfa322314d970e52d6facc35a 25-Mar-2014 Ashok Bhat <ashok.bhat@arm.com> AArch64: Make frameworks/base code more portable

Changes in this patch include

[x] Use %zu for size_t, %zd for ssize_t

[x] Some minor changes have been done to conform with
standard JNI practice (e.g. use of jint instead of int
in JNI function prototypes)

Change-Id: Id1aaa7894a7d0b85ac7ecd7b2bfd8cc40374261f
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Craig Barber <craig.barber@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
esourceCache.cpp
62828dfca2b009d42a414b60117d7f34034841f8 26-Mar-2014 Chris Craik <ccraik@google.com> Merge "Add private circular reveal API on View/RenderNode"
8c271ca63b62061fd22cfee78fd6a574b44476fd 25-Mar-2014 Chris Craik <ccraik@google.com> Add private circular reveal API on View/RenderNode

Change-Id: I139c8e12b354083149a665f6768f3f6931a8dd15
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
utline.h
enderNode.cpp
enderProperties.cpp
enderProperties.h
evealClip.h
e08f16695540009bed99a9b5c5147188edb496e6 25-Mar-2014 Chris Craik <ccraik@android.com> am 72cf99ab: am 7e55b35a: am 4118480a: am 80470cdf: Merge "Solve three memory leaks related to PatchCache"

* commit '72cf99abdb6648f9346b72e0ef6d4da3c4dc9d17':
Solve three memory leaks related to PatchCache
72cf99abdb6648f9346b72e0ef6d4da3c4dc9d17 25-Mar-2014 Chris Craik <ccraik@android.com> am 7e55b35a: am 4118480a: am 80470cdf: Merge "Solve three memory leaks related to PatchCache"

* commit '7e55b35a603fe64e8db2c6050a1b778baaccd920':
Solve three memory leaks related to PatchCache
7e55b35a603fe64e8db2c6050a1b778baaccd920 25-Mar-2014 Chris Craik <ccraik@android.com> am 4118480a: am 80470cdf: Merge "Solve three memory leaks related to PatchCache"

* commit '4118480aabb4a7b332e289ebb71d2e4f9bc05d7e':
Solve three memory leaks related to PatchCache
6fe434a41b378c601189c70cbe209171588d92c4 25-Mar-2014 Chris Craik <ccraik@android.com> am 4118480a: am 80470cdf: Merge "Solve three memory leaks related to PatchCache"

* commit '4118480aabb4a7b332e289ebb71d2e4f9bc05d7e':
Solve three memory leaks related to PatchCache
4118480aabb4a7b332e289ebb71d2e4f9bc05d7e 25-Mar-2014 Chris Craik <ccraik@android.com> am 80470cdf: Merge "Solve three memory leaks related to PatchCache"

* commit '80470cdf6c6995f4afe8d5e2c4b6e898625173fb':
Solve three memory leaks related to PatchCache
bcad68ad80e5a44e5dc6988eddb8acabdc01a737 25-Mar-2014 John Reck <jreck@google.com> Merge "Move where updateProperties is called"
632717e60990b900e6d20dddd3935a57dd6a8fa6 25-Mar-2014 John Reck <jreck@google.com> Merge "Add missing null check"
5bf11bb98f5dbe278c257355d24c181237abd68c 25-Mar-2014 John Reck <jreck@google.com> Add missing null check

Bug: 13635394
mDisplayListData can be null, make sure
to check for that before trying to walk through the
children list in updateProperties

Change-Id: I8d97b1656c1acf47b7c5df8a8771b0f30907261d
enderNode.cpp
bfb07a03777af424e99bca1dac4c903aaf44e99d 25-Mar-2014 John Reck <jreck@google.com> Move where updateProperties is called

Change-Id: I27da448996019094c44487ce28c5689d098d6535
eferredLayerUpdater.cpp
ayer.cpp
penGLRenderer.cpp
enderNode.h
enderthread/CanvasContext.cpp
6056e1027107aaa15f51a5ed775ff14c6b664ca3 04-Feb-2014 Jens Gulin <jens.gulin@sonymobile.com> Solve three memory leaks related to PatchCache

A Patch can be fairly large, holding bitmap data, but
is also frequently leaked which adds to the severity.
The feature is used in many important processes such
as Home, SystemUI and Chrome.

The following leaks are solved:

1. The Patch itself was not always freed.
PatchCache::removeDeferred() can mark patches to be
cared for by PatchCache::clearGarbage(). But
mCache.remove() would only destroy the container
and the pointer, not the Patch object itself.

2. The vertices stored in the Patch at Patch::createMesh()
would always leak. The empty/default destructor in Patch
would not properly destroy "vertices" since it's just a
pointer.

3. A BufferBlock that's added to the mFreeBlocks
in PatchCache could leak. The leak happened when a
patch later needed the entire free block, because the
object was removed from the list but never deleted
in PatchCache::setupMesh().

Change-Id: I41e60824479230b67426fc546d3dbff294c8891f
atch.cpp
atchCache.cpp
78ce1c5247de60a4247d81d168fd9fa97c7591d0 24-Mar-2014 John Reck <jreck@google.com> Add back clobbered cleanup

Change-Id: I418b612710850bbc3033c4bd0143fb0f0befd2cb
enderProperties.cpp
d0a0b2a3140bfb1819a116413ce9d81886697a07 21-Mar-2014 John Reck <jreck@google.com> Add stagingProperties

Change-Id: Ic7de551f8843fd70a77f738e33028e25c020bb3c
ayer.cpp
penGLRenderer.cpp
utline.h
enderNode.cpp
enderNode.h
enderProperties.cpp
enderProperties.h
b49f446c98096c4790a11d9b5bc83a4e585278c9 20-Mar-2014 Chris Craik <ccraik@google.com> Rework Outline API, remove isolatedZVolume remnants

Change-Id: I30c2fe832dcb98fa6329b1a595b3d3aafbdcad6b
utline.h
enderNode.cpp
enderProperties.cpp
enderProperties.h
32ff540c74623d92a8bf1e0a0ae3153a7a6d13e4 20-Mar-2014 ztenghui <ztenghui@google.com> Merge "Early rejection on shadows which are outside of the clip bound."
af6f7ed8dd4288a41d0a07a1f0f0be7d6d035b33 19-Mar-2014 ztenghui <ztenghui@google.com> Early rejection on shadows which are outside of the clip bound.

All the computations are estimated using bounding box.
TODO: Spot shadow could have more accurate but also more expensive methods, we need
more experiments to decide.

Change-Id: I9c10c419576cee55daf0f9f278b0db78cb847447
penGLRenderer.cpp
ect.h
hadowTessellator.cpp
hadowTessellator.h
2488727a5955c87d775df23649919af71d064d13 03-Dec-2013 Leon Scroggins III <scroggo@google.com> Update framework to use M33 Skia. DO NOT MERGE

(These CLs are already in master.)

Bug: 13246311

This cherry-picks 7 CLs:

-----------------------------------------------------------------------

Remove calls to deprecated SkBitmap::setIsOpaque()

setIsOpaque() has been removed from ToT Skia.

Update setters for mIsPremultiplied and hasAlpha to take the
other into consideration.

cherry-pick from: I1b36b0b0ce7126031eb7b769b563c17dcd4b306a

-----------------------------------------------------------------------

Merge AssetStream with AssetStreamAdaptor.

Add enums to the constructor for AssetStreamAdaptor to choose the
different behaviors used by the (former) two different classes.

The old clients of AssetStream now get the following features of
AssetStreamAdaptor
- Debugging statements on error.
- The stream is an SkStreamRewindable.
- getLength() returns the correct value, and the old way of getting
the length (read(NULL, 0)) is no longer implemented, since it is
no longer used.
- isAtEnd() returns the correct value. ToT Skia makes it pure virtual,
so some implementation is necessary.

cherry-pick from: I2a5395914e4f53830aaefee396556459083a1c56

-----------------------------------------------------------------------

Deprecate Android-specific SkPaint functions.

The following functions were problematic:
const SkGlyph& getUnicharMetrics(SkUnichar, const SkMatrix*);
const SkGlyph& getGlyphMetrics(uint16_t, const SkMatrix*);
const void* findImage(const SkGlyph&, const SkMatrix*);

Replacing them with calls through SkGlyphCache solved a nasty crash
bug, so they have all been deprecated.

Bug: 11968757
cherry-pick from: Id746315d41aec5b211b78b172a883c2061130f08

-----------------------------------------------------------------------

pass SkGlyphCache into updateGlyphCache()

Doing so prevents us from double-locking the glyph cache, thereby
effectively locking ourselves out of reusing work that we'd just done.

Bug: 11968757
cherry-pick from: I5c552f2d0bbe30af2ce9054ba684e7da756a0d89

-----------------------------------------------------------------------

Updates to the Skia API needed to merge the WebView m33 version of Skia.

cherry-pick from: I0f63b53f2aae58871413b132742fc84138f069a3

Bugfix for screenshots (recent apps) due to incorrect rowBytes computation

bug: 12915192
cherry-pick from: I4d5fe2a2f75baf66099e0970fb646686a1992714

-----------------------------------------------------------------------

Fix bug in AndroidPixelRef where we did not store the correct imageInfo for a recycled bitmap.

cherry-pick from: I882483b78886e2f19fa4e43a86e69f5a82b3b7e5

-----------------------------------------------------------------------

Change-Id: Icaf597783da3ffb079ea18badb78fa31403bf8b8
extureCache.cpp
db2895e97745c68924b831701a2bf76e13a5025a 20-Mar-2014 Chris Craik <ccraik@google.com> am 4eefde23: am 29f00c9f: am 7c9bd98a: am 89513ee5: Merge "Fix projection offset caching - DO NOT MERGE" into klp-dev

* commit '4eefde23de23a5e9145a634e843964f6f6eaa6bd':
Fix projection offset caching - DO NOT MERGE
4eefde23de23a5e9145a634e843964f6f6eaa6bd 20-Mar-2014 Chris Craik <ccraik@google.com> am 29f00c9f: am 7c9bd98a: am 89513ee5: Merge "Fix projection offset caching - DO NOT MERGE" into klp-dev

* commit '29f00c9f35d8565bb3e6b8a2526cbb237db6446a':
Fix projection offset caching - DO NOT MERGE
d23d5b192ad718a374efc2cc6460659f3b1edfb9 20-Mar-2014 Chris Craik <ccraik@google.com> am 7c9bd98a: am 89513ee5: Merge "Fix projection offset caching - DO NOT MERGE" into klp-dev

* commit '7c9bd98a4bb0aa6954d5f612c197d03f309980f0':
Fix projection offset caching - DO NOT MERGE
29f00c9f35d8565bb3e6b8a2526cbb237db6446a 20-Mar-2014 Chris Craik <ccraik@google.com> am 7c9bd98a: am 89513ee5: Merge "Fix projection offset caching - DO NOT MERGE" into klp-dev

* commit '7c9bd98a4bb0aa6954d5f612c197d03f309980f0':
Fix projection offset caching - DO NOT MERGE
c5dc251e2219cc3e96c3c91a3c3ff4a120e21912 20-Mar-2014 John Reck <jreck@google.com> Merge "Move RenderNode to own file"
113e0824d6bddf4376240681f9cf6a2deded9498 18-Mar-2014 John Reck <jreck@google.com> Move RenderNode to own file

Change-Id: I9380d161fd3ddd7b569c262dd8e7aa0c96151b1e
ndroid.mk
eferredLayerUpdater.h
isplayList.cpp
isplayList.h
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
enderNode.cpp
enderNode.h
5d39a77992ba6573fbc0cd4d85e0390bb5feb637 29-Jan-2014 Chris Craik <ccraik@google.com> Fix projection offset caching - DO NOT MERGE

bug:13214038

Because the caching of projection matrix didn't account for changes in
the offset flag, the flag could be ignored. Now we use both to verify
that the cached matrix can be used.

Change-Id: I193b94eaf0b98f046a6484f0866c3d25048653fd
(cherry picked from commit d04a6b15f74035fd2068f34225825b55e94521f4)
rogram.cpp
rogram.h
bd6e460b761c51c11adfea9a9ce4e5e7e95caa07 19-Mar-2014 ztenghui <ztenghui@google.com> Merge "Get rid of useless code"
28c3ea018771562a9150f30c6a088e5bf7502972 18-Mar-2014 ztenghui <ztenghui@google.com> Get rid of useless code

Change-Id: I7fedd0df349e1d9408d58edcab25396e2ff2edd6
potShadow.cpp
3ebdf0021796d94e82392f0308cd81a4887080c5 18-Mar-2014 John Reck <jreck@google.com> Merge "Fix functor removal"
16efa9a330fcf10a09cc9564e9d319c6f4be2ae1 18-Mar-2014 John Reck <jreck@google.com> Fix functor removal

Bug: 12179257

Change-Id: Ib63a351b1b289b08452f17086cb6c8b688e2ba4d
enderthread/CanvasContext.cpp
d5a8503c7a7bff3876226ac4b47e6bce51d7d85a 17-Mar-2014 ztenghui <ztenghui@google.com> Merge "Fix the missing spot shadow when DEBUG_SHADOW is turned on"
99af9429cda84ad0af1d7fcecb580295b0046882 14-Mar-2014 ztenghui <ztenghui@google.com> Fix the missing spot shadow when DEBUG_SHADOW is turned on

In the current design, this error should be tolerated since the delta should
be small enough. So we should not return here.

Change-Id: I251db2882b331d37ae7f0896e9aa95d69a5650da
potShadow.cpp
630c0abaea1b35b4626a1d752bd04f28529801e1 17-Mar-2014 ztenghui <ztenghui@google.com> Merge "Create one hole inside the umbra area to avoid overdraw."
34f67f26e355925aa1e00a20bc11e09b8dc32988 17-Mar-2014 Chris Craik <ccraik@google.com> Remove castsShadow and globalCamera APIs

Change-Id: I5c1c375f45946609b1635d952c5adf55e23bdd60
isplayList.cpp
enderProperties.cpp
enderProperties.h
618236fe886b84f99cd7c48ece96b16f82a9d2b2 17-Mar-2014 Chris Craik <ccraik@google.com> Revert "Remove castsShadow and globalCamera APIs"

This reverts commit 0334c314a5721f49b4d172a9cefe10f157cb28a4.

Change-Id: I64714d17fb877e1b43c65eb44820d1128281c7a2
isplayList.cpp
enderProperties.cpp
enderProperties.h
0334c314a5721f49b4d172a9cefe10f157cb28a4 15-Mar-2014 Chris Craik <ccraik@google.com> Remove castsShadow and globalCamera APIs

Change-Id: I4d81a7849eba60a1a9debce74eedd55d6331842d
isplayList.cpp
enderProperties.cpp
enderProperties.h
50ecf849cb7ccc3482517b74d2214b347927791e 12-Mar-2014 ztenghui <ztenghui@google.com> Create one hole inside the umbra area to avoid overdraw.

bug:13439450

Change-Id: I859575196bd5a3029f447883025a6ec3a1f1face
mbientShadow.cpp
mbientShadow.h
aches.cpp
penGLRenderer.cpp
penGLRenderer.h
hadowTessellator.cpp
hadowTessellator.h
potShadow.cpp
potShadow.h
7e6fe28b12bf936cc8c5c5f689a6aef6b7f21625 17-Mar-2014 Leon Scroggins III <scroggo@google.com> am 96978ee2: am f8d8777d: Update framework to use M33 Skia. DO NOT MERGE

* commit '96978ee290ea0ef666c49ffa8733a8c74304c9f1':
Update framework to use M33 Skia. DO NOT MERGE
96978ee290ea0ef666c49ffa8733a8c74304c9f1 17-Mar-2014 Leon Scroggins III <scroggo@google.com> am f8d8777d: Update framework to use M33 Skia. DO NOT MERGE

* commit 'f8d8777dddf91c741981b4f795f2fb2b1d81c1b6':
Update framework to use M33 Skia. DO NOT MERGE
f8d8777dddf91c741981b4f795f2fb2b1d81c1b6 03-Dec-2013 Leon Scroggins III <scroggo@google.com> Update framework to use M33 Skia. DO NOT MERGE

(These CLs are already in master.)

Bug: 13246311

This cherry-picks 7 CLs:

-----------------------------------------------------------------------

Remove calls to deprecated SkBitmap::setIsOpaque()

setIsOpaque() has been removed from ToT Skia.

Update setters for mIsPremultiplied and hasAlpha to take the
other into consideration.

cherry-pick from: I1b36b0b0ce7126031eb7b769b563c17dcd4b306a

-----------------------------------------------------------------------

Merge AssetStream with AssetStreamAdaptor.

Add enums to the constructor for AssetStreamAdaptor to choose the
different behaviors used by the (former) two different classes.

The old clients of AssetStream now get the following features of
AssetStreamAdaptor
- Debugging statements on error.
- The stream is an SkStreamRewindable.
- getLength() returns the correct value, and the old way of getting
the length (read(NULL, 0)) is no longer implemented, since it is
no longer used.
- isAtEnd() returns the correct value. ToT Skia makes it pure virtual,
so some implementation is necessary.

cherry-pick from: I2a5395914e4f53830aaefee396556459083a1c56

-----------------------------------------------------------------------

Deprecate Android-specific SkPaint functions.

The following functions were problematic:
const SkGlyph& getUnicharMetrics(SkUnichar, const SkMatrix*);
const SkGlyph& getGlyphMetrics(uint16_t, const SkMatrix*);
const void* findImage(const SkGlyph&, const SkMatrix*);

Replacing them with calls through SkGlyphCache solved a nasty crash
bug, so they have all been deprecated.

Bug: 11968757
cherry-pick from: Id746315d41aec5b211b78b172a883c2061130f08

-----------------------------------------------------------------------

pass SkGlyphCache into updateGlyphCache()

Doing so prevents us from double-locking the glyph cache, thereby
effectively locking ourselves out of reusing work that we'd just done.

Bug: 11968757
cherry-pick from: I5c552f2d0bbe30af2ce9054ba684e7da756a0d89

-----------------------------------------------------------------------

Updates to the Skia API needed to merge the WebView m33 version of Skia.

cherry-pick from: I0f63b53f2aae58871413b132742fc84138f069a3

Bugfix for screenshots (recent apps) due to incorrect rowBytes computation

bug: 12915192
cherry-pick from: I4d5fe2a2f75baf66099e0970fb646686a1992714

-----------------------------------------------------------------------

Fix bug in AndroidPixelRef where we did not store the correct imageInfo for a recycled bitmap.

cherry-pick from: I882483b78886e2f19fa4e43a86e69f5a82b3b7e5

-----------------------------------------------------------------------

Change-Id: Ie2b731a9f0795802418cfecddb4b684c92c64d33

Conflicts:
core/jni/android/graphics/Bitmap.cpp
core/jni/android/graphics/Graphics.cpp
core/jni/android/graphics/Typeface.cpp
graphics/java/android/graphics/Bitmap.java
extureCache.cpp
ont/Font.cpp
ont/Font.h
ont/FontUtil.h
acb6f07623b7df3d4179f70ae03ade574616ffa6 13-Mar-2014 John Reck <jreck@google.com> Split out RenderProperties

Change-Id: Ia9888b4fb2c849d95a8c395cafef2e2294a23aae
ndroid.mk
isplayList.cpp
isplayList.h
enderProperties.cpp
enderProperties.h
33896588e8f62815d3ea2bfcea59332070acf988 12-Mar-2014 John Reck <jreck@google.com> No-op isolatedZVolumen property

Change-Id: I7aa474d65a3d12efd4ffb731e07ee42f4d348183
isplayList.cpp
isplayList.h
361fd3d2ff302d60a49ae2d2d1cc61cb5fdb0ece 12-Mar-2014 John Reck <jreck@google.com> Merge "Rename DisplayList->RenderNode"
e18264b079481a244b30e3f71012c53bbd861f92 12-Mar-2014 John Reck <jreck@google.com> Rename DisplayList->RenderNode

Change-Id: Id42e23c9a1a6eb6eaeafef707ced7fa6887b03d0
aches.cpp
aches.h
eferredLayerUpdater.cpp
eferredLayerUpdater.h
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
ayer.h
penGLRenderer.cpp
penGLRenderer.h
enderer.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
b98f2116f5896acb4b221015b22624a3c5d5a7fe 12-Mar-2014 Chris Craik <ccraik@google.com> Force shadow casters above the Z=0 plane

Change-Id: Ifee75414829d4bfb3c7aa6219f1f9bcfd50ff0c6
penGLRenderer.cpp
hadowTessellator.h
potShadow.cpp
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
isplayList.cpp
isplayList.h
isplayListOp.h
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
potShadow.cpp
ector.h
e361ad7ab15fcf4919a56a6293689d968ee8dcff 11-Mar-2014 Chris Craik <ccraik@google.com> Remove experimental perspective projection

Change-Id: Iad688c8395ccd4673cc129973802b5f01dfb45ba
aches.cpp
aches.h
isplayList.cpp
atrix.cpp
atrix.h
penGLRenderer.cpp
726118b35240957710d4d85fb5747e2ba8b934f7 08-Mar-2014 Chris Craik <ccraik@google.com> Improve shadow tessellation performance

- Tune and simplify shadow parameters
- Remove additional inner rings
- Improve polygon ray casting algorithm

Change-Id: If0f28b2d66ae0480b675942bb65e8fcd2864425d
mbientShadow.cpp
aches.cpp
isplayList.cpp
hadowTessellator.cpp
hadowTessellator.h
potShadow.cpp
potShadow.h
a742ca4017c93c18c421af20651494624469ed78 11-Mar-2014 Narayan Kamath <narayan@google.com> am bbf82665: am 6e2fb587: Merge "LP64: Make 9 patches architecture agnostic."

* commit 'bbf826659e8e5d0be683b2459207c495303d53b6':
LP64: Make 9 patches architecture agnostic.
fa03b57295f7c73372bb62b0a1a3e906c3ee659e 11-Mar-2014 Chris Craik <ccraik@android.com> am 7b4cce68: am c3bac8a0: Merge "Fix graphics corruption caused by HWUI caches"

* commit '7b4cce68853d8bcfce2b6bd7f999915063eb56d2':
Fix graphics corruption caused by HWUI caches
be34f2f3b340196426bdf558b28951359a4d84fa 10-Mar-2014 John Reck <jreck@google.com> DisplayList lifecycle changes

Bug: 13360343
Change DisplayList to be more forgiving with weaker lifecycle
requirements. Is more self-managed with a strong reference
to the renderer it needs

Also fix naming mismatch

Change-Id: I5c89453a72a52954f6f959f0846199705dbb6476
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
b5c4e7fd3866bbe30d7ea4d7bc463da5a70970e2 10-Mar-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of 92860a74 to master

Change-Id: I3036ef9f1251c756092dc5ee2c4fed8146855e1e
92860a74c6e57fb66b28afe95c13e7c0f97f831e 10-Mar-2014 Narayan Kamath <narayan@google.com> am 8272c84c: am bbf82665: am 6e2fb587: Merge "LP64: Make 9 patches architecture agnostic."

* commit '8272c84cb531a4f148f0b0a31d8359d381137378':
LP64: Make 9 patches architecture agnostic.
bbf826659e8e5d0be683b2459207c495303d53b6 10-Mar-2014 Narayan Kamath <narayan@google.com> am 6e2fb587: Merge "LP64: Make 9 patches architecture agnostic."

* commit '6e2fb587d71631bd29fdb844a6451d68e2144337':
LP64: Make 9 patches architecture agnostic.
6381dd4ff212a95be30d2b445d40ff419ab076b4 03-Mar-2014 Narayan Kamath <narayan@google.com> LP64: Make 9 patches architecture agnostic.

The Res_png_9patch struct had several pointer members
whose size differed between 32 and 64 bit platforms.

These members have been replaced by uint32_t offsets
to serialized data. The serialized form for 9patches
places a Res_png_9patch object at the beginning of
serialized data, followed by int32_t arrays of xDivs,
yDivs and colors.

Note that these offsets are not strictly required,
since they can be computed from the values of numXDivs,
numYDivs & numColors, however they are called in tight
loops so having them computed once is a beneficial.

This change also removed the unused patch_equals function
from aapt's Image.cpp.

Change-Id: I3b9ac8ae5c05510d41377cae4dff1c69b40c2531
atch.cpp
atch.h
126fbb6ec902a135173aabbddedf19a7717ea768 08-Mar-2014 Narayan Kamath <narayan@google.com> am 19256340: am 22c66639: Merge "Fixes for 64bit in libhwui"

* commit '192563407964926537d688d4098054c3834341c0':
Fixes for 64bit in libhwui
9edb96b533317e781384616b38502cc324f65d34 08-Mar-2014 Chris Craik <ccraik@google.com> Merge "Update tessellation tracing"
87f9df880e4a5bfba65d2ed413b3ead649595129 07-Mar-2014 Chris Craik <ccraik@google.com> Update tessellation tracing

Change-Id: I6c73f2467817412d9936dde217df9938a6884003
athTessellator.cpp
hadowTessellator.cpp
cde786835676f14c4d24cc4769a2de7ead853c5c 07-Mar-2014 Narayan Kamath <narayan@google.com> am b152473f: am 9fce8535: Merge "AArch64: Make AssetAtlasService 64-bit compatible"

* commit 'b152473f46d8176e7eb2c55b54342a7a29c525cf':
AArch64: Make AssetAtlasService 64-bit compatible
42ae4cf2ce5ba02c2211813452badc07eab33735 07-Mar-2014 Leon Scroggins III <scroggo@google.com> Merge "resolved conflicts for merge of 8d3281f5 to klp-dev-plus-aosp" into klp-dev-plus-aosp
e648c19bf33ce78b3f67b7ffd95c92fd6996c418 07-Mar-2014 Leon Scroggins III <scroggo@google.com> resolved conflicts for merge of 8d3281f5 to klp-dev-plus-aosp

Change-Id: If2855ff4f7a1e7645c69af378955868f44187376
a88bdf8d46c94c8729c65e156ec15ebfb8c5a1c7 07-Mar-2014 John Reck <jreck@google.com> Make sure we register functor count

Bug: 13339664

Change-Id: Iafb8ba77bdf1d971c1d0a345ff525e7f7fa80352
isplayList.cpp
ef8c07c86fb810d4052fa9fa62751c46234299e9 06-Mar-2014 Chris Craik <ccraik@google.com> Merge "Draw shadows from casters together if the Z values are similar"
5e49b497ae2019586937aae0e8159292363728b5 03-Dec-2013 Leon Scroggins III <scroggo@google.com> Update framework to use M33 Skia. DO NOT MERGE

(These CLs are already in master.)

Bug: 13246311

This cherry-picks 7 CLs:

-----------------------------------------------------------------------

Remove calls to deprecated SkBitmap::setIsOpaque()

setIsOpaque() has been removed from ToT Skia.

Update setters for mIsPremultiplied and hasAlpha to take the
other into consideration.

cherry-pick from: I1b36b0b0ce7126031eb7b769b563c17dcd4b306a

-----------------------------------------------------------------------

Merge AssetStream with AssetStreamAdaptor.

Add enums to the constructor for AssetStreamAdaptor to choose the
different behaviors used by the (former) two different classes.

The old clients of AssetStream now get the following features of
AssetStreamAdaptor
- Debugging statements on error.
- The stream is an SkStreamRewindable.
- getLength() returns the correct value, and the old way of getting
the length (read(NULL, 0)) is no longer implemented, since it is
no longer used.
- isAtEnd() returns the correct value. ToT Skia makes it pure virtual,
so some implementation is necessary.

cherry-pick from: I2a5395914e4f53830aaefee396556459083a1c56

-----------------------------------------------------------------------

Deprecate Android-specific SkPaint functions.

The following functions were problematic:
const SkGlyph& getUnicharMetrics(SkUnichar, const SkMatrix*);
const SkGlyph& getGlyphMetrics(uint16_t, const SkMatrix*);
const void* findImage(const SkGlyph&, const SkMatrix*);

Replacing them with calls through SkGlyphCache solved a nasty crash
bug, so they have all been deprecated.

Bug: 11968757
cherry-pick from: Id746315d41aec5b211b78b172a883c2061130f08

-----------------------------------------------------------------------

pass SkGlyphCache into updateGlyphCache()

Doing so prevents us from double-locking the glyph cache, thereby
effectively locking ourselves out of reusing work that we'd just done.

Bug: 11968757
cherry-pick from: I5c552f2d0bbe30af2ce9054ba684e7da756a0d89

-----------------------------------------------------------------------

Updates to the Skia API needed to merge the WebView m33 version of Skia.

cherry-pick from: I0f63b53f2aae58871413b132742fc84138f069a3

Bugfix for screenshots (recent apps) due to incorrect rowBytes computation

bug: 12915192
cherry-pick from: I4d5fe2a2f75baf66099e0970fb646686a1992714

-----------------------------------------------------------------------

Fix bug in AndroidPixelRef where we did not store the correct imageInfo for a recycled bitmap.

cherry-pick from: I882483b78886e2f19fa4e43a86e69f5a82b3b7e5

-----------------------------------------------------------------------

Change-Id: Ie2b731a9f0795802418cfecddb4b684c92c64d33
extureCache.cpp
ont/Font.cpp
ont/Font.h
ont/FontUtil.h
eea6ef9c767c734797912022113191dd255c4ae6 06-Mar-2014 Chris Craik <ccraik@google.com> Fix warnings in hwui

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

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

Change-Id: I53418d580c98f706e971545cff81b9921c12cc5f
isplayList.cpp
isplayList.h
isplayListRenderer.cpp
isplayListRenderer.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
67862524056ee2e73a94395139bb8bd0ec1ef38a 28-Feb-2014 Chris Craik <ccraik@google.com> Fix use of Skia deprecated methods

Change-Id: Ib89c20fc94bcce29b7490d6f55c73492735befda
isplayListOp.h
penGLRenderer.cpp
da3f525759d4b875fd6a498cbe22f7bc9e53aa83 27-Feb-2014 Chris Craik <ccraik@google.com> Merge "Fix TextureView texture filtering."
950fe8f8d4d654e645fa7205ca275b5a03feb214 27-Feb-2014 Derek Sollenberger <djsollen@google.com> Cleanup unnecessary includes for libskia.

The libskia target exports all of its public includes directories so
redefining them here is redundant. Also this cleans up and makes it
obvious where the framework is making using of private Skia headers.

Change-Id: Ie7ecc9ddd3df780bed6b9af54ba58ca58274e043
ndroid.mk
f85da42512d5dd76a899097907974b48b887be60 26-Feb-2014 Chris Craik <ccraik@google.com> Fix build - DO NOT MERGE

Change-Id: I1ab7c369082d1d2aa4f4ed11354c13ff86582410
extureCache.cpp
300bdfa13dd903c9335c11838cc0a604d0f8f2e6 26-Feb-2014 Chris Craik <ccraik@android.com> am 328b7ee6: am aecb8c43: am 7b4cce68: am c3bac8a0: Merge "Fix graphics corruption caused by HWUI caches"

* commit '328b7ee6a2ba2dc8f162fa57dbafd4bfc89bb72e':
Fix graphics corruption caused by HWUI caches
2c42b79c6ce5a1229e7f6cccb4b39b54435737c8 26-Feb-2014 Chris Craik <ccraik@google.com> Fix AOSP build - DO NOT MERGE

Change-Id: I42b420c2ce89ce364a2809b28b827964e6923fa1
extureCache.cpp
36fad8f6fcfbc2087b910600ed5a6f9741177d00 09-Jan-2014 Sangkyu Lee <sk82.lee@lge.com> Fix graphics corruption caused by HWUI caches

Some caches(PatchCache, TextureCache, PathCache) for HWUI
uses deferred removal for their cache entries even though
actual resource objects are immediately freed by
ResourceCache.
For this reason, the uniqueness of a resource address in
the caches is not guaranteed in specific cases.
(Because malloc() can return the same address when malloc()
and free() called very frequently.)

So it can be possible the cache have two cache entries for
two different resources but the same memory address.
(Of course one of the resources is already freed.)
It also can be possible mGarbage vector in PatchCache has
duplicated addresses and this can lead to duplicated free
blocks in the free block list and graphics corruption.
(Deferred removal was implmeneted based on an assumption of
unique resource addresses.)

So this patch makes sure resource objects are freed after
the resources are removed from the caches to guarantee
the uniqueness of a resource address and prevent graphics
corruption.

Change-Id: I040f033a4fc783d2c4bc04b113589657c36fb15b
Signed-off-by: Sangkyu Lee <sk82.lee@lge.com>
atchCache.cpp
athCache.cpp
esourceCache.cpp
extureCache.cpp
9757ac0b9d62f6aea5e47cfb375f445c78bb7897 26-Feb-2014 Chris Craik <ccraik@google.com> Fix TextureView texture filtering.

bug:11748993

TextureView should always be drawn with linear filtering if drawing a
buffer sized differently from the layer.

This fixes a bug where TextureViews that were sized differently from
their contents wouldn't be drawn with texture filtering, causing
visible scaling artifacts.

Change-Id: I8a5d27452fe7269ec53896992f37cff51e3ce15a
eferredLayerUpdater.cpp
ayer.cpp
ayer.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
8198c3a8f525c07e2b848852f6ad3e351e3b5461 26-Feb-2014 ztenghui <ztenghui@google.com> Merge "Use pre-computed index to draw the shadow."
63d41abb40b3ce40d8b9bccb1cf186e8158a3687 14-Feb-2014 ztenghui <ztenghui@google.com> Use pre-computed index to draw the shadow.

Also draw the umbra part as triangle fans instead of zig zag fashion.

b/12840179

Change-Id: Iaa5d15e77351acdd71f076bd8f9bb2d4d2b92faf
mbientShadow.cpp
mbientShadow.h
aches.cpp
aches.h
ontRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
hadowTessellator.cpp
hadowTessellator.h
potShadow.cpp
potShadow.h
919e95cc23d3567345719f2466e089682608638e 22-Feb-2014 Chris Craik <ccraik@google.com> Modulate shadow alpha by caster alpha

Change-Id: Ibc4b3958feb3b5dba91d30af470d76555a6209c8
isplayList.cpp
penGLRenderer.cpp
35eeb2d859d0e535b4d23bfd52db76db38b1551c 21-Feb-2014 Narayan Kamath <narayan@google.com> am 61910447: am 7942397b: am 19256340: am 22c66639: Merge "Fixes for 64bit in libhwui"

* commit '6191044729b2dace9c9b4b15b19a8839377d8973':
Fixes for 64bit in libhwui
22c66639093a634b5688372d261d003b0478c450 21-Feb-2014 Narayan Kamath <narayan@google.com> Merge "Fixes for 64bit in libhwui"
2fb1fa6c88901fd16f1756a744a5f066f95c9253 21-Feb-2014 Narayan Kamath <narayan@google.com> Merge "AArch64: Make AssetAtlasService 64-bit compatible"
73fc558e44be259c0833c8c8074ad2333bcb378d 13-Feb-2014 Kévin PETIT <kevin.petit@arm.com> Fixes for 64bit in libhwui

Using reinterpret_cast allows conversions between pointer types
and integers which don't have the same size. The corresponding
flags is -Wint-to-pointer-cast.

Change-Id: I8ff0c79d235fa6d07b8d9305edc185d946d5133d
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
isplayListOp.h
ixelBuffer.cpp
17ab38f8a87bc90eab11373f878f220ce3031de6 27-Jan-2014 Ashok Bhat <ashok.bhat@arm.com> AArch64: Make AssetAtlasService 64-bit compatible

Changes in this patch include

[x] Long(64-bit) is used to store native pointers in
AssetAtlasService and related classes as they can be 64-bit.

[x] Some minor changes have been done to conform with
standard JNI practice (e.g. use of jint instead of int
in JNI function prototypes)

Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>

(cherry-picked from 4de3f481bc59ab4b766dc027e41aff7cda9d62f7)

Change-Id: If22daf40eef46f8df9f94d65ddcc52c45b3acf2a
ssetAtlas.cpp
ssetAtlas.h
674554fc36932ca50b15bba41ac6f650254d4e72 19-Feb-2014 Derek Sollenberger <djsollen@google.com> Reapply "Refactor setting an SkPaint onto a hwui Layer."

This reverts commit 90d0c75e94a32fb7d993fae69762820aabc2fcbb.

Change-Id: Ie807761231edf7c848b019931dccbf466208c0be
eferredLayerUpdater.cpp
eferredLayerUpdater.h
ayer.cpp
ayer.h
penGLRenderer.cpp
4de3f481bc59ab4b766dc027e41aff7cda9d62f7 27-Jan-2014 Ashok Bhat <ashok.bhat@arm.com> AArch64: Make AssetAtlasService 64-bit compatible

Changes in this patch include

[x] Long(64-bit) is used to store native pointers in
AssetAtlasService and related classes as they can be 64-bit.

[x] Some minor changes have been done to conform with
standard JNI practice (e.g. use of jint instead of int
in JNI function prototypes)

Change-Id: Ib4c77c134e3ad5b21732e20cde9a54a0b16bdab1
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
ssetAtlas.cpp
ssetAtlas.h
5efe5a2d35604595913c9e372c904b85c32e71c8 19-Feb-2014 John Reck <jreck@google.com> Merge "Support HardwareLayers in RenderThread"
19b6bcfd83eb7fb92ebd06d2fec89e308311f1d0 15-Feb-2014 John Reck <jreck@google.com> Support HardwareLayers in RenderThread

Also has a few HardwareLayer lifecycle fixes

Change-Id: I6308cb05f8f199eed72189ace768013a46815941
eferredLayerUpdater.cpp
eferredLayerUpdater.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
66d792b6631a8dfd0dd0b7abc75077760fa083cc 19-Feb-2014 Chris Craik <ccraik@google.com> Merge "Make outline and shadow APIs public"
e9b8817bd720cd2a294126074eb533f943a9348f 11-Feb-2014 Chris Craik <ccraik@google.com> Make outline and shadow APIs public

Change-Id: If40dc27b2fdc41c3ed355bc9029474b1344c1a03
isplayList.cpp
isplayList.h
146a1f0cbcbab9cfead773f684134645edd34b6a 19-Feb-2014 ztenghui <ztenghui@google.com> Merge "Separate spot and ambient shadow strength setting"
a39dd595791b41222ab310b5e8a76a64faa8ba5c 15-Feb-2014 John Reck <jreck@google.com> Refcounting is hard

Bug: 12994941

Change-Id: I6285ff818fc696dbe504174b98a54cb1d00b445c
eferredLayerUpdater.cpp
eferredLayerUpdater.h
ef94c6f88fbb1deb095b1494378befcdb9722839 14-Feb-2014 ztenghui <ztenghui@google.com> Separate spot and ambient shadow strength setting

Change-Id: I4530e618b09a7f44b5382f8a40646c0ebf5f214c
aches.cpp
aches.h
penGLRenderer.cpp
90d0c75e94a32fb7d993fae69762820aabc2fcbb 12-Feb-2014 Derek Sollenberger <djsollen@google.com> Revert "Refactor setting an SkPaint onto a hwui Layer."

This reverts commit e889298cd6ae1fc0d76bc00d7d12586db03eb261.

Change-Id: I4b1d609b2d4280595d40cb10d6c18875c22999f8
eferredLayerUpdater.cpp
eferredLayerUpdater.h
ayer.cpp
ayer.h
penGLRenderer.cpp
e889298cd6ae1fc0d76bc00d7d12586db03eb261 11-Feb-2014 Derek Sollenberger <djsollen@google.com> Refactor setting an SkPaint onto a hwui Layer.

This CL removes the unecessary JNI call to set the colorFilter on
a layer.

Change-Id: I9e088f888938d4315745aa618334bfdb9e61343a
eferredLayerUpdater.cpp
eferredLayerUpdater.h
ayer.cpp
ayer.h
penGLRenderer.cpp
fc53ef27793a39e9effd829e9cae02a9ca14147e 11-Feb-2014 John Reck <jreck@google.com> Implement missing safelyRun() on ThreadedRenderer

Change-Id: I14b75f37a13fabaa759a51369190dbdc84087c4b
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
f6eebb21d5c58345eca8be25676e34346f5809b2 11-Feb-2014 John Reck <jreck@google.com> Merge "Refactor HardwareLayer"
3ff18faac21553f027cdb1ff4a98447f333750bd 11-Feb-2014 Narayan Kamath <narayan@google.com> am deefd1fd: am 5f7c0b1d: am 6d8b21a8: Merge "Fix TinyHashMap to use generic hash_type instead of hash_t"

* commit 'deefd1fdeaf0b538a13219517f8795fdde198e21':
Fix TinyHashMap to use generic hash_type instead of hash_t
04fc583c3dd3144bc6b718fcac4b3e1afdfdb067 06-Feb-2014 John Reck <jreck@google.com> Refactor HardwareLayer

Defer all the things!
Groundwork to allow hardware layers to work in a renderthread world

Change-Id: Ib3aa47525f393083621254a743dbaa6352f933bd
ndroid.mk
eferredLayerUpdater.cpp
eferredLayerUpdater.h
ayerRenderer.cpp
ayerRenderer.h
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
isplayList.cpp
isplayList.h
76d3a1b8d035d27bc80b0f2fc480a903bd001514 10-Dec-2013 Derek Sollenberger <djsollen@google.com> Removing SkiaColorFilter and inspecting the native object directly.

bug: 10650594
Change-Id: I4fcf66d008765afa0e35d011f58bc792183cb74f
ndroid.mk
eferredDisplayList.cpp
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
ontRenderer.cpp
ayer.cpp
ayer.h
penGLRenderer.cpp
penGLRenderer.h
rogram.h
rogramCache.cpp
enderer.h
esourceCache.cpp
esourceCache.h
kiaColorFilter.cpp
kiaColorFilter.h
fad4593a3c9db193a4308c34168cc91c28218e2b 06-Feb-2014 ztenghui <ztenghui@google.com> Add the clipToOutline by just using the clipPathOp

Change-Id: I6ba23b589e579599d018600d0744be0efe2028c1
isplayList.cpp
isplayList.h
8852ab4357ffb653bafb36f3b9272866834f7a72 07-Feb-2014 Derek Sollenberger <djsollen@google.com> Merge "Keep the SkPaint used when creating a layer."
e9bea2a18201d079831750865ab1d013528d862a 07-Feb-2014 Ashok Bhat <ashok.bhat@arm.com> Fix TinyHashMap to use generic hash_type instead of hash_t

TinyHashMap used hash_t(key) to generate hashcode. This
would not work for 64-bit pointers as hash_t is declared as
an uint32_t.

Replaced the hash_t(key) call to more generic android::hash_type(key).
This function is a template function declared in TypeHelpers.h and
has a version available for all data types including pointers.

Change-Id: I612cf18b49ca7c30b63f9d6938df68fed7d80d08
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
tils/TinyHashMap.h
27bfb24518934f0344c79a1d655ea8d1208d2446 07-Feb-2014 Chris Craik <ccraik@google.com> Merge "Rework and clean up DisplayList projection"
d44fbe55a9f434cb5bb0e34c143ba1445141990d 05-Feb-2014 Derek Sollenberger <djsollen@google.com> Keep the SkPaint used when creating a layer.

This will allow us to inspect the paint for thing other than
color and xfermode, such as SkColorFilters and SkShaders.

bug: 10650594
Change-Id: I2c3ddd07a3966e1e77af34136307e2b59b2898c1
isplayList.cpp
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
enderer.h
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
isplayList.cpp
isplayList.h
isplayListRenderer.cpp
isplayListRenderer.h
napshot.cpp
napshot.h
fdace4e238afa9f2409c6397a78498b00f765ab0 07-Feb-2014 Chris Craik <ccraik@google.com> Merge "Simplify DisplayList matrices"
ba9a21561e09bddf4ba25fd41474fda6cb941bfb 05-Feb-2014 Chris Craik <ccraik@android.com> am 2c764b20: am 0ec3ca6e: am 449273e2: Merge "Fix for positioning of glyphs within a bitmap"

* commit '2c764b20e4a35c509f49e3d9430e135b4f3a0984':
Fix for positioning of glyphs within a bitmap
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
isplayList.cpp
isplayList.h
isplayListOp.h
atrix.h
a989cb29c35149b35bf8c332ba39d7167bd95d6b 03-Feb-2014 ztenghui <ztenghui@google.com> Merge "Fixing a bad bug when there is no real umbra"
5176c974f1d9af833b7584e895fcba61e6e7427a 01-Feb-2014 ztenghui <ztenghui@google.com> Fixing a bad bug when there is no real umbra

This fixed most of the issues when the light's Z postion is low.

Change-Id: If49afbf8aa90b1ce32fd628a62ed982a1a473da2
potShadow.cpp
494db9e4bbf206025336aee9dfece93639686e44 31-Jan-2014 Chris Craik <ccraik@google.com> Merge "Simplify umbra calculation"
1d89563ff8f5afd77457ef58489a234f490b480c 31-Jan-2014 Chris Craik <ccraik@google.com> Merge "Add initial hidden outline APIs"
12d9526dd25915f1957d1a251715e562d14459da 31-Jan-2014 Chris Craik <ccraik@google.com> Simplify umbra calculation

Reuse pre-computed values

Change-Id: Ia7725be0ec3ac58af477fcb8de375f5faa05abf4
potShadow.cpp
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
isplayList.cpp
isplayList.h
isplayListOp.h
penGLRenderer.cpp
3040f7354106dbc2a43b0ca21de25811f0d4057d 31-Jan-2014 John Reck <jreck@google.com> Merge "Fix nano vs. millis"
a6260b83da52b80438074a9fd207327d9e6e6d03 30-Jan-2014 John Reck <jreck@google.com> Fix nano vs. millis

Change-Id: I54f752bb7faab5fa66c36252c9f7cf8f5c9939c9
enderthread/RenderTask.h
enderthread/RenderThread.cpp
f3560a133e3ec19c698a8c9d6cfc7d17fd95adc5 30-Jan-2014 ztenghui <ztenghui@google.com> Merge "Merge close vertices in a better way."
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
isplayList.cpp
isplayList.h
967c7fb2af23cbdadba45f9113cbcaa9f55c3f24 29-Jan-2014 Chris Craik <ccraik@google.com> Merge "Fix projection offset caching"
d04a6b15f74035fd2068f34225825b55e94521f4 29-Jan-2014 Chris Craik <ccraik@google.com> Fix projection offset caching

Because the caching of projection matrix didn't account for changes in
the offset flag, the flag could be ignored. Now we use both to verify
that the cached matrix can be used.

Change-Id: I193b94eaf0b98f046a6484f0866c3d25048653fd
rogram.cpp
rogram.h
f5ca8b4cb178008472e67fa0ae6a3e3fa75d7952 28-Jan-2014 ztenghui <ztenghui@google.com> Merge close vertices in a better way.

And add more verification code for testing purpose.

Change-Id: I5bc4f69e6582c02fd03106af9a98abd05a6755b7
potShadow.cpp
potShadow.h
5e1814e2ebf5614f8f4f7edd063e1a79bd929844 29-Jan-2014 Chris Craik <ccraik@google.com> Merge "Remove logging of DisplayList staleness"
e742799cae886e0e9b2eb5514e58bab27e34a0ee 28-Jan-2014 John Reck <jreck@google.com> Merge "Native-side proxy"
4f02bf4eef6af47f35c70c4dda5b7b9523d89ca0 04-Jan-2014 John Reck <jreck@google.com> Native-side proxy

Remove RemoteGLRenderer
Remove reflection-based control

Change-Id: If17c2bbb61c7141986d88c4763def77ed1074985
ndroid.mk
penGLRenderer.h
enderer.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
enderthread/RenderProxy.cpp
enderthread/RenderProxy.h
enderthread/RenderTask.cpp
enderthread/RenderTask.h
enderthread/RenderThread.cpp
enderthread/RenderThread.h
3783e70b557fe58f51d551242a42e7232e991c10 27-Jan-2014 Chris Craik <ccraik@google.com> Remove logging of DisplayList staleness

Change-Id: Ie6b3af3065d4d10ec0bc9b419223d3458d297ea8
isplayList.cpp
isplayList.h
ayer.cpp
penGLRenderer.cpp
15a07a21eb33e8ca1c7444944fe0541a53380c0c 26-Jan-2014 Chris Craik <ccraik@google.com> Use path outlines to define shadow shapes

Fixes the simplifying assumption that shadow casters were always
rectangular.

Java side APIs + plumbing to pass down correct shapes still need to be added.

Change-Id: Ic4fee90af15679951a44bb5cc6ae454b98c4c194
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
athTessellator.cpp
athTessellator.h
hadowTessellator.cpp
hadowTessellator.h
bb615a6ffbc8a051007163916f1ed085d10b5327 24-Jan-2014 Chris Craik <ccraik@google.com> Clear root level reorder lists to prevent accessing stale DisplayLists

bug:12581401

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

Change-Id: Iee00940718c3cc868161e754aff93cd3b2747094
isplayList.cpp
isplayList.h
ayer.cpp
penGLRenderer.cpp
3ed192760314dc976cd02f62ac49798daa89b4b1 28-Aug-2013 Alexander Toresson <alexander.toresson@sonymobile.com> Fix for positioning of glyphs within a bitmap

For positioning of glyphs within a bitmap, roundf(int + float) is used,
where the float is the glyph position and the int is the text position.
When the text position is varied, this may lead to the sum being rounded
in different directions, due to floating point rounding, caused by that
floating point numbers have different precision in different ranges.

This may therefore lead to slightly different positioning for glyphs and
therefore slightly different widths and heights for text strings,
depending on the position they are rendered at.

The solution in this patch is to use int + (int) roundf(float), which
has consistent rounding, and also enables us to use the full range of
ints.

Change-Id: Id1143cdfcbdfa9915ced878ae04df589a3e03cee
ont/Font.cpp
cc3c25622c731d14a6f01bce684330eccba7db5a 17-Jan-2014 ztenghui <ztenghui@google.com> Property support for light positioning.

Tune up the light size to make it look better.

Change-Id: I139a05f3dd53dacbe55759b91188f0e1cc2c7f80
aches.cpp
aches.h
penGLRenderer.cpp
hadowTessellator.cpp
hadowTessellator.h
3a3bdd042d8bd056d31a1b37332e91c1307060a0 17-Jan-2014 Chris Craik <ccraik@android.com> am ee846d3e: am 38cf0704: am e9a7d229: am 66b5a2b2: am 5150eb8f: Merge "Initialize pointer members to NULL to avoid illegal reference"

* commit 'ee846d3e74eda006f4bbf17cb4844b4d8f9c5cb0':
Initialize pointer members to NULL to avoid illegal reference
920287399aa640a5352e02ab19fd23b67a8c975b 09-Jan-2014 lina.x.pi <lina.x.pi@sonymobile.com> Initialize pointer members to NULL to avoid illegal reference

mBitmap and mTexture is not initialized to NULL which causes
illegal address access when it fails to be created from
oversized bitmap.

Change-Id: Iea54bec8788bc5f3a10040fdb43f416c0d41a14c
kiaShader.h
8191effc83b3ec4cfc8647a6eb16ee641fa85a2f 17-Jan-2014 Chris Craik <ccraik@google.com> Merge "Map shadow light position globally"
ed0f7cba53be0af991fc7435549f7a798b1d377b 17-Jan-2014 Chris Craik <ccraik@google.com> Merge "Fix view z translation with 3d projection disabled"
7b3dfa4d13ca79404f8b0be6e47002cf8daff0a2 17-Jan-2014 Chris Craik <ccraik@google.com> Transform shadow casters correctly in 3d

Change-Id: I11067c5aa8c749089b6ee163ddafa91865cc0d9f
hadowTessellator.cpp
cf8d9d4af3faecd804763d7c6f85b3f8741e180b 16-Jan-2014 Chris Craik <ccraik@google.com> Fix view z translation with 3d projection disabled

The ortho projection can't handle 3d translation, so skip that step if
perspective projection isn't enabled.

Change-Id: I231e6bcecc82e876b697e098e034f0fd3b06efde
isplayList.cpp
3197cded4e265bc99dc82d695bbb7163fe134ed4 16-Jan-2014 Chris Craik <ccraik@google.com> Map shadow light position globally

Change-Id: Ic3201cecdf5d2a1dd628e7e40aee912ef516d3b2
penGLRenderer.cpp
hadowTessellator.cpp
hadowTessellator.h
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
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
napshot.cpp
napshot.h
81155da28476862a7056ec74312a8010ec154671 15-Jan-2014 John Reck <jreck@google.com> Merge "Remove dead code"
2114aef4eaa1c6539d4fe83bb130395dad7fbae7 15-Jan-2014 John Reck <jreck@google.com> Remove dead code

Change-Id: I9c96d3d21bd3faed91a5146f5a2b8916c634fdff
enderer.h
8790be6de3644e332ec6a17c855da89ffc13a9bf 03-Dec-2013 Leon Scroggins III <scroggo@google.com> Remove calls to deprecated SkBitmap::setIsOpaque()

setIsOpaque() has been removed from ToT Skia.

Update setters for mIsPremultiplied and hasAlpha to take the
other into consideration.

Change-Id: I1b36b0b0ce7126031eb7b769b563c17dcd4b306a
extureCache.cpp
255fd80737432fb1d9d0590206f7c103176dcd2c 14-Jan-2014 Chris Craik <ccraik@google.com> Merge "Simplify Z reordering logic"
9f68c096263b36f59c383435e587bd8bd279af34 10-Jan-2014 Chris Craik <ccraik@google.com> Simplify Z reordering logic

Change-Id: I9e36f68d7be5cfd4d69a84a51824cb9a642fe18d
isplayList.cpp
isplayList.h
8a3452e7e1cc7b6edf719b155e9d95ec8fbf573a 13-Jan-2014 ztenghui <ztenghui@google.com> Merge "Calculate and show the shadow from a spot light."
7b4516e7ea552ad08d6e7277d311ef11bd8f12e8 07-Jan-2014 ztenghui <ztenghui@google.com> Calculate and show the shadow from a spot light.

Change-Id: Ia558852e8cde5d33866b22875eb501e4c6858819
ndroid.mk
penGLRenderer.cpp
hadowTessellator.cpp
hadowTessellator.h
potShadow.cpp
potShadow.h
ector.h
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
isplayList.cpp
isplayList.h
23b797ab5151eb2474f3bdd679f2f07bfd723042 04-Jan-2014 John Reck <jreck@google.com> EGL migration to native

Move EGL state management to native side for RemoteGLRenderer

Change-Id: I12b0fed70246564d4caebf87374e8bbca655c572
ndroid.mk
tencil.cpp
tencil.h
enderthread/CanvasContext.cpp
enderthread/CanvasContext.h
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
ssetAtlas.cpp
ssetAtlas.h
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
athCache.cpp
athCache.h
athTessellator.cpp
athTessellator.h
enderer.h
esourceCache.cpp
esourceCache.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
extDropShadowCache.cpp
extDropShadowCache.h
extureCache.cpp
extureCache.h
ont/Font.cpp
ont/Font.h
8523706236b0b2536ed4359d92ec6ccdca060d78 03-Jan-2014 Chris Craik <ccraik@google.com> Merge "Fix Clang warnings/errors"
564acf7c9bff822f608cda0d5df0a64a9f9aaefd 03-Jan-2014 Chris Craik <ccraik@google.com> Fix Clang warnings/errors

Fix several build warnings (struct != class, int != size_t) and errors
(variable leng non-POD arrays).

Change-Id: I70b4e784365514303d8954bfcb1f39d7c22c1321
mbientShadow.cpp
ndroid.mk
isplayList.cpp
ayer.h
penGLRenderer.cpp
penGLRenderer.h
atch.h
athCache.h
athTessellator.cpp
rogram.cpp
ect.h
enderer.h
kiaColorFilter.h
kiaShader.h
ertex.h
406af0293fde2d7bc12629b3a010019641549f08 02-Jan-2014 Chris Craik <ccraik@google.com> Fix isRecording override

Change-Id: Ie73db838b749c29c6a8480ab67897492b83d337a
isplayListRenderer.h
d6b65f67717025b1162f86f04e2caa5723566cac 01-Jan-2014 Chris Craik <ccraik@google.com> Use const access to snapshot from OpenGLRenderer

Additionally, move clipping methods to StatefulBaseRenderer

Change-Id: Iff232bf16fc1ad3b7d89493da6d8915db7bc5e4f
isplayListRenderer.cpp
isplayListRenderer.h
ayerRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
athTessellator.cpp
athTessellator.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
14e513058ed4168c94e015638d16f5f87fd8063a 31-Dec-2013 Chris Craik <ccraik@google.com> Move Snapshot management to intermediate StatefulBaseRenderer class

The eventual goal is for the StatefulBaseRenderer to serve as the
common base class between the DisplayListRenderer and OpenGLRenderer.

This will separate DisplayList recording, Snapshot stack management,
and the GL in OpenGLRenderer.

Additionally, avoid sp<> parameters, and use const parameters in
several places, with the intent of greatly reducing the surface area
where renderer subclasses can modify snapshot stack.

Next steps:
-move bulk of clipping logic into StatefulBaseRenderer
-disable direct snapshot access

Change-Id: Ibc3c6747134ec7daf8ea535866239fa73b874390
ndroid.mk
isplayListRenderer.cpp
isplayListRenderer.h
ontRenderer.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
enderer.h
tatefulBaseRenderer.cpp
tatefulBaseRenderer.h
b458942bb6e6cf13c68341dda35ef5cee060f5ae 27-Dec-2013 Chris Craik <ccraik@google.com> Create abstract base class for OpenGLRenderer

This will eventually serve as a base class to allow
DisplayListRenderer to split off from OpenGLRenderer, and could
eventually support other rendering approaches, such as an
SkCanvas/SkPicture.

This will also be the main source of (implementation-independent)
documentation of the canvas/renderer methods.

Change-Id: I52047f338f5cf86a3b0b3002af7154bff5c3c227
isplayList.cpp
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
enderer.h
d863a10b2870ca27f631b2ec69f3e13faed1d02a 19-Dec-2013 Chris Craik <ccraik@google.com> Add initial APIs for 3d view manipulation.

Change-Id: I6de00bc577d5b3a1fbc9ca3a3b3668fcfa32b867
isplayList.cpp
isplayList.h
69d251383f3656a580c3878045de235d70a12000 19-Dec-2013 Brian Carlstrom <bdc@google.com> Track Looper decoupling from ALooper

Change-Id: I83d1f5f6600019268c53706b7bf6d94b84931e18
enderthread/RenderThread.cpp
804ff38bff2fbb0ee258b13b4bb66eb33d565724 13-Dec-2013 Tim Murray <timmurray@google.com> Handle user-defined cache path for RS.

Change-Id: I92e3346dca331ae6a9dfbe4f95292bc604dfd196
ontRenderer.cpp
868399cdf48a2459b58a64a906dce5d127458800 18-Dec-2013 Victoria Lease <violets@google.com> Merge "pass SkGlyphCache into updateGlyphCache()"
8b62cda49310dd6e8e9b69f651f24e47272fc3f4 18-Dec-2013 Chris Craik <ccraik@google.com> Check mDisplayListData before deref

bug:12191897
Change-Id: I72ed3801e72c657b9d7736b0efb33c5e7cfd5b57
isplayList.cpp
2ee2d59b7d10733e7e11e398d2316035d3b36c73 17-Dec-2013 Victoria Lease <violets@google.com> pass SkGlyphCache into updateGlyphCache()

Doing so prevents us from double-locking the glyph cache, thereby
effectively locking ourselves out of reusing work that we'd just done.

Bug: 11968757
Change-Id: I5c552f2d0bbe30af2ce9054ba684e7da756a0d89
ont/Font.cpp
ont/Font.h
3b3508fe4f57a5d2054b520767b646d461851a42 17-Dec-2013 Chris Craik <ccraik@google.com> Merge "Use vertex assignment instead of manual copy"
11a7567d6f0e797d7053c338b55c499bee3d1e42 17-Dec-2013 Chris Craik <ccraik@google.com> Use vertex assignment instead of manual copy

Change-Id: I36c806e3370abca61e5bf5064f0f1a776a9ce487
athTessellator.cpp
ba9b613437c34873fa95800a25fc51720638267c 16-Dec-2013 Chris Craik <ccraik@google.com> Create private properties on GLCanvas for experimentation with 3d

Change-Id: I17772f61efce727cb4c1111f4d97f58c741786b8
aches.cpp
aches.h
ebug.h
isplayList.cpp
penGLRenderer.cpp
55bfb4e728fe1db619af5d2c287f4abe711b3343 03-Dec-2013 ztenghui <ztenghui@google.com> Calculate and show Ambient shadow.

Basically we compute the shadow as a strip of triangles, whose alpha value
is the strength of the shadow.
We use the normal to extend the geometry.
And we use static function and try to avoid new/malloc in the computation.

Change-Id: I382286f1cad351bd5ff983f76f446c075819dcaf
mbientShadow.cpp
mbientShadow.h
ndroid.mk
aches.cpp
aches.h
ebug.h
penGLRenderer.cpp
athTessellator.h
hadowTessellator.cpp
hadowTessellator.h
ertexBuffer.h
a038bb402b7409fbb60e7ceceb83a4229e56b585 13-Dec-2013 Tim Murray <timmurray@google.com> Merge "Handle user-defined cache path for RS."
18809c063b89d9b235401d080b952885a4ef9628 13-Dec-2013 Chris Craik <ccraik@google.com> Merge "3d view system!"
abe55e92241fd9a19885f7b11db8d3043ab60c61 13-Dec-2013 Tim Murray <timmurray@google.com> Handle user-defined cache path for RS.

Change-Id: I92e3346dca331ae6a9dfbe4f95292bc604dfd196
ontRenderer.cpp
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
ebug.h
eferredDisplayList.h
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
ector.h
630491973269da1b260e69d6a3f9490b97705037 11-Dec-2013 John Reck <jreck@google.com> Unbreak display list debug dumping

Change-Id: I1c6a79f047b29fa60907f6e128cb843a45b88bff
isplayList.h
penGLRenderer.cpp
penGLRenderer.h
cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fc 05-Nov-2013 John Reck <jreck@google.com> RenderThread work

Hacky prototype needs a private API to enable

Change-Id: I21e0ddf3cdbd38a4036354b5d6012449e1a34849
ndroid.mk
enderthread/RenderTask.cpp
enderthread/RenderTask.h
enderthread/RenderThread.cpp
enderthread/RenderThread.h
aec09b6b98aa75fac426cff6f39a46ae5850594b 04-Dec-2013 Leon Scroggins III <scroggo@google.com> Merge "Call SkBitmap::config() instead of ::getConfig()"
43b692d9a18224e89fc09a0e68d097322e0ef6bb 04-Dec-2013 Victoria Lease <violets@google.com> Deprecate Android-specific SkPaint functions.

The following functions were problematic:
const SkGlyph& getUnicharMetrics(SkUnichar, const SkMatrix*);
const SkGlyph& getGlyphMetrics(uint16_t, const SkMatrix*);
const void* findImage(const SkGlyph&, const SkMatrix*);

Replacing them with calls through SkGlyphCache solved a nasty crash
bug, so they have all been deprecated.

Bug: 11968757
Change-Id: Id746315d41aec5b211b78b172a883c2061130f08
ont/Font.cpp
ont/FontUtil.h
4b9a19a8f865970e0079f431c8c2c2a8e4333ae9 03-Dec-2013 Leon Scroggins III <scroggo@google.com> Call SkBitmap::config() instead of ::getConfig()

getConfig() has been deprecated.

Change-Id: I32066256ab82ac4760c752c80856d1b56d291fae
penGLRenderer.cpp
extureCache.cpp
f0a590781b2c3e34132b2011d3956135add73ae0 20-Nov-2013 Chris Craik <ccraik@google.com> Clean up quick rejection, especially surrounding points + lines.

bug:4351353

quickReject and quickRejectNoScissor have been renamed and refactored:
- to make the scissor side effect clear and explicit
- dangerous methods no longer public
- to make the simple quick reject check logic const
- simple quick reject is now conservative

This CL also fixes several issues with line and point quickRejection -
sub-pixel and hairline lines are much less likely to be incorrectly
rejected, especially at small canvas scale.

Additionally, alpha modulation for AA points < 1px in size is now
correct, dumplicating SW behavior (similar to lines and stroked
shapes work).

Change-Id: Ibb0710c721b9fb415d05acf54dd3d2b4d602156a
isplayList.cpp
isplayListOp.h
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
athTessellator.cpp
athTessellator.h
ect.h
dbccd44a638ae8705a5b14bff8b2dd74abc26045 22-Nov-2013 The Android Open Source Project <initial-contribution@android.com> Merge commit 'b873a17ce7be0a9771c24999adca6964431728f6' into HEAD

Change-Id: I938755073e70602cc8f51ce9bd420fdcf870cecd
4063a0e03ba2e354cc6d19c0ffc073fd5b8aa2ca 16-Nov-2013 Chris Craik <ccraik@google.com> Clean up modelView matrix logic

bug:11359533

Also changes shader matrix to correctly account for modelView and
currentTransform()

Change-Id: I6ce18857dc6d08ea08ca7535385c2ad351ec3caa
ontRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
16e7d730c5fc974d5652a4a7a6e19a163225315a 07-Nov-2013 Chris Craik <ccraik@android.com> am 2f70da2b: am 6ed16a89: am 0b807d2e: Merge "Update the layer\'s alpha value upon composition of the layer"

* commit '2f70da2bc5ce9f4766395cc9d848f0afe8f6a2a9':
Update the layer's alpha value upon composition of the layer
2f70da2bc5ce9f4766395cc9d848f0afe8f6a2a9 07-Nov-2013 Chris Craik <ccraik@android.com> am 6ed16a89: am 0b807d2e: Merge "Update the layer\'s alpha value upon composition of the layer"

* commit '6ed16a89d836a33b9242f91b05e8ecb149abf909':
Update the layer's alpha value upon composition of the layer
a5ff739d3c9e15d07f1d5c644b4f11205cdac0e8 04-Nov-2013 Digish Pandya <digishp@codeaurora.org> Update the layer's alpha value upon composition of the layer

Fixes: This patch makes sure that the layer's alpha value is
up-to-date and does not reflect the previous view's alpha value.
it fixes the square block on marquee fading edge when text view
is applied transparency.

Change-Id: I110649db72a75fecc02ba56c201a05773f80328c
penGLRenderer.cpp
e63f7c622a2086aefa80983c6f41b74fb166bb42 17-Oct-2013 Chris Craik <ccraik@google.com> Clean unused parameters, disable warnings

Change-Id: Iddb872f53075dd022eeef45265594d1c6a9e2bc0
ndroid.mk
radientCache.cpp
radientCache.h
penGLRenderer.cpp
penGLRenderer.h
rogram.h
kiaShader.cpp
kiaShader.h
extDropShadowCache.cpp
extureCache.cpp
ont/CacheTexture.cpp
ont/CacheTexture.h
ac56414b924b20577f996b3b837cc3d894ead3c7 26-Sep-2013 Romain Guy <romainguy@google.com> am b4d4d687: am 318ae7bb: Take SkBitmap\'s stride into account when uploading textures Bug #10151807

* commit 'b4d4d68795a10401e3cb50df491a2e5d5b1ac96e':
Take SkBitmap's stride into account when uploading textures Bug #10151807
318ae7bb92869d99a05388c598ad105e7aa4cdbd 25-Sep-2013 Romain Guy <romainguy@google.com> Take SkBitmap's stride into account when uploading textures
Bug #10151807

Change-Id: I7ba4804fa3619088fea70eb55f10519fff0bf5f0
xtensions.h
extureCache.cpp
extureCache.h
ont/CacheTexture.cpp
ont/CacheTexture.h
5caebe4c7c8644b1dbf3fef23551373b95a8efd6 21-Sep-2013 Chris Craik <ccraik@google.com> am bd842f96: am d8a84a86: Merge "Correct bitmap merging logic" into klp-dev

* commit 'bd842f96ed4a9b7887be4702828ea0034d66ef85':
Correct bitmap merging logic
d8a84a8609951826135a2e41a1cdd6b7cf680e27 21-Sep-2013 Chris Craik <ccraik@google.com> Merge "Correct bitmap merging logic" into klp-dev
996fe656340ede058a6f0e6b18f9ec525ddb4e27 21-Sep-2013 Chris Craik <ccraik@google.com> Correct bitmap merging logic

bug:10863163

This fixes two issues

The check for pure translation was incorrect. It was fixed and renamed
for clarity.

Certain matrix paths weren't setting kTypePositiveScale. For
simplicity (and because positive scale is simple to check) removed
flag in favor of dynamic checking.

Change-Id: Ic5ce235653ef49a68b8b242bd89fc2e95874ecc9
isplayListOp.h
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
9e233b54b6a421710a43b6dc3efeb01092b25edf 20-Sep-2013 Victoria Lease <violets@google.com> am ab99b39d: am ddc0a63d: Merge "fix emoji clipping in hw draw path" into klp-dev

* commit 'ab99b39d7d152de35ea02a364190ff325da4015b':
fix emoji clipping in hw draw path
16c84069a4cc0c0d3c35e798dc5e4b0130d4a26f 20-Sep-2013 Victoria Lease <violets@google.com> fix emoji clipping in hw draw path

I guess we don't want to overwrite the last line in every RGBA glyph
with our one-line texture atlas spacer?

Bug: 10841207
Change-Id: Ief85ca58650c731e9d21dbf90942b7b44670abcc
ontRenderer.cpp
2765c0b71679b5762ed72610e8310abd6d071b96 18-Sep-2013 Chris Craik <ccraik@google.com> resolved conflicts for merge of d97303a7 to master

Change-Id: I29e2e64e0ec241675762482cbe5c5e9dc58adca6
e08e6632294143f889ab68f0c3453ee6802dc60e 18-Sep-2013 Chris Craik <ccraik@google.com> am 7cb404dd: am a42ceb03: Merge "Disallow negative scale matrices in merged Bitmap drawing" into klp-dev

* commit '7cb404dda770da24aaf1b484d6575d5480cf080f':
Disallow negative scale matrices in merged Bitmap drawing
ce9ee16d654a42f31d211c60708d7b23f17c1d8e 18-Sep-2013 Chris Craik <ccraik@google.com> Merge "Conservatively estimate geometry bounds" into klp-dev
a42ceb03cf6a1cbcd9f526afb02d806b2c200ee3 18-Sep-2013 Chris Craik <ccraik@google.com> Merge "Disallow negative scale matrices in merged Bitmap drawing" into klp-dev
32f05e343c5ffb17f3235942bcda651bd3b9f1d6 18-Sep-2013 Chris Craik <ccraik@google.com> Conservatively estimate geometry bounds

bug:10761696

Avoids a case where a rect with top coordinate of (e.g.) 0.51f is
assumed to not draw in the first row of pixels, which leads to it not
being clipped. Since rounding can cause it to render in this first
pixel anyway, we very slightly expand geometry bounds.

Now, in ambiguous cases, the geometry bounds are expanded so clipping
is more likely to happen.

Change-Id: I119b7c7720de07bac1634549724ffb63935567fc
penGLRenderer.cpp
rogram.cpp
ect.h
ertex.h
d965bc5823d878a3fd056b8a95fb4eb578ed3fe4 16-Sep-2013 Chris Craik <ccraik@google.com> Disallow negative scale matrices in merged Bitmap drawing

bug:10622962

Change-Id: I55ac18ad56b53dc9e6e6ea14cd3ec4bdafa98ac3
eferredDisplayList.cpp
isplayListOp.h
atrix.cpp
atrix.h
d3979bc5a7fc45d14fdbc24c64ad798eee8b68af 14-Sep-2013 Chris Craik <ccraik@google.com> am bb451bda: am 0d3c52d3: Merge "Fix merged operation clipping" into klp-dev

* commit 'bb451bda4a08f79b60f84242647bdb40962f01b5':
Fix merged operation clipping
5af5fc50c2f43fc0e0813e02cb6a950901a9c0b8 13-Sep-2013 Chris Craik <ccraik@google.com> Fix merged operation clipping

bug:10745870

Missing 'const' meant MergingDrawBatch would never clip anything.

Change-Id: Ia6367eff94cf5f437efafbc3ba7f0da102ffd956
eferredDisplayList.cpp
b1c53942f1422453093943eed04bb8720f05ddb4 13-Sep-2013 Romain Guy <romainguy@google.com> am 0885b291: am 4801a4f9: Merge "Always disable the clip for layers Bug #8149344" into klp-dev

* commit '0885b291650c1b85220645943c9eab3080170aca':
Always disable the clip for layers Bug #8149344
7cca88352fc0597a74af13ea0b7c116de29e981e 13-Sep-2013 Chris Craik <ccraik@google.com> am 3f30e67a: am 88ee0dac: Merge "Move DeferredDisplayState out of ops" into klp-dev

* commit '3f30e67afbceb185c52833cec539cc0199716ef0':
Move DeferredDisplayState out of ops
1de466fc91511de8428affcf1eb71dc6af946145 13-Sep-2013 Romain Guy <romainguy@google.com> Always disable the clip for layers
Bug #8149344

Change-Id: Ifd413cadb171232eb846b3d91b05b2d2457b9f35
isplayList.cpp
88ee0dac81dec12aefdeee23072df9b3864a06a4 13-Sep-2013 Chris Craik <ccraik@google.com> Merge "Move DeferredDisplayState out of ops" into klp-dev
c1c5f0870282b56dafe5a4d756e4b9e6884655a7 12-Sep-2013 Chris Craik <ccraik@google.com> Move DeferredDisplayState out of ops

bug:9969358

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
eferredDisplayList.cpp
eferredDisplayList.h
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
penGLRenderer.h
2f93af4574fbca9c94679744114ce40496aa69b8 10-Sep-2013 John Reck <jreck@google.com> am 53760b4a: am 874ae2ad: Merge "Fix scissor for functor invocation" into klp-dev

* commit '53760b4a97fb2f88e94da73d647ff80221b3c454':
Fix scissor for functor invocation
874ae2adf8c24c4b9d68f781239a95ad047e212a 10-Sep-2013 John Reck <jreck@google.com> Merge "Fix scissor for functor invocation" into klp-dev
efb6beb4388e51a2e29ec605c500801f7ff150e6 10-Sep-2013 Tim Murray <timmurray@google.com> am 19c727bb: am 895a4375: Merge "Fix FontRenderer bug." into klp-dev

* commit '19c727bbc6371924bfd2f85e804b5b6b093a8413':
Fix FontRenderer bug.
7a454ba5fee0bbb9f2e1292f8eede655516c0f2c 10-Sep-2013 Tim Murray <timmurray@google.com> Fix FontRenderer bug.

bug 10691313

Change-Id: Icd5341a3c2066e337911f040ddc935c48c8d7cd1
ontRenderer.cpp
25d2f7bc1ff9b475eff75bfff647466e91dbacb2 10-Sep-2013 John Reck <jreck@google.com> Fix scissor for functor invocation

Bug: 10677765
enableScissor() must precede setScissorFromClip() as
otherwise setScissorFromClip() doesn't do anything.
Also make sure to call setScissorFromClip() if
enableScissor() returns true as enableScissor() calls
resetScissor() if the scissor state has changed.

Change-Id: I9226b20bb256c92066aae344e4e6407540b6eae9
penGLRenderer.cpp
86ebf2876dce04c845ae61846f3aa966d13eab8c 10-Sep-2013 Tim Murray <timmurray@google.com> am 9163b1d9: am 23ae1461: Merge "Add flags word to initialization." into klp-dev

* commit '9163b1d9ceeca3e956218dda1ca19a748dc48d8d':
Add flags word to initialization.
9578e642403c0fa4fdcb32828f27c2417cabe88d 10-Sep-2013 Tim Murray <timmurray@google.com> Add flags word to initialization.

bug 10427951

Change-Id: I1356b9b96315ead44aa3898de5604d75f9bb8be5
ontRenderer.cpp
0ff8c5f33c78cdbec5f9226fc528120bb99c232f 06-Sep-2013 Chris Craik <ccraik@google.com> am 9b824560: am 9b40bdf6: Merge "Dump the right matrix when logging display lists" into klp-dev

* commit '9b824560726eab653a1044eecdb0bfe5ff804865':
Dump the right matrix when logging display lists
66063ae2d6ff523bbf200cccdb9223d824c240a4 06-Sep-2013 Chris Craik <ccraik@google.com> Dump the right matrix when logging display lists

bug:10631274
Change-Id: I6b32bfcb3e207321da60807091d7ac0ecf6112ab
isplayList.cpp
815fbbdfca52c37f251f156122b5537a9b9807e9 27-Aug-2013 Chris Craik <ccraik@google.com> am 7ff37ada: am ff2c22e2: Merge "Move functor GL setup to just before functor" into klp-dev

* commit '7ff37ada138d9023e9d646f7195ae761a7b83ff2':
Move functor GL setup to just before functor
54f574acf4dd5483170b8f79e2f7c70b58763ce7 26-Aug-2013 Chris Craik <ccraik@google.com> Move functor GL setup to just before functor

bug:10399469

Because the stencil setup can issue draws, it *must* come before the
GL state setup.

Change-Id: I52a36213549fc60b091a90cbb923a1f0d35f9a65
penGLRenderer.cpp
0a57d6587200b408263f5e895ad16c7108608a26 22-Aug-2013 Romain Guy <romainguy@google.com> am c1acf799: am 243a026b: Merge "Second attempt at avoiding infinite loop in PathCache::trim() Bug #10347089" into klp-dev

* commit 'c1acf7994a975903320ec8146c62118b651debc4':
Second attempt at avoiding infinite loop in PathCache::trim() Bug #10347089
5d923200846ed59e813373bde789d97d4ccc40b5 22-Aug-2013 Romain Guy <romainguy@google.com> Second attempt at avoiding infinite loop in PathCache::trim()
Bug #10347089

Change-Id: I70f5a3933e848632473acc6636c88be5dc6ac430
athCache.cpp
880d6fecfcc00529ff4df44670240fb20f5fba96 22-Aug-2013 Romain Guy <romainguy@google.com> am b7db6d73: am e0a2435c: Merge "Properly account for created paths in the cache" into klp-dev

* commit 'b7db6d73a4a7fc2c2ec189780e1532cb0e2c638b':
Properly account for created paths in the cache
0a8c51b1d0d66d6060afcec1eab33091d49332ae 22-Aug-2013 Romain Guy <romainguy@google.com> Properly account for created paths in the cache

Change-Id: I47b89b3085cefab6daac9194e7bfd3c140b37fa2
athCache.cpp
hread/TaskManager.cpp
2f7c6f04cc0593c449da3334653e6d0c20016c2b 21-Aug-2013 Romain Guy <romainguy@google.com> am dfb79408: am 5b8efc47: Merge "Add overdraw debugging that accounts for Deuteranomaly" into klp-dev

* commit 'dfb79408892b3f168204c54a9b81d813921fb0f9':
Add overdraw debugging that accounts for Deuteranomaly
627c6fd91377ead85f74a365438e25610ef1e2ee 21-Aug-2013 Romain Guy <romainguy@google.com> Add overdraw debugging that accounts for Deuteranomaly

Change-Id: I31f68a07aa7cf0490d2572e24e4c5ac2066a1151
aches.cpp
aches.h
penGLRenderer.cpp
roperties.h
ede1deaa88b546188808a8c6ef7dafb087594753 20-Aug-2013 Tim Murray <timmurray@google.com> am 816f3058: am cf8e6778: Merge "Handle updates to C++ API." into klp-dev

* commit '816f3058bdd7b888965022888e4a789ea967f444':
Handle updates to C++ API.
d8c8aaa82ef90f30df647ca42453e953ee52af0f 19-Aug-2013 Tim Murray <timmurray@google.com> Handle updates to C++ API.

Change-Id: I8ab17cbae3a9a4cc3c3202b8277d49f27bdf1fec
ontRenderer.cpp
cb39785dd78175e2188113693256d5b8580ed985 17-Aug-2013 Romain Guy <romainguy@google.com> am 725617f6: am 83aec80f: Merge "Fix hardware layers lifecycle Bug #10075732" into klp-dev

* commit '725617f66a07488f8cafda24c517e257e9eb2bc2':
Fix hardware layers lifecycle Bug #10075732
46bfc4811094e5b1e3196246e457d4c6b58332ec 17-Aug-2013 Romain Guy <romainguy@google.com> Fix hardware layers lifecycle
Bug #10075732

Hardware layers could survive across EGL terminate events.

Change-Id: Ie8565d55cb29fe6625fa1584d695edfecd37ab5e
aches.cpp
fa017cd3dbc3979f86d3cf457946b322106be589 17-Aug-2013 Romain Guy <romainguy@google.com> am 34d89c6b: am 836d335f: Merge "Prevent ANR in apps using drawPath() Bug #10347089" into klp-dev

* commit '34d89c6b052ad8812c2c1a6eb55da64ee0dc67ee':
Prevent ANR in apps using drawPath() Bug #10347089
b0a41ed3dcc34a2b4026f6cc8336796f3523aa21 16-Aug-2013 Romain Guy <romainguy@google.com> Prevent ANR in apps using drawPath()
Bug #10347089

If an app clears its path cache before stopping background tasks, it could
get into an infinite loop in PathCache::trim().

Change-Id: Ieb865b762e7b00aebaba0c023769c2db286a94f5
aches.cpp
3b0ca9c13cbb3d59c538522a08055f5fb71e2548 16-Aug-2013 Romain Guy <romainguy@google.com> am bd3c2c3d: am 88105179: Merge "Clear FBO cache on full memory flush" into klp-dev

* commit 'bd3c2c3d704fe5348ae9501f52cf9591a17e1a1e':
Clear FBO cache on full memory flush
b746371de7f21ae36a14953d9b253df06838efb1 16-Aug-2013 Romain Guy <romainguy@google.com> Clear FBO cache on full memory flush

Change-Id: I44e06d5d15cd899a0522c62d7c0d042170665abb
aches.cpp
3380cfdc77100e87aa8390386ccf390834dea171 16-Aug-2013 Romain Guy <romainguy@google.com> Replace float arrays with readable names

Change-Id: I32a8be560b60a4ac5cbee2fec4574b2c5df9f825
aches.h
isplayListOp.h
ontRenderer.cpp
penGLRenderer.cpp
athTessellator.cpp
ertex.h
723b2feb929b96b1dde40a865c49ea18bc42f055 12-Aug-2013 Victoria Lease <violets@google.com> fix kBW_Format glyphs

Oops! kBW_Format was omitted from a couple of switch statements,
resulting in glyphs in that format being invisible.

Bug: 10206452
Change-Id: Ib2aa52250aeeecc0de1b1b78e3d0f568f368c73e
ontRenderer.cpp
ont/CacheTexture.cpp
9b5a1a28c327e6113d68302b1f0eed1d1c6f6183 09-Aug-2013 Romain Guy <romainguy@google.com> Take shadow bounds into account for quick rejects
Bug #8634346

Change-Id: I995c5205c2959d8e4da638ae47fedcda92eb1b36
isplayListOp.h
isplayListRenderer.cpp
penGLRenderer.h
003123004f7b23b3dc472d5c40b8c1a16df37a54 09-Aug-2013 Romain Guy <romainguy@google.com> Remove an unnecessary allocation

Also remove dead code from OpenGLRenderer.cpp

Change-Id: I7eb54ca19e77ee3c32f1fe9513a031e6b2e115cf
(cherry picked from commit 5c7d5ab878b26f855175a3305a14ac12fcacf25e)
penGLRenderer.cpp
penGLRenderer.h
7f6d6b0370df4b5a9e0f45bffc31ea6caeeb509d 06-Aug-2013 Romain Guy <romainguy@google.com> Split assets atlas batches
Bug #10185769

The assets atlas contains assets that need to be blended and assets
that do not need to be blended. With a single merge id, currently
set to be the pointer to the atlas itself, draw ops merging could
generate batches of commands containing both opaque and translucent
assets. The blend state was chosen from only one of the assets in
the batch, leading either to inefficiencies (blending large opaque
assets) or incorrect behaviors (not blending translucent assets.)

This change introduces two new merge ids in the atlas: an opaque
key and a blend key. These keys are simple booleans set to false
and true respectively (the values do not matter really.) Their
memory addresses are used as the merge ids when createing draw ops
batches, allowing all opaque ops to be batched together and all
translucent ops to be batched together.

Change-Id: I114dba0533c44987e53864b471ccb28c811f2025
ssetAtlas.cpp
ssetAtlas.h
eferredDisplayList.h
isplayListOp.h
250b1cfc831fd2a271c09cab547efcc5e3d5f828 01-Aug-2013 Tim Murray <timmurray@google.com> Handle updates to RS C++ API.

Change-Id: I73127fc7369643b94d4a49f31a516b50c74b54ac
ndroid.mk
ontRenderer.cpp
ontRenderer.h
b213cec0ce659c1e35c3e7f60a61bae38d94482a 02-Aug-2013 Chris Craik <ccraik@google.com> Merge "Fix quickReject's handling of AA ramp geometry"
5e49b307eb99269db2db257760508b8efd7bb97d 31-Jul-2013 Chris Craik <ccraik@google.com> Fix quickReject's handling of AA ramp geometry

By having quickReject round out the window-space geometry bounds, we
prevent the AA perimeter (which falls outside the local bounds passed
in) from drawing outside the clip.

Change-Id: I8ee36be9039a9c47906815ee2f0dbaa5eb910b82
eferredDisplayList.h
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
ect.h
b7b93e00893f5c690a96bd3e0e10583bc5721f83 02-Aug-2013 Romain Guy <romainguy@google.com> Fix region clipping bugs
See external bug #58344

Change-Id: Iecd6c41fc8076cd76add2335d3442a6dd8878f12
isplayListOp.h
penGLRenderer.cpp
tencil.cpp
1e546815bbb736c50679a8aefc25f48561026fc5 25-Jun-2013 Victoria Lease <violets@google.com> Support RGBA fonts and bitmap fonts (and RGBA bitmap fonts)

Quite a few things going on in this commit:

- Enable bitmap strikes by default in Paint objects.

The SkPaint parameter that enables bitmap strikes was not previously
included in DEFAULT_PAINT_FLAGS. This effectively disabled bitmap
fonts. Oops! It's for the best, though, as additional work was needed
in Skia to make bitmap fonts work anyway.

- Complain if TEXTURE_BORDER_SIZE is not 1.

Our glyph cache code does not currently handle any value other than 1
here, including zero. I've added a little C preprocessor check to
prevent future engineers (including especially future-me) from
thinking that they can change this value without updating the related
code.

- Add GL_RGBA support to hwui's FontRenderer and friends

This also happened to involve some refactoring for convenience and
cleanliness.

Bug: 9577689
Change-Id: I0abd1e5a0d6623106247fb6421787e2c2f2ea19c
aches.cpp
ontRenderer.cpp
ontRenderer.h
ammaFontRenderer.h
penGLRenderer.cpp
ixelBuffer.h
ont/CacheTexture.cpp
ont/CacheTexture.h
ont/FontUtil.h
fb6c743c6e01aa2d4c457d85389a698a193c60b8 24-Jul-2013 Romain Guy <romainguy@google.com> Merge "Fix 9patches' limitation of 32 empty quads"
6cad75744ed3b81cf2c96f545368067b62c726ec 24-Jul-2013 Romain Guy <romainguy@google.com> Fix 9patches' limitation of 32 empty quads

The 9patch format allows to define more empty quads than this, remove
the use of a single int to index empty quads and replace it with a
lookup in the 9patch resource data structure.

Change-Id: I148ee5d9e0c96822b534a344e15c9d88078db7c2
xtensions.cpp
atch.cpp
atch.h
98427708a81eefcc24ae29e2f22e55f1ae44c927 23-Jul-2013 Chris Craik <ccraik@google.com> Merge "Ensure glActiveTexture is cleaned up correctly on functor resume"
9ab2d1847552aa4169b4325aae1b1368d6947a9f 23-Jul-2013 Chris Craik <ccraik@google.com> Ensure glActiveTexture is cleaned up correctly on functor resume

Change-Id: I103d7d63b17289d599c2c08dcc442cfba9b8e51d
aches.cpp
aches.h
penGLRenderer.cpp
448455fe783b0a711340322dca272b8cc0ebe473 22-Jul-2013 Romain Guy <romainguy@google.com> Use global indices array to draw layers

An array of indices local to a layer would only be necessary if
we changed the way we resolve T-junctions. Since we only ever
draw quads, let's just use the indices we use everywhere else.

This change also uses the global indices array to render list
of colored rectangles to save on the number of vertices generated
CPU-side.

Change-Id: Ia6d1970b0e9247805af5a114ca2a84b5d0b7c282
ayer.cpp
ayer.h
ayerRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
b3d83888229d9a9d40c3ada037fcf6f96e80e125 17-Jul-2013 Chris Craik <ccraik@google.com> Merge "Support stencil-based clipping for functors"
4e7b772b733593fbe25c733e95b8dcea293234b6 16-Jul-2013 Romain Guy <romainguy@google.com> Fix crashes in setMatrix() and concat()

setMatrix() was crashing in native code, only with hw acceleration on.
concat() would throw a NullPointerException. It now ignores null matrices.

Change-Id: Iebd8b410a957d2ba501570c6fbb3f680ff4a1a23
isplayListOp.h
isplayListRenderer.h
ecca6da4eab601f05a9d977c8d2651068b6e16b2 16-Jul-2013 Chris Craik <ccraik@google.com> Support stencil-based clipping for functors

bug:9070351
Change-Id: I1c54e1bea1b84b1619cce27b14f189b42cab7062
penGLRenderer.cpp
0c20c3898a533b7b76f60827cb6ea02e17c5953d 02-Jul-2013 Chris Craik <ccraik@google.com> Use global references for Bitmap AndroidPixelRefs

bug:9621717

Because we're no longer holding onto Bitmaps Java side during
DisplayList lifetime, use global refs to keep the backing byte arrays
around.

Adds back bitmap buffer passing + native ref management removed by
3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9

Adds back globalRef-ing removed by
f890fab5a6715548e520a6f010a3bfe7607ce56e

Change-Id: Ia59ba42f05bea6165aec2b800619221a8083d580
esourceCache.cpp
c36fe2fc5354fadc140c898f59d47859cbdeac67 28-Jun-2013 Romain Guy <romainguy@google.com> am 55e789db: am ed96349a: am 3d1b158e: Merge "Fix out of range glCopyTexImage2D Bug #9425270" into jb-mr2-dev

* commit '55e789dbc782be0dcaf1d4bae5f32e9e2f674152':
Fix out of range glCopyTexImage2D Bug #9425270
b254c242d98f4a9d98055726446351e52bece2c6 28-Jun-2013 Romain Guy <romainguy@google.com> Fix out of range glCopyTexImage2D
Bug #9425270

A better solution would be to use glCopyTexImage2D whenever possible but
this change would be a little more dangerous.

Change-Id: Ib1aaceda39d838716285ef97f356721416822dbb
penGLRenderer.cpp
55b6f95ee4ace96c97508bcd14483fb4e9dbeaa0 28-Jun-2013 Romain Guy <romainguy@google.com> Track the atlas' generation ID
Bug #9589379

If the atlas is terminated/reinitialized and a view does not invalidate
in between it might end up using a stale AssetAtlas::Entry. This change
is similar to how 9patch meshes are cached in DrawPatchOp: we simply
track the generation ID of the cache to make sure we always use the
latest data.

Change-Id: Ib5abb3769d2ce0eabe9adc04e320ca27c422019e
ssetAtlas.cpp
ssetAtlas.h
isplayListOp.h
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
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
aches.cpp
isplayList.cpp
isplayList.h
isplayListRenderer.cpp
isplayListRenderer.h
atchCache.cpp
atchCache.h
athCache.cpp
athCache.h
esourceCache.cpp
esourceCache.h
f296dca95f09be9832b5dcc79717986525d2b6cb 24-Jun-2013 Romain Guy <romainguy@google.com> (Small) 9patch drawing improvements

Save a bit of memory in meshs generated from native code
Avoid an extra if/else when drawing with hardware accelration on

Change-Id: I31a4550bde4d2c27961710ebcc92b66cd71153cc
atch.cpp
4f20f8ae50ecc3b6c04afd2e62716ca87620962b 21-Jun-2013 Chris Craik <ccraik@google.com> Merge "Initialize MergingDrawBatch clip with viewport bounds"
0e87f00f8cb79635aa70b9a2dfa02bf19dc7473d 20-Jun-2013 Chris Craik <ccraik@google.com> Initialize MergingDrawBatch clip with viewport bounds

This allows merged, clipped operations to behave correctly within a
savelayer, even if the base viewport has a large offset.

Additionally, disregard opaqueness when within a
complexclip/savelayer, as the coverage can't be trusted.

Change-Id: Ic908b82a4bb410bc7fac1b4295f4874ed166efc5
eferredDisplayList.cpp
penGLRenderer.cpp
penGLRenderer.h
64d592129e4f5231f61ac2b6055e1b37f8c0ebb6 21-Jun-2013 Romain Guy <romainguy@google.com> Merge "Refcount the paint used by Canvas.drawPatch()"
16ea8d373b03b1e115dd505af70dbee4e3a3a182 21-Jun-2013 Romain Guy <romainguy@google.com> Refcount the paint used by Canvas.drawPatch()

Prevents crashes :)

Change-Id: I62103ce97490613142321f080b82c2edaed67a95
isplayListRenderer.cpp
2c290392c9a934f9ac48364af01c848b01ba8e80 21-Jun-2013 Romain Guy <romainguy@google.com> Merge "Batch 9-patches in a single mesh whenever possible"
ede7eb7749e08b6343955cf52304a17f21c54e6f 21-Jun-2013 Chris Craik <ccraik@google.com> Merge "Make op outputting const, for more general logging"
03c00b5a135e68d22ca5bb829b899ebda6ed7e9d 21-Jun-2013 Romain Guy <romainguy@google.com> Batch 9-patches in a single mesh whenever possible

This change also fixes the way batched bitmaps were handled
inside a layer. The layer is now correctly dirtied to minimize
the amount of pixels to blend.

Fix alpha, mode and opaque computations for DrawPatchOp.

Change-Id: I1b6cd581c0f0db66c1002bb4fb1a9811e55bfa78
isplayListOp.h
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
atch.cpp
atch.h
atchCache.cpp
ixelBuffer.cpp
d485ef27c795648c4a05c4c089e8c5a15712fd36 21-Jun-2013 Romain Guy <romainguy@google.com> Merge "An identity matrix should be considered a pure translate matrix"
f6bed4f12a2c975678fc0bdea15054ab169aafb5 21-Jun-2013 Romain Guy <romainguy@google.com> An identity matrix should be considered a pure translate matrix

Change-Id: I75e91797e8270f902f67bdd7bb526cccc23adc6b
atrix.cpp
atrix.h
d4fed90d246a8decf962cd3a63507a3637354fb1 21-Jun-2013 Romain Guy <romainguy@google.com> Merge "Add debugging logs for GPU pixel buffers"
9e6f3ac109b5cd7736122d1bdf83ed38b9d739c6 21-Jun-2013 Romain Guy <romainguy@google.com> Add debugging logs for GPU pixel buffers

Change-Id: I7edb04dd30ee6fd823099e72788169cc185e70f2
ixelBuffer.cpp
c5493fb7fa1f6995955c667d4377f2337f2cf465 20-Jun-2013 Chris Craik <ccraik@google.com> Make op outputting const, for more general logging

Change-Id: Iaf78985ee5558e0b5d32d7bc1cd039eaffc820e5
isplayListOp.h
fb5a41a371e540f402e3dd987b0fbf92d1267902 20-Jun-2013 Romain Guy <romainguy@google.com> Merge "Fix regression: TextureView.setAlpha() was ignored"
2458939b5f926176a485a3196f59688eed78e858 19-Jun-2013 Romain Guy <romainguy@google.com> Fix regression: TextureView.setAlpha() was ignored

Change-Id: I9f43eec0fe23a65dcc1cf9cd0ac1f5e8907786a7
penGLRenderer.cpp
cadc5bf4116945a1800061f984d95175e20caba6 19-Jun-2013 Romain Guy <romainguy@google.com> Merge "Share Caches' index buffer with FontRenderer"
31e08e953fe7bdb1b1cbc247156cb6a19917a2f1 19-Jun-2013 Romain Guy <romainguy@google.com> Share Caches' index buffer with FontRenderer

This reduces state changes when we draw 9patches and text together,
which happens *a lot*. Also disable the NV profiling extension by
default since it doesn't play nice with display lists deferrals.
To enable it set debug.hwui.nv_profiling to true.

Change-Id: I518b44b7d294e5def10c78911ceb9f01ae401609
aches.cpp
aches.h
xtensions.cpp
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
roperties.h
ont/CacheTexture.h
77d55c7e5c7ace27dfe56665a59edc17102418a8 18-Jun-2013 Romain Guy <romainguy@google.com> Merge "Take hinting into account when caching fonts Bug #9464403"
2d5945e88731787babce1061f44cd54f02eeefc5 18-Jun-2013 Romain Guy <romainguy@google.com> Take hinting into account when caching fonts
Bug #9464403

Change-Id: I26a5f0c17eb27d096717b444d3e18ad1d2b5a43c
ont/Font.cpp
ont/Font.h
49cc5d71192cbd776e237488218aea18a3ed14b1 18-Jun-2013 Chris Craik <ccraik@google.com> Merge "Handle all text bounds as post-translated"
f09b746acb266a849f3421df1604ebec161bb93d 18-Jun-2013 Chris Craik <ccraik@google.com> Handle all text bounds as post-translated

We were treating immediate mode bounds as pre translate, which is
inconsistent with using them for quickRejection.

This fixes the overdraw counter not drawing correctly (since it uses
immediate mode drawing.

Change-Id: I1c734d367a00942bd7d9b041822c0a9f284e70a8
isplayListOp.h
36d38cb904556025b76c6d98f9fe2ccfa1c8a304 17-Jun-2013 Chris Craik <ccraik@google.com> Merge "Better handle op size edge cases"
d72b73cea49f29c41661e55eb6bfdbc04f09d809 17-Jun-2013 Chris Craik <ccraik@google.com> Better handle op size edge cases

bug:9464358

Previously, empty and unknown sized ops are assumed to fully cover
their clip. This is now corrected such that empty sized ops are
pre-rejected before defer. Additionally, unknown sized ops disable
overdraw avoidance.

Change-Id: Icf2ce24f98be5ea6299e24ffcf826790373564a1
eferredDisplayList.cpp
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
fb5c9050978afad2c1df570a13a6747f438c27f7 17-Jun-2013 Romain Guy <romainguy@google.com> Merge "Cancel layer update when a layer is about to be destroyed Bug #9310706"
e93482f5eac3df581d57e64c2a771a96aa868585 17-Jun-2013 Romain Guy <romainguy@google.com> Cancel layer update when a layer is about to be destroyed
Bug #9310706

Change-Id: I73eea6314c326f15a979617e3a05b525935f0d3f
ayer.cpp
ayer.h
ayerCache.cpp
penGLRenderer.cpp
penGLRenderer.h
61e1ca68fa82e5228b5bfcdad8deecd9383fb183 17-Jun-2013 Chris Craik <ccraik@google.com> Merge "Check for layer renderer in flush"
8c6e17c2a9b0ad7864a261cc9a30b9623e20bdcb 17-Jun-2013 Chris Craik <ccraik@google.com> Check for layer renderer in flush

bug:9310706

In some cases flush will occur after a layer is destroyed. Avoid
trying to draw after putting the layer in the layer cache.

Change-Id: I55d66f420e7354fe552c82eb3145a7d91b4441e3
ayer.cpp
2a0451e54a3c3b397861736c42e42125bd938d43 17-Jun-2013 Chris Craik <ccraik@google.com> Merge "Fix clip merging behavior"
5216c3b05fc6c7bacd74be67b932fe3aba89cc8e 15-Jun-2013 Romain Guy <romainguy@google.com> Merge more 9patches

Change-Id: If8b16af84f0ee42afc406922d15897e51d833e68
isplayListOp.h
a02c4ed885d97e516f844ddb0a96083f1b45b4cb 14-Jun-2013 Chris Craik <ccraik@google.com> Fix clip merging behavior

Previously, a new op with a clipped side could be added to a
MergingDrawBatch without considering the batch's current bounds.

Change-Id: I1b873ecf821bad7cda6630c3f311edd90ac5cc8c
eferredDisplayList.cpp
penGLRenderer.cpp
penGLRenderer.h
d1f9aaa5d776a94907f9e5b632125648043c47b3 14-Jun-2013 Chris Craik <ccraik@google.com> Merge "Fix various draw ops that may incorrectly not scissor"
39a908c1df89e1073627b0dcbce922d826b67055 13-Jun-2013 Chris Craik <ccraik@google.com> Fix various draw ops that may incorrectly not scissor

bug:8965976

Also consolidates quickReject scissor-ing and scissor-less paths.
Renamed plain 'quickReject' method, as it has sideEffects beyond what
the java and skia canvases do.

Change-Id: I4bdf874d3c8f469d283eae1e71c5e7ea53d47016
isplayList.cpp
penGLRenderer.cpp
penGLRenderer.h
ect.h
735760e3c28c18a86ba503031497cb2d5fa81903 14-Jun-2013 Romain Guy <romainguy@google.com> Merge "Add new Query class for debugging"
7f4307668b10467ee39d41c7ea29cf1ff238a835 13-Jun-2013 Romain Guy <romainguy@google.com> Add new Query class for debugging

This class can be used to perform occlusion queries. An occlusion query
can be used to test whether an object is entirely hidden or not.

Change-Id: Ida456df81dbe008a64d3ff4cb7879340785c6abf
aches.cpp
ither.cpp
xtensions.h
radientCache.cpp
uery.h
f70119cd776f871a82c94be8522dce02e04c73a8 13-Jun-2013 Chris Craik <ccraik@google.com> Reset batching state when overlap batch deletion occurs

Change-Id: Ifdbee9baaa734e27d15d2b54aa3b3abfffbce1e9
eferredDisplayList.cpp
eferredDisplayList.h
7112fddbe26acb12f478f4e77ff9607b523180b4 13-Jun-2013 Romain Guy <romainguy@google.com> Merge "Restore buildLayer()'s old behavior; it's synchronous again Bug #9193833"
149b015db9a478c6345cf0528fe4df3c7c2b5110 13-Jun-2013 Chris Craik <ccraik@google.com> Merge "Overdraw avoidance and merging of clipped ops"
9846de68f1b4f2720da421e5242017c28cfc93ed 13-Jun-2013 Chris Craik <ccraik@google.com> Remove crash workarounds, add logging

bug:9321162
Change-Id: I748c27f979af1a303be01db29aedcbad6d608c38
isplayList.cpp
isplayList.h
405436021da156fbe3c5d4de48bdefa564cf7fc0 13-Jun-2013 Romain Guy <romainguy@google.com> Restore buildLayer()'s old behavior; it's synchronous again
Bug #9193833

Change-Id: I4ee07e65c0a8967f0b55da030ecaad6dfc46136f
ence.h
penGLRenderer.cpp
penGLRenderer.h
28ce94a4ffc7576f40776d212f1ada79fafaa061 31-May-2013 Chris Craik <ccraik@google.com> Overdraw avoidance and merging of clipped ops

bug:8951267

If an opaque op, or group of opaque ops covers the invalidate region,
skip draw operations that precede it.

Clipped operations may now be merged, but only if they share a
clipRect - this is a very case for e.g. ListView, where all background
elements may now be a part of the same MergingDrawBatch.

It is this more aggressive merging that groups together clipped
background elements in the ListView case, enabling the overdraw
avoidance skipping the window background.

Change-Id: Ib0961977e272c5ac37f59e4c67d828467422d259
eferredDisplayList.cpp
eferredDisplayList.h
isplayListOp.h
ayer.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
ect.h
1e4795ab64755bdae48fe7b8cd78f204c9022791 12-Jun-2013 Romain Guy <romainguy@google.com> Merge "Avoid 9patch cache lookups when possible"
4c2547fa9244e78115cde0a259291053108c3dc7 12-Jun-2013 Romain Guy <romainguy@google.com> Avoid 9patch cache lookups when possible

This optimization saves up to 0.3ms per frame on the Play Store's
front page, on a Nexus 4 device.

Change-Id: Iaa4ef33c6e3b37e175efd5b9eea9ef59b43f14f3
isplayListOp.h
ayerRenderer.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
atchCache.cpp
atchCache.h
rogram.cpp
e13fb01d25b22f46206115faff2c7787d330f0d1 11-Jun-2013 Chris Craik <ccraik@google.com> am 8cb26c09: am cb5d644f: Merge "Workaround possible use after delete" into jb-mr2-dev

* commit '8cb26c099dc6357340141c9d81a1131ee404ae41':
Workaround possible use after delete
9abddd54d4177d1a9790889046407da13aa7077b 10-Jun-2013 Chris Craik <ccraik@google.com> Workaround possible use after delete

bug:9321162
Change-Id: Ic35af5b5925da56e9a143e6b33658831038f3b72
isplayList.cpp
be1b127c7bec252e0c6ab0e06ed6babed07d496f 06-Jun-2013 Romain Guy <romainguy@google.com> Assume a texture is unbound after deleting it
Bug #9316260

The GL specification indicates that deleting a bound texture has
the side effect of binding the default texture (name=0). This change
replaces all calls to glDeleteTextures() by Caches::deleteTexture()
to properly keep track of texture bindings.

Change-Id: Ifbc60ef433e0f9776a668dd5bd5f0adbc65a77a0
aches.cpp
aches.h
ither.cpp
radientCache.cpp
mage.cpp
ayer.cpp
ayerRenderer.cpp
athCache.cpp
extDropShadowCache.cpp
exture.cpp
exture.h
extureCache.cpp
ont/CacheTexture.cpp
450dc7554de90026a6dd2a1ec7108c1423fce18e 05-Jun-2013 Romain Guy <romainguy@google.com> Remove string allocations when creating display lists

Change-Id: Id520db981a3988cb980c8da5dbea8f26ef94989f
isplayList.h
8aa195d7081b889f3a7b1f426cbd8556377aae5e 05-Jun-2013 Romain Guy <romainguy@google.com> Introduce Caches::bindTexture() to reduce glBindTexture calls

Change-Id: Ic345422567c020c0a9035ff51dcf2ae2a1fc59f4
ndroid.mk
ssetAtlas.cpp
ssetAtlas.h
aches.cpp
aches.h
ither.cpp
ither.h
ontRenderer.cpp
radientCache.cpp
mage.cpp
ayer.cpp
ayer.h
ayerRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
athCache.cpp
athCache.h
kiaShader.cpp
kiaShader.h
extDropShadowCache.cpp
extDropShadowCache.h
exture.cpp
exture.h
extureCache.cpp
ont/CacheTexture.cpp
ont/CacheTexture.h
f9f0016b1ff816eb2c7561eed482c056189005f8 09-May-2013 Romain Guy <romainguy@google.com> Enable GPU pixel buffers on OpenGL ES 3.0 devices

Change-Id: I164d72ccd7a9bf6ae0e3f79dfef50083558937ba
aches.cpp
aches.h
ixelBuffer.cpp
roperties.h
7d9b1b3c02eb1ffd99742ecb7b69e3ab97d2ba18 28-May-2013 Romain Guy <romainguy@google.com> Re-initialize the 9patch cache if cleared with onTrimMemory

The 9aptch cache was reinitialized after destroying/recreating
the EGL context but not after clearing it during a normal
memory trim.

Change-Id: If6155bfc8a62439e9878bc742a4766b3bd6c6aec
atchCache.cpp
atchCache.h
a404e16e4933857464046d763ed7629cd0c86cbf 25-May-2013 Romain Guy <romainguy@google.com> Make sure atlas antries can correctly filter/wrap textures

The virtual textures would each have their own values for wrapping
and filtering which could lead to conflict and/or extraneous GL
commands being issued.

Change-Id: I64cb59a03e598f46bf645bd1d30fccfa63a07431
ssetAtlas.cpp
ssetAtlas.h
penGLRenderer.cpp
penGLRenderer.h
exture.h
608094041177193dcce7a91e8dc96a2556d29bfd 23-May-2013 Romain Guy <romainguy@google.com> Merge "Add PerfHUD ES profiling capabilities"
e9bc11f7121dbe373b0cbe5779ee6a12d824492c 23-May-2013 Romain Guy <romainguy@google.com> Add PerfHUD ES profiling capabilities

The eglGetSystemTimeNV extension can be used to enable profiling
in PerfHUD ES. When the delta of two calls to eglGetSystemTimeNV
equals 0, we now cancels display lists updates. This allows the
tool to redraw the same frame several times in a row to run its
analysis.

For better results profiling should only be attempted after
setting viewroot.profile_rendering to true using adb shell
setprop.

Change-Id: I02e3c237418004cff8d6cb0b9a37126efae44c90
xtensions.cpp
xtensions.h
341ac60009e6b3c1114938f40743fd81a0ce034f 23-May-2013 Chet Haase <chet@google.com> am 1bf58a5a: am cfbbc864: Merge "Restore previous alpha value on noop\'d DisplayList operations" into jb-mr2-dev

* commit '1bf58a5a4c3275a8de676046da311ec0c3c61c78':
Restore previous alpha value on noop'd DisplayList operations
c725903eec82aa73ebe9682d142904c06321bc2c 23-May-2013 Chet Haase <chet@google.com> Restore previous alpha value on noop'd DisplayList operations

Previously, when a DisplayList operation was rejected because it was not
in the clip bounds, the code would not properly restore the previous
state, leading to errors in alpha values of the noop'd op being applied
to unrelated operations later in the DisplayList.

Issue #9051935 Flash of grey background when transitioning to conversation view

Change-Id: I56645cc9ebf2e07be0228ca5e249213dbeb10d7d
isplayList.cpp
7f77736599c39cdd5540168fc652cf6846799a33 22-May-2013 Romain Guy <romainguy@google.com> Merge "Merge scaled bitmaps with translated bitmaps"
2db5e993b626794eb07a0ff354269f9a77da81b3 22-May-2013 Romain Guy <romainguy@google.com> Merge scaled bitmaps with translated bitmaps

Change-Id: I03089f48f97b69fcb4a0171984d3ff548d41c4a8
eferredDisplayList.cpp
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
ect.h
41541825bc90dac740e424cdd41a8c997e15cdb7 04-May-2013 Chris Craik <ccraik@google.com> Use individual glyph positions to determine text bounds.

bug:8766924

Previously text bounds were calculated to be from 0 to totalAdvance in
the X, and from the font's top to bottom. These are incorrect,
especially in light of the font fallback mechanism.

Now, we calculate the bounds of the text as we layout each glyph.
Since these are much tighter bounds in the common case, this
significantly reduces the amount of clipping required (which in turn
enables more aggressive text merging).

Change-Id: I172e5466bf5975bf837af894a9964c41db538746
eferredDisplayList.cpp
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
7f43674db314ab76e77cfd2a9488058eae144aa8 21-May-2013 Chris Craik <ccraik@google.com> Merge "Fix DISPLAY_LIST_DEBUG"
6045d2b7cd0fe62d4385a053bbd1a74d64614d8e 21-May-2013 Chris Craik <ccraik@google.com> Fix DISPLAY_LIST_DEBUG

will now log ops

Change-Id: I4e119999af7ceea0558225aa78926e761277fee2
isplayList.cpp
6d29c8d5218cac0fb35f3b7c253f2bdebd44f15a 09-May-2013 Chris Craik <ccraik@google.com> Add tessellation path for points

bug:4351353
bug:8185479

Point tessellation is similar to line special case, except that we
only tessellate one point (as a circle or rect) and duplicate it
across other instances.

Additionally:

Fixes square caps for AA=false lines

Cleanup in CanvasCompare, disabling interpolation on zoomed-in
comparison view

Change-Id: I0756fcc4b20f77878fed0d8057297c80e82ed9dc
penGLRenderer.cpp
penGLRenderer.h
athTessellator.cpp
athTessellator.h
rogram.h
rogramCache.cpp
ertex.h
e8f9a37395691f8988e09c8efb9ab1601025c5dc 10-May-2013 Chris Craik <ccraik@google.com> am f420a36e: am 4329ee25: Merge "Fix off by one error in log tracking" into jb-mr2-dev

* commit 'f420a36e5f62a9ab38f6782db78f5d94947b034e':
Fix off by one error in log tracking
d4b43b3cf3ee109a5251228dcc1d9bc3c25ff150 09-May-2013 Chris Craik <ccraik@google.com> Fix off by one error in log tracking

bug:8875715

Additionally moves op logging before the op is executed, to print
correctly, in pre-order traversal

Change-Id: I4e9566261f8363c73739d183e6d82b854f72ffad
eferredDisplayList.cpp
isplayList.cpp
isplayListLogBuffer.cpp
1f5762e646bed2290934280464832782766ee68e 07-May-2013 Mathias Agopian <mathias@google.com> libutils clean-up

Change-Id: I11ee943da23a66828455a9770fc3c5ceb4bbcaa9
ontRenderer.h
d5207b2eb9ba520da822d61ff78b539842fc5255 07-May-2013 Romain Guy <romainguy@google.com> Fix double-free in AssetAtlas
Bug #8833153

If Atlas::terminate() is called twice without an init() in between
libhwui would double-free Atlas::mImage. This lead to a lot of crashes
with the monkeys as they can easily trigger memory trims.

Change-Id: I96798414e5e71cd498aaca85a790661ebccdaa91
ssetAtlas.cpp
72bd95b8feb7ef41eb5dd00003b1aed8f30f4abe 06-May-2013 Romain Guy <romainguy@google.com> am b90ff505: am fdf13c90: Merge "Convert alpha from [0..1] to [0.255] range Bug #8808886" into jb-mr2-dev

* commit 'b90ff505df143abd957cfc19b60727e3460ee68c':
Convert alpha from [0..1] to [0.255] range Bug #8808886
94268b0dd908ea003772e24bec12cea473434486 06-May-2013 Chet Haase <chet@google.com> am 33be275d: am d65eebf4: Merge "Fix scaled-view droppings artifact" into jb-mr2-dev

* commit '33be275deb072ca3e6155b61370578b16dbee64a':
Fix scaled-view droppings artifact
1f8a0db348f6c7bf2d1f55065472c913677f3d69 06-May-2013 Romain Guy <romainguy@google.com> Remove stray log

Change-Id: I392eea216ad67f376ded802c19a3e2287aacc6f8
atchCache.cpp
fdf13c90cb6b412dd93ae6a8990bf962e0d71407 04-May-2013 Romain Guy <romainguy@google.com> Merge "Convert alpha from [0..1] to [0.255] range Bug #8808886" into jb-mr2-dev
87b515cde53f3c8cc3fdf698c100e67508487e59 04-May-2013 Romain Guy <romainguy@google.com> Convert alpha from [0..1] to [0.255] range
Bug #8808886

Without this conversion, alpha was always set to 0 or 1 which causes
things to disappear mysteriously. Mysteries are meant to be solved
and I solved them all in 6 characters.

Change-Id: I2078420fbe968c046e999b0eabb24403e71108fd
penGLRenderer.cpp
78dd96d5af20f489f0e8b288617d57774ec284f7 03-May-2013 Romain Guy <romainguy@google.com> Add an on-screen overdraw counter

The counter can be enabled by setting the system property called
debug.hwui.overdraw to the string "count". If the string is set
to "show", overdraw will be highlighted on screen instead of
printing out a simple counter.

Change-Id: I9a9c970d54bffab43138bbb7682f6c04bc2c40bd
aches.cpp
penGLRenderer.cpp
penGLRenderer.h
rogram.h
rogramCache.cpp
roperties.h
hread/TaskManager.h
259b696b00f07938569fc9a0ea43858cdaab909b 04-May-2013 Chet Haase <chet@google.com> Fix scaled-view droppings artifact

Sometimes views that are scaled leave behind rows/columns on the
screen as they move/scale around.

The problem was that the pivot point around which the scale takes place
(in the default case of scaling around the center of the view)
was getting truncated to integer coordinates in the display list.
Meanwhile, the pivot point at the Java level was using the true float
values, resulting in a mis-match between the invalidation rectangle
(computed at the Java level) and the drawing-operation rectangle (computed
at the native level).

This only occurred when views had odd bounds (thus the integer representation
of the center differed from the float representation of the center), and only
when some other drawing operation would expand the clip rect to allow the
incorrect drawing operation (using the wrong pivot point) to draw outside of
its clip boundaries.

Issue #8617023 7x7 screen not updated correctly

Change-Id: If88889b9450d34535df732b78077a29b1f24802d
isplayList.cpp
1212c9dafe932f70956651338568c5e1fdf21bcf 03-May-2013 Romain Guy <romainguy@google.com> Remove warning

Change-Id: Ia1523d02dc2b7f58ca26a142a5aef710792a5f3d
ndroid.mk
mage.cpp
mage.h
877cfe0e32a845d5a58252b8a6e1f54f95b4379c 03-May-2013 Romain Guy <romainguy@google.com> Wrap EGLImage with a C++ API

Change-Id: I0fa3282ea7e2ace3ba2aadd929b32232b3d41628
ssetAtlas.cpp
ssetAtlas.h
mage.h
3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9 18-Apr-2013 Romain Guy <romainguy@google.com> Pack preloaded framework assets in a texture atlas

When the Android runtime starts, the system preloads a series of assets
in the Zygote process. These assets are shared across all processes.
Unfortunately, each one of these assets is later uploaded in its own
OpenGL texture, once per process. This wastes memory and generates
unnecessary OpenGL state changes.

This CL introduces an asset server that provides an atlas to all processes.

Note: bitmaps used by skia shaders are *not* sampled from the atlas.
It's an uncommon use case and would require extra texture transforms
in the GL shaders.

WHAT IS THE ASSETS ATLAS

The "assets atlas" is a single, shareable graphic buffer that contains
all the system's preloaded bitmap drawables (this includes 9-patches.)
The atlas is made of two distinct objects: the graphic buffer that
contains the actual pixels and the map which indicates where each
preloaded bitmap can be found in the atlas (essentially a pair of
x and y coordinates.)

HOW IS THE ASSETS ATLAS GENERATED

Because we need to support a wide variety of devices and because it
is easy to change the list of preloaded drawables, the atlas is
generated at runtime, during the startup phase of the system process.

There are several steps that lead to the atlas generation:

1. If the device is booting for the first time, or if the device was
updated, we need to find the best atlas configuration. To do so,
the atlas service tries a number of width, height and algorithm
variations that allows us to pack as many assets as possible while
using as little memory as possible. Once a best configuration is found,
it gets written to disk in /data/system/framework_atlas

2. Given a best configuration (algorithm variant, dimensions and
number of bitmaps that can be packed in the atlas), the atlas service
packs all the preloaded bitmaps into a single graphic buffer object.

3. The packing is done using Skia in a temporary native bitmap. The
Skia bitmap is then copied into the graphic buffer using OpenGL ES
to benefit from texture swizzling.

HOW PROCESSES USE THE ATLAS

Whenever a process' hardware renderer initializes its EGL context,
it queries the atlas service for the graphic buffer and the map.

It is important to remember that both the context and the map will
be valid for the lifetime of the hardware renderer (if the system
process goes down, all apps get killed as well.)

Every time the hardware renderer needs to render a bitmap, it first
checks whether the bitmap can be found in the assets atlas. When
the bitmap is part of the atlas, texture coordinates are remapped
appropriately before rendering.

Change-Id: I8eaecf53e7f6a33d90da3d0047c5ceec89ea3af0
ndroid.mk
ssetAtlas.cpp
ssetAtlas.h
aches.cpp
aches.h
ebug.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
xtensions.h
penGLRenderer.cpp
penGLRenderer.h
atch.cpp
atch.h
atchCache.cpp
atchCache.h
rogram.cpp
rogram.h
roperties.h
exture.h
vMapper.h
69ca575b5bdfa023858db3fff11ec5c2a7b277a9 24-Apr-2013 Chris Craik <ccraik@google.com> Merge "Avoid incorrectly dirtying the functor output rect"
4a2bff7b387403ac976cd041cb5a1b57afa44d9c 16-Apr-2013 Chris Craik <ccraik@google.com> Avoid incorrectly dirtying the functor output rect

bug:8640186
Change-Id: I360cb85e59cfdd0b499561e92b81089341d07046
penGLRenderer.cpp
684634144b15e4da0ed04baa2c4531ef538652a6 21-Apr-2013 Chet Haase <chet@google.com> am 371d4ccc: am 339ac854: Merge "Fix quickReject logic to account for setClipChildren() setting" into jb-mr2-dev

* commit '371d4cccde56ec4d26e51f8e82ef68f196169a3d':
Fix quickReject logic to account for setClipChildren() setting
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
isplayList.cpp
isplayList.h
isplayListOp.h
e0cedc40a2c6671370fd0c434874e7e79c0ba71f 18-Apr-2013 Chris Craik <ccraik@google.com> am 17917a95: am d3f9ffe2: Merge "Prevent transformed ops from merging in the first place" into jb-mr2-dev

* commit '17917a95f355634ba881cd3f587002cb7ef27ce6':
Prevent transformed ops from merging in the first place
d3f9ffe28d1599e40f8c9a7c0c32465324bb2828 18-Apr-2013 Chris Craik <ccraik@google.com> Merge "Prevent transformed ops from merging in the first place" into jb-mr2-dev
ee5b2c6de7fb32d945a5a1303012a5f94b719dfa 18-Apr-2013 Chris Craik <ccraik@google.com> Prevent transformed ops from merging in the first place

bug:8649215

Previously we prevented ops with non-translate transforms from
merging, but missed the case of the first op in a merging batch
containing a non-translate transform.

This fulfills the assumption of drawText's non-immediate mode that
merged ops will have pure translate transforms.

Change-Id: I6f6db341aff3f7e84e74b4c3ccf970d585a2db1a
isplayListOp.h
e76dd37bdb75e7ed757e1284249c64f0c58e869d 17-Apr-2013 Chris Craik <ccraik@google.com> am 680ca941: am ec5dc76a: Merge "Make layer double drawing visible in overdraw debug mode" into jb-mr2-dev

* commit '680ca9418b6b3f01547b286d1a80e07e186bc05f':
Make layer double drawing visible in overdraw debug mode
34416eaa1c07b3d7a139e780cea8f8d73219650e 16-Apr-2013 Chris Craik <ccraik@google.com> Make layer double drawing visible in overdraw debug mode

A clipped saveLayer will cause two draws - first to an onscreen
buffer, then again back to the framebuffer. This change - when in
overdraw debug - reissues draws associated with a clipped saveLayer,
but only to the stencil buffer. Operations within a saveLayer are
shown correctly to be twice drawn, and View.setAlpha() without an
associated hardware layer, or hasOverlappingRendering() are made more
visible.

Hardware layers, on any frame that they are updated, similarly draw
twice, and will also be counted against the stencil buffer doubly.

Note: greater depths of layers - e.g. a saveLayer within a saveLayer -
are not respected, as that would require additional region tracking.

Change-Id: I61fb0e61038fe66013d59914c20bb47a550dea7d
ayer.cpp
ayer.h
penGLRenderer.cpp
09d3636485eb1601c5beaf0d8682bb3027d2271d 16-Apr-2013 Romain Guy <romainguy@google.com> Fix indentation

Change-Id: If54b7d7c016acb5e7300323d2eada57142a814c0
ndroid.mk
55709fc1c7b2741ba3cf7f160d7d8644c112bb99 15-Apr-2013 Chris Craik <ccraik@google.com> am 55b883b0: am 30c990c3: Merge "Draw Operation merging" into jb-mr2-dev

* commit '55b883b0a960b37aa453253f3ccb614dd95c221c':
Draw Operation merging
30c990c361291ad578ef4ffe4a4dd0fd6080797b 15-Apr-2013 Chris Craik <ccraik@google.com> Merge "Draw Operation merging" into jb-mr2-dev
527a3aace1dd72432c2e0472a570e030ad04bf16 04-Mar-2013 Chris Craik <ccraik@google.com> Draw Operation merging

Merge simple bitmap draw operations and text operations to avoid
issuing individual gl draws for each operation. Merging other ops to
be done eventually.

The methods are different - the bitmap merging generates a single
mesh for reused, unclipped images (esp. repeated images in a listview)

The text approach queries just defers the normal font rendering until
the last drawText in the sequence that can share the same shader.

Patches are sorted and merged, but don't yet have a multiDraw
implementation. For now, the pretending-to-merge gives better sorting
behavior by keeping similar patches together.

Change-Id: Ic300cdab0a53814cf7b09c58bf54b1bf0f58ccd6
ebug.h
eferredDisplayList.cpp
eferredDisplayList.h
isplayList.cpp
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
tils/TinyHashMap.h
5069101c08ff11e78bfab7eeb7360b0b12e3b54b 13-Apr-2013 Romain Guy <romainguy@google.com> am 5141bf80: am 80fccb4d: Merge "There should be a mandatory coder\'s license. Bug #8586560" into jb-mr2-dev

* commit '5141bf801e9d58e618c76e4cdc042218b24193fc':
There should be a mandatory coder's license. Bug #8586560
4abab937bf3f168763a7c029275bf1de151ec1ae 13-Apr-2013 Romain Guy <romainguy@google.com> There should be a mandatory coder's license.
Bug #8586560

And I don't deserve to pass the test.

Change-Id: Ic7886205511f16145a925fc860e4a03dfaf473d5
ither.cpp
0f6ba077321ef275649fdcc29c0b323e9740d739 13-Apr-2013 Romain Guy <romainguy@google.com> am 543c5dcf: am efcb252f: Merge "Properly computer gradient textures width" into jb-mr2-dev

* commit '543c5dcfcb93925a5b9ac073eedb0bd813b2ebe0':
Properly computer gradient textures width
95aeff8f11968c8b29ae114bb5e1172c70cf7634 13-Apr-2013 Romain Guy <romainguy@google.com> Properly computer gradient textures width

Only on devices that do not have the npot extension

Change-Id: I472a13dc707d2abaf5fcc06f99c9da343b333558
radientCache.cpp
e48da96ab5837f305ef55d5ea9d3215930884f83 12-Apr-2013 Romain Guy <romainguy@google.com> resolved conflicts for merge of 886e1204 to master

Change-Id: Id002d2ae799c6946672335f122ecbfa07d9c0bc1
cf51a4199835e9604aa4c8b3854306f8fbabbf33 09-Apr-2013 Romain Guy <romainguy@google.com> Introduce PixelBuffer API to enable PBOs

PBOs (Pixel Buffer Objects) can be used on OpenGL ES 3.0 to perform
asynchronous texture uploads to free up the CPU. This change does not
enable the use of PBOs unless a specific property is set (Adreno drivers
have issues with PBOs at the moment, Mali drivers work just fine.)

This change also cleans up Font/FontRenderer a little bit and improves
performance of drop shadows generations by using memcpy() instead of
a manual byte-by-byte copy.

On GL ES 2.0 devices, or when PBOs are disabled, a PixelBuffer instance
behaves like a simple byte array. The extra APIs introduced for PBOs
(map/unmap and bind/unbind) are pretty much no-ops for CPU pixel
buffers and won't introduce any significant overhead.

This change also fixes a bug with text drop shadows: if the drop
shadow is larger than the max texture size, the renderer would leave
the GL context in a bad state and generate 0x501 errors. This change
simply skips drop shadows if they are too large.

Change-Id: I2700aadb0c6093431dc5dee3d587d689190c4e23
ndroid.mk
aches.cpp
aches.h
eferredDisplayList.cpp
ontRenderer.cpp
ontRenderer.h
ammaFontRenderer.cpp
ammaFontRenderer.h
penGLRenderer.cpp
ixelBuffer.cpp
ixelBuffer.h
roperties.h
extDropShadowCache.cpp
ont/CacheTexture.cpp
ont/CacheTexture.h
ont/Font.cpp
c4c8f2d82e4d047c479fbdad5e1e296d745bfe3b 10-Apr-2013 Chet Haase <chet@google.com> am 78b24b6f: am dacd4751: Merge "Fix Contacts animation jank" into jb-mr2-dev

* commit '78b24b6f03f467a59afd6797b4c03224fe3af767':
Fix Contacts animation jank
dacd47516321d263efa7489b5b9bd7d8e1714332 10-Apr-2013 Chet Haase <chet@google.com> Merge "Fix Contacts animation jank" into jb-mr2-dev
58d110afa0e0f3843d72617046185a3c2d48dca9 10-Apr-2013 Chet Haase <chet@google.com> Fix Contacts animation jank

The last frame of an animation stays stuck on the screen for a couple of frames.
Specifically, the "Quick Contact" animation that animates the picture
closed (fades/scales it away) animates all the way to the end... then hangs there
briefly before being taken down.

The problem is a rendering bug where we correctly detect that a DisplayList
has nothing to draw (since the last frame is completely transparent, alpha==0),
but incorrectly ignore the fact that we cleared the transparent-background
window prior to not-drawing that DisplayList. When we detect that there's
nothing to draw, we don't bother swapping buffers. So even though we drew
the right thing (clearing the buffer), we didn't actually post the buffer to the
screen.

This change factors in both the clear and the draw to decide when to swap buffers.

Issue #8564865 Quick contact close animation jank redux

Change-Id: Ib922cff88a94f025b62f7461c1a29e96fe454838
penGLRenderer.cpp
28af35e8cdc601c7ab9c7287d9e72fdc331e8a9d 10-Apr-2013 Ying Wang <wangying@google.com> resolved conflicts for merge of a976bddd to master

Change-Id: I64e1cbfb0eee891ce4d1eee40eefdcedcc501f7f
d8b26d6c424741dd09cf70ee88fd237807aaf301 10-Apr-2013 Ying Wang <wangying@google.com> Merge "Add liblog" into jb-mr2-dev
d685894212e6dbeac1fda4996903c1da115d49a6 10-Apr-2013 Ying Wang <wangying@google.com> Add liblog

Bug: 8580410
Change-Id: I746aa8258866508c3a725d0773faf4518096548f
ndroid.mk
6c825d49b77b1b257b59a30c24792d1bf0f5df84 09-Apr-2013 Romain Guy <romainguy@google.com> am 52706c6c: am 4a745e78: Merge "Change the dither texture\'s swizzling" into jb-mr2-dev

* commit '52706c6cc0d8ded20cfa8d46f200ca38f1009468':
Change the dither texture's swizzling
032d47af737d803e841ab79f38ac9068a46c9aeb 09-Apr-2013 Romain Guy <romainguy@google.com> Change the dither texture's swizzling

This is a more elegant way to sample from a float alpha texture.
Instead of sampling from the red channel in the fragment shader
we can set the alpha channel swizzle to redirect it to the
red channel. This lets us sample from the alpha channel in the
fragment shader and get the correct value.

Change-Id: I95bbf7a82964e1bf42c0fee1b782b6bdbbcef618
ither.cpp
rogramCache.cpp
6adbb9033502d98b77176a2fe4001f37d177d78c 06-Apr-2013 Romain Guy <romainguy@google.com> am 5ea0465d: am 8299f683: Merge "Use float textures to render gradients when possible" into jb-mr2-dev

* commit '5ea0465d4550944e2e5ac953a5c18ef31f31ec4d':
Use float textures to render gradients when possible
b48800428906ae455c2b63acacd44e390e1fee49 05-Apr-2013 Romain Guy <romainguy@google.com> Use float textures to render gradients when possible

Float textures offer better precision for dithering.

In addition this change removes two uniforms from gradient shaders.
These uniforms were used to dither gradients but their value is
a build time constant. Instead we hardcode the value directly in
the shader source at compile time.

Change-Id: I05e9fd3eef93771843bbd91b453274452dfaefee
ither.cpp
ither.h
radientCache.cpp
radientCache.h
rogramCache.cpp
rogramCache.h
f7648b7f24bc4cf8a66df4c0cfb5e8aa2b7d3ac8 05-Apr-2013 Romain Guy <romainguy@google.com> am 21af446c: am a151ef8c: Merge "First OpenGL ES 3.0 based optimization" into jb-mr2-dev

* commit '21af446ce9704bdc465bf15755148c5de50ea019':
First OpenGL ES 3.0 based optimization
a151ef8c667a52d9fae28c09f780784f19bdb039 05-Apr-2013 Romain Guy <romainguy@google.com> Merge "First OpenGL ES 3.0 based optimization" into jb-mr2-dev
59f5015fc3c1e0be54fddc2abbdd1a854f742362 05-Apr-2013 Chris Craik <ccraik@google.com> am 233f6730: am de4f8c38: Merge "Traverse layers in update order" into jb-mr2-dev

* commit '233f67302e7d35242613c5d4502459b085868595':
Traverse layers in update order
de4f8c3872c6284605c168687c69ebfa72ea49d2 05-Apr-2013 Chris Craik <ccraik@google.com> Merge "Traverse layers in update order" into jb-mr2-dev
1206b9bba91f7ed899c5c87427cce725fe5aadfc 04-Apr-2013 Chris Craik <ccraik@google.com> Traverse layers in update order

bug:8540150

Layers now require traversal in update order, as it will be child
first, then parent for layer-in-layer

Fixes issue with deferred layer playback not flushing in order, and
thus child not painting before parent

Also fixes DisplayList to only be cleared after flush in deferred list

Change-Id: I2f284d00079cdb20798aeef6a1c94e823940db40
eferredDisplayList.h
ayer.cpp
penGLRenderer.cpp
0908764b2b3cf5075df4178a5f0a8547dcb7b317 04-Apr-2013 Romain Guy <romainguy@google.com> First OpenGL ES 3.0 based optimization

This change uses a new OpenGL ES 3.0 feature to upload less data when
the font cache needs to be update. This can result in significant
performance improvements on device with large textures or with locales
that use a lot of glyphs (CJK for instance.)

This change also fixes various unpack alignment issues. The unpack
alignment, as well as the unpack row length, is not texture specific
but a global state that affect all glTex/SubImage2D calls. Some of
them were missing the appropriate glPixelStorei() call. This could
result in corrupted textures.

Change-Id: Iefb429d4d0d0b4e0faeadf27daafee6d30a21d85
ontRenderer.cpp
ayer.cpp
ayer.h
ayerRenderer.cpp
penGLRenderer.cpp
ont/CacheTexture.cpp
ont/CacheTexture.h
2a54c185a64b247ff261de962e3a4e0ddf4c2ff0 04-Apr-2013 Romain Guy <romainguy@google.com> am ae74f598: am eaadd123: Merge "Add internal API to query GL version number" into jb-mr2-dev

* commit 'ae74f59856d4f790c173857bb8024291d585861d':
Add internal API to query GL version number
eaadd123a7d7b0a02046db33e882ddcef33e1a49 04-Apr-2013 Romain Guy <romainguy@google.com> Merge "Add internal API to query GL version number" into jb-mr2-dev
df1dc28ba0c63b195016ad0453fc58025ee82acb 30-Mar-2013 Romain Guy <romainguy@google.com> Add internal API to query GL version number

Change-Id: Idc02efc237b8e97445a9bab05c291bf193c7f279
xtensions.cpp
xtensions.h
e4d9a01bfc7451afff1ed399a5801c7aa2af2831 29-Mar-2013 Dan Morrill <morrildl@google.com> Phase 1 of refactoring SystemServer.

SystemServer is currently a monolithic class that brings up key system
services. This change is the first phase of refactoring it to be more
configurable. Specifically, it adds a set of on/off switches used to control
startup of individual services. Future plans include finer grained controls
and a more explicit and consistent startup sequence for these services.

Change-Id: I7299f5ce7d7b74a34eb56dffb788366fbc058532
ndroid.mk
ontRenderer.cpp
ontRenderer.h
ff7ae2dccd3b8ba015963126d8a655b417d3fcd3 03-Apr-2013 Chris Craik <ccraik@google.com> Merge "Correct save/restore match up" into jb-mr2-dev
e0b39fc18c10224c4e66f70aa472d8497b1b4621 03-Apr-2013 Chris Craik <ccraik@google.com> Merge "Account for hairlines in quick rejection logic" into jb-mr2-dev
1ed30c907ffbb71d1bc448ee57c66b0d16f600ef 03-Apr-2013 Chris Craik <ccraik@google.com> Correct save/restore match up

bug:8480642

With the additional save/restore around the operations in flush, the
stored restore batches weren't matching up to the correct saves.

Change-Id: I2f48f19009bd97289b6973283f43dc8d3e35affd
eferredDisplayList.cpp
e7c69c6fe3eac1fb01126ede550e5dc32979804a 03-Apr-2013 Chris Craik <ccraik@google.com> Account for hairlines in quick rejection logic

bug:8531373
Change-Id: I35444014f23fc61da687694fccc0d13bce718793
isplayListOp.h
athTessellator.cpp
16ecda5317c40fc3da284952d9b3add34d6763ae 29-Mar-2013 Chris Craik <ccraik@google.com> Update view's alpha and layer docs

bug:8501661

Makes the performance issues and interaction with layer type/paint
more clear.

Additionally, corrects change from 47ab7d6612e2b5b8b66fb261dafef7c91264e173
to still allow displayList alpha to override layer paint

Change-Id: Ic94d75865700820489370461cd8ac9f9077a8d90
isplayList.cpp
penGLRenderer.cpp
penGLRenderer.h
02b49b70ede0b9eb760ff334823aee1d9520ed85 29-Mar-2013 Romain Guy <romainguy@google.com> Prevent crash when a single layer is enqueued several times for updates
Bug #8504687

Change-Id: I9b01bbc4e3f37af23dfe5e68d3d03ad3d238b94a
ayer.cpp
ayer.h
penGLRenderer.cpp
5399a5648fb6756a7e7429b07a5a36493ff00395 29-Mar-2013 Romain Guy <romainguy@google.com> Merge "Update layers to clear them Bug #8489505" into jb-mr2-dev
94eaab4a5ddd6db4bcbc8a1e65a4d8e60d1d1274 28-Mar-2013 Elliott Hughes <enh@google.com> am 3ae30483: am a19647d3: Merge "Correct executable bit for source files [Take 2]"

* commit '3ae30483777708ff3a4f59a4fa75c6a76213cc30':
Correct executable bit for source files [Take 2]
dc1975ea717cdafb914fd00ea781fd314e1ac478 28-Mar-2013 Chris Craik <ccraik@google.com> Merge "Fix issues related to saveLayer/restore deferral" into jb-mr2-dev
696dcf84a382fcc5ef7041e0bbf3af20b0ecb99f 28-Mar-2013 Romain Guy <romainguy@google.com> Update layers to clear them
Bug #8489505

A layer should be updated even with an empty deferred display list. It is
possible for a layer to request an update just to execute a clear which
will be handled by LayerRenderer::prepareDirty().

Change-Id: Iffb98bd71d6caa8d4a701df98197676f9423c0c2
ayer.cpp
58f7689ac634afa616d2b754b68d65f9a2e83814 28-Mar-2013 Romain Guy <romainguy@google.com> Merge "Don't crash when making a layer larger than supported dimensions Bug #8437401" into jb-mr2-dev
7273daace9303f4662444111c40bb83d3ead4a92 28-Mar-2013 Chris Craik <ccraik@google.com> Fix issues related to saveLayer/restore deferral

bug:8464795

Changes drawModifiers and alpha to be restored for all operations,
since saveLayer/restore use these values, not just draw operations

Also forces a renderer state restoration before a deferred restore op
is played back, in case it is associated with a saveLayer that
doesn't have the save_clip flag set

Change-Id: I9da5d44fefbfffdee164c98f4f139843dacf85df
eferredDisplayList.cpp
eferredDisplayList.h
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
ce4a7dfc516ee61301e9af91fad17ca1320efaab 28-Mar-2013 Romain Guy <romainguy@google.com> Don't crash when making a layer larger than supported dimensions
Bug #8437401

A misplaced ref count decrement was causing a crash when attempting to
resize a layer to dimensions larger than the max texture size supported
by the GPU.

This change fixes the crash and clarifies the warnings to make it more
obvious what's happening.

Change-Id: I632dc1b90aaa2605969e10523491a81c4922d3dc
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
ayerRenderer.cpp
9cd645121584bc167b3fab61b1ed89ddc4631365 27-Mar-2013 Chris Craik <ccraik@google.com> Merge "Set ignore flag during deferred savelayer" into jb-mr2-dev
408eb12631376cbdc96803e918decf6ea804d346 27-Mar-2013 Chris Craik <ccraik@google.com> Set ignore flag during deferred savelayer

bug:8471552

Additionally, add ignore check for draw functor

In deferred mode, if we don't set ignore, a 0 alpha displayList won't
be quickRejected, and not only would its contents be needlessly
deferred, but upon playback any functors would be drawn, ignoring the
state of the snapshot.

Change-Id: Ib1edb3252080f674254086edee6f965f0efcce78
penGLRenderer.cpp
penGLRenderer.h
3e4a3ea2ff03a6a1f1f7a2bebac9a86fe6555754 27-Mar-2013 Chirayu Desai <cdesai@cyanogenmod.org> Correct executable bit for source files [Take 2]

Change Ieb51bafb46c895a21d2e83696f5a901ba752b2c5 left out some
files, this fixes them.

Change-Id: Ia949a8581668836ea0251602e048f09c852f5169
ither.cpp
ither.h
4500a8d5d7fbec9dba5e693212da160849e401ff 27-Mar-2013 Romain Guy <romainguy@google.com> Path precaching creates duplicate cache entries
Bug #8478275

Change-Id: Ib541ea051e42e01cc0d277790e9c09de38ef72ee
athCache.cpp
athCache.h
96885eb480c5e0526fe2f77d30f6e551f3f3ceab 26-Mar-2013 Romain Guy <romainguy@google.com> Avoid multiple font cache texture uploads
Bug #8378964

This change defers drawing into layers until after the renderer for FBO0
is ready to draw. At that point, all the precaching is done which means
all glyphs can be uploaded at once in the font caches.

Change-Id: Ie1f7a7ff30f76f06fb3dbc72c7d05e66207d1ecb
eferredDisplayList.h
ayer.cpp
ayer.h
ayerRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
a4e16c58c9e3c983251e0475125a2a6f5bec2dbf 22-Mar-2013 Chris Craik <ccraik@google.com> Restore final canvas state after deferred flush

bug:8450062

- Fixes overdraw indication with DeferredDisplayList
- Fixes drawHardwareLayer called after flush

Additionally changes drawLayer to pass its paint to native via setLayerPaint

Wrap flush in save/restore so that reordering doesn't affect final
transform

Change-Id: I08befa42c28500da6387699eefd4be28aedf9f4c
eferredDisplayList.cpp
741f6bb81063cd12c9cd5e0a6822a41561ef93b2 21-Mar-2013 Chris Craik <ccraik@google.com> Merge "Isolate tiling clip state from snapshot" into jb-mr2-dev
5f803623559aab395a29d575c37c4e39c23a4b4e 21-Mar-2013 Chris Craik <ccraik@google.com> Isolate tiling clip state from snapshot

bug:8409891

Snapshots frequently have their clip overwritten due to applying
deferred state - now, store tiling clip information in a separate
rect, outside of the snapshot so it isn't overwritten.

Change-Id: I21ca4c45dcd802eae99e8de86f11525196777ccb
isplayList.cpp
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
napshot.h
c5cbee7d78513527e89450e6369a30a04b2d5e7a 21-Mar-2013 Romain Guy <romainguy@google.com> Stop worker threads on memory trim & fix bad pointer access

Change-Id: I6fe7e31aeb6dd41fa65ab952caed97bc2da510d7
aches.cpp
athCache.cpp
athCache.h
hread/TaskManager.cpp
hread/TaskManager.h
tils/Pair.h
9eac52698b18d089e73c7ec2bf73a64a39504733 21-Mar-2013 Romain Guy <romainguy@google.com> Merge "Optimize text GL setup" into jb-mr2-dev
7564c716bbee6a4825ae747797068d0e7c370c0d 21-Mar-2013 Chris Craik <ccraik@google.com> Merge "Use snapshot alpha in all layer drawing" into jb-mr2-dev
e83569ca76308bfe945efcfef5a12c64b8fb8849 21-Mar-2013 Chris Craik <ccraik@google.com> Use snapshot alpha in all layer drawing

Change-Id: Icc093390da2fc36b2b6693d0e5e4357b2f730bf9
penGLRenderer.cpp
257ae3502cfad43df681b1783528d645bdabc63f 21-Mar-2013 Romain Guy <romainguy@google.com> Optimize text GL setup

Only performs the GL setup steps when at least one glyph is drawn.
This change also skips various draw operations when the specified
paint draws with alpha = 0.

Change-Id: I9eda148b0503acffc552ee19196f5d52e958a1a2
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
d90144db52c7297879b950cbbc85137ed123ab5b 19-Mar-2013 Chris Craik <ccraik@google.com> Update snapshot upon saveLayer deferral

bug:8409891

In order to defer fbo-targetting saveLayer operations, it's necessary
to update the snapshot at defer time so that deferred display state
(namely, clip and transform) are fbo relative.

Re-enables deferring, as the issues with saveLayer are fixed.

Change-Id: I74b0779bc732675c747208f0757c3ea85f6dfbed
eferredDisplayList.cpp
eferredDisplayList.h
isplayList.cpp
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
4494599e5a4931426d5649e1d1c4f9db83824ae8 20-Mar-2013 Chris Craik <ccraik@google.com> Merge "Use snapshot alpha for layers" into jb-mr2-dev
ec3928bf0993e13fb82c65ac26a4d70f5bc6c5e4 20-Mar-2013 Romain Guy <romainguy@google.com> Merge "Reduce number of glDraw calls when drawing text" into jb-mr2-dev
661a87ec28a49458f1faf533783abf2ab9927cab 19-Mar-2013 Romain Guy <romainguy@google.com> Reduce number of glDraw calls when drawing text

This change moves the mesh buffer from FontRenderer to CacheTexture
to help reduce the number of texture binds and glDraw calls when
drawing text that spans across multiple textures.

Change-Id: I7de574d88313ca3672879ca878c253ff5f131fc1
ontRenderer.cpp
ontRenderer.h
ont/CacheTexture.cpp
ont/CacheTexture.h
df9d2ba9b0b92608ea633bf04ffbef8d7ba3dd28 19-Mar-2013 Romain Guy <romainguy@google.com> Merge "Minimize texture binds when drawing text" into jb-mr2-dev
115096f50a560e64a7f95d37686d4861042c7aeb 19-Mar-2013 Romain Guy <romainguy@google.com> Minimize texture binds when drawing text

When several CacheTextures are used to draw text, sort the
draw batches by texture ID to minimize state changes in the
driver.

This change also tweaks the font cache size and renames
a property that was too long to be set using setprop.

Change-Id: I0a36dfffe58c9e75dd7384592d3343c192d042b1
ontRenderer.cpp
ontRenderer.h
roperties.h
ont/FontUtil.h
603ce559f290f369ef1a0d0744f1697b36e9c10e 19-Mar-2013 Romain Guy <romainguy@google.com> Merge "Apply ComposeShader's local matrix to children" into jb-mr2-dev
d4289922ce772ed8e170a27d1c9521672b315698 19-Mar-2013 Romain Guy <romainguy@google.com> Apply ComposeShader's local matrix to children

Change-Id: Idf9b8e7d7b30f8fcd8ba1fd4bfe8991e9ca148e2
kiaShader.cpp
16b7dc9c1ca4336b29afbd2f56f580014863add0 19-Mar-2013 Romain Guy <romainguy@google.com> Merge "Merge all shapes/paths caches to PathCache" into jb-mr2-dev
c46d07a29e94807e768f8b162ce9f77a88ba6f46 16-Mar-2013 Romain Guy <romainguy@google.com> Merge all shapes/paths caches to PathCache

This change will greatly simplify the multi-threading of all
shape types.

This change also uses PathTessellator to render convex paths.

Change-Id: I4e65bc95c9d24ecae2183b72204de5c2dfb6ada4
ndroid.mk
aches.cpp
aches.h
ebug.h
eferredDisplayList.cpp
isplayList.cpp
isplayListRenderer.cpp
penGLRenderer.cpp
athCache.cpp
athCache.h
roperties.h
hapeCache.cpp
hapeCache.h
cada41aeb1e4cd87a94df2dfb4dd645309fe66ba 19-Mar-2013 Chris Craik <ccraik@google.com> Work around saveLayer clipping/transform deferring issues

bug:8409891

Disables deferring

Change-Id: I93498a4a45a5bfe01143faa154926c6a138db8f9
penGLRenderer.cpp
d0afeac6dfc0856eeb72e6176ad6335e81871d24 16-Mar-2013 Chris Craik <ccraik@google.com> Reset draw modifiers after flushing

bug:8401910

This avoids leaving the renderer in a state with stale pointers (to,
e.g., shaders or color filters)

Change-Id: Idf8b63657041352e70e34e91ea416fe4385d4bc2
eferredDisplayList.cpp
penGLRenderer.cpp
penGLRenderer.h
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
eferredDisplayList.cpp
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
f40b8a939fef0a19b40188f007a3364311d6dabf 15-Mar-2013 Chris Craik <ccraik@google.com> Merge "Fully deferred displaylist replay" into jb-mr2-dev
ff78583d8a73ca35ce65b5d2592570ff6fb9901b 08-Mar-2013 Chris Craik <ccraik@google.com> Fully deferred displaylist replay

bug:8037003

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
aches.cpp
eferredDisplayList.cpp
eferredDisplayList.h
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
bd3055f95e67a55648fd84a125e939293115171b 14-Mar-2013 Romain Guy <romainguy@google.com> Less aggressive glyphs precaching

The renderer used to pre-cache glyphs at record time. This then changed
to pre-caching at the beginning of every frame. This unfortunately entails
a lot of duplicate work on every frame, which amounts to 0.5 to 1ms in
some stock applications.

This change is somewhere in the middle: pre-caching happens the first
time a DrawTextOp is deferred or every time the screen-space transform
is different from the last pre-caching operation.

Change-Id: Id6d9e2599d90a5b75010b0f0a28746befbf3c205
isplayListOp.h
atrix.h
ont/Font.cpp
0f809f3b794174f044366bf421f8d0c72d9afc14 13-Mar-2013 Romain Guy <romainguy@google.com> Prevent infinite loop when trimming the path cache

Change-Id: I04b5fa498336068f997c68d8613b35a99f67adbe
athCache.cpp
hapeCache.h
5dc7fa709646799a5207a5d217f70aa02bf4a3aa 12-Mar-2013 Romain Guy <romainguy@google.com> Add TaskManager API

This API can be used to run arbitrary tasks on a pool of worker
threads. The number of threads is calculated based on the number
of CPU cores available.

The API is made of 3 classes:

TaskManager
Creates and manages the worker threads.

Task
Describes the work to be done and the type of the output.
A task contains a future used to wait for the worker thread
to be done computing the result of the task.

TaskProcessor
The processor dispatches tasks to the TaskManager and is
responsible for performing the computation required by
each task. A processor will only be asked to process tasks
sent to the manager through the processor.

A typical use case:

class MyTask: Task<MyType>

class MyProcessor: TaskProcessor<MyType>

TaskManager m = new TaskManager();
MyProcessor p = new MyProcessor(m);
MyTask t = new MyTask();
p.add(t);

// Waits until the result is available
MyType result = t->getResult();

Change-Id: I1fe845ba4c49bb0e1b0627ab147f9a861c8e0749
ndroid.mk
aches.h
athCache.cpp
athCache.h
hapeCache.h
hread/Future.h
hread/Task.h
hread/TaskManager.cpp
hread/TaskManager.h
hread/TaskProcessor.h
ca89e2a68703bd428e8b66547d033a6ed35b3595 09-Mar-2013 Romain Guy <romainguy@google.com> Precache paths from a worker thread

Change-Id: I3e7b53d67e0e03e403beaf55c39350ead7f1e309
isplayListOp.h
radientCache.cpp
penGLRenderer.cpp
athCache.cpp
athCache.h
hapeCache.h
extureCache.cpp
hread/Barrier.h
hread/Future.h
hread/Signal.h
6e2004089305cf2cd958b52b234459a49a4e5c83 08-Mar-2013 Romain Guy <romainguy@google.com> Move blur code from FontRenderer to utils/Blur.cpp

Change-Id: I2cebbfbcb722ed4b37e54ffbf8b53bb92ad0c964
ndroid.mk
ontRenderer.cpp
tils/Blur.cpp
tils/Blur.h
b09f1471262c3e629daacbc319bcefc2d621a484 08-Mar-2013 Romain Guy <romainguy@google.com> Don't apply scale to glyphs when a perspective is set.
Bug #8337925

Magazines uses very large scale factors that blow up font cache & CPU.

Change-Id: I1c0ed430ed91b86cc6c6f59f7e8bdcc89a464e46
penGLRenderer.cpp
8afce816df7e8f668761f7ed443f54238958c49f 07-Mar-2013 Romain Guy <romainguy@google.com> Round scale factors to rasterize text

Harder, better, faster, stronger.

Change-Id: Iee4125de98c4e61603f56bb7f06002cc86458214
isplayList.cpp
ont/Font.cpp
624234f69b2a4781d24f3e4c6ae6450729e38397 06-Mar-2013 Romain Guy <romainguy@google.com> Take only the scale params into account to rasterize text

This change extracts the scale parameters of the current transform
to pass then to the font renderer. Rotation and perspective are
applied to the generated mesh inside the vertex shader. This limits
the number of glyphs we have to create in the font cache and thus
reduces memory churn.

Change-Id: Ic5b3bae2b2b0e0250a8ee723b071a1709725c749
isplayListOp.h
ayerRenderer.cpp
ayerRenderer.h
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
ont/Font.cpp
ont/Font.h
0b58a3deab66c30a8d35072e55aac6279dd367cc 05-Mar-2013 Romain Guy <romainguy@google.com> Make glyph copies a little more cache friendly

Change-Id: Ie21b7079cc5d3ea67a03597c57842636e4afe143
ontRenderer.cpp
3b753829ae858d424fe109f714745379a6daf455 05-Mar-2013 Romain Guy <romainguy@google.com> Fix colored rects clipping and code cleanup

The drawColorRects() method was clipping individual rectangles
using the wrong parameters left, top, right and bottom instead
of l, r, t and b. It also checked for count == 0 after the loop
when it should have checked for vertexCount == 0. The quickReject
is now not part of the loop since it's a bit overkill to perform
so many matrix multiplications. What we really care about is the
final quickReject performed on the max bounds of the entire set
of rectangles.

This change also replaces all instances of mSnapshot->transform
by currentTransform() to make the code slightly more readable.

Change-Id: I6485280414499716852f7dbfba186774eb6763d4
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
19d4dd8599cb870923ab349d2ab96cacffd9c6f5 04-Mar-2013 Romain Guy <romainguy@google.com> Take text scale/skew into account only when rendering into a layer

3D rotations can undo scale/skew transforms; since FreeType only accepts
2x2 matrices we can end up generating very large glyphs that are drawn
at a 1:1 scale on screen. For instance, if the current transform has a
scale of 2000 set on both X and Y axis and a perspective Z factor set to
Z, the actual scale factor on screen ends up being 1. We would however
generate glyphs with a scale factor of 2000 causing the font renderer
to blow up.

Change-Id: Ia5c3618d36644e817825cb9c89e2f53aece2074e
penGLRenderer.cpp
151b71cb5259eabf9bdcdc9248ba5100ad4c5bcf 02-Mar-2013 Romain Guy <romainguy@google.com> Merge "Fix math issue when transforming text in perspective" into jb-mr2-dev
874f5c6e4ac655b4f118074c90d51e6a44abe50c 02-Mar-2013 Romain Guy <romainguy@google.com> Fix math issue when transforming text in perspective

Change-Id: Iad6b4e477c11bd1ef5f0ceab2fabcd440030154d
ont/Font.cpp
ont/Font.h
28459117a797bbf09ac589af4c8083a98fdbfb90 02-Mar-2013 Romain Guy <romainguy@google.com> Merge "Precache glyphs at final raster size" into jb-mr2-dev
0f6675332c04c74909425d1d328f02b32c0ff40e 01-Mar-2013 Romain Guy <romainguy@google.com> Precache glyphs at final raster size

The deferred display lists model now allows us to precache glyphs
at their exact size on screen.

This change also removes debug markers when the renderer defers
and reorders display lists. It also adds a flush event marker.

Change-Id: I66ec5216dc12b93ecfdad52a7146b1cfb31fbeb4
aches.cpp
aches.h
eferredDisplayList.cpp
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
ont/Font.cpp
1da8a6a36df0389dd4c213a8f9698874c484c839 01-Mar-2013 Chris Craik <ccraik@google.com> Merge "Add shader program selection shortcut" into jb-mr2-dev
096b8d96d539429de5e67b2821ef3f9ee0300842 01-Mar-2013 Chris Craik <ccraik@google.com> Add shader program selection shortcut

Add a key manipulation that makes black text/paths use the standard
simple bitmap/patch shader, since they are the same. Previously we'd
create a separate shader for each because the keys differed, even
though the shaders were functionally equivalent.

Also fixes some issues around setting DEBUG_PROGRAM

Change-Id: I0c77c684d58da03501ee9ab8239c7d4a70fd6b5c
rogram.h
rogramCache.cpp
rogramCache.h
1361dff5eb54b9b02b4d1a2d3e2ed3afd216d79d 01-Mar-2013 Romain Guy <romainguy@google.com> Merge "Support 3D rotations when drawing text" into jb-mr2-dev
a4adcf0239039eb8f005be252409901c41b28839 28-Feb-2013 Romain Guy <romainguy@google.com> Support 3D rotations when drawing text

If a perspective transform is set on the Canvas, drawText() should
not attempt to rasterize glyphs in screen space. This change uses
the old behavior instead (i.e. rasterize the glyphs at the native
font size and apply the transform on the resulting mesh.)

This change also adds an optimization: empty glyphs (spaces) do
not generate vertices anymore. This saves a lot of vertices in text
heavy applications such as Gmail.

Change-Id: Ib531384163f5165b5785501612a7b1474f3ff599
isplayListRenderer.cpp
ontRenderer.cpp
penGLRenderer.cpp
ont/Font.cpp
ont/Font.h
d6960a49b40703e8af55c1fb628a2e0c5d2b40cf 28-Feb-2013 Chris Craik <ccraik@google.com> Account for text alignment in Op bounds calculation

bug:8243821

Previously this wasn't done for deferred clipping + reordering, so
non-left-aligned text would be clipped at defer time, when it wouldn't
have been at draw time (in OpenGLRenderer::quickReject())

Change-Id: Ic96949c2dca4378f284606b37d9411ed42f8d203
isplayListOp.h
19886f8b5109218191908d2ce5faf0293f85cf31 28-Feb-2013 Romain Guy <romainguy@google.com> Merge "Properly scale text" into jb-mr2-dev
c74f45a334f0e3725c23cdd270cbcb0efac4ea75 27-Feb-2013 Romain Guy <romainguy@google.com> Properly scale text

This change does not apply to drawPosText() and drawTextOnPath() yet.

Prior to this change, glyphs were always rasterized based on the
font size specified in the paint. All transforms were then applied
on the resulting texture. This creates rather ugly results when
text is scaled and/or rotated.

With this change, the font renderer will apply the current transform
matrix to the glyph before they are rasterized. This generates much
better looking results.

Change-Id: I0141b6ff18db35e1213e7a3ab9db1ecaf03d7a9c
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
ont/Font.cpp
ont/Font.h
d041e476f3c959f5b373b64a329aa427d057375e 28-Feb-2013 Chris Craik <ccraik@google.com> Merge "Correct sub-hairline tessellation threshold" into jb-mr2-dev
d80806b305ce337283c24f14522cc58fea090b8c 28-Feb-2013 Chris Craik <ccraik@google.com> Merge "Fix T-junctions in layers' generated meshes" into jb-mr2-dev
19a390bff348cd379caba1265faec77fcff29200 28-Feb-2013 Chris Craik <ccraik@google.com> Correct sub-hairline tessellation threshold

Change-Id: Id868d41a36db5b4daa762d84b6329f9c31916bce
athTessellator.cpp
a6456d0d7ea2a65474b8a3db5dbf001880c40a71 27-Feb-2013 Romain Guy <romainguy@google.com> Merge "Draw text drop shadows even when the text color is transparent" into jb-mr2-dev
6c5b9be7450903762f676522c32d65f7545730df 27-Feb-2013 Chris Craik <ccraik@google.com> Fix T-junctions in layers' generated meshes

bug:4128442

Currently we fix T-junctions for hardware layers, and for
Canvas.saveLayer if the transform isn't rectAsRect. Ideally, hardware
layers should lazily re-generate T-junction free geometry if the
transform becomes non-rectAsRect

Depends on frameworks/native change:
https://googleplex-android-review.googlesource.com/#/c/277668/
which adds Region::createTJunctionFreeRegion()

Change-Id: Ice75b4a1a4459ff835059ea81d70f7d1563fd96d
ayerRenderer.cpp
penGLRenderer.cpp
768bffc9b814f6a1f7d9ff59d91285895c23bbe9 27-Feb-2013 Romain Guy <romainguy@google.com> Draw text drop shadows even when the text color is transparent

This matches Skia's behavior.

Change-Id: Ibf0a52611f5801cfa68169f66ab0ec06f256600f
penGLRenderer.cpp
penGLRenderer.h
758724fd09a1599f2c55130f81953cfa6c17c300 27-Feb-2013 Romain Guy <romainguy@google.com> Don't increment the paint's generation ID when drawing bitmaps

When the renderer draws a bitmap as part of a display list with an
alpha < 1.0f, the paint is temporarily modified to alter the opacity
of the bitmap. This has the side effect of increasing the paint's
generation ID counter which can break paint caching.

Change-Id: I5055d059ad1639829fa50af3d946e296c4dab877
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
08bca88b272f0006e1581e9c28bc6312490f634e 26-Feb-2013 Romain Guy <romainguy@google.com> Rename debug property and expose it in HardwareRenderer

Change-Id: If46a9bc14a50f6c9a202d901881b36bbac32cba3
roperties.h
3ff0bfdd144bba3b023eda8c49b25fb0d0de8653 25-Feb-2013 Romain Guy <romainguy@google.com> Add new property to debug non-rectangular clip operations

This change adds a new property called "debug.hwui.show_stencil_clip"
that accepts the following values:

- "highlight", colorizes in green any drawing command that's tested
against a non-rectangular clip region
- "region", shows the non-rectangular clip region in blue every time
it is used
- "hide", default value, nothing is shown

Change-Id: I83c8602310edc4aaeb8b905371cdd185b17d32b5
aches.cpp
aches.h
ebug.h
penGLRenderer.cpp
rogram.h
rogramCache.cpp
roperties.h
tencil.h
fb6806570911851fb8cbaaf5bdf275a89f3c3ef4 23-Feb-2013 Chris Craik <ccraik@google.com> Merge "Add deferredList null check"
ba868c3e2297bd75cd3f8bb1f9eaa286855a1919 23-Feb-2013 Chris Craik <ccraik@google.com> Add deferredList null check

Needed for non-deferred mode (debug.hwui.disable_draw_defer = true)

Change-Id: I278cbe200aa6ce06fa92dc45c63ceda6e85a0cbe
isplayList.cpp
dd8697c095272f19ddad214834a490b00f11a477 22-Feb-2013 Chris Craik <ccraik@google.com> Avoid double blur

bug:8204062

Avoids incorrectly blurring with RenderScript after a C++ blur

Additionally, avoids draw/blurring if the input text has empty bounds

Change-Id: Ibbaf74800fff7a6e4cda3aa24286b90e7aef589d
ontRenderer.cpp
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
isplayList.cpp
isplayList.h
isplayListOp.h
penGLRenderer.cpp
94b97b38b749d50c8693a044dd2688328cca863e 22-Feb-2013 Chris Craik <ccraik@google.com> am eab51de4: Merge "Fix clipping and stencil layer issues"

* commit 'eab51de4de88219256260fe26e2018a6234ef83b':
Fix clipping and stencil layer issues
b98a016c6769b9e80d392df22fe77a2fca048d9f 21-Feb-2013 Chris Craik <ccraik@google.com> Fix clipping and stencil layer issues

bug:8235699

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

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

Change-Id: I6730f1a80250bcf3f91cd4afde646d470a12dbc2
isplayList.cpp
isplayList.h
isplayListOp.h
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
08d160a366932aec170a115a1edb3bb5ac4e3a4e 20-Feb-2013 Ben Cheng <bccheng@google.com> am 7a60c43d: Merge "Use free for memory chunks allocated through memalign."

* commit '7a60c43d874bd047ea4b93b94c9b8771ea5739cc':
Use free for memory chunks allocated through memalign.
7a60c43d874bd047ea4b93b94c9b8771ea5739cc 20-Feb-2013 Ben Cheng <bccheng@google.com> Merge "Use free for memory chunks allocated through memalign."
15641a6181cdaac2aadf07585de66483b4b7ae6b 20-Feb-2013 Ben Cheng <bccheng@google.com> Use free for memory chunks allocated through memalign.

BUG: 8234423
Change-Id: Ic4100a780908c94540722cc4af5f73f4940431b4
ontRenderer.cpp
extDropShadowCache.cpp
c4ca87f0f4034d4b987084d2b62ed7e5e0430557 20-Feb-2013 Chris Craik <ccraik@google.com> am 8a47d8ea: Merge "Clean up clipping and deferral logic"

* commit '8a47d8eaec26d0937aee94a057f561f246748339':
Clean up clipping and deferral logic
8a47d8eaec26d0937aee94a057f561f246748339 20-Feb-2013 Chris Craik <ccraik@google.com> Merge "Clean up clipping and deferral logic"
5d11676414b3606792e23c269cf75b44faa1a2af 20-Feb-2013 Chris Craik <ccraik@google.com> Clean up clipping and deferral logic

bug:8037003

-Merges replay methods
-Bounds checking for DrawBitmapMesh, DrawRects and DrawDisplayList
-Use clip as bounds for otherwise unbounded draw operations

Clip-as-bounds is correct for drawColor and functor, but other draw
operations (pos text, text on path, and layers) still need true bounds
calculation

Change-Id: I5d5149d2c624f01e3fe46628bf156e835e69b9d5
isplayList.cpp
isplayListOp.h
penGLRenderer.cpp
846f5f238fd96a14197022baad86eab8882fe3bc 19-Feb-2013 Romain Guy <romainguy@google.com> am e91efaba: Merge "Expose display list APIs"

* commit 'e91efabaf2c51d017bf4c5bc4e06491c3511f4e5':
Expose display list APIs
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
isplayList.cpp
isplayList.h
penGLRenderer.cpp
620cff4006ee0b507f00ef8a242ecff4e60ba4e9 19-Feb-2013 Chris Craik <ccraik@google.com> am ad82f20d: Merge "DisplayList draw operation reordering"

* commit 'ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23':
DisplayList draw operation reordering
ad82f20d2382396f5ac75fdf6f7db5c4da1c4c23 19-Feb-2013 Chris Craik <ccraik@google.com> Merge "DisplayList draw operation reordering"
eea34dab432586788008d2afd00f5a3c19aaed7f 16-Feb-2013 Chris Craik <ccraik@google.com> am ac838a3a: Merge "Correct PatchCache comparison logic"

* commit 'ac838a3ab9d85112576cf2c943930441f62c51d2':
Correct PatchCache comparison logic
ac838a3ab9d85112576cf2c943930441f62c51d2 16-Feb-2013 Chris Craik <ccraik@google.com> Merge "Correct PatchCache comparison logic"
9935abceea10df337969f08cce05b7c02bb1eb19 16-Feb-2013 Chris Craik <ccraik@google.com> Correct PatchCache comparison logic

Change-Id: I3d0832505b5380bfa362863b39e09dd10f792582
atchCache.cpp
225e8943de3994834f18b0b255e8addf812cb86a 16-Feb-2013 Chris Craik <ccraik@google.com> am 857089eb: Merge "Adjust offset for non-AA line drawing"

* commit '857089eb1efcc7d86f373edf8cb30911a95f6bac':
Adjust offset for non-AA line drawing
857089eb1efcc7d86f373edf8cb30911a95f6bac 16-Feb-2013 Chris Craik <ccraik@google.com> Merge "Adjust offset for non-AA line drawing"
62a42c13a6e86255a0118688a60c9248030c95a9 15-Feb-2013 Chris Craik <ccraik@google.com> Adjust offset for non-AA line drawing

bug:8114304

The original .375 was chosen to make GL_LINES align with Skia drawing.
The new value of .065 is chosen to be as small as possible to make
triangle-based lines align with Skia, while keeping lines drawn on
integer coordinates unambiguous as to which column/row they draw on.

Also adds more lines in CanvasCompare test to highlight the difference

Change-Id: If578684f2db320682219c3caa625cf79bc62d88f
rogram.cpp
df93fdb6c0d00bcbf548c4f1fa16be8bc3b15334 15-Feb-2013 Romain Guy <romainguy@google.com> am aa8307b9: Merge "Remove obsolete header file"

* commit 'aa8307b991b9fca5403b5d7f43659b92527af4fd':
Remove obsolete header file
c3566d06421c8acc0aafb18f7e307e5725ce87e1 05-Feb-2013 Chris Craik <ccraik@google.com> DisplayList draw operation reordering

bug:8037003

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:
"debug.hwui.disable_draw_defer"
"debug.hwui.disable_draw_reorder"
which can be set to "true" to control the display list manipulation

Change-Id: I5e89f3cb0ea2d2afd3e15c64d7f32b8406777a32
ndroid.mk
ebug.h
eferredDisplayList.cpp
eferredDisplayList.h
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
roperties.h
ect.h
13ba0054846ce630ca31e8f26169fd9388faee02 15-Feb-2013 Romain Guy <romainguy@google.com> Remove obsolete header file

We now use the same mechanism to compare keys everywhere in libhwui.

Change-Id: I8b3cb25b13f4f38eb6f12aed0356f796a773617c
atrix.cpp
atch.h
atchCache.cpp
atchCache.h
tils/Compare.h
41250b67fe6308570860f2435c6b305ed8270002 15-Feb-2013 Kristian Monsen <kristianm@google.com> resolved conflicts for merge of 101ae3bb to master-chromium

Only include file changes in conflict.

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

Change-Id: Ic9c1bbf4673ad5c756f3908b2ab7e699edd6a119
ndroid.mk
isplayList.cpp
isplayList.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
feb6954da185901dfb558a8ec85f4908ca86a4eb 14-Feb-2013 Romain Guy <romainguy@google.com> am 10c0aa24: Merge "Implement support for drawBitmapMesh\'s colors array"

# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit '10c0aa246d9b2633c6cb4e5b714abb0031a4f4cd':
Implement support for drawBitmapMesh's colors array
10c0aa246d9b2633c6cb4e5b714abb0031a4f4cd 14-Feb-2013 Romain Guy <romainguy@google.com> Merge "Implement support for drawBitmapMesh's colors array"
ff316ec7a76e52572a2e89b691e6b3bba0cafba3 14-Feb-2013 Romain Guy <romainguy@google.com> Implement support for drawBitmapMesh's colors array

Change-Id: I3d901f6267c2918771ac30ff55c8d80c3ab5b725
aches.cpp
aches.h
penGLRenderer.cpp
penGLRenderer.h
rogram.h
rogramCache.cpp
ertex.h
0229d0818c8f08753a0df583798bbac19f67a4c4 14-Feb-2013 Chris Craik <ccraik@google.com> am 805a6fe7: Merge "Revert "Revert "Use RenderScript for large text blurs"""

# Via Android (Google) Code Review (1) and Chris Craik (1)
* commit '805a6fe7b1417640ccaf7914171cb65515b6ab39':
Revert "Revert "Use RenderScript for large text blurs""
f2d8ccc15d7272b3416f73605c1f31d1d346bd40 14-Feb-2013 Chris Craik <ccraik@google.com> Revert "Revert "Use RenderScript for large text blurs""

This reverts commit bf5703e52e3304246cbf0e73f6976f7d7312d238.

Change-Id: Ic6f991277dec9e80a6fed93db91499726b30ab2a
ndroid.mk
ontRenderer.cpp
ontRenderer.h
extDropShadowCache.cpp
tils/Timing.h
c932760f667cf56ca7a1aeffde505745dc3632e1 14-Feb-2013 Chris Craik <ccraik@google.com> Merge "Revert "Merge remote-tracking branch 'goog/master-chromium' into 'goog/master'" DO NOT MERGE"
68b600913b699da0fbfcd9d913e4c4fdb08e06b8 13-Feb-2013 Chris Craik <ccraik@google.com> Merge "Revert "Use RenderScript for large text blurs""
bf5703e52e3304246cbf0e73f6976f7d7312d238 13-Feb-2013 Chris Craik <ccraik@google.com> Revert "Use RenderScript for large text blurs"

This reverts commit 3f76e65d251ead65fe8ff98e3bd4c7623fbaac07

Change-Id: Ia81cd485e5ca696bb284c419dc8a1d2f3247100e
ndroid.mk
ontRenderer.cpp
ontRenderer.h
extDropShadowCache.cpp
tils/Timing.h
0450086a845709091e176f142d60dbe553c1bce3 13-Feb-2013 Romain Guy <romainguy@google.com> Merge "Fix format name typo"
2b44eb75c42e4caa94f0b002f0ea9e134fe7b543 13-Feb-2013 Romain Guy <romainguy@google.com> Fix format name typo

Change-Id: If7d86b74ad9735f12349d9fcb62b335f5a742bb5
enderBuffer.h
bce29d2a549c374e642ad7a41a1daf869b46f53c 13-Feb-2013 Chris Craik <ccraik@google.com> Merge "Use RenderScript for large text blurs"
8d4aeb7111afac0c3c7e56d4ad5d92f9cfce2ffd 13-Feb-2013 Romain Guy <romainguy@google.com> Add a render buffer cache to reuse stencil buffers
Bug #7146141

This new cache is used in a similar way to LayerCache. It helps
reuse already allocated stencil buffers and thus avoid churning
memory on every frame.

Change-Id: I19551d72da52c40039e65904563600e492c8b193
ndroid.mk
aches.cpp
aches.h
ebug.h
ayer.cpp
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
roperties.h
enderBuffer.h
enderBufferCache.cpp
enderBufferCache.h
7c1a49f5f5ed6613d736464bf5001b777e89ced2 13-Feb-2013 Chris Craik <ccraik@google.com> Revert "Merge remote-tracking branch 'goog/master-chromium' into 'goog/master'" DO NOT MERGE

This reverts commit 6c0307dd0aefe9a08794b155fc03ee60ebd14f25, reversing
changes made to a2cd828b749c444d55c2c41c7dbb85088ff94b9f.

Conflicts:
packages/SystemUI/res/values-sv/strings.xml

Change-Id: Ia178efe8b14751583d47b2826bfe3d3d5463dd2e
ndroid.mk
isplayListRenderer.h
ontRenderer.cpp
ayer.h
penGLRenderer.cpp
ont/CacheTexture.cpp
ont/Font.cpp
3f76e65d251ead65fe8ff98e3bd4c7623fbaac07 15-Nov-2012 Chris Craik <ccraik@google.com> Use RenderScript for large text blurs

Still fall back to simple path for small tasks

Change-Id: I492f1b3f7d6fec1738f3e45cbfb15864bd23a392
ndroid.mk
ontRenderer.cpp
ontRenderer.h
extDropShadowCache.cpp
tils/Timing.h
e67307c816f3fdae2bfba8e9a4410dc015645e91 12-Feb-2013 Romain Guy <romainguy@google.com> Prevent crash when setting up a stencil-based clip
Bug #8177690

Clear the layers before we setup the stencil to avoid dereferencing
the recently deleted rects.

Change-Id: I5dce5f965672f276f9490636d85b6018d3ab9422
penGLRenderer.cpp
ont/Font.cpp
d71ff91dcd79f6beea4bbe768ab3bcbb1a6d7c39 08-Feb-2013 Romain Guy <romainguy@google.com> Apply the clip rect/region to drawLines()

Without the check to quickReject, drawConvexPath would never
setup the clip properly.

Change-Id: I23e5b25de3383c9e9b86eea4ee7a9552f8d9efb4
penGLRenderer.cpp
b4c1dc1c1580d0970631cc291b4b4c6e9dc96af3 08-Feb-2013 Romain Guy <romainguy@google.com> Merge "Don't clip when drawing a layer"
63696bfc0592a0b8808aa2b1c40bcf33c656c659 08-Feb-2013 Romain Guy <romainguy@google.com> Don't clip when drawing a layer

A layer will, by definition, clip its content already. The extra
clip added by the UI toolkit/renderer is wasteful and in some
situations very expensive. If a layered view is rotated, the clip
will be transformed into a non-rectangular region, thus forcing
the renderer to rely on the stencil buffer. The whole point of
using layers is to draw efficiently so let's avoid this case.

Change-Id: I813465f6468cc386b84a4d058c11a258fef8507a
isplayListRenderer.cpp
da8d8b9699fe8e9557389465007e333d3f03dcc1 07-Feb-2013 Romain Guy <romainguy@google.com> Merge "Add a RenderBuffer object to store stencil buffers. Bug #7146141"
3bbacf27c0be1bae4e4483577fc89ae3113abe5d 07-Feb-2013 Romain Guy <romainguy@google.com> Add a RenderBuffer object to store stencil buffers.
Bug #7146141

This change is needed to add a render buffer cache to avoid
creating and destroying stencil buffers on every frame.

This change also allows the renderer to use a 1 bit or 4 bit
stencil buffer whenever possible.

Finally this change fixes a bug introduced by a previous CL
which causes the stencil buffer to not be updated in certain
conditions. The fix relies on a new optional parameter in
drawColorRects() that can be used to avoid performing a
quickReject on rectangles generated by the clip region.

Change-Id: I2f55a8e807009887b276a83cde9f53fd5c01199f
ndroid.mk
aches.cpp
aches.h
ebug.h
xtensions.cpp
xtensions.h
radientCache.cpp
ayer.cpp
ayer.h
ayerRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
enderBuffer.h
napshot.cpp
tencil.cpp
tencil.h
extureCache.cpp
1ba0289d18f16e190a3bc7cf9226d061016dc355 07-Feb-2013 Chris Craik <ccraik@google.com> Merge "Add cap tessellation support"
65cd612face362d054a85d0f7e5881c59cd523be 11-Dec-2012 Chris Craik <ccraik@google.com> Add cap tessellation support

bug:7117155
bug:8114304

Currently used for lines (with and without AA) and arcs with useCenter=false

Also removes 0.375, 0.375 offset for AA lines

Change-Id: Ic8ace418739344db1e2814edf65253fe7448b0b0
ndroid.mk
aches.h
penGLRenderer.cpp
penGLRenderer.h
athRenderer.cpp
athRenderer.h
athTessellator.cpp
athTessellator.h
rogram.h
rogramCache.cpp
ertex.h
511afdd3ac55ba27c5882cbe189d89a2942420b1 07-Feb-2013 Romain Guy <romainguy@google.com> Merge "Fix uninitialized variables in Caches.cpp Bug #8151401"
c2a972131f1870042eb63847d4b24fbe718d8e3f 07-Feb-2013 Romain Guy <romainguy@google.com> Fix uninitialized variables in Caches.cpp
Bug #8151401

Change-Id: I221f93de0f1981974f82a094297836dd3fe418bc
aches.cpp
83315e0cb425db5dde514c90df56a7188c7983d5 07-Feb-2013 Romain Guy <romainguy@google.com> Merge "Fix Snapshot::resetClip to also reset the clip region"
3c099c42fd7ead1429076055990ae39b72c904f4 07-Feb-2013 Romain Guy <romainguy@google.com> Fix Snapshot::resetClip to also reset the clip region

Change-Id: I979151e73f64ff9d45f8a5232d8700361b09fbc7
napshot.cpp
23e500d168e8d649305445f6c1d2b49d8d2c00fd 06-Feb-2013 Derek Sollenberger <djsollen@google.com> Merge "Merge remote-tracking branch 'goog/master-chromium' into 'goog/master'"
b969a0de65730b071d846f8302e751e2637e6dbe 05-Feb-2013 Romain Guy <romainguy@google.com> Add support for non-antialiased text

Change-Id: I17c073955ab94abc9b409e5fcfbc675faa07c5ba
isplayListRenderer.cpp
ontRenderer.cpp
ont/Font.cpp
ont/Font.h
f5db9b8ed42cace00d4e84b4a7e2e63a7c654b35 05-Feb-2013 Derek Sollenberger <djsollen@google.com> Merge "Changes needed to roll Skia to r7527." into master-chromium
43c6eda4d3535e7601e586a75206b20e42209ae2 04-Feb-2013 Romain Guy <romainguy@google.com> am b3778531: Merge "Set the scissor from OpenGLRenderer::drawColorRects Bug #8131254"

# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit 'b377853123ff53974bb06ffc30e09db41a767c3a':
Set the scissor from OpenGLRenderer::drawColorRects Bug #8131254
b377853123ff53974bb06ffc30e09db41a767c3a 04-Feb-2013 Romain Guy <romainguy@google.com> Merge "Set the scissor from OpenGLRenderer::drawColorRects Bug #8131254"
a362c69d6cdf448107e5a539f77df73937141870 04-Feb-2013 Romain Guy <romainguy@google.com> Set the scissor from OpenGLRenderer::drawColorRects
Bug #8131254

This method is used as an optimization for paths containing only
non-overlapping rectangles. The implementation was correctly
rejecting rectangles invidually but not the bounds of the array
of rectangles. If quickReject() is not called, setupDraw() won't
be able to properly set the scissor.

Change-Id: I50aa11a4bd8b525b267d36a3039fe7a6fba50518
penGLRenderer.cpp
d4cf7df151c68e621fbc3e1552e5f33020bc7b6d 04-Feb-2013 Chris Craik <ccraik@google.com> am e51ccb15: Merge "Simplify display list logging, removing pointers"

# Via Android (Google) Code Review (1) and Chris Craik (1)
* commit 'e51ccb1543ef5b6427e5f270ae38be75e18daccd':
Simplify display list logging, removing pointers
e51ccb1543ef5b6427e5f270ae38be75e18daccd 04-Feb-2013 Chris Craik <ccraik@google.com> Merge "Simplify display list logging, removing pointers"
3dc553babe515fbf9bd042dd63a792e5de578ecd 04-Feb-2013 Chris Craik <ccraik@google.com> Simplify display list logging, removing pointers

Also fix save indents

Change-Id: Ia1add83422fbc200b85fd6688f5be60292b0f178
isplayListOp.h
isplayListRenderer.cpp
d81ec456bb097a712bcbc093c5a1e0075434158e 04-Feb-2013 Derek Sollenberger <djsollen@google.com> Changes needed to roll Skia to r7527.

Change-Id: I84aef3f8a733c869fade06021816646001532758
penGLRenderer.cpp
da805b149fde3f7f8ef404c39ef74b2fbbf7af7f 01-Feb-2013 Romain Guy <romainguy@google.com> am c5801680: Merge "Tag HardwareRenderers with a name to help debugging"

# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit 'c580168011334db756f5e68aa005d20bace69171':
Tag HardwareRenderers with a name to help debugging
b86e75ea85e62e3ecfe989ebe2b6bdaa962cbcdf 01-Feb-2013 Romain Guy <romainguy@google.com> am b7475e7b: Merge "Fix tiling on QCOM GPU"

# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit 'b7475e7b0b0ababe8c5f3fbfde565c97960c633c':
Fix tiling on QCOM GPU
5019546c8cbdd8c647008dc9b3ce2481e2e52758 01-Feb-2013 Romain Guy <romainguy@google.com> am 65f4effc: Merge "Discard the correct buffer when the bound FBO is not 0"

# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit '65f4effcab1f4bb6e2e96a2b8eb2c774601b87db':
Discard the correct buffer when the bound FBO is not 0
ef35927abcd089652f87a985dd6dde7afde58b92 01-Feb-2013 Romain Guy <romainguy@google.com> Tag HardwareRenderers with a name to help debugging

The name of the renderer is the same as the window it belongs to.

Change-Id: Ie9adc0a1978afa026923ea41f5540eda6ba65a92
aches.h
penGLRenderer.cpp
penGLRenderer.h
f735c8e5cb59d6e1d1aa152fed7a6480a08d1c2a 01-Feb-2013 Romain Guy <romainguy@google.com> Fix tiling on QCOM GPU

Rename Caches::startTiling parameter from opaque to discard to
make it clearer what its role is. Tweak calls to startTiling
to preserve the buffer when needed and discard it when possible.

Change-Id: If7f8ff19003f79f36885a0a7207cc61901f637d2
aches.cpp
aches.h
penGLRenderer.cpp
f158198ccc3a1f53bfebaa6b8f4426e80e1867ea 01-Feb-2013 Romain Guy <romainguy@google.com> Discard the correct buffer when the bound FBO is not 0

glDiscardFramebufferEXT uses different constants depending on whether
the default FBO is bound or not. The code was choosing the proper value
for the color buffer but not for the stencil buffer.

Change-Id: I55cfcbdf663582119cb1a6289317016440d9e361
penGLRenderer.cpp
2dbd185fd0e5dfe9addb677f42716c442b7e62bd 30-Jan-2013 Derek Sollenberger <djsollen@google.com> resolved conflicts for merge of c93c6aa5 to master-chromium

Change-Id: I51429ed5359355025f873ccab11bfabbbe772a46
c93c6aa5553203f05df871804517885fcc071cfd 30-Jan-2013 Chris Craik <ccraik@google.com> Merge "Object-based DisplayList recording"
781fd2b7c86a20b0f00b5e009237d69b557e3cc4 30-Jan-2013 Romain Guy <romainguy@google.com> am f5f85022: Merge "Fix graphical corruption on QCOM GPU Bug #7146141"

# Via Android (Google) Code Review (1) and Romain Guy (1)
* commit 'f5f8502271b04d63c518e3aecfd5eaf557904e72':
Fix graphical corruption on QCOM GPU Bug #7146141
c3fedafc5f50100219449125a000e3138f6fb987 30-Jan-2013 Romain Guy <romainguy@google.com> Fix graphical corruption on QCOM GPU
Bug #7146141

The GL_QCOM_tiled_rendering extension requires careful use of
start/endTiling when attaching a renderbuffer dynamically.

Change-Id: I20036683ed3909ffaf40cc3d57a25257e35b6fa2
ayer.h
ayerRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
2af4635e4a9e448a65ff541252f8f94bc6ac48e0 27-Nov-2012 Chris Craik <ccraik@google.com> Object-based DisplayList recording

bug:8037003

Changes the DisplayList from using stream read/write commands to use an array of
objects manually allocated on a linear buffer.

Depends on frameworks/native change https://googleplex-android-review.googlesource.com/#/c/257695/ which adds LinearAllocator

Also changes drawRects to use float count instead of rect count, to be more like drawLines/drawPoints

Change-Id: Ia2e4a11acd8f0a757042a05cbc9e7563cb73ee47
isplayListLogBuffer.cpp
isplayListLogBuffer.h
isplayListOp.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
atch.cpp
athRenderer.cpp
ect.h
7d4f807b830eceb557e849629e95bd4bdc06ccfd 19-Jan-2013 Romain Guy <romainguy@google.com> am 49464796: Merge "Allow layers with a stencil buffer to be resized on the fly Bug #7146141"

* commit '494647961feb21d925d5e6e5ce1d42aa8b6949db':
Allow layers with a stencil buffer to be resized on the fly Bug #7146141
2055abaa0a590c35e27e1ae2e7d7cfccdfb98b59 19-Jan-2013 Romain Guy <romainguy@google.com> Allow layers with a stencil buffer to be resized on the fly
Bug #7146141

This change moves the resizeLayer() from LayerCache (where it should
never have been anyway) to Layer. This makes a little more sense.

Change-Id: I8b2f9c19c558e738405a58b9e71ec5799fc6be88
ayer.cpp
ayer.h
ayerCache.cpp
ayerCache.h
ayerRenderer.cpp
penGLRenderer.cpp
e9a983b44407413f18aeb16c892e97ea938a7fab 18-Jan-2013 Romain Guy <romainguy@google.com> am b12db26f: Merge "Implement clipRect with a transform, clipRegion & clipPath Bug #7146141"

* commit 'b12db26fec178794915d819c3dd64f13d788c461':
Implement clipRect with a transform, clipRegion & clipPath Bug #7146141
8ce00301a023eecaeb8891ce906f67b513ebb42a 16-Jan-2013 Romain Guy <romainguy@google.com> Implement clipRect with a transform, clipRegion & clipPath
Bug #7146141

When non-rectangular clipping occurs in a layer the render buffer
used as the stencil buffer is not cached. If this happens on a
View's hardware layer the render buffer will live for as long
as the layer is bound to the view. When a stencil buffer is
required because of a call to Canvas.saveLayer() it will be allocated
on every frame. A future change will address this problem.

If "show GPU overdraw" is enabled, non-rectangular clips are not
supported anymore and we fall back to rectangular clips instead.
This is a limitation imposed by OpenGL ES that cannot be worked
around at this time.

This change also improves the Matrix4 implementation to easily
detect when a rect remains a rect after transform.

Change-Id: I0e69fb901792d38bc0c4ca1bf9fdb02d7db415b9
aches.h
ayer.cpp
ayer.h
ayerRenderer.cpp
ayerRenderer.h
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
napshot.h
tencil.cpp
616a87736d819a7fe4e1d60d4703aabc7b888cd7 15-Jan-2013 Romain Guy <romainguy@google.com> am 61840eb0: Merge "Preliminary Support for region clipping"

* commit '61840eb03882e1a964ae971725bd21229c3db42c':
Preliminary Support for region clipping
735738c4ddf3229caa5f6e634bf591953ac29944 03-Dec-2012 Romain Guy <romainguy@google.com> Preliminary Support for region clipping

Region clipping, using Canvas.clipPath or Canvas.clipRegion, requires
a stencil buffer to be always present. In addition, extra wiring is
required in JNI and display lists.

This change only adds the necessary JNI/C++ APIs and some extra
plumbing to start the real work on properly supporting region
clipping.

A new debug define called DEBUG_CLIP_REGIONS can be used to draw
the current clip region. It is off by default, as is region
clipping.

The default implementation of clipPath() and clipRegion(), now
in native, mimics the previous Dalvik implementation to prevent
regressions.

Change-Id: I7903e7cfd7412b9b9b622566d4dbfce7bdcec00c
ebug.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
bf06ccba95961f9f67af8957b52981eb3a46a9db 09-Jan-2013 Romain Guy <romainguy@google.com> am 33a9741c: Merge "Cleanup 9patch mesh matching code Bug #7970966"

* commit '33a9741c1be99e8be01ab799eb50df97849ed801':
Cleanup 9patch mesh matching code Bug #7970966
5341cead27070656458750a789ba211a505b57b5 09-Jan-2013 Romain Guy <romainguy@google.com> Cleanup 9patch mesh matching code
Bug #7970966

The bug described in #7970966 should normally never happen but just in
case, change the detection code to be more robust.

Change-Id: I7040a6087590e34abe8803cb8f83f051d77f3944
atch.cpp
atch.h
atchCache.cpp
14c40b47565778b7185de7655836485f3065877a 09-Jan-2013 Romain Guy <romainguy@google.com> Fix build

Change-Id: Ia465bd844b592fc05e59ad392ecc5ca4d34d24d7
ont/Font.cpp
19d4f1806a953b87435a2bb6fd8e738424e94003 09-Jan-2013 Romain Guy <romainguy@google.com> resolved conflicts for merge of c88c60be to master-chromium

Change-Id: I3b4b42443312068e942aa779dfdc928afa7569fd
e3a9b24b5e3f9b2058486814a6d27729e51ad466 08-Jan-2013 Romain Guy <romainguy@google.com> Add plumbing for better text scaling

Fonts are now described by a transform matrix. This lead to switching
from a vector to a hashmap. This change therefore adds new comparators
and hash computations to Font.

Change-Id: I2daffa7d6287c18554c606b8bfa06640d28b4530
isplayListRenderer.cpp
ontRenderer.cpp
ontRenderer.h
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
athCache.cpp
ont/Font.cpp
ont/Font.h
ont/FontUtil.h
7bac55434caa9de7fc31f6fd8b0384042c700b4c 05-Jan-2013 Romain Guy <romainguy@google.com> am 9acd1b4f: Merge "Add visual profiling feature"

* commit '9acd1b4fa897f3a007dd23dc1f0471b151fa03ad':
Add visual profiling feature
9acd1b4fa897f3a007dd23dc1f0471b151fa03ad 05-Jan-2013 Romain Guy <romainguy@google.com> Merge "Add visual profiling feature"
672433d90fab7383cd28beac9d4485b566a90940 05-Jan-2013 Romain Guy <romainguy@google.com> Add visual profiling feature

When profiling is enabled with debug.hwui.profile set to true,
setting debug.hwui.profile_visualizer to true will display the
profiling data directly on screen.

Change-Id: I3d5fe3f0347090815087b1cbfce66b8e76d9347b
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
95bdeddb97b2f14e115751041b7831f73d92a4cd 05-Jan-2013 Romain Guy <romainguy@google.com> am 48f7cfb1: Merge "Properly support ALPHA_8 bitmaps in all drawBitmap() methods"

* commit '48f7cfb10622f8675741f36bdf5b1f679e3fe37c':
Properly support ALPHA_8 bitmaps in all drawBitmap() methods
886b275e529e44a59c54b933453d9bc902973178 04-Jan-2013 Romain Guy <romainguy@google.com> Properly support ALPHA_8 bitmaps in all drawBitmap() methods

Change-Id: I869993c59e0a0d76f369c09acbae711753908f48
penGLRenderer.cpp
penGLRenderer.h
e0ece54bd97e66f3a2ee586e49b9502e5de62b93 03-Jan-2013 Romain Guy <romainguy@google.com> am 59131481: Merge "Remove unnecessary & uninitialized variable Bug #7728929"

* commit '5913148104f0b233d861fab2873befc865bf57c0':
Remove unnecessary & uninitialized variable Bug #7728929
15a65bfee5b0a98664eb5ebadad63c73e2c471f8 03-Jan-2013 Romain Guy <romainguy@google.com> Remove unnecessary & uninitialized variable
Bug #7728929

The uninitialized variable was taken into account to compute
the hash of gradient cache entries, thus causing cache corruptions
and sometimes infinite loops (it would also cause the cache to fill
up.)

Change-Id: Ic807a9bf901888b121a6a781a81dafc33075ed2a
radientCache.cpp
radientCache.h
65dcf5322f4b25c6e7a0fbaa42957296bcdec198 03-Jan-2013 Romain Guy <romainguy@google.com> am 44080524: Merge "Remove C++11 related warning"

* commit '44080524f083dc00704267a0919016388f0d5426':
Remove C++11 related warning
dcfc836b457a87881da409e1acf251515f121446 03-Jan-2013 Romain Guy <romainguy@google.com> Remove C++11 related warning

Change-Id: I250ff7bd0ea49908e11b14c995d77312cd09a8b4
penGLRenderer.cpp
penGLRenderer.h
kiaShader.h
ca79cf69d09efa0c327e9b1237d86a119aea5da7 14-Aug-2012 Derek Sollenberger <djsollen@google.com> Update framework to support r5967 of Skia.

bug: 6906025
Change-Id: Iefdb830ec3aa2ab3472c1c142484a7aa21788a15
ndroid.mk
isplayListRenderer.h
ontRenderer.cpp
ayer.h
ont/CacheTexture.cpp
ont/Font.cpp
53018e520de44795e250e6165f9a2195adc73a98 01-Dec-2012 Romain Guy <romainguy@google.com> Merge "Apply dev. settings at runtime Bug #7434649"
5bb3c730f5ebd2a0db1b02a8981c6fdbea6c1a2e 30-Nov-2012 Romain Guy <romainguy@google.com> Apply dev. settings at runtime
Bug #7434649

Change-Id: I16f00eaa8a5eefd9f9849e196cf2cb1659215390
aches.cpp
aches.h
ayer.cpp
ayer.h
penGLRenderer.cpp
69fcbccf476ffc55af4da4dfedc72c3de8f91ce8 01-Dec-2012 Romain Guy <romainguy@google.com> Fix crash in TextDropShadowCache

The lengths used to copy/read arrays were completely wrong.

Change-Id: If21f23a73cce59bbd32975760e6d728eeeb9e40d
extDropShadowCache.cpp
extDropShadowCache.h
c4aa38a1e38ff65460e98b4768fc76022a66621a 29-Nov-2012 Chris Craik <ccraik@google.com> am c0da873e: am a9473881: am 2435f98d: Merge "Use the same interrupt/resume logic for all functor calls" into jb-mr1.1-dev

* commit 'c0da873ee25e1e67fd0454ebc2473a5c3cac002c':
Use the same interrupt/resume logic for all functor calls
c0da873ee25e1e67fd0454ebc2473a5c3cac002c 29-Nov-2012 Chris Craik <ccraik@google.com> am a9473881: am 2435f98d: Merge "Use the same interrupt/resume logic for all functor calls" into jb-mr1.1-dev

* commit 'a9473881eb066b41ea2fb3389b5c0031c2ab4f38':
Use the same interrupt/resume logic for all functor calls
b8dca777caafe1fd8c6ff6a1cc9e1bdd55f8e4c1 29-Nov-2012 Romain Guy <romainguy@google.com> Merge "Use LruCache instead of GenerationCache in libhwui"
059e12ccd20f5c249724a8362d6bac325334ea76 29-Nov-2012 Romain Guy <romainguy@google.com> Use LruCache instead of GenerationCache in libhwui

Change-Id: Ic26ddc7151eb5462bcd243b21daf7187ed6d3bec
radientCache.cpp
radientCache.h
athCache.cpp
athCache.h
hapeCache.h
extDropShadowCache.cpp
extDropShadowCache.h
extureCache.cpp
extureCache.h
d15321bbf57ff7a4615076fefcee5e196c4fc796 28-Nov-2012 Chris Craik <ccraik@google.com> Use the same interrupt/resume logic for all functor calls

bug:7093396

The functor was able to change the renderer's blend mode without it
being restored in process mode. This single path of updating gl caches
reduces likelihood of this occurring in the future.

Change-Id: Ie367532f9c683299f02bc4f635d7cb31f96db39f
penGLRenderer.cpp
7bb3cfe1cca4016ce95d3ef059761f4bb2d668bb 15-Nov-2012 Sangkyu Lee <geteuid@gmail.com> Another optimization of glyph cache uploads

Previously, cache textures were updated whenever mCurrentCacheTexuture was changed.
Since updating cache textures needs glTexSubImage2D call, frequent changing
of mCurrentCacheTexture (which can easily happen when an app uses lots of unique glyphs
even with precaching) caused many glTexSubImage2D calls and bad framerates.
This patch optimized isssueDrawCommand function. Consequently, changing mCurrentCacheTexture doesn't
cause glTexSubImage2D call any more and it will improve font rendering performance.

Change-Id: Id19d959fa0e69eeb2a39f83a57e311d7394586b2
Signed-off-by: Sangkyu Lee <geteuid@gmail.com>
ontRenderer.cpp
ontRenderer.h
7fae5216d24ebe67e22777ab933689dbcbc001b9 01-Nov-2012 Chris Craik <ccraik@google.com> Avoid tesselation path when useCenter is set

bug:7458300

The tesselation path doesn't handle sharp joins.

Change-Id: I28bf03f3b72fc584a205daa40934dda17031098f
penGLRenderer.cpp
fbba753f62f13a12d9287c67921d1ea60e92768d 24-Oct-2012 Chet Haase <chet@google.com> Merge "Handle offscreen animations correctly" into jb-mr1-dev
3561d062ff01f3455c984e4cfcd101a64a2e902f 23-Oct-2012 Chet Haase <chet@google.com> Handle offscreen animations correctly

A bug in software rendering caused animations on views that are offscreen
to not get drawn, therefore the animation doesn't continue (since old-style
animations depend on the logic in the drawing code to keep running). Fix is
to special case the isAnimating case in ViewRoot to go ahead and schedule
a traversal even if the dirty rect does not intersect with the visible region.

Issue #7396035 Animations starting offscreen don't draw run/end/draw properly (sw rendering only)

Change-Id: Iae25b3a424ddc5a16ba431ecd68cf42d5500db3f
isplayListRenderer.cpp
41308e2936c768103d0e9c82500e97938d6797f1 23-Oct-2012 Romain Guy <romainguy@google.com> Properly draw the window background on window resize
Bug #7385090

This change gets rid of two silly asumptions:
- That a layer needs to be cleared with opaque black (it shouldn't,
it's already cleared to transparent and the view will cover it up
with its own background)
- The the clip should be dirty at the beginning of a frame only
when the render target is opaque

Change-Id: I415b6d3cab196057fb0281419a53fef601a44e28
penGLRenderer.cpp
547e66531d521eb1eadac87edb0f79f8c2f1bbe0 23-Oct-2012 Chet Haase <chet@google.com> Don't null the reference to Bitmap pixels until we're really ready

A change in the VM triggers a native memory error more aggressively than before,
showing that there's a bug in the logic of recycling bitmaps. Since the pixel
memory is allocated on the Java heap, nulling out the reference to that memory
in the Java level Bitmap object can cause that memory to get collected at any time.
Meanwhile, we may have a reference to that memory at the native level for rendering
purposes, causing an error if/when we access that memory after it has been collected
by the VM.

The fix is to avoid setting the reference to the pixels to null unless we are
not referring to it in native code. This is determined at the time we call
recycle() - we return a boolean to indicate whether the native code is still
using the memory. if not, the Java code can null out the reference and allow the
VM to collect it. Otherwise, it will get collected later when the encompassing
Bitmap object is collected.

Issue #7339156 HTML5 tests crash the app (Vellamo)

Change-Id: I3a0d6b9a6c5dd3b86cc2b0ff7719007e774b5e3c
esourceCache.cpp
esourceCache.h
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
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
ayer.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
b2e2f2470693e78baed20617f989d9a166864ed4 18-Oct-2012 Romain Guy <romainguy@google.com> Take into account the texture layer's transform for clipping
Bug #7370212

Change-Id: Ibdc3161306f54a1cfe66e08458f05ee01a13b1df
ayer.h
penGLRenderer.cpp
52439570800891345981c0968b513843edc2b27a 17-Oct-2012 Romain Guy <romainguy@google.com> Enable mipmapping, without a deadlock this time
Bug #7353771

Change-Id: I89a08a58608e374f1c604a26ee0769d5850b2f7b
extureCache.cpp
extureCache.h
be29d82f740fea2ed35d89bd9aa4644f4c042762 17-Oct-2012 Chet Haase <chet@google.com> Merge "Correctly adjust clip regions that lie offscreen" into jb-mr1-dev
a33d161250b0787f4e7a3f3f09244451e22496ce 17-Oct-2012 Mathias Agopian <mathias@google.com> workaround to unbreak the build (deadlock during boot)

bug: 7363206
Change-Id: Ie79c309e367ba07336a5299af9fd59c6bd2390e7
extureCache.cpp
1b85122bd22c4528679ae8bd67077dfc2fdf1847 17-Oct-2012 Romain Guy <romainguy@google.com> Merge "Add API to enable mipmaps on Bitmap Bug #7353771" into jb-mr1-dev
713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5 17-Oct-2012 Romain Guy <romainguy@google.com> Add API to enable mipmaps on Bitmap
Bug #7353771

This API can be used when scaling large images down to a small size
to get nicer looking results.

Change-Id: If09087eed36077eee5355f6047a3ca67747d7d9e
penGLRenderer.cpp
exture.h
extureCache.cpp
extureCache.h
aa42c9af6ea2158a685ebf9b338e6d2355712268 17-Oct-2012 Chet Haase <chet@google.com> Correctly adjust clip regions that lie offscreen

We were clamping the x/y location of the scissor to 0,0, but not adjusting
the width/height appropriately. This fix adjusts width/height and also clamps
them to 0 to correctly clip out offscreen operations.

Issue #7221524 Top left and top right portions of the screen blanks out after some time

Change-Id: I47f23336ea612409ed86652b9a68e272819ef00e
aches.cpp
5778cb9a98aacd74c7f915b2d02eccc7189d5946 16-Oct-2012 Romain Guy <romainguy@google.com> Merge "Always use the correct pixel store size Bug #7357394" into jb-mr1-dev
d43b22da291fd08017fac627561091a633c85807 16-Oct-2012 Romain Guy <romainguy@google.com> Always use the correct pixel store size
Bug #7357394

When a bitmap is reused it may change configuration which can lead
to a different pixel store alignment. Our current texture cache
implementation assumes this never happens and keeps the old alignment
which can lead to distorted texture (if the bitmap goes from
ARGB8888 to RGB565 for instance.)

Change-Id: Ic57acf2403411ae4d0924e92f221298350612617
extureCache.cpp
a92bb4dc9605c86b8773c929412af2dc242b1fa8 16-Oct-2012 Romain Guy <romainguy@google.com> Support clipping in Canvas.drawBitmapMesh()
Bug #7354162

Change-Id: Ifd1d0b365e8a4d88e0ff0629c9ee13f27e1a7331
penGLRenderer.cpp
780c12875ce0c0d3fd072484d4b8b3c327cc4f31 04-Oct-2012 Chris Craik <ccraik@google.com> HW Acceleration support for stroked arcs with BUTT caps

bug:4419017

Change-Id: I7371bfb36cef460da861a47d4d945218c6d0c3d0
penGLRenderer.cpp
athRenderer.cpp
athRenderer.h
3add43ab0e26c9fd44d4dea683092807229eaa59 12-Oct-2012 Chris Craik <ccraik@google.com> Merge "fix stroke sub-hairline threshold" into jb-mr1-dev
2154af209f6d269e29c6e991ce6c1349dfc85b93 12-Oct-2012 Chris Craik <ccraik@google.com> fix stroke sub-hairline threshold

bug:7339943

Change-Id: I4051a03f4cd5bd2c313840208540601fb7a056e2
athRenderer.cpp
c37f349ecff54f15ed31d57c1b886897c91430af 11-Oct-2012 Romain Guy <romainguy@google.com> Prevent possible divide by 0
Bug #7307304

Should never happen, but eh :))

Change-Id: Ic7a09fd5c7a3622e6b4963f9ee6920e232018e2e
atch.cpp
41d35aef06c2a570a45474a01ca95a6cb9c29d9e 11-Oct-2012 Romain Guy <romainguy@google.com> Allow 9patches to shrink
Bug #7307304

Change-Id: I1fabf6df99c18c86ab1ec0e1e398a3d6d4098496
atch.cpp
atch.h
bb5f014ae805f166328d72cbf826e8f1f17c9daf 08-Oct-2012 Chris Craik <ccraik@google.com> Merge "Use offset in line drawing" into jb-mr1-dev
50ae66a554126fadee2054e0d01a9e57150cedb5 07-Oct-2012 Romain Guy <romainguy@google.com> Work around a possible driver bug
Bug #7296475

When re-enabling the scissor the driver seems to ignore the already
existing scissor box. This change resets the scissor box when the
test state changes.

Change-Id: I3a68433164f99d21fbab769a26c56fe416c1539a
aches.cpp
b30cb10a0c75c2295e89b1b30d91a73f38ee09fb 06-Oct-2012 Chris Craik <ccraik@google.com> Use offset in line drawing

Partial revert of cb4d6009

bug:7299070
Change-Id: I1db7b035e3015e0f6d15c95aef71ea74dbeca13e
penGLRenderer.cpp
cf8675ee176a375f873792684d38a47f78348dff 02-Oct-2012 Romain Guy <romainguy@google.com> Draw stroked rectangle as meshes instead of textures
Bug #7233734

Stroked rectangles were rendered using software generated textures
which would lead to slightly misaligned results. Instead, let's use
the new convex path rendering code that will do the right thing
(and save a lot of bandwidth.)

Change-Id: Ib95ff581e56c1ecead97e4919298e6fd146ca167
penGLRenderer.cpp
bf09ffb4e0dc820aeae56a3e576aed33cab218da 01-Oct-2012 Chris Craik <ccraik@google.com> Quick reject empty paths

bug:7260035

Adding a circle of radius 0 to a path is a no-op in skia, so detect
this case both in the PathRenderer, and in quickReject().

Change-Id: I7a172db49a5d5351b4734b39d4e4ca6379658096
penGLRenderer.cpp
athRenderer.cpp
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
aches.cpp
isplayListRenderer.cpp
isplayListRenderer.h
a3dc55f83ab583e0a66b893c71b849afa046770a 28-Sep-2012 Romain Guy <romainguy@google.com> Fix a couple of rendering issues
Bug #7253839

1. Make sure we don't make GL calls while recording display lists

2. Disable an early and trivial clip optimization in font renderer
when a perspective transformation is used on the Canvas

Change-Id: I3f1052164239329346854f72d0a0d401fbfecf06
isplayListRenderer.cpp
atrix.cpp
atrix.h
penGLRenderer.cpp
napshot.cpp
napshot.h
ont/Font.cpp
a7a257d6578cf37723d92b4b90c6ef9caea18528 28-Sep-2012 Hiroshi Lockheimer <hiroshi@google.com> Merge "Plug memory leak that happens when reusing display lists Bug #7195815" into jb-mr1-dev
034de6b1ec561797a2422314e6ef03e3cd3e08e0 28-Sep-2012 Romain Guy <romainguy@google.com> Plug memory leak that happens when reusing display lists
Bug #7195815

We did not reclaim resources when reusing an existing DisplayList to
record a new empty list of commands. This would lead to various memory
leaks: bitmaps, paints, paths, matrices, etc.

This is not a common case but some apps run into this situation,
such as Launcher.

Change-Id: I2eb14ac86a212123f8edbe42b70a7c1c51fa4145
isplayListRenderer.cpp
a852ff3a4b637e8101c2f54e110467586fe604cf 28-Sep-2012 Romain Guy <romainguy@google.com> Merge changes I9873540e,I4f6c38e3 into jb-mr1-dev

* changes:
Skia's ColorMatrix vector is in the 0..255 range not 0..1 Bug #7248980
Don't use the QCOM_tiled_rendering extension with functors Bug #7247880
6ed9e43879039ce0cbead08d304edbce79a88ced 28-Sep-2012 Romain Guy <romainguy@google.com> Skia's ColorMatrix vector is in the 0..255 range not 0..1
Bug #7248980

Change-Id: I9873540e3bc1ea0526ea0884279a427c0de96006
kiaColorFilter.cpp
54c1a64d5441a964890b44280e4457e11f4f924a 28-Sep-2012 Romain Guy <romainguy@google.com> Don't use the QCOM_tiled_rendering extension with functors
Bug #7247880

Change-Id: I4f6c38e37b953c58e6107097c613891a49dac766
aches.cpp
aches.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
16b897c488a740e004bfce7d50b0d7602277fc0b 27-Sep-2012 Chris Craik <ccraik@google.com> Fix rectangle AA offset calculation

bug:4419017

Fixes compiler warning
Handle bezier thresholds with large stroke widths better
Fix sub-hairlines (for scaleX == scaleY)

Change-Id: Ida387483348ee61424b7fba729abca2a88bd68b3
aches.h
athRenderer.cpp
b0d135d91f3a41af09fd0281211f18e8452e7fc6 27-Sep-2012 Chris Craik <ccraik@google.com> Merge "Add stroke support to polygonal shape rendering" into jb-mr1-dev
244a0bcadc167ed8519c7e34c62e116c1adc2dbe 27-Sep-2012 Romain Guy <romainguy@google.com> Merge "Make gradients beautiful again Bug #7239634" into jb-mr1-dev
39284b763a09688468ed3799ebd2ebb76ea5dfd5 27-Sep-2012 Romain Guy <romainguy@google.com> Make gradients beautiful again
Bug #7239634

This change passes two matrices to the vertex shader instead of one.
We used to compute the final MVP matrix on the CPU to minimize the
number of operations in the vertex shaders. Shader compilers are
however smart enough to perform this optimization for us. Since we
need the MV matrix to properly compute gradients dithering, this
change splits the MVP matrix into two. This has the advantage of
removing one matrix multiplication per drawing operation on the
CPU.
The SGX 540 shader compiler produces the same number of instructions
in both cases. There is no penalty hit with having two matrices
instead of one. We also send so few vertices per frame that it
does not matter very much.

Change-Id: I17d47ac4772615418e0e1885b97493d31435a936
rogram.cpp
rogram.h
rogramCache.cpp
cb4d6009576cf08195dc23f341a3f4939c0878bb 25-Sep-2012 Chris Craik <ccraik@google.com> Add stroke support to polygonal shape rendering

bug:4419017
bug:7230005

- Adds support for stroke/strokeAndFill for shapes without joins
- Fixes path-polygonization threshold calculation
- Fixes rendering offset (now only used for points)
- Several formatting fixes

Change-Id: If72473dc881e45752e2ec212d0dcd1e3f97979ea
aches.cpp
aches.h
ontRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
athRenderer.cpp
athRenderer.h
2ea1045a0148cac45f873fc6324682044d599f73 26-Sep-2012 Romain Guy <romainguy@google.com> Merge "Applies a layer's color filter even when the layer is a quad Bug #7238059" into jb-mr1-dev
e529ece37f664f8947a1d4a1e27d679f6f286388 26-Sep-2012 Romain Guy <romainguy@google.com> Applies a layer's color filter even when the layer is a quad
Bug #7238059

Change-Id: Ib4736a419bc1a9a67a01d090516ed049fe3aebca
penGLRenderer.cpp
98d3a64ffa13596e3ea9125bbff40c51ec96bd8d 26-Sep-2012 Chet Haase <chet@google.com> Assign default texture id of 0

Some logic depends on a default value of 0, which was not being
assigned.

Issue #7195815 chrome url bar is corrupted
Issue #7190656 Textures corrupted on mr1

Change-Id: I346b7b76e885bf8f04740e711fd88f917a5418c7
ayer.cpp
ayer.h
ayerRenderer.cpp
ayerRenderer.h
exture.h
17ef62cc1f9d092669af0fed465a9a77e0dc1a4f 26-Sep-2012 Mathias Agopian <mathias@google.com> fix a possible dead-lock when clearing caches

Bug: 7195815
Change-Id: I8e226b7ec445f9f4fe46ae216ef7cc41efc5a0fd
aches.cpp
54643d72f86d0ee0b23e3643ac9257d52ddfae6b 26-Sep-2012 Mathias Agopian <mathias@google.com> make sure to destroy GL objects on the GL thread

Bug: 7195815
Change-Id: I5bcac61cd0b903d1ccca0754fdb9cb1023efbe0f
aches.cpp
esourceCache.cpp
56257aff8a55c847be72be9924c392033fd8151d 26-Sep-2012 Dave Burke <daveburke@google.com> Revert "Deleting objects on the wrong thread is a silly idea Bug #7195815"

This reverts commit 8a1374946a928fcba7495c87ff6adda327fdfb9f

Change-Id: I53564a6c531d334afcc1fce0bea1e57ae266aa78
ayer.cpp
ayer.h
ayerRenderer.cpp
ayerRenderer.h
esourceCache.cpp
8a1374946a928fcba7495c87ff6adda327fdfb9f 26-Sep-2012 Romain Guy <romainguy@google.com> Deleting objects on the wrong thread is a silly idea
Bug #7195815

Turns out that multi-threading is hard.

Change-Id: Ib0b4bd6dc3caea27f7ced22cbb363bb955fe58ab
ayer.cpp
ayer.h
ayerRenderer.cpp
ayerRenderer.h
esourceCache.cpp
ef09a210dd6ea481158b7028ec2424a7f5769ed2 25-Sep-2012 Romain Guy <romainguy@google.com> Don't destroy the same texture twice
Bug #7221449

SurfaceTexture already deletes the GL texture when detachFromContext
is invoked. The newly introduced refcount would casue the Layer
object to be destroyed later and attempt to delete the GL texture
again. By the time the second cleanup occurs, the texture name
might have been reused by somebody else, resulting in erroneous
behaviors.

Change-Id: I257c589fea64b34c00f46fbfaa7732e6854a5e41
ayer.h
e83221c547cf2038752e5378e72e49a62cfd9954 25-Sep-2012 Romain Guy <romainguy@google.com> Fix alpha channel computation with ColorMatrixColorFilter
Bug #7222476

There were two issues:
- Blending was ignored with color filters
- The addition vector of a color filter was treated as integer values
instead of float values

Change-Id: Id94065704a30ee8aaaa5724a9f3a3cff7c50ced7
penGLRenderer.cpp
rogramCache.cpp
kiaColorFilter.cpp
908a43234aca51af5021249c03030cec6b36417f 25-Sep-2012 Jean-Baptiste Queru <jbq@google.com> Merge into jb-mr1-dev

Change-Id: I7b777c7a4818d699582419d2eb4fc1f5cc0f4f46
87e2f757be9b24d369bab354e37c276e851b1fc7 24-Sep-2012 Romain Guy <romainguy@google.com> Add a property to disable libhwui's scissor optimization
Bug #7158326

When scissor optimization is enabled, OpenGLRenderer will attempt to
minimize the use of scissor by selectively enabling and disabling the
GL scissor test.
When the optimization is disabled, OpenGLRenderer will keep the GL
scissor test enabled and change the scissor rect as needed.
Some GPUs (for instance the SGX 540) perform better when changing
the scissor rect often than when enabling/disabling the scissor test
often.

Change-Id: Idb68862e287a23358f9188d577ae0f86161902fd
penGLRenderer.cpp
penGLRenderer.h
roperties.h
6b3292ce5b3908c7433503f64c852cf2b27718ed 24-Sep-2012 Romain Guy <romainguy@google.com> Merge "Avoid deadlock when deleting layers Bug #7217459" into jb-mr1-dev
97dc9172b0e58979c63de0dedbab656399a62281 24-Sep-2012 Romain Guy <romainguy@google.com> Avoid deadlock when deleting layers
Bug #7217459

Change-Id: I12bfa6c30c5030bd1b23ea6a3ce64240ab1dfba3
ayer.cpp
ayer.h
esourceCache.cpp
esourceCache.h
d392b87e3d30cd4f0836623d848019c5724efce8 24-Sep-2012 Romain Guy <romainguy@google.com> Merge changes Ib0a0b7d1,Ibec4b2aa into jb-mr1-dev

* changes:
Fix overdraw debug on QCOM
Make sure we never bind to texture #0 Bug #7195815
4285de3c8bc77856a2df98894f74bb7333f1d348 23-Sep-2012 Romain Guy <romainguy@google.com> Fix overdraw debug on QCOM

Disable the use of the tiling extension when overdraw debug is
turned on.

Change-Id: Ib0a0b7d1998146aa0c7efef2d3822f9997efb123
aches.cpp
574cf6070d34e66dfd6f2006937986eddd1f09e7 23-Sep-2012 Romain Guy <romainguy@google.com> Make sure we never bind to texture #0
Bug #7195815

Change-Id: Ibec4b2aa4c580419eb5eb61adae6c9c960694d0c
ont/CacheTexture.h
b92d8f7979c29c7c09932578a11b2f8d6eec1d90 21-Sep-2012 Chet Haase <chet@google.com> Optimize glyph cache texture uploads

Only upload the changed area of the glyph cache, not the entire
bitmap. Note that we can't do the full-on optimization here of copying a sub-rect
of the bitmap because of GL ES 2 limitations, but we can at least copy the
horizontal stripe containing the dirty rect, which can still be a big
savings over uploading the entire bitmap.

Issue #7158326 Bad framerates on MR1 (Mako, Manta, Prime)

Change-Id: Iab38d53202650f757ead4658cf4287bdad2b3cb9
ontRenderer.cpp
ont/CacheTexture.cpp
ont/CacheTexture.h
8e586f61dd4f7fa53b01e63ac779ffc7cde05bdd 22-Sep-2012 Romain Guy <romainguy@google.com> Merge "Add support for a new developer setting: overdraw debugging" into jb-mr1-dev
7c450aaa3caac2a05fcb20a177483d0e92378426 22-Sep-2012 Romain Guy <romainguy@google.com> Add support for a new developer setting: overdraw debugging

Change-Id: I350ba4486577c3289f82c20938f7a35138778727
aches.cpp
aches.h
penGLRenderer.cpp
penGLRenderer.h
roperties.h
tencil.cpp
tencil.h
dbb261455b1b8d2fdf4f0f8ad84ddb09dda1ed9b 22-Sep-2012 Chet Haase <chet@google.com> Merge "Optimize shaders for dithered gradients" into jb-mr1-dev
a1d12dd619c86c9ac121a3095ff5e5633c11e876 21-Sep-2012 Chet Haase <chet@google.com> Optimize shaders for dithered gradients

It's faster to compute a dither calculation in the vertex shader and use
a varying (letting the GPU interpolate the fragment values) than to perform
that calculation in the fragment shader as part of a texture lookup.

Issue #7207600 Prime mr1 shader performance issues
Issue #7158326 Bad framerates on MR1 (Mako, Manta, Prime)

Change-Id: I15789582a6e9e2d8b9dd22aa5b0f72f0ba1cce7f
ither.cpp
rogramCache.cpp
059aedf808c8b9b3da1457eef52f3d477878d50b 22-Sep-2012 Romain Guy <romainguy@google.com> Merge "Finish this bit before I forget." into jb-mr1-dev
f7e52d92b41adf460089625ea47bfea2ed7e6296 22-Sep-2012 Romain Guy <romainguy@google.com> Finish this bit before I forget.

This code is not enabled in current builds.

Change-Id: I488ec9e94889efbf2c8f3312abfed4298a76b7f1
tencil.cpp
61d37041ac76a95aedb98d3550bb5efa33d898a1 21-Sep-2012 Chris Craik <ccraik@google.com> Merge "Polygonal rendering of simple fill shapes" into jb-mr1-dev
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
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
57b5268708c3b974296c7d4e58a02a957979224a 21-Sep-2012 Romain Guy <romainguy@google.com> Optimize tiling management
Bug #7186819

Change-Id: Iebc42a6e9c96ad5605fbbe1539aa887695d2e829
aches.cpp
penGLRenderer.cpp
penGLRenderer.h
710f46d9d6a5bf9ea1c1833384caf61e1934124f 18-Sep-2012 Chris Craik <ccraik@google.com> Polygonal rendering of simple fill shapes

bug:4419017

Change-Id: If0428e1732139786cba15f54b285d880e4a56b89
ndroid.mk
ayerRenderer.cpp
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
athRenderer.cpp
athRenderer.h
rogram.h
rogramCache.cpp
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
aches.cpp
penGLRenderer.cpp
penGLRenderer.h
35643ddc689913f5b5f80ceed864470d987bd6cd 19-Sep-2012 Romain Guy <romainguy@google.com> Minimize state changes when updating layers

Change-Id: I407fcc80bd3178f9f09a3b379ceb7f7ce0749e08
aches.cpp
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
0990ffbc4d407e174423a4a04b5902ed83f71db5 18-Sep-2012 Chet Haase <chet@google.com> Fix GL shader bugs

Fixing errors in emitted shader code that caused GL errors
at runtime

Change-Id: I267a84398a81329a6688b292505f8779bd750ad1
rogram.cpp
rogramCache.cpp
a8a402f8ad1549e23f4238786269bd548b6b445d 18-Sep-2012 Chet Haase <chet@google.com> Merge "Fix bad shader code" into jb-mr1-dev
1c5c206953d673f8424908c77c974c06d5b99a9c 18-Sep-2012 Chet Haase <chet@google.com> Fix bad shader code

Shader code missing "=" in a couple of cases.

Change-Id: Iff8a99a0ccb2903c30e2bdb2f698ef9b2e03d5d1
rogramCache.cpp
f74d2f2fe8a157bee25516d2a6ae3e329507cb2c 17-Sep-2012 Chet Haase <chet@google.com> Merge "Fix occasional crash bug with layers" into jb-mr1-dev
603f6de35f21d74ae242d52d501f4f5c25ff4f4c 15-Sep-2012 Chet Haase <chet@google.com> Fix occasional crash bug with layers

Launcher occasionally crashes with a stack trace indicating that the memory
of a Layer object is corrupt. It is possible for us to delete a Layer
structure and then, briefly, use it to draw a DisplayList again before
that DisplayList gets recreated (without the layer that got deleted).

When this happens, if the memory got corrupted, it's possible to crash.

The fix is to add Layer to the other objects which we currently refcount
(bitmaps, shaders, etc.). Then instead of deleting a Layer, we decrement the
refcount. We increment when creating it, then increment it again when it's
referenced from a DisplayList. Then we decrement the refcount instead of
deleting it, and decrement when we clear a DisplayList that refers to it.
Then when the refcount reaches 0, we delete it.

Issue #6994632 Native crash in launcher when trying to launch all apps screen

Change-Id: I0627be8d49bb2f9ba8d158a84b764bb4e7df934c
isplayListRenderer.cpp
isplayListRenderer.h
ayer.cpp
ayer.h
ayerCache.cpp
ayerRenderer.cpp
penGLRenderer.cpp
esourceCache.cpp
esourceCache.h
a938f569ce206c1ed68d736181016b5b708c0084 14-Sep-2012 Romain Guy <romainguy@google.com> Fix modulation and gamma correction issues

Modulation is normally enabled in a shader when drawing with an alpha
mask (A8 texture.) Modulation is used to do one of two things:

- Colorize the primitive (to draw text in red for instance)
- Apply extra translucency (50% translucent circle filled with a bitmap)

The current implementation has four issues:

1. Unnecessary work is performed by assigning the modulation color
to vec4 fragColor early in the shader
2. The modulation color's alpha is applied twice when the primitive
is drawn with an SkShader
3. The decision to modulate is wrong and triggers when any of the
RGB channels is < 1.0. Only the alpha channel needs to be taken
into account to make the decision
4. Gamma correction is not applied properly

This change addresses all four issues above.

Change-Id: I73fcc74efc4b094bf2d1b835f10ffaa2ea4b9eb9
rogram.h
rogramCache.cpp
494ac35c27a0960f57b00bf8457f1956ecf149a2 14-Sep-2012 Romain Guy <romainguy@google.com> Merge "Multiply alpha for AA as late as possible" into jb-mr1-dev
85ef80d8902afe8d26cb75fa7837fd9e6d019620 14-Sep-2012 Romain Guy <romainguy@google.com> Foundation for tiling optimization

Change-Id: I4db32a4749f196472ba0dde7e102439d2ba4a3a7
aches.cpp
aches.h
xtensions.h
9f44a13a125980fee92cdc76376063129f0eebc9 14-Sep-2012 Chris Craik <ccraik@google.com> Multiply alpha for AA as late as possible

Should be done after all color computation

Change-Id: Iaadd565f7d2263f111f6841a00e7c341025833d3
rogramCache.cpp
45e4c3df6c00ac98ff6144de9af574877d4fff19 12-Sep-2012 Romain Guy <romainguy@google.com> Discard framebuffer commands when we redraw the entire buffer

Change-Id: I32e3014832cbd3bdbace8c3d2206eb20a2002d64
isplayListRenderer.cpp
ayerRenderer.cpp
penGLRenderer.cpp
df46c637550b4c6f0543574cfbd544329f48f5c7 11-Sep-2012 Romain Guy <romainguy@google.com> Merge "Prevent degenerate 9-patches from drawing out of bounds Bug #7137292" into jb-mr1-dev
70561df470c31513056df181571632851fd0d081 11-Sep-2012 Romain Guy <romainguy@google.com> Prevent degenerate 9-patches from drawing out of bounds
Bug #7137292

Change-Id: I371e94899445d2f3c6794d5c0aee8faa514d3c2c
atch.cpp
beb8bd0db28d8c5cad2a258f2ba2f3b8b76cf037 10-Sep-2012 Chet Haase <chet@google.com> Reset GL buffer state after functor invocation

Functors in WebView were binding to different buffers than we
assumed in the toolkit, eventually causing a crash due to improper
dereferencing in the currently bound buffer. Fix is to reset state
after invoking functors.

Issue #6666279 Native crash in Currents, mostly on Nakasi

Change-Id: I3697812d83613fffc9193daa99beea4dbf26474a
penGLRenderer.cpp
4aacf93d40b4be82aa35bf164d6fd6536c8b2a50 08-Sep-2012 Romain Guy <romainguy@google.com> Merge "Fix memory corruption in LayerRenderer::copyLayer" into jb-mr1-dev
e49d7ec36132f33b7c9e2c044ab9dd3585aa3747 08-Sep-2012 Romain Guy <romainguy@google.com> Fix memory corruption in LayerRenderer::copyLayer

The pixel store pack alignment was not set for the source texture,
causing a write to occur outside of the destination bitmap's
bounds.

Change-Id: Iaa5767acf7b5943fbc2765c3810a142f06b1a796
ayerRenderer.cpp
dc531fa7d4ec545ace1b3daae0849d3101102e49 08-Sep-2012 Chris Craik <ccraik@google.com> Merge "Handle different x, y scales in drawLines AA path" into jb-mr1-dev
75040f8a7727f18bb33da23696a32a0760926ff2 07-Sep-2012 Chris Craik <ccraik@google.com> Handle different x, y scales in drawLines AA path

bug:7114630

Fixes different x, y scales, and fixes boundaryWidthProportion to be from
center, not edge.

Also adds drawLine tests that previously drew blurry.

Change-Id: I2b648a60361ad3931eac67647b9b27909525ee1e
penGLRenderer.cpp
89b3f48fa3ccaf9a05628f0e540c1f94716809f7 07-Sep-2012 Chet Haase <chet@google.com> Merge "Enable changing properties of layer paint" into jb-mr1-dev
55e6b77bda7da1684ca32493d9e03184bd441dab 07-Sep-2012 Romain Guy <romainguy@google.com> Merge "Reduce the number of locks acquired by display lists" into jb-mr1-dev
58ecc204fbcacef34806290492384677a330d4d4 07-Sep-2012 Romain Guy <romainguy@google.com> Reduce the number of locks acquired by display lists

Change-Id: I1123aae0355de84db705bb75042c7083fc69c9f2
isplayListRenderer.cpp
isplayListRenderer.h
esourceCache.cpp
esourceCache.h
d15ebf25c595b855f6978d0600218e3ea5f31e92 05-Sep-2012 Chet Haase <chet@google.com> Enable changing properties of layer paint

Previously, to draw a layered view with a changed Paint object for the
drawLayer operation, you'd have to invalidate the parent view, to get the
native DisplayList to pick up the new Paint properties. This change adds
API and functionality so that the developer can call setLayerPaint(), which
does the proper invalidation (lightweight, doesn't cause redrawing the view).

Issue #6923810 Make it easy to efficiently animate a layer's Paint

Change-Id: I7fea79788d50f6d9c86dd5e5b2a4490cb95142bb
ndroid.mk
isplayListRenderer.cpp
ayer.cpp
ayer.h
penGLRenderer.cpp
penGLRenderer.h
9147cd4ac56d53dec6da1ef13dd04ba1eec1a7df 07-Sep-2012 Chris Craik <ccraik@google.com> Fix m11 to be Y scale instead of X

bug:7114630

Fixes different X and Y values resulting in blurry lines/rects.

Change-Id: I3eb244e0cf769efa6b38d08741cf37d0bf62b786
penGLRenderer.cpp
378d131e65348d199db36c21ba7156542bbf0045 06-Sep-2012 Chris Craik <ccraik@google.com> Merge "Varying-based AA rect drawing" into jb-mr1-dev
6ebdc114e0d72137394f02bc8ffe9d7a782a65c4 01-Sep-2012 Chris Craik <ccraik@google.com> Varying-based AA rect drawing

Instead of calculating opacity from relative position in the shader, use a
shader varying to do this computation for us.

bug:5045101

Also adds a test to HwAccelerationTest to show incorrect antialiasing in
scaled drawAARect / boundarySize calculation.

Change-Id: Icdc41acb01dc10ce354834f8389a5aed2f439162
aches.h
penGLRenderer.cpp
penGLRenderer.h
rogram.h
rogramCache.cpp
521dc51fd411285f900c083a4fe560d2ed7c3f8a 05-Sep-2012 Romain Guy <romainguy@google.com> Don't invalidate all the glyphs when flushing large textures

FontRenderer::flushLargeCaches identifies the large textures used to
cache glyphs and visits all the known fonts to mark their glyphs
invalid if they belong to one of these large textures.

Unfortunately, Font::invalidateTextureCache had a logic error
which would make it mark *all glyphs* as invalid, not matter
what texture they belong to. This means that any large cache
flush would cause all glyphs to be invalidate, thus forcing
the rendering system to recreate them on the next draw.

Font::invalidateTextureCache is supposed to behave this way:
- If the specified cacheTexture is NULL (default value), mark
all glyphs as invalid (see FontRenderer::flushAllAndInvalidate())
- If cacheTexture is *not* NULL, invalidate only the glyphs for
which glyph.cacheTexture == cacheTexture.

The previous condition read:

if (cacheTexture || glyph.cacheTexture == cacheTexture)

This test *always* passes.

Change-Id: I418886cb594c81c6178d0f9e9953d975e991cf22
ont/Font.cpp
6c8c6d9d44f97ebfba9c6d997665ad58ac39273a 05-Sep-2012 Romain Guy <romainguy@google.com> Merge "Correctly check the height of a glyph prior to caching it" into jb-mr1-dev
e43f785b7ff3fdf75f6d1c92282ebca6db191f2f 05-Sep-2012 Romain Guy <romainguy@google.com> Correctly check the height of a glyph prior to caching it

Change-Id: Iaf3977afc20fcde65bfda7b9e092b3e723241684
ont/CacheTexture.cpp
ont/CacheTexture.h
d84aaa23a53b57834b0722ad36c460833dc4823c 05-Sep-2012 Chris Craik <ccraik@google.com> Merge "Fix line drawing path to use proportional distance from center" into jb-mr1-dev
8087246d9964b11de8ce116bc63b156faa4197e0 05-Sep-2012 Romain Guy <romainguy@google.com> Code cleanup in FontRenderer

Change-Id: Ic788721c224a77f0a76f4cd6d9817b62e390a5a7
ontRenderer.cpp
ontRenderer.h
ont/CacheTexture.h
ont/Font.cpp
ont/Font.h
9b1204baf4740b4d443e72157dea98571cf84e1f 05-Sep-2012 Romain Guy <romainguy@google.com> Small code cleanup in FontRenderer

Change-Id: I09c00debe9b0b4f45b232cae402ed19bdaeabfe4
ontRenderer.cpp
ontRenderer.h
ont/CacheTexture.cpp
ont/CacheTexture.h
ont/Font.cpp
8f5ad7657b6c7cdb8927d7da5140602b68b450ac 04-Sep-2012 Chris Craik <ccraik@google.com> Fix line drawing path to use proportional distance from center

boundaryWidth and boundaryLength are now distance from center, instead of
distance from edge, in order to avoid unnecessary calculation in the shader. New
calculation of these matches drawAARect.

Change-Id: I1c7f576a97a6f0ce00d521661fd56fb62e05e6f2
penGLRenderer.cpp
9f5dab3fc228fa11c32b483e6101ec086895a32b 04-Sep-2012 Romain Guy <romainguy@google.com> Refactor FontRenderer.cpp

FontRenderer.h defined several classes and structures that now live
in the font/ folder. This will make the code easier to read and
maintain.

Change-Id: I3dc044e9bde1d6515f8704f5c72462877d279fe2
ndroid.mk
ontRenderer.cpp
ontRenderer.h
ont/CacheTexture.cpp
ont/CacheTexture.h
ont/CachedGlyphInfo.h
ont/Font.cpp
ont/Font.h
ont/FontUtil.h
0baaac5e9adf3ee280ae1239e2e58754a9d2b099 01-Sep-2012 Romain Guy <romainguy@google.com> Revert "Revert "Add more support for transformed clip rects and paths""

This reverts commit a8557d2169e14997637f57bc897640c8882d4a46.

Change-Id: I36d4883d548fc47ba6c0b4a42012107d0d2f85a6
ndroid.mk
aches.h
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
napshot.h
tencil.cpp
tencil.h
a8557d2169e14997637f57bc897640c8882d4a46 01-Sep-2012 Mathias Agopian <mathias@google.com> Revert "Add more support for transformed clip rects and paths"

this introduced a dead lock in GradientCache's ctor.

This reverts commit dfe082f63e94cde9aee271c94d13de5e7217e036.

Bug: 7096001
Change-Id: I57b8bbab11fb7cb502fa58e3bbf5d19864db874f
ndroid.mk
aches.h
radientCache.cpp
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
napshot.h
tencil.cpp
tencil.h
703bd32647556524fa8cadbe869c8a8d734640ef 01-Sep-2012 Romain Guy <romainguy@google.com> Merge "Add more support for transformed clip rects and paths" into jb-mr1-dev
dfe082f63e94cde9aee271c94d13de5e7217e036 01-Sep-2012 Romain Guy <romainguy@google.com> Add more support for transformed clip rects and paths

Change-Id: I41791b1e1bffef77d503dc9e52428395d2309688
ndroid.mk
aches.h
radientCache.cpp
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
napshot.h
tencil.cpp
tencil.h
eb32a499194119b3783b86c925172df02e5d2685 31-Aug-2012 Chet Haase <chet@google.com> Paramaterize and adjust the glyph cache sizes

Add new parameters for the texture size used for the larger, fallback caches.
Bump up the defaults in some situations.

Issue #7045164 Adjust cache sizes for manta

Change-Id: I562118ce785d7f8b6e445178878672e9709d25f2
ontRenderer.cpp
ontRenderer.h
roperties.h
c0c1c94e2df33ca8b85bb25fa89bf8379f9a6415 30-Aug-2012 Chet Haase <chet@google.com> Merge "Avoid thrashing the glyph cache during the precache phase" into jb-mr1-dev
f942cf10e04567f6b9456f6258e29c803b8bfb41 30-Aug-2012 Chet Haase <chet@google.com> Avoid thrashing the glyph cache during the precache phase

It is unlikely, but possible, to draw so many glyphs in a frame
(especially of the glyphs are quite large) that the cache starts flushing
itself to fit the later glyphs in. This causes unnecessary thrashing, because
when we actually draw the frame, we will again need to flush to fit the
earlier glyphs in, and then flush again to fit the later ones in.

It is better to avoid thrashing the cache at the precache phase, and wait
until we actually draw the glyphs that do not fit to do any eviction of
the earlier glyphs.

This change simply notes when we are in the preaching phase, and avoids flushing
the cache when a glyph does not fit.

Issue #7081725 avoid thrashing cache during DisplayList recording

Change-Id: I230410ab5b478091b1032fa99dc1752acf868bbe
ontRenderer.cpp
ontRenderer.h
63f2fcae3e7089ce0e27837a5152392d503f41eb 30-Aug-2012 Chet Haase <chet@google.com> Merge "Fix bug with Fbo layer clipping" into jb-mr1-dev
7808581ca3b462fb187aed6b0d1b86fb83a8a215 30-Aug-2012 Romain Guy <romainguy@google.com> Merge "Pre-multiply color components for 2-stop gradients Bug #7033344" into jb-mr1-dev
d679b57ef279239cf11bb6c9bd14fb99b07971c9 30-Aug-2012 Romain Guy <romainguy@google.com> Pre-multiply color components for 2-stop gradients
Bug #7033344

Change-Id: Ia168501f1dc56ba7a1bb0c55078320432309a66a
radientCache.cpp
kiaShader.cpp
kiaShader.h
d48885a6c8cd27a8a62552c33b5282e9882e19f6 29-Aug-2012 Chet Haase <chet@google.com> Fix bug with Fbo layer clipping

Rendering views with alpha causes the creation of Fbo layers. These layers
are created at the size of the view, clipped by the current clip rect.
However, if the view lies completely outside the current clip rect, the
Fbo layer is created at the full size of the view and copied into place
outside of its container, causing artifacts like notification items showing
up outside the notification panel.

Fix is to note when the intersect() operation fails and to set an empty bounds
on the layer.

Issue #7069881 Bottom notification sometimes shows below bottom of notification panel shade

Change-Id: Ib52f7c4e503bbe9204cb808755ab269195aa94c1
penGLRenderer.cpp
penGLRenderer.h
a798b95a9ef328720febec72d01462cd97e3d4c7 28-Aug-2012 Chris Craik <ccraik@google.com> Use smoothstep to eliminate branches in AA shader

Change-Id: If4ecb1a9446f29b2f8444f5cee551f863c1993e8
penGLRenderer.cpp
rogramCache.cpp
5a3ec7113c99242fa0d0a328a0ec3892698203f1 18-Aug-2012 Chet Haase <chet@google.com> Fix glyph cropping bug

Glyphs were being stored in the glyph cache incorrectly.
The second row of glyphs in any column were being positioned exactly
one pixel too high, causing the preceding glyph in that column to be
cropped, resulting in the reported truncation in some glyphs.

Issue #7003215 Minor UI truncation while reading the mails

Change-Id: I47ce376f78a04d4e07e8b7ed1b3f0b58864c5498
ontRenderer.cpp
378e919ccb75efe24d5a5aa75ac2c6ef255dcb48 16-Aug-2012 Chet Haase <chet@google.com> Remove CacheTextureLine structure from FontRenderer

CacheTextureLine was useful before we were packing the glyph
textures; it allowed simple packing of any particular texture according to
how many lines there were in a texture, and how tall those lines were.
Now that we are packing more efficiently (both horizontally and vertically
in any given texture line), it is more efficient to have
open space in every texture, removing the need for CacheTextureLine (which
now gets in the way since it limits how much can be stored in each line).

This change removes CacheTextureLine and just uses CacheTexture directly,
allowing caching of glyphs anywhere in the open space of each texture. As before,
the packing of these glyphs is determined by the CacheBlock structure, which
is a linked list of open spaces in each CacheTexture.

Change-Id: Id6f628170df0f676f8743ac7de76f2377fc6a012
ontRenderer.cpp
ontRenderer.h
6b7d46b78c1c5c1ce3e077c0eed41c730f1686b4 15-Aug-2012 Chet Haase <chet@google.com> Merge "Restore scissor state correctly" into jb-mr1-dev
2efd5c5886d9acf747bc92f888d731ed558aabcc 15-Aug-2012 Chet Haase <chet@google.com> Glyph cache optimization

Precaching at startup was not working. One-liner fix to init the caches
so that precaching would kick in earlier, saving time at startup by avoiding
the multiple-upload issue of caching at render time.

Issue #6893691 long app launch time on manta for some apps comparing to nakasi/stingray

Change-Id: Ie5c7f0536ec8ea371c7892e5e09c1db14795531c
ontRenderer.cpp
8025061c594e5171e1bf370d8fdd77e0e9a02b47 15-Aug-2012 Chet Haase <chet@google.com> Restore scissor state correctly

Chrome is disabling the scissor, which doesn't play well with our
code that assumes that we know the state of the scissor. This fix
sets up our internal state based on the actual state of the scissor
in the resume() function (which is called after any calls out to the
Chrome or Browser GL functor). This fixes intermittent rendering
artifacts, including a gray address bar (where the gray background
gets painted without the clip that is being applied to the text foreground).

Issue #6886339 Address bar in Chrome turns gray after swiping the tabs / favicons drift outside of tab

Change-Id: I3d8a23f4438b41a367336507845baaea90cccc7e
penGLRenderer.cpp
e816baea651476aca4407200d4a5e629b9ab8dfa 09-Aug-2012 Chet Haase <chet@google.com> Optimize interactions with glyph cache

There are two fixes here:
- precaching: instead of caching-then-drawing whenever there is a new
glyph, we cache at DisplayList record time. Then when we finally draw that
DisplayList, we just upload the affected texture(s) once, instead of once
per change. This is a huge savings in upload time, especially when there are
larger glyphs being used by the app.
- packing: Previously, glyphs would line up horizontally on each cache line, leaving
potentially tons of space vertically, especially when smaller glyphs got put into cache
lines intended for large glyphs (which can happen when an app uses lots of unique
glyphs, a common case with, for example, chinese/japanese/korean languages). The new
approach packs glyphs vertically as well as horizontally to use the space more efficiently
and provide space for more glyphs in these situations.

Change-Id: I84338aa25db208c7bf13f3f92b4d05ed40c33527
isplayListRenderer.cpp
isplayListRenderer.h
ontRenderer.cpp
ontRenderer.h
320d46bf844b84351cb80c5d4a4768d86447ac81 09-Aug-2012 Romain Guy <romainguy@google.com> Reduce gradients textures size whenever possible

Change-Id: Ifd58625ee62edac3b5d20b77553cb98b6fa2b46e
radientCache.cpp
rogramCache.cpp
c89b14bba0f6cc2c91629080617f7ed215f697f3 08-Aug-2012 Romain Guy <romainguy@google.com> It seems that apparently useless public APIs are actually useful
Bug #6953651

Change-Id: Ic47ce504e63262711f5d3edc76f7d2b9c12471ad
penGLRenderer.h
b6039811fa0fbc23f25c47491810faeb04ce3125 08-Aug-2012 Jean-Baptiste Queru <jbq@google.com> am 05e97e81: am 0be33f2d: Merge "Add shortcut to avoid potential divide by zero in some case"

* commit '05e97e81a5fa2c9cab4cdda15aa2d036243a0c0e':
Add shortcut to avoid potential divide by zero in some case
05e97e81a5fa2c9cab4cdda15aa2d036243a0c0e 08-Aug-2012 Jean-Baptiste Queru <jbq@google.com> am 0be33f2d: Merge "Add shortcut to avoid potential divide by zero in some case"

* commit '0be33f2d522f76f48062a59ddb520815a0851875':
Add shortcut to avoid potential divide by zero in some case
33fa1f774c8e7289fd7c39fbc2c65b9361f2c2c4 08-Aug-2012 Romain Guy <romainguy@google.com> Draw an empty border around glyphs to avoid sampling issues
Bug #6942209

The font renderer was preserving a 1 px border around each glyph to ensure
bilinear filtering would work nicely. Unfortunately, this border was not
set to 0 when glyphs were added in the cache to replace old evicted glyphs.

Change-Id: Ib85afca7ebad5cb63f960dc0e87ae162333dbfe8
ontRenderer.cpp
penGLRenderer.cpp
17112ad8a21a77620eb1ff14dcf8bdd6b7859712 07-Aug-2012 Romain Guy <romainguy@google.com> Cleanup of libhwui

Change-Id: Ib7f5771548462c00027a8ad57badfb68c50644f9
penGLRenderer.h
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
aches.cpp
aches.h
ayerRenderer.cpp
penGLRenderer.cpp
atch.cpp
roperties.h
8801b2fef3bc54db1bbb24748d91c909b901116a 04-Aug-2012 Romain Guy <romainguy@google.com> Bowing my head in shame
Bug #6924514

Change-Id: Ifcc08fb5dbaf3f9c6ac3a3e618db2fd6349dc290
ammaFontRenderer.h
18edb81172daa9b98b53d226d94fc03249b1aded 04-Aug-2012 Romain Guy <romainguy@google.com> Avoid crash when dumping display lists

We recently changed the drawText implementation to accept more parameters
which were not taken into account during a dump operation.

Change-Id: Ia1dc682dc7bb2bb02a1f4a514ed5af5556f92a97
isplayListRenderer.cpp
a70cd04985eec51d95355cc7b822bc65f4ebce05 03-Aug-2012 Romain Guy <romainguy@google.com> Merge "Add dithering to gradients" into jb-mr1-dev
211efea7376371ee755edd2ad03e83ef6eea464e 01-Aug-2012 Romain Guy <romainguy@google.com> Add dithering to gradients

Change-Id: Ic1208855bde3a254eca2fd7cef43e0f1318ce419
ndroid.mk
aches.cpp
aches.h
ither.cpp
ither.h
rogramCache.cpp
kiaShader.cpp
1ae49ab8655baeb0ddf1944d0a66cd598122408a 01-Aug-2012 Raph Levien <raph@google.com> Merge "Fix bug 6892600 Font (character pairs) rendering issue" into jb-mr1-dev
42e1e0d482d774cf18a55773e434f02edb9e4462 30-Jul-2012 Romain Guy <romainguy@google.com> Improve gradients

Avoid using textures for common gradients (two stops from 0.0 to 1.0)

Change-Id: Iff55d21b126c8cfc4cfb701669f2339c8f6b131a
radientCache.cpp
radientCache.h
rogram.h
rogramCache.cpp
kiaShader.cpp
kiaShader.h
8b4072d3fb9bb49d774d97689a065204beca1752 31-Jul-2012 Raph Levien <raph@google.com> Fix bug 6892600 Font (character pairs) rendering issue

Alignment on paint for actual glyph drawing needs to always be left,
even when drawing centered or right aligned text. The x offset for
alignment is applied by OpenGLRenderer::drawText (and needs to be early
in the pipeline for quickReject to work). Similar change needed for
drawing drop shadow.

Also fixes bug with mispositioned underline (offset for alignment has
already been applied once, no need to do it again in
drawTextDecorations).

Change-Id: Id3dcd62de5536a26b158d768889273a1492b35d6
penGLRenderer.cpp
extDropShadowCache.cpp
c25259519f1b74bb62a2b051b74537f073436b5c 28-Jul-2012 Romain Guy <romainguy@google.com> Rename drawGeneralText to drawText

Change-Id: I5062ea5b0605fc7af27f410fafc930d10f38e926
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
0412cfcbcdd7224f80a80180a946f0fdd28c3afc 25-Jul-2012 Chen YANG <chen.yang@intel.com> Add shortcut to avoid potential divide by zero in some case

Change-Id: If4b34c95402daf8ebcc28736edfb2012553aa57c
ontRenderer.cpp
996e57c84368058be793897ebc355b917a59abc2 24-Jul-2012 Raph Levien <raph@google.com> Hardware implementation of glyph positioning (bug 5443796)

This implementation adds a drawGeneralText() method to the OpenGL
Renderer, which supports both a global x, y position, an array of
individual glyph positions, and also a length parameter (which enables
drawing of underline and strikethrough. It also adds the method to the
display list (with marshalling and unmarshalling).

With this change, the existing drawText() method is removed entirely, as
it's subsumed by the new method. It's easy enough to revert to the old
functionality if needed by passing in a NULL positions array.

Change-Id: I8c9e6ce4309fd51cc5511db85df99f6de8f4f6f5
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
98ba89492a477114148fcb1f89675e41679ca7cc 21-Jul-2012 Romain Guy <romainguy@google.com> Make gradients look slightly better

Change-Id: Ib12c628a88b9ec6af1214ce6e5cb14cfde40485e
radientCache.cpp
00755fed35e4a91291c42a8a47bed8b957e9f8e1 20-Jul-2012 Raph Levien <raph@google.com> Merge "Add drop shadow for drawPosText in hwui renderer."
416a847633680d94efb926837efdc18726d54918 20-Jul-2012 Raph Levien <raph@google.com> Add drop shadow for drawPosText in hwui renderer.

This patch adds support for drop shadows (setShadowLayer) for
drawPosText in the hwui renderer. In and of itself, it's not very
important, but it's on the critical path for correct mark positioning,
tracked as bug 5443796.

The change itself is fairly straightforward - it basically just adds an
extra "positions" argument to all draw and measure methods on the code
path for drawing drop shadowed text, as well as to the cache key for
cached shadow textures.

Change-Id: Ic1cb63299ba61ccbef31779459ecb82aa4a5e672
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
extDropShadowCache.cpp
extDropShadowCache.h
8dcfd5e836341b4a803b04d104a930bb312182d3 20-Jul-2012 Romain Guy <romainguy@google.com> Clamp gradient textures to max GL texture size

Change-Id: I8ce4e50988f5194fe5ce4bde7945ec01673af3cd
radientCache.cpp
radientCache.h
esourceCache.cpp
0aa87bbfc41e8b5f52de701ac17b4e66a7a7b609 20-Jul-2012 Romain Guy <romainguy@google.com> Fix crash with new LookupGammaFontRenderer
Bug #6853934

Change-Id: I15e6ca73bfe00eff1a37c4b9d2f7f709ee018eb6
ontRenderer.cpp
ontRenderer.h
ammaFontRenderer.h
eb61cd8296ed7e3f3aef5bd430d846aa54d5d7e2 19-Jul-2012 Romain Guy <romainguy@google.com> Optimize gradient textures

Compute the size of the backing textures based on the maximum possible
number of shades in the gradient.

Change-Id: I2d7f20477d31b81e9735f2c1d83ebdd0dbcbe340
radientCache.cpp
63553478130f78d44c8fbeaebc610e19925544a5 19-Jul-2012 Romain Guy <romainguy@google.com> Remove vendor specific precision qualifier

Change-Id: I0a56ca7a5a399ec94993d3cea0c4aff6c0f86e39
xtensions.h
rogramCache.cpp
8e025de5fb3ab1c099541e3a387123170bf9d1a9 19-Jul-2012 Romain Guy <romainguy@google.com> Note to self

Change-Id: Ic5699bdbf880ad68748c827bb5b4976b12d4d413
rogramCache.cpp
04299385c681140239b0dc31d9780d087d2b4d7c 19-Jul-2012 Romain Guy <romainguy@google.com> Clip lines, AA rects and points correctly

Change-Id: I900dd986f397b66f133e6021aa4c2539e7abc2b9
penGLRenderer.cpp
dfab50d8b97a90dca279b119ebe439f595616ffa 19-Jul-2012 Romain Guy <romainguy@google.com> Tweak text gamma correction

Change-Id: Icd3326e6a054d6020c3ed61c8459394bc87401dd
ammaFontRenderer.cpp
roperties.h
6e25e38e43f9e7f71397dfab7ed32c81c7bf7d46 19-Jul-2012 Romain Guy <romainguy@google.com> Add a new method for text gamma correction

To select the gamma correction method, adb shell setprop hwui.text_gamma_correction
with one of the following values:

lookup3
lookup
shader3
shader

See Properties.h for more information about these different methods.
You can also control gamma correction using the following properties:

hwui.text_gamma
hwui.text_gamma.black_threshold
hwui.text_gamma.white_threshold

Change-Id: I47970b804d2c590c37d3da5008db094241579e25
ebug.h
ammaFontRenderer.cpp
ammaFontRenderer.h
roperties.h
3409e728e22609b54de8b33d1e614ca51f6d6a77 18-Jul-2012 Romain Guy <romainguy@google.com> Correctly pre-clip paths when recording display lists
Bug #6836448
External bug: http://code.google.com/p/android/issues/detail?id=34946

DO NOT MERGE

DisplayListRenderer::drawPath was not invoking quickReject() properly,
passing x,y,width,height instead of left,top,right,bottom. A path
could thus get rejected when it should be drawn instead.

While working on this change I found a similar issue with another
drawing command, drawBitmapData().

Change-Id: I8306faf72db14d71b54ecb7de295c9a6957d9494
isplayListRenderer.cpp
95c21d0546e36ade3e0601394f5b625541836545 18-Jul-2012 Romain Guy <romainguy@google.com> Correctly pre-clip paths when recording display lists

External bug: http://code.google.com/p/android/issues/detail?id=34946

DisplayListRenderer::drawPath was not invoking quickReject() properly,
passing x,y,width,height instead of left,top,right,bottom. A path
could thus get rejected when it should be drawn instead.

While working on this change I found a similar issue with another
drawing command, drawBitmapData().

Change-Id: I56484e8c101768cde6a78625290872f7849dd5ee
isplayListRenderer.cpp
8a4ac610e1aaf04931ac1af54b146a7fc8e66114 18-Jul-2012 Romain Guy <romainguy@google.com> Don't clear the dirty clip flag if it's not applied
Bug #6833979

Change-Id: I0ea78b7f31a557a335de10d910d03b0520029080
ndroid.mk
aches.cpp
aches.h
ebug.h
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
4121063313ac0d6f69f6253cac821d0c1c122086 17-Jul-2012 Romain Guy <romainguy@google.com> Add shader-based text gamma correction

To enable it, the system property ro.hwui.text_gamma_shader must be
set to true. For testing, DEBUG_FONT_RENDERER_FORCE_SHADER_GAMMA
can be set to 1 in libhwui/Debug.h.

Change-Id: If345c6b71b67ecf1ef2e8847b71f30f3ef251a27
ebug.h
ammaFontRenderer.cpp
ammaFontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
rogram.h
rogramCache.cpp
157bd5749f40b0330fccf3ef159d922742103ef2 17-Jul-2012 Romain Guy <romainguy@google.com> Add makefile flags for perf

Change-Id: Ibcb6e1c883551273c3392cdaa40cd0b71a3bfa70
ndroid.mk
be6f9dc1e71b425b7ac1c40c0a2c72d03eb9fbee 16-Jul-2012 Romain Guy <romainguy@google.com> Don't copy paints for 9patches

Change-Id: I863100a0dc53fec1a3a1b2acbdeb76e6049ffe58
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
b1d0a4ed21168fefcb82232c8f22cb95d60acb85 14-Jul-2012 Romain Guy <romainguy@google.com> Refactor GammaFontRenderer

This change is the first step to a shader-based text antialias
gamma correction.

Change-Id: I9eb02d4c56cb95d05219f712290c865b46141954
aches.cpp
aches.h
ontRenderer.cpp
ammaFontRenderer.cpp
ammaFontRenderer.h
penGLRenderer.cpp
roperties.h
c9cf9e5459c05f05b29ec81b0e83e154816f7595 14-Jul-2012 Romain Guy <romainguy@google.com> Merge "Improve rendering speed by disabling scissor tests"
586cae3ac69c0c667fbf8a954edbd399f620a717 14-Jul-2012 Romain Guy <romainguy@google.com> Improve rendering speed by disabling scissor tests

This change improves execution of display lists, particularly on
tiled renderers. The goal is to disable the scissor test as
often as possible. Drawing commands are rarely clipped by View
bounds so most of them can be drawn without doing a scissor test.

The speed improvements scale with the number of views and drawing
commands.

Change-Id: Ibd9b5e051a3e4300562463805acc4fd744ba6266
aches.cpp
aches.h
ayerRenderer.cpp
penGLRenderer.cpp
ect.h
0a386ffac026e259c408b77c2dd2cc5d2e22b5f8 13-Jul-2012 Romain Guy <romainguy@google.com> Text shadow alpha handling incorrect
DO NOT MERGE

External bug: http://code.google.com/p/android/issues/detail?id=34879
This is a regression from ICS.

This CL also fixes a bug where a View's alpha would be applied twice.

Change-Id: I13a1546228f44d4c169259414b6fa103a6e4a0fa
penGLRenderer.cpp
penGLRenderer.h
489041dd4192e594f2180ea7bff705894ab4031d 13-Jul-2012 Romain Guy <romainguy@google.com> Merge "Text shadow alpha handling incorrect"
9c0b188e4231bcb967234f3646c178d22d8a9f50 13-Jul-2012 Romain Guy <romainguy@google.com> Text shadow alpha handling incorrect

External bug: http://code.google.com/p/android/issues/detail?id=34879

This CL also fixes a bug where a View's alpha would be applied twice.

Change-Id: I13a1546228f44d4c169259414b6fa103a6e4a0fa
penGLRenderer.cpp
penGLRenderer.h
401b1f85746ab7005907747a59534def967d825b 13-Jul-2012 Romain Guy <romainguy@google.com> Merge "Remove obsolete optimization"
f877308f77f7c6f3edd91618a092207dd3be9077 13-Jul-2012 Romain Guy <romainguy@google.com> Remove obsolete optimization

Change-Id: I2d43c009c62a7f4a4a2e0a6303bdfa692c4b8c8c
penGLRenderer.cpp
rogram.h
roperties.h
f0af1d5cb255f136d2fff773be7518ffd7ae3b93 12-Jul-2012 Romain Guy <romainguy@google.com> Remove unused View.flushLayer() API

Change-Id: I5d4c7388afb5265964ab6b769cc0abfee9745c84
ayerRenderer.h
16c88085255c71a1a8fc034129aa2dcc61e1ddd0 12-Jun-2012 Romain Guy <romainguy@google.com> Textured text calls could be invisible
Bug #6597730

Text would sometimes not appear when rendered with textured content
(BitmapShader, LinearGradientShader, etc.) This was due to a misuse
of OpenGL texture unit in FontRenderer. Textured text normally uses
two texture units:
- texture unit 0 for the font cache
- texture unit 1 for the textured content (gradient, etc.)

Recent changes to the font renderer allow it to bind new textures
while processing the text's geometry (this happens when caches get
full or when switching font size for instance.) The bindings were
done without ensuring the texture unit was the correct one
(unit 0), thus replacing the content of another texture unit
(unit 1).

This lead to text being drawn using the font cache itself as the
content texture, making the text invisible.

Change-Id: I392b4c884f09223305f6cbc6253e2ef9a98944c9
ontRenderer.cpp
penGLRenderer.cpp
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
isplayListRenderer.cpp
isplayListRenderer.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
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
penGLRenderer.cpp
8857b2f76abad1e4ec742dfd85d0c997880be376 05-Jun-2012 Chris Craik <ccraik@google.com> Add more temporary logging for investigating detachFunctor

bug:6596807
Change-Id: Ic9e34e323b12a887f2e8df0773a6155627b6a64f
penGLRenderer.cpp
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
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
3534e13486a0081b1229e698f13bd3a37efa3fb0 23-May-2012 Chris Craik <ccraik@google.com> Merge "Avoid crash if onDetachedFromWindow called after destroy" into jb-dev
9e08012869f77f212186a5d5856831a85fb73d40 23-May-2012 Chris Craik <ccraik@google.com> Avoid crash if onDetachedFromWindow called after destroy

This also removes the temporary logging from commit
f8dafa14e058cdc2f408b59be7911abaceb73c47.

bug:6535911
Change-Id: Icf1d0438b349a0e92e7d9cefed57a252eed2b9b0
penGLRenderer.cpp
7a9328a3118725389564fe2a9b926837fa3d58a9 22-May-2012 Chris Craik <ccraik@google.com> Merge "Add temporary functor lifetime logging" into jb-dev
e5a4a3dc1648844f06d29efd42c9306c3cdf177e 22-May-2012 Romain Guy <romainguy@google.com> Merge "Ensure we always set the proper blending mode Bug #6527305" into jb-dev
f8dafa14e058cdc2f408b59be7911abaceb73c47 22-May-2012 Chris Craik <ccraik@google.com> Add temporary functor lifetime logging

bug:6535911

Change-Id: Ida5cc1def7fe1fc314317bbc5df50e1465753deb
penGLRenderer.cpp
ddf74373616c89e0880a28a2185fd7ce3db91de6 22-May-2012 Romain Guy <romainguy@google.com> Ensure we always set the proper blending mode
Bug #6527305

At the beginning of a frame, always set the blending mode that we
think GL is using just in case it was modified by another entity
(for instance a WebView functor.)

Change-Id: I0e1d0abee8a2abb2b8e7622aed28346e89562c06
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
c8538ade8df2c2f013f8b93094912057ee1cc417 22-May-2012 Chris Craik <ccraik@google.com> Don't clear the functor at every draw

instead clear functors at invoke time, and let them detach themselves as needed.

bug:6511995
Change-Id: I9115fcadffb27eb850c1d1773c098d3d2e22788b
penGLRenderer.cpp
f26c8be01bb218619e073a209c9d57fe9d26c517 18-May-2012 Romain Guy <romainguy@google.com> Sanitize display list properties

The comparisons used in the various properties setters could fail badly
in some specific conditions. The scale properties in particular did not
use the same comparisons.

This change also clamps alpha to the 0..1 range which avoids overflow
issues with lowp registers in GLSL computations.

Change-Id: I3e73b584e907a14e2c33d0865ca0d2d4d5bff31d
isplayListRenderer.h
penGLRenderer.h
tils/Compare.h
49c5fc0b9e850497233e189ff9dcc71a78ebe6e7 15-May-2012 Romain Guy <romainguy@google.com> Avoid unnecessary copy when invoking drawBitmap(int[])
Bug #6483390

Change-Id: I4d2d725ef50c9401b4bd998b6160128102b40745
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
esourceCache.cpp
e651cc6239616a202f6e96ebc2ed93b4b8b3627c 15-May-2012 Romain Guy <romainguy@google.com> Remove all Dalvik allocations from Cavnas.drawBitmap(int[], ...)

Change-Id: Ie28538a2104d21154fdc78a56525e7403f08287d
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
extureCache.cpp
extureCache.h
99a6ddd4cd8762654a575eb4ac3d0e5431d919b8 15-May-2012 Romain Guy <romainguy@google.com> Forget the name of a texture after freeing
Bug #6408362

FontRenderer allocates large font textures when more room is needed
to store all the glyphs used by an application. Thse large textures
are the first to be freed when memory needs to be reclaimed by the
system. When freeing a texture, the renderer would however not set
the texture name to an invalid name, leading future allocations to
be performed on the same texture name. That name could have by then
be recycled by the driver and returned by a call to glGenTexture
and used to create an entirely different texture. This would cause
the font renderer to point to the wrong texture, thus leading to
the "corruptions."

Change-Id: I8a1e80e5b79e8f21d1baf5320c090df4f2066cd4
ontRenderer.cpp
ontRenderer.h
9d9758ae30a59dcf594e0d26ba5d4ee153a3e44a 15-May-2012 Romain Guy <romainguy@google.com> Fix two memory leaks
Bug #6408362

Change-Id: I58543938e7b64d83504e11e97b0dd21ef8ebf3b6
ontRenderer.cpp
ontRenderer.h
ae91c4cbc79ea910753be65e2f1d7899abcb4da2 14-May-2012 Romain Guy <romainguy@google.com> Properly pre-cache latin glyphs
Bug #6408362

Change-Id: Ie11644c5a9e2d87d3b851b7e619e5f04b60a7e02
ontRenderer.cpp
ontRenderer.h
dfa1046ecab165eb0daf5caa8475e993350f4a2b 13-May-2012 Romain Guy <romainguy@google.com> Add call sites for OpenGL's debug label extension

Change-Id: I9c689127e8166cbef92c935f8aa07217ab806dda
aches.cpp
aches.h
xtensions.h
aa9972943cab627db9b10e5c9c4bb80f99f8a4bd 08-May-2012 Chris Craik <ccraik@google.com> Merge "Revert "Add temporary functor lifetime logging"" into jb-dev
12d434a9be03214e9c673580a6f55128eec9b3f9 08-May-2012 Chris Craik <ccraik@google.com> Revert "Add temporary functor lifetime logging"

bug:6445573

This reverts commit 2fe99801e81bb7c0ff846b536cbb7a12707410ed
penGLRenderer.cpp
4bbcae7eb80704d919d8115d523196798e208439 07-May-2012 Chet Haase <chet@google.com> Merge "Fix issue where scale-animating text would jump temporarily a few pixels" into jb-dev
d3efd6920e64d0207a0655640297d87d4937ee27 07-May-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.h
atrix.cpp
d34dd71800d9a1077e58c3b7f2511c46848da417 03-May-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.cpp
isplayListRenderer.h
2fe99801e81bb7c0ff846b536cbb7a12707410ed 02-May-2012 Chris Craik <ccraik@google.com> Add temporary functor lifetime logging

bug:6405861

Note: revert once the above bug is verified fixed

Change-Id: Iae04ec6ffa73a2711f96e128d60011bcb5864b5c
penGLRenderer.cpp
6f9ad204cc529babeb3aa7c9a57cf00ed7188471 01-May-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.cpp
665a376d245d7bbfc43e3cfa651afc7448604afa 28-Apr-2012 Romain Guy <romainguy@google.com> Merge "Work-around for a Skia rasterization bug Bug #6411457" into jb-dev
fdd6fc1beb5076a630c7066b8b1731995636c09f 27-Apr-2012 Romain Guy <romainguy@google.com> 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
athCache.cpp
hapeCache.cpp
hapeCache.h
8bd12ea8001f72f4450e318e43c50dbc46b4869c 26-Apr-2012 Romain Guy <romainguy@google.com> Merge "Decode common GL error codes when logging frame error status" into jb-dev
a44a63ac5c29b2cc57df95ec495def8cdddd9c6f 26-Apr-2012 Romain Guy <romainguy@google.com> Decode common GL error codes when logging frame error status

Change-Id: I38b333eea53aef20340ce48dfcb0dd30a223f7a8
penGLRenderer.cpp
a75fbc3c76dfe6a1c678b66f83cef878e3f3cdf4 26-Apr-2012 John Reck <jreck@google.com> Merge "On new content, attach functor directly" into jb-dev
c189ef53220059acf2adedc92ac4ac7e6a993e6b 26-Apr-2012 Romain Guy <romainguy@google.com> Ensure we start every frame in the proper GL state
Bug #6345013, #6314960

Change-Id: I6985f7f233eb6a5f9223e9f4be3f323154b5dbf0
penGLRenderer.cpp
c2c9543c135ffc4e18c7db0e817112ac03e3e97a 26-Apr-2012 Chris Craik <ccraik@google.com> 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
penGLRenderer.cpp
3d745c03ace18ee59c539e1b7f1df13f22beb57d 24-Apr-2012 Romain Guy <romainguy@google.com> Fix the build before the bot yells at me.

Change-Id: Ice7fe02b684ad662262aae3cac7a48a835ebcad5
penGLRenderer.cpp
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
penGLRenderer.cpp
penGLRenderer.h
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
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
a23eed808a1ae4ec0d818c0a9238385e797fd056 13-Apr-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
7b6a75872bd2df96a23453d31c2e2e7fcc373554 11-Apr-2012 Chet Haase <chet@google.com> 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
penGLRenderer.cpp
65924a3e56c2e7ac863f8e25e9f9a58b9db7d513 06-Apr-2012 Chris Craik <ccraik@google.com> fix functor flag parsing, tweak process delay

Change-Id: I0a679cc33f92ff6fd2e33db9ad58b52622def012
penGLRenderer.cpp
fda531c9e4e49cfd962d3784b3501f6a1e64dc22 04-Apr-2012 Romain Guy <romainguy@google.com> Merge "Disable AA lines vertex attrib arrays after rendering"
7b63142d2f4bc32beacedcc761453b8aea1f3a86 04-Apr-2012 Romain Guy <romainguy@google.com> Disable AA lines vertex attrib arrays after rendering

Change-Id: I2f035e9d87f4f97bc1e37355c84570fd58df0374
penGLRenderer.cpp
penGLRenderer.h
8c8c2400923bd5b0ab1f52adc4f2232dbf690d91 04-Apr-2012 Romain Guy <romainguy@google.com> Merge "Optimize FBOs composition"
e0aa84b7dc087e999e20055dcc04cb6a48d5bd62 04-Apr-2012 Romain Guy <romainguy@google.com> Optimize FBOs composition

Change-Id: Ifc8eada8922509373c0e4c3b2ed75b6f08d098de
penGLRenderer.cpp
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
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
napshot.cpp
napshot.h
e2eaf6997d429249904f842092b075f3da92c5be 03-Apr-2012 Romain Guy <romainguy@google.com> Merge "Prevent crash when flushing the layers cache Bug #6258973"
5c88fc744db977ef26887df9605beaa409394806 03-Apr-2012 Romain Guy <romainguy@google.com> 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
ayerCache.cpp
ayerRenderer.cpp
penGLRenderer.cpp
b6a80077dca5a17f33350075485a534d7ed8fa2b 03-Apr-2012 Chris Craik <ccraik@google.com> Merge "Allow fine-grained control over functors execution"
8d56b0e1d24f7392314df4be6503af395a843696 03-Apr-2012 Chet Haase <chet@google.com> Enabling DisplayList properties

An earlier commit fixed problems with enabling DisplayList properties.
This CL actually enables the properties.

Change-Id: I5c41d0c64e9241822af53eb367de0fed7d9608e0
isplayListRenderer.h
9420abd56a2af7ddbeb70562b79d61b2dca8c5a1 30-Mar-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.cpp
isplayListRenderer.h
8f3b8e32993d190a26c70c839a63d8ce4c3b16d9 28-Mar-2012 Romain Guy <romainguy@google.com> Allow fine-grained control over functors execution

Adds non-drawing execution mode

Change-Id: I82f92cf1b9a3b9ff2ca6d7427c4e02b73e04e6bf
penGLRenderer.cpp
penGLRenderer.h
76240dafe8654cc3b858241e76618e5b2db5451c 29-Mar-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.h
b85967b9af76e1e60f7a96603e2567a6449d2e04 26-Mar-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
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
isplayListRenderer.cpp
isplayListRenderer.h
ontRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
a9dd820184ee4d083bd9b2af735dcf50b78fc6cd 26-Mar-2012 Romain Guy <romainguy@google.com> Prevent random crashes on SGX architecture
Bug #6219894

Change-Id: If77f29da03e557a50e53bae505e1c638a1dbe2cc
ontRenderer.cpp
ad13c81371cb0b7e49b4c33159a346ce08ac5d69 22-Mar-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.h
b0317984d34da99b614597ad0a8b39268eacb783 21-Mar-2012 Romain Guy <romainguy@google.com> 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
ontRenderer.cpp
bdd896c26453ffc56831b0cd167e8780068cee53 19-Mar-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.h
4bf8b209955e8a35ec2e4101ed3612e03ecc5dbb 16-Mar-2012 Chet Haase <chet@google.com> Merge "Optimizing DisplayList properties"
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
isplayListRenderer.cpp
acdd4b9c4b03bc6660274ab878731383adb5bca5 15-Mar-2012 Romain Guy <romainguy@google.com> Set the default text length to -1, not 1

Change-Id: Iccf6f8366c0b659ba7c90df99ae05ebc5d81fcbb
isplayListRenderer.h
390f882f8905e8d1ac0d4b7f2e01aa04dccc3c16 14-Mar-2012 Romain Guy <romainguy@google.com> 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
isplayListRenderer.cpp
isplayListRenderer.h
491189f6bb81827a0c8e343f89420a9bcd2e62ae 13-Mar-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.cpp
3c9d9c18b41d052c76bad10a448d3acce024649b 13-Mar-2012 Romain Guy <romainguy@google.com> Merge "Follow the include style used elsewhere in the library"
d5a85fb63d91a9297e8d9a11016f3b3ed60dfbab 13-Mar-2012 Romain Guy <romainguy@google.com> Follow the include style used elsewhere in the library

Change-Id: I14aebdaeb04b6f4c611153ece4ac1f6ad9bfc15f
isplayListRenderer.cpp
866ed817d0adf5b874eff277b4a4d2bcc6f61830 13-Mar-2012 Chet Haase <chet@google.com> Fix garbage deref in DisplayList structures

Issue #6158892: Device runtime restarts frequently

Change-Id: I4e6afaaf9ac66d6846caf0ed82ea67163d8b15c2
isplayListRenderer.cpp
a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3 21-Feb-2012 Chet Haase <chet@google.com> 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
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
3fe4eb9c60d39acaadd9f807b1a21c239d1270ef 12-Mar-2012 Romain Guy <romainguy@google.com> 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
isplayListRenderer.cpp
55fd2c9b2e87986b03cb58676bdf46bc6d5f1c36 10-Mar-2012 Romain Guy <romainguy@google.com> Don't bind data to missing uniforms

Change-Id: Ib9d1f14eb0bef04e0910baa4eaf3e49cce81c0ce
penGLRenderer.cpp
6d159451bbb5f568c4c3ae3a9e010a9512a106d5 06-Mar-2012 Derek Sollenberger <djsollen@google.com> Merge "Add missing includes for Mutex.h"
029f64303b8fe506ef34c12777da86b830d3bf7a 05-Mar-2012 Derek Sollenberger <djsollen@google.com> Add missing includes for Mutex.h

The missing header was being transitively included through a
Skia header which is being removed.

Change-Id: I5a65bae076027951fe07d1e7eecd4732124fb0e4
radientCache.h
extureCache.h
bb0acdf9e1d862a7cf0e2533321fc1105c29b5e3 05-Mar-2012 Romain Guy <romainguy@google.com> Delete display list objects and resources on the UI thread
Bug #6073717
Bug #6065504
Bug #6026515
Bug #5971725

Prior to this patch, the destructor of DisplayList would always run
on the finalizer thread. This could cause a race condition if the UI
thread was busy rendering display lists at the same time leading to
various random native crashes.

Change-Id: Ie11108e3b1538d4b358a1a8b4cce1b2d33152d0c
aches.cpp
aches.h
isplayListRenderer.cpp
isplayListRenderer.h
fb9c41c2060497a459d16c30122e1d082895e5d1 05-Mar-2012 Romain Guy <romainguy@google.com> Merge "Deferred layer updates"
2bf68f063b0077ddef6ebfe54f2ae5e063c2c229 02-Mar-2012 Romain Guy <romainguy@google.com> Deferred layer updates

Change-Id: I83d9e564fe274db658dcee9e0cc5bbf9223ebb49
ayer.h
penGLRenderer.cpp
ad1daaa87b793af30f3dd67a0f3cd5c0fd6ac0c1 02-Mar-2012 Romain Guy <romainguy@google.com> Remove stray log

Change-Id: I0c1979aab395098651c8a63d0bae0198ebc3746b
isplayListRenderer.cpp
isplayListRenderer.h
dd7c8e4c68205d39109d4317dd0c9b05ed43e8e5 01-Mar-2012 Romain Guy <romainguy@google.com> Small tweak to Canvas.drawPath() GL implementation

Change-Id: I1d668a912996e1267bcf2127058888e489a2d9b3
ontRenderer.cpp
penGLRenderer.cpp
9777173eb6c9eb97c7921c8288ebc65e3ab3ce6f 29-Feb-2012 Romain Guy <romainguy@google.com> Full implementation of Canvas.drawPath()

Change-Id: I23223b89770a0cd2b4762365bead9bfddb094290
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
03d58520c3eb6bb7efb7235bfd957550533d6725 25-Feb-2012 Romain Guy <romainguy@google.com> More infrastructure for Canvas.drawTextOnPath

Change-Id: Iff42b24e342650d06fa4e2fa9db6c28da820ff01
penGLRenderer.cpp
325740fb444af8fc7fb0119b2e30ce322c2ae134 25-Feb-2012 Romain Guy <romainguy@google.com> Add hooks to implement Canvas.drawTextOnPath() in GL

Change-Id: I165c9e05facf5365aa6850605688e538640c7fcc
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
4bcb7467a174ed03a67b0c62950c555813ddf00d 24-Feb-2012 Romain Guy <romainguy@google.com> Only recreate path textures when necessary

When a drawPath command is recorded in a display list, a copy of the
source path is made to preserve against possible modifications of the
said source path. Copies are discarded when a display list is cleared,
which usually happens on invalidate(). This means that even if a path
is never modified, the texture generated to draw it on screen is
destroyed every time an invalidate() is issued. This change fixes this
problem by introducing a reference to the source path in the copy.
If both the copy and the source path have the same genID, they are
the same path and can share the same texture.

Change-Id: I34849311c183e06336a1391d2d1568a087f973f6
isplayListRenderer.h
athCache.cpp
9c10ab03cd6a35fca9eec617b9bd444d13544b99 22-Feb-2012 Romain Guy <romainguy@google.com> Reduce logs

Change-Id: I2768972ec62f4d3ad800a4d7a4c44307a2fa0105
ebug.h
96ebc6b5097ab73eef45e094241e444f4c21bfcc 22-Feb-2012 Romain Guy <romainguy@google.com> Only copy paths, paints and shaders when we need to.

Change-Id: Iba7a9c92c865f698821b6ff7bc4f502659642ac1
isplayListRenderer.h
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
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
athCache.cpp
hapeCache.h
21c9c8551d9ab36629cabc01f228d3a302e0c673 08-Feb-2012 Romain Guy <romainguy@google.com> Fix the system

Change-Id: Ie097ea5d6c0af9c5929b8c5deb76b4824d5de787
napshot.cpp
967e2bf3ac8943a8e8a374bf86021915445cda67 08-Feb-2012 Romain Guy <romainguy@google.com> Preliminary support for clipRect(Rect, Op)

This adds basic support for clip regions. It is currently disabled at compile
time. Enabling clip regions will require setting up a stencil buffer.

Change-Id: I638616a972276e38737f8ac0633692c3845eaa74
napshot.cpp
napshot.h
ada4d53d50dc869b8278573ad640dc44118d3bcf 03-Feb-2012 Romain Guy <romainguy@google.com> Separate interface definition and implementation of Snapshot

The Snapshot class is getting complicated enough that its implementation
should now live in a separate .cpp file. This will become particularly
useful when support for clip regions and paths will be added later on.

Change-Id: I050fac5683a9f7a0ff2f7a6beec3dd28aa5eb0d8
ndroid.mk
roperties.h
napshot.cpp
napshot.h
b629490ffb21752750cc081827ca4c1eae1eb015 03-Feb-2012 Romain Guy <romainguy@google.com> Disable debugging code in the font renderer

Change-Id: I92463057ff4ae712bb25789db1667ff1ecfd389f
ebug.h
ontRenderer.cpp
211370fd943cf26905001b38b8b1791851b26adc 02-Feb-2012 Romain Guy <romainguy@google.com> Add optional metadata to initiliaze the render threat.

The render threat is likely to break your application if you initiate it.
As such it must be explicitely requested using the following meta-data
tag in your manifest's application tag:

<meta-data android:name="android.graphics.renderThread" android:value="true" />

Change-Id: Ibf0a48af2a0d091562bf6907eac970e3d1d601c4
penGLRenderer.cpp
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
aches.cpp
aches.h
isplayListRenderer.cpp
isplayListRenderer.h
xtensions.h
penGLRenderer.cpp
penGLRenderer.h
530041d3191ce817832a0108514617768e43cda6 26-Jan-2012 Romain Guy <romainguy@google.com> Add stencil buffer to the EGL config

Change-Id: If76c0cd6127534d90f9526b75c0f8e56259c6722
penGLRenderer.cpp
penGLRenderer.h
roperties.h
5ff9df658230d49e42c43586997a02d8e4dd417e 24-Jan-2012 Romain Guy <romainguy@google.com> Add full support for Canvas.setDrawFilter()

Change-Id: I0ad35d0603c4eeda469014803be14c1dcdde918c
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
22d418437e44587cb0fba4353515719453269189 20-Jan-2012 Romain Guy <romainguy@google.com> Fix the build, for real

Change-Id: I6263f7e5e3ae2f7efe045f8b464c0ed1b87fc793
isplayListRenderer.h
671d6cf460531825a321edb200523d0faa7792c9 18-Jan-2012 Romain Guy <romainguy@google.com> Full support for Canvas.drawPosText

This also introduces a small optimization when rendering text.

Change-Id: Iff620ac97bf878eaac406bccc6daa07052c93890
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
eb9a5367e8f0e970db8509ffb2584f5376bc62ed 18-Jan-2012 Romain Guy <romainguy@google.com> First pass at implementing Canvas.drawPosText() in GL

Change-Id: Ia3ac347e95d57eb86c63045156c8dbc0572b03cb
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
3762c311729fe9f3af085c14c5c1fb471d994c03 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
ontRenderer.cpp
radientCache.cpp
penGLRenderer.cpp
rogram.cpp
hapeCache.h
extureCache.cpp
8564c8da817a845353d213acd8636b76f567b234 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
aches.cpp
ayerRenderer.cpp
hapeCache.h
extureCache.cpp
d4a69b4a1cb5b52035345abd8cb9595ae4cf9fa5 06-Jan-2012 Fabrice Di Meglio <fdimeglio@google.com> Merge "Fix bug #5753006 Garbled Labels in Maps"
c511bee87cda99a252d1a62487f47c8f05aee78c 05-Jan-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5753006 Garbled Labels in Maps

- it was a regression introduced into this CL: https://android-git.corp.google.com/g/#/c/154240/5
- basically needed to set the GlyphID encoding to the Skia Paint as we are now using glyphID resulting
from the Harfbuzz shaping
- also define GlyphID encoding as the default on the Paint class

Change-Id: Idb7c2c57ac67595425ce3be9421258962690fcdd
isplayListRenderer.cpp
5baa3a62a97544669fba6d65a11c07f252e654dd 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
aches.cpp
ebug.h
isplayListRenderer.cpp
isplayListRenderer.h
xtensions.h
ayerCache.h
ayerRenderer.cpp
ayerRenderer.h
atrix.cpp
penGLRenderer.cpp
atchCache.h
rogram.h
rogramCache.h
ect.h
esourceCache.cpp
hapeCache.h
extDropShadowCache.cpp
extureCache.cpp
extureCache.h
ector.h
82bc7a772747fcf8a6fe7097f70bf2981429ffe9 03-Jan-2012 Romain Guy <romainguy@google.com> Properly restore the GL scissor after a GL draw functor
Bug #5781254

Change-Id: I1dc4809563a793b6b579814951d4d73b4c34bf32
aches.cpp
aches.h
penGLRenderer.cpp
9a8245629d69d81e0b62e52970feaf9c02580e75 17-Dec-2011 Chet Haase <chet@google.com> De-allocate caches for large glyphs when trimming memory

Currently, font renderers eliminate some texture caches when
memory is trimmed. This change makes it go further by eliminating the
large-glyph caches for all font renderers. These caches are
only allocated as needed, but continue to consume large amounts of
memory (CPU and GPU) after that allocation. De-allocating this memory
on a trim operation should prevent background apps from holding onto
this memory in the possible case that they have allocated it by drawing
large glyphs.

Change-Id: Id7a3ab49b244e036b442d87252fb40aeca8fdb26
ontRenderer.cpp
ontRenderer.h
ammaFontRenderer.cpp
0904c203c4c56e43f723522351b7a3bc304196ef 16-Dec-2011 Chet Haase <chet@google.com> Merge "Fix issues from recent glyph caching change"
2a47c14e2a6f152496b43104bc785c488583fd59 15-Dec-2011 Chet Haase <chet@google.com> Fix issues from recent glyph caching change

There were 2 issues remaining after a recent change to support
glyph caching from multiple textures:
- memory in the GPU for all textures was being allocated automatically.
This is now lazy, being allocated only when those textures are first
needed.
- filtering (applied when a rendered object is transformed) was ignoring
the new multiple-texture structure. Filtering should be applied correctly
whenever we change textures.

Change-Id: I5c8eb8d46c73cd01782a353fc79b11cacc2146ab
ontRenderer.cpp
ontRenderer.h
8f85e80b64b89fd38cc23b129f61ec36ddde7f15 15-Dec-2011 Romain Guy <romainguy@google.com> Generate even fewer GL commands

Change-Id: I0f4dcacb03ef5ee7f6ebd501df98bfead5f0a7f8
aches.cpp
aches.h
penGLRenderer.cpp
ect.h
2d4fd364843d3efc6e6ee59ccc5beb513a86d789 14-Dec-2011 Romain Guy <romainguy@google.com> Reduce the number of active texture changes

Change-Id: I94046bdfe20740c26c8183822e3002d692fde7c4
ontRenderer.cpp
penGLRenderer.cpp
rogram.cpp
rogram.h
ec31f83bd3af1f900d1ee9116b15f56904c66dcd 14-Dec-2011 Romain Guy <romainguy@google.com> <Insert something improper about OpenGL>

Change-Id: Ib645376093838156771588adc76a718da0ceb0db
aches.cpp
ect.h
a1d3c91afbd52c7e8b01f4a9060c5459f02ae7a5 13-Dec-2011 Romain Guy <romainguy@google.com> Further reduce the number of GL commands sent to the driver

Change-Id: Id922b2a166ea4573b767c27d3195e11c70320b23
aches.cpp
aches.h
ayerCache.cpp
ayerRenderer.cpp
penGLRenderer.cpp
ect.h
kiaShader.cpp
e829bc0f0364e942bed01536d115a5c08d25d776 13-Dec-2011 Chet Haase <chet@google.com> Merge "Make glyph cache more flexible"
7de0cb12d0e5fd64811da0b5d1ae0c0d58b86f86 06-Dec-2011 Chet Haase <chet@google.com> Make glyph cache more flexible

Some GPU architectures could not handle the previous implementation
of our glyph cache. Frequent uploads would cause memory problems in the GPU
and eventually a crash due to these memory issues. The solution is to move to
a system of several, smaller caches instead of one monolythic cache for all
glyphs.

Change-Id: I0fc7a323360940d16d5a33eeb33abfab194c5920
ontRenderer.cpp
ontRenderer.h
ammaFontRenderer.h
15bc6437f8b4cf10dba55c7638d349e7b9563f4f 13-Dec-2011 Romain Guy <romainguy@google.com> Reduce the number of GL commands generated by the UI

This optimization along with the previous one lets us render an
application like Gmail using only 30% of the number of GL commands
previously required

Change-Id: Ifee63edaf495e04490b5abd5433bb9a07bc327a8
aches.cpp
aches.h
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
f3a910b423db7ad79cf61518bdd9278c048ad0d8 13-Dec-2011 Romain Guy <romainguy@google.com> Optimize state changes

Change-Id: Iae59bc8dfd6427d0967472462cc1994987092827
aches.cpp
aches.h
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
atch.cpp
rogram.cpp
rogram.h
rogramCache.cpp
rogramCache.h
d71dd367af604571c7d00ca473184a1b9240eca2 13-Dec-2011 Romain Guy <romainguy@google.com> Minimize the amount of data uploaded to draw text

Change-Id: I6313ac039291c9cd93aadafe3566ad9d60cab42d
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
39d252a6632d057d5077f7eaf1b8ed7a142f3397 13-Dec-2011 Romain Guy <romainguy@google.com> Various OpenGL optimizations

Change-Id: Ib0742c96f10f5f50e7e5148b742c31b6c232d127
radientCache.cpp
ayerCache.cpp
ayerRenderer.cpp
penGLRenderer.cpp
extDropShadowCache.cpp
exture.h
f44e66fcf70aa4a354deca72dfbd3b29c29302be 13-Dec-2011 Romain Guy <romainguy@google.com> Remove leftover debugging code

Change-Id: I1589af7991da36744071d5081daa24ebae5b4dfd
rogram.cpp
3e263fac8c9c0e0fb242186b514a7af8efb40961 13-Dec-2011 Romain Guy <romainguy@google.com> Keep shaders to render properly

I don't know who's to blame, SGX or Tegra2 but one of those two GPUs is not
following the OpenGL ES 2.0 spec.

Change-Id: I2624e0efbc9c57d571c55c8b440a5e43f08a54f2
ayerRenderer.cpp
penGLRenderer.cpp
rogram.cpp
rogram.h
6752d0ab029a185a42e34e7a933b669e6ed19e89 12-Dec-2011 Romain Guy <romainguy@google.com> Mark color uniform fetched after fetching it

Change-Id: I10e8027018608070a536eb8b51c7a4272e37006c
rogram.cpp
24edca8b526515979778e577191089a57f5277d7 09-Dec-2011 Romain Guy <romainguy@google.com> Code cleanup

Change-Id: If92e3addfc4d8546a60edcdea60a1fc89c27b680
rogram.cpp
rogramCache.h
roperties.h
05bbde70fd2a3af737656b9f8c5a25b56429632e 09-Dec-2011 Romain Guy <romainguy@google.com> Free up resources by deleting shaders early on

Change-Id: I29a39775732c0a48d3e6823f7afa3e741cae8541
rogram.cpp
rogram.h
roperties.h
9c4b79af221b53f602f946faa9ff317a596a0c39 11-Nov-2011 Romain Guy <romainguy@google.com> Discard framebuffer rendering queues when discarding layers
Bug #5581817

Change-Id: Ie30700a29059d2ea60eb7bd3f8bd20ac48a149ab
ndroid.mk
xtensions.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
8f9a9f61ab793d9387a5942b307e74324704893b 05-Dec-2011 Romain Guy <romainguy@google.com> Clip text correctly
Bug #5706056

A newly introduced optimization relied on the display list renderer
to properly measure text to perform fast clipping. The paint used
to measure text needs to have AA and glyph id encoding set to return
the correct results. Unfortunately these properties were set by
the GL renderer and not by the display list renderer. This change
simply sets the properties in the display list renderer instead.

This change also improves the error message printed out when the
application attempts to use a bitmap larger than the max texture
size.

Change-Id: I4d84e1c7d194aed9ad476f69434eaa2c8f3836a8
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
hapeCache.h
extureCache.cpp
cac5fd3e09e9dc918753d4aff624bf29a367ade3 02-Dec-2011 Romain Guy <romainguy@google.com> Faster text clipping

Change-Id: I03a00c4261d81a416b1ad7b86ce2d432c71908b4
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
d21b6e1fe337b35f62cf2028e9bd0637fd009a75 01-Dec-2011 Romain Guy <romainguy@google.com> Optimize away unnecessary state changes

Change-Id: I0f6816f9f6234853575ecee5033186ad19e76380
ayer.h
ayerRenderer.cpp
penGLRenderer.cpp
hapeCache.h
kiaShader.cpp
exture.h
extureCache.cpp
cb52d6760078197cd6d0c16349348dd2ad16a88c 29-Nov-2011 Romain Guy <romainguy@google.com> am 02e88f23: am 46685db9: Merge "Fix crash in existing applications Bug #5659476" into ics-mr1

* commit '02e88f23a65c602e83d7a46c0925e653b948e418':
Fix crash in existing applications Bug #5659476
46685db957cc01cef4ba198aafe44d99fe31f62c 29-Nov-2011 Romain Guy <romainguy@google.com> Merge "Fix crash in existing applications Bug #5659476" into ics-mr1
d3ea6b40bb8f0fbc2a877963db1ab4fa0fc02b2f 29-Nov-2011 Chet Haase <chet@google.com> am 38928899: am 8990cb57: Merge "Fix flashing wifi dialog after rotating back from landscape." into ics-mr1

* commit '3892889952b0ad3fa0b095c96d8ae2ae110585e2':
Fix flashing wifi dialog after rotating back from landscape.
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
penGLRenderer.cpp
ff98fa5a847f66e591287154c634ef7895a9549c 28-Nov-2011 Romain Guy <romainguy@google.com> Fix crash in existing applications
Bug #5659476

The FontRenderer was not cleaning up its temporary state, leading
to crashes when invoking renderDropShadow.

Change-Id: I43b24820dd5625af8c080bbe11b64de2f74164b2
ontRenderer.cpp
c28e574037b2bfc8c2ea24593299aa20ae9078f8 22-Nov-2011 Romain Guy <romainguy@google.com> am a2fabf4a: am 303a0695: Merge "Draw in the correct FBO after invoking a GL functor Bug #5650514" into ics-mr1

* commit 'a2fabf4a109d46f99ff7370aa05e48c1708c2838':
Draw in the correct FBO after invoking a GL functor Bug #5650514
421458aad764cd9d1403d2540ab979b336b02341 22-Nov-2011 Romain Guy <romainguy@google.com> Draw in the correct FBO after invoking a GL functor
Bug #5650514

After invoking a GL functor, libhwui restores a few OpenGL states
including the current FBO. The renderer was however making the
wrong assumption that the FBO to restore to was the base layer
instead of the FBO associated with the current canvas state.

Change-Id: Ie565500832ebffd673f6a43b83422d6cc05470a0
penGLRenderer.cpp
napshot.h
7077506f9945b87b02bdd47ffce75a5b813c821c 14-Nov-2011 Dave Burke <daveburke@google.com> Revert "Discard framebuffer rendering queues when discarding layers"

This reverts commit da96f8ac2c1c35a54f3f36e6d776cb386a251d03.
ndroid.mk
xtensions.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
d9e688cab3015d858110fb8240cf7378c6befd82 12-Nov-2011 Jeff Brown <jeffbrown@google.com> Clean up GenerationCache.

Use const references to keys and values where appropriate to avoid
copying them unnecessarily.

Deleted some dead code.

Simplified a few pieces that were doing unnecessary redundant work.

Change-Id: Ib2145b7094a40db2d679e05dafe050fe1e87b846
athCache.cpp
1333742bedc9b462024302f302e3a7f27053df66 11-Nov-2011 Akwasi Boateng <akwasi.boateng@ti.com> am cb0db030: Merge branch \'ics-mr1-plus-aosp\' of ssh://android-git:29418/platform/frameworks/base into ics-mr1-plus-aosp

* commit 'cb0db0306b5849a35d3d99eea1b34ce019c6f0d8':
Make the overridden ImageView#setVisibility remotable
Clamp non-monotonic stats instead of dropping.
DO NOT MERGE. Fix leak in LayoutTransition
Fix lastVisible/global rects
Fix Wimax-less build.
Fix leak in LayoutTransition
Deferring wallpaper update to improve workspace scrolling (issue 5506959)
Terminate EGL when an app goes in the background
boot animation is dithered and scaled
Fix NdefRecord byte-stream constructor.
PopupWindow dismiss() can get into a recursive loop.
Fold WiMAX state into the mobile RSSI.
Remove dedicated wimax icon to fix RSSI layout.
da96f8ac2c1c35a54f3f36e6d776cb386a251d03 11-Nov-2011 Romain Guy <romainguy@google.com> Discard framebuffer rendering queues when discarding layers
Bug #5581817

Change-Id: If612846ec5f7793710fc4df152791fb32c506551
ndroid.mk
xtensions.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
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
aches.cpp
aches.h
9039e43ab1edac9e81f1308a7f3380cff4e9fa27 05-Nov-2011 Romain Guy <romainguy@google.com> am 2ccc47b8: Merge "Memory optimizations for libhwui Bug #5566149" into ics-mr1

* commit '2ccc47b89868d4f39683e0e2bd057ce95d7d1217':
Memory optimizations for libhwui Bug #5566149
eca0ca2424afc1e98912405906edfc32f7733e16 04-Nov-2011 Romain Guy <romainguy@google.com> Memory optimizations for libhwui
Bug #5566149

Lazily initialize font renderers
Keep 60% of the texture cache when an app goes to the background
Delete least used font renderer when going to the background
Delete all font renderers on full memory trim

Change-Id: I3c2454d46dc1107ec0f0f72a9ce69cbbcc8825e7
aches.cpp
ammaFontRenderer.cpp
ammaFontRenderer.h
roperties.h
extureCache.cpp
extureCache.h
ef9bb3c3ea3aa08071ea0c32a505b379c322e5b5 17-Oct-2011 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #5438102 Double Arabic harakat overlap instead of stack In TextView

IMPORTANT: this change needs two patches for Harfbuzz:
- one concerning hb_utf16_script_run_prev() which was not returning the correct "previous" script
- one for the "script_properties" table that was missing Arabic code point ranges and declaring
HB_Script_Inherited instead of HB_Script_Arabic

The current change is doing the following:
- pass the correct typeface for Harbuzz shaping (depending on the script of the run)
- offset correctly the glyphIDs returned by Harfbuzz

We need to offset the glyphsID as Harfbuzz will return local glyphIDs (meaning in the
local range of the font used for shapping).

We then cannot use those glyphIDs when we are using a fallback Font (Arabic, Hebrews...)
because the FontRenderer needs glyphIDs in the range of all the Fonts (including the fallbacks)

Change-Id: I494897435bbc59293b02392ee2059cebcdf0e571
penGLRenderer.cpp
e707859415f4c8e1c01228dfaa58fb0a690d442e 28-Oct-2011 Romain Guy <romainguy@android.com> Load identity matrix when calling Canvas.setMatrix(null)
Bug #5446826

Change-Id: I3a7817f266b17e9abe948500816d629edd9a2822
penGLRenderer.cpp
5e7c469c7a3039af7696789a797f8d91a45227eb 21-Oct-2011 Romain Guy <romainguy@google.com> Make sure 9patches are not filtered when not necessary
Bug #5383406

Change-Id: I061c8069a4d9f4eaf45671283710b564639eeb32
atch.cpp
a62f172215727a1e00af0cb934904e00926a86c9 20-Oct-2011 Romain Guy <romainguy@google.com> Correctly dump DrawPatch operations in display lists

Change-Id: I8cd1c764ddc184ce45727913fa2a23a3d81b337e
isplayListRenderer.cpp
5cd5c3f7e4df99f47e3def6e3707b9eb8205aef3 18-Oct-2011 Romain Guy <romainguy@google.com> Return early when we cannot allocate a hardware layer
Bug #5462308

Change-Id: I52dab809662f6f42a49ca03edc50f6b98fc35a06
ayerRenderer.cpp
71e36aa7db69449e210d0791284cb810a7471c07 12-Oct-2011 Romain Guy <romainguy@google.com> Add missing public native API

Change-Id: Ie3bc706b2ac91d686a5b888e8ae841820e9d37c7
atrix.h
7953745dd565167113f8cbfc461bc0521d32d870 12-Oct-2011 Romain Guy <romainguy@google.com> Reduce the size of libhwui by 50%

This change removes unnessary symbols. All symbols are hidden by
default, public APIs with exported symbols are explicitly marked
with ANDROID_API.

Change-Id: I692fde432a86c12108de1cfd1f6504919a7d5f3f
ndroid.mk
aches.h
isplayListLogBuffer.h
isplayListRenderer.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.h
esourceCache.h
kiaColorFilter.h
kiaShader.h
a9dc86b21defc26db0d71f276aff5c3af0b62ff5 11-Oct-2011 Romain Guy <romainguy@google.com> Correctly apply transforms when getting a TextureView's bitmap
Bug #5439406

Change-Id: I271a9a2e38f5b3600dc158f8f442a6b0893f472b
ayerRenderer.cpp
5a6d3a4c0311318e6f1d4ee06aa47606e055a81b 08-Oct-2011 Romain Guy <romainguy@google.com> Stupid fixed point math.
Bug #5423215

Change-Id: I39379e1f8fb4d59de4ede6e4fe7cf7a2c7cc625a
ontRenderer.cpp
ed7a8fc768df158241819f062a12dafdaf8a628d 05-Oct-2011 Romain Guy <romainguy@google.com> Canvas.getClipBounds() was broken and unreliable with OpenGL ES 2.0

This bug was affecting several third party applications. The bug was
introduced by an optimization that prevented the local clip to be
recomputed when needed.

Change-Id: I7b5c464db21b5ff1a7274af75a3a64d0e9d84772
napshot.h
59c7f80dd20258cefa1fc4bdd3c9a709a8dd53b8 30-Sep-2011 Romain Guy <romainguy@google.com> TextureView works best when it draws stuff.
Bug #5391188

Change-Id: I5e754881ccb08ff288ebd60de77282c9cbcf3f86
extDropShadowCache.h
83b186a246e8ffd52b91a17c0019dd8c9c9d21b1 20-Sep-2011 Mathias Agopian <mathias@google.com> fix the float Rect in OpenGLRenderer to handle NANs

- we want functions like isEmpty() to return true if NANs are
involved in the Rect

- also clean-up the intersect familly of calls

- minor cleanup in the int32_t Rect as well

These played a role in http://b/5331198.

Bug: 5331198

Change-Id: I5369725ab482e4b83da9f1bd4cee5256e5de75b2
ect.h
13ede62fd77acdf158f7210043fe48644cb4a589 16-Sep-2011 Jeff Brown <jeffbrown@google.com> Make LTE_FLOAT a strict weak order.
Bug: 5327776

Currently LTE_FLOAT isn't even a valid partial order, let alone
a strict weak order as needed by binary search. Consequently,
KeyedVectors with keys whose types have operator< using LTE_FLOAT
sometimes find the wrong values!

This problem affects several graphics caches including the
TextLayoutCache.

(This is still not a total order because NaNs are not comparable
but hopefully we don't ever search for NaNs this way!)

Change-Id: Ic447a34c7d87f681ee81538f22a0937a039072dd
tils/Compare.h
2ffefd48e20d311b38c0673edadb27c1f6ad328b 09-Sep-2011 Romain Guy <romainguy@google.com> Add support for 3 new blend modes when blending with framebuffer:
Add
Multiply
Screen

Change-Id: I92a3c2612c86613087568bf0c03cc6f92b5ded44
penGLRenderer.cpp
8a3957d43bcae93fbb9f6b4b4c3de8abdb3c953c 08-Sep-2011 Romain Guy <romainguy@google.com> Add reminder in the code to fix T-junctions

Change-Id: I52b112694f930e641f01fb78dc55412986023411
ayerRenderer.cpp
penGLRenderer.cpp
799833a8b451a04be201d25ae72213e8562f7774 30-Aug-2011 Romain Guy <romainguy@google.com> Text would disappear when the font size is 75px.
Bug #5230196

Yes, 75px. Any other font size would work. Don't ask.

Change-Id: I96c7db9926a97f65128d60c8238c3640ee2444ba
ontRenderer.cpp
04c9d8c2ffd028c35c750bac0a4a7b79e48059b5 25-Aug-2011 Romain Guy <romainguy@google.com> Optimize display lists

Remove redundant or useless operations

Change-Id: If989b4eaa9143eef4254c38b39959aeed1f2b9ab
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
631582f7f7a3c879a5fba81f2bc082e4826758aa 24-Aug-2011 Romain Guy <romainguy@google.com> Enable linear filter when scaling bitmaps
Bug #5205673

Change-Id: I8b0f90877df6b6c6757d35dcf6cd14e79e840b96
penGLRenderer.cpp
6816972eb69ee8b294553dac92b3c1ad5b1ca1f7 23-Aug-2011 Romain Guy <romainguy@google.com> Don't use bilinear filtering on unscaled bitmaps
Bug #5198590

Change-Id: I4333d850501ac849eeeeb247e4178dd469b9de3d
penGLRenderer.cpp
28d8ff6dbcc1b137131c70b72b4dbd211db7fbd9 22-Aug-2011 Romain Guy <romainguy@google.com> Move constants to the correct header

Change-Id: Id4bd14f72487bd7156cd2e1930eaf97b47896273
ayerCache.cpp
ayerCache.h
roperties.h
302a9df1d50373c82923bb84ff665dfce584fb22 16-Aug-2011 Romain Guy <romainguy@google.com> Add an API to set the transform on a TextureView's surface texture.
Bug #5156689

Change-Id: I635a625885c9b832a60d44ece0de7613ceb84109
ayer.h
atrix.cpp
atrix.h
penGLRenderer.cpp
e5df231434357424cea8d2b8d0cdf31253a98110 12-Aug-2011 Romain Guy <romainguy@google.com> Make sure we correctly copy caches keys.
Bug #5136067

Change-Id: I366e840bef44415436dc7b13d89cfb610feed663
radientCache.h
ayerCache.h
atchCache.h
athCache.h
hapeCache.h
9d865512f1a39bac6bed612b24023213d5a1fb1d 12-Aug-2011 Romain Guy <romainguy@google.com> Remove unnecessary private API

Change-Id: I2ecb367528ec0691c07153a3d163b82a6ca33fdf
penGLRenderer.cpp
penGLRenderer.h
4974bc1be68a77cf9709a8c50ef6de06ce8a3a0d 08-Aug-2011 Romain Guy <romainguy@google.com> Prevent crash when purging the gradients cache.
Bug #5133876

Change-Id: I3d1fa4e29498044796d725337ac93e6a1e8f0bcb
radientCache.h
bd496bc3d481f9cfc39007d22372d3a1a8809f96 03-Aug-2011 Romain Guy <romainguy@google.com> Paint style and stroke width affect text rendering.
Bug #5112207

Change-Id: Ic34037ace21a5058ba23dd15e51aae58c998454d
ontRenderer.cpp
ontRenderer.h
6203f6c8147069976342be8f42add797a50f9557 02-Aug-2011 Romain Guy <romainguy@google.com> Reduce the amount of data cached by the gradients cache.

Change-Id: I8546f5a5ecf38031c9a40bdcc434d4c7f22da63d
aches.cpp
radientCache.cpp
radientCache.h
esourceCache.cpp
kiaShader.cpp
a60c3889718f4513a6c9d8b80f655db5d6346905 02-Aug-2011 Romain Guy <romainguy@google.com> Use high precision iterators on specific GPUs
Bug #5098359

Change-Id: I52ee8c7b4c9e8d4c7bedb684eaf7bef6c44c74b9
ebug.h
xtensions.h
rogramCache.cpp
b50149825fae95b2918bcf67b2ddb773b9797068 29-Jul-2011 Romain Guy <romainguy@google.com> Correctly apply linear filter to drawBitmap(Rect, Rect)

Change-Id: I1049282e1996b1020c92cb7bec46e9f28e94e967
penGLRenderer.cpp
kiaShader.cpp
65b345fa22b878e141b8fd8ece9c208df00fa40f 28-Jul-2011 Romain Guy <romainguy@google.com> Reclaim more memory, more often.

Yay.

Change-Id: I04557ad575c307a55088549f48f0e9ad994b7275
isplayListRenderer.cpp
isplayListRenderer.h
ayerCache.cpp
ayerRenderer.cpp
roperties.h
6d7475d666baefaa3ba9f0dcee25238739454241 28-Jul-2011 Romain Guy <romainguy@google.com> Destroy layers and flush layers cache when a window is destroyed.

Change-Id: I3fa1bc3ff50fb99e3d2e490925bd6b0a0f809fff
aches.cpp
aches.h
isplayListRenderer.h
eea60692b060737faeaa02bb30f5b79e2202b482 27-Jul-2011 Romain Guy <romainguy@google.com> Improve layers debugging

Change-Id: Ia4950dd5f0e0a224ecb69c581d33aa4f32260a7c
ayerCache.cpp
ayerCache.h
ayerRenderer.cpp
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
ayer.h
ayerCache.cpp
extureCache.cpp
e3c26851dc315b730ea0fe5ef35bb1db81f6d675 26-Jul-2011 Romain Guy <romainguy@google.com> Improve rendering performance on some GPUs

This change sets textures filtering to GL_NEAREST by default. GL_LINEAR
filtering is only used when textures are transformed with a scale or
a rotation. This helps save a couple of fps on some GPUs.

Change-Id: I1efaa452c2c79905f00238e54d886a37203a2ac1
radientCache.cpp
ayer.h
ayerCache.cpp
penGLRenderer.cpp
penGLRenderer.h
hapeCache.h
kiaShader.cpp
extDropShadowCache.cpp
exture.h
extureCache.cpp
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
isplayListRenderer.cpp
isplayListRenderer.h
f2fc460a9512500d9d5749fbaada88903d8e3b22 20-Jul-2011 Romain Guy <romainguy@google.com> Reduce the fade area to save bandwidth.

Change-Id: I8ccea17fc1fb3c132329baa0acc1b3d5a140a5c6
penGLRenderer.cpp
bdf7609867a3f886455c51dba91623a86cceb6e2 19-Jul-2011 Romain Guy <romainguy@google.com> Trim OpenGLRenderer's memory usage whenever possible

Change-Id: I9225077184f374b1a43300add15cc1d5b6869d1c
aches.cpp
aches.h
ebug.h
042f7d64b5ccd7b5b73e7e9814a84576f04fb7d4 13-Jul-2011 Kenny Root <kroot@google.com> Fix debugging for hwui caches

Debugging code attempted to delete a stack item.

Also, the flag fields weren't exactly clear, so rewrite it so it's
clear that kDebugMoreCaches is a combined flag.

Change-Id: If42b7f0f754919343301da5656aee5943cc9bd4a
aches.cpp
roperties.h
40c4b86b72d416585335940f928124426d715e59 09-Jul-2011 Romain Guy <romainguy@google.com> Align paths on pixel boundaries when rasterizing in bitmaps.
Bug #5003739

Change-Id: I3dfbf4eb92e2c870f33c96947a7d6439e3730965
hapeCache.h
b2479153b743df9e54f7e17c7132a5ecd87fa453 08-Jul-2011 Romain Guy <romainguy@google.com> Correctly position layers.

Change-Id: I1678b1c5bdab140b44e56556c50ab8329255f18a
penGLRenderer.cpp
ec19b4a764d512091a780fc93ced567dfbf80914 08-Jul-2011 Romain Guy <romainguy@google.com> Use NEAREST filtering mode for TextureView.getBitmap().

Change-Id: I4649062bbdf18ebba7924bdf578f39ad8f6576ac
ayerRenderer.cpp
penGLRenderer.cpp
9ace8f5e79e76893fe4ca9e4d10f6c4056330485 08-Jul-2011 Romain Guy <romainguy@google.com> Use NEAREST filtering for layers whenever possible.

Change-Id: Id5bee1bd4a322cf93e8000b08e18f1e1b058648e
ayer.h
ayerCache.cpp
ayerCache.h
ayerRenderer.cpp
penGLRenderer.cpp
exture.h
9ff3cb57ee46ac5242a7d8f08e0c66189fda2e66 28-Jun-2011 Romain Guy <romainguy@google.com> Fix parameter order evaluation issue.

This problem was affecting Android builds with gcc/x86.

Change-Id: Ibb7978413c89bd1ac09f0d1ea78f5cb4fe61f6ed
isplayListRenderer.cpp
4a5a71518a71a44dbccb3af9a08b82056ea748b3 25-Jun-2011 Romain Guy <romainguy@google.com> Don't set texture parameters on every frame.

Change-Id: Iec368405ad6a4ccfd569a0b3b4d681871a770396
ayerRenderer.cpp
80429c458506485904715180d10584092a5cd082 25-Jun-2011 Romain Guy <romainguy@google.com> Properly tear down TextureView

Change-Id: Ic23cd9257889d0abe8cc3fc1d04a66d0505e383e
ayerRenderer.cpp
02ccac69fd1c0a03c24c5f3ace0ad4bed337b1fd 24-Jun-2011 Romain Guy <romainguy@google.com> Code cleanup

Change-Id: I64c346004e0adf9a776d0315534d4fe445f0c0ca
aches.cpp
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
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
d586ad9c9fec80aa1d24d6b53cd2c8d5b47fe868 23-Jun-2011 Romain Guy <romainguy@google.com> Fix another memory leak in OpenGLRenderer

Change-Id: I23ed56891452a05cf3ca13f6919c4fef90d5ff4e
isplayListRenderer.cpp
isplayListRenderer.h
esourceCache.cpp
kiaColorFilter.h
f6a63ae3a7004a8eca87fca5a66cfb6aef4e86b5 23-Jun-2011 Romain Guy <romainguy@google.com> Fix memory leak in OpenGLRenderer.

When creating a display list, matrices are duplicated locally. They
were however never deleted, thus causing apps to slowly leak memory
(a matrix is about 40 bytes.)

Change-Id: Iac465b720d4c4c9b5ca3fce870c0c912c14a74ab
isplayListRenderer.h
d6b2a00dd43257d1498b09175bff63663f6cb861 18-Jun-2011 Romain Guy <romainguy@google.com> Add error checking to LayerRenderer::copyLayer

This method is invoked by TextureView.getBitmap() and failures must be
caught to avoid leaving the GL context in a potentially bad state.

Change-Id: I620de395ba1bc20154de58c81963223dc55cac78
aches.h
ayerRenderer.cpp
penGLRenderer.cpp
98029c825b9234e6b90721d910cc180885fcab1d 18-Jun-2011 Romain Guy <romainguy@google.com> Fix rendering issue with paths when the stroke width is 0

Change-Id: I5d8ac23dc69e9e17df4ef6b5195186b5207e2524
hapeCache.h
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
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.h
54be1cdf3d63095512120fa7ced5c16e462abffa 14-Jun-2011 Romain Guy <romainguy@google.com> Batch glCopyTexImage() calls to get about 15 fps back on SGX.

Change-Id: I04079e070739c1e46df3e90fc388c335e2a7d2b9
penGLRenderer.cpp
penGLRenderer.h
181d0a6ccedee03789919d53c46540a8df751896 10-Jun-2011 Romain Guy <romainguy@google.com> Don't apply AA to rects with no rotation/perspective.

Change-Id: I21138d4d0589cc28f1dcffb8b675cd81a9900e24
atrix.cpp
atrix.h
penGLRenderer.cpp
67ffc36a79ce3a9a0b5da28b65123864b7d2597f 04-Jun-2011 Romain Guy <romainguy@google.com> Measure text with the appropriate text encoding.
Bug #4546327

Change-Id: I8eb593b03a81145e08be92579706ddd775feb0a2
penGLRenderer.cpp
726aeba80ffc6778a9bc3e0ee957b8d644183505 01-Jun-2011 Romain Guy <romainguy@google.com> Add support to OpenGLRendere to draw BiDi text.
Bug #4350336

Change-Id: I1cf31693f7ca9653fa3a41b5b91c27ef288d680f
isplayListRenderer.cpp
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
roperties.h
extDropShadowCache.h
f09ef51889f75289b041f9e9f949b7b82ed5b686 27-May-2011 Romain Guy <romainguy@google.com> Fix issue with drawColor(color, Mode.Clear)

Change-Id: I486b24a5b609c6f8adb0276037ddb24af2b888b2
penGLRenderer.cpp
penGLRenderer.h
d2ba50ab861ec0950bda18dd0f463b687e66249f 27-May-2011 Romain Guy <romainguy@google.com> Prettify memory dump.

Change-Id: I071c6a04a144a96955d85f56dffc6162288ee33e
aches.cpp
1e59f9d10d164f156221f6d34b932f06cdd29f1f 27-May-2011 Romain Guy <romainguy@google.com> Fix texture coordinates for sub-bitmap rendering.

Change-Id: I05a31775e03f5b223a55a5144d420351abac89be
penGLRenderer.cpp
f504a2fa144504ca1efd39a4ef9208e3d4d336c5 27-May-2011 Romain Guy <romainguy@google.com> Correctly implement the CLEAR xfermode.

The previous implementation was using glBlendFunc with the parameters
GL_ZERO/GL_ZERO which doesn't work for text, paths and other alpha
sources (anti-aliasing.) The correct implementation is GL_ZERO/
GL_ONE_MINUS_SRC_ALPHA.

Change-Id: I4cca65e57b6a37bbf5a41d382cb0648ee8e11e79
ebug.h
penGLRenderer.cpp
atch.cpp
atch.h
44984ea0cb3702384d023b5f211deda3c4b0b656 19-May-2011 Chet Haase <chet@google.com> Enable large font rendering with GPU acceleration

Change-Id: I7b022100fb0762613f9cf7753dbb0217e1e75f8d
ontRenderer.cpp
ontRenderer.h
d39d1affe82cb8c21d32baaa5fbb2d6afb806f8e 16-May-2011 Derek Sollenberger <djsollen@google.com> Updates resulting from the Skia merge (revision 1327)

Change-Id: I2a8f5869dbe95bb594f2ba5d7278f9b330e6f17a
penGLRenderer.cpp
9dec462c1f522533620be3c70f2fc60e69368c1a 13-May-2011 Fabrice Di Meglio <fdimeglio@google.com> Merge "Prepare OpenGLRenderer to use glyphs from TextLayoutCache"
2ea75880142152b3a9993cb245754d73c05749a7 13-May-2011 Fabrice Di Meglio <fdimeglio@google.com> Prepare OpenGLRenderer to use glyphs from TextLayoutCache

- add OpenGLRenderer.drawGlyph()
- refactor glypth logging code

Change-Id: I797e6f1304d3f3f8f6ed31e7f9965d336233d2a4
penGLRenderer.cpp
penGLRenderer.h
858aa93ddb6e69e0503382af63bb681b6728aef1 12-May-2011 Chet Haase <chet@google.com> Antialiasing for rectangles

Change-Id: I7ca6931606541ddd504bd5db7f8dc04b9cde8cd9
penGLRenderer.cpp
penGLRenderer.h
c54ed966f78b9ee8117931859d62faa6f11fe018 06-May-2011 Chet Haase <chet@google.com> Minor javadoc enhancements

Change-Id: Ic24bb0e1e669989f0cae3a9b8fa064b38c8e7948
penGLRenderer.cpp
3825fef300122ffcc262e56a36a9fc36d8d084b0 06-May-2011 Chet Haase <chet@google.com> Merge "Fix for scaled AA lines"
99ecdc480dd4f9b550b2a62ea39f77845a4fec49 06-May-2011 Chet Haase <chet@google.com> Fix for scaled AA lines

Previously, the translucent boundary of AA lines would be scaled
by the line's transform. It should always be exactly one pixel wide
in screen space. This fix accounts for scaling for the boundary
region, and fixes some AA calculations that make wide/AA lines
more correct.

Change-Id: I30df2d5d96315bf3e7ff30be9735282fd5439a39
penGLRenderer.cpp
ed30fd8e9a2d65ee5c8520de55b0089c219f390c 23-Apr-2011 Chet Haase <chet@google.com> Add ability for hierarchyviewer to output displaylist info

Clicking on a node in hierarchyviewer1 and hierarchyviewer2 and then
clicking the new "Dump DisplayList" button will cause the display
list for the selected node (including its children) to be output into
logcat.

Change-Id: Iad05f5f6cca0f8b465dccd962b501dc18fe6e053
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
a17de9b493123f0d6e6d0b842150bf29322b7a88 05-May-2011 Chet Haase <chet@google.com> Revert "Add ability for hierarchyviewer to output displaylist info"

This reverts commit b2a4b52e8d5e499d33e2765e8c47851bf0266299.
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
b2a4b52e8d5e499d33e2765e8c47851bf0266299 23-Apr-2011 Chet Haase <chet@google.com> Add ability for hierarchyviewer to output displaylist info

Clicking on a node in hierarchyviewer1 and hierarchyviewer2 and then
clicking the new "Dump DisplayList" button will cause the display
list for the selected node (including its children) to be output into
logcat.

Change-Id: Id32f62569ad1ab4d533bc62987f3a7390c1bb4e6
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
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
ayer.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
rogramCache.cpp
rogramCache.h
99585adeb4167ca357a72eb866f34c1af944f4b9 03-May-2011 Chet Haase <chet@google.com> Line endcaps for AA lines are now antialiased.

Also fixed other minor issues with AA and line rendering.

Change-Id: Icd4638d27c70e2ee0f28b5d9a2b97d8b29e8ac4d
aches.h
penGLRenderer.cpp
penGLRenderer.h
rogramCache.cpp
rogramCache.h
ertex.h
ad44445c772efe66fdf063aa8f78d7ae3233570e 29-Apr-2011 Romain Guy <romainguy@google.com> Merge "New widget: TextureView Bug #4343984"
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
ayer.h
ayerCache.cpp
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
rogramCache.cpp
rogramCache.h
75e3ef048d8826f0db58f117403ce412e1d076a7 27-Apr-2011 Chet Haase <chet@google.com> Merge "Fix various hw-accelerated line/point bugs"
8a5cc92a150bae38ec43732d941b38bb381fe153 26-Apr-2011 Chet Haase <chet@google.com> Fix various hw-accelerated line/point bugs

All accelerated lines are now rendered as quads. Hairlines used to
be rendered as GL_LINES, but these lines don't render the same as our
non-accelerated lines, so we're using quads for everything. Also, fixed
a bug in the way that we were offsetting quads (and not offseting points)
to ensure that our lines/points actuall start on the same pixels as
Skia's.

Change-Id: I51b923cc08a9858444c430ba07bc8aa0c83cbe6a
penGLRenderer.cpp
penGLRenderer.h
rogram.cpp
rogram.h
9fc27819d75e24ad63d7b383d80f5cb66a577a0d 27-Apr-2011 Romain Guy <romainguy@google.com> Correctly compute tex coords for rect layers.
Bug #4192695

This change also fixes Javadoc links in the framework.

Change-Id: Ia548bcb18baba5d6fe6a4a04a2278e3a3bd465b2
ayer.h
ayerRenderer.cpp
penGLRenderer.cpp
740bf2bb2e900d3db2292b5909b4b4c6e90320e6 27-Apr-2011 Romain Guy <romainguy@google.com> Apply shaders/filters to text drop shadows.
Bug #4318323

This change also fixes the fact that shaders were not modulated
by the paint's color when drawing paths.

Change-Id: Id88804143aea06c895d4cbcdbe106d660230aa5a
penGLRenderer.cpp
rogramCache.cpp
6fca9884b3ea24d5775af4cf713fd81506913a39 25-Apr-2011 Chet Haase <chet@google.com> Minor cleanup in GLrenderer code

Changed the way we use bitcodes for one of the rendering
options to make the code cleaner.

Change-Id: Ifaa965f228dbdad297a40da93bfbe63373986e35
rogramCache.h
6cfdf4538049e4b96f50d8c0fe3119664420cc34 23-Apr-2011 Chet Haase <chet@google.com> Fix bitfield bug with vertex shader selection

Change-Id: I8bd3005f363afb52e6624806efb3e04c4a56ee18
penGLRenderer.cpp
rogramCache.h
5b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82 14-Apr-2011 Chet Haase <chet@google.com> Enable anti-aliasing for hw-accelerated lines

Draw anti-aliased lines with OpenGL by constructing a quad with
a border that fades out (to mimic fragment coverage).

Change-Id: Ib81a3e62d663acdf1b46b401ac4aa7ee9855cc7e
aches.h
penGLRenderer.cpp
penGLRenderer.h
rogramCache.cpp
rogramCache.h
ertex.h
9c1e23baf5bfbebd1aebbd6d9a18c225325567ce 24-Mar-2011 Chet Haase <chet@google.com> Add logging of graphics acceleration info to bugreports

Change-Id: I9fa4cda6ccf92df9d1c644ccdc0e7274a30106e0
ndroid.mk
aches.cpp
aches.h
isplayListLogBuffer.cpp
isplayListLogBuffer.h
isplayListRenderer.cpp
isplayListRenderer.h
ad575f4dda3391baf9fcab927e65afbee32e7b95 25-Mar-2011 Romain Guy <romainguy@google.com> Merge "When deleting a path, remove it from the path cache. Bug #4170585"
8a40f6a6324387b324c998cd9d6af900f1dca5ab 25-Mar-2011 Chet Haase <chet@google.com> Merge "Fix bug with accelerated translucent rendering"
1af23a32d879db330eb5a08b21090ec60b604a32 25-Mar-2011 Romain Guy <romainguy@google.com> When deleting a path, remove it from the path cache.
Bug #4170585

Change-Id: I6be4d251ceb908c89afe49c2ff85c05f36c73b70
isplayListRenderer.cpp
hapeCache.h
f147340bd117c16a67287e2f6ca9ded651bb32b2 24-Mar-2011 Chet Haase <chet@google.com> Fix bug with accelerated translucent rendering

There was a bug in the dirty region optimizations when
using alpha layers. This prevented translucent objects from
being drawn at all in many situations.

Change-Id: I23e9bce3595fbd6fe2bda15e8753a0f35baffb82
penGLRenderer.cpp
aaceeb0c5be11121a81e44b9633c06fc5c0fcd4d 24-Mar-2011 Romain Guy <romainguy@google.com> Use the correct API to query system properties.

Change-Id: Ie120dee0e24959d4db3fdb0100b6d8fe7fe46cdb
ebug.h
5b7a3150a6dbf193b371854b66fa654937633d3a 24-Mar-2011 Romain Guy <romainguy@google.com> Don't crash when omitting paint to drawBitmap() with A8 configs.

Change-Id: I3d630554ad82fa846385274d12d0434e890ef45d
penGLRenderer.cpp
80bbfb19eefe3cb9be8833b136381cece069e24d 24-Mar-2011 Romain Guy <romainguy@google.com> Fix shaders generation on IMG GPUs.

Change-Id: Id15df2663e41e31f04c8d86b958312341da8101d
rogramCache.cpp
c7b25be64f679e78dfa79080b44be18c9974004c 23-Mar-2011 Romain Guy <romainguy@google.com> Take fake bold font property into account.
Bug #4159731

For real this time!

Change-Id: I9cb6d70e68d2b57eb9a6d9a6bca8176967192421
ontRenderer.h
ed6fcb034b44d9a6ac2fc72fee6030417811f234 21-Mar-2011 Romain Guy <romainguy@google.com> Add support for drawPoint() and drawPoints().

Change-Id: I01bef50c08ec3160f8d40dc060b2cf6c2e4d7639
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
rogramCache.cpp
rogramCache.h
67ac217a81f34ee3d35df84b38f3456843c40706 19-Mar-2011 Romain Guy <romainguy@google.com> Fix hairline rendering.

Change-Id: Ib6129b446b53678b1b955d8516418370cbae4f10
penGLRenderer.cpp
a168d7372132d6c87835878794b6ed43d0d282fd 19-Mar-2011 Romain Guy <romainguy@google.com> Correctly apply filters to Alpha8 bitmaps.

This change also removes unnecessary operations from display lists.

Change-Id: I627f85861982731f0ee7705b48b36d9c56f22f39
penGLRenderer.cpp
penGLRenderer.h
b29cfbf768eab959b31410aafc0a99e20249e9d7 19-Mar-2011 Romain Guy <romainguy@google.com> Fix paths rendering issues.

See ApiDemos, PathEffect and PathFillTypes.

Change-Id: I9f9593c1da33d0d013b5b89c86bc5bd71128a192
isplayListRenderer.cpp
isplayListRenderer.h
athCache.h
hapeCache.h
40667676e542a9daeafeac9904c30004e8706fd3 18-Mar-2011 Romain Guy <romainguy@google.com> Optimize rect-shaped layers.

This brings back an optimization disabled in HC-MR1. This time the
correct geometry is generated to avoid unnecessary blending.

Change-Id: Id56404dc46bb84c75facc25c18488a690741b592
ayer.h
ayerRenderer.cpp
penGLRenderer.cpp
roperties.h
08aa2cbd5e62e7ca140f78f8bea0477a19880fd9 17-Mar-2011 Romain Guy <romainguy@google.com> Send WebView the current transform and whether we're drawing a layer.
Bug #3275491

These can be used by WebView to correctly apply alpha and geometric
transforms.

Change-Id: I2ecd4376d68df886dead3c9240317de33f56828f
penGLRenderer.cpp
a30f43624f76a7d49fcb48944c310cb4dbfc6522 17-Mar-2011 Romain Guy <romainguy@google.com> am 72064c66: am b0204d0a: am c2b91a61: Merge "Modify the GL renderer\'s functor to pass the clip to WebView" into honeycomb-mr1

* commit '72064c66e20b9cc86900a9d833c228c345a2b2a4':
Modify the GL renderer's functor to pass the clip to WebView
80911b851764b073310fd0bffdf4a7db0d8fdd0b 16-Mar-2011 Romain Guy <romainguy@google.com> Modify the GL renderer's functor to pass the clip to WebView

Change-Id: If5efe399ca58f3000b2883e24e9f3736a2025184
penGLRenderer.cpp
89cc2b6422ce28bf3de1ac79b1daa0147b0eca88 16-Mar-2011 Romain Guy <romainguy@google.com> am f8c4c128: am 0f7d2ec3: am 46fc2517: Merge "Fix performance issue in Launcher Bug #3515248" into honeycomb-mr1

* commit 'f8c4c12802b15da068d164fd44c9b9f12e7ed916':
Fix performance issue in Launcher Bug #3515248
6217a71cd281003a376d998269d577d26a61c206 16-Mar-2011 Romain Guy <romainguy@google.com> Fix performance issue in Launcher
Bug #3515248

The problem is caused by the fast path when compositing layers on screen.
The fast path draws a single quad using glDrawArrays() whereas the general
path draws an arbitrary mesh using glDrawElements(). It looks like there's
an issue in the driver since glDrawArrays() is significantly slower than
glDrawElements() for a quad (6 vertices!)

This change just gets rid of the fast path.

Change-Id: Ib2361253ec67f44a988270f76c183422f12ce537
ayerRenderer.cpp
penGLRenderer.cpp
roperties.h
8390c7cf6838eb8d63b8e38109751e5c7d13599b 15-Mar-2011 Romain Guy <romainguy@google.com> am 5c84a134: am a1bd5a5f: Merge "Fix disappearing edges in lists/scrollviews/etc. Bug #4093871" into honeycomb-mr1

* commit '5c84a1341b05e96f2c76da7252ed823ec3121102':
Fix disappearing edges in lists/scrollviews/etc. Bug #4093871
ad37cd3b5d3de9dd0858af04fbccd102e8ff4b0e 15-Mar-2011 Romain Guy <romainguy@google.com> Fix disappearing edges in lists/scrollviews/etc.
Bug #4093871

This bug was introduced by a change that modified the way fade areas
are cleared. The previous change relied on Rect::intersect() to empty
the intersected rect when the two rects don't intersect. Unfortunately
this is not what intersect() does. The fix is rather simple and
sets the layer's bounds to empty when they don't intersect with the
clip or the viewport. This has the side effect of ignoring the layer
which is the expected result.

Change-Id: Icf0038b9a476c53f8eff7084136aba3033d093e6
penGLRenderer.cpp
8329db39f2f55484352d58b1820eb31a22698f11 15-Mar-2011 Romain Guy <romainguy@google.com> am b245e31f: am ee7ace06: Merge "Fix rendering artifact in edge fades. Bug #4092053" into honeycomb-mr1

* commit 'b245e31fa8dd1ad6a59ccf858154f3c7b92e0eb8':
Fix rendering artifact in edge fades. Bug #4092053
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
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
rogramCache.h
3070af08821ee86f06a9cc6b58dbb79c82946b94 14-Mar-2011 Iliyan Malchev <malchev@google.com> frameworks/base: remove LOCAL_PRELINK_MODULE

Change-Id: I54dd62ebef47e7690afa5a858f3cad941b135481
Signed-off-by: Iliyan Malchev <malchev@google.com>
ndroid.mk
f7098ce95dde39a33ca280bd1ef9a13259e7b7e5 08-Mar-2011 Romain Guy <romainguy@google.com> am d00353fe: am bc8a8e8c: Merge "Add support for partial invalidates in WebView Bug #3461349" into honeycomb-mr1

* commit 'd00353fe3191571a6773ef2d11921cfcff260bc4':
Add support for partial invalidates in WebView Bug #3461349
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
ndroid.mk
isplayListRenderer.cpp
isplayListRenderer.h
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
extDropShadowCache.h
1eb12937329d0fcdc29d9c5ab6c549c42d2dcd52 03-Mar-2011 Fabrice Di Meglio <fdimeglio@google.com> Merge "Add TextLayout Cache"
058f47e8455464d7c9d59297a5d4db026c61eafd 03-Mar-2011 Romain Guy <romainguy@google.com> Merge "We need to go deeper. Bug #3431907"
84962f2fe6ce779c583cc54b11a9de2b6a568117 03-Mar-2011 Romain Guy <romainguy@google.com> We need to go deeper.
Bug #3431907

When drawing layers inside a layer, the wrong target FBO would be used.
This would happen for instance with app widgets using a ViewFlipper
in Launcher. The ViewFlipper uses a fade animation that triggers a
call to saveLayerAlpha(), which in turns creates an FBO. If this happened
during a scroll, the ViewFlipper's FBO would be composited back directly
inside FBO 0, i.e. the screen. This properly initializes the snapshots
of hardware layers to use the layer's FBO as the default compositing
target instead of using 0.

This problem did not happen when drawing hardware layers inside
hardware layers because LayerRenderer already takes care of figuring
out the FBO it needs to composite into. The bug would occur only
with layers generated with saveLayer() and its saveLayerAlpha()
variation.

Layers inside hardware layers insider layers inside hardware layers
now work properly.

Change-Id: Ibe852301087f3d414ad8a18436eebc81f8ac66f5
penGLRenderer.cpp
40a787f89a6f4c20f2c7fce29e5bc53954305f34 03-Mar-2011 Romain Guy <romainguy@google.com> Properly initialize FBO textures for linear filtering.

Change-Id: I67fc4fd760483ef85809be8d6e608cf4f469650f
ayerRenderer.cpp
a91320e364140ca7d6b33115d83b75f12fba548e 03-Mar-2011 Romain Guy <romainguy@google.com> Merge "Properly initialize FBO textures for linear filtering."
4677c5118c29b5621ababc136b749f02a3d543d6 02-Mar-2011 Romain Guy <romainguy@google.com> Merge "Fix problem with glyph cache and textScaleX property"
8668f8a633d9299091556c3b2e5ae07be8dce360 02-Mar-2011 Chet Haase <chet@google.com> Fix problem with glyph cache and textScaleX property

Glyphs drawn with paints that had different textScaleX values were not
being recognized as different, so the glyph cache was being used regardless
of different scaleX values. This change adds the scaleX attribute to the native
Font object to allow the cache to distinguish between this difference and cache
accordingly.

Change-Id: I5d8fc26d47460b27dc8e373a473d46b2f1b8dc30
ontRenderer.cpp
ontRenderer.h
d313c665e618af3194f504064bcd284fe5368682 25-Feb-2011 Fabrice Di Meglio <fdimeglio@google.com> Add TextLayout Cache

- use GenerationCache for caching
- move GenerationCache.h from libs/hwui/utils to include/utils
- add #define for cache activation / deactivation

Change-Id: Ifaf519f0b5e33b087a453e4aa6430162d8438f20
tils/GenerationCache.h
d643bb56fdf21973ea75984f0816b7dc024698df 01-Mar-2011 Romain Guy <romainguy@google.com> Correctly mark layers dirty when drawing WebView.

Change-Id: I7ae0c3cfa0916d8fbeaf01e8da127c621a06a0f4
penGLRenderer.cpp
321dce646dc3c2ecfbd72a693d8d9294a6119736 01-Mar-2011 Romain Guy <romainguy@google.com> Avoid UTF-8 conversions and string copies whenever possible.

Change-Id: Ie4584417bbb7247e6c567fbfdb819529e548bb8f
extDropShadowCache.cpp
extDropShadowCache.h
4368c449d7baa398e67eb4d96467f1de8862c5bb 25-Feb-2011 David Li <davidxli@google.com> Merge "Fix mTexCoordsSlot > 0 check to mTexCoordsSlot >= 0"
cf28957c89127ccfc82d535903c776124665446a 25-Feb-2011 David Li <davidxli@google.com> Fix mTexCoordsSlot > 0 check to mTexCoordsSlot >= 0

0 Is a valid attribute location.

Change-Id: Ib24335f48efd6cc59e2ab877569d7d0c95f8490a
Signed-off-by: David Li <davidxli@google.com>
penGLRenderer.cpp
7b8b75892400745f39bb8d5b5d539091bcfb1e1e 25-Feb-2011 Romain Guy <romainguy@google.com> Remove the right entries from the cache when a GC happens.

Change-Id: I4649b18c4721a5511a404299e771e675c843407b
athCache.cpp
b37cbec6d06578a72bdd9c2caa3fd964ade71c53 25-Feb-2011 Romain Guy <romainguy@google.com> Correctly blend translucent GIF bitmaps.

Change-Id: Ifeb2c1d97a4c6dfeb1a7b5b26f1a3153e9f8da7f
penGLRenderer.cpp
extDropShadowCache.h
extureCache.cpp
6062c5912dc79704b489fc8c289b78a400ed05ee 22-Feb-2011 Derek Sollenberger <djsollen@google.com> Skia Merge (revision 808)

This is a companion CL to the one found in /external/skia

Change-Id: If81748545435cab20a5d8479329ab333cb973e16
isplayListRenderer.h
penGLRenderer.cpp
esourceCache.cpp
hapeCache.h
894df17eee708688c8a6e67941add2017239c790 18-Feb-2011 Alex Sakhartchouk <alexst@google.com> Fixing font renderer attribute slot locations.

Change-Id: I6377bb641df7d8372d873c00790189f9a190afd6
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0 11-Feb-2011 Romain Guy <romainguy@google.com> Dirty layers in the area covered by a drawBitmapMesh() call
Bug #3410827

Change-Id: Ic8b4f6201af94497bba86c75819588c78debddc2
penGLRenderer.cpp
851beae717dc8e9b66c214d9d6aab2e76d52b086 05-Feb-2011 Mike Cleron <mcleron@google.com> Merge "Properly handle dirty rectangles generated from 9-patches Bug #3409580" into honeycomb
c78b5d50f961ac8f696f8282979ae283cacd3574 04-Feb-2011 Romain Guy <romainguy@google.com> Properly handle dirty rectangles generated from 9-patches
Bug #3409580

This bug affects anything that draws a 9patch inside a layer, this includes
launcher's workspace, all of the fade animations, etc.

Change-Id: Icbe8ecd158e3d5f44d07516462de68c5d1fb0a8f
penGLRenderer.cpp
5a7e828842c26f64bb6e0ef3e0019e1949b245ee 04-Feb-2011 Chet Haase <chet@google.com> Fix crash when Paths are GCd in hw accelerated apps

A recent change to optimize path rendering didn't account for
the destruction of native objects by the VM finalizer. We may be
done with the Java level version before we're done with the native
structure that's used by the display list. For example, a drawing
method on a View that creates a temporary path to render into the
canvas will implicitly create a native structure that is put onto
the GL display list. That temporary path may go away, but the native
version should stick around as long as the display list does.

The fix is to refcount the original native version of the path
and only delete it when the refcoutn reaches zero (which means that
it is no longer needed by any display list). This is a similar mechanism
used for bitmaps and shaders.

Change-Id: I4de1047415066d425d1c689aa60827f97729b470
isplayListRenderer.cpp
isplayListRenderer.h
esourceCache.cpp
esourceCache.h
f28daffda50042c1b7cbfeb34b4d47741c6e21a8 04-Feb-2011 Romain Guy <romainguy@google.com> Empty the clip rect when intersection is empty.
Bug #3410035

Change-Id: I5ceb80514d3b20c9ad230478549ad31ced403d53
napshot.h
d63cbd10765e8f48e39b07b15f0a4b70bf853ec8 04-Feb-2011 Chet Haase <chet@google.com> Fix leak in reused display lists

Change-Id: I32a9c41abf8f8cbcaaaa6fcc82d296800014a1b2
isplayListRenderer.cpp
isplayListRenderer.h
2fc941e4650d618ff6e122f28b616d9032ffa134 04-Feb-2011 Romain Guy <romainguy@google.com> Fixes cache misses and extra allocations.
Bug #3421454

Change-Id: If4d5c960a7e4c581a9d213073e658284b4e1c497
aches.cpp
isplayListRenderer.cpp
isplayListRenderer.h
athCache.cpp
extDropShadowCache.h
09b7c91de73b59aa3f679b3ae3ba299f82ec9f8a 03-Feb-2011 Romain Guy <romainguy@google.com> Allocate layers from the layers pool.
Bug #3413433

This change will be beneficial to Launcher to avoid hiccups when
swiping pages of icons. When a layer is discarded, it is kept
in the layers pool instead of being destroyed right away. This
favors memory reuse over allocations.

Change-Id: Ifb6944ba83d6ceb67c331527c0827b26ce648eb1
aches.cpp
ayerCache.cpp
ayerCache.h
ayerRenderer.cpp
roperties.h
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
ayerRenderer.cpp
beff8d83ef062975459f149ad0c632a3797d78ce 02-Feb-2011 Romain Guy <romainguy@google.com> Fix incorrect dirty rectangle transformation in hardware layers.
Bug #3413433

Change-Id: Iba201c7c4b4f11937797f3afcbf20c5a7395be25
ayerRenderer.cpp
3a3133d876caf60ebff2176ad75c3dcf0259148d 02-Feb-2011 Romain Guy <romainguy@google.com> Update layers based on the dirty region.
Bug #3413433

This helps Launcher when a widget updates during a scroll, or when interacting
with widgets on the workspace if layers are still turned on.

Change-Id: Ic7a42eb34f74f4ae988039754f815e2efd1d1e4f
ayerRenderer.cpp
penGLRenderer.cpp
penGLRenderer.h
885153e2d08aadd6333c48c4e98bade637eadc17 28-Jan-2011 Romain Guy <romainguy@google.com> Add more debug info for profiling.

Change-Id: I0c74e2aa108142cc6ddac4577ae2d0fe6c0ddb25
penGLDebugRenderer.cpp
penGLDebugRenderer.h
a45c056e62be0ca97edbdd6f6660822cf453c886 27-Jan-2011 Chet Haase <chet@google.com> Merge "Fix display List bugs" into honeycomb
678e0adbdbac5fa3f25ca8371fdff1b3182f67e9 25-Jan-2011 Chet Haase <chet@google.com> Fix display List bugs

Various property setters in View need to invalidate the parent's
cache to get redrawn properly when accelerated with display lists.

Also, fix logic around display lists and old-style Animations in
ViewGroup.

Change-Id: I70e1c2fa49e62228ee4a1301a006ce50bda4c305
ayerRenderer.cpp
4f09f5417b5c14fd31336dacfff86972e7885a03 27-Jan-2011 Romain Guy <romainguy@google.com> Don't draw the same triangles several times.
Bug #3388197

Change-Id: Ief1dfd9447f144e9992340a173d2893e5e049129
ayerRenderer.cpp
penGLRenderer.cpp
2b1847ea60650a9f68372abe860415f18b55081d 26-Jan-2011 Romain Guy <romainguy@google.com> Remove unused API

Change-Id: I1714fd82a64b752f0350ef4ef9179ce19e089c6a
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
f90f8171e6acb56f9f87093c01fd586f2140697a 26-Jan-2011 Romain Guy <romainguy@google.com> Make sure the opaque bitmap is opaque. GL doesn't like being lied to.
Bug #3382992

The result still looks wrong but it works as designed, unfortunately.

Change-Id: I6108e199fa336cb01faaabf6c75faa3b71c2339b
penGLRenderer.cpp
8d2959ddffcdee8b0c2f6387f2e2772c6df474ae 25-Jan-2011 Romain Guy <romainguy@google.com> Remove debugging log left by mistake.

Change-Id: I7d5165b4b682714940cea9886abeedd3f4858057
penGLRenderer.cpp
82d41a515368236e56454bd84023bebd6306f6b7 25-Jan-2011 Romain Guy <romainguy@google.com> Fix display list support for shapes.

Change-Id: I8b4c9e9ec36266a83c0a53ba3fb6e45d61bbd6d9
isplayListRenderer.cpp
8168396d1acbcb5fdd29eeda4c30b2803d5283ae 25-Jan-2011 Romain Guy <romainguy@google.com> Fix rendering issues with animated layers.
Bug #3385247

- The layer's alpha was interpreted in the wrong range 0..255 instead of 0..1
- 9-patches would not correctly dirty the layer region, the generated mesh
was incorrect

Change-Id: I4916249bedcdb0794929f3796bd17854971efc88
penGLRenderer.cpp
7d7b5490a0b0763e831b31bc11f17d8159b5914a 25-Jan-2011 Romain Guy <romainguy@google.com> Enable partial invalidates when rendering with OpenGL.

Change-Id: Ie8be06c4776b815e8737753eb8003b4fd8936130
isplayListRenderer.cpp
isplayListRenderer.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
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
isplayListRenderer.cpp
isplayListRenderer.h
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
a566b7c3aada08d37cf08096c972e3e641bed773 24-Jan-2011 Romain Guy <romainguy@google.com> Fix bitmap meshes to work in display lists.

Change-Id: Ie226d049840942d9ad9cf58e0c19132f49d62a75
isplayListRenderer.cpp
penGLRenderer.cpp
8b2f5267f16c295f12faab810527cd6311997e34 24-Jan-2011 Romain Guy <romainguy@google.com> Add support for arcs.

Change-Id: I96c057ff4eb1b464b03f132da0b85333777bee4f
aches.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
hapeCache.cpp
hapeCache.h
c1cd9ba335b293f11e1082447ef08e474710a05f 23-Jan-2011 Romain Guy <romainguy@google.com> Add support for ovals and stroked rectangles.

Change-Id: I1292e241386763c82e6622c8f7ed90b0f5b7bd4f
aches.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
hapeCache.cpp
hapeCache.h
f6834478b379856d3e5de92ddce7de0e6ba9fa4a 23-Jan-2011 Romain Guy <romainguy@google.com> Always render text underline extra.
Bug #3381287

Change-Id: Ibfbc9c51c8dccef216daccc37d835e5dbf143a6a
penGLRenderer.cpp
extureCache.cpp
27454a42de8b3c54cdd3b2b2a12446c2c10c8cb9 23-Jan-2011 Romain Guy <romainguy@google.com> Collapse sucessive calls to restoreToCount() in display lists.

Change-Id: Icb3d3dc2c579436d375269a9cb0b821a931c5a79
isplayListRenderer.cpp
isplayListRenderer.h
4cf6e2f34994f160e1baba205a43c12784dd3e0d 23-Jan-2011 Romain Guy <romainguy@google.com> Fix potential crash in display lists.

Change-Id: I868821cbe69f7e71d93701b9cdb528a2ef796cd4
isplayListRenderer.cpp
c88e357d1ed9dadfc0efb3dfbe92f24460674ef5 22-Jan-2011 Romain Guy <romainguy@google.com> Fix regression with hardware layers.

The renderer was checking whether the layer's region is a rect to
draw it with a simple quad. This test was done against the layer's
region structure, which was cleared after generating the mesh.
Unfortunately Region::isRect() returns true when the region is
empty, which was causing the renderer to always use a quad to
draw a mesh on screen.

Change-Id: If4b874579ee0cedcb67367c9efa5c0c98ca55231
ayerRenderer.cpp
penGLRenderer.cpp
c9855a53edfac818dc68714557185977556f849d 22-Jan-2011 Romain Guy <romainguy@google.com> Log only 1 line per process when using OpenGLRenderer.

Change-Id: Idbdd6b84f31301e58ed53e0d50fd61fece192dfa
aches.h
ebug.h
boCache.cpp
ontRenderer.cpp
ammaFontRenderer.cpp
radientCache.cpp
ayerCache.cpp
hapeCache.h
extDropShadowCache.cpp
extureCache.cpp
5a7b466a2b4b7ced739bd5c31e022de61650545a 21-Jan-2011 Romain Guy <romainguy@google.com> Add support for drawBitmapMesh().

Change-Id: Ic77f9c534bb90dc7b9458299544bd50b8b6ae6a5
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
ff26a0c1c905dc1ec53b1bab860b80f2976d59be 20-Jan-2011 Romain Guy <romainguy@google.com> Remove unnecessary code.

Change-Id: I83eba3406c26a4028af08b4d4c95ecd02803e75a
aches.h
ebug.h
athCache.cpp
athCache.h
hapeCache.cpp
hapeCache.h
ed8f8dd8cf621d6046db7e083f8a36205ed55609 20-Jan-2011 Romain Guy <romainguy@google.com> Merge "Add rounded rects and circles support to OpenGLRenderer." into honeycomb
01d58e43ede5ca98cbebdd166f9b0c545032c01b 20-Jan-2011 Romain Guy <romainguy@google.com> Add rounded rects and circles support to OpenGLRenderer.

Change-Id: I6cedf2b495d58de7c0437096809fa9e4518a1b8c
ndroid.mk
aches.cpp
aches.h
ebug.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.cpp
penGLRenderer.h
roperties.h
hapeCache.cpp
hapeCache.h
514fb18827186591d66973c2362c859b64b63556 19-Jan-2011 Romain Guy <romainguy@google.com> Don't attempt to create empty layers.
Bug #3369888

Change-Id: Ic17bbd1c04bbf760cb17d0eb9e6767fd6479948c
ontRenderer.cpp
penGLRenderer.cpp
42f3a4b7c35dd1ea1922356eb3611af8cde05179 19-Jan-2011 Romain Guy <romainguy@google.com> Make embedded hardware layers work.
Bug #3369474

Change-Id: Ib6d7fb44eedda9dc2933b5e1b176f307968af91d
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
a3311ed7a9ddd7ecb066f4731ce4bc3bd3ffd939 19-Jan-2011 Romain Guy <romainguy@google.com> Fix the fix for 9patches.

Change-Id: I66dca835d9d0e9766d887746c3265e4b13ae688b
atch.cpp
fdbec3e4828f93bfa5cde758ad0e77b89c5c2ecd 19-Jan-2011 Romain Guy <romainguy@google.com> Fix 9patches in Launcher

Change-Id: Ieedf36ccaab253909b44ed8c222d523867f095be
atch.cpp
eb6a4a17a07f1aa41bd58d418b2982cddb97685a 18-Jan-2011 Romain Guy <romainguy@google.com> Fix 9patches, again...
Bug #3365243

Change-Id: Id45a1f1fd5e099b1d691e6064401d3de1b0c5c20
atch.cpp
atch.h
2577db1ec135a1470a2c42139772ec97a6c30e78 18-Jan-2011 Romain Guy <romainguy@google.com> Add support for Paint::setTextSkewX in OpenGLRenderer.
Bug #3360888

Change-Id: I42e81a1f10bf7b9ae1c63ca8add1878fd59a1e8a
ontRenderer.cpp
ontRenderer.h
807daf7df615b60ce6fc41355aabe3aa353cebab 18-Jan-2011 Romain Guy <romainguy@google.com> Add support for skew()

Change-Id: Ia3a9a867f74fd78b61f75179e3788fdc2f0cacd0
isplayListRenderer.cpp
isplayListRenderer.h
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
7444da512680df0c52af39ea521e35adbe0c167d 17-Jan-2011 Romain Guy <romainguy@google.com> Yet another fix for 9patch rendering.
Bug #3362133

Change-Id: Ia6521d31a8c208a2ad2506a23b6a01e5e442ad86
atch.cpp
atch.h
fb13abd800cd610c7f46815848545feff83e5748 17-Jan-2011 Romain Guy <romainguy@google.com> Fix 9patch rendering in ExpandableListView.

Change-Id: I60843d61a40b0cb7dd09923cb4489a5a76f20486
ebug.h
ayerRenderer.cpp
atch.cpp
atch.h
f219da5e32e85deb442468ee9a63bb28eb198557 16-Jan-2011 Romain Guy <romainguy@google.com> Don't blend transparent pixels when rendering layers.

With this change, the rendere keeps track of what regions are rendered into
and generates a mesh that matches these regions exactly. The mesh is used
to composite the layer on screen.

Change-Id: I1f342576b9134fb29caff7fb8f4c1da179fe956d
ayer.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
napshot.h
1bd1bad0b4a75e633c5edbe802bf6fb4dd765161 15-Jan-2011 Romain Guy <romainguy@google.com> Preapre region tracking in layers

Change-Id: Ied1fa0d36c99ef4e33cb8fde7e3106a793db3a4c
penGLRenderer.cpp
penGLRenderer.h
43ccf4663c822ddd435b7683cc05221f6169c6c3 15-Jan-2011 Romain Guy <romainguy@google.com> Don't crash Launcher on config change.

Change-Id: Ibbbd7146c5ff69e9639b433f39041053654d808c
isplayListRenderer.cpp
isplayListRenderer.h
esourceCache.cpp
kiaShader.cpp
kiaShader.h
1f1fcb70b6e43a6b4df0dbab75a34429d4744624 15-Jan-2011 Romain Guy <romainguy@google.com> Don't delete objects twice...

Change-Id: Ibc67aed098c9300cf45eb46abda1938c418808c3
isplayListRenderer.h
24c00216687ac87fe531dc4d4168ac0c0ca04ea6 15-Jan-2011 Romain Guy <romainguy@google.com> Copy shaders when recording them in display lists.

Change-Id: I3f22dd35f1e31c9e5102955d76548098b7b0cd8d
isplayListRenderer.cpp
isplayListRenderer.h
kiaShader.cpp
kiaShader.h
f5106847fc962d57c7d5c586099b4a382f3e1c3d 14-Jan-2011 Romain Guy <romainguy@google.com> Don't add clipped rects to layer regions.
Bug #3350208

Change-Id: I9266862f1d4d57b4598852e8dfa202b5f5099cce
penGLRenderer.cpp
1e3a431d07cc0a307c6441e9ae1b17d3bf42323e 14-Jan-2011 Romain Guy <romainguy@google.com> Remove debug code

Change-Id: Idbc54d16adb4d86185d7196ea0297b5019d14ae4
penGLRenderer.cpp
ffac7fc5042296a459d0f5a450dbfe20917093dc 14-Jan-2011 Romain Guy <romainguy@google.com> Add debug logs for display lists.

Change-Id: I7bae8fd96e9eccb51f29f73e4069b4d3e6bdbdd7
ebug.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
ada830f639591b99c3e40de22b07296c7932a33f 13-Jan-2011 Romain Guy <romainguy@google.com> Cleanup implementation of hardware layers.

The new implementation relies on OpenGLRenderer's existing layer
code instead of duplicating it. The new code is much cleaner, with
simpler and better APIs and allows tracking of drawn regions inside
layers. Region tracking is not yet enabled but this will be done
in a future CL.

Change-Id: Ie826121a2227de8252c77b992a61218defea5143
aches.cpp
aches.h
isplayListRenderer.cpp
isplayListRenderer.h
ayerRenderer.cpp
ayerRenderer.h
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
c038ea358aadca082198f3effc550d33135bf426 13-Jan-2011 Romain Guy <romainguy@google.com> Reenable region composition pipeline for layers
Bug #3341848

It works this time!

Change-Id: I0d371d8b2c75c67d4ce5009ddb990fe5e55a0a27
penGLRenderer.cpp
roperties.h
1fc883b271707c4206ae20cc9a935d7bd4a7485e 12-Jan-2011 Romain Guy <romainguy@google.com> Add logging to the new layers API.

Change-Id: I78b9426eb17de3e775aca9fafe4a50bd9c0785c4
ebug.h
ayerRenderer.cpp
ayerRenderer.h
57066eb64c9a190d1afc87bb060bbb2d31e5b86c 12-Jan-2011 Romain Guy <romainguy@google.com> Cleanup GL objects on the correct thread.

Change-Id: Iddfea6e08a6591a4fab147151098ef27005f373d
aches.cpp
aches.h
ayerRenderer.cpp
ayerRenderer.h
35f24545e56caaff067f7dcd550ad4073efcface 12-Jan-2011 Romain Guy <romainguy@google.com> Disable the region compositing pipeline for layers.

This composition mode is affecting Gmail in a bad way. Disabling until
I can figure out the problem.

Change-Id: I00e657ea2d05fc7b4a606242d19dc84dd88c1e35
roperties.h
a9d0711392689a94b9f76eb0c16d0718c005603e 12-Jan-2011 Romain Guy <romainguy@google.com> Don't break the build!

Change-Id: I42f68c7b023c03adeedc4e979e5f4705188ee9f4
ayerRenderer.cpp
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
ndroid.mk
isplayListRenderer.cpp
isplayListRenderer.h
ayerRenderer.cpp
ayerRenderer.h
penGLRenderer.cpp
penGLRenderer.h
32228288a957f3823df92365bc709ad6f42b012e 12-Jan-2011 Romain Guy <romainguy@google.com> Solve translucency issue when drawing paths.

Change-Id: I68ae0e2ccddaca2f76b5b2dd3e3cf1277fddaad6
athCache.cpp
7230a74e9a36dfc6c4346c14e325bf07cd05b380 11-Jan-2011 Romain Guy <romainguy@google.com> Composite layers as regions.

This change detects what area of a layer was drawn into and generates a mesh
to match this area exactly. This can be used to avoid blending empty pixels
when the layer is composited.
This change also adds proper layers support to lines rendering and implements
layers composition in a more readable way.

Change-Id: I4a5588b98b19bd66891ebdc39631b193c5e31999
aches.cpp
penGLRenderer.cpp
roperties.h
a07105b7d2a27e6d69407bf96ddb773bddb5e553 11-Jan-2011 Romain Guy <romainguy@google.com> Better logging of out of memory errors in OpenGLRenderer.

Change-Id: I6b72a084340d8d4b6e0b0a100ed4314d09d441ef
penGLRenderer.cpp
171c592f0b7066acf279863c8a52ddabea49d3db 06-Jan-2011 Romain Guy <romainguy@google.com> New layers API for Views.

This API can be used to back a view and its children with either a
software layer (bitmap) or hardware layer (FBO). Layers have
various usages, including color filtering and performance
improvements during animations.

Change-Id: Ifc3bea847918042730fc5a8c2d4206dd6c9420a3
ayer.h
ayerCache.cpp
penGLRenderer.cpp
5977baa1fa24125c148a72699b53e62abaf08960 06-Jan-2011 Chet Haase <chet@google.com> Reuse of native display list objects

Change-Id: Ia4553e23930ad20e56c11faa7809be788a1ad4bb
isplayListRenderer.cpp
isplayListRenderer.h
325a0f969c1d803d7e39a9caee8cc3d400350659 06-Jan-2011 Romain Guy <romainguy@google.com> The font cache should respect the fake bold flag.

Change-Id: Ie4edc9ba46610edde831b55e769944e9a19bdcb5
ontRenderer.cpp
ontRenderer.h
f890fab5a6715548e520a6f010a3bfe7607ce56e 20-Dec-2010 Patrick Dubroy <dubroy@google.com> Ensure bitmaps aren't freed while referenced from a display list

Also removes the reference queue finalizers. They aren't necessary
anymore now that Bitmaps are allocated in the heap.
esourceCache.cpp
b146b1214ef6e4fc75d98779b22434335764cfdb 16-Dec-2010 Romain Guy <romainguy@google.com> Fix text shadow rendering issue.

Change-Id: Ic9eb0d38ad684d2f2c95a4f586f865db911cb872
penGLRenderer.cpp
8d0d4783a0206c5884bf0b958d181f450ba5207d 15-Dec-2010 Romain Guy <romainguy@google.com> Cleanup OpenGLRenderer::drawLines()

Change-Id: I3545a616e964335897c6e4148c431a07a2ce2a8b
penGLRenderer.cpp
penGLRenderer.h
982b71bf4713d57b0fdb9acaaf9f9465a817aacb 15-Dec-2010 Patrick Dubroy <dubroy@google.com> Merge "Allocate bitmap backing buffers in the Java heap."
e4ac2d6b5723c95e648c489b187ddde449452c13 01-Dec-2010 Patrick Dubroy <dubroy@google.com> Allocate bitmap backing buffers in the Java heap.

Change-Id: I60f6ccff13357c1c518e9d56b02fe0171637edd1
esourceCache.cpp
86568198f2c83d4ce5c4cd692eda074ba9de9ed2 15-Dec-2010 Romain Guy <romainguy@google.com> Continue cleanup refactoring in OpenGLRenderer.

Methods that still need refactoring:
- drawLines
- composeLayerRegion

Change-Id: If546641adf598d49c330988803667264fda50ac2
penGLRenderer.cpp
penGLRenderer.h
fa7952dbb86a8aff0c90418aa77dddee3802c23a 14-Dec-2010 Romain Guy <romainguy@google.com> Colors are in the [0..1] range, not [0..255]

This fixes rendering in YouTube and other applications.

Change-Id: Ib5f3df632cde97374113ed42f895f136b2796373
penGLRenderer.cpp
5536841e5452172e7772d84ad5f4a2fc7059c9dd 14-Dec-2010 Romain Guy <romainguy@google.com> OpenGLRenderer would not render colors < ALPHA_THRESHOLD
Bug #3282805

This bug was introduced with a previous refactoring. This also fixes
issues with setting the alpha when drawing bitmaps.

Change-Id: Id47641d26a4536c7e540041f92243bf6db9fc96d
penGLRenderer.cpp
penGLRenderer.h
70ca14e08ae197547ac412e8a1210e1ebdfb2eb1 14-Dec-2010 Romain Guy <romainguy@google.com> Refactor OpenGLRenderer to simplify OpenGL drawing code.

This is the first step of the refactoring:
- drawColorRect
- drawTextureMesh

Remaining methods to refactor:
- setupTextureAlpha8
- drawPath
- setupShadow
- drawText
- drawLines
- composeLayerRegion

Change-Id: I0fced6a05b6b6eee10ee7cef0c3fbdaa6cefab20
penGLRenderer.cpp
penGLRenderer.h
rogramCache.h
32963c393a804db2cd86c24443c2f1c6eee6064b 10-Dec-2010 Romain Guy <romainguy@google.com> Ignore empty layers.

Change-Id: Ib2f99cdab654881fe079306e27d87c5ef9535700
penGLRenderer.cpp
25dc3a7dbac2f90f5144035e9c8ed99c09cc3132 10-Dec-2010 Romain Guy <romainguy@google.com> Correctly compare strings in UTF-8 instead of UTF-16
Bug #3272858

Change-Id: Idacd5d7c2c052b4834a8ddb5906ab32b3f548f73
atchCache.h
roperties.h
extDropShadowCache.cpp
extDropShadowCache.h
af636ebf5feb2837683fbfe965040cb706b32ec1 10-Dec-2010 Romain Guy <romainguy@google.com> Don't set the invisible flag when saving an empty layer.
Bug #3270371

Change-Id: I65e85671c2fb70d74553c91213e5e759e0ac64ee
penGLRenderer.cpp
napshot.h
a957eea78557cb47a91d44d9e6ee641c58cf1c07 09-Dec-2010 Romain Guy <romainguy@google.com> New, better line drawing implementation.
Bug #3207544
Bug #3225875

Change-Id: Ibdd1dfc64e01625d5c441f39eb0aa3ee647f6ff5
aches.h
ine.h
penGLRenderer.cpp
ector.h
67f27952c1bcb2230beef9b5ca0bf42edad436a9 08-Dec-2010 Romain Guy <romainguy@google.com> Correctly release the OpenGL Canvas on EGL error.

Change-Id: Ib31fd8445f7ce5f7aa7e0205de0e7db80d024fc2
rogram.cpp
rogram.h
rogramCache.cpp
8ab4079ca27e36e5c584495bcd71b573598ac021 07-Dec-2010 Romain Guy <romainguy@google.com> Fix 9patch rendering
Bug #3253396

Some quads were incorrectly assumed to be degenerate.

Change-Id: I9155699edc3424afe9d5a131886bb9966d46b109
penGLRenderer.cpp
atch.cpp
atch.h
3a3fa1be9ab8e11edc660ecb35ae21ae0b5c8cc2 07-Dec-2010 Romain Guy <romainguy@google.com> Draw text decorations correctly.

Change-Id: I237c0ca8bfe9f233e62476e80f72bcea4359398e
penGLRenderer.cpp
6620c6d413f972819fada92b574f0fa9e96d36c1 07-Dec-2010 Romain Guy <romainguy@google.com> Correctly render text when coordinates are not integers.
Bug #3225632

Change-Id: If09759e6e95eb2885362ab3ba088cf5aae64c7bf
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
a5ef39a21683189e5906c9f252b997f0508e350d 04-Dec-2010 Romain Guy <romainguy@android.com> Don't render degenerate triangles in 9patches.
Bug #3251983

Change-Id: Ib0b38a7b8111542372f4c4c106b6321c26fe4ad4
ebug.h
penGLRenderer.cpp
penGLRenderer.h
atch.cpp
atch.h
roperties.h
bd41a11078e94b755c8b6f78e1e4242c715fccd4 03-Dec-2010 Romain Guy <romainguy@google.com> Correctly index transparent quads when generating 9patch meshes.
Bug #3250026

Change-Id: Id7e051e9ed81f6b4e7748756503d8055ac7d531a
atch.cpp
5e3af5fcba360916f38753bd505e47040fc87729 02-Dec-2010 Romain Guy <romainguy@google.com> Rescale ColorMatrix' vector to the [0..1] range
Bug #3246354

Change-Id: Idea7a1e6633c71119628315d65315076bc445eb0
kiaColorFilter.cpp
6f72bebe92a4db7b5dc83f4ac5b5fd02e3b4e2cd 30-Nov-2010 Romain Guy <romainguy@google.com> Update 9patch structure when rendering with different divs/colors.
Bug #3221488

Change-Id: Ifc9e42a991d630feadc9e8032322f37504d09d6d
ine.h
penGLRenderer.cpp
atch.cpp
atch.h
atchCache.cpp
atchCache.h
5cafc52fb10bd05c587a7dec41c953c0722f302a 23-Nov-2010 Chet Haase <chet@google.com> Fix hang in native bitmap recycling due to nested mutex locks

Change-Id: Ic37d5408ddb3f68aba6520fb0c78ffde91dfbe62
esourceCache.cpp
esourceCache.h
e7d2295c06ef9b9df6336cbff23007a13fb3f6e4 12-Nov-2010 Chet Haase <chet@google.com> make ResourceCache for display lists thread-safe

Change-Id: I41885b4ae249d7d7c000bab17bf32340ba85ab3a
esourceCache.cpp
esourceCache.h
fe48f65922d4a3cc4aefe058cee5acec51504a20 12-Nov-2010 Romain Guy <romainguy@google.com> Free resources only from the GL context thread.
Bug #3179882

Resources were freed following garbage collections on a worker thread.
This worker thread had no EGL context, which would cause the renderer
to incorrectly assume that the memory was liberated.

Change-Id: Ifdb51f94ddf42641e8654522787bfac532976c7c
aches.cpp
aches.h
isplayListRenderer.cpp
radientCache.cpp
radientCache.h
penGLRenderer.cpp
athCache.cpp
athCache.h
esourceCache.cpp
extureCache.cpp
extureCache.h
tils/GenerationCache.h
01d065795794fa56be660d6346e4830eb7e90a41 11-Nov-2010 Romain Guy <romainguy@google.com> Reduce number of GL calls when drawing with shaders.

Change-Id: I27aca9f6d381d5c7e363d90a93225d185f2ff4e3
penGLRenderer.cpp
kiaShader.cpp
kiaShader.h
e190aa69756aecfaffabdd4c6d32cb6b3220d842 11-Nov-2010 Romain Guy <romainguy@google.com> Add new runtime debug flags.

Change-Id: I07955de166a89b5053c6c13f250bb3e2936ca86e
aches.cpp
aches.h
penGLRenderer.cpp
athCache.cpp
athCache.h
roperties.h
extureCache.cpp
extureCache.h
c15008e72ec00ca20a271c3006dac649fd07533b 10-Nov-2010 Romain Guy <romainguy@google.com> Move all debug flags in a single place.

This change also adds a new memory usage flag. When turned on, the
following is printed after every frame:

D/OpenGLRenderer( 3723): Current memory usage / total memory usage (bytes):
D/OpenGLRenderer( 3723): TextureCache 3766680 / 20971520
D/OpenGLRenderer( 3723): LayerCache 3538944 / 8388608
D/OpenGLRenderer( 3723): GradientCache 135168 / 524288
D/OpenGLRenderer( 3723): PathCache 41180 / 4194304
D/OpenGLRenderer( 3723): TextDropShadowCache 0 / 2097152
D/OpenGLRenderer( 3723): FontRenderer 0 262144 / 262144
D/OpenGLRenderer( 3723): FontRenderer 1 262144 / 262144
D/OpenGLRenderer( 3723): FontRenderer 2 262144 / 262144
D/OpenGLRenderer( 3723): Other:
D/OpenGLRenderer( 3723): FboCache 2 / 12
D/OpenGLRenderer( 3723): PatchCache 31 / 512
D/OpenGLRenderer( 3723): Total memory usage:
D/OpenGLRenderer( 3723): 8268404 bytes, 7.89 MB

This should help tracking possibe memory issues.

Change-Id: I83f483ca1d2dbef904829bce368e33fe5503e8d6
aches.cpp
aches.h
ebug.h
ontRenderer.h
ammaFontRenderer.h
ayerCache.h
penGLRenderer.cpp
penGLRenderer.h
atchCache.h
athCache.h
rogramCache.cpp
rogramCache.h
extureCache.h
f70a7e34953438dd70573dbb6fd3dd34a1bce831 10-Nov-2010 Romain Guy <romainguy@google.com> Fix possible crash when texture is NULL in the drop shadow cache.

Change-Id: I2142c55dbcfebcdf013a7f4ae04b266a60f5ce8a
extDropShadowCache.cpp
9e10841c27d973b930e1b49a099c69d866659505 09-Nov-2010 Romain Guy <romainguy@google.com> Correctly remove unused paths from the cache.

Change-Id: I41d9334dcd9871634037344ab49bf69383498161
isplayListRenderer.cpp
athCache.cpp
athCache.h
extureCache.cpp
extureCache.h
0d200833fdc53f9796698f97c18cefc4a1b82df2 05-Nov-2010 Chet Haase <chet@google.com> Fix GL rendering of translucent surfaces

GL renderer was not initializing scissor correctly for translucent
surfaces, resulting in invisible window backgrounds in some cases
like fading popup windows

Change-Id: I87a964986e1ba2c4f59708c8892c5fa71903e6fc
penGLRenderer.cpp
0fe478ea04720a57ef3919dbc23711bc7eba517f 08-Nov-2010 Romain Guy <romainguy@google.com> Support nested display lists.

Change-Id: I3815a2832fc0f722c668ba8f51c5f177edb77c94
isplayListRenderer.cpp
isplayListRenderer.h
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
7f78b0c3ae6222b39f6240524390de9764f21764 04-Nov-2010 Romain Guy <romainguy@google.com> Lines would not set the scissor before drawing.

Lines were not drawing in Calendar because they were getting clipped
by the previous clip rectangle. This change simply updates the scissor
as needed. This change also reduces the number of state changes in GL.

Change-Id: I41ab13dca3a33cfa6d1a44371c48852ab418b04e
penGLRenderer.cpp
penGLRenderer.h
1041aded2df45094c36831028245fb7c5e9b67b7 04-Nov-2010 Romain Guy <romainguy@google.com> Fix possible rendering issue when drawing a path.

Change-Id: I25f2e609589f0dd9294bcf7930de6398c0d7e377
athCache.cpp
e45362cad94c014d8b3765cb102db0f8c0d92500 04-Nov-2010 Romain Guy <romainguy@google.com> Fix rendering bug with saveLayerAlpha/drawColor.

drawColor() was not calling quickReject because it fills the clip region
and thus always passes the test. However, quickReject also checks whether
the current layer is invisible. drawColor() now performs the same check
and avoid drawing inside an invisible layer.

Change-Id: I63d0e9a8a9c0fba774f0f5c3870d58e6ed96fbd1
penGLRenderer.cpp
5ec9924d24495822b589f1a17996655d66273b30 04-Nov-2010 Romain Guy <romainguy@google.com> Fix rendering issue with layers.

Change-Id: I1d511ab2707000762a942d32c300a9944ab38603
penGLRenderer.cpp
5b3b35296e8b2c8d3f07d32bb645d5414db41a1d 28-Oct-2010 Romain Guy <romainguy@google.com> Optimize FBO drawing with regions.
This optimization is currently disabled until Launcher is
modified to take advantage of it. The optimization can be
enabled by turning on RENDER_LAYERS_AS_REGIONS in the
OpenGLRenderer.h file.

Change-Id: I2fdf59d0f4dc690a3d7f712173ab8db3848b27b1
ndroid.mk
aches.cpp
aches.h
isplayListRenderer.cpp
isplayListRenderer.h
xtensions.h
boCache.h
ontRenderer.cpp
ontRenderer.h
ammaFontRenderer.h
radientCache.h
ayer.h
ayerCache.h
ine.h
atrix.cpp
atrix.h
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
atch.cpp
atch.h
atchCache.h
athCache.h
rogram.cpp
rogram.h
rogramCache.h
roperties.h
ect.h
esourceCache.h
kiaColorFilter.h
kiaShader.h
napshot.h
extDropShadowCache.h
exture.h
extureCache.cpp
extureCache.h
ertex.h
tils/Compare.h
tils/GenerationCache.h
tils/SortedList.h
tils/SortedListImpl.h
f887594d0e83542d8b374d294b62a1bff606478f 27-Oct-2010 Romain Guy <romainguy@google.com> Merge "Remove unnecessary GL calls."
746b7401ceb86b5f2805f8c0d3b39ac739152015 27-Oct-2010 Romain Guy <romainguy@google.com> Remove unnecessary GL calls.

This change batches calls to glScissor() and removes extra GL
queries and glActiveTexture() calls.

Change-Id: I1cd079d314f87cd9c088f95c8d4909c2f860f6aa
aches.cpp
aches.h
penGLRenderer.cpp
penGLRenderer.h
ad93c2bb63dfc813b2eefa1043aa63afbddce655 23-Oct-2010 Chet Haase <chet@google.com> Optimizing ColorFilter in display lists

Change-Id: Ie4d5e5b0bc45e0ce47bba144049303c270762e54
isplayListRenderer.cpp
isplayListRenderer.h
esourceCache.cpp
esourceCache.h
kiaColorFilter.cpp
kiaColorFilter.h
dcaff67a807de225bc7e5b6dccc98fa15b329512 26-Oct-2010 Chet Haase <chet@google.com> Merge "DisplayList optimizations and fixes."
d98aa2de9ab18e09c2be1997f41212740f51f6e6 26-Oct-2010 Chet Haase <chet@google.com> DisplayList optimizations and fixes.

We now use a copy of SkPaint objects to avoid having it changed from under us.
We reuse copies that have not changed. We also copy the SkMatrix every time to
avoid the same problem.

Change-Id: If3fd80698f2d43ea16d23302063e0fd8d0549027
isplayListRenderer.cpp
isplayListRenderer.h
esourceCache.cpp
esourceCache.h
extureCache.cpp
extureCache.h
9bca4793a33d2714b306d69ceb870925a588fe71 26-Oct-2010 Romain Guy <romainguy@google.com> Small cleanup.

Removes unnecessary forward class declaration, make Caches::currentBuffer
private instead of public.

Change-Id: Idba6325c8c602d89239e667cb8ec87e7943f8e75
aches.cpp
aches.h
atch.cpp
3e3ba155fc0ef7a7f40f06762240d9ba22f62b19 26-Oct-2010 Romain Guy <romainguy@google.com> Don't change texture unit when not needed.

Change-Id: Ifa84426d234f2122402cb13533cb5964f1ce95ec
penGLRenderer.cpp
8164c2d338781c3a3c4a443941070dca5d88f2a7 26-Oct-2010 Romain Guy <romainguy@google.com> Don't change textures wrap modes on every draw.

Change-Id: If6d3f313778cc7f3e803a063338539c8b3e165e3
penGLRenderer.cpp
penGLRenderer.h
kiaShader.cpp
kiaShader.h
exture.h
715a89ebbf3f8c7a4621fc3a1396e6c1539bea28 24-Oct-2010 Chet Haase <chet@google.com> Merge "Fix Caches singleton to avoid resource leaks"
dd78ccacff83f0714ad90be98b58ad85f5d08c66 23-Oct-2010 Chet Haase <chet@google.com> Fix Caches singleton to avoid resource leaks

The declaration of Singleton objects must be in CPP files (not header
files) to avoid creating separate instances of what is supposedly a
single object.

Change-Id: Ie903384824a458b5572f3ce5b6cfb359c18a9c44
ndroid.mk
aches.cpp
aches.h
ae88e5e8e9cb6c9539314c4360c5b20f8ec1fefc 23-Oct-2010 Romain Guy <romainguy@android.com> Fix rendering issue with layers.

A change was made earlier in the renderer to not snap the current clip rect
on every clip operation. The clip rect must not be snapped to pixel boundaries
before being used for pixel precision operations. Some operations were doing
this correctly, others were not. For instance, a layer was always created by
rounding to the correct pixels, but composing a layer was done with a non
rounded clip, thus resulting in slightly odd behaviors.

Change-Id: I31c2cf0a343450470bcd449c3f13fe37648b9c7c
penGLRenderer.cpp
ect.h
58ae6db4ff8a9d0910e1183ee8be9a038a2712a6 22-Oct-2010 Romain Guy <romainguy@android.com> Don't use two different variables to refer to mSnapshot.

Change-Id: Ie4a0616d2fe0b040ac14b734a9ddf77bf1f35b0c
penGLRenderer.cpp
ae517591d96be39f5f18a1716c856ade13a8bcc7 22-Oct-2010 Romain Guy <romainguy@android.com> Don't perform glCopyTextImage with coordinates outside the buffer.

Bug #3122179

Change-Id: I91ed397e9e553a8eeb69d82d0c5b1e49a3cdd5ff
penGLRenderer.cpp
5c13d89c1332fcc499379b9064b891187b75ca32 08-Oct-2010 Chet Haase <chet@google.com> Optimizing display lists by referencing pointers to resources instead of copying them

Change-Id: I81ad3551d74aa1e5bb64d69e33d2eb29a6c1eb6a
ndroid.mk
aches.h
isplayListRenderer.cpp
isplayListRenderer.h
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
esourceCache.cpp
esourceCache.h
kiaShader.h
50c0f093d942a59d4e01b2c76d26c0e9d6ed796c 19-Oct-2010 Romain Guy <romainguy@google.com> Solve rendering issue with embedded WebViews.
Bug #3094017

The blending mode was not appropriately set after WebView released the
context.

Change-Id: Ib36d48e82c12f6d131dd5a0bcde9106925b8da63
penGLRenderer.cpp
2665b85b2bd08faabf7c520a622a0e4d3465245f 19-Oct-2010 Romain Guy <romainguy@google.com> Small cleanup.

Change-Id: I0e5b9154a2d93af793d62f462d68cb7c6c3f6d75
atch.cpp
atch.h
athCache.h
tils/Compare.h
03750a067e818ca7fbd0f590e2ff6a8fded21e6c 18-Oct-2010 Romain Guy <romainguy@google.com> Use VBOs to render most geometries.

Change-Id: I4360dc4fe5693ab425450c107282b2c22db4dca7
ndroid.mk
aches.h
ine.h
atrix.cpp
penGLRenderer.cpp
penGLRenderer.h
atch.cpp
atch.h
atchCache.cpp
athCache.h
tils/Compare.h
054dc1840941665e32036f9523df51720ad069c8 16-Oct-2010 Romain Guy <romainguy@google.com> Don't draw entirely transparent 9patch meshes.

Change-Id: If3e62e18b8e0dbde8a22f8ede2889b86500a4dc2
ontRenderer.cpp
penGLRenderer.cpp
atchCache.cpp
9d13fe25f4f10b25776b1dc5c858f9ebb0b28b30 16-Oct-2010 Romain Guy <romainguy@google.com> Fix text rendering artifact.

Change-Id: I50f47207846e4208d363dde4e8f5f1a0f23d2d75
penGLRenderer.cpp
e5ebcb0107a939395e03592fd44c746cd09e311d 15-Oct-2010 Romain Guy <romainguy@google.com> Fix clipping issue in StackView.

Change-Id: I7ec28f25c3993a2bd7ef6399ba1923839d239905
atrix.cpp
penGLRenderer.cpp
d2a1ff003b9b1212c9ab4b5f679b5b097720a359 14-Oct-2010 Romain Guy <romainguy@google.com> Fix text rendering issue.

The local clip rect could be off by one pixel when a 3D transform
was applied to a text primitive. This would cause small rendering
glitches in Launcher in particular.

Change-Id: I1254f6a5838c26810cbe969b096679d40b8dd504
penGLRenderer.cpp
napshot.h
4afdf666fdb034834c48445570ed9d6f4133fc71 14-Oct-2010 Romain Guy <romainguy@android.com> Color filters were ignored by the program cache fast path.

Change-Id: I08f2f02d356234a674be778d088e0558fd49c849
rogramCache.cpp
rogramCache.h
93d2361c6d294c390cb5c4a13bd1b88dcd465fd7 14-Oct-2010 Romain Guy <romainguy@google.com> Fix layer rendering glitch.

Change-Id: If2f987fe5526fc88743ca3e91edde4f8232ff658
penGLRenderer.cpp
ect.h
909cbaf8f92d69f507bbdba9e5aa960d1e6c7a1f 14-Oct-2010 Romain Guy <romainguy@google.com> Don't draw TextView's alpha layers when not needed.

Change-Id: Iedf42cbc62d727f18500c78fcccf2d081a761fec
penGLRenderer.cpp
5d794412e3e429e47404395badcd11b0b8639e8b 14-Oct-2010 Romain Guy <romainguy@google.com> Small potential performance improvement for fonts rendering.

Change-Id: If59c1e7803b84340fbc8b31ce6171ef0e5dc6189
ontRenderer.cpp
99bcdc52dcb365ed7d8cfa13540fb33fbcbbac9d 14-Oct-2010 Romain Guy <romainguy@google.com> Return identity matrix when rendering in an FBO.

Change-Id: I57438e745b30c8cfe16c269f3cafcd719049d705
penGLRenderer.cpp
penGLRenderer.h
41030da16856c8869e1e51d4a0405432fa96614e 13-Oct-2010 Romain Guy <romainguy@google.com> Add a getNativeMatrix() API.

This API can be used by WebView to apply the appropriate transform
on its rendering.

Change-Id: I79aa39a29805f462fb08226370328815e74bdc52
penGLRenderer.cpp
penGLRenderer.h
eb07af687319a0f52c219c3c0c1b73162fce9d04 13-Oct-2010 Romain Guy <romainguy@google.com> Optimize layer clears.

Don't clear the entire texture when we use textures that are bigger
than the layer itself. This will save time during the glClear() calls.

Change-Id: I06f3259ba62affb3708ba69ea41418832c7e1a65
penGLRenderer.cpp
e91080581f467d55913a8c5ab53dedc2dab2e5b6 13-Oct-2010 Romain Guy <romainguy@google.com> Tweak layers caching for better performance in Launcher.

Change-Id: Ia6e67699d98f69c8a93385b3ecbdd814c7b16921
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
roperties.h
1f114a55b5eaaa81bd302c9ad851362512b61e2f 13-Oct-2010 Romain Guy <romainguy@google.com> Remove logging.

Change-Id: Ibcb11d704653d8875e22629ea39e4ee2ebce3c22
atchCache.h
4bb942083a0d4db746adf95349108dd8ef842e32 13-Oct-2010 Romain Guy <romainguy@google.com> Optimize 9patch rendering.

This change detects empty quads in 9patches and removes them from
the mesh to avoid unnecessary blending.

Change-Id: I4500566fb4cb6845d64dcb59b522c0be7a0ec704
isplayListRenderer.cpp
isplayListRenderer.h
atrix.cpp
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
atch.cpp
atch.h
atchCache.cpp
atchCache.h
athCache.h
tils/Compare.h
9db91243c5ace4421091557b76a0b1cbd2312fec 12-Oct-2010 Romain Guy <romainguy@google.com> Simplify black texture fragment shader.

Change-Id: If2d43f92f4c98ec128692761a670b0f31207a3c0
rogramCache.cpp
c00972bb162779e52d1b0d8f662a9f6033bf9182 12-Oct-2010 Romain Guy <romainguy@google.com> Don't recreate a new texture every time we draw a layer.

Change-Id: I3c28aff5acffc7c6f1ac74805869725426c62d28
penGLRenderer.cpp
dbc26d2ba13f80a7590c57de2d80530d96832969 12-Oct-2010 Romain Guy <romainguy@google.com> Don't draw fully transparent views/primitives.

Change-Id: Icd7d8ef1f57b51a24faf32f7004125e6300d4fdc
penGLRenderer.cpp
rogramCache.h
napshot.h
707b2f78ccaa09965d7e030fda3a883ce9b75ea8 12-Oct-2010 Romain Guy <romainguy@google.com> Optimize GLSL shaders.

Change-Id: I9a5e01bced63d8da0c61330a543a2b805388a59d
penGLRenderer.cpp
rogram.cpp
rogram.h
rogramCache.cpp
rogramCache.h
7537f856f9076a84db04d8de447f6527b67166fd 11-Oct-2010 Romain Guy <romainguy@google.com> Improve performance of linear gradients.

Change-Id: If1caee31fc045dea13a4c5c10f25f2ffd325c4f8
rogramCache.cpp
21b028a44f3e0bd9b0f0432b8b92c45f661d22a4 09-Oct-2010 Romain Guy <romainguy@google.com> Move GenerationCache to the utils directory.

Change-Id: I210ffa8f1d76a102bb7d971c649c20a74d03fbe6
enerationCache.h
radientCache.h
atchCache.cpp
athCache.h
extDropShadowCache.h
extureCache.h
tils/GenerationCache.h
2728f961614a385df1f056fc24803a9f65c90fab 09-Oct-2010 Romain Guy <romainguy@google.com> Don't update 9patches on every frame.

Change-Id: I7ffb2365f83e0453e7d0a0cdcb3fc9308b305238
penGLRenderer.cpp
atch.h
atchCache.cpp
atchCache.h
roperties.h
8550c4c7b5952b7a4e1e0ede95c9492d03099a13 09-Oct-2010 Romain Guy <romainguy@google.com> Better cache for layers, reduce memory usage and increase framerate.

Change-Id: I5ff864a361db4791bd5ff6be716f7ce692ef572d
ndroid.mk
enerationCache.h
ayer.h
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
roperties.h
tils/SortedList.h
tils/SortedListImpl.cpp
tils/SortedListImpl.h
14830948d02f768c41b97b7a8d15e1b3cab78267 08-Oct-2010 Romain Guy <romainguy@google.com> Add 3D transforms support to all gradients.

Change-Id: I61409edd00dab3a11684a3f5e4f7df0afc734758
rogramCache.cpp
kiaShader.cpp
kiaShader.h
6b7bd24659fb175fe1f0e97c86c18969918b496a 07-Oct-2010 Romain Guy <romainguy@google.com> Don't clear the framebuffer when not needed.
isplayListRenderer.cpp
isplayListRenderer.h
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
e3095e0c1e2a4a4f34f741aa386eae56536ca5aa 07-Oct-2010 Romain Guy <romainguy@google.com> Apply 3D transformations to gradient shaders.

This fixes only linear gradients. Sweep and radial gradients, as well as
bitmap shaders, will be fixed in a future commit.

Change-Id: I4eee4ff62e9bbf3b9339fc111a780167449ecfef
rogramCache.cpp
kiaShader.cpp
kiaShader.h
eb99356a0548684a501766e6a524529ab93304c8 06-Oct-2010 Romain Guy <romainguy@google.com> Optimize saveLayer() when the clip flag is set.

This speeds up applications, especially Launcher.
boCache.cpp
boCache.h
enerationCache.h
ayer.h
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
penGLRenderer.h
roperties.h
napshot.h
7adaf3d1aa18c7e521f7154e545fe52d329763c3 05-Oct-2010 Romain Guy <romainguy@google.com> Add support for paletted textures.

Change-Id: I36e6069bd58f78c609cdd1f3e4560c98f128f48e
extureCache.cpp
extureCache.h
bdb801ca993bcccbf2a4c2401d1720c3fa523777 05-Oct-2010 Romain Guy <romainguy@google.com> Remove logs to reduce logcat spam.

Change-Id: I5fc295b05b5d82bb86827b88e94dd51e8bcdc7d3
penGLRenderer.cpp
11fd654a90359043e17ac78c1a3d6578c38b5c42 05-Oct-2010 Romain Guy <romainguy@google.com> Reorder logs.

Change-Id: I4adbd53662e1f509c860898c8ff9d19eaabd6d5b
aches.h
3b3e457c270a4bc5fe3047e815b5867d99b36f8a 04-Oct-2010 Romain Guy <romainguy@google.com> Snap the clip rectangle to pixel boundaries.

Change-Id: Iac2765303552f385995fe46e219af456e0501da7
napshot.h
e8cb9c14309b0f01c0159efdf9a7198f44a62642 04-Oct-2010 Romain Guy <romainguy@google.com> Apply bilinear filtering on text only when necessary.

Change-Id: Ic903f4b5d30e9c92528c6291941896efe4729ee3
ontRenderer.cpp
ontRenderer.h
atrix.cpp
atrix.h
penGLRenderer.cpp
1de1083e98cde9bdd5e8539dbc54fdea6531906e 03-Oct-2010 Romain Guy <romainguy@android.com> Initialize font texture cache.

Now that text is renderer using bilinear filtering, each character is surrounded by
a 1 pixel border. This border needs to be initialized to a transparent value.

Change-Id: I26d3195db4bd576ac1f2da4c8f8e4dd18768bf12
ontRenderer.cpp
7975fb6d12cb1eb96b75e3a563627cd4c4081bd6 02-Oct-2010 Romain Guy <romainguy@google.com> Apply bilinear filtering to text.

Change-Id: I2c81ad657ee2a11a2139e0b11ae3749db54c0749
isplayListRenderer.cpp
isplayListRenderer.h
ontRenderer.cpp
ontRenderer.h
0bb5667b4ef91fefd0500fae0186789d15d54e0e 01-Oct-2010 Romain Guy <romainguy@android.com> Fix INVALID_OPERATION error with layers rendering.

This change is a workaround for a driver bug that causes an INVALID_OPERATION
to be thrown on every glCopyTexSubImage() call. This change also adds a new
test for gradients local matrices.

Change-Id: I41b7437481026702d0a3a9677f099b4557c0a84e
ayer.h
ayerCache.cpp
penGLRenderer.cpp
d79991277043d6bdbd90bb63fd8aff73ef9e06a5 01-Oct-2010 Romain Guy <romainguy@google.com> Make simple paths made of lines work.

Bug #3041098

Change-Id: Ife9c3f01ded10e2bb35b1cdf1a54734d8347fee4
athCache.cpp
b051e895ccb696604349c6c5efe7c4747e1d1ab6 29-Sep-2010 Romain Guy <romainguy@google.com> Add display lists caching.

Change-Id: Iac3a248a81ed8cb076a83ef9d186b8ebba685b4c
isplayListRenderer.cpp
isplayListRenderer.h
penGLRenderer.h
4aa90573bbf86db0d33a3a790c5dbd0d93b95cfe 27-Sep-2010 Romain Guy <romainguy@google.com> Adding display lists to the GL renderer (checkpoint.)

Change-Id: Iaa49757600a53b39369dbb23f8c3feab282518e6
ndroid.mk
isplayListRenderer.cpp
isplayListRenderer.h
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
atchCache.cpp
atchCache.h
e2d345ea67e2960b37bfdc0fc8626d1bfa747404 25-Sep-2010 Romain Guy <romainguy@google.com> Add debug mode to measure performance.

Change-Id: I9d4c84034dc200b99c8266165942a7cdbcb5c0c5
ndroid.mk
aches.h
boCache.cpp
boCache.h
ontRenderer.cpp
penGLDebugRenderer.cpp
penGLDebugRenderer.h
penGLRenderer.cpp
penGLRenderer.h
roperties.h
38c85b907a478af96d71b9a5df5a2066b8475311 23-Sep-2010 Romain Guy <romainguy@android.com> Correctly initialize/refresh layers.

Change-Id: Id8cdcf587b13098460f7d4aa1bd17708784d89bb
ayer.h
ayerCache.cpp
penGLRenderer.cpp
e20ecbd12d26467754a7770d44bcce2ea92335ef 23-Sep-2010 Romain Guy <romainguy@android.com> Draw text decorations with lines instead of rectangles.

Change-Id: Icd25c85c3a24da96a3d2f76f9477da6f87e0303c
penGLRenderer.cpp
29d8997bd43b7c4ad37fc3d6f91eaafa74913c88 23-Sep-2010 Romain Guy <romainguy@android.com> Fix OpenGL errors in various places.

Change-Id: I3a4e115d8fb13b6c443e65460d92987b16f2524c
aches.h
penGLRenderer.cpp
penGLRenderer.h
kiaShader.cpp
kiaShader.h
extureCache.cpp
8c749f87d29e1a363ddf9027c3a51753c612d510 22-Sep-2010 Romain Guy <romainguy@android.com> Fix texture corruption issue, faster re-upload of textures.

Bug #2950691

Change-Id: I57e2bc1d1a23e8683c25de7d09d6f5af2df59f41
extureCache.cpp
extureCache.h
ddb80bebb0776e6d852aab6e8bba5d5591847a55 21-Sep-2010 Romain Guy <romainguy@google.com> Add support for circular gradients to the GL renderer.

This change also adds full support for local transformation matrices on
sweep and radial gradients.

Change-Id: Id8773bc0766575190e3f3d51984fc5e57b266c3f
atrix.cpp
atrix.h
rogramCache.cpp
kiaShader.cpp
kiaShader.h
ee916f14cbd1fe1422c063ce2ef7b185e2bc5c6f 21-Sep-2010 Romain Guy <romainguy@google.com> Add support for SweepGradient in the GL renderer.

Change-Id: I7aa397ed4e34655ead9ba1f5b4ce087665e0f022
radientCache.cpp
radientCache.h
rogramCache.cpp
rogramCache.h
kiaShader.cpp
kiaShader.h
b5ab4173e0927e4668a45298c9900cd8007584e1 18-Sep-2010 Romain Guy <romainguy@google.com> Fix positioning of 1 pixel wide lines (esp. non AA lines.)

Change-Id: Ic155cac72f351edae35dffdfbb236954f57ba7de
ine.h
penGLRenderer.cpp
c95c8d6bf8fda5c4e8ebd0033b789be7868e6e07 18-Sep-2010 Romain Guy <romainguy@google.com> Add support for non AA lines.

Change-Id: Id5200e94815404d62760437d0d2dbb0a9276c700
ine.h
penGLRenderer.cpp
penGLRenderer.h
31529ff7918ce891fba9a660d0a861eb313ea554 17-Sep-2010 Romain Guy <romainguy@google.com> Correctly free memory.

Change-Id: I08fcbfa7d27ae413e0a8e8ca6ea305c8530a72c1
ine.h
atch.cpp
rogram.cpp
759ea80dca64ad652110a129e0d8bf93fea79f61 17-Sep-2010 Romain Guy <romainguy@google.com> Add support for drawLines(), with anti-aliasing

Change-Id: I16c0593c5671490909dec13a85df601e1428a1a6
ine.h
penGLRenderer.cpp
penGLRenderer.h
atch.cpp
atch.h
ect.h
kiaShader.cpp
kiaShader.h
bf434114cbf55b216fdc76fc8d65a75e84c9dab5 16-Sep-2010 Romain Guy <romainguy@google.com> Snap layer bounds to pixel boundaries.

Change-Id: I272ceebf469a119f01ea9d73cdd68519afdffa99
penGLRenderer.cpp
ect.h
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
ayerCache.cpp
penGLRenderer.cpp
penGLRenderer.h
6820ac8b14b4558f5d8b833dde80895306a3e137 16-Sep-2010 Romain Guy <romainguy@google.com> Fix 9patch rendering.

Change-Id: Ic4c18ff483cca95fbabcb10843f7714efe488adb
penGLRenderer.cpp
penGLRenderer.h
atch.cpp
atch.h
87a76578f76f4a6bceb187da6b7a01899ca0d85a 14-Sep-2010 Romain Guy <romainguy@google.com> Docs updates.

Change-Id: Iff395e1c6d81a484a2c4ad6e88357c0134971b78
penGLRenderer.cpp
napshot.h
1c740bce8a762f02b5283045a0e2de7c8fb41277 14-Sep-2010 Romain Guy <romainguy@google.com> Document the implementation of saveLayer().

The implementation is simple but tricky. Leave explanations to my
future self so that I don't invent a time machine to come back to
now and slap my self.

This change also simplifies the way the GL blending function is
chosen when compositing a layer. It reuses existing OpenGLRenderer
APIs and is easier to understand.

Change-Id: I1b9cf8c5d51e09836d85b8cf157a1c284aa65c59
penGLRenderer.cpp
penGLRenderer.h
81ab046a1127bd2ad397e6d1c6f8021b202a97ff 14-Sep-2010 Romain Guy <romainguy@google.com> Forgot the return value...

Change-Id: Iccf369a613c1cf83f3e948460c567291b084fad2
penGLRenderer.cpp
8411f336c786379c5a03106e9ed3bc8622b579a5 14-Sep-2010 Romain Guy <romainguy@google.com> Fix rendering issue with layers intersecting the clip rect.

Change-Id: Icbe35194fa219ef13ce639d33631235f8d7df3d7
penGLRenderer.cpp
58ef7fbf16864164efe98bf613b15c64deb1afc0 13-Sep-2010 Romain Guy <romainguy@google.com> Forces windows to draw the first time they show.

Change-Id: I239572ee49bc60f30d957f548104e75844859a93
ontRenderer.cpp
2bffd268f135df8308c9e67af110525a5c463424 13-Sep-2010 Romain Guy <romainguy@google.com> Fix text rendering issue with text scaling.

Change-Id: I1f3ae40025697e8f8ca0616ee6550fe215cadcc8
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
8694230ff25fa0a60e480d424843e56b718f0516 12-Sep-2010 Romain Guy <romainguy@google.com> Optimize calls to glCopyTexImage2D().

Change-Id: I34ee87bd4472864f440916e03a2894fae24bbe4a
penGLRenderer.cpp
penGLRenderer.h
f607bdc167f66b3e7003acaa4736ae46d78c1492 11-Sep-2010 Romain Guy <romainguy@google.com> Correct implementation of saveLayer().

Change-Id: I5375126636913e0a84f2d6bbd0ebe40d2e4f2763
ayer.h
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
penGLRenderer.h
rogramCache.cpp
rogramCache.h
napshot.h
a5aed0d58962a24c44728ffc46dc9e1ba2f9fda5 09-Sep-2010 Romain Guy <romainguy@google.com> Add support for advanced blend modes with the framebuffer.

This adds the ability to blend with the framebuffer using Darken,
Lighten, Add, Multiply, Overlay and Screen.

Change-Id: Iae01a53797d4ad39c373cba6ff2a42293129da1a
xtensions.h
penGLRenderer.cpp
penGLRenderer.h
rogramCache.cpp
rogramCache.h
d90f23e24a4d1768d5a7ed0e7072e67af6330a45 09-Sep-2010 Romain Guy <romainguy@google.com> Do not convert 8888 bitmaps to 565 when doing a copy.

Bug #2988077
This change keeps the 8888 format for new bitmaps and also keeps,
when possible, the opaque flag.

Change-Id: Ia61f2e89936916b329212a4c59a7d815c329f84e
penGLRenderer.cpp
183f17e7eb2f51be24489e7b1bd3e2e5e4bc579a 09-Sep-2010 Romain Guy <romainguy@google.com> A Path can exist in several cache entries.

Change-Id: I742f7425d2b6bef753ed3e04fb39ebb103b2dc00
athCache.cpp
a2341a9f6addcd79723965ec5b1a1c5ae0f8bd65 09-Sep-2010 Romain Guy <romainguy@google.com> Purge Skia objects from GL caches as needed.

Change-Id: I754c671cf790ad5ae8bf047ad328034217da4ecc
aches.h
enerationCache.h
radientCache.cpp
radientCache.h
athCache.cpp
athCache.h
extureCache.cpp
extureCache.h
9aaa8269a3e7291aab84d01c3fc9c744d8f2d2f4 09-Sep-2010 Romain Guy <romainguy@google.com> Fix possible infinite loop when purging textures.

Change-Id: Ib05b398ae03e734da2dab0496df416fed4570b1c
enerationCache.h
atchCache.h
exture.h
extureCache.cpp
extureCache.h
8aef54fa17f2a3753d9a8f2027629bc480088f69 02-Sep-2010 Romain Guy <romainguy@android.com> Add support for Canvas flags on save.

This is required for the rewrite of layers support.

Change-Id: I5c0867dcf5aeb0392c8d0fbab05febb0eaff70d9
penGLRenderer.cpp
penGLRenderer.h
ect.h
kiaShader.cpp
napshot.h
da8532c6f48b4c10b5e2ccb9e08690341efa1616 31-Aug-2010 Romain Guy <romainguy@google.com> Add hooks for hardware accelerated WebView.

Change-Id: I907cdec8a67594f87749ac46bda85f04af5a2003
penGLRenderer.cpp
penGLRenderer.h
b45c0c9774bd19a9dbe77d149abae4e124b08bf6 27-Aug-2010 Romain Guy <romainguy@google.com> Apply gamma correction to font rendering.

Change-Id: I1b05f40e356221b2a5eb9400e67d77ecd98ed6c4
ndroid.mk
aches.h
ontRenderer.cpp
ontRenderer.h
ammaFontRenderer.cpp
ammaFontRenderer.h
penGLRenderer.cpp
roperties.h
extDropShadowCache.cpp
f6fcac7ce16a631ca2b101f5bbebe58af5b247a8 25-Aug-2010 Romain Guy <romainguy@google.com> Fix passion build

Change-Id: I93322bd36a004ac5aa9a0409d22dbf36a2da1680
aches.h
fb8b763f762ae21923c58d64caa729b012f40e05 24-Aug-2010 Romain Guy <romainguy@google.com> Use only one GL context per process, share chaches.

Change-Id: Ieabaa25338d2f4b8d4fd90e7401ad6e7452eae11
aches.h
enerationCache.h
radientCache.cpp
radientCache.h
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
penGLRenderer.h
atchCache.cpp
atchCache.h
athCache.cpp
athCache.h
rogramCache.h
roperties.h
extDropShadowCache.cpp
extDropShadowCache.h
extureCache.cpp
extureCache.h
a80d32f7b69aa37026ab99e4ade1ad86dae76a81 21-Aug-2010 Romain Guy <romainguy@google.com> Add support for textScaleX.

This will not look great because we render fonts using bitmaps, not
paths.

Change-Id: I01b87b81bfbdbfa28460a5d5309d38e2a65e77c4
penGLRenderer.cpp
e9e7fd0813f1485d20c6cd0014d59aff53c35d84 19-Aug-2010 Romain Guy <romainguy@google.com> Update OpenGLRenderer test to test opaque ARGB8888 bitmaps.

Change-Id: I7159825f4b1d6f5a1cd09ec091994801b52b6bda
extureCache.cpp
c4d8eb6fb7c88c5c4da38b0b113c24cc4b78c0b7 19-Aug-2010 Romain Guy <romainguy@google.com> Speedup TextView fades (no more layers required.)

Also fixes a crash in the drop shadows cache and improves
drop shadows caching.

Change-Id: I9c0208a49467f9201d786ae0c129194b8d423923
extDropShadowCache.h
8b55f377655d13a445b08a0a8ed09b6e95c752b0 19-Aug-2010 Romain Guy <romainguy@google.com> Fix drawing issues with layers.

Prior to this change layers would clip their content incorrectly. They would
also not apply alpha properly.

Change-Id: Id7b3aaa7dbdc51de68fe050e64458f68e40503fd
penGLRenderer.cpp
napshot.h
1f8c9602eeff0a35f8af70bd3fdcd770f0127775 18-Aug-2010 Romain Guy <romainguy@google.com> Fix the build.

Change-Id: I8bd418ba21e3e3f68b793030398d1a5e933dfb19
penGLRenderer.cpp
2542d199745cdf3ec910b8e3e4cff5851ed24e9b 18-Aug-2010 Romain Guy <romainguy@google.com> Layers were using an extra Snapshot causing extra clipping.

Bug #2919310

Change-Id: I72ccd44bba7a3f3db72f581aa96198b6226e4478
penGLRenderer.cpp
penGLRenderer.h
napshot.h
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
penGLRenderer.cpp
napshot.h
1d83e1981c8b89da93dff37a4f8b2b1ad8480b44 17-Aug-2010 Romain Guy <romainguy@google.com> Correctly set the viewport in layers.

Bug #2919295

Change-Id: I16ce79ab0d5747cb01c6c1abe531da3dfd93fb54
atrix.cpp
penGLRenderer.cpp
napshot.h
extDropShadowCache.h
0a41749953f35d33f61b3119e3161a82bb5fa59e 17-Aug-2010 Romain Guy <romainguy@google.com> Cleanup, better code reuse.

Change-Id: Ib86a7309ae579cce3b7cf464782c34e70a74c616
penGLRenderer.cpp
penGLRenderer.h
1e45aae5de003657e5d18f74d34998f5de5db5b7 14-Aug-2010 Romain Guy <romainguy@google.com> Add drop shadows.

Change-Id: Ic6a72409d4785968d1fbdff229f17ee5c00b240b
ndroid.mk
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
athCache.cpp
roperties.h
extDropShadowCache.cpp
extDropShadowCache.h
0ba681bce12d522c5575dfccb5a6ca12f0fba746 13-Aug-2010 Romain Guy <romainguy@google.com> Fix GC issue, fix local shader transformations.

Change-Id: I208bdf89815dcd18dcadd43df932a77362918435
atrix.cpp
atrix.h
kiaShader.cpp
af28b514964861d81b48902f942f706050936d38 12-Aug-2010 Romain Guy <romainguy@google.com> Better support for rotation and perspective matrices.

Change-Id: I56b5ae3321735ba5ee42aafc9bc0eb399b9e75b5
atrix.cpp
atrix.h
napshot.h
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
penGLRenderer.cpp
napshot.h
98173a277f8bd6d53d6ff9f7ff09e084f2666fc1 12-Aug-2010 Romain Guy <romainguy@google.com> Delete shaders after a compile error. Also disable extra logging.

Change-Id: I9b1558b0feac3d9b2cca926feeaf73921664cc73
rogram.cpp
rogramCache.h
48daa54d31fc59ec969dcff65eb3cbb0ce879a8d 11-Aug-2010 Romain Guy <romainguy@google.com> Add extra blending modes.

This change adds the following blending modes for shaders and color filters:
Add
Multiply
Screen
Overlay
Darken
Lighten

Change-Id: Iff22f5ce6041b43c71b1857d73013f5010ab3413
rogramCache.cpp
rogramCache.h
a674ab74e359ac73b4c4dd6b1a3a771836ac7e40 11-Aug-2010 Romain Guy <romainguy@google.com> Add support for text underline and strikethru.

Change-Id: I3a0e6643d7cafbdd06d9a908c8cf9347dcaba146
penGLRenderer.cpp
a48a1a87ba17f20f7006eaab21dcedf86c015c13 10-Aug-2010 Romain Guy <romainguy@google.com> Fast text selection drawing.

Change-Id: I93fb1312b47bc05345defa9b6cfe47c0658bb329
kiaShader.cpp
61c8c9c5b2006d18e9310b6521c65b36ffe75ce4 10-Aug-2010 Romain Guy <romainguy@google.com> Fix tons of bugs and add new text rendering support.

Change-Id: I326c66b10784006f6df2f12d38e120cef94cd0d7
ontRenderer.cpp
penGLRenderer.cpp
athCache.cpp
rogramCache.cpp
kiaShader.cpp
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
ndroid.mk
extureCache.cpp
extureCache.h
9cccc2b9bdd4850a3f9679569aaec3ab98477a5d 08-Aug-2010 Romain Guy <romainguy@android.com> Enforce maximum texture size.

When an app tries to render a bitmap or path larger than the GPU's maximum
texture size, the drawing command is ignored and a warning is logged. This
change also makes texture drawing more robust by catching potential errors
during texture creation.

This change also fixes a crash in the FontRenderer. The destructor would
sometimes try to free an uninitialized array.

Change-Id: I95ae0939c52192d97b340aa02417bf6d0c962c57
ontRenderer.cpp
radientCache.cpp
penGLRenderer.cpp
athCache.cpp
athCache.h
kiaShader.cpp
kiaShader.h
extureCache.cpp
extureCache.h
8e3e359e59385e4dee38cedf194a4a58e4ad92a8 07-Aug-2010 Alex Sakhartchouk <alexst@google.com> Merge "Added drop shadow renderer to the font class."
f18136cb3c881a9d16c1a4f0f341732c276936bf 06-Aug-2010 Alex Sakhartchouk <alexst@google.com> Added drop shadow renderer to the font class.

Change-Id: Id243abfbbb58e54f6a05f592a302984b5321e608
ontRenderer.cpp
ontRenderer.h
22158e139a3d6c6a9787ca0de224e9368f643284 06-Aug-2010 Romain Guy <romainguy@google.com> Automatically cleanup textures that don't fit in the cache.

Change-Id: I4f29ed96ea11118b391fb957e1e4d1b8fcef1537
penGLRenderer.cpp
athCache.cpp
athCache.h
exture.h
extureCache.cpp
25ee037fee1607e8a77b1f2e259356e74dd6f645 06-Aug-2010 Romain Guy <romainguy@google.com> Fix incorrect memory cleanup in SkiaShader.

Bug #2895037

Change-Id: Id233c2a8a5b709dc9f26ff60aad989e9583a2382
kiaShader.cpp
7fbcc0492fca03857e3c45064f4aa040af817d55 05-Aug-2010 Romain Guy <romainguy@google.com> Add support for paths.

Rendering is implementing by rasterizing the paths into A8 textures.
This cna be extremely inefficient if the path changes often.

Change-Id: I609343f304ae38e0d319359403ee73b9b5b3c93a
ndroid.mk
penGLRenderer.cpp
penGLRenderer.h
athCache.cpp
athCache.h
rogramCache.cpp
roperties.h
6c07daf86c0d3824e1cd88fea455e2dd7b88cbcd 05-Aug-2010 Romain Guy <romainguy@google.com> Fix native crash in SkiaShader.

Bug #2893733

Change-Id: I7feb9ab113fe0012cf9eb271f2b044f12a5c9c4e
kiaShader.cpp
kiaShader.h
a275354c54b372bdfaae429fd2a2f5c2bdcd5d1e 03-Aug-2010 Alex Sakhartchouk <alexst@google.com> Merge "Adding drop shadow support"
db1938e0e6ef816e228c815adccebd5cb05f2aa8 03-Aug-2010 Romain Guy <romainguy@google.com> Add support for ColorFilters.

Color filters are fully supported and can be used with shaders.

Change-Id: Id90ccf1c81cb462f2431f366f3f8f710d7971e04
ndroid.mk
xtensions.h
penGLRenderer.cpp
penGLRenderer.h
rogramCache.cpp
rogramCache.h
kiaColorFilter.cpp
kiaColorFilter.h
kiaShader.h
89a524ac2d4a36739e51b01b336c0bade77e2ee0 03-Aug-2010 Alex Sakhartchouk <alexst@google.com> Adding drop shadow support

Change-Id: I9b1b9568d6cebc0761d96ab678b018571f705ae1
ontRenderer.cpp
ontRenderer.h
06f96e2652e4855b6520ad9dd70583677605b79a 31-Jul-2010 Romain Guy <romainguy@google.com> Refactor Skia shaders handling.

With this change, Skia shaders can easily be applied to any mesh. This change also
supports ComposeShader. For instance, this can be used to blend a gradient and a
bitmap togehter and paint a string of text with the result.

Change-Id: I701c2f9cf7f89b2ff58005e8a1d0d80ccf4a4aea
ndroid.mk
penGLRenderer.cpp
penGLRenderer.h
rogramCache.cpp
rogramCache.h
kiaShader.cpp
kiaShader.h
b82da65cb1601be504241f36778395cd6cb9f87b 30-Jul-2010 Romain Guy <romainguy@google.com> Fix improper clipping after a save()

Change-Id: I13426a67f20d77e2710bd500d82884098f4be97c
penGLRenderer.cpp
napshot.h
ae5575b3421c8fbe590ab046d7d5f2b36ecfd821 30-Jul-2010 Romain Guy <romainguy@google.com> Fix gradients rendering and destructor crashes.

This changes binds all textures to GL_TEXTURE0, this will have
to be changed when combining shader capabilities.

Change-Id: I02df4f5ba41e9b01ffa52fd7c26b41477c7ed18f
ontRenderer.cpp
enerationCache.h
penGLRenderer.cpp
penGLRenderer.h
napshot.h
889f8d1403761d5668115ced6cbb3f767cfe966d 29-Jul-2010 Romain Guy <romainguy@google.com> Moved all the rendering code to the new shader generator.

The generator supports features that are not yet implement in the
renderer: color matrix, lighting, porterduff color blending and
composite shaders.

This change also adds support for repeated/mirrored non-power of 2
bitmap shaders.

Change-Id: I903a11a070c0eb9cc8850a60ef305751e5b47234
ontRenderer.cpp
atrix.cpp
penGLRenderer.cpp
penGLRenderer.h
rogram.cpp
rogram.h
rogramCache.cpp
rogramCache.h
haders/drawColor.frag
haders/drawLinearGradient.frag
haders/drawLinearGradient.vert
haders/drawText.frag
haders/drawTexture.frag
haders/drawTexture.vert
ac670c0433d19397d4e36ced2110475b6f54fe26 28-Jul-2010 Romain Guy <romainguy@google.com> Generate shaders to cover all possible cases.

With this change, all the vertex and fragment shaders used by the GL
renderer are now generated based on a program description supplied
by the caller. This allows the renderer to generate a large number
of shaders without having to write all the possible combinations by
hand. The generated shaders are stored in a program cache.

Change-Id: If54d286e77ae021c724d42090da476df12a18ebb
ndroid.mk
penGLRenderer.cpp
penGLRenderer.h
rogram.cpp
rogram.h
rogramCache.cpp
rogramCache.h
ertex.h
haders/drawColor.vert
haders/drawLinearGradient.vert
65ef909776c03417d8b597738da54ca211e37e4f 26-Jul-2010 Alex Sakhartchouk <alexst@google.com> When font cache still has empty space,
precache some commonly used characters to reduce studder.

Change-Id: I1f66f57482c4a025672dfd1d8ecaf2b9736cd9a0
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
e8e62a4a032a80409114a37908b5f18ab0080848 24-Jul-2010 Romain Guy <romainguy@google.com> Add text alignment support to drawText().

This change also integrates better support for RTL text.

Change-Id: I6da8f5cf5dc28ca7cf1b22e27b0d853c919e8481
penGLRenderer.cpp
penGLRenderer.h
9b9902ddbb01548f4a0199087b7035e7c10b2ae7 23-Jul-2010 Alex Sakhartchouk <alexst@google.com> Updating parts of font cache as needed instead of the entire map.

Change-Id: If9a37e10197255122acdb5b10a0c356edd942d67
ontRenderer.cpp
ontRenderer.h
51769a68a5cb34e9564740c6a854fcb93018789d 23-Jul-2010 Romain Guy <romainguy@android.com> Cleanup, added properties for the FontRenderer.

Change-Id: I909c74815d3ac394438ad8071d17fef5401dbeed
xtensions.h
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
roperties.h
bd0e6aa0ff0bd8b376772c3e23513a6021bdda87 23-Jul-2010 Romain Guy <romainguy@google.com> Add a way to query GL extensions.

Change-Id: Ic27dbf72289dacf641b640a749fbd40c12cd474f
xtensions.h
ontRenderer.h
penGLRenderer.h
extureCache.cpp
09147fbdc8206a0cac78bfe9083e7e15b3c5689c 22-Jul-2010 Romain Guy <romainguy@google.com> Add support for text culling.

Change-Id: Ibf0adacdc5c64d40a8000b21d7cb0797d63efe29
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
napshot.h
694b519ac647fe998fd396fe0784cc8e179aadc4 22-Jul-2010 Romain Guy <romainguy@google.com> Add text rendering.

Change-Id: Ibe5a9fa844d531b31b55e43de403a98d49f659b9
ndroid.mk
ontRenderer.cpp
ontRenderer.h
penGLRenderer.cpp
penGLRenderer.h
rogram.cpp
rogram.h
haders/drawText.frag
a1db574036c9bc2d397b69f8200594027e1fff16 20-Jul-2010 Romain Guy <romainguy@google.com> Add preliminary support for text rendering.

Change-Id: I547eb631dbda24d13960d54b4144fb8908fd8a49
penGLRenderer.cpp
penGLRenderer.h
c0ac193b9415680f0a69e20a3f5f22d16f8053be 20-Jul-2010 Romain Guy <romainguy@google.com> Add support for linear gradients.

Change-Id: Id15329da065045b3f06fdaed615f33cd57608496
ndroid.mk
radientCache.cpp
radientCache.h
penGLRenderer.cpp
penGLRenderer.h
rogram.cpp
rogram.h
extureCache.cpp
haders/drawLinearGradient.vert
f9764a4f532561f6e2e985ff3b25112f1132ce44 17-Jul-2010 Romain Guy <romainguy@android.com> Add program for linear gradient.

This change adds a new DrawLinearGradientProgram class to enable the drawing
of linear gradients. Two new vertex and fragment shaders are introduced,
based on DrawTextureProgram's shaders.

Change-Id: I885afc076bb6cef8cd3962ae21a086fa6a03bf96
penGLRenderer.cpp
penGLRenderer.h
rogram.cpp
rogram.h
haders/drawLinearGradient.frag
haders/drawLinearGradient.vert
7fac2e18339f765320d759e8d4c090f92431959e 17-Jul-2010 Romain Guy <romainguy@android.com> Add plumbing to support gradients in OpenGL renderer.

The LinearGradient class keeps a copy of the various parameters that
define the gradient. The copies are native arrays to avoid copying
Java arrays on every draw call. The gradient code path is implemented
until OpenGLRenderer::drawRect() (see TODO.) The actual gradient
implementation will be added in a latter change.

Change-Id: I9300d250ef5e2e9c2e097c3116ee71dfc9d752d8
penGLRenderer.cpp
penGLRenderer.h
napshot.h
1e79386ba34f0db38c1b35b22cdf122632534354 17-Jul-2010 Romain Guy <romainguy@android.com> Optimize textures binding.

The renderer is still changing textures' wrap modes every time, this will require
a latter optimization.

Change-Id: I3eb92cb8c886c4a692b7f0ca759911f9371d4d2c
ayerCache.cpp
penGLRenderer.cpp
penGLRenderer.h
extureCache.cpp
079ba2c85b15e882629b8d188f5fbdb42f7f8eea 16-Jul-2010 Romain Guy <romainguy@android.com> Improve clip support (add intersect, union and replace.)

This change also modifies the way the clip is stored. The clip is now
always stored in screen-space coordinates.

Change-Id: I96375784d82dfe975bc6477a159e6866e7052487
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
ect.h
napshot.h
d27977d1a91d5a6b3cc9fa7664ac7e835e7bd895 15-Jul-2010 Romain Guy <romainguy@google.com> Add support for BitmapShader.

This change also fixes an issue with the clip and layers.

Change-Id: I5fd9832098d8cf7ae8eb781ff9bffe7defaea279
penGLRenderer.cpp
penGLRenderer.h
napshot.h
haders/drawColor.frag
haders/drawTexture.frag
3d58c03de0d8877b36cdb78b0ca8b5cac7f600e2 15-Jul-2010 Romain Guy <romainguy@google.com> Do not apply transforms when using drawColor().

This fixes an issue in the way the clip transformations were applied.

Change-Id: I91e7b5d15baf244d1280e48938282bb33609081d
atrix.h
penGLRenderer.cpp
penGLRenderer.h
napshot.h
594f4065141a53427cad6f4fc89219d2f27e1a7d 14-Jul-2010 Romain Guy <romainguy@google.com> Enable 32-bits only assets.

Go away dithering!

Change-Id: Iee5ee2e9430606e732d9b0abb3adc9f68275bd6d
extureCache.cpp
a979474f15b454c8e2963f239a3770e200bb227c 13-Jul-2010 Romain Guy <romainguy@google.com> Cleanup: remove unnecessary parameters.

Change-Id: I5956ef1db6be28a01369387aaeeb65a94656c48c
penGLRenderer.cpp
penGLRenderer.h
92429d9266edf63cf632c132c5936f0e31850988 13-Jul-2010 Romain Guy <romainguy@google.com> Fix premultiplied alpha.

Change-Id: I08da422c5350503e1f4f27b9890f15a813d0c6c7
penGLRenderer.cpp
penGLRenderer.h
6926c72e25b8dec3dd4b84af0819fa1937ae7296 13-Jul-2010 Romain Guy <romainguy@google.com> Correctly support pre-multiplied alpha, optimizations, more stuff.

Add support for the following drawing functions:
- drawBitmap(int[]...)
- drawPaint()

Optimizes shader state changes by enabling/disabling attribute arrays
only when needed.

Adds quick rejects when drawing trivial shapes to avoid unnecessary
OpenGL operations.

Change-Id: Ic2c6c2ed1523d08a63a8c95601a1ec40b6c7fbc9
penGLRenderer.cpp
penGLRenderer.h
rogram.cpp
rogram.h
260e102162322958cf17dbd895cd6bd30dc87e32 12-Jul-2010 Romain Guy <romainguy@google.com> Optimize shader binding changes.

This change also cleans up the internal API a little bit by using mat4
everywhere instead of float[16] (for the ortho matrix for instance.)

Change-Id: I35924c7dc17bad17f30307118d5ed437c2ed37e0
penGLRenderer.cpp
penGLRenderer.h
rogram.cpp
rogram.h
napshot.h
0b9db91c3dc8007b47c8fd4fb9dd85be97201a88 10-Jul-2010 Romain Guy <romainguy@google.com> Remove math from the vertex shader.

Change-Id: I02847a60a8734bf8b3d29ec12e76297795095e38
penGLRenderer.cpp
rogram.cpp
rogram.h
haders/drawColor.vert
haders/drawTexture.vert
16202fc9745e9b11db089ebc8f40119d13732016 10-Jul-2010 Romain Guy <romainguy@google.com> Fix alpha blending and improve fragment shaders performance.

Change-Id: Ib74f6941d25ca6f6a41708e541174eaa7e8d9bc2
penGLRenderer.cpp
rogram.cpp
haders/drawColor.frag
haders/drawColor.vert
haders/drawTexture.frag
haders/drawTexture.vert
fb5e23c327cd5f8f93d1eaa7c10f34d6fd3efb6c 09-Jul-2010 Romain Guy <romainguy@google.com> Refactoring to move vertex computing to the Patch class.

This change is mostly cleanup to keep less code in OpenGLRenderer.

Change-Id: I954375143b2943829457ab470423729b60b844f5
ndroid.mk
penGLRenderer.cpp
penGLRenderer.h
atch.cpp
atch.h
82ba814ca0dea659be2cc6523bc0137679d961ce 09-Jul-2010 Romain Guy <romainguy@google.com> Optimize blending state changes.

Change-Id: I7c22a8aecccb8b5abfcf7243f049a4ef3cf3979a
penGLRenderer.cpp
penGLRenderer.h
ertex.h
f7f93556c8fcc640ab5adef79d021a80a72a645a 09-Jul-2010 Romain Guy <romainguy@google.com> Draw n-patches using OpenGL.

Currently only tested with title bars and buttons.

Change-Id: I8263a9281898dc0e943b1b8412827fe55639b9d6
ndroid.mk
ayer.h
ayerCache.h
penGLRenderer.cpp
penGLRenderer.h
atch.h
atchCache.cpp
atchCache.h
ertex.h
f18fd99b5c182329cd8936a9611f0103d8ece44a 08-Jul-2010 Romain Guy <romainguy@google.com> Create FBOs in LayerCache.

This moves a bit of code away from OpenGLRenderer and matches
what happens with the TextureCache.

Change-Id: I3c67f54f83d7240770daa015861c0e75a1dd8c42
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
deba785f122a47915756ffd991f5540d952cf937 08-Jul-2010 Romain Guy <romainguy@google.com> Add support to draw 9patches in OpenGL.

This change only adds the necessary API and stubs. The implementation
will be added in another change.

Change-Id: Ie50b8aff5868e78796cee331df15bdbf990d2ea1
penGLRenderer.cpp
penGLRenderer.h
6c81893c626499e58c8eeb20d6c35ec4e1ce808b 08-Jul-2010 Romain Guy <romainguy@google.com> Simpler way to deal with the FBO multi-cache.

This change removes the need for the SortedList and instead just
add a generated id to each FBO stored in the cache. This is an
artificial way to store several FBOs with the same dimensions.

Change-Id: I9638364e9bdc0f2391261937a0c86096f20505bf
ndroid.mk
enerationCache.h
ayer.h
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
ortedList.cpp
ortedList.h
extureCache.cpp
extureCache.h
5f0c6a483900f3989f4d2a8f913cf5b6a9777d03 07-Jul-2010 Romain Guy <romainguy@google.com> Optimize FBO cache.

This change introduces a new generational cache called GenerationMultiCache
that can store several values with the same key. This can be used to use
multiple layers of the same size at the same time, without recreating them
over and over again.

Change-Id: I425466a20908b862c5f464a0f9e582ec18cbd7ac
ndroid.mk
enerationCache.h
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
ortedList.cpp
ortedList.h
extureCache.cpp
extureCache.h
dda570201ac851dd85af3861f7e575721d3345da 06-Jul-2010 Romain Guy <romainguy@android.com> Add a layer (FBO) cache.

The cache is used to draw layers so that a new
texture does not have to be recreated every time
a call to saveLayer() happens.

The FBO cache used a KeyedVector, which is a bad
idea. The cache should be able to store several
FBOs of the same size (this happens a lot during
scrolling with fading edges for instance.) This
will be changed in a future CL.

Change-Id: Ic316189e625f0dbcf0d273a71cc981a433d48726
ndroid.mk
enerationCache.h
ayer.h
ayerCache.cpp
ayerCache.h
penGLRenderer.cpp
penGLRenderer.h
napshot.h
extureCache.cpp
extureCache.h
7d139ba2c331f11e9b485753cc727a0ff202f2a4 02-Jul-2010 Romain Guy <romainguy@android.com> Remove extra leftover logs and use uint32_t instead of unsigned int.

Change-Id: I944f82fe3255de38dc04048cc8bd861f578f01a7
enerationCache.h
penGLRenderer.cpp
exture.h
extureCache.cpp
extureCache.h
121e2242565d5f09ad83a2d33ecd2225838802c5 02-Jul-2010 Romain Guy <romainguy@google.com> Track the size in memory of the texture cache.

The texture cache was previously checking the number of stored textures. This was
not very useful as this could easily lead to an abuse of memory. The new cache
instead tracks the total size occupied in RAM by the cached textures. When a new
texture is generated, older textures are kicked out as needed.

Change-Id: Ib27142f4a018d5bf84774c1fb6f45a67a85f20bc
enerationCache.h
penGLRenderer.cpp
extureCache.cpp
extureCache.h
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
penGLRenderer.cpp
penGLRenderer.h
napshot.h
8ba548f81d1ab5f1750cbf86098c4a14e0b8bead 01-Jul-2010 Romain Guy <romainguy@google.com> Add implementation for drawBitmap(Bitmap, Rect, Rect, Paint)

Change-Id: I10904d2325a5431d15801aebcec1048715678e8c
penGLRenderer.cpp
penGLRenderer.h
extureCache.cpp
c1396e93b6a5286a5183c00c781b62e940a12c1f 01-Jul-2010 Romain Guy <romainguy@google.com> Add implementation for drawBitmap().

Change-Id: Iada9325f3c5642b61c2e0c4cd80bcfbc92cb491e
penGLRenderer.cpp
penGLRenderer.h
extureCache.cpp
fe8809471a40cac8acc984adfa51c39e13e83947 01-Jul-2010 Romain Guy <romainguy@google.com> Remove unnecessary return and add bitmap generation ID tracking.

Change-Id: Icf5e0635e789f5ea53268c22fad51cf733b5b1a6
exture.h
extureCache.cpp
extureCache.h
364703c6fa4aa1a7d2ef5b0c048ea2a0d57a4c40 01-Jul-2010 Romain Guy <romainguy@google.com> Fix the build.

Change-Id: I08bd6daf25351daca3ae552e1cfcfce85eefa73b
enerationCache.h
extureCache.cpp
extureCache.h
ce0537b80087a6225273040a987414b1dd081aa0 30-Jun-2010 Romain Guy <romainguy@google.com> Add hooks for drawBitmap().

Change-Id: I58e962c3a8b2bc75c2605fe369ad3002579d86e0

Add texture cache.

Change-Id: I1c0e5581d228869e114438258a1014e33e024ad7
ndroid.mk
enerationCache.h
penGLRenderer.cpp
penGLRenderer.h
exture.h
extureCache.cpp
extureCache.h
d55a86120dd1e8ebcc6906c9ffd463f7460348da 29-Jun-2010 Romain Guy <romainguy@google.com> Add support for saveLayer().

saveLayer() is affected by the paint's alpha and xfermode.

Change-Id: I28693a9337052643adccdb4889a8f228d4e17903
penGLRenderer.cpp
penGLRenderer.h
napshot.h
026c5e16704e817cac7d9c382914c947e34f87e0 29-Jun-2010 Romain Guy <romainguy@google.com> Implement support for PorterDuff's blending modes.

The blending modes are currently hooked up only when drawing filled rects but the
code is reusable for other primitives. This will allow implementation of saveLayer().
This method is required to support the fade effects used throughout the standard
Android UI.

Change-Id: I396023d123436f16cdafc606e358e4eb80c9df2c
penGLRenderer.cpp
penGLRenderer.h
5cbbce535744b89df5ecea95de21ee3733298260 28-Jun-2010 Romain Guy <romainguy@android.com> Reduced the complexity of layers composition.

This change also refactors the code base a bit by moving classes out of
OpenGLRenderer into separate headers/implementations. This makes the code
more manageable.

This change also adds documentation for implementation methods. The
undocumented methods are simply Skia's Canvas methods.

Change-Id: I54c68b443580a0129251dddc1a7ac95813d5289e
ndroid.mk
atrix.cpp
penGLRenderer.cpp
penGLRenderer.h
rogram.cpp
rogram.h
ect.h
napshot.h
bd6b79b40247aea7bfe13d0831c6c0472df6c636 26-Jun-2010 Romain Guy <romainguy@android.com> Add implementations for saveLayerAlpha() and textured rects.

Even though there's an implementation for textured rects, drawBitmap() is not
hooked up yet as it will require a good texture cache.

This method is implemented using FBOs. There's currently an issue either in the
driver or in the Canvas renderer that forces the FBO to be fullscreen, which is
extremely expensive and yields terrible performance.

Change-Id: I148419195e12d45653c60186938aa78c23a68e2c
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
haders/drawColor.frag
haders/drawTexture.frag
haders/drawTexture.vert
7ae7ac48aa2b53453c9805075171ecd5bcafd7de 25-Jun-2010 Romain Guy <romainguy@android.com> Convert tabs to spaces.

Change-Id: I5d3ae48af79b19b6d293deff0521e4bb57d5114b
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
ect.h
haders/drawColor.vert
c7d53494f1fbd9f9d74af89053ff9fdb1ccbac6c 25-Jun-2010 Romain Guy <romainguy@android.com> Implement quickReject() and drawRect().

The OpenGL ES 2.0 renderer can now draw colored rectangles. At least there's
something on screen now.

Change-Id: I80a13ccc1dd56784edf74f2670a364f30700234a
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
haders/drawColor.vert
9d5316e3f56d138504565ff311145ac01621dff4 25-Jun-2010 Romain Guy <romainguy@google.com> Add colored rectangles implementation in OpenGLRenderer.

Drawing two rectangles one after the other discards the second one because of
Z buffering issues. This will be fixed in another changelist.

Change-Id: Ida1b3cde8a78e60cacc07e477abc44def527ff67
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
ect.h
haders/drawColor.frag
haders/drawColor.vert
f6a11b8a9e25ff9861bbba19251bea84d8a5daf2 24-Jun-2010 Romain Guy <romainguy@google.com> Add support for transformations.

This change adds partial support for the following transforms:
- scale()
- translate()
- rotate()
- setMatrix()
- getMatrix()

The transform is stored in a snapshot and saved/restored as needed.
The transform is currently not applied to the clip rect and is not
mapped to the vertex shader.

Change-Id: Id48993453311200804149917d0c126a4d0471226
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
bb9524b6bdddc7ac77d8628daa8b366b8a7be4a4 23-Jun-2010 Romain Guy <romainguy@google.com> Add implementations for clipRect(), save() and restore().

The current implementation of clipRect() does not apply local transformations
before setting the new clip.

Change-Id: I5997871bb638dfcd1a8ef96354846af52427e445
atrix.cpp
penGLRenderer.cpp
penGLRenderer.h
ect.h
3e168335b3422008908ac6973bb36078fd979f35 22-Jun-2010 Romain Guy <romainguy@google.com> Fix simulator build again.

Change-Id: Ifd204d64eaa4c356422e3363ec0a6e6aa61c52dc
ndroid.mk
atrix.cpp
85bf02fc16784d935fb9eebfa9cb20fe46ff7951 22-Jun-2010 Romain Guy <romainguy@google.com> Fix the simulator build.

Change-Id: Ie404f7c2c308f0657f273af19a56e8c039b61898
ndroid.mk
atrix.cpp
atrix.h
penGLRenderer.cpp
penGLRenderer.h
IMatrix.cpp
IMatrix.h
IOpenGLRenderer.cpp
IOpenGLRenderer.h
08ae317c21ec3086b5017672bba87420cc38a407 22-Jun-2010 Romain Guy <romainguy@google.com> Add glOrtho equivalent to the OpenGL ES 2.0 renderer.

Change-Id: I063dad3d81dab7833acb1e7a9c7121f8efd2a044
ndroid.mk
IMatrix.cpp
IMatrix.h
IOpenGLRenderer.cpp
IOpenGLRenderer.h
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
ndroid.mk
ODULE_LICENSE_APACHE2
OTICE
IOpenGLRenderer.cpp
IOpenGLRenderer.h