| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |