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

Side by Side Diff: cc/resources/pixel_buffer_raster_worker_pool.cc

Issue 22900018: cc: Set the mapped memory reclaim limit for the renderer compositor on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: IWYU Created 7 years, 3 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/resources/pixel_buffer_raster_worker_pool.h" 5 #include "cc/resources/pixel_buffer_raster_worker_pool.h"
6 6
7 #include "base/containers/stack_container.h" 7 #include "base/containers/stack_container.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "cc/debug/traced_value.h" 10 #include "cc/debug/traced_value.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 87
88 // Only used as std::find_if predicate for DCHECKs. 88 // Only used as std::find_if predicate for DCHECKs.
89 bool WasCanceled(const internal::RasterWorkerPoolTask* task) { 89 bool WasCanceled(const internal::RasterWorkerPoolTask* task) {
90 return task->WasCanceled(); 90 return task->WasCanceled();
91 } 91 }
92 92
93 } // namespace 93 } // namespace
94 94
95 PixelBufferRasterWorkerPool::PixelBufferRasterWorkerPool( 95 PixelBufferRasterWorkerPool::PixelBufferRasterWorkerPool(
96 ResourceProvider* resource_provider, 96 ResourceProvider* resource_provider,
97 size_t num_threads) 97 size_t num_threads,
98 size_t max_bytes_pending_upload)
reveman 2013/09/03 22:01:50 nit: max_transfer_buffer_usage_bytes
kaanb 2013/09/03 23:09:29 Done.
98 : RasterWorkerPool(resource_provider, num_threads), 99 : RasterWorkerPool(resource_provider, num_threads),
99 shutdown_(false), 100 shutdown_(false),
100 scheduled_raster_task_count_(0), 101 scheduled_raster_task_count_(0),
101 bytes_pending_upload_(0), 102 bytes_pending_upload_(0),
103 max_bytes_pending_upload_(max_bytes_pending_upload),
reveman 2013/09/03 22:01:50 I think this a good place to take the general conc
kaanb 2013/09/03 23:09:29 Done.
102 has_performed_uploads_since_last_flush_(false), 104 has_performed_uploads_since_last_flush_(false),
103 check_for_completed_raster_tasks_pending_(false), 105 check_for_completed_raster_tasks_pending_(false),
104 should_notify_client_if_no_tasks_are_pending_(false), 106 should_notify_client_if_no_tasks_are_pending_(false),
105 should_notify_client_if_no_tasks_required_for_activation_are_pending_( 107 should_notify_client_if_no_tasks_required_for_activation_are_pending_(
106 false) { 108 false) {
107 // If we raster too fast we become upload bound, and pending
108 // uploads consume memory. For maximum upload throughput, we would
109 // want to allow for upload_throughput * pipeline_time of pending
110 // uploads, after which we are just wasting memory. Since we don't
111 // know our upload throughput yet, this just caps our memory usage.
112 #if defined(OS_ANDROID)
113 size_t divider = 1;
114 if (base::android::SysUtils::IsLowEndDevice())
115 divider = 3;
116
117 // For reference Nexus10 can upload 1MB in about 2.5ms.
118 const size_t kMaxBytesUploadedPerMs = (2 * 1024 * 1024) / (5 * divider);
119 #else
120 // For reference Chromebook Pixel can upload 1MB in about 0.5ms.
121 const size_t kMaxBytesUploadedPerMs = 1024 * 1024 * 2;
122 #endif
123
124 // Assuming a two frame deep pipeline.
125 max_bytes_pending_upload_ = 16 * 2 * kMaxBytesUploadedPerMs;
126 } 109 }
127 110
128 PixelBufferRasterWorkerPool::~PixelBufferRasterWorkerPool() { 111 PixelBufferRasterWorkerPool::~PixelBufferRasterWorkerPool() {
129 DCHECK(shutdown_); 112 DCHECK(shutdown_);
130 DCHECK(!check_for_completed_raster_tasks_pending_); 113 DCHECK(!check_for_completed_raster_tasks_pending_);
131 DCHECK_EQ(0u, pixel_buffer_tasks_.size()); 114 DCHECK_EQ(0u, pixel_buffer_tasks_.size());
132 DCHECK_EQ(0u, tasks_with_pending_upload_.size()); 115 DCHECK_EQ(0u, tasks_with_pending_upload_.size());
133 DCHECK_EQ(0u, completed_tasks_.size()); 116 DCHECK_EQ(0u, completed_tasks_.size());
134 } 117 }
135 118
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 673
691 throttle_state->SetInteger("bytes_available_for_upload", 674 throttle_state->SetInteger("bytes_available_for_upload",
692 max_bytes_pending_upload_ - bytes_pending_upload_); 675 max_bytes_pending_upload_ - bytes_pending_upload_);
693 throttle_state->SetInteger("bytes_pending_upload", bytes_pending_upload_); 676 throttle_state->SetInteger("bytes_pending_upload", bytes_pending_upload_);
694 throttle_state->SetInteger("scheduled_raster_task_count", 677 throttle_state->SetInteger("scheduled_raster_task_count",
695 scheduled_raster_task_count_); 678 scheduled_raster_task_count_);
696 return throttle_state.PassAs<base::Value>(); 679 return throttle_state.PassAs<base::Value>();
697 } 680 }
698 681
699 } // namespace cc 682 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698