235 Commits

Author SHA1 Message Date
Chris Craik
f20528b404 Merge "Move BakedOpDispatcher to separate file" 2015-11-25 21:38:56 +00:00
Chris Craik
9e7fcfda28 Move BakedOpDispatcher to separate file
Change-Id: If7aad6db6b7e54a33eac9b9eddbe8cd844207282
2015-11-25 13:27:33 -08:00
John Reck
52b783f76a INT_MAX nanoseconds is not very long
Bug: 25843358

If the time between last swap & current vsync grew larger
than 2 seconds it would overflow when placed into an int, causing
frames to be dropped as negative numbers are definitely
less than 2_ms.

Change-Id: Icd2136989e5bbf5a0e21611b95a4d515b5ff9b14
2015-11-24 11:12:55 -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
John Reck
cba287b971 Fix threading issues
Bug: 25584167
Change-Id: I413ef9e0c86f7cca1f7d085e0071745ca0192853
2015-11-10 13:41:32 -08:00
Colin Cross
290b23a1e1 Fix build
std::abs requires <cstdlib>

Change-Id: I0722340d17aed88c4c8dabcb723d432b05cebedb
2015-11-05 22:15:18 +00:00
John Reck
704bed0da7 add DeviceInfo
This reverts commit 096895550b9d5430d7a001d491566decf4f9791b.

Change-Id: Ib2ed1e96d8f7f88302f5e27fe735687194553104
2015-11-05 10:13:23 -08:00
John Reck
096895550b Revert "add DeviceInfo"
This reverts commit b2442896e3a226c7ebe9d47fa80b257e98a6a34d.

Change-Id: I50f6555451f71067505245333c8e558b5e3b2b3b
2015-11-05 01:38:25 +00:00
John Reck
b2442896e3 add DeviceInfo
Change-Id: I4c122278a7e88b6f47c4dd3c5fc553df7d3c900d
2015-11-04 13:46:49 -08:00
John Reck
b4e228918e Merge "Remove almost-all android::Singleton users" 2015-11-03 18:19:15 +00:00
John Reck
6b50780363 Remove almost-all android::Singleton users
Bug: 25426213
Change-Id: I88e6206e8915cce95c3a8a8a82a4bb8fbf668141
2015-11-03 10:09:59 -08:00
Chris Craik
2359d85e31 Merge "Initial HW layer support in new reorderer/renderer" 2015-11-02 21:16:37 +00:00
Chris Craik
0b7e8245db Initial HW layer support in new reorderer/renderer
Shares vast majority of clipped savelayer code, with only minor
differences in lifecycle.

Doesn't yet handle fill region, resize, or window transform.

Change-Id: Iabdd71811590d2b937eb11e1b01ce556ade54a5a
2015-11-02 12:59:38 -08:00
Rob Carr
b97ba3c09d Merge "Add window setDecorView API." 2015-10-30 20:55:35 +00:00
Chris Craik
263e19bf46 Merge "Simplify TreeInfo" 2015-10-29 19:49:22 +00:00
Robert Carr
b6c2624c8d Add window setDecorView API.
Add a Window API for setting a view which will be placed in
the decoration area (next to the window control buttons).

Change-Id: Ie106cbea653ff95fdba987a2a43506d394600612
2015-10-29 12:31:47 -07:00
Chris Craik
e2e53a7079 Simplify TreeInfo
Change-Id: I8f05e9046236d607016b6c2bb77a333cfb47ba47
2015-10-28 15:55:40 -07:00
John Reck
97c92659fa Merge "Tune scheduling a bit, avoid a binder ipc" 2015-10-28 19:24:45 +00:00
John Reck
e486d932ca Tune scheduling a bit, avoid a binder ipc
Don't query running behind if it's not possible to be behind such
as having received a vsync since the last call to swap buffers.

This also avoids an accidental-starvation issue where if surface
flinger was a bit sluggish to dequeue then renderthread would drop
thinking the queue was full.

Also be a bit smarter about tracking if we've already drawn for this
vsync target to avoid producing two frames for the same vsync

