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

Unified Diff: tests/CachedDecodingPixelRefTest.cpp

Issue 1426753006: SkResourceCache::GetAllocator() index8 and other color types handling (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/core/SkResourceCache.cpp ('k') | tests/SkResourceCacheTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/CachedDecodingPixelRefTest.cpp
diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp
index 2813b42bf8b40ce3638266a19c8d8b3d317dc09b..51af15fd39292dba66b0d675ab5042b7510dabc4 100644
--- a/tests/CachedDecodingPixelRefTest.cpp
+++ b/tests/CachedDecodingPixelRefTest.cpp
@@ -163,17 +163,21 @@ public:
};
static int Width() { return 10; }
static int Height() { return 10; }
- static uint32_t Color() { return 0xff123456; }
- TestImageGenerator(TestType type, skiatest::Reporter* reporter)
- : INHERITED(GetMyInfo()), fType(type), fReporter(reporter) {
+ // value choosen so that there is no loss when converting to to RGB565 and back
+ static SkColor Color() { return 0xff10345a; }
+ static SkPMColor PMColor() { return SkPreMultiplyColor(Color()); }
+
+ TestImageGenerator(TestType type, skiatest::Reporter* reporter,
+ SkColorType colorType = kN32_SkColorType)
+ : INHERITED(GetMyInfo(colorType)), fType(type), fReporter(reporter) {
SkASSERT((fType <= kLast_TestType) && (fType >= 0));
}
virtual ~TestImageGenerator() { }
protected:
- static SkImageInfo GetMyInfo() {
- return SkImageInfo::MakeN32(TestImageGenerator::Width(), TestImageGenerator::Height(),
- kOpaque_SkAlphaType);
+ static SkImageInfo GetMyInfo(SkColorType colorType) {
+ return SkImageInfo::Make(TestImageGenerator::Width(), TestImageGenerator::Height(),
+ colorType, kOpaque_SkAlphaType);
}
bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes,
@@ -183,14 +187,35 @@ protected:
if (fType != kSucceedGetPixels_TestType) {
return false;
}
- if (info.colorType() != kN32_SkColorType) {
+ if (info.colorType() != kN32_SkColorType && info.colorType() != getInfo().colorType()) {
return false;
}
char* bytePtr = static_cast<char*>(pixels);
- for (int y = 0; y < info.height(); ++y) {
- sk_memset32(reinterpret_cast<SkColor*>(bytePtr),
- TestImageGenerator::Color(), info.width());
- bytePtr += rowBytes;
+ switch (info.colorType()) {
+ case kN32_SkColorType:
+ for (int y = 0; y < info.height(); ++y) {
+ sk_memset32((uint32_t*)bytePtr,
+ TestImageGenerator::PMColor(), info.width());
+ bytePtr += rowBytes;
+ }
+ break;
+ case kIndex_8_SkColorType:
+ *ctableCount = 1;
+ ctable[0] = TestImageGenerator::PMColor();
+ for (int y = 0; y < info.height(); ++y) {
+ memset(bytePtr, 0, info.width());
+ bytePtr += rowBytes;
+ }
+ break;
+ case kRGB_565_SkColorType:
+ for (int y = 0; y < info.height(); ++y) {
+ sk_memset16((uint16_t*)bytePtr,
+ SkPixel32ToPixel16(TestImageGenerator::PMColor()), info.width());
+ bytePtr += rowBytes;
+ }
+ break;
+ default:
+ return false;
}
return true;
}
@@ -214,7 +239,7 @@ static void check_test_image_generator_bitmap(skiatest::Reporter* reporter,
int errors = 0;
for (int y = 0; y < bm.height(); ++y) {
for (int x = 0; x < bm.width(); ++x) {
- if (TestImageGenerator::Color() != *bm.getAddr32(x, y)) {
+ if (TestImageGenerator::Color() != bm.getColor(x, y)) {
++errors;
}
}
@@ -224,8 +249,9 @@ static void check_test_image_generator_bitmap(skiatest::Reporter* reporter,
static void check_pixelref(TestImageGenerator::TestType type,
skiatest::Reporter* reporter,
- SkDiscardableMemory::Factory* factory) {
- SkAutoTDelete<SkImageGenerator> gen(new TestImageGenerator(type, reporter));
+ SkDiscardableMemory::Factory* factory,
+ SkColorType colorType) {
+ SkAutoTDelete<SkImageGenerator> gen(new TestImageGenerator(type, reporter, colorType));
REPORTER_ASSERT(reporter, gen.get() != nullptr);
SkBitmap lazy;
bool success = SkDEPRECATED_InstallDiscardablePixelRef(gen.detach(), nullptr, &lazy, factory);
@@ -245,56 +271,77 @@ static void check_pixelref(TestImageGenerator::TestType type,
* SkDiscardableMemory::Factory choices.
*/
DEF_TEST(DiscardableAndCachingPixelRef, reporter) {
- check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, nullptr);
- check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, nullptr);
+ const SkColorType testColorTypes[] = {
+ kN32_SkColorType,
+ kIndex_8_SkColorType,
+ kRGB_565_SkColorType
+ };
+ for (const SkColorType testColorType : testColorTypes) {
+ check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, nullptr,
+ testColorType);
+ check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, nullptr,
+ testColorType);
- SkAutoTUnref<SkDiscardableMemoryPool> pool(
- SkDiscardableMemoryPool::Create(1, nullptr));
- REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed());
- check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, pool);
- REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed());
- check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, pool);
- REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed());
+ SkAutoTUnref<SkDiscardableMemoryPool> pool(
+ SkDiscardableMemoryPool::Create(1, nullptr));
+ REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed());
+ check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, pool,
+ testColorType);
+ REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed());
+ check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, pool,
+ testColorType);
+ REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed());
- SkDiscardableMemoryPool* globalPool = SkGetGlobalDiscardableMemoryPool();
- // Only acts differently from nullptr on a platform that has a
- // default discardable memory implementation that differs from the
- // global DM pool.
- check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, globalPool);
- check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, globalPool);
+ SkDiscardableMemoryPool* globalPool = SkGetGlobalDiscardableMemoryPool();
+ // Only acts differently from nullptr on a platform that has a
+ // default discardable memory implementation that differs from the
+ // global DM pool.
+ check_pixelref(TestImageGenerator::kFailGetPixels_TestType, reporter, globalPool,
+ testColorType);
+ check_pixelref(TestImageGenerator::kSucceedGetPixels_TestType, reporter, globalPool,
+ testColorType);
+ }
}
////////////////////////////////////////////////////////////////////////////////
DEF_TEST(Image_NewFromGenerator, r) {
- TestImageGenerator::TestType testTypes[] = {
+ const TestImageGenerator::TestType testTypes[] = {
TestImageGenerator::kFailGetPixels_TestType,
TestImageGenerator::kSucceedGetPixels_TestType,
};
+ const SkColorType testColorTypes[] = {
+ kN32_SkColorType,
+ kIndex_8_SkColorType,
+ kRGB_565_SkColorType
+ };
for (size_t i = 0; i < SK_ARRAY_COUNT(testTypes); ++i) {
TestImageGenerator::TestType test = testTypes[i];
- SkImageGenerator* gen = new TestImageGenerator(test, r);
- SkAutoTUnref<SkImage> image(SkImage::NewFromGenerator(gen));
- if (nullptr == image.get()) {
- ERRORF(r, "SkImage::NewFromGenerator unexpecedly failed ["
- SK_SIZE_T_SPECIFIER "]", i);
- continue;
- }
- REPORTER_ASSERT(r, TestImageGenerator::Width() == image->width());
- REPORTER_ASSERT(r, TestImageGenerator::Height() == image->height());
- REPORTER_ASSERT(r, image->isLazyGenerated());
+ for (const SkColorType testColorType : testColorTypes) {
+ SkImageGenerator* gen = new TestImageGenerator(test, r, testColorType);
+ SkAutoTUnref<SkImage> image(SkImage::NewFromGenerator(gen));
+ if (nullptr == image.get()) {
+ ERRORF(r, "SkImage::NewFromGenerator unexpecedly failed ["
+ SK_SIZE_T_SPECIFIER "]", i);
+ continue;
+ }
+ REPORTER_ASSERT(r, TestImageGenerator::Width() == image->width());
+ REPORTER_ASSERT(r, TestImageGenerator::Height() == image->height());
+ REPORTER_ASSERT(r, image->isLazyGenerated());
- SkBitmap bitmap;
- bitmap.allocN32Pixels(TestImageGenerator::Width(), TestImageGenerator::Height());
- SkCanvas canvas(bitmap);
- const SkColor kDefaultColor = 0xffabcdef;
- canvas.clear(kDefaultColor);
- canvas.drawImage(image, 0, 0, nullptr);
- if (TestImageGenerator::kSucceedGetPixels_TestType == test) {
- REPORTER_ASSERT(
- r, TestImageGenerator::Color() == *bitmap.getAddr32(0, 0));
- } else {
- REPORTER_ASSERT(r, kDefaultColor == bitmap.getColor(0,0));
+ SkBitmap bitmap;
+ bitmap.allocN32Pixels(TestImageGenerator::Width(), TestImageGenerator::Height());
+ SkCanvas canvas(bitmap);
+ const SkColor kDefaultColor = 0xffabcdef;
+ canvas.clear(kDefaultColor);
+ canvas.drawImage(image, 0, 0, nullptr);
+ if (TestImageGenerator::kSucceedGetPixels_TestType == test) {
+ REPORTER_ASSERT(
+ r, TestImageGenerator::Color() == bitmap.getColor(0, 0));
+ }
+ else {
+ REPORTER_ASSERT(r, kDefaultColor == bitmap.getColor(0, 0));
+ }
}
}
}
« no previous file with comments | « src/core/SkResourceCache.cpp ('k') | tests/SkResourceCacheTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698