Commit Graph

207 Commits

Author SHA1 Message Date
sergeyv
af102bee51 HWUI: track upload & recent usage in font cache
FontCacheHistoryTracker should be turned off before shipping: b/31438876

bug:30427106
Change-Id: Ic26b25e790d4ee69e484ca0cb23dc9cc522b2ed3
2016-09-12 15:45:26 -07:00
Chris Craik
06e2e9cf4c Wait on frame work fences when frames are dropped
bug:30895941

Prevents a race where frame work could interleave between frames,
causing SurfaceView position updates to be delivered out of order.

Change-Id: I01e4cc557b69dcf33e877a0e16c0d115ec95e4cc
2016-08-31 17:32:47 -07:00
John Reck
70e89c9c37 Ensure Dequeue/Queue duration is always set
Bug: 30662749
Change-Id: I35a4c26ce78536fc7a506ec2f92a8b9eecb12ec2
2016-08-05 10:50:36 -07:00
Doris Liu
0cf4d47a40 Merge "Put VD animators on paused list when RT stops drawing" into nyc-mr1-dev 2016-08-02 18:08:05 +00:00
John Reck
882d515cd5 Fix null deref crash
Bug: 30560152
Change-Id: Ic4bae380e27de5bea80cec484e83d205e078ec43
2016-08-01 14:52:25 -07:00
Doris Liu
c82e879e56 Put VD animators on paused list when RT stops drawing
When we stop scheduling for new frames on RenderThread, we should
put the running animations on pause, rather than purge the list
of the running animations, such that in the next full
sync, the animations that were paused will continue to run.

BUG: 30226711
Change-Id: I36ff6f5d26ffa7999f60ca0ff676a35157577dc2
2016-08-01 21:42:15 +00:00
TreeHugger Robot
34921ac110 Merge "Teach JankTracker about new swap behaviors" into nyc-mr1-dev 2016-07-29 16:25:51 +00:00
John Reck
2d5b8d7392 Teach JankTracker about new swap behaviors
Bug: 30440166

If we are using HWC2, there's a change in timing
when in triple buffering with the pipelined offsets.
This changes JankTracker to recognize that and silently
erase that from the total duration

Change-Id: Ib1fd4209070f17dbd2baed707c8cf73fb11c3cf2
2016-07-29 07:56:02 -07:00
John Reck
a3d795a34a Drop less aggressively
Bug: 30342762

Frame dropping was too frequent and would trigger
during normal triple buffering steady state. Bump
the threshold to drop from 3ms stall to 6ms stall.

Change-Id: I5c1faeaabf0d02323a28e697a4af4105fbcf1c53
2016-07-27 19:28:05 -07:00
Chris Craik
3163568806 Change swap chain stuffed detection logic
bug:29771461
bug:29413700
bug:30181577

Changes frame interval gap detection to look for wider gaps, as they
were incorrectly firing all the time.

Also adds a 500ms minimum gap between frames dropped because of stuffed
swap chain, to prevent dropping too often.

Change-Id: If16ed637d54bf37015704be102c5c2e3731a0824
2016-07-20 16:47:03 -07:00
Tim Murray
ffde6274f7 add tracepoint for when the display chain is stuffed
bug 30173296

Change-Id: I7845542d4e5c19ccb7c3ee6498cc2d70278b5397
2016-07-18 15:35:36 -07:00
John Reck
0def73aac5 Consider queue & dequeue times for should draw
Bug: 29413700

Change-Id: I4b27b077af569e3c60c57b0e11501e9f3af70579
2016-07-06 17:00:43 -07:00
John Reck
7b570deea6 Fix SurfaceViewPositionListener race bugs
Bug: 29628138

1: Make windowPositionLost synchronous as that's
what the Java side was expecting

2: Make the listener ref counted as otherwise
there's a race condition with the GC, which could
end up with use-after-frees

3: Ensure that all position updates are invoked
prior to frame completion

Change-Id: Iedbc017f611ba2878a49b4586612f79249ca2fe3
2016-06-27 13:35:13 -07:00
John Reck
fc4c59a10c Merge \"Redraw if dirty during stopped when resumed\" into nyc-dev
am: 5b4ff21a74

Change-Id: If4eedb4a4c1ff6d4e96f8b0db4ddd846a2967a9f
2016-06-14 14:54:18 +00:00
John Reck
306f331f91 Redraw if dirty during stopped when resumed
Change-Id: I0034d1da7704de53c4ba3da3e8ef3109445f9e6a
Fixes: 28283031
2016-06-10 16:28:59 -07:00
Doris Liu
718cd3eb70 Handle hidden RT VectorDrawable animators
This CL changes the target of VD specific animators to VectorDrawable,
instead of RenderNode. The benefit of doing so is that animators can
now detect whether the animation is meaningful by checking whether
their VD target is in the display list. If not, that means the VD is
not drawing for the current frame, in which case we can be smarter
and more power efficient by removing the animator from the list and
posting a delayed onFinished listener callback.

