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

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

Issue 60513007: Add SwapPromise support to LayerTreeHost and LayerTreeImpl (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rework SwapPromise() interface to have virtual DidSwap() & DidNotSwap() interface Created 7 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 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.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <stack> 8 #include <stack>
9 #include <string> 9 #include <string>
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 namespace { 45 namespace {
46 static base::LazyInstance<base::Lock>::Leaky 46 static base::LazyInstance<base::Lock>::Leaky
47 s_next_tree_id_lock = LAZY_INSTANCE_INITIALIZER; 47 s_next_tree_id_lock = LAZY_INSTANCE_INITIALIZER;
48 48
49 inline int GetNextTreeId() { 49 inline int GetNextTreeId() {
50 static int s_next_tree_id = 1; 50 static int s_next_tree_id = 1;
51 base::AutoLock lock(s_next_tree_id_lock.Get()); 51 base::AutoLock lock(s_next_tree_id_lock.Get());
52 return s_next_tree_id++; 52 return s_next_tree_id++;
53 } 53 }
54 } 54
55 const size_t kMaxQueuedSwapPromiseSize = 100;
56 } // namespace
55 57
56 namespace cc { 58 namespace cc {
57 59
58 RendererCapabilities::RendererCapabilities() 60 RendererCapabilities::RendererCapabilities()
59 : best_texture_format(RGBA_8888), 61 : best_texture_format(RGBA_8888),
60 using_partial_swap(false), 62 using_partial_swap(false),
61 using_set_visibility(false), 63 using_set_visibility(false),
62 using_egl_image(false), 64 using_egl_image(false),
63 allow_partial_texture_updates(false), 65 allow_partial_texture_updates(false),
64 using_offscreen_context3d(false), 66 using_offscreen_context3d(false),
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 sync_tree->set_sent_page_scale_delta(1.f); 380 sync_tree->set_sent_page_scale_delta(1.f);
379 } 381 }
380 382
381 sync_tree->SetPageScaleFactorAndLimits(page_scale_factor_, 383 sync_tree->SetPageScaleFactorAndLimits(page_scale_factor_,
382 min_page_scale_factor_, 384 min_page_scale_factor_,
383 max_page_scale_factor_); 385 max_page_scale_factor_);
384 sync_tree->SetPageScaleDelta(page_scale_delta / sent_page_scale_delta); 386 sync_tree->SetPageScaleDelta(page_scale_delta / sent_page_scale_delta);
385 sync_tree->SetLatencyInfo(latency_info_); 387 sync_tree->SetLatencyInfo(latency_info_);
386 latency_info_.Clear(); 388 latency_info_.Clear();
387 389
390 sync_tree->TakeSwapPromise(&swap_promise_list_);
danakj 2013/11/13 23:22:09 This sounds like we're taking the swap promises fr
Yufeng Shen (Slow to review) 2013/11/14 22:09:55 hmmm, "take" reads more correctly to me than "pass
danakj 2013/11/20 03:00:55 I think insert_and_take() says "insert these thing
Yufeng Shen (Slow to review) 2013/11/20 19:15:41 Done.
391
388 host_impl->SetViewportSize(device_viewport_size_); 392 host_impl->SetViewportSize(device_viewport_size_);
389 host_impl->SetOverdrawBottomHeight(overdraw_bottom_height_); 393 host_impl->SetOverdrawBottomHeight(overdraw_bottom_height_);
390 host_impl->SetDeviceScaleFactor(device_scale_factor_); 394 host_impl->SetDeviceScaleFactor(device_scale_factor_);
391 host_impl->SetDebugState(debug_state_); 395 host_impl->SetDebugState(debug_state_);
392 if (pending_page_scale_animation_) { 396 if (pending_page_scale_animation_) {
393 host_impl->StartPageScaleAnimation( 397 host_impl->StartPageScaleAnimation(
394 pending_page_scale_animation_->target_offset, 398 pending_page_scale_animation_->target_offset,
395 pending_page_scale_animation_->use_anchor, 399 pending_page_scale_animation_->use_anchor,
396 pending_page_scale_animation_->scale, 400 pending_page_scale_animation_->scale,
397 pending_page_scale_animation_->duration); 401 pending_page_scale_animation_->duration);
(...skipping 859 matching lines...) Expand 10 before | Expand all | Expand 10 after
1257 } 1261 }
1258 1262
1259 bool LayerTreeHost::ScheduleMicroBenchmark( 1263 bool LayerTreeHost::ScheduleMicroBenchmark(
1260 const std::string& benchmark_name, 1264 const std::string& benchmark_name,
1261 scoped_ptr<base::Value> value, 1265 scoped_ptr<base::Value> value,
1262 const MicroBenchmark::DoneCallback& callback) { 1266 const MicroBenchmark::DoneCallback& callback) {
1263 return micro_benchmark_controller_.ScheduleRun( 1267 return micro_benchmark_controller_.ScheduleRun(
1264 benchmark_name, value.Pass(), callback); 1268 benchmark_name, value.Pass(), callback);
1265 } 1269 }
1266 1270
1271 void LayerTreeHost::QueueSwapPromise(SwapPromise* swap_promise) {
1272 if (proxy_->HasImplThread()) {
1273 DCHECK(proxy_->CommitRequested() || proxy_->BeginMainFrameRequested());
1274 }
1275 if (swap_promise_list_.size() > kMaxQueuedSwapPromiseSize) {
1276 NOTREACHED() << "LayerTreeHost::swap_promise_list overflows";
danakj 2013/11/13 23:22:09 If you expect this to be hit validly, then don't N
Yufeng Shen (Slow to review) 2013/11/14 22:09:55 Done.
1277 BreakSwapPromise(SwapPromise::SWAP_PROMISE_LIST_OVERFLOW);
1278 }
1279 swap_promise_list_.push_back(swap_promise);
1280 }
1281
1282 bool LayerTreeHost::HasQueuedSwapPromise() {
1283 return !swap_promise_list_.empty();
1284 }
1285
1286 void LayerTreeHost::FinishSwapPromise() {
danakj 2013/11/13 23:22:09 FinishSwapPromises?
Yufeng Shen (Slow to review) 2013/11/14 22:09:55 Done.
1287 for (size_t i = 0; i < swap_promise_list_.size(); i++) {
1288 swap_promise_list_[i]->DidSwap();
1289 }
1290 swap_promise_list_.clear();
1291 }
1292
1293 void LayerTreeHost::BreakSwapPromise(SwapPromise::DidNotSwapReason reason) {
danakj 2013/11/13 23:22:09 BreakSwapPromises?
Yufeng Shen (Slow to review) 2013/11/14 22:09:55 Done.
1294 for (size_t i = 0; i < swap_promise_list_.size(); i++) {
1295 swap_promise_list_[i]->DidNotSwap(reason);
1296 }
1297 swap_promise_list_.clear();
1298 }
1299
1267 } // namespace cc 1300 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698