diff options
author | fmalita <fmalita@chromium.org> | 2016-01-22 11:45:39 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-22 11:45:39 -0800 |
commit | 921d7ac75206740e69fc6bc9893971249a909fe1 (patch) | |
tree | 8eda0568a70f8035e6b37ace6fd43c830f93b3b3 /src/core/SkMipMap.cpp | |
parent | 7f6a1e078641c1acd135da6ad04b9be53b29cf0d (diff) |
Anisotropic mipmap fixes
1) when selecting a level scale, use max(scaleX, scaleY) instead of
current sqrt(scaleX * scaleY)
2) track and apply non-uniform fixup scales
R=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1617183004
Review URL: https://codereview.chromium.org/1617183004
Diffstat (limited to 'src/core/SkMipMap.cpp')
-rw-r--r-- | src/core/SkMipMap.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/core/SkMipMap.cpp b/src/core/SkMipMap.cpp index 14e87a33a3..c037865fd4 100644 --- a/src/core/SkMipMap.cpp +++ b/src/core/SkMipMap.cpp @@ -297,7 +297,13 @@ SkMipMap* SkMipMap::Build(const SkPixmap& src, SkDiscardableFactoryProc fact) { rowBytes = SkToU32(SkColorTypeMinRowBytes(ct, width)); levels[i].fPixmap = SkPixmap(SkImageInfo::Make(width, height, ct, at), addr, rowBytes); - levels[i].fScale = (float)width / src.width(); +#ifdef SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAPS + levels[i].fScale = SkSize::Make(SkIntToScalar(width) / src.width(), + SkIntToScalar(width) / src.width()); +#else + levels[i].fScale = SkSize::Make(SkIntToScalar(width) / src.width(), + SkIntToScalar(height) / src.height()); +#endif const SkPixmap& dstPM = levels[i].fPixmap; const void* srcBasePtr = srcPM.addr(); |