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

Side by Side Diff: services/gfx/compositor/graph/nodes.cc

Issue 1995873002: Mozart: Improve tracing and backpressure. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: address review comments Created 4 years, 7 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 "services/gfx/compositor/graph/nodes.h" 5 #include "services/gfx/compositor/graph/nodes.h"
6 6
7 #include <ostream> 7 #include <ostream>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "mojo/services/gfx/composition/cpp/formatting.h" 10 #include "mojo/services/gfx/composition/cpp/formatting.h"
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 return; 188 return;
189 } 189 }
190 190
191 default: { 191 default: {
192 NOTREACHED(); 192 NOTREACHED();
193 return; 193 return;
194 } 194 }
195 } 195 }
196 } 196 }
197 197
198 void Node::RecordPicture(const SceneContent* content, 198 void Node::Paint(const SceneContent* content,
199 const Snapshot* snapshot, 199 const Snapshot* snapshot,
200 SkCanvas* canvas) const { 200 SkCanvas* canvas) const {
201 DCHECK(content); 201 DCHECK(content);
202 DCHECK(snapshot); 202 DCHECK(snapshot);
203 DCHECK(canvas); 203 DCHECK(canvas);
204 204
205 const bool must_save = content_transform_ || content_clip_; 205 const bool must_save = content_transform_ || content_clip_;
206 if (must_save) { 206 if (must_save) {
207 canvas->save(); 207 canvas->save();
208 if (content_transform_) 208 if (content_transform_)
209 canvas->concat(content_transform_->forward()); 209 canvas->concat(content_transform_->forward());
210 if (content_clip_) 210 if (content_clip_)
211 canvas->clipRect(content_clip_->To<SkRect>()); 211 canvas->clipRect(content_clip_->To<SkRect>());
212 } 212 }
213 213
214 RecordPictureInner(content, snapshot, canvas); 214 PaintInner(content, snapshot, canvas);
215 215
216 if (must_save) 216 if (must_save)
217 canvas->restore(); 217 canvas->restore();
218 } 218 }
219 219
220 void Node::RecordPictureInner(const SceneContent* content, 220 void Node::PaintInner(const SceneContent* content,
221 const Snapshot* snapshot, 221 const Snapshot* snapshot,
222 SkCanvas* canvas) const { 222 SkCanvas* canvas) const {
223 DCHECK(content); 223 DCHECK(content);
224 DCHECK(snapshot); 224 DCHECK(snapshot);
225 DCHECK(canvas); 225 DCHECK(canvas);
226 226
227 TraverseSnapshottedChildren( 227 TraverseSnapshottedChildren(
228 content, snapshot, 228 content, snapshot,
229 [this, content, snapshot, canvas](const Node* child_node) -> bool { 229 [this, content, snapshot, canvas](const Node* child_node) -> bool {
230 child_node->RecordPicture(content, snapshot, canvas); 230 child_node->Paint(content, snapshot, canvas);
231 return true; 231 return true;
232 }); 232 });
233 } 233 }
234 234
235 bool Node::HitTest(const SceneContent* content, 235 bool Node::HitTest(const SceneContent* content,
236 const Snapshot* snapshot, 236 const Snapshot* snapshot,
237 const SkPoint& parent_point, 237 const SkPoint& parent_point,
238 const SkMatrix44& global_to_parent_transform, 238 const SkMatrix44& global_to_parent_transform,
239 mojo::Array<mojo::gfx::composition::HitPtr>* hits) const { 239 mojo::Array<mojo::gfx::composition::HitPtr>* hits) const {
240 DCHECK(content); 240 DCHECK(content);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 std::move(content_transform), 333 std::move(content_transform),
334 content_clip.Pass(), 334 content_clip.Pass(),
335 hit_test_behavior.Pass(), 335 hit_test_behavior.Pass(),
336 combinator, 336 combinator,
337 child_node_ids), 337 child_node_ids),
338 content_rect_(content_rect), 338 content_rect_(content_rect),
339 color_(color) {} 339 color_(color) {}
340 340
341 RectNode::~RectNode() {} 341 RectNode::~RectNode() {}
342 342
343 void RectNode::RecordPictureInner(const SceneContent* content, 343 void RectNode::PaintInner(const SceneContent* content,
344 const Snapshot* snapshot, 344 const Snapshot* snapshot,
345 SkCanvas* canvas) const { 345 SkCanvas* canvas) const {
346 DCHECK(content); 346 DCHECK(content);
347 DCHECK(snapshot); 347 DCHECK(snapshot);
348 DCHECK(canvas); 348 DCHECK(canvas);
349 349
350 SkPaint paint; 350 SkPaint paint;
351 paint.setColor(MakeSkColor(color_)); 351 paint.setColor(MakeSkColor(color_));
352 canvas->drawRect(content_rect_.To<SkRect>(), paint); 352 canvas->drawRect(content_rect_.To<SkRect>(), paint);
353 353
354 Node::RecordPictureInner(content, snapshot, canvas); 354 Node::PaintInner(content, snapshot, canvas);
355 } 355 }
356 356
357 ImageNode::ImageNode( 357 ImageNode::ImageNode(
358 uint32_t node_id, 358 uint32_t node_id,
359 std::unique_ptr<TransformPair> content_transform, 359 std::unique_ptr<TransformPair> content_transform,
360 mojo::RectFPtr content_clip, 360 mojo::RectFPtr content_clip,
361 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, 361 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior,
362 Combinator combinator, 362 Combinator combinator,
363 const std::vector<uint32_t>& child_node_ids, 363 const std::vector<uint32_t>& child_node_ids,
364 const mojo::RectF& content_rect, 364 const mojo::RectF& content_rect,
(...skipping 14 matching lines...) Expand all
379 ImageNode::~ImageNode() {} 379 ImageNode::~ImageNode() {}
380 380
381 bool ImageNode::RecordContent(SceneContentBuilder* builder) const { 381 bool ImageNode::RecordContent(SceneContentBuilder* builder) const {
382 DCHECK(builder); 382 DCHECK(builder);
383 383
384 return Node::RecordContent(builder) && 384 return Node::RecordContent(builder) &&
385 builder->RequireResource(image_resource_id_, Resource::Type::kImage, 385 builder->RequireResource(image_resource_id_, Resource::Type::kImage,
386 node_id()); 386 node_id());
387 } 387 }
388 388
389 void ImageNode::RecordPictureInner(const SceneContent* content, 389 void ImageNode::PaintInner(const SceneContent* content,
390 const Snapshot* snapshot, 390 const Snapshot* snapshot,
391 SkCanvas* canvas) const { 391 SkCanvas* canvas) const {
392 DCHECK(content); 392 DCHECK(content);
393 DCHECK(snapshot); 393 DCHECK(snapshot);
394 DCHECK(canvas); 394 DCHECK(canvas);
395 395
396 auto image_resource = static_cast<const ImageResource*>( 396 auto image_resource = static_cast<const ImageResource*>(
397 content->GetResource(image_resource_id_, Resource::Type::kImage)); 397 content->GetResource(image_resource_id_, Resource::Type::kImage));
398 DCHECK(image_resource); 398 DCHECK(image_resource);
399 399
400 SkPaint paint; 400 SkPaint paint;
401 SetPaintForBlend(&paint, blend_.get()); 401 SetPaintForBlend(&paint, blend_.get());
402 402
403 canvas->drawImageRect(image_resource->image()->image().get(), 403 canvas->drawImageRect(image_resource->image()->image().get(),
404 image_rect_ 404 image_rect_
405 ? image_rect_->To<SkRect>() 405 ? image_rect_->To<SkRect>()
406 : SkRect::MakeWH(image_resource->image()->width(), 406 : SkRect::MakeWH(image_resource->image()->width(),
407 image_resource->image()->height()), 407 image_resource->image()->height()),
408 content_rect_.To<SkRect>(), &paint); 408 content_rect_.To<SkRect>(), &paint);
409 409
410 Node::RecordPictureInner(content, snapshot, canvas); 410 Node::PaintInner(content, snapshot, canvas);
411 } 411 }
412 412
413 SceneNode::SceneNode( 413 SceneNode::SceneNode(
414 uint32_t node_id, 414 uint32_t node_id,
415 std::unique_ptr<TransformPair> content_transform, 415 std::unique_ptr<TransformPair> content_transform,
416 mojo::RectFPtr content_clip, 416 mojo::RectFPtr content_clip,
417 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior, 417 mojo::gfx::composition::HitTestBehaviorPtr hit_test_behavior,
418 Combinator combinator, 418 Combinator combinator,
419 const std::vector<uint32_t>& child_node_ids, 419 const std::vector<uint32_t>& child_node_ids,
420 uint32_t scene_resource_id, 420 uint32_t scene_resource_id,
(...skipping 23 matching lines...) Expand all
444 DCHECK(content); 444 DCHECK(content);
445 DCHECK(builder); 445 DCHECK(builder);
446 446
447 Snapshot::Disposition disposition = 447 Snapshot::Disposition disposition =
448 builder->SnapshotReferencedScene(this, content); 448 builder->SnapshotReferencedScene(this, content);
449 if (disposition != Snapshot::Disposition::kSuccess) 449 if (disposition != Snapshot::Disposition::kSuccess)
450 return disposition; 450 return disposition;
451 return Node::RecordSnapshot(content, builder); 451 return Node::RecordSnapshot(content, builder);
452 } 452 }
453 453
454 void SceneNode::RecordPictureInner(const SceneContent* content, 454 void SceneNode::PaintInner(const SceneContent* content,
455 const Snapshot* snapshot, 455 const Snapshot* snapshot,
456 SkCanvas* canvas) const { 456 SkCanvas* canvas) const {
457 DCHECK(content); 457 DCHECK(content);
458 DCHECK(snapshot); 458 DCHECK(snapshot);
459 DCHECK(canvas); 459 DCHECK(canvas);
460 460
461 const SceneContent* resolved_content = 461 const SceneContent* resolved_content =
462 snapshot->GetResolvedSceneContent(this); 462 snapshot->GetResolvedSceneContent(this);
463 DCHECK(resolved_content); 463 DCHECK(resolved_content);
464 resolved_content->RecordPicture(snapshot, canvas); 464 resolved_content->Paint(snapshot, canvas);
465 465
466 Node::RecordPictureInner(content, snapshot, canvas); 466 Node::PaintInner(content, snapshot, canvas);
467 } 467 }
468 468
469 bool SceneNode::HitTestInner( 469 bool SceneNode::HitTestInner(
470 const SceneContent* content, 470 const SceneContent* content,
471 const Snapshot* snapshot, 471 const Snapshot* snapshot,
472 const SkPoint& local_point, 472 const SkPoint& local_point,
473 const SkMatrix44& global_to_local_transform, 473 const SkMatrix44& global_to_local_transform,
474 mojo::Array<mojo::gfx::composition::HitPtr>* hits) const { 474 mojo::Array<mojo::gfx::composition::HitPtr>* hits) const {
475 DCHECK(content); 475 DCHECK(content);
476 DCHECK(snapshot); 476 DCHECK(snapshot);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 std::move(content_transform), 508 std::move(content_transform),
509 content_clip.Pass(), 509 content_clip.Pass(),
510 hit_test_behavior.Pass(), 510 hit_test_behavior.Pass(),
511 combinator, 511 combinator,
512 child_node_ids), 512 child_node_ids),
513 layer_rect_(layer_rect), 513 layer_rect_(layer_rect),
514 blend_(blend.Pass()) {} 514 blend_(blend.Pass()) {}
515 515
516 LayerNode::~LayerNode() {} 516 LayerNode::~LayerNode() {}
517 517
518 void LayerNode::RecordPictureInner(const SceneContent* content, 518 void LayerNode::PaintInner(const SceneContent* content,
519 const Snapshot* snapshot, 519 const Snapshot* snapshot,
520 SkCanvas* canvas) const { 520 SkCanvas* canvas) const {
521 DCHECK(content); 521 DCHECK(content);
522 DCHECK(snapshot); 522 DCHECK(snapshot);
523 DCHECK(canvas); 523 DCHECK(canvas);
524 524
525 SkPaint paint; 525 SkPaint paint;
526 SetPaintForBlend(&paint, blend_.get()); 526 SetPaintForBlend(&paint, blend_.get());
527 527
528 canvas->saveLayer(layer_rect_.To<SkRect>(), &paint); 528 canvas->saveLayer(layer_rect_.To<SkRect>(), &paint);
529 Node::RecordPictureInner(content, snapshot, canvas); 529 Node::PaintInner(content, snapshot, canvas);
530 canvas->restore(); 530 canvas->restore();
531 } 531 }
532 532
533 } // namespace compositor 533 } // namespace compositor
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698