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

Unified Diff: content/renderer/android/synchronous_compositor_output_surface.cc

Issue 1418273002: cc: Move draw params from SetExternalDrawConstraints to OnDraw (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tests fixed Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/android/synchronous_compositor_output_surface.cc
diff --git a/content/renderer/android/synchronous_compositor_output_surface.cc b/content/renderer/android/synchronous_compositor_output_surface.cc
index 9a48dff351830d12939eb46b719ce81f52110cd6..35b20a0a2e35c048907b9e227ffd5cc8adf046d3 100644
--- a/content/renderer/android/synchronous_compositor_output_surface.cc
+++ b/content/renderer/android/synchronous_compositor_output_surface.cc
@@ -71,7 +71,6 @@ SynchronousCompositorOutputSurface::SynchronousCompositorOutputSurface(
registry_(registry),
registered_(false),
sync_client_(nullptr),
- next_hardware_draw_needs_damage_(false),
current_sw_canvas_(nullptr),
memory_policy_(0u),
frame_swap_message_queue_(frame_swap_message_queue) {
@@ -144,8 +143,9 @@ SynchronousCompositorOutputSurface::DemandDrawHw(
DCHECK(context_provider_.get());
surface_size_ = surface_size;
- InvokeComposite(transform, viewport, clip, viewport_rect_for_tile_priority,
- transform_for_tile_priority, true);
+ client_->SetExternalDrawConstraints(viewport_rect_for_tile_priority,
+ transform_for_tile_priority);
+ InvokeComposite(transform, viewport, clip, false);
danakj 2015/11/24 21:17:31 nit: use a temp var dont pass bool literals to fun
boliu 2015/11/24 23:27:38 Done.
return frame_holder_.Pass();
}
@@ -167,16 +167,7 @@ SynchronousCompositorOutputSurface::DemandDrawSw(SkCanvas* canvas) {
surface_size_ = gfx::Size(canvas->getDeviceSize().width(),
canvas->getDeviceSize().height());
-
- // Pass in the cached hw viewport and transform for tile priority to avoid
- // tile thrashing when the WebView is alternating between hardware and
- // software draws.
- InvokeComposite(transform,
- clip,
- clip,
- cached_hw_viewport_rect_for_tile_priority_,
- cached_hw_transform_for_tile_priority_,
- false);
+ InvokeComposite(transform, clip, clip, true);
danakj 2015/11/24 21:17:31 ditto
boliu 2015/11/24 23:27:38 Done.
return frame_holder_.Pass();
}
@@ -185,46 +176,12 @@ void SynchronousCompositorOutputSurface::InvokeComposite(
const gfx::Transform& transform,
const gfx::Rect& viewport,
const gfx::Rect& clip,
- const gfx::Rect& viewport_rect_for_tile_priority,
- const gfx::Transform& transform_for_tile_priority,
- bool hardware_draw) {
+ bool software_draw) {
DCHECK(!frame_holder_.get());
gfx::Transform adjusted_transform = transform;
adjusted_transform.matrix().postTranslate(-viewport.x(), -viewport.y(), 0);
- SetExternalDrawConstraints(adjusted_transform, viewport, clip,
- viewport_rect_for_tile_priority,
- transform_for_tile_priority, !hardware_draw);
- if (!hardware_draw || next_hardware_draw_needs_damage_) {
- next_hardware_draw_needs_damage_ = false;
- SetNeedsRedrawRect(gfx::Rect(viewport.size()));
- }
-
- client_->OnDraw();
-
- // After software draws (which might move the viewport arbitrarily), restore
- // the previous hardware viewport to allow CC's tile manager to prioritize
- // properly.
- if (hardware_draw) {
- cached_hw_transform_ = adjusted_transform;
- cached_hw_viewport_ = viewport;
- cached_hw_clip_ = clip;
- cached_hw_viewport_rect_for_tile_priority_ =
- viewport_rect_for_tile_priority;
- cached_hw_transform_for_tile_priority_ = transform_for_tile_priority;
- } else {
- bool resourceless_software_draw = false;
- SetExternalDrawConstraints(cached_hw_transform_,
- cached_hw_viewport_,
- cached_hw_clip_,
- cached_hw_viewport_rect_for_tile_priority_,
- cached_hw_transform_for_tile_priority_,
- resourceless_software_draw);
- // This draw may have reset all damage, which would lead to subsequent
- // incorrect hardware draw, so explicitly set damage for next hardware
- // draw as well.
- next_hardware_draw_needs_damage_ = true;
- }
+ client_->OnDraw(adjusted_transform, viewport, clip, software_draw);
if (frame_holder_.get())
client_->DidSwapBuffersComplete();

Powered by Google App Engine
This is Rietveld 408576698