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

Side by Side Diff: cc/tiles/gpu_image_decode_cache.cc

Issue 2945813002: cc: Interface to evict images from cc image decode cache. (Closed)
Patch Set: update Created 3 years, 6 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "cc/tiles/gpu_image_decode_cache.h" 5 #include "cc/tiles/gpu_image_decode_cache.h"
6 6
7 #include <inttypes.h> 7 #include <inttypes.h>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/debug/alias.h" 10 #include "base/debug/alias.h"
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 } 616 }
617 617
618 it = persistent_cache_.Erase(it); 618 it = persistent_cache_.Erase(it);
619 } 619 }
620 } 620 }
621 621
622 size_t GpuImageDecodeCache::GetMaximumMemoryLimitBytes() const { 622 size_t GpuImageDecodeCache::GetMaximumMemoryLimitBytes() const {
623 return normal_max_cache_bytes_; 623 return normal_max_cache_bytes_;
624 } 624 }
625 625
626 void GpuImageDecodeCache::NotifyImageUnused(uint32_t skimage_id) {
627 auto it = persistent_cache_.Peek(skimage_id);
628 if (it != persistent_cache_.end() && !it->second->decode.is_locked()) {
vmpstr 2017/06/19 16:34:41 I _believe_ you can still mark things as orphaned
ericrk 2017/06/19 17:09:30 Agreed - you shouldn't need to check is_locked her
sohan 2017/06/20 13:31:39 Done.
629 if (it->second->decode.ref_count != 0 ||
630 it->second->upload.ref_count != 0) {
631 it->second->is_orphaned = true;
632 } else if (it->second->upload.image()) {
633 bytes_used_ -= it->second->size;
634 images_pending_deletion_.push_back(it->second->upload.image());
635 it->second->upload.SetImage(nullptr);
636 it->second->upload.budgeted = false;
637 }
638 persistent_cache_.Erase(it);
639 }
640 }
641
626 bool GpuImageDecodeCache::OnMemoryDump( 642 bool GpuImageDecodeCache::OnMemoryDump(
627 const base::trace_event::MemoryDumpArgs& args, 643 const base::trace_event::MemoryDumpArgs& args,
628 base::trace_event::ProcessMemoryDump* pmd) { 644 base::trace_event::ProcessMemoryDump* pmd) {
629 using base::trace_event::MemoryAllocatorDump; 645 using base::trace_event::MemoryAllocatorDump;
630 using base::trace_event::MemoryAllocatorDumpGuid; 646 using base::trace_event::MemoryAllocatorDumpGuid;
631 using base::trace_event::MemoryDumpLevelOfDetail; 647 using base::trace_event::MemoryDumpLevelOfDetail;
632 648
633 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), 649 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"),
634 "GpuImageDecodeCache::OnMemoryDump"); 650 "GpuImageDecodeCache::OnMemoryDump");
635 651
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 1362
1347 void GpuImageDecodeCache::OnPurgeMemory() { 1363 void GpuImageDecodeCache::OnPurgeMemory() {
1348 base::AutoLock lock(lock_); 1364 base::AutoLock lock(lock_);
1349 // Temporary changes |memory_state_| to free up cache as much as possible. 1365 // Temporary changes |memory_state_| to free up cache as much as possible.
1350 base::AutoReset<base::MemoryState> reset(&memory_state_, 1366 base::AutoReset<base::MemoryState> reset(&memory_state_,
1351 base::MemoryState::SUSPENDED); 1367 base::MemoryState::SUSPENDED);
1352 EnsureCapacity(0); 1368 EnsureCapacity(0);
1353 } 1369 }
1354 1370
1355 } // namespace cc 1371 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698