diff options
author | brianosman <brianosman@google.com> | 2016-09-29 07:25:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-29 07:25:45 -0700 |
commit | e4a17372a188f1dffc3f9c9bcdfbb9860728630b (patch) | |
tree | 6c5b0db8d14ed9474a2f31fd1facde42eee24a32 /gm/gamut.cpp | |
parent | aa6ef3ebc60e0f70db0e599f4cd34d5be06486c9 (diff) |
Fix gamut GM to work w/serialization configs. Remove it from blacklist.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2383513002
Review-Url: https://codereview.chromium.org/2383513002
Diffstat (limited to 'gm/gamut.cpp')
-rw-r--r-- | gm/gamut.cpp | 19 |
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(); |