Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 94b8bfa1cfac7e9daaa5cef94a4e41954d7a8880..3e3593b648008f310d14914c9e534c5a2971944a 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -66,6 +66,7 @@ |
#include "cc/trees/tree_synchronizer.h" |
#include "gpu/GLES2/gl2extchromium.h" |
#include "ui/gfx/frame_time.h" |
+#include "ui/gfx/geometry/rect_conversions.h" |
#include "ui/gfx/size_conversions.h" |
#include "ui/gfx/vector2d_conversions.h" |
@@ -1345,15 +1346,29 @@ void LayerTreeHostImpl::SetExternalDrawConstraints( |
const gfx::Transform& transform, |
const gfx::Rect& viewport, |
const gfx::Rect& clip, |
+ const gfx::Rect& external_tiling_rect, |
+ const gfx::Transform& external_tiling_transform, |
enne (OOO)
2014/07/25 18:44:30
Does cc even need to know about external_tiling_tr
|
bool resourceless_software_draw) { |
+ gfx::Rect viewport_rect_for_tile_priority; |
+ if (!resourceless_software_draw_) { |
+ gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization); |
+ if (external_tiling_transform.GetInverse(&screen_to_view)) { |
+ // Convert from screen space to view space. |
+ viewport_rect_for_tile_priority = gfx::ToEnclosingRect( |
+ MathUtil::ProjectClippedRect(screen_to_view, external_tiling_rect)); |
+ } |
+ } |
+ |
if (external_transform_ != transform || external_viewport_ != viewport || |
- resourceless_software_draw_ != resourceless_software_draw) { |
+ resourceless_software_draw_ != resourceless_software_draw || |
+ viewport_rect_for_tile_priority_ != viewport_rect_for_tile_priority) { |
active_tree_->set_needs_update_draw_properties(); |
} |
external_transform_ = transform; |
external_viewport_ = viewport; |
external_clip_ = clip; |
+ viewport_rect_for_tile_priority_ = viewport_rect_for_tile_priority; |
resourceless_software_draw_ = resourceless_software_draw; |
} |
@@ -2162,6 +2177,10 @@ void LayerTreeHostImpl::SetDeviceScaleFactor(float device_scale_factor) { |
SetFullRootLayerDamage(); |
} |
+const gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const { |
+ return viewport_rect_for_tile_priority_; |
+} |
+ |
gfx::Size LayerTreeHostImpl::DrawViewportSize() const { |
return DeviceViewport().size(); |
} |