OLD | NEW |
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 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 bytes_used_ -= it->second->size; | 609 bytes_used_ -= it->second->size; |
610 images_pending_deletion_.push_back(it->second->upload.image()); | 610 images_pending_deletion_.push_back(it->second->upload.image()); |
611 it->second->upload.SetImage(nullptr); | 611 it->second->upload.SetImage(nullptr); |
612 it->second->upload.budgeted = false; | 612 it->second->upload.budgeted = false; |
613 } | 613 } |
614 | 614 |
615 it = persistent_cache_.Erase(it); | 615 it = persistent_cache_.Erase(it); |
616 } | 616 } |
617 } | 617 } |
618 | 618 |
| 619 size_t GpuImageDecodeCache::GetMaximumMemoryLimit() const { |
| 620 return normal_max_cache_bytes_; |
| 621 } |
| 622 |
619 bool GpuImageDecodeCache::OnMemoryDump( | 623 bool GpuImageDecodeCache::OnMemoryDump( |
620 const base::trace_event::MemoryDumpArgs& args, | 624 const base::trace_event::MemoryDumpArgs& args, |
621 base::trace_event::ProcessMemoryDump* pmd) { | 625 base::trace_event::ProcessMemoryDump* pmd) { |
622 using base::trace_event::MemoryAllocatorDump; | 626 using base::trace_event::MemoryAllocatorDump; |
623 using base::trace_event::MemoryAllocatorDumpGuid; | 627 using base::trace_event::MemoryAllocatorDumpGuid; |
624 using base::trace_event::MemoryDumpLevelOfDetail; | 628 using base::trace_event::MemoryDumpLevelOfDetail; |
625 | 629 |
626 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | 630 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
627 "GpuImageDecodeCache::OnMemoryDump"); | 631 "GpuImageDecodeCache::OnMemoryDump"); |
628 | 632 |
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 | 1099 |
1096 switch (image_data->mode) { | 1100 switch (image_data->mode) { |
1097 case DecodedDataMode::CPU: { | 1101 case DecodedDataMode::CPU: { |
1098 SkImageInfo image_info = CreateImageInfoForDrawImage( | 1102 SkImageInfo image_info = CreateImageInfoForDrawImage( |
1099 draw_image, image_data->upload_params.fPreScaleMipLevel); | 1103 draw_image, image_data->upload_params.fPreScaleMipLevel); |
1100 // In order to match GPU scaling quality (which uses mip-maps at high | 1104 // In order to match GPU scaling quality (which uses mip-maps at high |
1101 // quality), we want to use at most medium filter quality for the | 1105 // quality), we want to use at most medium filter quality for the |
1102 // scale. | 1106 // scale. |
1103 SkPixmap image_pixmap(image_info.makeColorSpace(nullptr), | 1107 SkPixmap image_pixmap(image_info.makeColorSpace(nullptr), |
1104 backing_memory->data(), image_info.minRowBytes()); | 1108 backing_memory->data(), image_info.minRowBytes()); |
1105 // Note that scalePixels falls back to readPixels if the sale is 1x, so | 1109 // Note that scalePixels falls back to readPixels if the scale is 1x, so |
1106 // no need to special case that as an optimization. | 1110 // no need to special case that as an optimization. |
1107 if (!draw_image.image()->scalePixels( | 1111 if (!draw_image.image()->scalePixels( |
1108 image_pixmap, CalculateUploadScaleFilterQuality(draw_image), | 1112 image_pixmap, CalculateUploadScaleFilterQuality(draw_image), |
1109 SkImage::kDisallow_CachingHint)) { | 1113 SkImage::kDisallow_CachingHint)) { |
1110 DLOG(ERROR) << "scalePixels failed."; | 1114 DLOG(ERROR) << "scalePixels failed."; |
1111 backing_memory->Unlock(); | 1115 backing_memory->Unlock(); |
1112 backing_memory.reset(); | 1116 backing_memory.reset(); |
1113 } | 1117 } |
1114 break; | 1118 break; |
1115 } | 1119 } |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1339 | 1343 |
1340 void GpuImageDecodeCache::OnPurgeMemory() { | 1344 void GpuImageDecodeCache::OnPurgeMemory() { |
1341 base::AutoLock lock(lock_); | 1345 base::AutoLock lock(lock_); |
1342 // Temporary changes |memory_state_| to free up cache as much as possible. | 1346 // Temporary changes |memory_state_| to free up cache as much as possible. |
1343 base::AutoReset<base::MemoryState> reset(&memory_state_, | 1347 base::AutoReset<base::MemoryState> reset(&memory_state_, |
1344 base::MemoryState::SUSPENDED); | 1348 base::MemoryState::SUSPENDED); |
1345 EnsureCapacity(0); | 1349 EnsureCapacity(0); |
1346 } | 1350 } |
1347 | 1351 |
1348 } // namespace cc | 1352 } // namespace cc |
OLD | NEW |