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

Side by Side Diff: trunk/src/gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc

Issue 216673006: Revert 260177 "By keeping track of transfer buffer usage (both s..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
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 "gpu/command_buffer/service/async_pixel_transfer_manager_idle.h" 5 #include "gpu/command_buffer/service/async_pixel_transfer_manager_idle.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/debug/trace_event_synthetic_delay.h" 9 #include "base/debug/trace_event_synthetic_delay.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 void AsyncPixelTransferDelegateIdle::AsyncTexImage2D( 83 void AsyncPixelTransferDelegateIdle::AsyncTexImage2D(
84 const AsyncTexImage2DParams& tex_params, 84 const AsyncTexImage2DParams& tex_params,
85 const AsyncMemoryParams& mem_params, 85 const AsyncMemoryParams& mem_params,
86 const base::Closure& bind_callback) { 86 const base::Closure& bind_callback) {
87 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("gpu.AsyncTexImage"); 87 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("gpu.AsyncTexImage");
88 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target); 88 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target);
89 89
90 shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task( 90 shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task(
91 id_, 91 id_,
92 this,
93 base::Bind(&AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D, 92 base::Bind(&AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D,
94 AsWeakPtr(), 93 AsWeakPtr(),
95 tex_params, 94 tex_params,
96 mem_params, 95 mem_params,
97 bind_callback))); 96 bind_callback)));
98 97
99 transfer_in_progress_ = true; 98 transfer_in_progress_ = true;
100 } 99 }
101 100
102 void AsyncPixelTransferDelegateIdle::AsyncTexSubImage2D( 101 void AsyncPixelTransferDelegateIdle::AsyncTexSubImage2D(
103 const AsyncTexSubImage2DParams& tex_params, 102 const AsyncTexSubImage2DParams& tex_params,
104 const AsyncMemoryParams& mem_params) { 103 const AsyncMemoryParams& mem_params) {
105 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("gpu.AsyncTexImage"); 104 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("gpu.AsyncTexImage");
106 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target); 105 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target);
107 106
108 shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task( 107 shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task(
109 id_, 108 id_,
110 this,
111 base::Bind(&AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D, 109 base::Bind(&AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D,
112 AsWeakPtr(), 110 AsWeakPtr(),
113 tex_params, 111 tex_params,
114 mem_params))); 112 mem_params)));
115 113
116 transfer_in_progress_ = true; 114 transfer_in_progress_ = true;
117 } 115 }
118 116
119 bool AsyncPixelTransferDelegateIdle::TransferIsInProgress() { 117 bool AsyncPixelTransferDelegateIdle::TransferIsInProgress() {
120 return transfer_in_progress_; 118 return transfer_in_progress_;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 } 217 }
220 218
221 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage"); 219 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage");
222 transfer_in_progress_ = false; 220 transfer_in_progress_ = false;
223 shared_state_->texture_upload_count++; 221 shared_state_->texture_upload_count++;
224 shared_state_->total_texture_upload_time += 222 shared_state_->total_texture_upload_time +=
225 base::TimeTicks::HighResNow() - begin_time; 223 base::TimeTicks::HighResNow() - begin_time;
226 } 224 }
227 225
228 AsyncPixelTransferManagerIdle::Task::Task( 226 AsyncPixelTransferManagerIdle::Task::Task(
229 uint64 transfer_id, 227 uint64 transfer_id, const base::Closure& task)
230 AsyncPixelTransferDelegate* delegate,
231 const base::Closure& task)
232 : transfer_id(transfer_id), 228 : transfer_id(transfer_id),
233 delegate(delegate),
234 task(task) { 229 task(task) {
235 } 230 }
236 231
237 AsyncPixelTransferManagerIdle::Task::~Task() {} 232 AsyncPixelTransferManagerIdle::Task::~Task() {}
238 233
239 AsyncPixelTransferManagerIdle::SharedState::SharedState() 234 AsyncPixelTransferManagerIdle::SharedState::SharedState()
240 : texture_upload_count(0) {} 235 : texture_upload_count(0) {}
241 236
242 AsyncPixelTransferManagerIdle::SharedState::~SharedState() {} 237 AsyncPixelTransferManagerIdle::SharedState::~SharedState() {}
243 238
(...skipping 21 matching lines...) Expand all
265 void AsyncPixelTransferManagerIdle::AsyncNotifyCompletion( 260 void AsyncPixelTransferManagerIdle::AsyncNotifyCompletion(
266 const AsyncMemoryParams& mem_params, 261 const AsyncMemoryParams& mem_params,
267 AsyncPixelTransferCompletionObserver* observer) { 262 AsyncPixelTransferCompletionObserver* observer) {
268 if (shared_state_.tasks.empty()) { 263 if (shared_state_.tasks.empty()) {
269 observer->DidComplete(mem_params); 264 observer->DidComplete(mem_params);
270 return; 265 return;
271 } 266 }
272 267
273 shared_state_.tasks.push_back( 268 shared_state_.tasks.push_back(
274 Task(0, // 0 transfer_id for notification tasks. 269 Task(0, // 0 transfer_id for notification tasks.
275 NULL,
276 base::Bind( 270 base::Bind(
277 &PerformNotifyCompletion, 271 &PerformNotifyCompletion,
278 mem_params, 272 mem_params,
279 make_scoped_refptr(observer)))); 273 make_scoped_refptr(observer))));
280 } 274 }
281 275
282 uint32 AsyncPixelTransferManagerIdle::GetTextureUploadCount() { 276 uint32 AsyncPixelTransferManagerIdle::GetTextureUploadCount() {
283 return shared_state_.texture_upload_count; 277 return shared_state_.texture_upload_count;
284 } 278 }
285 279
(...skipping 10 matching lines...) Expand all
296 shared_state_.tasks.front().task.Run(); 290 shared_state_.tasks.front().task.Run();
297 shared_state_.tasks.pop_front(); 291 shared_state_.tasks.pop_front();
298 292
299 shared_state_.ProcessNotificationTasks(); 293 shared_state_.ProcessNotificationTasks();
300 } 294 }
301 295
302 bool AsyncPixelTransferManagerIdle::NeedsProcessMorePendingTransfers() { 296 bool AsyncPixelTransferManagerIdle::NeedsProcessMorePendingTransfers() {
303 return !shared_state_.tasks.empty(); 297 return !shared_state_.tasks.empty();
304 } 298 }
305 299
306 void AsyncPixelTransferManagerIdle::WaitAllAsyncTexImage2D() {
307 if (shared_state_.tasks.empty())
308 return;
309
310 const Task& task = shared_state_.tasks.back();
311 if (task.delegate)
312 task.delegate->WaitForTransferCompletion();
313 }
314
315 AsyncPixelTransferDelegate* 300 AsyncPixelTransferDelegate*
316 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl( 301 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl(
317 gles2::TextureRef* ref, 302 gles2::TextureRef* ref,
318 const AsyncTexImage2DParams& define_params) { 303 const AsyncTexImage2DParams& define_params) {
319 return new AsyncPixelTransferDelegateIdle(&shared_state_, 304 return new AsyncPixelTransferDelegateIdle(&shared_state_,
320 ref->service_id(), 305 ref->service_id(),
321 define_params); 306 define_params);
322 } 307 }
323 308
324 } // namespace gpu 309 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698