Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(529)

Issue 287993004: [Android WebView] Implement Ubercomp for Render Thread support (Closed)

Created:
6 years, 7 months ago by boliu
Modified:
6 years, 7 months ago
CC:
chromium-reviews, darin-cc_chromium.org, jam, android-webview-reviews_chromium.org
Visibility:
Public.

Description

[Android WebView] Implement delegated rendering for sync compositor Modify content SynchronousCompositor related classes to support for content embedder to use delegated rendering. The embedder is responsible for creating the parent compositor. Essentially need to pass CompositorFrame and CompositorFrameAck between embedder and SynchronousCompositor. Also need to expose the share context so embedder can correctly initialize a context for parent compositor. In android_webview implemented parent compositor for delegated rendering while keeping the current direct renderer working, controlled by a command line switch. BrowserViewRenderer deals exclusively with SynchronousCompositor (the child). And HardwareRenderer deals exclusively with the parent compositor. The two share data through lock protected SharedRendererState. And all are coordinated by native AwContents. Direct rendering path is kept alive in HardwareRendererLegacy and code guarded by switches::UbercompEnabled. Direct rendering path remains the default. BUG=344087 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=272668

Patch Set 1 #

Total comments: 17

Patch Set 2 : mkosiba review #

Patch Set 3 : comments #

Total comments: 60

Patch Set 4 : review #

Total comments: 8

Patch Set 5 : address more comments #

Patch Set 6 : rewrite teardown #

Patch Set 7 : init tear down factored out separately #

Total comments: 4

Patch Set 8 : small fixes #

Patch Set 9 : set damage from main side #

Patch Set 10 : Fix clang compile #

Unified diffs Side-by-side diffs Delta from patch set Stats (+818 lines, -232 lines) Patch
M android_webview/android_webview.gyp View 1 2 3 4 chunks +8 lines, -0 lines 0 comments Download
M android_webview/browser/aw_browser_main_parts.cc View 1 2 3 2 chunks +8 lines, -3 lines 0 comments Download
M android_webview/browser/browser_view_renderer.h View 1 4 chunks +10 lines, -3 lines 0 comments Download
M android_webview/browser/browser_view_renderer.cc View 1 2 3 4 8 chunks +139 lines, -29 lines 0 comments Download
M android_webview/browser/deferred_gpu_command_service.h View 1 2 3 2 chunks +2 lines, -2 lines 0 comments Download
M android_webview/browser/deferred_gpu_command_service.cc View 1 2 3 3 chunks +10 lines, -2 lines 0 comments Download
M android_webview/browser/hardware_renderer.h View 1 2 3 4 5 6 7 1 chunk +68 lines, -21 lines 0 comments Download
M android_webview/browser/hardware_renderer.cc View 1 2 3 4 5 6 7 8 9 2 chunks +170 lines, -50 lines 0 comments Download
A android_webview/browser/hardware_renderer_interface.h View 1 chunk +26 lines, -0 lines 0 comments Download
A android_webview/browser/hardware_renderer_legacy.h View 1 chunk +46 lines, -0 lines 0 comments Download
A + android_webview/browser/hardware_renderer_legacy.cc View 1 2 3 4 4 chunks +30 lines, -31 lines 0 comments Download
A android_webview/browser/parent_output_surface.h View 1 2 3 4 1 chunk +30 lines, -0 lines 0 comments Download
A android_webview/browser/parent_output_surface.cc View 1 2 3 4 5 6 7 8 1 chunk +35 lines, -0 lines 0 comments Download
M android_webview/browser/shared_renderer_state.h View 1 2 3 4 5 6 4 chunks +25 lines, -5 lines 0 comments Download
M android_webview/browser/shared_renderer_state.cc View 1 2 3 4 5 6 5 chunks +50 lines, -7 lines 0 comments Download
A + android_webview/common/aw_switches.h View 1 2 3 4 1 chunk +6 lines, -3 lines 0 comments Download
A android_webview/common/aw_switches.cc View 1 chunk +19 lines, -0 lines 0 comments Download
M android_webview/lib/main/aw_main_delegate.cc View 1 2 chunks +7 lines, -0 lines 0 comments Download
M android_webview/native/aw_contents.h View 1 2 3 4 5 6 2 chunks +2 lines, -2 lines 0 comments Download
M android_webview/native/aw_contents.cc View 1 2 3 4 5 6 7 3 chunks +16 lines, -5 lines 0 comments Download
M content/browser/android/in_process/synchronous_compositor_factory_impl.h View 1 chunk +1 line, -0 lines 0 comments Download
M content/browser/android/in_process/synchronous_compositor_factory_impl.cc View 1 chunk +6 lines, -2 lines 0 comments Download
M content/browser/android/in_process/synchronous_compositor_impl.h View 1 2 3 4 4 chunks +7 lines, -5 lines 0 comments Download
M content/browser/android/in_process/synchronous_compositor_impl.cc View 1 2 3 4 3 chunks +44 lines, -17 lines 0 comments Download
M content/browser/android/in_process/synchronous_compositor_output_surface.h View 1 2 3 4 5 chunks +9 lines, -12 lines 0 comments Download
M content/browser/android/in_process/synchronous_compositor_output_surface.cc View 1 2 3 4 10 chunks +24 lines, -30 lines 0 comments Download
M content/public/browser/android/synchronous_compositor.h View 1 2 3 4 2 chunks +20 lines, -3 lines 0 comments Download

