OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkBitmap.h" | 8 #include "SkBitmap.h" |
9 #include "SkBitmapCache.h" | 9 #include "SkBitmapCache.h" |
10 #include "SkImage_Base.h" | 10 #include "SkImage_Base.h" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 bitmap->reset(); | 164 bitmap->reset(); |
165 return false; | 165 return false; |
166 } | 166 } |
167 | 167 |
168 if (!bitmap->tryAllocPixels(fInfo)) { | 168 if (!bitmap->tryAllocPixels(fInfo)) { |
169 bitmap->reset(); | 169 bitmap->reset(); |
170 return false; | 170 return false; |
171 } | 171 } |
172 | 172 |
173 const uint32_t pixelOpsFlags = 0; | 173 const uint32_t pixelOpsFlags = 0; |
174 if (!tex->readPixels(0, 0, bitmap->width(), bitmap->height(), SkImageInfo2Gr
PixelConfig(fInfo), | 174 if (!tex->readPixels(0, 0, bitmap->width(), bitmap->height(), |
| 175 SkImageInfo2GrPixelConfig(fInfo, *tex->getContext()->ca
ps()), |
175 bitmap->getPixels(), bitmap->rowBytes(), pixelOpsFlags)
) { | 176 bitmap->getPixels(), bitmap->rowBytes(), pixelOpsFlags)
) { |
176 bitmap->reset(); | 177 bitmap->reset(); |
177 return false; | 178 return false; |
178 } | 179 } |
179 | 180 |
180 bitmap->pixelRef()->setImmutableWithID(fUniqueID); | 181 bitmap->pixelRef()->setImmutableWithID(fUniqueID); |
181 if (SkImage::kAllow_CachingHint == chint) { | 182 if (SkImage::kAllow_CachingHint == chint) { |
182 SkBitmapCache::Add(fUniqueID, *bitmap); | 183 SkBitmapCache::Add(fUniqueID, *bitmap); |
183 if (client) { | 184 if (client) { |
184 as_IB(client)->notifyAddedToCache(); | 185 as_IB(client)->notifyAddedToCache(); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 { | 267 { |
267 ScopedGenerator generator(this); | 268 ScopedGenerator generator(this); |
268 SkIRect subset = SkIRect::MakeXYWH(fOrigin.x(), fOrigin.y(), fInfo.width
(), fInfo.height()); | 269 SkIRect subset = SkIRect::MakeXYWH(fOrigin.x(), fOrigin.y(), fInfo.width
(), fInfo.height()); |
269 if (GrTexture* tex = generator->generateTexture(ctx, &subset)) { | 270 if (GrTexture* tex = generator->generateTexture(ctx, &subset)) { |
270 SK_HISTOGRAM_ENUMERATION("LockTexturePath", kNative_LockTexturePath, | 271 SK_HISTOGRAM_ENUMERATION("LockTexturePath", kNative_LockTexturePath, |
271 kLockTexturePathCount); | 272 kLockTexturePathCount); |
272 return set_key_and_return(tex, key); | 273 return set_key_and_return(tex, key); |
273 } | 274 } |
274 } | 275 } |
275 | 276 |
276 const GrSurfaceDesc desc = GrImageInfoToSurfaceDesc(fInfo); | 277 const GrSurfaceDesc desc = GrImageInfoToSurfaceDesc(fInfo, *ctx->caps()); |
277 | 278 |
278 // 3. Ask the generator to return a compressed form that the GPU might suppo
rt | 279 // 3. Ask the generator to return a compressed form that the GPU might suppo
rt |
279 SkAutoTUnref<SkData> data(this->refEncoded(ctx)); | 280 SkAutoTUnref<SkData> data(this->refEncoded(ctx)); |
280 if (data) { | 281 if (data) { |
281 GrTexture* tex = load_compressed_into_texture(ctx, data, desc); | 282 GrTexture* tex = load_compressed_into_texture(ctx, data, desc); |
282 if (tex) { | 283 if (tex) { |
283 SK_HISTOGRAM_ENUMERATION("LockTexturePath", kCompressed_LockTextureP
ath, | 284 SK_HISTOGRAM_ENUMERATION("LockTexturePath", kCompressed_LockTextureP
ath, |
284 kLockTexturePathCount); | 285 kLockTexturePathCount); |
285 return set_key_and_return(tex, key); | 286 return set_key_and_return(tex, key); |
286 } | 287 } |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 } | 333 } |
333 | 334 |
334 #else | 335 #else |
335 | 336 |
336 GrTexture* SkImageCacherator::lockAsTexture(GrContext* ctx, const GrTextureParam
s&, | 337 GrTexture* SkImageCacherator::lockAsTexture(GrContext* ctx, const GrTextureParam
s&, |
337 const SkImage* client, SkImage::Cach
ingHint) { | 338 const SkImage* client, SkImage::Cach
ingHint) { |
338 return nullptr; | 339 return nullptr; |
339 } | 340 } |
340 | 341 |
341 #endif | 342 #endif |
OLD | NEW |