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

Side by Side Diff: gpu/command_buffer/service/async_pixel_transfer_manager_share_group.cc

Issue 83183005: Add synthetic delay points for latency testing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Fixed PerfRasterWorkerPool. Created 6 years, 11 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_share_group.h" 5 #include "gpu/command_buffer/service/async_pixel_transfer_manager_share_group.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
11 #include "base/debug/trace_event_synthetic_delay.h"
11 #include "base/lazy_instance.h" 12 #include "base/lazy_instance.h"
12 #include "base/logging.h" 13 #include "base/logging.h"
13 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
14 #include "base/memory/weak_ptr.h" 15 #include "base/memory/weak_ptr.h"
15 #include "base/synchronization/cancellation_flag.h" 16 #include "base/synchronization/cancellation_flag.h"
16 #include "base/synchronization/lock.h" 17 #include "base/synchronization/lock.h"
17 #include "base/synchronization/waitable_event.h" 18 #include "base/synchronization/waitable_event.h"
18 #include "base/threading/thread.h" 19 #include "base/threading/thread.h"
19 #include "base/threading/thread_checker.h" 20 #include "base/threading/thread_checker.h"
20 #include "gpu/command_buffer/service/async_pixel_transfer_delegate.h" 21 #include "gpu/command_buffer/service/async_pixel_transfer_delegate.h"
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 if (pending_upload_task_.get()) 245 if (pending_upload_task_.get())
245 pending_upload_task_->Cancel(); 246 pending_upload_task_->Cancel();
246 pending_upload_task_ = NULL; 247 pending_upload_task_ = NULL;
247 } 248 }
248 249
249 void ScheduleAsyncTexImage2D( 250 void ScheduleAsyncTexImage2D(
250 const AsyncTexImage2DParams tex_params, 251 const AsyncTexImage2DParams tex_params,
251 const AsyncMemoryParams mem_params, 252 const AsyncMemoryParams mem_params,
252 scoped_refptr<AsyncPixelTransferUploadStats> texture_upload_stats, 253 scoped_refptr<AsyncPixelTransferUploadStats> texture_upload_stats,
253 const base::Closure& bind_callback) { 254 const base::Closure& bind_callback) {
255 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("gpu.AsyncTexImage");
254 pending_upload_task_ = new PendingTask(base::Bind( 256 pending_upload_task_ = new PendingTask(base::Bind(
255 &TransferStateInternal::PerformAsyncTexImage2D, 257 &TransferStateInternal::PerformAsyncTexImage2D,
256 this, 258 this,
257 tex_params, 259 tex_params,
258 mem_params, 260 mem_params,
259 // Duplicate the shared memory so there is no way we can get 261 // Duplicate the shared memory so there is no way we can get
260 // a use-after-free of the raw pixels. 262 // a use-after-free of the raw pixels.
261 base::Owned(new ScopedSafeSharedMemory(safe_shared_memory_pool(), 263 base::Owned(new ScopedSafeSharedMemory(safe_shared_memory_pool(),
262 mem_params.shared_memory, 264 mem_params.shared_memory,
263 mem_params.shm_size)), 265 mem_params.shm_size)),
264 texture_upload_stats)); 266 texture_upload_stats));
265 transfer_message_loop_proxy()->PostTask( 267 transfer_message_loop_proxy()->PostTask(
266 FROM_HERE, 268 FROM_HERE,
267 base::Bind( 269 base::Bind(
268 &PendingTask::BindAndRun, pending_upload_task_, texture_id_)); 270 &PendingTask::BindAndRun, pending_upload_task_, texture_id_));
269 271
270 // Save the late bind callback, so we can notify the client when it is 272 // Save the late bind callback, so we can notify the client when it is
271 // bound. 273 // bound.
272 bind_callback_ = bind_callback; 274 bind_callback_ = bind_callback;
273 } 275 }
274 276
275 void ScheduleAsyncTexSubImage2D( 277 void ScheduleAsyncTexSubImage2D(
276 AsyncTexSubImage2DParams tex_params, 278 AsyncTexSubImage2DParams tex_params,
277 AsyncMemoryParams mem_params, 279 AsyncMemoryParams mem_params,
278 scoped_refptr<AsyncPixelTransferUploadStats> texture_upload_stats) { 280 scoped_refptr<AsyncPixelTransferUploadStats> texture_upload_stats) {
281 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("gpu.AsyncTexImage");
279 pending_upload_task_ = new PendingTask(base::Bind( 282 pending_upload_task_ = new PendingTask(base::Bind(
280 &TransferStateInternal::PerformAsyncTexSubImage2D, 283 &TransferStateInternal::PerformAsyncTexSubImage2D,
281 this, 284 this,
282 tex_params, 285 tex_params,
283 mem_params, 286 mem_params,
284 base::Owned(new ScopedSafeSharedMemory(safe_shared_memory_pool(), 287 base::Owned(new ScopedSafeSharedMemory(safe_shared_memory_pool(),
285 mem_params.shared_memory, 288 mem_params.shared_memory,
286 mem_params.shm_size)), 289 mem_params.shm_size)),
287 texture_upload_stats)); 290 texture_upload_stats));
288 transfer_message_loop_proxy()->PostTask( 291 transfer_message_loop_proxy()->PostTask(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 TRACE_EVENT0("gpu", "glTexImage2D"); 324 TRACE_EVENT0("gpu", "glTexImage2D");
322 glTexImage2D(GL_TEXTURE_2D, 325 glTexImage2D(GL_TEXTURE_2D,
323 tex_params.level, 326 tex_params.level,
324 tex_params.internal_format, 327 tex_params.internal_format,
325 tex_params.width, 328 tex_params.width,
326 tex_params.height, 329 tex_params.height,
327 tex_params.border, 330 tex_params.border,
328 tex_params.format, 331 tex_params.format,
329 tex_params.type, 332 tex_params.type,
330 data); 333 data);
334 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage");
331 } 335 }
332 336
333 if (texture_upload_stats.get()) { 337 if (texture_upload_stats.get()) {
334 texture_upload_stats->AddUpload(base::TimeTicks::HighResNow() - 338 texture_upload_stats->AddUpload(base::TimeTicks::HighResNow() -
335 begin_time); 339 begin_time);
336 } 340 }
337 } 341 }
338 342
339 void PerformAsyncTexSubImage2D( 343 void PerformAsyncTexSubImage2D(
340 AsyncTexSubImage2DParams tex_params, 344 AsyncTexSubImage2DParams tex_params,
(...skipping 19 matching lines...) Expand all
360 TRACE_EVENT0("gpu", "glTexSubImage2D"); 364 TRACE_EVENT0("gpu", "glTexSubImage2D");
361 glTexSubImage2D(GL_TEXTURE_2D, 365 glTexSubImage2D(GL_TEXTURE_2D,
362 tex_params.level, 366 tex_params.level,
363 tex_params.xoffset, 367 tex_params.xoffset,
364 tex_params.yoffset, 368 tex_params.yoffset,
365 tex_params.width, 369 tex_params.width,
366 tex_params.height, 370 tex_params.height,
367 tex_params.format, 371 tex_params.format,
368 tex_params.type, 372 tex_params.type,
369 data); 373 data);
374 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage");
370 } 375 }
371 376
372 if (texture_upload_stats.get()) { 377 if (texture_upload_stats.get()) {
373 texture_upload_stats->AddUpload(base::TimeTicks::HighResNow() - 378 texture_upload_stats->AddUpload(base::TimeTicks::HighResNow() -
374 begin_time); 379 begin_time);
375 } 380 }
376 } 381 }
377 382
378 scoped_refptr<PendingTask> pending_upload_task_; 383 scoped_refptr<PendingTask> pending_upload_task_;
379 384
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 575
571 AsyncPixelTransferDelegate* 576 AsyncPixelTransferDelegate*
572 AsyncPixelTransferManagerShareGroup::CreatePixelTransferDelegateImpl( 577 AsyncPixelTransferManagerShareGroup::CreatePixelTransferDelegateImpl(
573 gles2::TextureRef* ref, 578 gles2::TextureRef* ref,
574 const AsyncTexImage2DParams& define_params) { 579 const AsyncTexImage2DParams& define_params) {
575 return new AsyncPixelTransferDelegateShareGroup( 580 return new AsyncPixelTransferDelegateShareGroup(
576 &shared_state_, ref->service_id(), define_params); 581 &shared_state_, ref->service_id(), define_params);
577 } 582 }
578 583
579 } // namespace gpu 584 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc ('k') | gpu/command_buffer/service/gles2_cmd_decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698