Implement HiDPI and pinch-zoom scaling of filter params
This change implements HiDPI scaling of filter params in CC. It also fixes content scaling of filter params (e.g.,
with -webkit-transform: scale(X)) as well as pinch-zoom scaling.
This code is mostly from http://crrev.com/191123002
"Implement hidpi and pinch-zoom scaling of filter params in cc"
and replaces http://crrev.com/317663005
"Scale the ALPHA_THRESHOLD filter's region based on the device scale factor"
because this fixes all filters rather than just the AlphaThresholdFilter.
BUG=376532, 281516, 281518, 349493
[email protected], [email protected], [email protected], [email protected]
Review URL: https://codereview.chromium.org/394193003
Cr-Commit-Position: refs/heads/master@{#288436}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288436 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/cc/layers/render_surface_impl.cc b/cc/layers/render_surface_impl.cc
index 04a4da4..4ac76f4 100644
--- a/cc/layers/render_surface_impl.cc
+++ b/cc/layers/render_surface_impl.cc
@@ -224,6 +224,12 @@
gfx::Rect contents_changed_since_last_frame =
ContentsChanged() ? content_rect_ : gfx::Rect();
+ DCHECK(owning_layer_->draw_properties().target_space_transform.IsScale2d());
+ gfx::Vector2dF owning_layer_to_target_scale =
+ owning_layer_->draw_properties().target_space_transform.Scale2d();
+ owning_layer_to_target_scale.Scale(owning_layer_->contents_scale_x(),
+ owning_layer_->contents_scale_y());
+
RenderPassDrawQuad* quad =
render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
quad->SetNew(shared_quad_state,
@@ -235,6 +241,7 @@
contents_changed_since_last_frame,
mask_uv_rect,
owning_layer_->filters(),
+ owning_layer_to_target_scale,
owning_layer_->background_filters());
}