194 Commits

Author SHA1 Message Date
Andres Morales
11f02d7e52 allow for slow FrameMetricsListeners
A slow listener could cause a race in the NotifyHandler
where the single reference to the buffer to send would get
updated when it shouldn't have been.

Switch to a queue of available buffers to prevent this race.

Also, stop setting and clearing the observer reference and instead
incStrong/decStrong to mark temporary strong ownership without
colliding with other owners in flight.

Bug: 27097094
Change-Id: Iee647bfae8b80019b6d8290179eed3973230901f
2016-02-17 12:16:06 -08:00
Derek Sollenberger
991da31d40 Update HWUI makefiles to support use by other targets (e.g. Skia)
(1) Update both static and shared lib to export libhwui headers
(2) Work around problem in current make system where a static
    libraries dependencies are not transitively included by moving
    those dependencies into a file that can be included by targets
    using libhwui_static.
(3) Do not expose protobuf headers to clients outside of HWUI

Change-Id: I08470c02a83ae64116081eff0c2050878990c6ed
2016-02-11 16:23:19 -05:00
Chris Craik
b251a2f51e Revert "Revert "TaskManager bench""
This reverts commit 9640477e3cc075b0f303e817a3ebcc72d7bc878b.

Change-Id: I3aa8f2830b43b9c7b211c5792a311d0bc698c51a
2016-02-08 23:28:28 +00:00
Chris Craik
1697c3daed Use clang to build microbench
Change-Id: I7ae8049fe05e99fadf905abd18553cb28596ba7f
2016-02-08 22:45:14 +00:00
John Reck
0b69467d42 Merge "Add a debug assert to track down infinite loop" 2016-02-05 21:40:16 +00:00
John Reck
83c9b5bf63 Add a debug assert to track down infinite loop
Bug: 26980851
Change-Id: I326983ab367782048311b6cf06d800f72837e38e
2016-02-05 13:03:47 -08:00
Daniel Chapin
9640477e3c Revert "TaskManager bench"
This reverts commit 02db03ca0584371504fd29ced77c00d601cb0971.

Change-Id: I86bdf5e6774e99f9add59a657bfc50d45ebfda1d
2016-02-05 05:42:16 +00:00
Chris Craik
3ff6b15d47 Merge "TaskManager bench" 2016-02-05 00:30:29 +00:00
Doris Liu
766431aa57 Revert "Revert "VectorDrawable native rendering - Step 4 of MANY""
This reverts commit 5a11e8d0ba21624025b89ac63bbd18befa55be0e.

Change-Id: I7a48b59c4f930dad65ddc8590c25a12636244ea2
2016-02-04 16:29:51 -08:00
Chris Craik
02db03ca05 TaskManager bench
bug:26964750

Change-Id: Ibda0cd2e5e64331a4367d4985d6acfd6f3baeda1
2016-02-04 14:42:43 -08:00
Doris Liu
5a11e8d0ba Revert "VectorDrawable native rendering - Step 4 of MANY"
b/26949340 and b/26975469, b/26975079 as well 

This reverts commit f276acd98457bcaabc9e79a17a736b3b484f005e.

Change-Id: I4b55177daf0d289bc03604c71fd4bf579f65073a
2016-02-04 20:59:00 +00:00
Chris Craik
3fd03b718d Merge "Add SkiaBehaviorTests" 2016-02-04 18:08:20 +00:00
Chris Craik
07d8d59e21 Add SkiaBehaviorTests
Change-Id: Ie2983f7a0c9e8bdd8c8de507d70ecf3aefdd9425
2016-02-03 18:43:04 -08:00
Doris Liu
a72d52bbed Merge "VectorDrawable native rendering - Step 4 of MANY" 2016-02-03 00:19:22 +00:00
Doris Liu
f276acd984 VectorDrawable native rendering - Step 4 of MANY
This CL runs VectorDrawable animation on RenderThread. The changes in this CL
include:
- Convert all the animators in AnimatorSet for AVD into a set of RenderNodeAnimators.
- Hook up the new animators with RenderThread
- Add drawOp in RecordingCanvas for drawing VD so that during the animation
  on RenderThread, all the property changes on VD can be reflected on the screen.

TODO:
- Implement reverse and reset for AVD.

Change-Id: I2df1d754f2db0ad098d9c15dde4bb2bdfafc2315
2016-02-02 15:04:01 -08:00
John Reck
c3127a78b9 Fix TextDropShadowCache infinite loop
Bug: 26862239