Change-Id: Ib266500a693c27000b2e8ea578f111229d75147a
2015-10-28 12:24:13 -07:00
John Reck
3398abb25b Merge "Cleanups" 2015-10-28 19:21:17 +00:00
Chris Craik
5854b34881 Rework receiver/dispatcher design slightly, and replace Layer usage.
Switched from 'renderer/info' to 'dispatcher/renderer' to make their
interaction more natural. The new BakedOpRenderer is more similar in
responsibilities to the OpenGLRenderer, as it manages layer and frame
lifecycles, and performs the actual rendering.

However, it's still simpler because the BakedOpDispatcher handles
mapping Canvas drawing ops to Glops, and the OpReorderer handles almost
all canvas state operations.

Also switch BakedOpRenderer to use the new OffscreenBuffer, which
serves as a lightweight Layer replacement, with a much simpler
lifecycle.

Change-Id: Ie0e2e248503400041d49729d813d485d28c76eb3
2015-10-27 16:44:50 -07:00
John Reck
77c40109cf Cleanups
Change-Id: I10001711afb2530c5dc19aebf2d055ae41f58c6a
2015-10-27 07:54:17 -07:00
Chris Craik
ac7062e7f1 Merge "Initial version of clipped saveLayer in new pipeline" 2015-10-26 23:12:46 +00:00
Chris Craik
818c9fbf1d Initial version of clipped saveLayer in new pipeline
Additionally disables usage of FBO cache, so FBO destruction safely
interacts with renderstate caching.

Change-Id: I25c277cb7afec2ca33bf226445d6c8867a15a915
2015-10-26 15:51:48 -07:00
John Reck
c2547fa6f9 eglSwapBuffers can also return EGL_BAD_NATIVE_WINDOW
Bug: 25017107
Change-Id: I545a746ba89d577de5769bc3e7dd335a100638c0
2015-10-26 13:52:52 -07:00
John Reck
0cc90c36f3 Merge "Add assert for required EGL extensions" 2015-10-22 20:27:36 +00:00
John Reck
708b6687da Add assert for required EGL extensions
Bug: 25149700

Change-Id: I535ead7c1f8ba8766dff85fcf26a9cfe76647fb8
2015-10-22 13:18:37 -07:00
Chris Craik
914e362d18 Merge "Work to support saveLayer in new pipeline" 2015-10-22 17:16:55 +00:00
John Reck
a672f6ba4c Remove obsolete debug option
Bug: 25149700
Change-Id: I9280e2414255fb01e672094cd8d173efadac1681
2015-10-22 09:53:26 -07:00
Chris Craik
6fe991e5e7 Work to support saveLayer in new pipeline
clipped SaveLayers will now be pulled to the beginning of the frame,
prior to drawing FBO 0. This will remove the need for switching FBOs
mid-frame.

Change-Id: I4d8dc1f845e84e9b49d5acdf4f4703eef4a9cb06
2015-10-21 18:19:37 -07:00
Chris Craik
0a24b146cd Add initial OpReorderer benchmarks
Change-Id: I6ca8ea89be2159331b2ad7031769c65f54161918
2015-10-20 17:19:33 -07:00
Chris Craik
003cc3dec8 Rename DisplayListData to DisplayList
Change-Id: I25f6bb88ffdf9baf7e8e4e2a294aa8c9d2a4605b
2015-10-16 10:38:34 -07:00
Chris Craik
ddf2215d98 Add partial damage support to new draw path
Change-Id: I612578fd181240de71297c9a28bc9a8f350764a7
2015-10-15 09:38:15 -07:00
Chris Craik
b565df13a9 Initial commit of new Canvas operation recording / replay
Done:
- drawRect, drawBitmap, drawColor, drawPaint, drawRenderNode, drawRegion
- Recording with new DisplayList format
- batching & reordering
- Stateless op reorder
- Stateless op rendering
- Frame lifecycle (clear, geterror, cleanup)

Not done:
- SaveLayer (clipped and unclipped)
- HW layers
- Complex clipping
- Ripple projection
- Z reordering
- Z shadows
- onDefer prefetching (text + task kickoff)
- round rect clip
- linear allocation for std collections
- AssetAtlas support

Change-Id: Iaf98c1a3aeab5fa47cc8f9c6d964420abc0e7691
2015-10-14 16:10:40 -07:00
Chris Craik
ac02eb9035 Remove confusing behavior of Rect::intersect() and rename
bug:24670525

Removes silly 'do nothing if rects do not intersect' behavior, and
changes the name to clarify the difference (contrasting against
SkRect::intersect())

