New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 686267 link

Starred by 5 users

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Feature

Blocked on:
issue 691041



Sign in to add a comment

Add checker-imaging support in cc.

Project Member Reported by khushals...@chromium.org, Jan 27 2017

Issue description

This is the tracking bug for changes necessary in cc to allow pending tree activation to not be blocked on image decodes. The idea is to selectively schedule image decodes for tiles using the ImageDecodeService and not add it as a dependency on the raster task. The image will be skipped during raster of tiles which depend on it. Once the image decode is finished, the region for this image is invalidated on the next pending tree to re-raster these tiles. The pending tree may be created on the impl thread, or the invalidation can be merged with the pending tree from the main frame.
 
Components: Internals>Compositing>Rasterization
Also requires a change in SyncedProperty for the case where we create a pending tree for impl-side invalidation after a main frame was sent, so SyncedProperty doesn't assume that the the value on the pending tree includes the deltas we are expecting the main thread to reflect.
Project Member

Comment 2 by bugdroid1@chromium.org, Feb 1 2017

Blockedon: 691041
Project Member

Comment 4 by bugdroid1@chromium.org, Feb 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d3b8827d06088880374054960d4285a9f0c754c6

commit d3b8827d06088880374054960d4285a9f0c754c6
Author: khushalsagar <khushalsagar@chromium.org>
Date: Sat Feb 18 18:42:54 2017

cc: Add checker-imaging support to TileManager.

This change adds the CheckerImageManager to selectively defer image
decodes to the Image Decode Service and not block raster for dependent
tiles on these decodes. The CheckerImageTracker does the work of
filtering these images, requesting decodes and requesting impl-side
invalidations once the image decode is finished.

BUG= 686267 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2668873002
Cr-Commit-Position: refs/heads/master@{#451482}

[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/BUILD.gn
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/layers/picture_layer_impl.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/layers/picture_layer_impl.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/playback/image_hijack_canvas.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/playback/image_hijack_canvas.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/playback/image_hijack_canvas_unittest.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/playback/image_id.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/playback/raster_source.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/playback/raster_source.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/test/fake_layer_tree_host_impl.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/test/fake_layer_tree_host_impl.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/test/fake_layer_tree_host_impl_client.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/test/fake_tile_manager.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/test/fake_tile_manager_client.h
[add] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/checker_image_tracker.cc
[add] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/checker_image_tracker.h
[add] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/checker_image_tracker_unittest.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/image_controller.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/image_controller.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/picture_layer_tiling.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/picture_layer_tiling_set.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/picture_layer_tiling_set.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/tile_manager.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/tile_manager.h
[add] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/tile_manager_settings.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/layer_tree_host_impl.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/layer_tree_impl.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/layer_tree_settings.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/layer_tree_settings.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/proxy_impl.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/proxy_impl.h
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/single_thread_proxy.cc
[modify] https://crrev.com/d3b8827d06088880374054960d4285a9f0c754c6/cc/trees/single_thread_proxy.h

Project Member

Comment 5 by bugdroid1@chromium.org, Feb 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585

commit ab73d50c7514cdb1ed443d090c5b9d6a17d4b585
Author: khushalsagar <khushalsagar@chromium.org>
Date: Fri Feb 24 02:26:46 2017

cc: Add scheduler support for invalidating content on impl thread.

The change adds an API to the scheduler for requesting invalidations
to content on the impl thread. The scheduler makes best effort to merge
impl-side invalidations with the incoming main frame, if any, but may
decide to create a pending tree for these invalidations on the impl
thread.

BUG= 686267 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2659123004
Cr-Commit-Position: refs/heads/master@{#452720}

[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/scheduler/scheduler.cc
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/scheduler/scheduler.h
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/scheduler/scheduler_state_machine.cc
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/scheduler/scheduler_state_machine.h
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/scheduler/scheduler_state_machine_unittest.cc
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/scheduler/scheduler_unittest.cc
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/test/scheduler_test_common.h
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/trees/proxy_impl.cc
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/trees/proxy_impl.h
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/trees/single_thread_proxy.cc
[modify] https://crrev.com/ab73d50c7514cdb1ed443d090c5b9d6a17d4b585/cc/trees/single_thread_proxy.h

Project Member

Comment 6 by bugdroid1@chromium.org, Feb 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6dc91d0e5b2f135eee29fc0e2a506747a18dc439

commit 6dc91d0e5b2f135eee29fc0e2a506747a18dc439
Author: khushalsagar <khushalsagar@chromium.org>
Date: Tue Feb 28 05:10:07 2017

cc: Glue LTHI and Scheduler changes for checker-imaging.

This change glues together the scheduling and tile management changes
for checker-imaging via ProxyImpl and SingleThreadProxy for enabling
checker-imaging. And adds integration LayerTreeTests, including a
scroll test to ensure that an impl-side pending tree does not affect
SyncedProperty state synchronization.

BUG= 686267 ,  691041 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2717553005
Cr-Commit-Position: refs/heads/master@{#453508}

[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/BUILD.gn
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/playback/raster_source.cc
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/scheduler/scheduler_state_machine.cc
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/test/layer_tree_test.cc
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/test/layer_tree_test.h
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/test/test_hooks.h
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/trees/layer_tree_host.cc
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/trees/layer_tree_host.h
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/trees/layer_tree_host_impl.h
[add] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/trees/layer_tree_host_unittest_checkerimaging.cc
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/trees/layer_tree_host_unittest_scroll.cc
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/trees/layer_tree_settings.h
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/trees/proxy_impl.cc
[modify] https://crrev.com/6dc91d0e5b2f135eee29fc0e2a506747a18dc439/cc/trees/single_thread_proxy.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Feb 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/19376239fec9373251062c97f250d6f8e98b094e

commit 19376239fec9373251062c97f250d6f8e98b094e
Author: khushalsagar <khushalsagar@chromium.org>
Date: Tue Feb 28 06:26:18 2017

content: Add switch to enable checker-imaging.

The change adds a cc switch to enable checker-imaging and plumbs it to
the renderer. Also since during image decode, we end up allocating
shared memory which makes a synchronous call to the IO thread, the
image worker task runner needs to allow waiting.

TBR=piman@chromium.org
BUG= 686267 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2714863005
Cr-Commit-Position: refs/heads/master@{#453523}

[modify] https://crrev.com/19376239fec9373251062c97f250d6f8e98b094e/cc/base/switches.cc
[modify] https://crrev.com/19376239fec9373251062c97f250d6f8e98b094e/cc/base/switches.h
[modify] https://crrev.com/19376239fec9373251062c97f250d6f8e98b094e/cc/trees/layer_tree_host.h
[modify] https://crrev.com/19376239fec9373251062c97f250d6f8e98b094e/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/19376239fec9373251062c97f250d6f8e98b094e/content/renderer/gpu/render_widget_compositor.cc

Status: Fixed (was: Assigned)

Sign in to add a comment