From 85c6f9849ed72f859680e93e7d24e3f61ff280f9 Mon Sep 17 00:00:00 2001 From: fmalita Date: Mon, 29 Feb 2016 09:18:31 -0800 Subject: [PATCH] Use enclosing int rect for picture shader tiles To avoid rounding to zero for very small tiles. BUG=chromium:590447 R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1749763002 Review URL: https://codereview.chromium.org/1749763002 --- src/core/SkPictureShader.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp index 8f6d43f..f1addad 100644 --- a/src/core/SkPictureShader.cpp +++ b/src/core/SkPictureShader.cpp @@ -197,14 +197,18 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& viewMatrix, const SkM } #endif - SkISize tileSize = scaledSize.toRound(); +#ifdef SK_SUPPORT_LEGACY_PICTURESHADER_ROUNDING + const SkISize tileSize = scaledSize.toRound(); +#else + const SkISize tileSize = scaledSize.toCeil(); +#endif if (tileSize.isEmpty()) { return SkShader::CreateEmptyShader(); } // The actual scale, compensating for rounding & clamping. - SkSize tileScale = SkSize::Make(SkIntToScalar(tileSize.width()) / fTile.width(), - SkIntToScalar(tileSize.height()) / fTile.height()); + const SkSize tileScale = SkSize::Make(SkIntToScalar(tileSize.width()) / fTile.width(), + SkIntToScalar(tileSize.height()) / fTile.height()); SkAutoTUnref tileShader; BitmapShaderKey key(fPicture->uniqueID(), -- 2.7.4