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

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: Created 7 years 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 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 } 162 }
162 163
163 void AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D( 164 void AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D(
164 AsyncTexImage2DParams tex_params, 165 AsyncTexImage2DParams tex_params,
165 AsyncMemoryParams mem_params, 166 AsyncMemoryParams mem_params,
166 const base::Closure& bind_callback, 167 const base::Closure& bind_callback,
167 ScopedSafeSharedMemory* safe_shared_memory) { 168 ScopedSafeSharedMemory* safe_shared_memory) {
168 TRACE_EVENT2("gpu", "PerformAsyncTexImage2D", 169 TRACE_EVENT2("gpu", "PerformAsyncTexImage2D",
169 "width", tex_params.width, 170 "width", tex_params.width,
170 "height", tex_params.height); 171 "height", tex_params.height);
172 TRACE_EVENT_SYNTHETIC_DELAY_ACTIVATE("gpu.AsyncTexImage");
171 173
172 void* data = GetAddress(safe_shared_memory, mem_params); 174 void* data = GetAddress(safe_shared_memory, mem_params);
173 175
174 base::TimeTicks begin_time(base::TimeTicks::HighResNow()); 176 base::TimeTicks begin_time(base::TimeTicks::HighResNow());
175 gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id_); 177 gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id_);
176 178
177 { 179 {
178 TRACE_EVENT0("gpu", "glTexImage2D"); 180 TRACE_EVENT0("gpu", "glTexImage2D");
179 glTexImage2D( 181 glTexImage2D(
180 tex_params.target, 182 tex_params.target,
(...skipping 16 matching lines...) Expand all
197 bind_callback.Run(); 199 bind_callback.Run();
198 } 200 }
199 201
200 void AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D( 202 void AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D(
201 AsyncTexSubImage2DParams tex_params, 203 AsyncTexSubImage2DParams tex_params,
202 AsyncMemoryParams mem_params, 204 AsyncMemoryParams mem_params,
203 ScopedSafeSharedMemory* safe_shared_memory) { 205 ScopedSafeSharedMemory* safe_shared_memory) {
204 TRACE_EVENT2("gpu", "PerformAsyncTexSubImage2D", 206 TRACE_EVENT2("gpu", "PerformAsyncTexSubImage2D",
205 "width", tex_params.width, 207 "width", tex_params.width,
206 "height", tex_params.height); 208 "height", tex_params.height);
209 TRACE_EVENT_SYNTHETIC_DELAY_ACTIVATE("gpu.AsyncTexImage");
207 210
208 void* data = GetAddress(safe_shared_memory, mem_params); 211 void* data = GetAddress(safe_shared_memory, mem_params);
209 212
210 base::TimeTicks begin_time(base::TimeTicks::HighResNow()); 213 base::TimeTicks begin_time(base::TimeTicks::HighResNow());
211 gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id_); 214 gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id_);
212 215
213 // If it's a full texture update, use glTexImage2D as it's faster. 216 // If it's a full texture update, use glTexImage2D as it's faster.
214 // TODO(epenner): Make this configurable (http://crbug.com/259924) 217 // TODO(epenner): Make this configurable (http://crbug.com/259924)
215 if (tex_params.xoffset == 0 && 218 if (tex_params.xoffset == 0 &&
216 tex_params.yoffset == 0 && 219 tex_params.yoffset == 0 &&
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 315
313 void AsyncPixelTransferManagerIdle::ProcessMorePendingTransfers() { 316 void AsyncPixelTransferManagerIdle::ProcessMorePendingTransfers() {
314 if (shared_state_.tasks.empty()) 317 if (shared_state_.tasks.empty())
315 return; 318 return;
316 319
317 // First task should always be a pixel transfer task. 320 // First task should always be a pixel transfer task.
318 DCHECK(shared_state_.tasks.front().transfer_id); 321 DCHECK(shared_state_.tasks.front().transfer_id);
319 shared_state_.tasks.front().task.Run(); 322 shared_state_.tasks.front().task.Run();
320 shared_state_.tasks.pop_front(); 323 shared_state_.tasks.pop_front();
321 324
325 if (shared_state_.tasks.size() == 1)
326 TRACE_EVENT_SYNTHETIC_DELAY_APPLY("gpu.AsyncTexImage");
327
322 shared_state_.ProcessNotificationTasks(); 328 shared_state_.ProcessNotificationTasks();
323 } 329 }
324 330
325 bool AsyncPixelTransferManagerIdle::NeedsProcessMorePendingTransfers() { 331 bool AsyncPixelTransferManagerIdle::NeedsProcessMorePendingTransfers() {
326 return !shared_state_.tasks.empty(); 332 return !shared_state_.tasks.empty();
327 } 333 }
328 334
329 AsyncPixelTransferDelegate* 335 AsyncPixelTransferDelegate*
330 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl( 336 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl(
331 gles2::TextureRef* ref, 337 gles2::TextureRef* ref,
332 const AsyncTexImage2DParams& define_params) { 338 const AsyncTexImage2DParams& define_params) {
333 return new AsyncPixelTransferDelegateIdle(&shared_state_, 339 return new AsyncPixelTransferDelegateIdle(&shared_state_,
334 ref->service_id(), 340 ref->service_id(),
335 define_params); 341 define_params);
336 } 342 }
337 343
338 } // namespace gpu 344 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698