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

Side by Side Diff: gpu/command_buffer/service/async_pixel_transfer_manager_idle.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_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/lazy_instance.h" 10 #include "base/lazy_instance.h"
10 #include "base/memory/weak_ptr.h" 11 #include "base/memory/weak_ptr.h"
11 #include "gpu/command_buffer/service/safe_shared_memory_pool.h" 12 #include "gpu/command_buffer/service/safe_shared_memory_pool.h"
12 #include "ui/gl/scoped_binders.h" 13 #include "ui/gl/scoped_binders.h"
13 14
14 namespace gpu { 15 namespace gpu {
15 16
16 namespace { 17 namespace {
17 18
18 base::LazyInstance<SafeSharedMemoryPool> g_safe_shared_memory_pool = 19 base::LazyInstance<SafeSharedMemoryPool> g_safe_shared_memory_pool =
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 transfer_in_progress_(false), 92 transfer_in_progress_(false),
92 define_params_(define_params), 93 define_params_(define_params),
93 shared_state_(shared_state) {} 94 shared_state_(shared_state) {}
94 95
95 AsyncPixelTransferDelegateIdle::~AsyncPixelTransferDelegateIdle() {} 96 AsyncPixelTransferDelegateIdle::~AsyncPixelTransferDelegateIdle() {}
96 97
97 void AsyncPixelTransferDelegateIdle::AsyncTexImage2D( 98 void AsyncPixelTransferDelegateIdle::AsyncTexImage2D(
98 const AsyncTexImage2DParams& tex_params, 99 const AsyncTexImage2DParams& tex_params,
99 const AsyncMemoryParams& mem_params, 100 const AsyncMemoryParams& mem_params,
100 const base::Closure& bind_callback) { 101 const base::Closure& bind_callback) {
102 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("gpu.AsyncTexImage");
101 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target); 103 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target);
102 DCHECK(mem_params.shared_memory); 104 DCHECK(mem_params.shared_memory);
103 DCHECK_LE(mem_params.shm_data_offset + mem_params.shm_data_size, 105 DCHECK_LE(mem_params.shm_data_offset + mem_params.shm_data_size,
104 mem_params.shm_size); 106 mem_params.shm_size);
105 107
106 shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task( 108 shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task(
107 id_, 109 id_,
108 base::Bind( 110 base::Bind(
109 &AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D, 111 &AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D,
110 AsWeakPtr(), 112 AsWeakPtr(),
111 tex_params, 113 tex_params,
112 mem_params, 114 mem_params,
113 bind_callback, 115 bind_callback,
114 base::Owned(new ScopedSafeSharedMemory(safe_shared_memory_pool(), 116 base::Owned(new ScopedSafeSharedMemory(safe_shared_memory_pool(),
115 mem_params.shared_memory, 117 mem_params.shared_memory,
116 mem_params.shm_size))))); 118 mem_params.shm_size)))));
117 119
118 transfer_in_progress_ = true; 120 transfer_in_progress_ = true;
119 } 121 }
120 122
121 void AsyncPixelTransferDelegateIdle::AsyncTexSubImage2D( 123 void AsyncPixelTransferDelegateIdle::AsyncTexSubImage2D(
122 const AsyncTexSubImage2DParams& tex_params, 124 const AsyncTexSubImage2DParams& tex_params,
123 const AsyncMemoryParams& mem_params) { 125 const AsyncMemoryParams& mem_params) {
126 TRACE_EVENT_SYNTHETIC_DELAY_BEGIN("gpu.AsyncTexImage");
124 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target); 127 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), tex_params.target);
125 DCHECK(mem_params.shared_memory); 128 DCHECK(mem_params.shared_memory);
126 DCHECK_LE(mem_params.shm_data_offset + mem_params.shm_data_size, 129 DCHECK_LE(mem_params.shm_data_offset + mem_params.shm_data_size,
127 mem_params.shm_size); 130 mem_params.shm_size);
128 131
129 shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task( 132 shared_state_->tasks.push_back(AsyncPixelTransferManagerIdle::Task(
130 id_, 133 id_,
131 base::Bind( 134 base::Bind(
132 &AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D, 135 &AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D,
133 AsWeakPtr(), 136 AsWeakPtr(),
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 tex_params.level, 184 tex_params.level,
182 tex_params.internal_format, 185 tex_params.internal_format,
183 tex_params.width, 186 tex_params.width,
184 tex_params.height, 187 tex_params.height,
185 tex_params.border, 188 tex_params.border,
186 tex_params.format, 189 tex_params.format,
187 tex_params.type, 190 tex_params.type,
188 data); 191 data);
189 } 192 }
190 193
194 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage");
191 transfer_in_progress_ = false; 195 transfer_in_progress_ = false;
192 shared_state_->texture_upload_count++; 196 shared_state_->texture_upload_count++;
193 shared_state_->total_texture_upload_time += 197 shared_state_->total_texture_upload_time +=
194 base::TimeTicks::HighResNow() - begin_time; 198 base::TimeTicks::HighResNow() - begin_time;
195 199
196 // The texture is already fully bound so just call it now. 200 // The texture is already fully bound so just call it now.
197 bind_callback.Run(); 201 bind_callback.Run();
198 } 202 }
199 203
200 void AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D( 204 void AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 tex_params.level, 240 tex_params.level,
237 tex_params.xoffset, 241 tex_params.xoffset,
238 tex_params.yoffset, 242 tex_params.yoffset,
239 tex_params.width, 243 tex_params.width,
240 tex_params.height, 244 tex_params.height,
241 tex_params.format, 245 tex_params.format,
242 tex_params.type, 246 tex_params.type,
243 data); 247 data);
244 } 248 }
245 249
250 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage");
246 transfer_in_progress_ = false; 251 transfer_in_progress_ = false;
247 shared_state_->texture_upload_count++; 252 shared_state_->texture_upload_count++;
248 shared_state_->total_texture_upload_time += 253 shared_state_->total_texture_upload_time +=
249 base::TimeTicks::HighResNow() - begin_time; 254 base::TimeTicks::HighResNow() - begin_time;
250 } 255 }
251 256
252 AsyncPixelTransferManagerIdle::Task::Task( 257 AsyncPixelTransferManagerIdle::Task::Task(
253 uint64 transfer_id, const base::Closure& task) 258 uint64 transfer_id, const base::Closure& task)
254 : transfer_id(transfer_id), 259 : transfer_id(transfer_id),
255 task(task) { 260 task(task) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 AsyncPixelTransferDelegate* 334 AsyncPixelTransferDelegate*
330 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl( 335 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl(
331 gles2::TextureRef* ref, 336 gles2::TextureRef* ref,
332 const AsyncTexImage2DParams& define_params) { 337 const AsyncTexImage2DParams& define_params) {
333 return new AsyncPixelTransferDelegateIdle(&shared_state_, 338 return new AsyncPixelTransferDelegateIdle(&shared_state_,
334 ref->service_id(), 339 ref->service_id(),
335 define_params); 340 define_params);
336 } 341 }
337 342
338 } // namespace gpu 343 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698