aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/text/GrAtlasTextContext.cpp
diff options
context:
space:
mode:
authorGravatar brianosman <brianosman@google.com>2016-04-08 06:47:54 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-08 06:47:54 -0700
commita1e8f8d8f1a0b7141136d7d49df1cc2fec0528df (patch)
tree9249c051645ac31322729f11d3caa4c619aa7b73 /src/gpu/text/GrAtlasTextContext.cpp
parentb63c5766c3dece300167b41c5c4e30b7b330dfaa (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.cpp74
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));