OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "content/browser/gpu/shader_disk_cache.h" | 5 #include "content/browser/gpu/shader_disk_cache.h" |
6 | 6 |
7 #include "base/profiler/scoped_tracker.h" | 7 #include "base/profiler/scoped_tracker.h" |
8 #include "base/threading/thread_checker.h" | 8 #include "base/threading/thread_checker.h" |
9 #include "content/browser/gpu/gpu_process_host.h" | 9 #include "content/browser/gpu/gpu_process_host.h" |
10 #include "content/public/browser/browser_thread.h" | 10 #include "content/public/browser/browser_thread.h" |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 break; | 289 break; |
290 default: | 290 default: |
291 NOTREACHED(); // Invalid state for read helper | 291 NOTREACHED(); // Invalid state for read helper |
292 rv = net::ERR_FAILED; | 292 rv = net::ERR_FAILED; |
293 break; | 293 break; |
294 } | 294 } |
295 } while (rv != net::ERR_IO_PENDING); | 295 } while (rv != net::ERR_IO_PENDING); |
296 } | 296 } |
297 | 297 |
298 int ShaderDiskReadHelper::OpenNextEntry() { | 298 int ShaderDiskReadHelper::OpenNextEntry() { |
| 299 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed. |
| 300 tracked_objects::ScopedTracker tracking_profile( |
| 301 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 302 "422516 ShaderDiskReadHelper::OpenNextEntry")); |
| 303 |
299 DCHECK(CalledOnValidThread()); | 304 DCHECK(CalledOnValidThread()); |
300 // Called through OnOpComplete, so we know |cache_| is valid. | 305 // Called through OnOpComplete, so we know |cache_| is valid. |
301 op_type_ = OPEN_NEXT_COMPLETE; | 306 op_type_ = OPEN_NEXT_COMPLETE; |
302 if (!iter_) | 307 if (!iter_) |
303 iter_ = cache_->backend()->CreateIterator(); | 308 iter_ = cache_->backend()->CreateIterator(); |
304 return iter_->OpenNextEntry( | 309 return iter_->OpenNextEntry( |
305 &entry_, base::Bind(&ShaderDiskReadHelper::OnOpComplete, this)); | 310 &entry_, base::Bind(&ShaderDiskReadHelper::OnOpComplete, this)); |
306 } | 311 } |
307 | 312 |
308 int ShaderDiskReadHelper::OpenNextEntryComplete(int rv) { | 313 int ShaderDiskReadHelper::OpenNextEntryComplete(int rv) { |
| 314 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed. |
| 315 tracked_objects::ScopedTracker tracking_profile( |
| 316 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 317 "422516 ShaderDiskReadHelper::OpenNextEntryComplete")); |
| 318 |
309 DCHECK(CalledOnValidThread()); | 319 DCHECK(CalledOnValidThread()); |
310 // Called through OnOpComplete, so we know |cache_| is valid. | 320 // Called through OnOpComplete, so we know |cache_| is valid. |
311 if (rv == net::ERR_FAILED) { | 321 if (rv == net::ERR_FAILED) { |
312 iter_.reset(); | 322 iter_.reset(); |
313 op_type_ = ITERATION_FINISHED; | 323 op_type_ = ITERATION_FINISHED; |
314 return net::OK; | 324 return net::OK; |
315 } | 325 } |
316 | 326 |
317 if (rv < 0) | 327 if (rv < 0) |
318 return rv; | 328 return rv; |
319 | 329 |
320 op_type_ = READ_COMPLETE; | 330 op_type_ = READ_COMPLETE; |
321 buf_ = new net::IOBufferWithSize(entry_->GetDataSize(1)); | 331 buf_ = new net::IOBufferWithSize(entry_->GetDataSize(1)); |
322 return entry_->ReadData( | 332 return entry_->ReadData( |
323 1, | 333 1, |
324 0, | 334 0, |
325 buf_.get(), | 335 buf_.get(), |
326 buf_->size(), | 336 buf_->size(), |
327 base::Bind(&ShaderDiskReadHelper::OnOpComplete, this)); | 337 base::Bind(&ShaderDiskReadHelper::OnOpComplete, this)); |
328 } | 338 } |
329 | 339 |
330 int ShaderDiskReadHelper::ReadComplete(int rv) { | 340 int ShaderDiskReadHelper::ReadComplete(int rv) { |
| 341 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed. |
| 342 tracked_objects::ScopedTracker tracking_profile( |
| 343 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 344 "422516 ShaderDiskReadHelper::ReadComplete")); |
| 345 |
331 DCHECK(CalledOnValidThread()); | 346 DCHECK(CalledOnValidThread()); |
332 // Called through OnOpComplete, so we know |cache_| is valid. | 347 // Called through OnOpComplete, so we know |cache_| is valid. |
333 if (rv && rv == buf_->size()) { | 348 if (rv && rv == buf_->size()) { |
334 GpuProcessHost* host = GpuProcessHost::FromID(host_id_); | 349 GpuProcessHost* host = GpuProcessHost::FromID(host_id_); |
335 if (host) | 350 if (host) |
336 host->LoadedShader(entry_->GetKey(), std::string(buf_->data(), | 351 host->LoadedShader(entry_->GetKey(), std::string(buf_->data(), |
337 buf_->size())); | 352 buf_->size())); |
338 } | 353 } |
339 | 354 |
340 buf_ = NULL; | 355 buf_ = NULL; |
341 entry_->Close(); | 356 entry_->Close(); |
342 entry_ = NULL; | 357 entry_ = NULL; |
343 | 358 |
344 op_type_ = OPEN_NEXT; | 359 op_type_ = OPEN_NEXT; |
345 return net::OK; | 360 return net::OK; |
346 } | 361 } |
347 | 362 |
348 int ShaderDiskReadHelper::IterationComplete(int rv) { | 363 int ShaderDiskReadHelper::IterationComplete(int rv) { |
| 364 // TODO(vadimt): Remove ScopedTracker below once crbug.com/422516 is fixed. |
| 365 tracked_objects::ScopedTracker tracking_profile( |
| 366 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 367 "422516 ShaderDiskReadHelper::IterationComplete")); |
| 368 |
349 DCHECK(CalledOnValidThread()); | 369 DCHECK(CalledOnValidThread()); |
350 // Called through OnOpComplete, so we know |cache_| is valid. | 370 // Called through OnOpComplete, so we know |cache_| is valid. |
351 iter_.reset(); | 371 iter_.reset(); |
352 op_type_ = TERMINATE; | 372 op_type_ = TERMINATE; |
353 return net::OK; | 373 return net::OK; |
354 } | 374 } |
355 | 375 |
356 ShaderDiskReadHelper::~ShaderDiskReadHelper() { | 376 ShaderDiskReadHelper::~ShaderDiskReadHelper() { |
357 if (entry_) { | 377 if (entry_) { |
358 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 378 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 const net::CompletionCallback& callback) { | 642 const net::CompletionCallback& callback) { |
623 if (entry_map_.empty()) { | 643 if (entry_map_.empty()) { |
624 return net::OK; | 644 return net::OK; |
625 } | 645 } |
626 cache_complete_callback_ = callback; | 646 cache_complete_callback_ = callback; |
627 return net::ERR_IO_PENDING; | 647 return net::ERR_IO_PENDING; |
628 } | 648 } |
629 | 649 |
630 } // namespace content | 650 } // namespace content |
631 | 651 |
OLD | NEW |