| 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 1105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1116 backing_memory.reset(); | 1116 backing_memory.reset(); |
| 1117 } | 1117 } |
| 1118 break; | 1118 break; |
| 1119 } | 1119 } |
| 1120 case DecodedDataMode::GPU: { | 1120 case DecodedDataMode::GPU: { |
| 1121 // TODO(crbug.com/649167): Params should not have changed since initial | 1121 // TODO(crbug.com/649167): Params should not have changed since initial |
| 1122 // sizing. Somehow this still happens. We should investigate and re-add | 1122 // sizing. Somehow this still happens. We should investigate and re-add |
| 1123 // DCHECKs here to enforce this. | 1123 // DCHECKs here to enforce this. |
| 1124 if (!draw_image.image()->getDeferredTextureImageData( | 1124 if (!draw_image.image()->getDeferredTextureImageData( |
| 1125 *context_threadsafe_proxy_.get(), &image_data->upload_params, 1, | 1125 *context_threadsafe_proxy_.get(), &image_data->upload_params, 1, |
| 1126 backing_memory->data(), nullptr)) { | 1126 backing_memory->data(), nullptr, |
| 1127 ResourceFormatToClosestSkColorType(format_))) { |
| 1127 DLOG(ERROR) << "getDeferredTextureImageData failed despite params " | 1128 DLOG(ERROR) << "getDeferredTextureImageData failed despite params " |
| 1128 << "having validated."; | 1129 << "having validated."; |
| 1129 backing_memory->Unlock(); | 1130 backing_memory->Unlock(); |
| 1130 backing_memory.reset(); | 1131 backing_memory.reset(); |
| 1131 } | 1132 } |
| 1132 break; | 1133 break; |
| 1133 } | 1134 } |
| 1134 } | 1135 } |
| 1135 } | 1136 } |
| 1136 | 1137 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1216 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | 1217 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
| 1217 "GpuImageDecodeCache::CreateImageData"); | 1218 "GpuImageDecodeCache::CreateImageData"); |
| 1218 lock_.AssertAcquired(); | 1219 lock_.AssertAcquired(); |
| 1219 | 1220 |
| 1220 DecodedDataMode mode; | 1221 DecodedDataMode mode; |
| 1221 int upload_scale_mip_level = CalculateUploadScaleMipLevel(draw_image); | 1222 int upload_scale_mip_level = CalculateUploadScaleMipLevel(draw_image); |
| 1222 auto params = SkImage::DeferredTextureImageUsageParams( | 1223 auto params = SkImage::DeferredTextureImageUsageParams( |
| 1223 draw_image.matrix(), CalculateUploadScaleFilterQuality(draw_image), | 1224 draw_image.matrix(), CalculateUploadScaleFilterQuality(draw_image), |
| 1224 upload_scale_mip_level); | 1225 upload_scale_mip_level); |
| 1225 size_t data_size = draw_image.image()->getDeferredTextureImageData( | 1226 size_t data_size = draw_image.image()->getDeferredTextureImageData( |
| 1226 *context_threadsafe_proxy_.get(), ¶ms, 1, nullptr, nullptr); | 1227 *context_threadsafe_proxy_.get(), ¶ms, 1, nullptr, nullptr, |
| 1228 ResourceFormatToClosestSkColorType(format_)); |
| 1227 | 1229 |
| 1228 if (data_size == 0) { | 1230 if (data_size == 0) { |
| 1229 // Can't upload image, too large or other failure. Try to use SW fallback. | 1231 // Can't upload image, too large or other failure. Try to use SW fallback. |
| 1230 SkImageInfo image_info = | 1232 SkImageInfo image_info = |
| 1231 CreateImageInfoForDrawImage(draw_image, upload_scale_mip_level); | 1233 CreateImageInfoForDrawImage(draw_image, upload_scale_mip_level); |
| 1232 data_size = image_info.getSafeSize(image_info.minRowBytes()); | 1234 data_size = image_info.getSafeSize(image_info.minRowBytes()); |
| 1233 mode = DecodedDataMode::CPU; | 1235 mode = DecodedDataMode::CPU; |
| 1234 } else { | 1236 } else { |
| 1235 mode = DecodedDataMode::GPU; | 1237 mode = DecodedDataMode::GPU; |
| 1236 } | 1238 } |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1343 | 1345 |
| 1344 void GpuImageDecodeCache::OnPurgeMemory() { | 1346 void GpuImageDecodeCache::OnPurgeMemory() { |
| 1345 base::AutoLock lock(lock_); | 1347 base::AutoLock lock(lock_); |
| 1346 // Temporary changes |memory_state_| to free up cache as much as possible. | 1348 // Temporary changes |memory_state_| to free up cache as much as possible. |
| 1347 base::AutoReset<base::MemoryState> reset(&memory_state_, | 1349 base::AutoReset<base::MemoryState> reset(&memory_state_, |
| 1348 base::MemoryState::SUSPENDED); | 1350 base::MemoryState::SUSPENDED); |
| 1349 EnsureCapacity(0); | 1351 EnsureCapacity(0); |
| 1350 } | 1352 } |
| 1351 | 1353 |
| 1352 } // namespace cc | 1354 } // namespace cc |
| OLD | NEW |