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

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

Issue 2939413002: Reland: Decode/Upload GPU images to tile color type (support 4444) (Closed)
Patch Set: 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1105 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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(), &params, 1, nullptr, nullptr); 1227 *context_threadsafe_proxy_.get(), &params, 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
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
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698