Messages

Total messages: 26 (0 generated)
boliu
Martin, can you give this a first pass? This includes all of non-cc changes. Didn't ...
6 years, 7 months ago (2014-05-19 03:56:08 UTC) #1
mkosiba (inactive)
wow, quite a fair number of changes have landed in this area while I wasn't ...
6 years, 7 months ago (2014-05-19 20:01:16 UTC) #2
boliu
Thanks for the review! https://codereview.chromium.org/287993004/diff/1/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/287993004/diff/1/android_webview/browser/browser_view_renderer.cc#newcode310 android_webview/browser/browser_view_renderer.cc:310: DCHECK(attached_to_window_); On 2014/05/19 20:01:16, mkosiba ...
6 years, 7 months ago (2014-05-19 23:13:01 UTC) #3
boliu
Sorry for the massive patch and reviewer list.. piman/danakj please review: synchronous_compositor.h for api changes ...
6 years, 7 months ago (2014-05-20 00:05:33 UTC) #4
no sievers
https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/aw_browser_main_parts.cc File android_webview/browser/aw_browser_main_parts.cc (right): https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/aw_browser_main_parts.cc#newcode66 android_webview/browser/aw_browser_main_parts.cc:66: if (!switches::UbercompEnabled() && add TODO w/bug number https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/browser_view_renderer.cc File ...
6 years, 7 months ago (2014-05-20 20:48:25 UTC) #5
danakj
https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/hardware_renderer.cc File android_webview/browser/hardware_renderer.cc (right): https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/hardware_renderer.cc#newcode81 android_webview/browser/hardware_renderer.cc:81: root_layer_->SetIsDrawable(false); this is the default already https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/hardware_renderer.cc#newcode87 android_webview/browser/hardware_renderer.cc:87: // ...
6 years, 7 months ago (2014-05-20 21:50:01 UTC) #6
boliu
Addressed most comments. What's *not* done yet: Recheck every LayerTreeSetting I copied to see if ...
6 years, 7 months ago (2014-05-21 01:33:26 UTC) #7
danakj
https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/hardware_renderer.cc File android_webview/browser/hardware_renderer.cc (right): https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/hardware_renderer.cc#newcode103 android_webview/browser/hardware_renderer.cc:103: cc::LayerTreeHost::CreateSingleThreaded(this, this, NULL, settings); On 2014/05/21 01:33:26, boliu wrote: ...
6 years, 7 months ago (2014-05-21 15:22:54 UTC) #8
boliu
https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/hardware_renderer.cc File android_webview/browser/hardware_renderer.cc (right): https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/hardware_renderer.cc#newcode103 android_webview/browser/hardware_renderer.cc:103: cc::LayerTreeHost::CreateSingleThreaded(this, this, NULL, settings); On 2014/05/21 15:22:54, danakj wrote: ...
6 years, 7 months ago (2014-05-21 15:35:14 UTC) #9
danakj
https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/hardware_renderer.cc File android_webview/browser/hardware_renderer.cc (right): https://codereview.chromium.org/287993004/diff/40001/android_webview/browser/hardware_renderer.cc#newcode103 android_webview/browser/hardware_renderer.cc:103: cc::LayerTreeHost::CreateSingleThreaded(this, this, NULL, settings); On 2014/05/21 15:35:14, boliu wrote: ...
6 years, 7 months ago (2014-05-21 15:36:32 UTC) #10
danakj
LG % the not yet done stuff. a couple last nits/questions about what's done so ...
6 years, 7 months ago (2014-05-21 15:45:39 UTC) #11
boliu
https://codereview.chromium.org/287993004/diff/60001/android_webview/browser/parent_output_surface.cc File android_webview/browser/parent_output_surface.cc (right): https://codereview.chromium.org/287993004/diff/60001/android_webview/browser/parent_output_surface.cc#newcode30 android_webview/browser/parent_output_surface.cc:30: SetNeedsRedrawRect(gfx::Rect(surface_size)); On 2014/05/21 15:45:39, danakj wrote: > Do you ...
6 years, 7 months ago (2014-05-21 15:54:15 UTC) #12
boliu
DemandDrawHw now returns cc::CompositorFrame. This also allowed did_swap_buffer_ to be removed. https://codereview.chromium.org/287993004/diff/40001/content/browser/android/in_process/synchronous_compositor_output_surface.cc File content/browser/android/in_process/synchronous_compositor_output_surface.cc (right): ...
6 years, 7 months ago (2014-05-21 19:58:22 UTC) #13
boliu
https://codereview.chromium.org/287993004/diff/60001/android_webview/browser/hardware_renderer.cc File android_webview/browser/hardware_renderer.cc (right): https://codereview.chromium.org/287993004/diff/60001/android_webview/browser/hardware_renderer.cc#newcode94 android_webview/browser/hardware_renderer.cc:94: settings.highp_threshold_min = 2048; On 2014/05/21 19:58:22, boliu wrote: > ...
6 years, 7 months ago (2014-05-21 20:00:25 UTC) #14
danakj
https://codereview.chromium.org/287993004/diff/40001/content/browser/android/in_process/synchronous_compositor_output_surface.cc File content/browser/android/in_process/synchronous_compositor_output_surface.cc (right): https://codereview.chromium.org/287993004/diff/40001/content/browser/android/in_process/synchronous_compositor_output_surface.cc#newcode81 content/browser/android/in_process/synchronous_compositor_output_surface.cc:81: capabilities_.adjust_deadline_for_parent = false; On 2014/05/21 19:58:22, boliu wrote: > ...
6 years, 7 months ago (2014-05-21 20:01:00 UTC) #15
boliu
https://codereview.chromium.org/287993004/diff/40001/content/browser/android/in_process/synchronous_compositor_output_surface.cc File content/browser/android/in_process/synchronous_compositor_output_surface.cc (right): https://codereview.chromium.org/287993004/diff/40001/content/browser/android/in_process/synchronous_compositor_output_surface.cc#newcode81 content/browser/android/in_process/synchronous_compositor_output_surface.cc:81: capabilities_.adjust_deadline_for_parent = false; On 2014/05/21 20:01:01, danakj wrote: > ...
6 years, 7 months ago (2014-05-21 20:12:19 UTC) #16
danakj
https://codereview.chromium.org/287993004/diff/40001/content/browser/android/in_process/synchronous_compositor_output_surface.cc File content/browser/android/in_process/synchronous_compositor_output_surface.cc (right): https://codereview.chromium.org/287993004/diff/40001/content/browser/android/in_process/synchronous_compositor_output_surface.cc#newcode81 content/browser/android/in_process/synchronous_compositor_output_surface.cc:81: capabilities_.adjust_deadline_for_parent = false; On 2014/05/21 20:12:20, boliu wrote: > ...
6 years, 7 months ago (2014-05-21 20:13:39 UTC) #17
no sievers
lgtm if/when Dana is happy https://codereview.chromium.org/287993004/diff/120001/android_webview/native/aw_contents.cc File android_webview/native/aw_contents.cc (right): https://codereview.chromium.org/287993004/diff/120001/android_webview/native/aw_contents.cc#newcode824 android_webview/native/aw_contents.cc:824: if (!draw_functor_succeeded && hardware_initialized) ...
6 years, 7 months ago (2014-05-23 19:47:35 UTC) #18
danakj
LGTM https://codereview.chromium.org/287993004/diff/120001/content/browser/android/in_process/synchronous_compositor_output_surface.cc File content/browser/android/in_process/synchronous_compositor_output_surface.cc (right): https://codereview.chromium.org/287993004/diff/120001/content/browser/android/in_process/synchronous_compositor_output_surface.cc#newcode140 content/browser/android/in_process/synchronous_compositor_output_surface.cc:140: cc::CompositorFrame* frame) { We should make this a ...
6 years, 7 months ago (2014-05-23 19:54:55 UTC) #19
boliu
Just need Antoine to approve the content/public change. https://codereview.chromium.org/287993004/diff/120001/android_webview/native/aw_contents.cc File android_webview/native/aw_contents.cc (right): https://codereview.chromium.org/287993004/diff/120001/android_webview/native/aw_contents.cc#newcode824 android_webview/native/aw_contents.cc:824: if ...
6 years, 7 months ago (2014-05-23 20:36:51 UTC) #20
piman
lgtm
6 years, 7 months ago (2014-05-23 21:20:41 UTC) #21
boliu
The CQ bit was checked by boliu@chromium.org
6 years, 7 months ago (2014-05-23 21:23:26 UTC) #22
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/boliu@chromium.org/287993004/160001
6 years, 7 months ago (2014-05-23 21:24:21 UTC) #23
boliu
The CQ bit was checked by boliu@chromium.org
6 years, 7 months ago (2014-05-23 21:35:50 UTC) #24
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/boliu@chromium.org/287993004/180001
6 years, 7 months ago (2014-05-23 21:38:01 UTC) #25
commit-bot: I haz the power
6 years, 7 months ago (2014-05-24 01:16:22 UTC) #26
Message was sent while issue was closed.
Change committed as 272668

Powered by Google App Engine
This is Rietveld 408576698