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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp

Issue 2626353002: Rename a few compositor property tree methods for clarity. (Closed)
Patch Set: Sync to head. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "platform/graphics/compositing/PaintArtifactCompositor.h" 5 #include "platform/graphics/compositing/PaintArtifactCompositor.h"
6 6
7 #include "cc/layers/content_layer_client.h" 7 #include "cc/layers/content_layer_client.h"
8 #include "cc/layers/layer.h" 8 #include "cc/layers/layer.h"
9 #include "cc/layers/picture_layer.h" 9 #include "cc/layers/picture_layer.h"
10 #include "cc/playback/compositing_display_item.h" 10 #include "cc/playback/compositing_display_item.h"
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 void setupRootEffectNode(); 603 void setupRootEffectNode();
604 void setupRootScrollNode(); 604 void setupRootScrollNode();
605 605
606 // A brief discourse on cc property tree nodes, identifiers, and current and 606 // A brief discourse on cc property tree nodes, identifiers, and current and
607 // future design evolution envisioned: 607 // future design evolution envisioned:
608 // 608 //
609 // cc property trees identify nodes by their |id|, which implementation-wise 609 // cc property trees identify nodes by their |id|, which implementation-wise
610 // is actually its index in the property tree's vector of its node type. More 610 // is actually its index in the property tree's vector of its node type. More
611 // recent cc code now refers to these as 'node indices', or 'property tree 611 // recent cc code now refers to these as 'node indices', or 'property tree
612 // indices'. |parent_id| is the same sort of 'node index' of that node's 612 // indices'. |parent_id| is the same sort of 'node index' of that node's
613 // parent, whereas |owner_id| is the layer id of the layer owning that node. 613 // parent.
614 // 614 //
615 // Note there are two other primary types of 'ids' referenced in cc property 615 // Note there are two other primary types of 'ids' referenced in cc property
616 // tree related logic: (1) ElementId, also known Blink-side as 616 // tree related logic: (1) ElementId, also known Blink-side as
617 // CompositorElementId, used by the animation system to allow tying an element 617 // CompositorElementId, used by the animation system to allow tying an element
618 // to its respective layer, and (2) layer ids. There are other ancillary ids 618 // to its respective layer, and (2) layer ids. There are other ancillary ids
619 // not relevant to any of the above, such as 619 // not relevant to any of the above, such as
620 // cc::TransformNode::sorting_context_id 620 // cc::TransformNode::sorting_context_id
621 // (a.k.a. blink::TransformPaintPropertyNode::renderingContextId()). 621 // (a.k.a. blink::TransformPaintPropertyNode::renderingContextId()).
622 // 622 //
623 // There is a vision to move toward a world where cc property nodes have no 623 // There is a vision to move toward a world where cc property nodes have no
624 // association with layers and instead have a |stable_id|. The id could come 624 // association with layers and instead have a |stable_id|. The id could come
625 // from an ElementId in turn derived from the layout object responsible for 625 // from an ElementId in turn derived from the layout object responsible for
626 // creating the property node. 626 // creating the property node.
627 // 627 //
628 // We would also like to explore moving to use a single shared property tree 628 // We would also like to explore moving to use a single shared property tree
629 // representation across both cc and Blink. See 629 // representation across both cc and Blink. See
630 // platform/graphics/paint/README.md for more. 630 // platform/graphics/paint/README.md for more.
631 // 631 //
632 // With the above as background, we can now state more clearly a description 632 // With the above as background, we can now state more clearly a description
633 // of the below set of compositor id generation methods: they take Blink paint 633 // of the below set of compositor node methods: they take Blink paint property
634 // property tree nodes as input and produce a corresponding cc 'node id', 634 // tree nodes as input, create a corresponding compositor property tree node
635 // a.k.a., 'node index', for use as we build out the corresponding cc property 635 // if none yet exists, and return the compositor node's 'node id', a.k.a.,
636 // tree representation. 636 // 'node index'.
637 637
638 int compositorIdForTransformNode(const TransformPaintPropertyNode*); 638 int ensureCompositorTransformNode(const TransformPaintPropertyNode*);
639 int compositorIdForClipNode(const ClipPaintPropertyNode*); 639 int ensureCompositorClipNode(const ClipPaintPropertyNode*);
640 int ensureCompositorScrollNode(const ScrollPaintPropertyNode*);
641
640 int switchToEffectNode(const EffectPaintPropertyNode& nextEffect); 642 int switchToEffectNode(const EffectPaintPropertyNode& nextEffect);
641 int compositorIdForCurrentEffectNode() const { 643 int getCurrentCompositorEffectNodeIndex() const {
642 return m_effectStack.back().id; 644 return m_effectStack.back().id;
643 } 645 }
644 int compositorIdForScrollNode(const ScrollPaintPropertyNode*);
645 646
646 // Scroll offset has special treatment in the transform and scroll trees. 647 // Scroll offset has special treatment in the transform and scroll trees.
647 void updateScrollOffset(int layerId, int scrollId); 648 void updateScrollOffset(int layerId, int scrollId);
648 649
649 private: 650 private:
650 void buildEffectNodesRecursively(const EffectPaintPropertyNode* nextEffect); 651 void buildEffectNodesRecursively(const EffectPaintPropertyNode* nextEffect);
651 652
652 cc::TransformTree& transformTree() { return m_propertyTrees.transform_tree; } 653 cc::TransformTree& transformTree() { return m_propertyTrees.transform_tree; }
653 cc::ClipTree& clipTree() { return m_propertyTrees.clip_tree; } 654 cc::ClipTree& clipTree() { return m_propertyTrees.clip_tree; }
654 cc::EffectTree& effectTree() { return m_propertyTrees.effect_tree; } 655 cc::EffectTree& effectTree() { return m_propertyTrees.effect_tree; }
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 DCHECK_EQ(scrollNode.id, kSecondaryRootNodeId); 766 DCHECK_EQ(scrollNode.id, kSecondaryRootNodeId);
766 scrollNode.owning_layer_id = m_rootLayer->id(); 767 scrollNode.owning_layer_id = m_rootLayer->id();
767 scrollNode.transform_id = kSecondaryRootNodeId; 768 scrollNode.transform_id = kSecondaryRootNodeId;
768 m_propertyTrees.layer_id_to_scroll_node_index[scrollNode.owning_layer_id] = 769 m_propertyTrees.layer_id_to_scroll_node_index[scrollNode.owning_layer_id] =
769 scrollNode.id; 770 scrollNode.id;
770 771
771 m_scrollNodeMap.set(ScrollPaintPropertyNode::root(), scrollNode.id); 772 m_scrollNodeMap.set(ScrollPaintPropertyNode::root(), scrollNode.id);
772 m_rootLayer->SetScrollTreeIndex(scrollNode.id); 773 m_rootLayer->SetScrollTreeIndex(scrollNode.id);
773 } 774 }
774 775
775 int PropertyTreeManager::compositorIdForTransformNode( 776 int PropertyTreeManager::ensureCompositorTransformNode(
776 const TransformPaintPropertyNode* transformNode) { 777 const TransformPaintPropertyNode* transformNode) {
777 DCHECK(transformNode); 778 DCHECK(transformNode);
778 // TODO(crbug.com/645615): Remove the failsafe here. 779 // TODO(crbug.com/645615): Remove the failsafe here.
779 if (!transformNode) 780 if (!transformNode)
780 return kSecondaryRootNodeId; 781 return kSecondaryRootNodeId;
781 782
782 auto it = m_transformNodeMap.find(transformNode); 783 auto it = m_transformNodeMap.find(transformNode);
783 if (it != m_transformNodeMap.end()) 784 if (it != m_transformNodeMap.end())
784 return it->value; 785 return it->value;
785 786
786 scoped_refptr<cc::Layer> dummyLayer = cc::Layer::Create(); 787 scoped_refptr<cc::Layer> dummyLayer = cc::Layer::Create();
787 int parentId = compositorIdForTransformNode(transformNode->parent()); 788 int parentId = ensureCompositorTransformNode(transformNode->parent());
788 int id = transformTree().Insert(cc::TransformNode(), parentId); 789 int id = transformTree().Insert(cc::TransformNode(), parentId);
789 790
790 cc::TransformNode& compositorNode = *transformTree().Node(id); 791 cc::TransformNode& compositorNode = *transformTree().Node(id);
791 transformTree().SetTargetId(id, kRealRootNodeId); 792 transformTree().SetTargetId(id, kRealRootNodeId);
792 transformTree().SetContentTargetId(id, kRealRootNodeId); 793 transformTree().SetContentTargetId(id, kRealRootNodeId);
793 compositorNode.source_node_id = parentId; 794 compositorNode.source_node_id = parentId;
794 795
795 FloatPoint3D origin = transformNode->origin(); 796 FloatPoint3D origin = transformNode->origin();
796 compositorNode.pre_local.matrix().setTranslate(-origin.x(), -origin.y(), 797 compositorNode.pre_local.matrix().setTranslate(-origin.x(), -origin.y(),
797 -origin.z()); 798 -origin.z());
(...skipping 12 matching lines...) Expand all
810 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId); 811 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId);
811 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); 812 dummyLayer->SetScrollTreeIndex(kRealRootNodeId);
812 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); 813 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber);
813 814
814 auto result = m_transformNodeMap.set(transformNode, id); 815 auto result = m_transformNodeMap.set(transformNode, id);
815 DCHECK(result.isNewEntry); 816 DCHECK(result.isNewEntry);
816 transformTree().set_needs_update(true); 817 transformTree().set_needs_update(true);
817 return id; 818 return id;
818 } 819 }
819 820
820 int PropertyTreeManager::compositorIdForClipNode( 821 int PropertyTreeManager::ensureCompositorClipNode(
821 const ClipPaintPropertyNode* clipNode) { 822 const ClipPaintPropertyNode* clipNode) {
822 DCHECK(clipNode); 823 DCHECK(clipNode);
823 // TODO(crbug.com/645615): Remove the failsafe here. 824 // TODO(crbug.com/645615): Remove the failsafe here.
824 if (!clipNode) 825 if (!clipNode)
825 return kSecondaryRootNodeId; 826 return kSecondaryRootNodeId;
826 827
827 auto it = m_clipNodeMap.find(clipNode); 828 auto it = m_clipNodeMap.find(clipNode);
828 if (it != m_clipNodeMap.end()) 829 if (it != m_clipNodeMap.end())
829 return it->value; 830 return it->value;
830 831
831 scoped_refptr<cc::Layer> dummyLayer = cc::Layer::Create(); 832 scoped_refptr<cc::Layer> dummyLayer = cc::Layer::Create();
832 int parentId = compositorIdForClipNode(clipNode->parent()); 833 int parentId = ensureCompositorClipNode(clipNode->parent());
833 int id = clipTree().Insert(cc::ClipNode(), parentId); 834 int id = clipTree().Insert(cc::ClipNode(), parentId);
834 835
835 cc::ClipNode& compositorNode = *clipTree().Node(id); 836 cc::ClipNode& compositorNode = *clipTree().Node(id);
836 compositorNode.owning_layer_id = dummyLayer->id(); 837 compositorNode.owning_layer_id = dummyLayer->id();
837 m_propertyTrees.layer_id_to_clip_node_index[compositorNode.owning_layer_id] = 838 m_propertyTrees.layer_id_to_clip_node_index[compositorNode.owning_layer_id] =
838 id; 839 id;
839 840
840 // TODO(jbroman): Don't discard rounded corners. 841 // TODO(jbroman): Don't discard rounded corners.
841 compositorNode.clip = clipNode->clipRect().rect(); 842 compositorNode.clip = clipNode->clipRect().rect();
842 compositorNode.transform_id = 843 compositorNode.transform_id =
843 compositorIdForTransformNode(clipNode->localTransformSpace()); 844 ensureCompositorTransformNode(clipNode->localTransformSpace());
844 compositorNode.target_transform_id = kRealRootNodeId; 845 compositorNode.target_transform_id = kRealRootNodeId;
845 compositorNode.target_effect_id = kSecondaryRootNodeId; 846 compositorNode.target_effect_id = kSecondaryRootNodeId;
846 compositorNode.clip_type = cc::ClipNode::ClipType::APPLIES_LOCAL_CLIP; 847 compositorNode.clip_type = cc::ClipNode::ClipType::APPLIES_LOCAL_CLIP;
847 compositorNode.layers_are_clipped = true; 848 compositorNode.layers_are_clipped = true;
848 compositorNode.layers_are_clipped_when_surfaces_disabled = true; 849 compositorNode.layers_are_clipped_when_surfaces_disabled = true;
849 850
850 m_rootLayer->AddChild(dummyLayer); 851 m_rootLayer->AddChild(dummyLayer);
851 dummyLayer->SetTransformTreeIndex(compositorNode.transform_id); 852 dummyLayer->SetTransformTreeIndex(compositorNode.transform_id);
852 dummyLayer->SetClipTreeIndex(id); 853 dummyLayer->SetClipTreeIndex(id);
853 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId); 854 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId);
854 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); 855 dummyLayer->SetScrollTreeIndex(kRealRootNodeId);
855 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); 856 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber);
856 857
857 auto result = m_clipNodeMap.set(clipNode, id); 858 auto result = m_clipNodeMap.set(clipNode, id);
858 DCHECK(result.isNewEntry); 859 DCHECK(result.isNewEntry);
859 clipTree().set_needs_update(true); 860 clipTree().set_needs_update(true);
860 return id; 861 return id;
861 } 862 }
862 863
863 int PropertyTreeManager::compositorIdForScrollNode( 864 int PropertyTreeManager::ensureCompositorScrollNode(
864 const ScrollPaintPropertyNode* scrollNode) { 865 const ScrollPaintPropertyNode* scrollNode) {
865 DCHECK(scrollNode); 866 DCHECK(scrollNode);
866 // TODO(crbug.com/645615): Remove the failsafe here. 867 // TODO(crbug.com/645615): Remove the failsafe here.
867 if (!scrollNode) 868 if (!scrollNode)
868 return kSecondaryRootNodeId; 869 return kSecondaryRootNodeId;
869 870
870 auto it = m_scrollNodeMap.find(scrollNode); 871 auto it = m_scrollNodeMap.find(scrollNode);
871 if (it != m_scrollNodeMap.end()) 872 if (it != m_scrollNodeMap.end())
872 return it->value; 873 return it->value;
873 874
874 int parentId = compositorIdForScrollNode(scrollNode->parent()); 875 int parentId = ensureCompositorScrollNode(scrollNode->parent());
875 int id = scrollTree().Insert(cc::ScrollNode(), parentId); 876 int id = scrollTree().Insert(cc::ScrollNode(), parentId);
876 877
877 cc::ScrollNode& compositorNode = *scrollTree().Node(id); 878 cc::ScrollNode& compositorNode = *scrollTree().Node(id);
878 compositorNode.owning_layer_id = parentId; 879 compositorNode.owning_layer_id = parentId;
879 m_propertyTrees 880 m_propertyTrees
880 .layer_id_to_scroll_node_index[compositorNode.owning_layer_id] = id; 881 .layer_id_to_scroll_node_index[compositorNode.owning_layer_id] = id;
881 882
882 compositorNode.scrollable = true; 883 compositorNode.scrollable = true;
883 884
884 compositorNode.scroll_clip_layer_bounds.SetSize(scrollNode->clip().width(), 885 compositorNode.scroll_clip_layer_bounds.SetSize(scrollNode->clip().width(),
885 scrollNode->clip().height()); 886 scrollNode->clip().height());
886 compositorNode.bounds.SetSize(scrollNode->bounds().width(), 887 compositorNode.bounds.SetSize(scrollNode->bounds().width(),
887 scrollNode->bounds().height()); 888 scrollNode->bounds().height());
888 compositorNode.user_scrollable_horizontal = 889 compositorNode.user_scrollable_horizontal =
889 scrollNode->userScrollableHorizontal(); 890 scrollNode->userScrollableHorizontal();
890 compositorNode.user_scrollable_vertical = 891 compositorNode.user_scrollable_vertical =
891 scrollNode->userScrollableVertical(); 892 scrollNode->userScrollableVertical();
892 compositorNode.transform_id = 893 compositorNode.transform_id =
893 compositorIdForTransformNode(scrollNode->scrollOffsetTranslation()); 894 ensureCompositorTransformNode(scrollNode->scrollOffsetTranslation());
894 compositorNode.main_thread_scrolling_reasons = 895 compositorNode.main_thread_scrolling_reasons =
895 scrollNode->mainThreadScrollingReasons(); 896 scrollNode->mainThreadScrollingReasons();
896 897
897 auto result = m_scrollNodeMap.set(scrollNode, id); 898 auto result = m_scrollNodeMap.set(scrollNode, id);
898 DCHECK(result.isNewEntry); 899 DCHECK(result.isNewEntry);
899 scrollTree().set_needs_update(true); 900 scrollTree().set_needs_update(true);
900 901
901 return id; 902 return id;
902 } 903 }
903 904
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 m_effectStack.pop_back(); 964 m_effectStack.pop_back();
964 965
965 // Now the current effect is the lowest common ancestor of previous effect 966 // Now the current effect is the lowest common ancestor of previous effect
966 // and the next effect. That implies it is an existing node that already has 967 // and the next effect. That implies it is an existing node that already has
967 // at least one paint chunk or child effect, and we are going to either attach 968 // at least one paint chunk or child effect, and we are going to either attach
968 // another paint chunk or child effect to it. We can no longer omit render 969 // another paint chunk or child effect to it. We can no longer omit render
969 // surface for it even for opacity-only nodes. 970 // surface for it even for opacity-only nodes.
970 // See comments in PropertyTreeManager::buildEffectNodesRecursively(). 971 // See comments in PropertyTreeManager::buildEffectNodesRecursively().
971 // TODO(crbug.com/504464): Remove premature optimization here. 972 // TODO(crbug.com/504464): Remove premature optimization here.
972 if (currentEffectNode() && currentEffectNode()->opacity() != 1.f) { 973 if (currentEffectNode() && currentEffectNode()->opacity() != 1.f) {
973 effectTree().Node(compositorIdForCurrentEffectNode())->has_render_surface = 974 effectTree()
974 true; 975 .Node(getCurrentCompositorEffectNodeIndex())
976 ->has_render_surface = true;
975 } 977 }
976 978
977 buildEffectNodesRecursively(&nextEffect); 979 buildEffectNodesRecursively(&nextEffect);
978 980
979 return compositorIdForCurrentEffectNode(); 981 return getCurrentCompositorEffectNodeIndex();
980 } 982 }
981 983
982 void PropertyTreeManager::buildEffectNodesRecursively( 984 void PropertyTreeManager::buildEffectNodesRecursively(
983 const EffectPaintPropertyNode* nextEffect) { 985 const EffectPaintPropertyNode* nextEffect) {
984 if (nextEffect == currentEffectNode()) 986 if (nextEffect == currentEffectNode())
985 return; 987 return;
986 DCHECK(nextEffect); 988 DCHECK(nextEffect);
987 989
988 buildEffectNodesRecursively(nextEffect->parent()); 990 buildEffectNodesRecursively(nextEffect->parent());
989 DCHECK_EQ(nextEffect->parent(), currentEffectNode()); 991 DCHECK_EQ(nextEffect->parent(), currentEffectNode());
990 992
991 #if DCHECK_IS_ON() 993 #if DCHECK_IS_ON()
992 DCHECK(!m_effectNodesConverted.contains(nextEffect)) 994 DCHECK(!m_effectNodesConverted.contains(nextEffect))
993 << "Malformed paint artifact. Paint chunks under the same effect should " 995 << "Malformed paint artifact. Paint chunks under the same effect should "
994 "be contiguous."; 996 "be contiguous.";
995 m_effectNodesConverted.add(nextEffect); 997 m_effectNodesConverted.add(nextEffect);
996 #endif 998 #endif
997 999
998 // An effect node can't omit render surface if it has child with exotic 1000 // An effect node can't omit render surface if it has child with exotic
999 // blending mode. See comments below for more detail. 1001 // blending mode. See comments below for more detail.
1000 // TODO(crbug.com/504464): Remove premature optimization here. 1002 // TODO(crbug.com/504464): Remove premature optimization here.
1001 if (nextEffect->blendMode() != SkBlendMode::kSrcOver) { 1003 if (nextEffect->blendMode() != SkBlendMode::kSrcOver) {
1002 effectTree().Node(compositorIdForCurrentEffectNode())->has_render_surface = 1004 effectTree()
1003 true; 1005 .Node(getCurrentCompositorEffectNodeIndex())
1006 ->has_render_surface = true;
1004 } 1007 }
1005 1008
1006 // We currently create dummy layers to host effect nodes and corresponding 1009 // We currently create dummy layers to host effect nodes and corresponding
1007 // render surfaces. This should be removed once cc implements better support 1010 // render surfaces. This should be removed once cc implements better support
1008 // for freestanding property trees. 1011 // for freestanding property trees.
1009 scoped_refptr<cc::Layer> dummyLayer = nextEffect->ensureDummyLayer(); 1012 scoped_refptr<cc::Layer> dummyLayer = nextEffect->ensureDummyLayer();
1010 m_rootLayer->AddChild(dummyLayer); 1013 m_rootLayer->AddChild(dummyLayer);
1011 1014
1012 int outputClipId = compositorIdForClipNode(nextEffect->outputClip()); 1015 int outputClipId = ensureCompositorClipNode(nextEffect->outputClip());
1013 1016
1014 cc::EffectNode& effectNode = *effectTree().Node(effectTree().Insert( 1017 cc::EffectNode& effectNode = *effectTree().Node(effectTree().Insert(
1015 cc::EffectNode(), compositorIdForCurrentEffectNode())); 1018 cc::EffectNode(), getCurrentCompositorEffectNodeIndex()));
1016 effectNode.owning_layer_id = dummyLayer->id(); 1019 effectNode.owning_layer_id = dummyLayer->id();
1017 effectNode.clip_id = outputClipId; 1020 effectNode.clip_id = outputClipId;
1018 // Every effect is supposed to have render surface enabled for grouping, 1021 // Every effect is supposed to have render surface enabled for grouping,
1019 // but we can get away without one if the effect is opacity-only and has only 1022 // but we can get away without one if the effect is opacity-only and has only
1020 // one compositing child with kSrcOver blend mode. This is both for 1023 // one compositing child with kSrcOver blend mode. This is both for
1021 // optimization and not introducing sub-pixel differences in layout tests. 1024 // optimization and not introducing sub-pixel differences in layout tests.
1022 // See PropertyTreeManager::switchToEffectNode() and above where we 1025 // See PropertyTreeManager::switchToEffectNode() and above where we
1023 // retrospectively enable render surface when more than one compositing child 1026 // retrospectively enable render surface when more than one compositing child
1024 // or a child with exotic blend mode is detected. 1027 // or a child with exotic blend mode is detected.
1025 // TODO(crbug.com/504464): There is ongoing work in cc to delay render surface 1028 // TODO(crbug.com/504464): There is ongoing work in cc to delay render surface
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1187 collectPendingLayers(paintArtifact, pendingLayers, geometryMapper); 1190 collectPendingLayers(paintArtifact, pendingLayers, geometryMapper);
1188 1191
1189 Vector<std::unique_ptr<ContentLayerClientImpl>> newContentLayerClients; 1192 Vector<std::unique_ptr<ContentLayerClientImpl>> newContentLayerClients;
1190 newContentLayerClients.reserveCapacity(paintArtifact.paintChunks().size()); 1193 newContentLayerClients.reserveCapacity(paintArtifact.paintChunks().size());
1191 for (const PendingLayer& pendingLayer : pendingLayers) { 1194 for (const PendingLayer& pendingLayer : pendingLayers) {
1192 gfx::Vector2dF layerOffset; 1195 gfx::Vector2dF layerOffset;
1193 scoped_refptr<cc::Layer> layer = compositedLayerForPendingLayer( 1196 scoped_refptr<cc::Layer> layer = compositedLayerForPendingLayer(
1194 paintArtifact, pendingLayer, layerOffset, newContentLayerClients, 1197 paintArtifact, pendingLayer, layerOffset, newContentLayerClients,
1195 rasterChunkInvalidations, storeDebugInfo, geometryMapper); 1198 rasterChunkInvalidations, storeDebugInfo, geometryMapper);
1196 1199
1197 int transformId = propertyTreeManager.compositorIdForTransformNode( 1200 int transformId = propertyTreeManager.ensureCompositorTransformNode(
1198 pendingLayer.propertyTreeState.transform()); 1201 pendingLayer.propertyTreeState.transform());
1199 int scrollId = propertyTreeManager.compositorIdForScrollNode( 1202 int scrollId = propertyTreeManager.ensureCompositorScrollNode(
1200 pendingLayer.propertyTreeState.scroll()); 1203 pendingLayer.propertyTreeState.scroll());
1201 int clipId = propertyTreeManager.compositorIdForClipNode( 1204 int clipId = propertyTreeManager.ensureCompositorClipNode(
1202 pendingLayer.propertyTreeState.clip()); 1205 pendingLayer.propertyTreeState.clip());
1203 int effectId = propertyTreeManager.switchToEffectNode( 1206 int effectId = propertyTreeManager.switchToEffectNode(
1204 *pendingLayer.propertyTreeState.effect()); 1207 *pendingLayer.propertyTreeState.effect());
1205 1208
1206 propertyTreeManager.updateScrollOffset(layer->id(), scrollId); 1209 propertyTreeManager.updateScrollOffset(layer->id(), scrollId);
1207 1210
1208 layer->set_offset_to_transform_parent(layerOffset); 1211 layer->set_offset_to_transform_parent(layerOffset);
1209 1212
1210 m_rootLayer->AddChild(layer); 1213 m_rootLayer->AddChild(layer);
1211 layer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); 1214 layer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber);
(...skipping 19 matching lines...) Expand all
1231 #ifndef NDEBUG 1234 #ifndef NDEBUG
1232 void PaintArtifactCompositor::showDebugData() { 1235 void PaintArtifactCompositor::showDebugData() {
1233 LOG(ERROR) << layersAsJSON(LayerTreeIncludesDebugInfo) 1236 LOG(ERROR) << layersAsJSON(LayerTreeIncludesDebugInfo)
1234 ->toPrettyJSONString() 1237 ->toPrettyJSONString()
1235 .utf8() 1238 .utf8()
1236 .data(); 1239 .data();
1237 } 1240 }
1238 #endif 1241 #endif
1239 1242
1240 } // namespace blink 1243 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698