| 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/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
| 10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 AsyncMemoryParams mem_params) { | 176 AsyncMemoryParams mem_params) { |
| 177 TRACE_EVENT2("gpu", "PerformAsyncTexSubImage2D", | 177 TRACE_EVENT2("gpu", "PerformAsyncTexSubImage2D", |
| 178 "width", tex_params.width, | 178 "width", tex_params.width, |
| 179 "height", tex_params.height); | 179 "height", tex_params.height); |
| 180 | 180 |
| 181 void* data = mem_params.GetDataAddress(); | 181 void* data = mem_params.GetDataAddress(); |
| 182 | 182 |
| 183 base::TimeTicks begin_time(base::TimeTicks::Now()); | 183 base::TimeTicks begin_time(base::TimeTicks::Now()); |
| 184 gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id_); | 184 gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id_); |
| 185 | 185 |
| 186 if (shared_state_->use_teximage2d_over_texsubimage2d && | 186 // If it's a full texture update, use glTexImage2D as it's faster. |
| 187 tex_params.xoffset == 0 && | 187 // TODO(epenner): Make this configurable (http://crbug.com/259924) |
| 188 if (tex_params.xoffset == 0 && |
| 188 tex_params.yoffset == 0 && | 189 tex_params.yoffset == 0 && |
| 189 tex_params.target == define_params_.target && | 190 tex_params.target == define_params_.target && |
| 190 tex_params.level == define_params_.level && | 191 tex_params.level == define_params_.level && |
| 191 tex_params.width == define_params_.width && | 192 tex_params.width == define_params_.width && |
| 192 tex_params.height == define_params_.height) { | 193 tex_params.height == define_params_.height) { |
| 193 TRACE_EVENT0("gpu", "glTexImage2D"); | 194 TRACE_EVENT0("gpu", "glTexImage2D"); |
| 194 glTexImage2D( | 195 glTexImage2D( |
| 195 define_params_.target, | 196 define_params_.target, |
| 196 define_params_.level, | 197 define_params_.level, |
| 197 define_params_.internal_format, | 198 define_params_.internal_format, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 226 uint64 transfer_id, | 227 uint64 transfer_id, |
| 227 AsyncPixelTransferDelegate* delegate, | 228 AsyncPixelTransferDelegate* delegate, |
| 228 const base::Closure& task) | 229 const base::Closure& task) |
| 229 : transfer_id(transfer_id), | 230 : transfer_id(transfer_id), |
| 230 delegate(delegate), | 231 delegate(delegate), |
| 231 task(task) { | 232 task(task) { |
| 232 } | 233 } |
| 233 | 234 |
| 234 AsyncPixelTransferManagerIdle::Task::~Task() {} | 235 AsyncPixelTransferManagerIdle::Task::~Task() {} |
| 235 | 236 |
| 236 AsyncPixelTransferManagerIdle::SharedState::SharedState( | 237 AsyncPixelTransferManagerIdle::SharedState::SharedState() |
| 237 bool use_teximage2d_over_texsubimage2d) | 238 : texture_upload_count(0) {} |
| 238 : use_teximage2d_over_texsubimage2d(use_teximage2d_over_texsubimage2d), | |
| 239 texture_upload_count(0) { | |
| 240 } | |
| 241 | 239 |
| 242 AsyncPixelTransferManagerIdle::SharedState::~SharedState() {} | 240 AsyncPixelTransferManagerIdle::SharedState::~SharedState() {} |
| 243 | 241 |
| 244 void AsyncPixelTransferManagerIdle::SharedState::ProcessNotificationTasks() { | 242 void AsyncPixelTransferManagerIdle::SharedState::ProcessNotificationTasks() { |
| 245 while (!tasks.empty()) { | 243 while (!tasks.empty()) { |
| 246 // Stop when we reach a pixel transfer task. | 244 // Stop when we reach a pixel transfer task. |
| 247 if (tasks.front().transfer_id) | 245 if (tasks.front().transfer_id) |
| 248 return; | 246 return; |
| 249 | 247 |
| 250 tasks.front().task.Run(); | 248 tasks.front().task.Run(); |
| 251 tasks.pop_front(); | 249 tasks.pop_front(); |
| 252 } | 250 } |
| 253 } | 251 } |
| 254 | 252 |
| 255 AsyncPixelTransferManagerIdle::AsyncPixelTransferManagerIdle( | 253 AsyncPixelTransferManagerIdle::AsyncPixelTransferManagerIdle() |
| 256 bool use_teximage2d_over_texsubimage2d) | 254 : shared_state_() { |
| 257 : shared_state_(use_teximage2d_over_texsubimage2d) { | |
| 258 } | 255 } |
| 259 | 256 |
| 260 AsyncPixelTransferManagerIdle::~AsyncPixelTransferManagerIdle() {} | 257 AsyncPixelTransferManagerIdle::~AsyncPixelTransferManagerIdle() {} |
| 261 | 258 |
| 262 void AsyncPixelTransferManagerIdle::BindCompletedAsyncTransfers() { | 259 void AsyncPixelTransferManagerIdle::BindCompletedAsyncTransfers() { |
| 263 // Everything is already bound. | 260 // Everything is already bound. |
| 264 } | 261 } |
| 265 | 262 |
| 266 void AsyncPixelTransferManagerIdle::AsyncNotifyCompletion( | 263 void AsyncPixelTransferManagerIdle::AsyncNotifyCompletion( |
| 267 const AsyncMemoryParams& mem_params, | 264 const AsyncMemoryParams& mem_params, |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 AsyncPixelTransferDelegate* | 313 AsyncPixelTransferDelegate* |
| 317 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl( | 314 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl( |
| 318 gles2::TextureRef* ref, | 315 gles2::TextureRef* ref, |
| 319 const AsyncTexImage2DParams& define_params) { | 316 const AsyncTexImage2DParams& define_params) { |
| 320 return new AsyncPixelTransferDelegateIdle(&shared_state_, | 317 return new AsyncPixelTransferDelegateIdle(&shared_state_, |
| 321 ref->service_id(), | 318 ref->service_id(), |
| 322 define_params); | 319 define_params); |
| 323 } | 320 } |
| 324 | 321 |
| 325 } // namespace gpu | 322 } // namespace gpu |
| OLD | NEW |