diff options
author | 2016-04-08 06:47:54 -0700 | |
---|---|---|
committer | 2016-04-08 06:47:54 -0700 | |
commit | a1e8f8d8f1a0b7141136d7d49df1cc2fec0528df (patch) | |
tree | 9249c051645ac31322729f11d3caa4c619aa7b73 /src/gpu/text/GrAtlasTextContext.cpp | |
parent | b63c5766c3dece300167b41c5c4e30b7b330dfaa (diff) |
Decouple contrast boost from fake gamma.
Replace FakeGamma with FontWeightFlags. Largely mechanical, except for
the changes in ignorePreBlend. With this change, text GMs generally look
the same (or at least more similar) in 8888/srgb/gpu/gpusrgb configs.
No public API changes.
TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1866293003
Review URL: https://codereview.chromium.org/1866293003
Diffstat (limited to 'src/gpu/text/GrAtlasTextContext.cpp')
-rw-r--r-- | src/gpu/text/GrAtlasTextContext.cpp | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/src/gpu/text/GrAtlasTextContext.cpp b/src/gpu/text/GrAtlasTextContext.cpp index 574993a3ca..6a1f7af4b3 100644 --- a/src/gpu/text/GrAtlasTextContext.cpp +++ b/src/gpu/text/GrAtlasTextContext.cpp @@ -53,14 +53,15 @@ GrColor GrAtlasTextContext::ComputeCanonicalColor(const SkPaint& paint, bool lcd return canonicalColor; } -SkPaint::FakeGamma GrAtlasTextContext::ComputeFakeGamma(GrDrawContext* dc, const GrPaint& grPaint) { +uint32_t GrAtlasTextContext::ComputeScalerContextFlags(GrDrawContext* dc, const GrPaint& grPaint) { // If we're rendering to an sRGB render target, and we aren't forcing sRGB blending off, - // then we can disable the gamma hacks. Otherwise, leave them on: + // then we can disable the gamma hacks. Otherwise, leave them on. In either case, we still + // want the contrast boost: if (GrPixelConfigIsSRGB(dc->accessRenderTarget()->config()) && !grPaint.getDisableOutputConversionToSRGB()) { - return SkPaint::FakeGamma::Off; + return SkPaint::kBoostContrast_ScalerContextFlag; } else { - return SkPaint::FakeGamma::On; + return SkPaint::kFakeGammaAndBoostContrast_ScalerContextFlags; } } @@ -127,7 +128,7 @@ void GrAtlasTextContext::drawTextBlob(GrContext* context, GrDrawContext* dc, return; } - SkPaint::FakeGamma fakeGamma = ComputeFakeGamma(dc, grPaint); + uint32_t scalerContextFlags = ComputeScalerContextFlags(dc, grPaint); if (cacheBlob) { if (cacheBlob->mustRegenerate(skPaint, grPaint.getColor(), blurRec, viewMatrix, x, y)) { @@ -138,7 +139,7 @@ void GrAtlasTextContext::drawTextBlob(GrContext* context, GrDrawContext* dc, cacheBlob.reset(SkRef(cache->createCachedBlob(blob, key, blurRec, skPaint))); RegenerateTextBlob(cacheBlob, context->getBatchFontCache(), *context->caps()->shaderCaps(), skPaint, grPaint.getColor(), - fakeGamma, viewMatrix, props, + scalerContextFlags, viewMatrix, props, blob, x, y, drawFilter); } else { cache->makeMRU(cacheBlob); @@ -151,7 +152,7 @@ void GrAtlasTextContext::drawTextBlob(GrContext* context, GrDrawContext* dc, sanityBlob->setupKey(key, blurRec, skPaint); RegenerateTextBlob(sanityBlob, context->getBatchFontCache(), *context->caps()->shaderCaps(), skPaint, - grPaint.getColor(), fakeGamma, viewMatrix, props, + grPaint.getColor(), scalerContextFlags, viewMatrix, props, blob, x, y, drawFilter); GrAtlasTextBlob::AssertEqual(*sanityBlob, *cacheBlob); } @@ -164,7 +165,7 @@ void GrAtlasTextContext::drawTextBlob(GrContext* context, GrDrawContext* dc, } RegenerateTextBlob(cacheBlob, context->getBatchFontCache(), *context->caps()->shaderCaps(), skPaint, grPaint.getColor(), - fakeGamma, viewMatrix, props, + scalerContextFlags, viewMatrix, props, blob, x, y, drawFilter); } @@ -176,7 +177,7 @@ void GrAtlasTextContext::RegenerateTextBlob(GrAtlasTextBlob* cacheBlob, GrBatchFontCache* fontCache, const GrShaderCaps& shaderCaps, const SkPaint& skPaint, GrColor color, - SkPaint::FakeGamma fakeGamma, + uint32_t scalerContextFlags, const SkMatrix& viewMatrix, const SkSurfaceProps& props, const SkTextBlob* blob, SkScalar x, SkScalar y, @@ -208,25 +209,25 @@ void GrAtlasTextContext::RegenerateTextBlob(GrAtlasTextBlob* cacheBlob, switch (it.positioning()) { case SkTextBlob::kDefault_Positioning: { GrTextUtils::DrawDFText(cacheBlob, run, fontCache, - props, runPaint, color, fakeGamma, viewMatrix, - (const char *)it.glyphs(), textLen, + props, runPaint, color, scalerContextFlags, + viewMatrix, (const char *)it.glyphs(), textLen, x + offset.x(), y + offset.y()); break; } case SkTextBlob::kHorizontal_Positioning: { SkPoint dfOffset = SkPoint::Make(x, y + offset.y()); GrTextUtils::DrawDFPosText(cacheBlob, run, fontCache, - props, runPaint, color, fakeGamma, viewMatrix, - (const char*)it.glyphs(), textLen, it.pos(), - 1, dfOffset); + props, runPaint, color, scalerContextFlags, + viewMatrix, (const char*)it.glyphs(), textLen, + it.pos(), 1, dfOffset); break; } case SkTextBlob::kFull_Positioning: { SkPoint dfOffset = SkPoint::Make(x, y); GrTextUtils::DrawDFPosText(cacheBlob, run, fontCache, - props, runPaint, color, fakeGamma, viewMatrix, - (const char*)it.glyphs(), textLen, it.pos(), - 2, dfOffset); + props, runPaint, color, scalerContextFlags, + viewMatrix, (const char*)it.glyphs(), textLen, + it.pos(), 2, dfOffset); break; } } @@ -236,21 +237,21 @@ void GrAtlasTextContext::RegenerateTextBlob(GrAtlasTextBlob* cacheBlob, switch (it.positioning()) { case SkTextBlob::kDefault_Positioning: GrTextUtils::DrawBmpText(cacheBlob, run, fontCache, - props, runPaint, color, fakeGamma, viewMatrix, - (const char *)it.glyphs(), textLen, + props, runPaint, color, scalerContextFlags, + viewMatrix, (const char *)it.glyphs(), textLen, x + offset.x(), y + offset.y()); break; case SkTextBlob::kHorizontal_Positioning: GrTextUtils::DrawBmpPosText(cacheBlob, run, fontCache, - props, runPaint, color, fakeGamma, viewMatrix, - (const char*)it.glyphs(), textLen, it.pos(), 1, - SkPoint::Make(x, y + offset.y())); + props, runPaint, color, scalerContextFlags, + viewMatrix, (const char*)it.glyphs(), textLen, + it.pos(), 1, SkPoint::Make(x, y + offset.y())); break; case SkTextBlob::kFull_Positioning: GrTextUtils::DrawBmpPosText(cacheBlob, run, fontCache, - props, runPaint, color, fakeGamma, viewMatrix, - (const char*)it.glyphs(), textLen, it.pos(), 2, - SkPoint::Make(x, y)); + props, runPaint, color, scalerContextFlags, + viewMatrix, (const char*)it.glyphs(), textLen, + it.pos(), 2, SkPoint::Make(x, y)); break; } } @@ -268,7 +269,7 @@ GrAtlasTextContext::CreateDrawTextBlob(GrTextBlobCache* blobCache, const GrShaderCaps& shaderCaps, const GrPaint& paint, const SkPaint& skPaint, - SkPaint::FakeGamma fakeGamma, + uint32_t scalerContextFlags, const SkMatrix& viewMatrix, const SkSurfaceProps& props, const char text[], size_t byteLength, @@ -279,12 +280,11 @@ GrAtlasTextContext::CreateDrawTextBlob(GrTextBlobCache* blobCache, blob->initThrowawayBlob(viewMatrix, x, y); if (GrTextUtils::CanDrawAsDistanceFields(skPaint, viewMatrix, props, shaderCaps)) { - GrTextUtils::DrawDFText(blob, 0, fontCache, props, - skPaint, paint.getColor(), fakeGamma, viewMatrix, text, - byteLength, x, y); + GrTextUtils::DrawDFText(blob, 0, fontCache, props, skPaint, paint.getColor(), + scalerContextFlags, viewMatrix, text, byteLength, x, y); } else { - GrTextUtils::DrawBmpText(blob, 0, fontCache, props, skPaint, - paint.getColor(), fakeGamma, viewMatrix, text, byteLength, x, y); + GrTextUtils::DrawBmpText(blob, 0, fontCache, props, skPaint, paint.getColor(), + scalerContextFlags, viewMatrix, text, byteLength, x, y); } return blob; } @@ -292,7 +292,7 @@ GrAtlasTextContext::CreateDrawTextBlob(GrTextBlobCache* blobCache, inline GrAtlasTextBlob* GrAtlasTextContext::CreateDrawPosTextBlob(GrTextBlobCache* blobCache, GrBatchFontCache* fontCache, const GrShaderCaps& shaderCaps, const GrPaint& paint, - const SkPaint& skPaint, SkPaint::FakeGamma fakeGamma, + const SkPaint& skPaint, uint32_t scalerContextFlags, const SkMatrix& viewMatrix, const SkSurfaceProps& props, const char text[], size_t byteLength, const SkScalar pos[], int scalarsPerPosition, @@ -304,11 +304,11 @@ GrAtlasTextContext::CreateDrawPosTextBlob(GrTextBlobCache* blobCache, GrBatchFon if (GrTextUtils::CanDrawAsDistanceFields(skPaint, viewMatrix, props, shaderCaps)) { GrTextUtils::DrawDFPosText(blob, 0, fontCache, props, - skPaint, paint.getColor(), fakeGamma, viewMatrix, text, + skPaint, paint.getColor(), scalerContextFlags, viewMatrix, text, byteLength, pos, scalarsPerPosition, offset); } else { GrTextUtils::DrawBmpPosText(blob, 0, fontCache, props, skPaint, - paint.getColor(), fakeGamma, viewMatrix, text, + paint.getColor(), scalerContextFlags, viewMatrix, text, byteLength, pos, scalarsPerPosition, offset); } return blob; @@ -329,7 +329,7 @@ void GrAtlasTextContext::drawText(GrContext* context, CreateDrawTextBlob(context->getTextBlobCache(), context->getBatchFontCache(), *context->caps()->shaderCaps(), paint, skPaint, - ComputeFakeGamma(dc, paint), + ComputeScalerContextFlags(dc, paint), viewMatrix, props, text, byteLength, x, y)); blob->flushThrowaway(context, dc, props, fDistanceAdjustTable, skPaint, paint, @@ -359,7 +359,7 @@ void GrAtlasTextContext::drawPosText(GrContext* context, context->getBatchFontCache(), *context->caps()->shaderCaps(), paint, skPaint, - ComputeFakeGamma(dc, paint), + ComputeScalerContextFlags(dc, paint), viewMatrix, props, text, byteLength, pos, scalarsPerPosition, @@ -423,7 +423,7 @@ DRAW_BATCH_TEST_DEFINE(TextBlobBatch) { GrAtlasTextContext::CreateDrawTextBlob(context->getTextBlobCache(), context->getBatchFontCache(), *context->caps()->shaderCaps(), grPaint, skPaint, - GrAtlasTextContext::kTextBlobBatchFakeGamma, + GrAtlasTextContext::kTextBlobBatchScalerContextFlags, viewMatrix, gSurfaceProps, text, static_cast<size_t>(textLen), x, y)); |