Use texture size to determine precision of texture coord varyings.

Review URL: https://codereview.chromium.org/778783002
Move shader precision out of GrShaderVar

Review URL: https://codereview.chromium.org/777443003
Make addUniform take a precision

Review URL: https://codereview.chromium.org/788733003
Increase timeouts for CSS3Gradients and GooglePlus pagesets

BUG=skia:3187
BUG=skia:3196

Review URL: https://codereview.chromium.org/786353002
Switch non-MPD nanobench path to use a separate canvas per tile

It is desirable that, when layer hoisting is disabled, the MPD and non-MPD timings be
roughly the same. Unfortunately, using a separate canvas for each tile (a requirement
for MPD) introduces its own discrepancy into the timing. Using a separate canvas for
each tile doesn't seem to make a difference for 8888 (see the non-MPD 8888 column below)
but slows down GPU rendering (see the non-MPD GPU column below). Since this is how
Chromium renders I propose switching to this regimen (even though it is "slowing down"
GPU rendering).

nanobench mean times (ms) with layer hoisting disabled (for desk_amazon.skp)

8888
                          MPD     non-MPD
1 canvas (old-style)     0.628    1.71
separate (new-style)     0.795    1.63

GPU
                          MPD     non-MPD
1 canvas (old-style)     2.34     1.69
separate (new-style)     2.32     2.66

Review URL: https://codereview.chromium.org/779643002
Update nanobench so the non-MPD path doesn't permit layer hoisting

Review URL: https://codereview.chromium.org/787923002
Rename CustomCoordTextureEffect to GrBitmapTextGeoProc.

Also add in explicit set for LCD text in invariantOutput.

BUG=skia:

Review URL: https://codereview.chromium.org/786293002
Use GrCoordTransform precision to set uniform matrix precision

Review URL: https://codereview.chromium.org/784103003
Use threshold of 1 texture coord value per pixel w/ nearest neighbor.

Review URL: https://codereview.chromium.org/787873002
Make all blending up to GrOptDrawState be handled by the xp/xp factory.

In this cl the blending information is extracted for the xp and stored in the ODS
which is then used as it currently is. In the follow up cl, an XP backend will be added
and at that point all blending work will take place inside XP's.

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/7c66342a399b529634bed0fabfaa562db2c0dbd4

Review URL: https://codereview.chromium.org/759713002
Don't call GetShaderPrecisionFormat for geometry shaders.

TBR=egdaniel@google.com

Review URL: https://codereview.chromium.org/791713002
Fix for alpha textures on Nexus 6.

Nexus 6 appears to require a sized internal format for A8 textures, much
like other newer mobile devices. Changed to use sized format for A8
textures in general with ES 3.0.

Review URL: https://codereview.chromium.org/783523003
change SkPoint::setLength to set itself to (0,0) if it starting length is degenerate.

BUG=skia:3203
TBR=caryclark

Review URL: https://codereview.chromium.org/785933003
Rebaseline after texture coord precision changes.

TBR=scroggo@google.com

Review URL: https://codereview.chromium.org/788903003
patch from issue 770383002 at patchset 160001 (http://crrev.com/770383002#ps160001)