Commit Graph

79 Commits

Author SHA1 Message Date
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
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: f76d36f96b

Change-Id: Ie6f6ea081ec931fc9df30b2c3ed066ec1ae9d294
2014-12-01 21:38:34 +00:00
Chris Craik
9f81485a76 Revert "Force-use the pbuffer surface for destroy"
bug:18528859

This reverts commit b945f2313a.

Change-Id: I6915624d356cb8570471eb3a5b8921f59b58db6d
2014-11-26 18:59:58 +00: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
John Reck
fbc8df03e4 Trace some interesting events
Bug: 18337099
Change-Id: Ie2e60da2b9f06e0368061c944d8123ab6903355c
2014-11-17 10:18:31 -08: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
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
John Reck
3b20251a35 No-fail invokeFunctor
Bug: 15513308
 Bug: 15449247

Change-Id: I13a29f9c8d4975cdda6dcb33b6332c2555ff0f7c
2014-06-23 15:26:49 -07:00
Chris Craik
a7090e0cfd Update 'DisplayList' vs 'RenderNode' naming in several places
Change-Id: I635c6627d098b661fb9b0ba1bd42fa6d7277d287
2014-06-23 09:57:07 -07:00
Chris Craik
734df4b427 Interrupt canvas before invoke
Change-Id: I5b818958f6255c594339bd10d9efa99e9e2c00d4
2014-06-17 10:15:46 -07:00
John Reck
25fbb3fa11 Move LayerType to RenderNode
Change-Id: Icb79a5015cb0362b1f3a66d09007450730135a97
2014-06-12 19:25:33 -07:00
John Reck
e4267ea4f2 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
2014-06-04 12:21:26 -07:00
John Reck
d72e0a339b 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
2014-05-30 12:19:33 -07:00
John Reck
aee470c023 Merge "Enable debug stuffs" into lmp-preview-dev 2014-05-29 22:23:41 +00:00
John Reck
fe5e7b7346 Enable debug stuffs
Bug: 14596762
 * dumpsys gfxinfo implemented
 * profile GPU visual_bars implemented

Change-Id: Icb948a9d5af5989b5615504d0d76ade64b93ef5b
2014-05-29 15:00:29 -07:00
John Reck
c8affe0e1b Re-enable atlas
Bug: 14590563

Change-Id: I04ed5bf1b2654dab4a65c1e43faaeba32459870f
2014-05-29 14:50:37 -07:00
John Reck
e1628b7c6f Implement FlushCaches TODO
Change-Id: Id05429e98ffe0858275b32c41fb215c1d8d930b2
2014-05-23 15:40:14 -07:00
John Reck
a5dda645da 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
2014-05-23 12:56:38 -07:00
Chris Craik
797b95b26b Define light position (using new lighting spec) in Java
Also updates the relative shadow strengths.

Change-Id: I6cac7275d38df98aea9f0dda463cd7207102986a
2014-05-21 13:50:29 -07:00
John Reck
cdfeef6624 Disable texture atlas
Bug: 14952384

Change-Id: If38b3e4c08c2c3dd9c00ae9e6e8c10e208e737d1
2014-05-14 23:59:01 +00:00
John Reck
66f0be65a1 Wire up texture atlas
Bug: 14590563

Change-Id: I2dffbc089dc801f5fb2d1c8fd38e1c71d160e110
2014-05-13 14:54:42 -07:00
John Reck
ef27453cf7 Merge "Cleanup attachFunctor" 2014-05-07 21:48:20 +00:00
John Reck
832b151465 Cleanup attachFunctor
Bug: 13961296

Change-Id: Id48d11bfcc234afd1fd7e4fdd409a50e7208c81d
2014-05-07 14:39:44 -07:00
John Reck
b6d9211d31 Merge "Implement TODO(romainguy)" 2014-05-07 21:24:25 +00:00
John Reck
63a0667325 Implement TODO(romainguy)
Bug: 14277445

Change-Id: Id52d6f7fcc023000adcc440bd4da67d9a673536b
2014-05-07 13:45:54 -07:00