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

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 394113002: Tiling priorities in Android Webview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 #include "cc/scheduler/delay_based_time_source.h" 59 #include "cc/scheduler/delay_based_time_source.h"
60 #include "cc/trees/damage_tracker.h" 60 #include "cc/trees/damage_tracker.h"
61 #include "cc/trees/layer_tree_host.h" 61 #include "cc/trees/layer_tree_host.h"
62 #include "cc/trees/layer_tree_host_common.h" 62 #include "cc/trees/layer_tree_host_common.h"
63 #include "cc/trees/layer_tree_impl.h" 63 #include "cc/trees/layer_tree_impl.h"
64 #include "cc/trees/occlusion_tracker.h" 64 #include "cc/trees/occlusion_tracker.h"
65 #include "cc/trees/single_thread_proxy.h" 65 #include "cc/trees/single_thread_proxy.h"
66 #include "cc/trees/tree_synchronizer.h" 66 #include "cc/trees/tree_synchronizer.h"
67 #include "gpu/GLES2/gl2extchromium.h" 67 #include "gpu/GLES2/gl2extchromium.h"
68 #include "ui/gfx/frame_time.h" 68 #include "ui/gfx/frame_time.h"
69 #include "ui/gfx/geometry/rect_conversions.h"
69 #include "ui/gfx/size_conversions.h" 70 #include "ui/gfx/size_conversions.h"
70 #include "ui/gfx/vector2d_conversions.h" 71 #include "ui/gfx/vector2d_conversions.h"
71 72
72 namespace { 73 namespace {
73 74
74 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) { 75 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) {
75 if (visible) { 76 if (visible) {
76 TRACE_EVENT_ASYNC_BEGIN1("webkit", 77 TRACE_EVENT_ASYNC_BEGIN1("webkit",
77 "LayerTreeHostImpl::SetVisible", 78 "LayerTreeHostImpl::SetVisible",
78 id, 79 id,
(...skipping 1259 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 } 1339 }
1339 1340
1340 if (needs_commit) 1341 if (needs_commit)
1341 client_->SetNeedsCommitOnImplThread(); 1342 client_->SetNeedsCommitOnImplThread();
1342 } 1343 }
1343 1344
1344 void LayerTreeHostImpl::SetExternalDrawConstraints( 1345 void LayerTreeHostImpl::SetExternalDrawConstraints(
1345 const gfx::Transform& transform, 1346 const gfx::Transform& transform,
1346 const gfx::Rect& viewport, 1347 const gfx::Rect& viewport,
1347 const gfx::Rect& clip, 1348 const gfx::Rect& clip,
1349 const gfx::Rect& external_tiling_rect,
1350 const gfx::Transform& external_tiling_transform,
enne (OOO) 2014/07/25 18:44:30 Does cc even need to know about external_tiling_tr
1348 bool resourceless_software_draw) { 1351 bool resourceless_software_draw) {
1352 gfx::Rect viewport_rect_for_tile_priority;
1353 if (!resourceless_software_draw_) {
1354 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization);
1355 if (external_tiling_transform.GetInverse(&screen_to_view)) {
1356 // Convert from screen space to view space.
1357 viewport_rect_for_tile_priority = gfx::ToEnclosingRect(
1358 MathUtil::ProjectClippedRect(screen_to_view, external_tiling_rect));
1359 }
1360 }
1361
1349 if (external_transform_ != transform || external_viewport_ != viewport || 1362 if (external_transform_ != transform || external_viewport_ != viewport ||
1350 resourceless_software_draw_ != resourceless_software_draw) { 1363 resourceless_software_draw_ != resourceless_software_draw ||
1364 viewport_rect_for_tile_priority_ != viewport_rect_for_tile_priority) {
1351 active_tree_->set_needs_update_draw_properties(); 1365 active_tree_->set_needs_update_draw_properties();
1352 } 1366 }
1353 1367
1354 external_transform_ = transform; 1368 external_transform_ = transform;
1355 external_viewport_ = viewport; 1369 external_viewport_ = viewport;
1356 external_clip_ = clip; 1370 external_clip_ = clip;
1371 viewport_rect_for_tile_priority_ = viewport_rect_for_tile_priority;
1357 resourceless_software_draw_ = resourceless_software_draw; 1372 resourceless_software_draw_ = resourceless_software_draw;
1358 } 1373 }
1359 1374
1360 void LayerTreeHostImpl::SetNeedsRedrawRect(const gfx::Rect& damage_rect) { 1375 void LayerTreeHostImpl::SetNeedsRedrawRect(const gfx::Rect& damage_rect) {
1361 if (damage_rect.IsEmpty()) 1376 if (damage_rect.IsEmpty())
1362 return; 1377 return;
1363 NotifySwapPromiseMonitorsOfSetNeedsRedraw(); 1378 NotifySwapPromiseMonitorsOfSetNeedsRedraw();
1364 client_->SetNeedsRedrawRectOnImplThread(damage_rect); 1379 client_->SetNeedsRedrawRectOnImplThread(damage_rect);
1365 } 1380 }
1366 1381
(...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after
2155 2170
2156 void LayerTreeHostImpl::SetDeviceScaleFactor(float device_scale_factor) { 2171 void LayerTreeHostImpl::SetDeviceScaleFactor(float device_scale_factor) {
2157 if (device_scale_factor == device_scale_factor_) 2172 if (device_scale_factor == device_scale_factor_)
2158 return; 2173 return;
2159 device_scale_factor_ = device_scale_factor; 2174 device_scale_factor_ = device_scale_factor;
2160 2175
2161 UpdateInnerViewportContainerSize(); 2176 UpdateInnerViewportContainerSize();
2162 SetFullRootLayerDamage(); 2177 SetFullRootLayerDamage();
2163 } 2178 }
2164 2179
2180 const gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const {
2181 return viewport_rect_for_tile_priority_;
2182 }
2183
2165 gfx::Size LayerTreeHostImpl::DrawViewportSize() const { 2184 gfx::Size LayerTreeHostImpl::DrawViewportSize() const {
2166 return DeviceViewport().size(); 2185 return DeviceViewport().size();
2167 } 2186 }
2168 2187
2169 gfx::Rect LayerTreeHostImpl::DeviceViewport() const { 2188 gfx::Rect LayerTreeHostImpl::DeviceViewport() const {
2170 if (external_viewport_.IsEmpty()) 2189 if (external_viewport_.IsEmpty())
2171 return gfx::Rect(device_viewport_size_); 2190 return gfx::Rect(device_viewport_size_);
2172 2191
2173 return external_viewport_; 2192 return external_viewport_;
2174 } 2193 }
(...skipping 1090 matching lines...) Expand 10 before | Expand all | Expand 10 after
3265 } 3284 }
3266 3285
3267 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3286 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3268 std::vector<PictureLayerImpl*>::iterator it = 3287 std::vector<PictureLayerImpl*>::iterator it =
3269 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3288 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3270 DCHECK(it != picture_layers_.end()); 3289 DCHECK(it != picture_layers_.end());
3271 picture_layers_.erase(it); 3290 picture_layers_.erase(it);
3272 } 3291 }
3273 3292
3274 } // namespace cc 3293 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698