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

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: better fix 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 #include "cc/trees/damage_tracker.h" 62 #include "cc/trees/damage_tracker.h"
63 #include "cc/trees/layer_tree_host.h" 63 #include "cc/trees/layer_tree_host.h"
64 #include "cc/trees/layer_tree_host_common.h" 64 #include "cc/trees/layer_tree_host_common.h"
65 #include "cc/trees/layer_tree_impl.h" 65 #include "cc/trees/layer_tree_impl.h"
66 #include "cc/trees/occlusion_tracker.h" 66 #include "cc/trees/occlusion_tracker.h"
67 #include "cc/trees/single_thread_proxy.h" 67 #include "cc/trees/single_thread_proxy.h"
68 #include "cc/trees/tree_synchronizer.h" 68 #include "cc/trees/tree_synchronizer.h"
69 #include "gpu/command_buffer/client/gles2_interface.h" 69 #include "gpu/command_buffer/client/gles2_interface.h"
70 #include "gpu/GLES2/gl2extchromium.h" 70 #include "gpu/GLES2/gl2extchromium.h"
71 #include "ui/gfx/frame_time.h" 71 #include "ui/gfx/frame_time.h"
72 #include "ui/gfx/geometry/rect_conversions.h"
72 #include "ui/gfx/size_conversions.h" 73 #include "ui/gfx/size_conversions.h"
73 #include "ui/gfx/vector2d_conversions.h" 74 #include "ui/gfx/vector2d_conversions.h"
74 75
75 namespace { 76 namespace {
76 77
77 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) { 78 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) {
78 if (visible) { 79 if (visible) {
79 TRACE_EVENT_ASYNC_BEGIN1("webkit", 80 TRACE_EVENT_ASYNC_BEGIN1("webkit",
80 "LayerTreeHostImpl::SetVisible", 81 "LayerTreeHostImpl::SetVisible",
81 id, 82 id,
(...skipping 1286 matching lines...) Expand 10 before | Expand all | Expand 10 after
1368 } 1369 }
1369 1370
1370 if (needs_commit) 1371 if (needs_commit)
1371 client_->SetNeedsCommitOnImplThread(); 1372 client_->SetNeedsCommitOnImplThread();
1372 } 1373 }
1373 1374
1374 void LayerTreeHostImpl::SetExternalDrawConstraints( 1375 void LayerTreeHostImpl::SetExternalDrawConstraints(
1375 const gfx::Transform& transform, 1376 const gfx::Transform& transform,
1376 const gfx::Rect& viewport, 1377 const gfx::Rect& viewport,
1377 const gfx::Rect& clip, 1378 const gfx::Rect& clip,
1379 const gfx::Rect& viewport_rect_for_tile_priority,
1380 const gfx::Transform& transform_for_tile_priority,
1378 bool resourceless_software_draw) { 1381 bool resourceless_software_draw) {
1382 gfx::Rect viewport_rect_for_tile_priority_in_view_space;
1383 if (!resourceless_software_draw) {
1384 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization);
1385 if (transform_for_tile_priority.GetInverse(&screen_to_view)) {
1386 // Convert from screen space to view space.
1387 viewport_rect_for_tile_priority_in_view_space =
1388 gfx::ToEnclosingRect(MathUtil::ProjectClippedRect(
1389 screen_to_view, viewport_rect_for_tile_priority));
1390 }
1391 }
1392
1379 if (external_transform_ != transform || external_viewport_ != viewport || 1393 if (external_transform_ != transform || external_viewport_ != viewport ||
1380 resourceless_software_draw_ != resourceless_software_draw) { 1394 resourceless_software_draw_ != resourceless_software_draw ||
1395 viewport_rect_for_tile_priority_ !=
1396 viewport_rect_for_tile_priority_in_view_space) {
1381 active_tree_->set_needs_update_draw_properties(); 1397 active_tree_->set_needs_update_draw_properties();
1382 } 1398 }
1383 1399
1384 external_transform_ = transform; 1400 external_transform_ = transform;
1385 external_viewport_ = viewport; 1401 external_viewport_ = viewport;
1386 external_clip_ = clip; 1402 external_clip_ = clip;
1403 viewport_rect_for_tile_priority_ =
1404 viewport_rect_for_tile_priority_in_view_space;
1387 resourceless_software_draw_ = resourceless_software_draw; 1405 resourceless_software_draw_ = resourceless_software_draw;
1388 } 1406 }
1389 1407
1390 void LayerTreeHostImpl::SetNeedsRedrawRect(const gfx::Rect& damage_rect) { 1408 void LayerTreeHostImpl::SetNeedsRedrawRect(const gfx::Rect& damage_rect) {
1391 if (damage_rect.IsEmpty()) 1409 if (damage_rect.IsEmpty())
1392 return; 1410 return;
1393 NotifySwapPromiseMonitorsOfSetNeedsRedraw(); 1411 NotifySwapPromiseMonitorsOfSetNeedsRedraw();
1394 client_->SetNeedsRedrawRectOnImplThread(damage_rect); 1412 client_->SetNeedsRedrawRectOnImplThread(damage_rect);
1395 } 1413 }
1396 1414
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after
2192 2210
2193 void LayerTreeHostImpl::SetDeviceScaleFactor(float device_scale_factor) { 2211 void LayerTreeHostImpl::SetDeviceScaleFactor(float device_scale_factor) {
2194 if (device_scale_factor == device_scale_factor_) 2212 if (device_scale_factor == device_scale_factor_)
2195 return; 2213 return;
2196 device_scale_factor_ = device_scale_factor; 2214 device_scale_factor_ = device_scale_factor;
2197 2215
2198 UpdateInnerViewportContainerSize(); 2216 UpdateInnerViewportContainerSize();
2199 SetFullRootLayerDamage(); 2217 SetFullRootLayerDamage();
2200 } 2218 }
2201 2219
2220 const gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const {
2221 if (viewport_rect_for_tile_priority_.IsEmpty())
2222 return DeviceViewport();
2223
2224 return viewport_rect_for_tile_priority_;
2225 }
2226
2202 gfx::Size LayerTreeHostImpl::DrawViewportSize() const { 2227 gfx::Size LayerTreeHostImpl::DrawViewportSize() const {
2203 return DeviceViewport().size(); 2228 return DeviceViewport().size();
2204 } 2229 }
2205 2230
2206 gfx::Rect LayerTreeHostImpl::DeviceViewport() const { 2231 gfx::Rect LayerTreeHostImpl::DeviceViewport() const {
2207 if (external_viewport_.IsEmpty()) 2232 if (external_viewport_.IsEmpty())
2208 return gfx::Rect(device_viewport_size_); 2233 return gfx::Rect(device_viewport_size_);
2209 2234
2210 return external_viewport_; 2235 return external_viewport_;
2211 } 2236 }
(...skipping 1094 matching lines...) Expand 10 before | Expand all | Expand 10 after
3306 } 3331 }
3307 3332
3308 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3333 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3309 std::vector<PictureLayerImpl*>::iterator it = 3334 std::vector<PictureLayerImpl*>::iterator it =
3310 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3335 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3311 DCHECK(it != picture_layers_.end()); 3336 DCHECK(it != picture_layers_.end());
3312 picture_layers_.erase(it); 3337 picture_layers_.erase(it);
3313 } 3338 }
3314 3339
3315 } // namespace cc 3340 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698