34#include <initializer_list>
53 bool isLocked = (data->data() !=
nullptr);
61 src.allocN32Pixels(5, 5);
102 for (
int i = 0; i <
N; ++i) {
103 src[i].allocN32Pixels(5, 5);
104 src[i].setImmutable();
105 img[i] = src[i].asImage();
110 for (
int i = 0; i <
N; ++i) {
143 const size_t byteLimit = 100 * 1024;
165 const unsigned kRepeatCount = 42;
166 for (
unsigned i = 0; i < kRepeatCount; ++i) {
204 for (
size_t i = 0; i < std::size(xforms); ++i) {
208 return surface->makeImageSnapshot();
232 TestKey(
int sharedID, int32_t data) : fData(data) {
246 TestRec(
int sharedID, int32_t data,
int* flagPtr) : fKey(sharedID, data),
fFlags(flagPtr) {
247 fCanBePurged =
false;
256 const char*
getCategory()
const override {
return "test-category"; }
264 int flags0 = 0, flags1 = 0;
266 auto rec0 = std::make_unique<TestRec>(sharedID, data, &flags0);
267 auto rec1 = std::make_unique<TestRec>(sharedID, data, &flags1);
268 SkASSERT(rec0->getKey() == rec1->getKey());
270 TestRec* r0 = rec0.get();
271 r0->fCanBePurged = purgable;
276 cache->add(rec0.release(),
nullptr);
281 cache->add(rec1.release(),
nullptr);
290 r0->fCanBePurged =
true;
298 for (
bool purgable : {
false,
true }) {
constexpr SkColor SK_ColorCYAN
static SkImage_Base * as_IB(SkImage *image)
static void SkSafeUnref(T *obj)
static void test_mipmapcache(skiatest::Reporter *reporter, SkResourceCache *cache)
static void test_discarded_image(skiatest::Reporter *reporter, const SkMatrix &transform, sk_sp< SkImage >(*buildImage)())
static void testBitmapCache_discarded_bitmap(skiatest::Reporter *reporter, SkResourceCache *cache, SkResourceCache::DiscardableFactory factory)
static SkDiscardableMemory * pool_factory(size_t bytes)
static void * gTestNamespace
static SkDiscardableMemoryPool * gPool
static void check_data(skiatest::Reporter *reporter, const SkCachedData *data, int refcnt, CachedState cacheState, LockedState lockedState)
static void test_duplicate_add(SkResourceCache *cache, skiatest::Reporter *reporter, bool purgable)
static void test_mipmap_notify(skiatest::Reporter *reporter, SkResourceCache *cache)
#define DEF_TEST(name, reporter)
#define REPORTER_ASSERT(r, cond,...)
static bool Find(const SkBitmapCacheDesc &, SkBitmap *result)
void clear(SkColor color)
void concat(const SkMatrix &matrix)
void drawImage(const SkImage *image, SkScalar left, SkScalar top)
static sk_sp< SkColorSpace > MakeSRGB()
static sk_sp< SkDiscardableMemoryPool > Make(size_t size)
virtual SkDiscardableMemory * create(size_t bytes)=0
static SkDiscardableMemory * Create(size_t bytes)
static SkMatrix Scale(SkScalar sx, SkScalar sy)
static const SkMipmap * AddAndRef(const SkImage_Base *, SkResourceCache *localCache=nullptr)
static const SkMipmap * FindAndRef(const SkBitmapCacheDesc &, SkResourceCache *localCache=nullptr)
SkCanvas * beginRecording(const SkRect &bounds, sk_sp< SkBBoxHierarchy > bbh)
sk_sp< SkPicture > finishRecordingAsPicture()
SkDiscardableMemory *(* DiscardableFactory)(size_t bytes)
void reset(T *ptr=nullptr)
SK_API sk_sp< SkImage > DeferredFromPicture(sk_sp< SkPicture > picture, const SkISize &dimensions, const SkMatrix *matrix, const SkPaint *paint, BitDepth bitDepth, sk_sp< SkColorSpace > colorSpace, SkSurfaceProps props)
@ kU8
uses 8-bit unsigned int per color component
SK_API sk_sp< SkSurface > Raster(const SkImageInfo &imageInfo, size_t rowBytes, const SkSurfaceProps *surfaceProps)
static SkColor4f transform(SkColor4f c, SkColorSpace *src, SkColorSpace *dst)
static SkBitmapCacheDesc Make(const SkImage *)
static constexpr SkISize Make(int32_t w, int32_t h)
static SkImageInfo MakeN32Premul(int width, int height)
void init(void *nameSpace, uint64_t sharedID, size_t dataSize)
TestKey(int sharedID, int32_t data)
size_t bytesUsed() const override
bool canBePurged() override
const char * getCategory() const override
void postAddInstall(void *) override
TestRec(int sharedID, int32_t data, int *flagPtr)
const Key & getKey() const override