Switch TextDropCacheShadow to use the tracked objectSize()
instead of the optional bitmapSize. A mismatch here
results in ::get() infinite looping trying to free space in
the cache since the LRU removal callback would always
decrement mSize by 0 since bitmapSize was not being set.

Also prevent the infinite loop in the future by crashing if
this scenario happens again.

Change-Id: Ib4e9fbe1c8327af2335ad650fd694a1627d9824f
2016-01-29 16:26:35 -08: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
Andres Morales
06f5bc70a6 expose hwui frame stats through FrameStatsObserver
Change-Id: I88884bafc8e2f6d7f67a36d3609490e83cf8afd5
2016-01-22 12:58:51 -08:00
John Reck
dcdbba7c95 Re-enable new pipeline
Change-Id: I0d0b2a109a3756d404e4e244348a863a9afa3f9b
2016-01-19 13:57:48 -08:00
John Reck
1b94f9b77c Revert "Switch to new rendering pipeline"
This reverts commit 3daf4d3272f2cc6ce3b5a572b9d4dcce1654086d.

Temporarily disable due to high rate of crashes from endLayer check

Bug: 26609444
Change-Id: I7583a77bf5cc1e722fa4042db0542f80cd978760
2016-01-19 09:44:39 -08:00
John Reck
7db5ffb7db Revert "Revert "Fix leak in unclipped save layer""
This reverts commit a6fc36d4cd7f27147fd304960acdd1d2f47fc1c6.

Change-Id: I6b96afe4a32dc894d5b17cfb870b45063257aed2
2016-01-15 13:59:37 -08:00
Daniel Chapin
a6fc36d4cd Revert "Fix leak in unclipped save layer"
This reverts commit 8e068d5fd38dd103a122215fb6d185135182edf3.

Change-Id: Icd8ad5a2450db34aacecf748d6103df9faaa4c81
2016-01-15 03:02:58 +00:00
John Reck
8e068d5fd3 Fix leak in unclipped save layer
Change-Id: I31f146af2cb6f5cb8dd19bb0feff0ae35b864eba
2016-01-14 16:28:28 -08:00
John Reck
cbc5bd57f0 Merge "Track texture memory globally" 2016-01-14 21:49:42 +00:00
John Reck
e5da4ef971 Trap SIGABRT in RenderThread for unit tests
Change-Id: Icc1039543d975497808a8062e9d909537c4a29c9
2016-01-14 13:43:55 -08:00
John Reck
38e0c32852 Track texture memory globally
Also mostly consolidates texture creation

Change-Id: Ifea01303afda531dcec99b8fe2a0f64cf2f24420
2016-01-14 13:42:12 -08:00
Chris Craik
48cb62018c Fix the build
Change-Id: I11aaa6dabdc3998155ee7f1ee58083bb88f19aad
2016-01-12 18:26:55 -08:00
Chris Craik
3daf4d3272 Switch to new rendering pipeline
bug:22480459

Change-Id: I3ca94c4b6c556ba6d133e2314ac0307e874651fa
2016-01-12 16:11:06 -08:00
Chris Craik
f158b49c88 Rename Reorderers to Builders
Change-Id: I9bb5a2e70055e2f6d14912fbd86ab72ac0d6e20c
2016-01-12 14:45:08 -08:00
Chris Craik
5ea1724be4 Rename OpReorderer to FrameReorderer
Also separate LayerReorderer into its own files.

Change-Id: Iafb6a156f760f62f831f6288fd0dadf1db25da24
2016-01-11 15:35:52 -08:00
Chris Craik
f5baedb000 Merge "Stencil support in new recorder/reorderer" 2016-01-05 17:54:47 +00:00
Chris Craik
e4db79de12 Stencil support in new recorder/reorderer
bug:22480459
bug:26358504

Adds complex (non-rectangular) clipping support, and overdraw
visualization. Doesn't support stencil clipping in layers.

Change-Id: I8d10c7f1d2769ab5756774ca672344cc09901f87
2016-01-04 17:00:03 -08:00
Doris Liu
4bbc293126 VectorDrawable native rendering - Step 3 of MANY
- Refactored VPathRenderer & VectorDrawableState
- Moved all the VD rendering into native
- Set up hooks for VD's property changes in JNI for animated VD

TODO: JNI calls can be further reduced when we convert the animation
in AVD to use RenderNodeAnimator, in which case animation will be
driven from native and therefore most of the JNI hooks for changing
VD's properties during animation will no longer be needed.

