97 Commits

Author SHA1 Message Date
Chris Craik
d41c4d8c73 Add overrides and switch to nullptr keyword for all files
Adds remaining missing overrides and nullptr usages, missed due to
an extreme failure in tool usage.

Change-Id: I56abd72975a3999ad13330003c348db40f59aebf
2015-01-05 16:49:13 -08:00
Chris Craik
51d6a3db97 Cleanup various clang warnings, use unique_ptrs in several places
Change-Id: I347904b25e51fcc7de14b1e72f1acd0f6ba26f3f
2014-12-23 16:53:56 -08:00
John Reck
9fb42f0778 resolved conflicts for merge of a75b0ad3 to master
Change-Id: I32a2d129c556407727ada909daa6470309d42499
2014-12-04 13:51:41 -08:00
John Reck
a75b0ad384 resolved conflicts for merge of a51a0901 to lmp-mr1-dev-plus-aosp
Change-Id: Id7df835f0bd3d5d276b162635ddfb7fe0918dfed
2014-12-04 13:41:04 -08:00
John Reck
01a5ea35fb 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
2014-12-03 13:03:59 -08:00
John Reck
c5cf471758 am d7af6eaa: am d51205fd: am 6afc5cf3: Merge "Prevent calling GL functions with an invalid surface"
* commit 'd7af6eaace4ffdd3635a1cdeff65e9dc1af39f67':
  Prevent calling GL functions with an invalid surface
2014-12-01 21:47:03 +00:00
John Reck
d7af6eaace am d51205fd: am 6afc5cf3: Merge "Prevent calling GL functions with an invalid surface"
* commit 'd51205fda7351ca32e54ef34b32e72f6c7c79847':
  Prevent calling GL functions with an invalid surface
2014-12-01 21:40:32 +00:00
Sangkyu Lee
a12b2405df 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
2014-12-01 21:38:34 +00:00
Chris Craik
62bdf2c863 am e986817a: am 6eac26a4: am ca84c8b1: Merge "Revert "Force-use the pbuffer surface for destroy"" into lmp-mr1-dev
* commit 'e986817a2dc8a412c12e456319965a67ac60f236':
  Revert "Force-use the pbuffer surface for destroy"
2014-11-26 21:08:00 +00:00
Chris Craik
e986817a2d am 6eac26a4: am ca84c8b1: Merge "Revert "Force-use the pbuffer surface for destroy"" into lmp-mr1-dev
* commit '6eac26a49957eda233ad22ad75da43379f220bbc':
  Revert "Force-use the pbuffer surface for destroy"
2014-11-26 21:02:24 +00:00
Chris Craik
9f81485a76 Revert "Force-use the pbuffer surface for destroy"
bug:18528859

This reverts commit b945f2313aee6e49a082ba5caaf95334d2570d52.

Change-Id: I6915624d356cb8570471eb3a5b8921f59b58db6d
2014-11-26 18:59:58 +00:00
John Reck
e39f788950 am 0d4ab958: am 4e3404d9: am dec3f138: Merge "Force-use the pbuffer surface for destroy" into lmp-mr1-dev
* commit '0d4ab958c11801f5453e999f930416c87c63d100':
  Force-use the pbuffer surface for destroy
2014-11-26 12:09:42 +00:00
John Reck
0d4ab958c1 am 4e3404d9: am dec3f138: Merge "Force-use the pbuffer surface for destroy" into lmp-mr1-dev
* commit '4e3404d90fe33a0ff790aff4a97b6bb55e4c0e8f':
  Force-use the pbuffer surface for destroy
2014-11-26 12:02:19 +00:00
Sangkyu Lee
f76d36f96b Prevent calling GL functions with an invalid surface
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)

Change-Id: Ie6f6ea081ec931fc9df30b2c3ed066ec1ae9d294
2014-11-26 09:59:39 +09:00
John Reck
b945f2313a 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
2014-11-25 09:54:13 -08:00
Andreas Gampe
64bb413a66 Revert "resolved conflicts for merge of 220c3f4f to master"
Reverted as hwui doesn't agree.

This reverts commit 8a902d9f24e83c87b054adb5836b4a5b8a257be9.

Change-Id: I109e7b02bee2921e2155ded6df36f52e6f574b5a
2014-11-22 00:35:09 +00:00
Andreas Gampe
8a902d9f24 resolved conflicts for merge of 220c3f4f to master
Change-Id: I37ecce8fddecdff82b0eace16f1ee75152f7171e
2014-11-21 15:51:04 -08:00
Andreas Gampe
2ab8298dc3 resolved conflicts for merge of 99377df1 to lmp-mr1-dev-plus-aosp
Change-Id: I3a98f55832ac447b1ed0dd129c7a93d088025943
2014-11-21 14:19:06 -08:00
Andreas Gampe
42ddc18d10 Frameworks/base: Unused parameters in hwui
Remove Clang cutout for unused parameters. Fix warnings.

Remove Clang cutout for deprecated Skia function usage. Has been
fixed in the L push.

Change-Id: I7ea073ff67127cc1e14e798b655e2c50615fe8e7
2014-11-21 10:39:21 -08:00
John Reck
27eaec2388 am 842697a3: am decc26df: am f0f68117: Merge "Trace some interesting events" into lmp-mr1-dev
* commit '842697a3602204036e991cfea8b74da3df6e7f14':
  Trace some interesting events
