Index: cc/tiles/gpu_image_decode_cache_unittest.cc |
diff --git a/cc/tiles/gpu_image_decode_cache_unittest.cc b/cc/tiles/gpu_image_decode_cache_unittest.cc |
index 82ca3b207acc5010a73db38df5dbe2f901ff39a3..30f9ac10c67b6cf62af6d63738e65b0cfaa9c783 100644 |
--- a/cc/tiles/gpu_image_decode_cache_unittest.cc |
+++ b/cc/tiles/gpu_image_decode_cache_unittest.cc |
@@ -13,6 +13,10 @@ |
namespace cc { |
namespace { |
+gfx::ColorSpace DefaultColorSpace() { |
+ return gfx::ColorSpace::CreateSRGB(); |
+} |
+ |
size_t kGpuMemoryLimitBytes = 96 * 1024 * 1024; |
class TestGpuImageDecodeCache : public GpuImageDecodeCache { |
public: |
@@ -51,7 +55,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageSameImage) { |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -60,7 +65,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageSameImage) { |
DrawImage another_draw_image( |
image, SkIRect::MakeWH(image->width(), image->height()), quality, |
- CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> another_task; |
need_unref = cache.GetTaskForImageAndRef( |
another_draw_image, ImageDecodeCache::TracingInfo(), &another_task); |
@@ -84,7 +90,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageSmallerScale) { |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -93,7 +100,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageSmallerScale) { |
DrawImage another_draw_image( |
image, SkIRect::MakeWH(image->width(), image->height()), quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> another_task; |
need_unref = cache.GetTaskForImageAndRef( |
another_draw_image, ImageDecodeCache::TracingInfo(), &another_task); |
@@ -116,16 +124,16 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageLowerQuality) { |
SkMatrix matrix = CreateMatrix(SkSize::Make(0.4f, 0.4f), is_decomposable); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
- kHigh_SkFilterQuality, matrix); |
+ kHigh_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
EXPECT_TRUE(need_unref); |
EXPECT_TRUE(task); |
- DrawImage another_draw_image(image, |
- SkIRect::MakeWH(image->width(), image->height()), |
- kLow_SkFilterQuality, matrix); |
+ DrawImage another_draw_image( |
+ image, SkIRect::MakeWH(image->width(), image->height()), |
+ kLow_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> another_task; |
need_unref = cache.GetTaskForImageAndRef( |
another_draw_image, ImageDecodeCache::TracingInfo(), &another_task); |
@@ -149,7 +157,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageDifferentImage) { |
sk_sp<SkImage> first_image = CreateImage(100, 100); |
DrawImage first_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> first_task; |
bool need_unref = cache.GetTaskForImageAndRef( |
first_draw_image, ImageDecodeCache::TracingInfo(), &first_task); |
@@ -160,7 +169,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageDifferentImage) { |
DrawImage second_draw_image( |
second_image, |
SkIRect::MakeWH(second_image->width(), second_image->height()), quality, |
- CreateMatrix(SkSize::Make(0.25f, 0.25f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.25f, 0.25f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> second_task; |
need_unref = cache.GetTaskForImageAndRef( |
second_draw_image, ImageDecodeCache::TracingInfo(), &second_task); |
@@ -187,7 +197,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageLargerScale) { |
sk_sp<SkImage> first_image = CreateImage(100, 100); |
DrawImage first_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> first_task; |
bool need_unref = cache.GetTaskForImageAndRef( |
first_draw_image, ImageDecodeCache::TracingInfo(), &first_task); |
@@ -201,7 +212,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageLargerScale) { |
DrawImage second_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> second_task; |
need_unref = cache.GetTaskForImageAndRef( |
second_draw_image, ImageDecodeCache::TracingInfo(), &second_task); |
@@ -211,7 +223,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageLargerScale) { |
DrawImage third_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> third_task; |
need_unref = cache.GetTaskForImageAndRef( |
third_draw_image, ImageDecodeCache::TracingInfo(), &third_task); |
@@ -235,7 +248,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageLargerScaleNoReuse) { |
sk_sp<SkImage> first_image = CreateImage(100, 100); |
DrawImage first_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> first_task; |
bool need_unref = cache.GetTaskForImageAndRef( |
first_draw_image, ImageDecodeCache::TracingInfo(), &first_task); |
@@ -244,7 +258,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageLargerScaleNoReuse) { |
DrawImage second_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> second_task; |
need_unref = cache.GetTaskForImageAndRef( |
second_draw_image, ImageDecodeCache::TracingInfo(), &second_task); |
@@ -254,7 +269,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageLargerScaleNoReuse) { |
DrawImage third_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> third_task; |
need_unref = cache.GetTaskForImageAndRef( |
third_draw_image, ImageDecodeCache::TracingInfo(), &third_task); |
@@ -281,7 +297,7 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageHigherQuality) { |
sk_sp<SkImage> first_image = CreateImage(100, 100); |
DrawImage first_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- kLow_SkFilterQuality, matrix); |
+ kLow_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> first_task; |
bool need_unref = cache.GetTaskForImageAndRef( |
first_draw_image, ImageDecodeCache::TracingInfo(), &first_task); |
@@ -295,7 +311,7 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageHigherQuality) { |
DrawImage second_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- kHigh_SkFilterQuality, matrix); |
+ kHigh_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> second_task; |
need_unref = cache.GetTaskForImageAndRef( |
second_draw_image, ImageDecodeCache::TracingInfo(), &second_task); |
@@ -319,7 +335,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageAlreadyDecodedAndLocked) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -364,7 +381,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageAlreadyDecodedNotLocked) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -409,7 +427,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageAlreadyUploaded) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -444,7 +463,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageCanceledGetsNewTask) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -491,7 +511,8 @@ TEST(GpuImageDecodeCacheTest, GetTaskForImageCanceledWhileReffedGetsNewTask) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -542,7 +563,8 @@ TEST(GpuImageDecodeCacheTest, NoTaskForImageAlreadyFailedDecoding) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -575,7 +597,8 @@ TEST(GpuImageDecodeCacheTest, GetDecodedImageForDraw) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -609,7 +632,8 @@ TEST(GpuImageDecodeCacheTest, GetLargeDecodedImageForDraw) { |
sk_sp<SkImage> image = CreateImage(1, 24000); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -646,7 +670,8 @@ TEST(GpuImageDecodeCacheTest, GetDecodedImageForDrawAtRasterDecode) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
@@ -677,7 +702,8 @@ TEST(GpuImageDecodeCacheTest, GetDecodedImageForDrawLargerScale) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -689,7 +715,8 @@ TEST(GpuImageDecodeCacheTest, GetDecodedImageForDrawLargerScale) { |
DrawImage larger_draw_image( |
image, SkIRect::MakeWH(image->width(), image->height()), quality, |
- CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> larger_task; |
bool larger_need_unref = cache.GetTaskForImageAndRef( |
larger_draw_image, ImageDecodeCache::TracingInfo(), &larger_task); |
@@ -733,7 +760,7 @@ TEST(GpuImageDecodeCacheTest, GetDecodedImageForDrawHigherQuality) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
- kLow_SkFilterQuality, matrix); |
+ kLow_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -745,7 +772,7 @@ TEST(GpuImageDecodeCacheTest, GetDecodedImageForDrawHigherQuality) { |
DrawImage higher_quality_draw_image( |
image, SkIRect::MakeWH(image->width(), image->height()), |
- kHigh_SkFilterQuality, matrix); |
+ kHigh_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> hq_task; |
bool hq_needs_unref = cache.GetTaskForImageAndRef( |
higher_quality_draw_image, ImageDecodeCache::TracingInfo(), &hq_task); |
@@ -789,9 +816,10 @@ TEST(GpuImageDecodeCacheTest, GetDecodedImageForDrawNegative) { |
SkFilterQuality quality = kHigh_SkFilterQuality; |
sk_sp<SkImage> image = CreateImage(100, 100); |
- DrawImage draw_image( |
- image, SkIRect::MakeWH(image->width(), image->height()), quality, |
- CreateMatrix(SkSize::Make(-0.5f, 0.5f), is_decomposable)); |
+ DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
+ quality, |
+ CreateMatrix(SkSize::Make(-0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -827,7 +855,8 @@ TEST(GpuImageDecodeCacheTest, GetLargeScaledDecodedImageForDraw) { |
sk_sp<SkImage> image = CreateImage(1, 48000); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -867,7 +896,8 @@ TEST(GpuImageDecodeCacheTest, AtRasterUsedDirectlyIfSpaceAllows) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
@@ -912,7 +942,8 @@ TEST(GpuImageDecodeCacheTest, |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
// Must hold context lock before calling GetDecodedImageForDraw / |
// DrawWithImageFinished. |
@@ -944,7 +975,8 @@ TEST(GpuImageDecodeCacheTest, |
sk_sp<SkImage> image = CreateImage(1, 24000); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
// Must hold context lock before calling GetDecodedImageForDraw / |
// DrawWithImageFinished. |
@@ -980,7 +1012,8 @@ TEST(GpuImageDecodeCacheTest, ZeroSizedImagesAreSkipped) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.f, 0.f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.f, 0.f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
@@ -1008,7 +1041,8 @@ TEST(GpuImageDecodeCacheTest, NonOverlappingSrcRectImagesAreSkipped) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image( |
image, SkIRect::MakeXYWH(150, 150, image->width(), image->height()), |
- quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
@@ -1036,7 +1070,8 @@ TEST(GpuImageDecodeCacheTest, CanceledTasksDoNotCountAgainstBudget) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image( |
image, SkIRect::MakeXYWH(0, 0, image->width(), image->height()), quality, |
- CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
@@ -1064,7 +1099,8 @@ TEST(GpuImageDecodeCacheTest, ShouldAggressivelyFreeResources) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
{ |
bool need_unref = cache.GetTaskForImageAndRef( |
@@ -1128,7 +1164,8 @@ TEST(GpuImageDecodeCacheTest, OrphanedImagesFreeOnReachingZeroRefs) { |
sk_sp<SkImage> first_image = CreateImage(100, 100); |
DrawImage first_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> first_task; |
bool need_unref = cache.GetTaskForImageAndRef( |
first_draw_image, ImageDecodeCache::TracingInfo(), &first_task); |
@@ -1143,7 +1180,8 @@ TEST(GpuImageDecodeCacheTest, OrphanedImagesFreeOnReachingZeroRefs) { |
// memory used by |first_image| for the smaller scale. |
DrawImage second_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> second_task; |
need_unref = cache.GetTaskForImageAndRef( |
second_draw_image, ImageDecodeCache::TracingInfo(), &second_task); |
@@ -1183,7 +1221,8 @@ TEST(GpuImageDecodeCacheTest, OrphanedZeroRefImagesImmediatelyDeleted) { |
sk_sp<SkImage> first_image = CreateImage(100, 100); |
DrawImage first_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> first_task; |
bool need_unref = cache.GetTaskForImageAndRef( |
first_draw_image, ImageDecodeCache::TracingInfo(), &first_task); |
@@ -1202,7 +1241,8 @@ TEST(GpuImageDecodeCacheTest, OrphanedZeroRefImagesImmediatelyDeleted) { |
// memory used by |first_image| for the smaller scale. |
DrawImage second_draw_image( |
first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
- quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> second_task; |
need_unref = cache.GetTaskForImageAndRef( |
second_draw_image, ImageDecodeCache::TracingInfo(), &second_task); |
@@ -1231,7 +1271,7 @@ TEST(GpuImageDecodeCacheTest, QualityCappedAtMedium) { |
// Create an image with kLow_FilterQuality. |
DrawImage low_draw_image(image, |
SkIRect::MakeWH(image->width(), image->height()), |
- kLow_SkFilterQuality, matrix); |
+ kLow_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> low_task; |
bool need_unref = cache.GetTaskForImageAndRef( |
low_draw_image, ImageDecodeCache::TracingInfo(), &low_task); |
@@ -1240,9 +1280,9 @@ TEST(GpuImageDecodeCacheTest, QualityCappedAtMedium) { |
// Get the same image at kMedium_FilterQuality. We can't re-use low, so we |
// should get a new task/ref. |
- DrawImage medium_draw_image(image, |
- SkIRect::MakeWH(image->width(), image->height()), |
- kMedium_SkFilterQuality, matrix); |
+ DrawImage medium_draw_image( |
+ image, SkIRect::MakeWH(image->width(), image->height()), |
+ kMedium_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> medium_task; |
need_unref = cache.GetTaskForImageAndRef( |
medium_draw_image, ImageDecodeCache::TracingInfo(), &medium_task); |
@@ -1251,9 +1291,9 @@ TEST(GpuImageDecodeCacheTest, QualityCappedAtMedium) { |
EXPECT_FALSE(low_task.get() == medium_task.get()); |
// Get the same image at kHigh_FilterQuality. We should re-use medium. |
- DrawImage large_draw_image(image, |
- SkIRect::MakeWH(image->width(), image->height()), |
- kHigh_SkFilterQuality, matrix); |
+ DrawImage large_draw_image( |
+ image, SkIRect::MakeWH(image->width(), image->height()), |
+ kHigh_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> large_task; |
need_unref = cache.GetTaskForImageAndRef( |
large_draw_image, ImageDecodeCache::TracingInfo(), &large_task); |
@@ -1283,7 +1323,8 @@ TEST(GpuImageDecodeCacheTest, GetDecodedImageForDrawMipUsageChange) { |
sk_sp<SkImage> image = CreateImage(4000, 4000); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -1305,7 +1346,8 @@ TEST(GpuImageDecodeCacheTest, GetDecodedImageForDrawMipUsageChange) { |
// Do an at-raster decode of the above image that *does* require mips. |
DrawImage draw_image_mips( |
image, SkIRect::MakeWH(image->width(), image->height()), quality, |
- CreateMatrix(SkSize::Make(0.6f, 0.6f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(0.6f, 0.6f), is_decomposable), |
+ DefaultColorSpace()); |
DecodedDrawImage decoded_draw_image = |
cache.GetDecodedImageForDraw(draw_image_mips); |
cache.DrawWithImageFinished(draw_image_mips, decoded_draw_image); |
@@ -1321,7 +1363,7 @@ TEST(GpuImageDecodeCacheTest, MemoryStateSuspended) { |
bool is_decomposable = true; |
SkMatrix matrix = CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
- kLow_SkFilterQuality, matrix); |
+ kLow_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -1390,7 +1432,7 @@ TEST(GpuImageDecodeCacheTest, OutOfRasterDecodeTask) { |
bool is_decomposable = true; |
SkMatrix matrix = CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
- kLow_SkFilterQuality, matrix); |
+ kLow_SkFilterQuality, matrix, DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = |
@@ -1421,7 +1463,8 @@ TEST(GpuImageDecodeCacheTest, ZeroCacheNormalWorkingSet) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
scoped_refptr<TileTask> task; |
bool need_unref = cache.GetTaskForImageAndRef( |
draw_image, ImageDecodeCache::TracingInfo(), &task); |
@@ -1475,12 +1518,14 @@ TEST(GpuImageDecodeCacheTest, SmallCacheNormalWorkingSet) { |
sk_sp<SkImage> image = CreateImage(100, 100); |
DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
quality, |
- CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
sk_sp<SkImage> image2 = CreateImage(100, 100); |
DrawImage draw_image2( |
image2, SkIRect::MakeWH(image2->width(), image2->height()), quality, |
- CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable)); |
+ CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ DefaultColorSpace()); |
// Add an image to the cache and un-ref it. |
{ |
@@ -1552,5 +1597,56 @@ TEST(GpuImageDecodeCacheTest, SmallCacheNormalWorkingSet) { |
} |
} |
+TEST(GpuImageDecodeCacheTest, GetTaskForImageDifferentColorSpace) { |
+ auto context_provider = TestContextProvider::Create(); |
+ context_provider->BindToCurrentThread(); |
+ TestGpuImageDecodeCache cache(context_provider.get()); |
+ bool is_decomposable = true; |
+ SkFilterQuality quality = kHigh_SkFilterQuality; |
+ gfx::ColorSpace color_space_a = gfx::ColorSpace::CreateSRGB(); |
+ gfx::ColorSpace color_space_b = gfx::ColorSpace::CreateXYZD50(); |
+ |
+ sk_sp<SkImage> first_image = CreateImage(100, 100); |
+ DrawImage first_draw_image( |
+ first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
+ quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ color_space_a); |
+ scoped_refptr<TileTask> first_task; |
+ bool need_unref = cache.GetTaskForImageAndRef( |
+ first_draw_image, ImageDecodeCache::TracingInfo(), &first_task); |
+ EXPECT_TRUE(need_unref); |
+ EXPECT_TRUE(first_task); |
+ |
+ DrawImage second_draw_image( |
+ first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
+ quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ color_space_b); |
+ scoped_refptr<TileTask> second_task; |
+ need_unref = cache.GetTaskForImageAndRef( |
+ second_draw_image, ImageDecodeCache::TracingInfo(), &second_task); |
+ EXPECT_TRUE(need_unref); |
+ EXPECT_TRUE(second_task); |
+ EXPECT_TRUE(first_task.get() != second_task.get()); |
+ |
+ DrawImage third_draw_image( |
+ first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), |
+ quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), |
+ color_space_a); |
+ scoped_refptr<TileTask> third_task; |
+ need_unref = cache.GetTaskForImageAndRef( |
+ third_draw_image, ImageDecodeCache::TracingInfo(), &third_task); |
+ EXPECT_TRUE(need_unref); |
+ EXPECT_TRUE(third_task.get() == first_task.get()); |
+ |
+ TestTileTaskRunner::ProcessTask(first_task->dependencies()[0].get()); |
+ TestTileTaskRunner::ProcessTask(first_task.get()); |
+ TestTileTaskRunner::ProcessTask(second_task->dependencies()[0].get()); |
+ TestTileTaskRunner::ProcessTask(second_task.get()); |
+ |
+ cache.UnrefImage(first_draw_image); |
+ cache.UnrefImage(second_draw_image); |
+ cache.UnrefImage(third_draw_image); |
+} |
+ |
} // namespace |
} // namespace cc |