bug:24670525

Change-Id: Id2ca1cfea1a9d720d4dc70b251f426d9916f8b53
2015-10-05 14:16:26 -07:00
Skuhne
b816087962 Rendering the window frame with a second thread
Using a multi threaded render node to render the window frame
asynchronously from the application relayout.

Bug: 22527834
Bug: 24400680
Bug: 24459827
Bug: 24409773
Bug: 24537510
Change-Id: I1010fc6a8b6e38424178140afa3ca124433ab7e4
2015-10-02 07:11:45 -07:00
Stefan Kuhne
fe1f99c2b2 Merge "MultiThreaded rendering of different renderNodes" 2015-09-21 22:08:30 +00:00
Chris Craik
6e6646c037 Unify extensions parsing behavior
Removes remnants of EGL extension support, and persistence of
GL extension list.

Change-Id: I35aec12d900bdb33549ea47654bb8146f350ef48
2015-09-21 13:14:20 -07:00
Skuhne
ea7a7fb75a MultiThreaded rendering of different renderNodes
This is adding the renderer side infrastructure to allow
rendering multiple render nodes with different threads.
This is a pre-step for decoupling a non client decor
resize reder from a content resize render.

Multiple render nodes can be added to be drawn, and to
prevent overdrawing, a content bounds area can be set

Bug: 22527834

Change-Id: Ie7271e20895bf38957e5a84aeefc883e282039ad
2015-09-21 07:18:00 -07:00
Chris Craik
64e445bf74 CanvasState frame init refactor
bug:23760482

Change-Id: Idc0802b4b8a6a3cebd20797350f4eb01bcc3fe77
2015-09-02 15:15:56 -07:00
John Reck
e248bd1b2c Serializing display lists
This is a WIP prototype

Change-Id: Id4bfcf2b7bf905221c3734b7b6887c9b2efd37e6
2015-08-26 16:29:15 -07:00
Chris Craik
b9ce116dac Switch several enums to enum classes
Change-Id: I00ecd0b61657196b51704f70ca31a9d1c1ac254e
2015-08-21 23:05:44 +00:00
John Reck
149173d28c Support new EGL extensions
Bug: 21753739

Includes a revert of 13d1b4ab10fbee5e81a2ba1ac59cfae1e51d3ef0
as that only supported EGL_EXT_buffer_age

Change-Id: Ia86a47d19e3355c067934d7764c330b640c6958d
2015-08-12 14:26:05 -07:00
Season Li
13d1b4ab10 renderthread: add EGL_EXT_buffer_age support
EGL_EXT_buffer_age is better than EGL_BUFFER_PRESERVED
because it can save memory bandwidth used to blit
back buffer into front buffer.

Change-Id: I2fea0ee08dc7dd66e348b04dd694d075d509d01b
2015-08-04 13:01:54 -07:00
John Reck
0d39408976 am 903e117e: am 0429246e: am 0c9ec1f2: am 2e529712: am c03ab87a: Merge "Disable skipping frames on empty damage" into mnc-dev
* commit '903e117e55d5b2ac58acdce3810fc47972d1c6cb':
  Disable skipping frames on empty damage
2015-08-04 01:41:02 +00:00
John Reck
6d4d0db312 Disable skipping frames on empty damage
Bug: 22592975

Optimization added in MNC is not quite correct, occasionally
it will fail to repaint when it was supposed to leading
to buffer corruption. Disable the optimization for now.

Change-Id: I34dfdfb357eda298198043ded7335d4588a003fd
2015-08-03 22:47:49 +00:00
John Reck
272a685f17 Replace most usages of utils/Vector.h
Change-Id: I540d1b3523244d6c71fc52d6fb30555271c25644
2015-07-30 09:51:52 -07:00
John Reck
c36df95229 Re-enable -Werror on clang
Change-Id: I582bd0665752c7a9deb4f9de094d0dd0a50cda6a
2015-07-29 10:09:36 -07:00
John Reck
c052a9a1bb am a2fd3234: am 3bfe4b47: am 1cd5afc1: am 9317d0b9: am 1fddd3ef: Merge "Mark isInUse per-window" into mnc-dev
* commit 'a2fd32348b06b22963fcc7c33179fddbd2394dbf':
  Mark isInUse per-window
2015-07-21 22:00:50 +00:00