| OLD | NEW |
| 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/display_item_list.h" | 10 #include "cc/playback/display_item_list.h" |
| 11 #include "cc/playback/display_item_list_settings.h" | 11 #include "cc/playback/display_item_list_settings.h" |
| 12 #include "cc/playback/drawing_display_item.h" | 12 #include "cc/playback/drawing_display_item.h" |
| 13 #include "cc/playback/transform_display_item.h" | 13 #include "cc/playback/transform_display_item.h" |
| 14 #include "cc/trees/clip_node.h" |
| 15 #include "cc/trees/effect_node.h" |
| 14 #include "cc/trees/layer_tree_host.h" | 16 #include "cc/trees/layer_tree_host.h" |
| 15 #include "cc/trees/property_tree.h" | 17 #include "cc/trees/property_tree.h" |
| 18 #include "cc/trees/transform_node.h" |
| 16 #include "platform/RuntimeEnabledFeatures.h" | 19 #include "platform/RuntimeEnabledFeatures.h" |
| 17 #include "platform/graphics/paint/ClipPaintPropertyNode.h" | 20 #include "platform/graphics/paint/ClipPaintPropertyNode.h" |
| 18 #include "platform/graphics/paint/DisplayItem.h" | 21 #include "platform/graphics/paint/DisplayItem.h" |
| 19 #include "platform/graphics/paint/DrawingDisplayItem.h" | 22 #include "platform/graphics/paint/DrawingDisplayItem.h" |
| 20 #include "platform/graphics/paint/ForeignLayerDisplayItem.h" | 23 #include "platform/graphics/paint/ForeignLayerDisplayItem.h" |
| 21 #include "platform/graphics/paint/PaintArtifact.h" | 24 #include "platform/graphics/paint/PaintArtifact.h" |
| 22 #include "platform/graphics/paint/TransformPaintPropertyNode.h" | 25 #include "platform/graphics/paint/TransformPaintPropertyNode.h" |
| 23 #include "public/platform/Platform.h" | 26 #include "public/platform/Platform.h" |
| 24 #include "public/platform/WebCompositorSupport.h" | 27 #include "public/platform/WebCompositorSupport.h" |
| 25 #include "public/platform/WebLayer.h" | 28 #include "public/platform/WebLayer.h" |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 constexpr int kPropertyTreeSequenceNumber = 1; | 267 constexpr int kPropertyTreeSequenceNumber = 1; |
| 265 | 268 |
| 266 // Creates a minimal set of property trees for the compositor. | 269 // Creates a minimal set of property trees for the compositor. |
| 267 void setMinimalPropertyTrees(cc::PropertyTrees* propertyTrees, int ownerId) | 270 void setMinimalPropertyTrees(cc::PropertyTrees* propertyTrees, int ownerId) |
| 268 { | 271 { |
| 269 // cc is hardcoded to use transform node index 1 for device scale and transf
orm. | 272 // cc is hardcoded to use transform node index 1 for device scale and transf
orm. |
| 270 cc::TransformTree& transformTree = propertyTrees->transform_tree; | 273 cc::TransformTree& transformTree = propertyTrees->transform_tree; |
| 271 transformTree.clear(); | 274 transformTree.clear(); |
| 272 cc::TransformNode& transformNode = *transformTree.Node(transformTree.Insert(
cc::TransformNode(), kRealRootNodeId)); | 275 cc::TransformNode& transformNode = *transformTree.Node(transformTree.Insert(
cc::TransformNode(), kRealRootNodeId)); |
| 273 DCHECK_EQ(transformNode.id, kSecondaryRootNodeId); | 276 DCHECK_EQ(transformNode.id, kSecondaryRootNodeId); |
| 274 transformNode.data.source_node_id = transformNode.parent_id; | 277 transformNode.source_node_id = transformNode.parent_id; |
| 275 transformTree.SetTargetId(transformNode.id, kRealRootNodeId); | 278 transformTree.SetTargetId(transformNode.id, kRealRootNodeId); |
| 276 transformTree.SetContentTargetId(transformNode.id, kRealRootNodeId); | 279 transformTree.SetContentTargetId(transformNode.id, kRealRootNodeId); |
| 277 | 280 |
| 278 // cc is hardcoded to use clip node index 1 for viewport clip. | 281 // cc is hardcoded to use clip node index 1 for viewport clip. |
| 279 cc::ClipTree& clipTree = propertyTrees->clip_tree; | 282 cc::ClipTree& clipTree = propertyTrees->clip_tree; |
| 280 clipTree.clear(); | 283 clipTree.clear(); |
| 281 cc::ClipNode& clipNode = *clipTree.Node(clipTree.Insert(cc::ClipNode(), kRea
lRootNodeId)); | 284 cc::ClipNode& clipNode = *clipTree.Node(clipTree.Insert(cc::ClipNode(), kRea
lRootNodeId)); |
| 282 DCHECK_EQ(clipNode.id, kSecondaryRootNodeId); | 285 DCHECK_EQ(clipNode.id, kSecondaryRootNodeId); |
| 283 clipNode.owner_id = ownerId; | 286 clipNode.owner_id = ownerId; |
| 284 | 287 |
| 285 // cc is hardcoded to use effect node index 1 for root render surface. | 288 // cc is hardcoded to use effect node index 1 for root render surface. |
| 286 cc::EffectTree& effectTree = propertyTrees->effect_tree; | 289 cc::EffectTree& effectTree = propertyTrees->effect_tree; |
| 287 effectTree.clear(); | 290 effectTree.clear(); |
| 288 cc::EffectNode& effectNode = *effectTree.Node(effectTree.Insert(cc::EffectNo
de(), kRealRootNodeId)); | 291 cc::EffectNode& effectNode = *effectTree.Node(effectTree.Insert(cc::EffectNo
de(), kRealRootNodeId)); |
| 289 DCHECK_EQ(effectNode.id, kSecondaryRootNodeId); | 292 DCHECK_EQ(effectNode.id, kSecondaryRootNodeId); |
| 290 effectNode.owner_id = ownerId; | 293 effectNode.owner_id = ownerId; |
| 291 effectNode.data.clip_id = clipNode.id; | 294 effectNode.clip_id = clipNode.id; |
| 292 effectNode.data.has_render_surface = true; | 295 effectNode.has_render_surface = true; |
| 293 | 296 |
| 294 cc::ScrollTree& scrollTree = propertyTrees->scroll_tree; | 297 cc::ScrollTree& scrollTree = propertyTrees->scroll_tree; |
| 295 scrollTree.clear(); | 298 scrollTree.clear(); |
| 296 } | 299 } |
| 297 | 300 |
| 298 } // namespace | 301 } // namespace |
| 299 | 302 |
| 300 void PaintArtifactCompositor::update(const PaintArtifact& paintArtifact) | 303 void PaintArtifactCompositor::update(const PaintArtifact& paintArtifact) |
| 301 { | 304 { |
| 302 DCHECK(m_rootLayer); | 305 DCHECK(m_rootLayer); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 if (it != m_nodeMap.end()) | 405 if (it != m_nodeMap.end()) |
| 403 return it->value; | 406 return it->value; |
| 404 | 407 |
| 405 scoped_refptr<cc::Layer> dummyLayer = cc::Layer::Create(); | 408 scoped_refptr<cc::Layer> dummyLayer = cc::Layer::Create(); |
| 406 int parentId = compositorIdForNode(transformNode->parent()); | 409 int parentId = compositorIdForNode(transformNode->parent()); |
| 407 int id = m_transformTree.Insert(cc::TransformNode(), parentId); | 410 int id = m_transformTree.Insert(cc::TransformNode(), parentId); |
| 408 | 411 |
| 409 cc::TransformNode& compositorNode = *m_transformTree.Node(id); | 412 cc::TransformNode& compositorNode = *m_transformTree.Node(id); |
| 410 m_transformTree.SetTargetId(id, kRealRootNodeId); | 413 m_transformTree.SetTargetId(id, kRealRootNodeId); |
| 411 m_transformTree.SetContentTargetId(id, kRealRootNodeId); | 414 m_transformTree.SetContentTargetId(id, kRealRootNodeId); |
| 412 compositorNode.data.source_node_id = parentId; | 415 compositorNode.source_node_id = parentId; |
| 413 | 416 |
| 414 FloatPoint3D origin = transformNode->origin(); | 417 FloatPoint3D origin = transformNode->origin(); |
| 415 compositorNode.data.pre_local.matrix().setTranslate( | 418 compositorNode.pre_local.matrix().setTranslate( |
| 416 -origin.x(), -origin.y(), -origin.z()); | 419 -origin.x(), -origin.y(), -origin.z()); |
| 417 compositorNode.data.local.matrix() = TransformationMatrix::toSkMatrix44(tran
sformNode->matrix()); | 420 compositorNode.local.matrix() = TransformationMatrix::toSkMatrix44(transform
Node->matrix()); |
| 418 compositorNode.data.post_local.matrix().setTranslate( | 421 compositorNode.post_local.matrix().setTranslate( |
| 419 origin.x(), origin.y(), origin.z()); | 422 origin.x(), origin.y(), origin.z()); |
| 420 compositorNode.data.needs_local_transform_update = true; | 423 compositorNode.needs_local_transform_update = true; |
| 421 | 424 |
| 422 m_rootLayer->AddChild(dummyLayer); | 425 m_rootLayer->AddChild(dummyLayer); |
| 423 dummyLayer->SetTransformTreeIndex(id); | 426 dummyLayer->SetTransformTreeIndex(id); |
| 424 dummyLayer->SetClipTreeIndex(kSecondaryRootNodeId); | 427 dummyLayer->SetClipTreeIndex(kSecondaryRootNodeId); |
| 425 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId); | 428 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId); |
| 426 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); | 429 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); |
| 427 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); | 430 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); |
| 428 | 431 |
| 429 auto result = m_nodeMap.set(transformNode, id); | 432 auto result = m_nodeMap.set(transformNode, id); |
| 430 DCHECK(result.isNewEntry); | 433 DCHECK(result.isNewEntry); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 if (m_extraDataForTestingEnabled) | 469 if (m_extraDataForTestingEnabled) |
| 467 m_extraDataForTesting->contentLayers.append(layer); | 470 m_extraDataForTesting->contentLayers.append(layer); |
| 468 } | 471 } |
| 469 | 472 |
| 470 // Mark the property trees as having been rebuilt. | 473 // Mark the property trees as having been rebuilt. |
| 471 host->property_trees()->sequence_number = kPropertyTreeSequenceNumber; | 474 host->property_trees()->sequence_number = kPropertyTreeSequenceNumber; |
| 472 host->property_trees()->needs_rebuild = false; | 475 host->property_trees()->needs_rebuild = false; |
| 473 } | 476 } |
| 474 | 477 |
| 475 } // namespace blink | 478 } // namespace blink |
| OLD | NEW |