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

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
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 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 void RenderSurfaceImpl::ClearLayerLists() { 345 void RenderSurfaceImpl::ClearLayerLists() {
346 layer_list_.clear(); 346 layer_list_.clear();
347 } 347 }
348 348
349 int RenderSurfaceImpl::GetRenderPassId() { 349 int RenderSurfaceImpl::GetRenderPassId() {
350 return id(); 350 return id();
351 } 351 }
352 352
353 void RenderSurfaceImpl::AppendRenderPasses(RenderPassSink* pass_sink) { 353 void RenderSurfaceImpl::AppendRenderPasses(RenderPassSink* pass_sink) {
354 std::unique_ptr<RenderPass> pass = RenderPass::Create(layer_list_.size()); 354 std::unique_ptr<RenderPass> pass = RenderPass::Create(layer_list_.size());
355 pass->SetNew(id(), content_rect(), 355 gfx::Rect damage_rect;
356 gfx::IntersectRects(content_rect(), 356 bool is_valid_rect = damage_tracker_->GetDamageRectIfValid(&damage_rect);
357 damage_tracker_->current_damage_rect()), 357 if (is_valid_rect)
358 damage_rect.Intersect(content_rect());
359 else
360 damage_rect = content_rect();
361 pass->SetNew(id(), content_rect(), damage_rect,
358 draw_properties_.screen_space_transform); 362 draw_properties_.screen_space_transform);
359 pass->filters = Filters(); 363 pass->filters = Filters();
360 pass->background_filters = BackgroundFilters(); 364 pass->background_filters = BackgroundFilters();
361 pass_sink->AppendRenderPass(std::move(pass)); 365 pass_sink->AppendRenderPass(std::move(pass));
362 } 366 }
363 367
364 void RenderSurfaceImpl::AppendQuads(RenderPass* render_pass, 368 void RenderSurfaceImpl::AppendQuads(RenderPass* render_pass,
365 AppendQuadsData* append_quads_data) { 369 AppendQuadsData* append_quads_data) {
366 gfx::Rect visible_layer_rect = 370 gfx::Rect visible_layer_rect =
367 occlusion_in_content_space().GetUnoccludedContentRect(content_rect()); 371 occlusion_in_content_space().GetUnoccludedContentRect(content_rect());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 } 408 }
405 409
406 RenderPassDrawQuad* quad = 410 RenderPassDrawQuad* quad =
407 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 411 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
408 quad->SetNew(shared_quad_state, content_rect(), visible_layer_rect, 412 quad->SetNew(shared_quad_state, content_rect(), visible_layer_rect,
409 GetRenderPassId(), mask_resource_id, mask_uv_scale, 413 GetRenderPassId(), mask_resource_id, mask_uv_scale,
410 mask_texture_size, surface_contents_scale, FiltersOrigin()); 414 mask_texture_size, surface_contents_scale, FiltersOrigin());
411 } 415 }
412 416
413 } // namespace cc 417 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698