aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/dftext.cpp
diff options
context:
space:
mode:
authorGravatar brianosman <brianosman@google.com>2016-04-06 07:38:23 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-06 07:38:23 -0700
commit898235c4864df66aa7f6d32bc2a8b8551040ce1e (patch)
tree5fb30f04825c59a970a208cabadd4bad0be283b3 /gm/dftext.cpp
parent1817d282cda17cb8c2db0ac6fdc937743c026016 (diff)
SkSurfaceProps now has a gamma-correct ("AllowSRGBInputs") flag. That's propagated in a few places so that the backend can do the right thing for L32 vs S32 mode.
Also added SkSurfaceProps to SkSpecialImage, so that Image -> Surface conversion can preserve the desired behavior during filtering. Many small changes, including a bunch of comments about places where we may be losing information right now. My approach was to ensure that if anything fails, it will always fall back to "legacy" mode - gamma-correctness is opt-in, so I'll just have to feed things through as missing cases are exposed. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1838953007 Review URL: https://codereview.chromium.org/1845283003
Diffstat (limited to 'gm/dftext.cpp')
-rw-r--r--gm/dftext.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/gm/dftext.cpp b/gm/dftext.cpp
index 0d5b1ff4e9..c66064a8d4 100644
--- a/gm/dftext.cpp
+++ b/gm/dftext.cpp
@@ -48,8 +48,12 @@ protected:
// set up offscreen rendering with distance field text
#if SK_SUPPORT_GPU
GrContext* ctx = inputCanvas->getGrContext();
- SkImageInfo info = SkImageInfo::MakeN32Premul(onISize());
- SkSurfaceProps props(SkSurfaceProps::kUseDeviceIndependentFonts_Flag,
+ SkImageInfo info = SkImageInfo::MakeN32Premul(onISize(),
+ inputCanvas->imageInfo().profileType());
+ SkSurfaceProps canvasProps(SkSurfaceProps::kLegacyFontHost_InitType);
+ uint32_t allowSRGBInputs = inputCanvas->getProps(&canvasProps)
+ ? canvasProps.flags() & SkSurfaceProps::kAllowSRGBInputs_Flag : 0;
+ SkSurfaceProps props(SkSurfaceProps::kUseDeviceIndependentFonts_Flag | allowSRGBInputs,
SkSurfaceProps::kLegacyFontHost_InitType);
auto surface(SkSurface::MakeRenderTarget(ctx, SkBudgeted::kNo, info, 0, &props));
SkCanvas* canvas = surface ? surface->getCanvas() : inputCanvas;