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

Side by Side Diff: cc/layers/render_surface_impl.cc

Issue 2632463005: cc: Ensure that large damage doesn't register as "frame has no damage" (Closed)
Patch Set: update 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 | « cc/layers/render_surface_impl.h ('k') | cc/trees/damage_tracker.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/layers/render_surface_impl.h" 5 #include "cc/layers/render_surface_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 return ancestor_property_changed_ || property_trees->full_tree_damaged || 330 return ancestor_property_changed_ || property_trees->full_tree_damaged ||
331 property_trees->transform_tree.Node(TransformTreeIndex()) 331 property_trees->transform_tree.Node(TransformTreeIndex())
332 ->transform_changed || 332 ->transform_changed ||
333 property_trees->effect_tree.Node(EffectTreeIndex())->effect_changed; 333 property_trees->effect_tree.Node(EffectTreeIndex())->effect_changed;
334 } 334 }
335 335
336 void RenderSurfaceImpl::NoteAncestorPropertyChanged() { 336 void RenderSurfaceImpl::NoteAncestorPropertyChanged() {
337 ancestor_property_changed_ = true; 337 ancestor_property_changed_ = true;
338 } 338 }
339 339
340 gfx::Rect RenderSurfaceImpl::GetDamageRect() {
341 gfx::Rect damage_rect;
342 bool is_valid_rect = damage_tracker_->GetDamageRectIfValid(&damage_rect);
343 if (!is_valid_rect)
344 return content_rect();
345 return damage_rect;
346 }
347
340 void RenderSurfaceImpl::ResetPropertyChangedFlags() { 348 void RenderSurfaceImpl::ResetPropertyChangedFlags() {
341 surface_property_changed_ = false; 349 surface_property_changed_ = false;
342 ancestor_property_changed_ = false; 350 ancestor_property_changed_ = false;
343 } 351 }
344 352
345 void RenderSurfaceImpl::ClearLayerLists() { 353 void RenderSurfaceImpl::ClearLayerLists() {
346 layer_list_.clear(); 354 layer_list_.clear();
347 } 355 }
348 356
349 int RenderSurfaceImpl::GetRenderPassId() { 357 int RenderSurfaceImpl::GetRenderPassId() {
350 return id(); 358 return id();
351 } 359 }
352 360
353 void RenderSurfaceImpl::AppendRenderPasses(RenderPassSink* pass_sink) { 361 void RenderSurfaceImpl::AppendRenderPasses(RenderPassSink* pass_sink) {
354 std::unique_ptr<RenderPass> pass = RenderPass::Create(layer_list_.size()); 362 std::unique_ptr<RenderPass> pass = RenderPass::Create(layer_list_.size());
355 pass->SetNew(id(), content_rect(), 363 gfx::Rect damage_rect = GetDamageRect();
356 gfx::IntersectRects(content_rect(), 364 damage_rect.Intersect(content_rect());
357 damage_tracker_->current_damage_rect()), 365 pass->SetNew(id(), content_rect(), damage_rect,
358 draw_properties_.screen_space_transform); 366 draw_properties_.screen_space_transform);
359 pass->filters = Filters(); 367 pass->filters = Filters();
360 pass->background_filters = BackgroundFilters(); 368 pass->background_filters = BackgroundFilters();
361 pass_sink->AppendRenderPass(std::move(pass)); 369 pass_sink->AppendRenderPass(std::move(pass));
362 } 370 }
363 371
364 void RenderSurfaceImpl::AppendQuads(RenderPass* render_pass, 372 void RenderSurfaceImpl::AppendQuads(RenderPass* render_pass,
365 AppendQuadsData* append_quads_data) { 373 AppendQuadsData* append_quads_data) {
366 gfx::Rect visible_layer_rect = 374 gfx::Rect visible_layer_rect =
367 occlusion_in_content_space().GetUnoccludedContentRect(content_rect()); 375 occlusion_in_content_space().GetUnoccludedContentRect(content_rect());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 } 412 }
405 413
406 RenderPassDrawQuad* quad = 414 RenderPassDrawQuad* quad =
407 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 415 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
408 quad->SetNew(shared_quad_state, content_rect(), visible_layer_rect, 416 quad->SetNew(shared_quad_state, content_rect(), visible_layer_rect,
409 GetRenderPassId(), mask_resource_id, mask_uv_scale, 417 GetRenderPassId(), mask_resource_id, mask_uv_scale,
410 mask_texture_size, surface_contents_scale, FiltersOrigin()); 418 mask_texture_size, surface_contents_scale, FiltersOrigin());
411 } 419 }
412 420
413 } // namespace cc 421 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/render_surface_impl.h ('k') | cc/trees/damage_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698