2014-11-18 21:37:59 +00:00
John Reck
fbc8df03e4 Trace some interesting events
Bug: 18337099
Change-Id: Ie2e60da2b9f06e0368061c944d8123ab6903355c
2014-11-17 10:18:31 -08:00
John Reck
e19093cad8 am f1923c36: am 8dda03a0: am ca93f69c: Merge "Have an actual fallback if the surface is lost" into lmp-mr1-dev
* commit 'f1923c368c5c08a477b9f94dea6a499798d91d4f':
  Have an actual fallback if the surface is lost
2014-11-07 23:01:00 +00:00
John Reck
aa95a88327 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
2014-11-07 11:02:07 -08:00
Tom Hudson
107843de45 Remove status return from all uirenderer::Renderer functions
This moves the interface closer to android::Canvas. The only use of
return values was in the OpenGLRenderer subclass; that is replaced
with an internal dirty flag: returned from finish(), checked by
CanvasContext.

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

BUG:15672762
R=djsollen@google.com,ccraik@google.com

Change-Id: Ifd533eb8839a254b0d3a5d04fc5a2905afdfc89e
2014-11-04 15:49:44 -05:00
John Reck
0e89e2b7bc 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
2014-10-31 15:30:10 -07:00
John Reck
1125d1fa92 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
2014-10-23 13:59:47 -07:00
Jorim Jaggi
786afcb3ee 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
2014-10-08 18:30:54 +00:00
John Reck
749906b468 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
2014-10-03 15:02:19 -07:00
Chris Craik
651486d018 Merge "Fix garbage showing up beneath dialogs" into lmp-dev 2014-09-19 15:31:18 +00:00
Chris Craik
284b243584 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
2014-09-18 16:05:35 -07:00
John Reck
2cdbc7d228 Special case EGL_BAD_SURFACE
Bug: 17516789

Change-Id: I3dcb10360c2aef6326f7dbbff6815866d4c143b6
2014-09-17 16:09:57 -07:00
John Reck
ec845a215e 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
2014-09-05 15:23:38 -07:00
John Reck
443a714fa7 Yet more layer tracking logging
Bug: 17208461

Change-Id: I55e7d0921eb565867e966d68b798b7b92c391b55
2014-09-04 17:40:05 -07:00
John Reck
e2478d45cc 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
2014-09-03 17:37:59 -07:00
John Reck
17035b0211 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
2014-09-03 11:13:53 -07:00
John Reck
1661715d40 Implement TODO
Change-Id: I551ad0dab6356baa4c7787718b54d5b7337a3f26
2014-09-02 15:44:14 -07:00
John Reck
dff9957cc2 Free prefetched layers on TRIM_MEMORY
Bug: 17208461

Change-Id: I831c10d29d5920274b90e11a67d6cd106972a058
2014-08-29 09:59:43 -07:00
John Reck
998a6d8189 Track buildLayer calls, destroy if unused
Bug: 17208461

Change-Id: Ibdb104a493285d77a6891c5e74e38a52c7014da9
2014-08-28 15:55:26 -07:00
John Reck
119907cd25 Animator stuff
Bug: 17228458

Change-Id: Id884a429a512f9cd2be0ed16dbd0f10e92b4440d
2014-08-27 17:44:25 -07:00
John Reck
9eb9f6f8cb Don't run animators in buildLayer
Bug: 17172689

Change-Id: Ib47d589c002543327fa336718440f9f8c95524e0
2014-08-21 11:23:05 -07:00
John Reck
3e8249568c Implement full View.buildLayer
Bug: 17152292

Change-Id: Ia3cc2aadf72fe14517f50762fc634794df51ad5a
2014-08-20 15:54:07 -07:00
Chris Craik
69e5adffb1 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
2014-08-15 00:59:44 +00:00
Chris Craik
058fc64001 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
2014-07-24 16:41:13 +00:00
John Reck
5cdb8f998c Fix logging
Bug: 16357287

Change-Id: Ic14e32c941e42ab1f1ed51ff8ed7185979e57a55
2014-07-17 18:12:01 +00:00
John Reck
0a97330b98 Fix root RenderNode damage calculation
Bug: 15888445

Change-Id: I281ec9271c9889673dcdfcb6d31e341a7b47b7de
2014-07-16 13:55:14 -07:00
John Reck
dcba6725e8 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
2014-07-08 14:14:55 -07:00
John Reck
3c2b7fa8c5 Add missing requireGlContext
Change-Id: I7100e5e9986f502f66a23ecea07a6057522c43ac
2014-07-07 18:05:00 +00:00
John Reck
f47a594f52 Fix onTrimMemory for HardwareRenderer
Also fixes detachFunctor possibly drawing after return

 Bug: 15189843
 Bug: 15990672

Change-Id: I64c48cb674c461a8eeaba407b697e09f72c98ce3
2014-06-30 16:36:26 -07:00
John Reck
68bfe0a37a 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
2014-06-26 10:45:43 -07:00
John Reck
cd028f336e 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
2014-06-24 08:44:29 -07:00