aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/gamut.cpp
diff options
context:
space:
mode:
authorGravatar brianosman <brianosman@google.com>2016-09-29 07:25:45 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-09-29 07:25:45 -0700
commite4a17372a188f1dffc3f9c9bcdfbb9860728630b (patch)
tree6c5b0db8d14ed9474a2f31fd1facde42eee24a32 /gm/gamut.cpp
parentaa6ef3ebc60e0f70db0e599f4cd34d5be06486c9 (diff)
Fix gamut GM to work w/serialization configs. Remove it from blacklist.
Diffstat (limited to 'gm/gamut.cpp')
-rw-r--r--gm/gamut.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/gm/gamut.cpp b/gm/gamut.cpp
index 26231c5e8f..53b035de1c 100644
--- a/gm/gamut.cpp
+++ b/gm/gamut.cpp
@@ -125,11 +125,15 @@ static void draw_gamut_grid(SkCanvas* canvas, SkTArray<SkAutoTDelete<CellRendere
wideGamutRGB_toXYZD50.set3x3RowMajorf(gWideGamutRGB_toXYZD50);
// Use the original canvas' color type, but account for gamma requirements
- SkImageInfo origInfo = canvas->imageInfo();
+ SkColorType colorType = canvas->imageInfo().colorType();
+ if (kUnknown_SkColorType == colorType) {
+ // This can happen when recording (in which case we'll just use 8888 offscreen surfaces)
+ colorType = kN32_SkColorType;
+ }
auto srgbCS = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
auto wideCS = SkColorSpace::NewRGB(SkColorSpace::kSRGB_RenderTargetGamma,
wideGamutRGB_toXYZD50);
- switch (origInfo.colorType()) {
+ switch (colorType) {
case kRGBA_8888_SkColorType:
case kBGRA_8888_SkColorType:
break;
@@ -142,16 +146,19 @@ static void draw_gamut_grid(SkCanvas* canvas, SkTArray<SkAutoTDelete<CellRendere
}
// Make our two working surfaces (one sRGB, one Adobe)
- SkImageInfo srgbGamutInfo = SkImageInfo::Make(gRectSize, gRectSize, origInfo.colorType(),
+ SkImageInfo srgbGamutInfo = SkImageInfo::Make(gRectSize, gRectSize, colorType,
kPremul_SkAlphaType, srgbCS);
- SkImageInfo wideGamutInfo = SkImageInfo::Make(gRectSize, gRectSize, origInfo.colorType(),
+ SkImageInfo wideGamutInfo = SkImageInfo::Make(gRectSize, gRectSize, colorType,
kPremul_SkAlphaType, wideCS);
// readPixels doesn't do color conversion (yet), so we can use it to see the raw (wide) data
SkImageInfo dstInfo = srgbGamutInfo.makeColorSpace(nullptr);
sk_sp<SkSurface> srgbGamutSurface = canvas->makeSurface(srgbGamutInfo);
+ if (!srgbGamutSurface) {
+ srgbGamutSurface = SkSurface::MakeRaster(srgbGamutInfo);
+ }
sk_sp<SkSurface> wideGamutSurface = canvas->makeSurface(wideGamutInfo);
- if (!srgbGamutSurface || !wideGamutSurface) {
- return;
+ if (!wideGamutSurface) {
+ wideGamutSurface = SkSurface::MakeRaster(wideGamutInfo);
}
SkCanvas* srgbGamutCanvas = srgbGamutSurface->getCanvas();
SkCanvas* wideGamutCanvas = wideGamutSurface->getCanvas();