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

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

Issue 2118993002: Detemplatize cc property nodes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
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/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
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
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
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
OLDNEW
« no previous file with comments | « cc/trees/tree_synchronizer_unittest.cc ('k') | ui/gfx/transform.h » ('j') | ui/gfx/transform.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698