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 |