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

Side by Side Diff: gpu/command_buffer/service/async_pixel_transfer_manager_idle.cc

Issue 769703005: Move AW renderer compositor context to gpu thread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 10 months 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
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/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
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 it's a full texture update, use glTexImage2D as it's faster. 186 if (shared_state_->use_teximage2d_over_texsubimage2d &&
187 // TODO(epenner): Make this configurable (http://crbug.com/259924) 187 tex_params.xoffset == 0 &&
188 if (tex_params.xoffset == 0 &&
189 tex_params.yoffset == 0 && 188 tex_params.yoffset == 0 &&
190 tex_params.target == define_params_.target && 189 tex_params.target == define_params_.target &&
191 tex_params.level == define_params_.level && 190 tex_params.level == define_params_.level &&
192 tex_params.width == define_params_.width && 191 tex_params.width == define_params_.width &&
193 tex_params.height == define_params_.height) { 192 tex_params.height == define_params_.height) {
194 TRACE_EVENT0("gpu", "glTexImage2D"); 193 TRACE_EVENT0("gpu", "glTexImage2D");
195 glTexImage2D( 194 glTexImage2D(
196 define_params_.target, 195 define_params_.target,
197 define_params_.level, 196 define_params_.level,
198 define_params_.internal_format, 197 define_params_.internal_format,
(...skipping 28 matching lines...) Expand all
227 uint64 transfer_id, 226 uint64 transfer_id,
228 AsyncPixelTransferDelegate* delegate, 227 AsyncPixelTransferDelegate* delegate,
229 const base::Closure& task) 228 const base::Closure& task)
230 : transfer_id(transfer_id), 229 : transfer_id(transfer_id),
231 delegate(delegate), 230 delegate(delegate),
232 task(task) { 231 task(task) {
233 } 232 }
234 233
235 AsyncPixelTransferManagerIdle::Task::~Task() {} 234 AsyncPixelTransferManagerIdle::Task::~Task() {}
236 235
237 AsyncPixelTransferManagerIdle::SharedState::SharedState() 236 AsyncPixelTransferManagerIdle::SharedState::SharedState(
238 : texture_upload_count(0) {} 237 bool use_teximage2d_over_texsubimage2d)
238 : use_teximage2d_over_texsubimage2d(use_teximage2d_over_texsubimage2d),
239 texture_upload_count(0) {
240 }
239 241
240 AsyncPixelTransferManagerIdle::SharedState::~SharedState() {} 242 AsyncPixelTransferManagerIdle::SharedState::~SharedState() {}
241 243
242 void AsyncPixelTransferManagerIdle::SharedState::ProcessNotificationTasks() { 244 void AsyncPixelTransferManagerIdle::SharedState::ProcessNotificationTasks() {
243 while (!tasks.empty()) { 245 while (!tasks.empty()) {
244 // Stop when we reach a pixel transfer task. 246 // Stop when we reach a pixel transfer task.
245 if (tasks.front().transfer_id) 247 if (tasks.front().transfer_id)
246 return; 248 return;
247 249
248 tasks.front().task.Run(); 250 tasks.front().task.Run();
249 tasks.pop_front(); 251 tasks.pop_front();
250 } 252 }
251 } 253 }
252 254
253 AsyncPixelTransferManagerIdle::AsyncPixelTransferManagerIdle() 255 AsyncPixelTransferManagerIdle::AsyncPixelTransferManagerIdle(
254 : shared_state_() { 256 bool use_teximage2d_over_texsubimage2d)
257 : shared_state_(use_teximage2d_over_texsubimage2d) {
255 } 258 }
256 259
257 AsyncPixelTransferManagerIdle::~AsyncPixelTransferManagerIdle() {} 260 AsyncPixelTransferManagerIdle::~AsyncPixelTransferManagerIdle() {}
258 261
259 void AsyncPixelTransferManagerIdle::BindCompletedAsyncTransfers() { 262 void AsyncPixelTransferManagerIdle::BindCompletedAsyncTransfers() {
260 // Everything is already bound. 263 // Everything is already bound.
261 } 264 }
262 265
263 void AsyncPixelTransferManagerIdle::AsyncNotifyCompletion( 266 void AsyncPixelTransferManagerIdle::AsyncNotifyCompletion(
264 const AsyncMemoryParams& mem_params, 267 const AsyncMemoryParams& mem_params,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 AsyncPixelTransferDelegate* 316 AsyncPixelTransferDelegate*
314 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl( 317 AsyncPixelTransferManagerIdle::CreatePixelTransferDelegateImpl(
315 gles2::TextureRef* ref, 318 gles2::TextureRef* ref,
316 const AsyncTexImage2DParams& define_params) { 319 const AsyncTexImage2DParams& define_params) {
317 return new AsyncPixelTransferDelegateIdle(&shared_state_, 320 return new AsyncPixelTransferDelegateIdle(&shared_state_,
318 ref->service_id(), 321 ref->service_id(),
319 define_params); 322 define_params);
320 } 323 }
321 324
322 } // namespace gpu 325 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698