By setting VD as the animation target, when an ImageView decides to
update its drawable from one AVD to something else, we'll be able
to detect that the previous AVD is no longer in the display list,
and stop providing animation pulse to the stale AVD, which is
something we couldn't do previously.  This change also
handles the case where one AVD instance could be drawn in two
different views.

Bug: 27441375
Change-Id: Iaad1ed09cfd526276b95db0dd695275c28e074e8
2016-06-09 10:27:59 -07:00
John Reck
8cddce3f8f Merge "Make getFrameNumber lazy" into nyc-dev 2016-04-18 23:20:39 +00:00
John Reck
28912a5084 Make getFrameNumber lazy
Change-Id: I783de544ad9a3636ea90f1c8c4034738997bfbc8
Fixes: 28246085
2016-04-18 14:34:18 -07:00
Chris Craik
c79c3246c9 Merge "Improve multi-window render clipping logic" into nyc-dev 2016-04-18 19:40:50 +00:00
Chris Craik
9cd1bbe5c9 Improve multi-window render clipping logic
Fixes: 28125010

Restructures 'scene defer', to implement window backdrop overdraw
avoidance in new render pipeline, and disable clipping to content draw
bounds.

Also restructures FrameBuilder's constructors, to separate out into
multiple defer methods.

Change-Id: I53facb904c1a4a4acc493d8a489921a79a50494e
2016-04-18 10:39:02 -07:00
John Reck
8afcc76920 Revert "Revert "Make stopped state a first-class thing""
This reverts commit eab3f2658a.

Fixes first-frame issue, mReportNextDraw needs to override
mStopped

Fixes: 28118961
Fixes: 27286867

Change-Id: I5c811759637d08ba9f3b342016d1b3006986d5a2
2016-04-14 10:39:03 -07:00
John Reck
825fa4d5ae Merge "Revert "Make stopped state a first-class thing"" into nyc-dev 2016-04-11 20:54:36 +00:00
John Reck
eab3f2658a Revert "Make stopped state a first-class thing"
This reverts commit 945961f78a.

Change-Id: Iebc1d49fac33380233f8785fc39bec6c30a5e714
2016-04-11 20:49:28 +00:00
John Reck
c724dcf23c Merge "Make stopped state a first-class thing" into nyc-dev 2016-04-08 15:09:42 +00:00
John Reck
945961f78a Make stopped state a first-class thing
Bug: 27286867

WindowManager has committed to stopped state
controlling the lifecycle of the Surface, so
make that a first-class thing in HWUI as well.

This makes it more resistent to things like
a rogue updateSurface() happening while mStopped=true,
leading to bad things down the line. Instead let
the surface be changed/updated as often as desired,
and just block any attempt to draw on that surface.

Also removes some unnecessary makeCurrent()s, as
EglManager ensures that we *always* have a valid
GL context now (using a pbuffer surface if there is
no window surface set)

Change-Id: Iead78ddebc7997e8fdb0c9534836352f5e54b9bd
2016-04-07 16:02:33 -07:00
John Reck
51f2d606dc Fix some edge cases
Bug: 27709981

This desperately needs a refactor, but to keep
the current (really needed & nice) behavior of
dispatching after sync finishes would be difficult
to handle cleanly without lots of ripping so... #yolo

Change-Id: I831a06c6ae7412a062720d68ecbe3085190f0258
2016-04-07 14:10:43 -07:00
John Reck
44b49f070a Add a callback for rendernode parentcount=0
Bug: 27709981
Fixes: 22565656

Change-Id: I1cb4461baf9069dc4e7ca6de10d5862578c107f4
2016-03-31 08:36:50 -07:00
Chris Craik
6246d27813 Support buildLayer in new pipeline
bug:26561995
bug:27620686

Change-Id: I6c39f9a077e7e6002d3c01b8888238fd17b0f02a
2016-03-29 16:50:32 -07:00
Chris Craik
3a5811b501 Precache/early kick off of op work for non-shadow ops.
bug:26562703
bug:27052145

Change-Id: Ic452bfe75da849ffdd47fecdd6eb1472fd0c806e
2016-03-23 12:55:12 -07:00
sergeyv
dccca44ffd Reland: Move text logic from jni to hwui level
Initial CL: https://googleplex-android-review.git.corp.google.com/#/c/886854/

Change-Id: I9dfd85fe1d2a2c44f4360c8a29fd58d80e6f31c8
2016-03-21 15:55:46 -07:00
Sergei Vasilinetc
6847953955 Merge "Revert "Move text logic from jni to hwui level"" into nyc-dev 2016-03-21 21:06:47 +00:00
Sergei Vasilinetc
afbd0f1fef Revert "Move text logic from jni to hwui level"
This reverts commit a7f6bba1a3.

