summaryrefslogtreecommitdiffstats
path: root/cc/trees/tree_synchronizer_unittest.cc
Commit message (Collapse)AuthorAgeFilesLines
* Add delegated rendering support for software renderer.jbauman@chromium.org2013-10-221-15/+6
| | | | | | | | | | | | This patch adds support to cc/ for delegated rendering with a software compositor. A new SharedBitmapManager is added, which will create SharedBitmaps with unique IDs in shared memory. These can be filled in the child, and their IDs can be sent to the browser so it can map them and draw from them. No implementations of the SharedBitmapManager are added in this patch, so delegated rendering support won't work in practice yet, and it will fall back to not allocating anything in shared memory. BUG= Review URL: https://codereview.chromium.org/24632004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@230245 0039d316-1c4b-4281-b951-d872f2087c98
* Add plumbing for scroll parent.vollick@chromium.org2013-08-231-0/+213
| | | | | | | | | | | | | Plumbs the scroll parent information into the cc layer trees. These relationships are not yet used. (That task is accomplished here https://codereview.chromium.org/18191009/). R=shawnsingh@chromium.org BUG=254435 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=219026 Review URL: https://chromiumcodereview.appspot.com/18133004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@219167 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 219026 "Add plumbing for scroll parent."creis@chromium.org2013-08-221-213/+0
| | | | | | | | | | | | | | | | | | | | Failed cc_unittests on Win7 Tests (dbg)(1). > Add plumbing for scroll parent. > > Plumbs the scroll parent information into the cc layer trees. These relationships are not yet used. (That task is accomplished here https://codereview.chromium.org/18191009/). > > R=shawnsingh@chromium.org > BUG=254435 > > Review URL: https://chromiumcodereview.appspot.com/18133004 TBR=vollick@chromium.org Review URL: https://codereview.chromium.org/22914030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@219033 0039d316-1c4b-4281-b951-d872f2087c98
* Add plumbing for scroll parent.vollick@chromium.org2013-08-221-0/+213
| | | | | | | | | | | Plumbs the scroll parent information into the cc layer trees. These relationships are not yet used. (That task is accomplished here https://codereview.chromium.org/18191009/). R=shawnsingh@chromium.org BUG=254435 Review URL: https://chromiumcodereview.appspot.com/18133004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@219026 0039d316-1c4b-4281-b951-d872f2087c98
* cc: Early out in PushPropertiesTo tree walk for commit.danakj@chromium.org2013-07-131-35/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a subtree is not dirty, don't walk it doing PushPropertiesTo for all its layers. We know a layer needs PushPropertiesTo called on it when it requests SetNeedsCommit() for itself, as this implies it has some value to push across to the impl tree. If this has been called, it has nothing to push. There are exceptions to this rule for some layers: 1) tiled layer - Occlusion can be affected by changes anywhere in the tree, and this changes what the layer chooses to push. 2) scrollbar layer crbug.com/259095 - Resources for the impl thread are chosen by the main thread, and this must be done every commit in order to deal with situations like lost context. 3) picture layer crbug.com/259402 - SyncFromActiveTree needs to be done every commit. This could potentially be resolved. 4) delegated renderer layer crbug.com/259090 - Resources returned from the parent compositor must be returned to the main thread currently, and this is done during push properties. 5) any layer with an animation crbug.com/259088 - Animations that complete on the impl thread are cleaned up on the main thread by the next push properties on the animating layer. This could be avoided by doing this cleanup in another place during commit. Tested by: LayerTreeHostTestLayersPushProperties LayerTreeHostTestPushPropertiesAddingToTreeRequiresPush LayerTreeHostTestPushPropertiesRemovingChildStopsRecursion LayerTreeHostTestPushPropertiesRemovingChildStopsRecursionWithPersistence LayerTreeHostTestPushPropertiesSetPropertiesWhileOutsideTree LayerTreeHostTestPushPropertiesSetPropertyInParentThenChild LayerTreeHostTestPropertyChangesDuringUpdateArePushed This adds a new perftest: LayerTreeHostPerfTestLeafInvalidates.TenTenSingleThread The test is basically the original TenTenSingleThread test, but it toggles a property on a leaf node in the layer tree (the first node in a pre-order walk) every commit to cause some push properties to still happen. Perf test results are as follows. BEFORE: LayerTreeHostPerfTestJsonReader.TenTenSingleThread *RESULT 10_10_layer_tree: frames: 5725, 0.35 ms/frame LayerTreeHostPerfTestJsonReader.TenTenSingleThread_FullDamageEachFrame *RESULT 10_10_layer_tree: frames: 4505, 0.44 ms/frame crollingLayerTreePerfTest.LongScrollablePage *RESULT long_scrollable_page: frames: 22045, 0.09 ms/frame ImplSidePaintingPerfTest.HeavyPage *RESULT heavy_layer_tree: frames: 405, 5.00 ms/frame *RESULT heavy_layer_tree: commits: 406, 0.58 ms/commit PageScaleImplSidePaintingPerfTest.HeavyPage *RESULT heavy_layer_tree: frames: 405, 5.00 ms/frame *RESULT heavy_layer_tree: commits: 406, 0.74 ms/commit LayerTreeHostPerfTestLeafInvalidates.TenTenSingleThread *RESULT 10_10_layer_tree: frames: 4095, 0.49 ms/frame AFTER: LayerTreeHostPerfTestJsonReader.TenTenSingleThread *RESULT 10_10_layer_tree: frames: 6635, 0.30 ms/frame LayerTreeHostPerfTestJsonReader.TenTenSingleThread_FullDamageEachFrame *RESULT 10_10_layer_tree: frames: 5035, 0.40 ms/frame ScrollingLayerTreePerfTest.LongScrollablePage *RESULT long_scrollable_page: frames: 22225, 0.09 ms/frame ImplSidePaintingPerfTest.HeavyPage *RESULT heavy_layer_tree: frames: 405, 5.00 ms/frame *RESULT heavy_layer_tree: commits: 406, 0.57 ms/commit PageScaleImplSidePaintingPerfTest.HeavyPage *RESULT heavy_layer_tree: frames: 405, 5.00 ms/frame *RESULT heavy_layer_tree: commits: 406, 0.75 ms/commit LayerTreeHostPerfTestLeafInvalidates.TenTenSingleThread *RESULT 10_10_layer_tree: frames: 4505, 0.44 ms/frame This is a perf change only, there should be no change in behaviour. BUG=177756 Review URL: https://chromiumcodereview.appspot.com/12340033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@211576 0039d316-1c4b-4281-b951-d872f2087c98
* cc: Remove cc::Thread and cc::ThreadImpl.danakj@chromium.org2013-06-201-1/+1
| | | | | | | | | | | | | These classes are replaced by using base::SingleThreadTaskRunner directly. R=piman,jamesr BUG=251134 Depends on: https://codereview.chromium.org/17362002/ Review URL: https://chromiumcodereview.appspot.com/17114008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207491 0039d316-1c4b-4281-b951-d872f2087c98
* Rewrite scoped_ptr<T>(NULL) to use the default ctor in cc/.dcheng@chromium.org2013-06-121-1/+1
| | | | | | | | | | | This is the result of running the rewrite_scoped_ptr_ctor_null tool across all files built on Linux in the cc/ directory. BUG=173286 Review URL: https://chromiumcodereview.appspot.com/16355009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@205810 0039d316-1c4b-4281-b951-d872f2087c98
* cc: Add strict layer property change checking and handle bounds changes ↵reveman@chromium.org2013-04-161-0/+1
| | | | | | | | | | | | | | | | | | | | during paint. This fixes a problem where paint would cause layer bounds to change and Layer::PushProperties to push an non-empty picture layer without a recording to the impl side. This also adds a new command line switch that make layer property changes during paint cause a CHECK() to fail. This can be used to diagnose situations where paint is incorrectly causing layer properties to change. BUG=229179 TEST=cc_unittests --gtest_filter=LayerTreeHostTestChangeLayerPropertiesInPaintContents.RunSingleThread Review URL: https://codereview.chromium.org/13939005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@194269 0039d316-1c4b-4281-b951-d872f2087c98
* LayerTreeHost::SetAnimationEvents should use AnimationRegistrarajuma@chromium.org2013-04-081-1/+1
| | | | | | | | | | | | | | | This makes LayerTreeHost::SetAnimationEvents iterate over all active animation controllers registered with its AnimationRegistrar instead of iterating over the layer tree. This allows us to properly deliver animation events to a layer that has been temporarily removed from the layer tree when SetAnimationEvents is called. BUG=196284 Review URL: https://chromiumcodereview.appspot.com/13465014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@192835 0039d316-1c4b-4281-b951-d872f2087c98
* cc: Consolidate LayerList types.danakj@chromium.org2013-03-291-3/+2
| | | | | | | | | | | | | | | | | | | | We currently have Layer::LayerList, LayerImpl::LayerList, LayerTreeHost::LayerList and LayerTreeHostImpl::LayerList, as well as LayerTreeImpl::LayerList, LayerSorter::LayerList, and I think some more. This patch consolidates the list typedefs into three types: LayerList, LayerImplList, and OwnedLayerImplList. LayerList and LayerImplList are the output of CalculateDrawProperties. While OwnedLayerImplList is a list that owns the layer pointers in it, ie ScopedPtrVector. R=jamesr Review URL: https://codereview.chromium.org/13285002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191442 0039d316-1c4b-4281-b951-d872f2087c98
* Fix cpplint errors in cc/(animation|input|layers|trees|test)/jamesr@chromium.org2013-03-261-1/+2
| | | | | | | | | | | This fixes lint errors in everything except for the few stragglers (occlusion unit test, etc) that haven't been chromified. BUG=144577 Review URL: https://chromiumcodereview.appspot.com/12965007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190767 0039d316-1c4b-4281-b951-d872f2087c98
* cc:: Add RenderingStatsInstrumentation to manage collection of RenderingStatsegraether@chromium.org2013-03-211-1/+5
| | | | | | | | | | | | | | | | | | | | | | This change adds the class RenderingStatsInstrumentation that manages conditional saving and thread-specific access to a private RenderingStats instance. An instance of RenderingStatsRecorder is created on LayerTreeHost, which passes references to LayerTreeHostImpl and TileManager. Access to reading and writing on the internal RenderingStats instance is guarded by a lock. All rendering stats saving in LayerTreeHost, Single-/ThreadProxy, LayerTreeHostImpl and TileManager has been switched to use the RenderingStatsInstrumentation. Stats collection within Layer::update() still follows the original structure to keep this change small. BUG=181319 NOTRY=true Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=189475 Review URL: https://chromiumcodereview.appspot.com/12519006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189621 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 189475 "cc:: Add RenderingStatsInstrumentation to manage ..."tapted@chromium.org2013-03-211-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | semi-speculative revert for cc_unittests failures - see bug. > cc:: Add RenderingStatsInstrumentation to manage collection of RenderingStats > > This change adds the class RenderingStatsInstrumentation that manages conditional > saving and thread-specific access to a private RenderingStats instance. > An instance of RenderingStatsRecorder is created on LayerTreeHost, which > passes references to LayerTreeHostImpl and TileManager. Access to reading > and writing on the internal RenderingStats instance is guarded by a lock. > > All rendering stats saving in LayerTreeHost, Single-/ThreadProxy, > LayerTreeHostImpl and TileManager has been switched to use the > RenderingStatsInstrumentation. Stats collection within Layer::update() still > follows the original structure to keep this change small. > > BUG=181319 > NOTRY=true > > Review URL: https://chromiumcodereview.appspot.com/12519006 TBR=egraether@chromium.org Review URL: https://codereview.chromium.org/12544031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189497 0039d316-1c4b-4281-b951-d872f2087c98
* cc:: Add RenderingStatsInstrumentation to manage collection of RenderingStatsegraether@chromium.org2013-03-211-1/+6
| | | | | | | | | | | | | | | | | | | | This change adds the class RenderingStatsInstrumentation that manages conditional saving and thread-specific access to a private RenderingStats instance. An instance of RenderingStatsRecorder is created on LayerTreeHost, which passes references to LayerTreeHostImpl and TileManager. Access to reading and writing on the internal RenderingStats instance is guarded by a lock. All rendering stats saving in LayerTreeHost, Single-/ThreadProxy, LayerTreeHostImpl and TileManager has been switched to use the RenderingStatsInstrumentation. Stats collection within Layer::update() still follows the original structure to keep this change small. BUG=181319 NOTRY=true Review URL: https://chromiumcodereview.appspot.com/12519006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189475 0039d316-1c4b-4281-b951-d872f2087c98
* Part 10 of cc/ directory shuffles: layersjamesr@chromium.org2013-03-181-2/+2
| | | | | | | | | | | Continuation of https://src.chromium.org/viewvc/chrome?view=rev&revision=188681 BUG=190824 TBR=enne@chromium.org, piman@chromium.org, jschuh@chromium.org, joth@chromium.org Review URL: https://codereview.chromium.org/12916002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188703 0039d316-1c4b-4281-b951-d872f2087c98
* Part 7 of cc/ directory shuffles: treesjamesr@chromium.org2013-03-181-0/+514
Continuation of https://src.chromium.org/viewvc/chrome?view=rev&revision=188681 BUG=190824 TBR=enne@chromium.org, piman@chromium.org Review URL: https://codereview.chromium.org/12722007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188694 0039d316-1c4b-4281-b951-d872f2087c98