| 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/debug/trace_event_synthetic_delay.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 void AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D( | 137 void AsyncPixelTransferDelegateIdle::PerformAsyncTexImage2D( |
| 138 AsyncTexImage2DParams tex_params, | 138 AsyncTexImage2DParams tex_params, |
| 139 AsyncMemoryParams mem_params, | 139 AsyncMemoryParams mem_params, |
| 140 const base::Closure& bind_callback) { | 140 const base::Closure& bind_callback) { |
| 141 TRACE_EVENT2("gpu", "PerformAsyncTexImage2D", | 141 TRACE_EVENT2("gpu", "PerformAsyncTexImage2D", |
| 142 "width", tex_params.width, | 142 "width", tex_params.width, |
| 143 "height", tex_params.height); | 143 "height", tex_params.height); |
| 144 | 144 |
| 145 void* data = mem_params.GetDataAddress(); | 145 void* data = mem_params.GetDataAddress(); |
| 146 | 146 |
| 147 base::TimeTicks begin_time(base::TimeTicks::HighResNow()); | 147 base::TimeTicks begin_time(base::TimeTicks::Now()); |
| 148 gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id_); | 148 gfx::ScopedTextureBinder texture_binder(tex_params.target, texture_id_); |
| 149 | 149 |
| 150 { | 150 { |
| 151 TRACE_EVENT0("gpu", "glTexImage2D"); | 151 TRACE_EVENT0("gpu", "glTexImage2D"); |
| 152 glTexImage2D( | 152 glTexImage2D( |
| 153 tex_params.target, | 153 tex_params.target, |
| 154 tex_params.level, | 154 tex_params.level, |
| 155 tex_params.internal_format, | 155 tex_params.internal_format, |
| 156 tex_params.width, | 156 tex_params.width, |
| 157 tex_params.height, | 157 tex_params.height, |
| 158 tex_params.border, | 158 tex_params.border, |
| 159 tex_params.format, | 159 tex_params.format, |
| 160 tex_params.type, | 160 tex_params.type, |
| 161 data); | 161 data); |
| 162 } | 162 } |
| 163 | 163 |
| 164 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage"); | 164 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage"); |
| 165 transfer_in_progress_ = false; | 165 transfer_in_progress_ = false; |
| 166 shared_state_->texture_upload_count++; | 166 shared_state_->texture_upload_count++; |
| 167 shared_state_->total_texture_upload_time += | 167 shared_state_->total_texture_upload_time += |
| 168 base::TimeTicks::HighResNow() - begin_time; | 168 base::TimeTicks::Now() - begin_time; |
| 169 | 169 |
| 170 // The texture is already fully bound so just call it now. | 170 // The texture is already fully bound so just call it now. |
| 171 bind_callback.Run(); | 171 bind_callback.Run(); |
| 172 } | 172 } |
| 173 | 173 |
| 174 void AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D( | 174 void AsyncPixelTransferDelegateIdle::PerformAsyncTexSubImage2D( |
| 175 AsyncTexSubImage2DParams tex_params, | 175 AsyncTexSubImage2DParams tex_params, |
| 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::HighResNow()); | 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 it's a full texture update, use glTexImage2D as it's faster. | 186 // If it's a full texture update, use glTexImage2D as it's faster. |
| 187 // TODO(epenner): Make this configurable (http://crbug.com/259924) | 187 // TODO(epenner): Make this configurable (http://crbug.com/259924) |
| 188 if (tex_params.xoffset == 0 && | 188 if (tex_params.xoffset == 0 && |
| 189 tex_params.yoffset == 0 && | 189 tex_params.yoffset == 0 && |
| 190 tex_params.target == define_params_.target && | 190 tex_params.target == define_params_.target && |
| 191 tex_params.level == define_params_.level && | 191 tex_params.level == define_params_.level && |
| 192 tex_params.width == define_params_.width && | 192 tex_params.width == define_params_.width && |
| 193 tex_params.height == define_params_.height) { | 193 tex_params.height == define_params_.height) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 213 tex_params.height, | 213 tex_params.height, |
| 214 tex_params.format, | 214 tex_params.format, |
| 215 tex_params.type, | 215 tex_params.type, |
| 216 data); | 216 data); |
| 217 } | 217 } |
| 218 | 218 |
| 219 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage"); | 219 TRACE_EVENT_SYNTHETIC_DELAY_END("gpu.AsyncTexImage"); |
| 220 transfer_in_progress_ = false; | 220 transfer_in_progress_ = false; |
| 221 shared_state_->texture_upload_count++; | 221 shared_state_->texture_upload_count++; |
| 222 shared_state_->total_texture_upload_time += | 222 shared_state_->total_texture_upload_time += |
| 223 base::TimeTicks::HighResNow() - begin_time; | 223 base::TimeTicks::Now() - begin_time; |
| 224 } | 224 } |
| 225 | 225 |
| 226 AsyncPixelTransferManagerIdle::Task::Task( | 226 AsyncPixelTransferManagerIdle::Task::Task( |
| 227 uint64 transfer_id, | 227 uint64 transfer_id, |
| 228 AsyncPixelTransferDelegate* delegate, | 228 AsyncPixelTransferDelegate* delegate, |
| 229 const base::Closure& task) | 229 const base::Closure& task) |
| 230 : transfer_id(transfer_id), | 230 : transfer_id(transfer_id), |
| 231 delegate(delegate), | 231 delegate(delegate), |
| 232 task(task) { | 232 task(task) { |
| 233 } | 233 } |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 AsyncPixelTransferDelegate* | 313 AsyncPixelTransferDelegate* |
| 314 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl( | 314 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl( |
| 315 gles2::TextureRef* ref, | 315 gles2::TextureRef* ref, |
| 316 const AsyncTexImage2DParams& define_params) { | 316 const AsyncTexImage2DParams& define_params) { |
| 317 return new AsyncPixelTransferDelegateIdle(&shared_state_, | 317 return new AsyncPixelTransferDelegateIdle(&shared_state_, |
| 318 ref->service_id(), | 318 ref->service_id(), |
| 319 define_params); | 319 define_params); |
| 320 } | 320 } |
| 321 | 321 |
| 322 } // namespace gpu | 322 } // namespace gpu |
| OLD | NEW |