Change-Id: If4f36f87a85411b6128fd92d391313803ccaf9dd
2016-03-21 21:03:40 +00:00
Sergei Vasilinetc
49658d4380 Merge "Move text logic from jni to hwui level" into nyc-dev 2016-03-21 20:11:27 +00:00
John Reck
38f6c034d1 Move updating window position off RT
Bug: 27385141
Change-Id: I6c75b5f1d9ef55ef64dde050f71d0e28fb8714bf
2016-03-17 10:32:07 -07:00
sergeyv
a7f6bba1a3 Move text logic from jni to hwui level
bug:25865834
Change-Id: I2d8c9c9544afcb5ce1784f732aed3e54e0eda372
2016-03-17 09:48:57 -07:00
Chris Craik
1dfa070496 Support GPU profiling vis in new pipeline
bug:27353099

Change-Id: I905c1a998d9a9e2097c047dab9de87a70d7a370e
2016-03-04 16:18:26 -08:00
John Reck
c96955d9bb Always swap buffers if using partial update extension
Bug: 27379093
Change-Id: Ifda18287248e4ae07d4bf2ae9642a9d23039e81f
2016-02-26 14:58:13 -08:00
Andres Morales
910beb8f5d updates to FrameStatsObserver API
- Rename to FrameMetrics to avoid collision with existing
  android.view.FrameStats class
- Make FrameMetricsObserver implementation detail,
  exposing FrameMetricsListener interface as public API
  and wrapping in FrameStatsObserver to maintain state
- Remove dropped frame count call, in favor of passing as
  parameter to callback method.
- Move away from raw timestamp access in favor of Metric IDs
  which represent higher-level, more stable stages in a frame
  lifecycle and match the categories exposed in the onscreen
  bars.
- Support many-to-many Window<->FrameMetricsListener relationship

Change-Id: I00e741d664d4c868b1b6d0131a23f8316bd8c5c2
2016-02-09 10:40:01 -08:00
John Reck
0a1abd3247 Merge "Have RT drive window positioning" 2016-02-04 19:32:57 +00:00
John Reck
f648108f83 Have RT drive window positioning
Bug: 22802885

Change-Id: I6beed5474d3a943b16e9097f7bd61ce3cbd37505
2016-02-04 11:23:49 -08:00
Chris Craik
6e068c0182 Early kickoff of shadow tasks
bug:26562703

Change-Id: I7cdf18f2c662380bd31c7ffeefd5c3f569e5c1c6
2016-02-02 17:10:25 -08:00
Chong Zhang
c3bd568112 Restore code to draw backdrop and content nodes
bug: 26626661
Change-Id: I9e4dd41708e8ed93d3cf64242ad81815a653d269
2016-01-26 12:49:28 -08:00
Florin Malita
dd93728b46 Merge "Add internal Canvas save flags" 2016-01-26 17:00:37 +00:00
John Reck
c52ac0b9e2 Merge "Add fine-grained debug layer" 2016-01-26 15:21:07 +00:00
John Reck
975591a7af Add fine-grained debug layer
Full GLES error checking layer via -include
trickery. Change DEBUG_OPENGL to a level system.

HIGH = every GL call is error checked
MODERATE = checkpointing at interesting spots
LOW = only asserts there are no errors at the end of a frame
 or when the FBO changes
NONE = AIN'T GOT NO TIME FOR ERRORS GOTTA GO FAST!

Change-Id: Ibe81aae93d942059c4ddf1cbb11c828b7ce4c10b
2016-01-25 16:15:14 -08:00
Florin Malita
eecff56fed Add internal Canvas save flags
Skia's SkCanvas::SaveFlags are being deprecated.  This CL introduces
the equivalent android::SaveFlags, converts all internal clients to
the new enum, and switches the saveLayer glue to the
SaveLayerRec-based API.

Change-Id: Icb1785f4e7c0f652b1f04b34a1e3ccb063c408f3
2016-01-25 15:48:00 -05:00
Andres Morales
06f5bc70a6 expose hwui frame stats through FrameStatsObserver
Change-Id: I88884bafc8e2f6d7f67a36d3609490e83cf8afd5
2016-01-22 12:58:51 -08:00
John Reck
9372ac3621 Fix ordering of texture->upload arguments
Caught by scatter-shotting GL_CHECKPOINTS which
seem generally useful to have

Bug: 26609444

Change-Id: Ie31d9297d8dae56405126720f338b4256c8bae77
2016-01-19 12:58:48 -08:00
John Reck
cbc5bd57f0 Merge "Track texture memory globally" 2016-01-14 21:49:42 +00:00
John Reck
38e0c32852 Track texture memory globally
Also mostly consolidates texture creation

Change-Id: Ifea01303afda531dcec99b8fe2a0f64cf2f24420
2016-01-14 13:42:12 -08:00