Adjust atlas sizes to fix Mali400 precision issues
authorjvanverth <jvanverth@google.com>
Wed, 11 Mar 2015 18:18:11 +0000 (11:18 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 11 Mar 2015 18:18:11 +0000 (11:18 -0700)
commitcb251f1d0a8aa7f3e6f685b45046173fc05f4b92
treea2af4123c0d145bc2e697b22cf53eda0061a29b0
parent6ba791f66128ebbe401978103baf7b5ec0ac98cd
Adjust atlas sizes to fix Mali400 precision issues

The previous change to atlas sizes introduced an issue where texture
coordinates for glyphs stored on the right side of the atlas were being
computed in an imprecise manner on Mali400 chips.

The only reasonable fix appears to be to use power-of-two texture sizes.
This widens the glyph atlas to the next power of 2 (or 2048) for A8 glyphs
only, and widens each GrPlot by 2x as well. By doing this, we can fit 3-4 large
distance field glyphs into a single GrPlot, which gives us 100-128 total large
glyphs at one time.

The 565 and 8888 glyph atlases are kept in their original size to preserve
space.

BUG=skia:3523

Review URL: https://codereview.chromium.org/994303003
src/gpu/GrDistanceFieldTextContext.cpp
src/gpu/GrFontAtlasSizes.h
src/gpu/GrFontCache.cpp
src/gpu/effects/GrBitmapTextGeoProc.cpp
src/gpu/effects/GrDistanceFieldTextureEffect.cpp