On certain device screens / device scale factors (DSF), we can end up with non-optimal tilings as GPU raster does not take DSF rounding into account when calculating tile width.
Consider a theoretical device with a screen resolution of 1502x2560 and a DSF of 3.5.
In this case, mobile content with 100% width would be sized as:
ceil(1502 / 3.5) = ceil(429.1...) = 430 DIPs
Because of the ceil operation, we've grown the content bounds slightly, and if we convert the content bounds back to device pixels (DPs) we get:
ceil(430 * 3.5) = 1505 DPs
Despite content being sized at 1505, GPU tile width is based on original viewport width (1502). With rounding, this can sometimes work out, but in this case we end up with a final GPU tile size of 1504.
Because the tile is narrower than the content, we end up using an entire extra tile to accommodate 1 column of pixels.
Instead, we should adjust the GPU tile size for the DSF rounding, avoiding this case.
Comment 1 by bugdroid1@chromium.org
, Jan 10 2018