Commit Graph

153 Commits

Author SHA1 Message Date
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
031eaedef8 Merge "Add TextureView support to new renderer/reorderer" 2015-12-16 23:48:27 +00:00
Chris Craik
d2dfd8f128 Add TextureView support to new renderer/reorderer
bug:22480459

Change-Id: I2e4c0bc6b904706132f3f5087ededc9cac9b40fb
2015-12-16 15:35:40 -08:00
John Reck
bf4b31f7b2 resolve merge conflicts of 04ce46db64 to master.
Change-Id: I935bb47718f0e7d5fb48945dd8de6e28dac136e5
2015-12-16 11:07:53 -08:00
Chris Craik
adfeec9456 Allow RT animation of new renderer
Change-Id: I60136dc080dc4fd853ac8c3d37fefa85da1181df
2015-12-16 10:20:41 -08:00
Thomas Buhot
0bcd0cb6b1 libhwui: make setSurface asynchronous
On the critical path of the cold launch of applications
the main thread of the started application tells the RenderThread
to create a surface. This process is synchronous and blocks
the main thread of the application until the creation
of the EGLContext is complete.
As a consequence the launch time of the application is delayed
by time spent allocating the EGL Context in the RenderThread.

With this optimization the launch time of any application
is improved (for example settings by 20 to 40 ms).

Change-Id: Ibf47aaa0abb8dedf7aa00693073db3785d9d6b08
Signed-off-by: Thomas Buhot <thomas.buhot@intel.com>
Signed-off-by: Zhiquan Liu <zhiquan.liu@intel.com>
2015-12-10 14:51:58 +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
Colin Cross
290b23a1e1 Fix build
std::abs requires <cstdlib>

Change-Id: I0722340d17aed88c4c8dabcb723d432b05cebedb
2015-11-05 22:15:18 +00: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
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
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
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
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 13d1b4ab10
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
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
00e79c9947 Mark isInUse per-window
Bug: 22509159
Change-Id: I0ae0f1fa582ee38dcb9f24ca20f0b4d0c57ccb32
2015-07-21 10:46:54 -07:00
John Reck
f2dcc2aecb Don't crash on makeCurrent fail
Bug: 22444755

WindowManager may decide to yank the surface at any point, so
attempt to kinda handle this

Change-Id: Id2f665d2f0f93bccd4ec977fbf52dca4dc1ec891
2015-07-16 09:17:59 -07:00
John Reck
be3fba05e8 Adjust for pipeline stalls
Bug: 20853441

Calculating duration that crosses the UI-RT
sync point will now subtract out the time spent waiting
in queue under the assumption that this time will be
accounted for in the previous frame's metrics

Change-Id: Ia8213f4410638840613f5ae439e98dfb77532a6a
2015-07-06 16:12:46 -07:00
Chris Craik
1b54fb27ac Delete MAKE_ENUM_FLAGS
bug:21595702

Settle on namespace-enum for consistency. Also removes k prefix.

Change-Id: Ib89f94cb9263de40b6e4636577dca4860867d0d8
2015-06-03 13:42:21 -07:00
John Reck
2a8bb05a31 Fix warning
Bug: 21608208
Change-Id: I1d1cf1fbc8c0a4561bf76e307c56be580fb4baef
2015-06-03 09:53:42 -07:00
John Reck
6058251939 Merge "More colors, now with material colors" into mnc-dev 2015-06-02 23:16:31 +00:00
John Reck
bf3c602284 More colors, now with material colors
Bug: 18052916
Change-Id: I66c2573d796338ee7b7d0ddf240b90cc78a71ce5
2015-06-02 16:13:56 -07:00
John Reck
4db3d17deb FrameInfo header fixes
Bug: 21560187

Log column names as part of output in case of other such
issues

Change-Id: I16157ed968307e761d416ca54bd7af5453fe67bf
2015-06-02 15:58:43 -07:00
John Reck
d7db4d7672 Eliminate requireGlContext
Bug: 20297820

Change-Id: I37c63bab6f6c0d2337c8c6002046d2ef17e74097
2015-05-20 11:24:57 -07:00
Alan Viverette
50210d9129 Adjust light source for window position
Bug: 16523629
Change-Id: I2f3fed1edcac0a3cfd5034aded45e08ececfebaf
2015-05-14 18:05:36 -07:00
John Reck
4c9e59d03c Unify DrawProfiler/JankStats
Bug: 20822400

Change-Id: I24345c3120440bfce14e8cbe7e880b39f10b744a
2015-05-12 11:02:07 -07:00
John Reck
9aa7b45e79 Merge "Fix kSkippedFrame setting" into mnc-dev 2015-05-08 21:19:54 +00:00
John Reck
aef9dc8d18 Fix kSkippedFrame setting
It was only set previously if RenderThread dropped the frame,
but not if the UI thread frame was dropped. Unify the
two paths

Change-Id: If2574edde3cb0949deed4e47f3daaddb890a1b28
2015-05-08 14:12:32 -07:00
John Reck
d04794a9a3 Add eglSwapBuffersWithDamageKHR support
BUG: 20761426
Disabled temporarily

Change-Id: I0b6b6f0eebab886145e13fa35aefe76826965cf5
2015-05-08 10:48:57 -07:00
John Reck
240ff6246a Skip frames with no damage
Bug: 20464038
Change-Id: Iae3aa9baf1d03c3aa443a39373e2bbd4a3910fad
2015-04-28 13:50:00 -07:00