Change-Id: I52021f4d7bea057b83ace54085d870dd45acae0f
2015-12-28 16:08:38 -08:00
Chris Craik
e60a52a236 Fix build
Change-Id: I1fc72636afc070257526ce1500e96e9b39089640
2015-12-16 16:05:49 -08:00
Chris Craik
d2dfd8f128 Add TextureView support to new renderer/reorderer
bug:22480459

Change-Id: I2e4c0bc6b904706132f3f5087ededc9cac9b40fb
2015-12-16 15:35:40 -08:00
Chris Craik
27e58b4f54 Build hwui test scenes as common test code
And start using them in other non-macrobench tests

Change-Id: If155b531f3c89f97491001c06d1996df527b9f85
2015-12-07 16:41:35 -08:00
Chris Craik
8160f20b0a Reorganize hwui test directories
Now test-only common files reside in tests/common, and each test
executable type (macrobench, microbench, and unit) has a subdir there.

This change means the shared lib no longer has test code in it, and
sets up a means for scenes to be shared between tests.

Change-Id: I37b081f6977300e03fdd961b8e6439fde730605e
2015-12-02 15:25:10 -08:00
Chris Craik
9b9eca5cc5 Merge "Support projection in OpReorderer" 2015-11-25 22:14:42 +00:00
Chris Craik
8d1f2120fe Support projection in OpReorderer
bug:22480459

Change-Id: Iceb71732dc50957cfb47fa1ba9b8e18e6fc51132
2015-11-25 14:09:24 -08:00
Chris Craik
9e7fcfda28 Move BakedOpDispatcher to separate file
Change-Id: If7aad6db6b7e54a33eac9b9eddbe8cd844207282
2015-11-25 13:27:33 -08:00
Chris Craik
a1717271ca Initial text support in new reorderer/renderer
Removes obsolete drawPosText codepath, and unifies text decoration behavior.

Change-Id: I9c563249ab688a3394445a0e7fe1b9d0661f6f7c
2015-11-20 11:03:18 -08:00
John Reck
16c9d6a92e Refactor hwuitest
Yank animations out into their own files

Change-Id: Iea522ee032752019c07ff308c3a3993011054308
2015-11-19 11:35:14 -08:00
Doris Liu
804618d086 VectorDrawable native rendering - Step 2 of MANY
Introduced PathData in Java, which is effectively a thin layer around the
native instance. PathData holds the verbs and points which is being used
in path morphing/interpolation. The verbs and points can be interpreted
into skia path commands, which is now done in native and therefore saves
a handful of JNI calls during path creation.

Removed the old PathDataNode mechanism and changed the PathEvaluator
to use PathData instead.

Also added tests and a microbench. Also ran CTS tests for VectorDrawable
and AnimatedVectorDrawable, and passed all of the existing tests.

Change-Id: Ia166f5172ff031fe18b154327967f911a62caec1
2015-11-18 13:38:23 -08:00
Chris Craik
98787e6c9b Finish shadow support in new reorderer/renderer
Now passes alphas and light radius, and correctly transforms light
center for layers.

Also fixes begin-frame/layer clears to be damage rect aware.

Change-Id: I3b1415cd7bf1518c510145ebebdb745f494a2542
2015-11-16 11:21:18 -08:00
Chris Craik
9fded232a9 Recycle OffscreenBuffers
Change-Id: Ia2e219026f211a5308ecf8209c5f986bb888aadd
2015-11-12 13:05:35 -08:00
Doris Liu
f59cb788ba Add microbench for PathParser
Change-Id: I95d6c3153480e3ea56032ffe73707110186fbb0f
2015-11-10 16:43:16 -08:00
Doris Liu
30bcf69df9 VectorDrawable native rendering - Step 1 of MANY
Implement path parsing from string to skia path in native. The parsing
contains two main stages:
1) Parse string into a list of nodes that contains one operation (such
   as move) and a vector of floats as params for that operation.
2) Interpret the operations defined in the nodes into SkPath operations,
   and create a skia path

Also provided unit test for parsing a string path into a list of nodes,
and then to a skia path.

Change-Id: I0ce13df5e3bb90987dcdc80fe8b039af175ad2e2
2015-11-10 15:46:06 -08:00
John Reck
704bed0da7 add DeviceInfo
This reverts commit 096895550b9d5430d7a001d491566decf4f9791b.

Change-Id: Ib2ed1e96d8f7f88302f5e27fe735687194553104
2015-11-05 10:13:23 -08:00
John Reck
41925b1ccd Merge "Revert "add DeviceInfo"" 2015-11-05 01:39:37 +00:00