From: hendrikw Date: Tue, 31 Mar 2015 19:02:48 +0000 (-0700) Subject: skia: Fix text subpixel half sample default for GPU rasterization X-Git-Tag: accepted/tizen/5.0/unified/20181102.025319~2963 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e0f812a7a107986dfa72e6855c1608b077428136;p=platform%2Fupstream%2FlibSkiaSharp.git skia: Fix text subpixel half sample default for GPU rasterization In software, SkDraw1Glyph::Proc SkDraw1Glyph::init initializes fHalfSampleX, fHalfSampleY to SkGlyph::kSubpixelRound. In hardware, however, these values were initialized to zero. Fix, match software's implementation BUG=471919 Review URL: https://codereview.chromium.org/1047803004 --- diff --git a/src/gpu/GrBitmapTextContext.cpp b/src/gpu/GrBitmapTextContext.cpp index dd01e7d..4eeb172 100755 --- a/src/gpu/GrBitmapTextContext.cpp +++ b/src/gpu/GrBitmapTextContext.cpp @@ -227,7 +227,6 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, const char* stop = text + byteLength; SkTextAlignProc alignProc(fSkPaint.getTextAlign()); SkTextMapStateProc tmsProc(viewMatrix, offset, scalarsPerPosition); - SkScalar halfSampleX = 0, halfSampleY = 0; if (cache->isSubpixel()) { // maybe we should skip the rounding if linearText is set @@ -235,6 +234,8 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, SkFixed fxMask = ~0; SkFixed fyMask = ~0; + SkScalar halfSampleX = SkFixedToScalar(SkGlyph::kSubpixelRound); + SkScalar halfSampleY = SkFixedToScalar(SkGlyph::kSubpixelRound); if (kX_SkAxisAlignment == baseline) { fyMask = 0; halfSampleY = SK_ScalarHalf; @@ -310,8 +311,8 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, SkPoint tmsLoc; tmsProc(pos, &tmsLoc); - Sk48Dot16 fx = SkScalarTo48Dot16(tmsLoc.fX + SK_ScalarHalf); //halfSampleX; - Sk48Dot16 fy = SkScalarTo48Dot16(tmsLoc.fY + SK_ScalarHalf); //halfSampleY; + Sk48Dot16 fx = SkScalarTo48Dot16(tmsLoc.fX + SK_ScalarHalf); + Sk48Dot16 fy = SkScalarTo48Dot16(tmsLoc.fY + SK_ScalarHalf); this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), glyph.getSubXFixed(), glyph.getSubYFixed(), @@ -334,8 +335,8 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, SkPoint alignLoc; alignProc(tmsLoc, glyph, &alignLoc); - Sk48Dot16 fx = SkScalarTo48Dot16(alignLoc.fX + SK_ScalarHalf); //halfSampleX; - Sk48Dot16 fy = SkScalarTo48Dot16(alignLoc.fY + SK_ScalarHalf); //halfSampleY; + Sk48Dot16 fx = SkScalarTo48Dot16(alignLoc.fX + SK_ScalarHalf); + Sk48Dot16 fy = SkScalarTo48Dot16(alignLoc.fY + SK_ScalarHalf); this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), glyph.getSubXFixed(), glyph.getSubYFixed(),