Index: src/gpu/text/GrAtlasTextContext.cpp |
diff --git a/src/gpu/text/GrAtlasTextContext.cpp b/src/gpu/text/GrAtlasTextContext.cpp |
index 574993a3ca683aec8a1994bc9e2b6ba6d5f5fe4a..6a1f7af4b3bd457d1abce556550cafc0368d7d2a 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)); |