[raster] Don't use lowp when sampling outside range [-32,768, 32,767]

Uses highp for bilerp if we know we will be sampling points too large
for int16_t. Examples of this happening are in the GM's in [1] and the
raster pipeline version of [2].

Added fDstBounds to SkStageRec struct, so that I could pass in the
bounds of geometry in device space to use to check if we can use lowp.
This is done by transforming with the baseInv matrix in
SkImageShader.cpp which goes from device space to shader space. Then we
can check the transformed device to shader bounds pts.

Review suggestion:

Entry point to adding geometry bounds to the blitter:
    -SkDraw.cpp/h

Had to add parameter to SkAutoBlitterChoose, SkBlitter::Choose, and
SkCreateRasterPipelineBlitter:
    -SkAutoBlitterChoose.h
    -SkBlitter.h/cpp
    -SkBlitter_A8.h/cpp
    -SkCoreBlitters.h

Field added to SkStageRec to pass the bounds to the raster pipeline
blitter:
    -SkEffectPriv.h
    -SkRasterPipelineBlitter.cpp
    -SkDraw_atlas.cpp
    -SkDraw_text.cpp
    -SkRuntimeEffectPriv.h
    -SkColorFilterBase.cpp
    -SkWorkingFormatColorFilter.cpp
    -SkWorkingColorSpaceShader.cpp
    -SkDraw_vertices.cpp

Logic for forcing to highp when needed:
    -SkImageShader.cpp
    -SkRasterPipeline_opts.h
    -SkRasterPipelineOpList.h

[1] https://skia-review.googlesource.com/c/skia/+/1030356

[2] https://skia-review.googlesource.com/c/skia/+/1043716

Bug: 404394639
Change-Id: Ic72d6e0418c259d2e8f2931e35c1476e997f4deb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1043476
Auto-Submit: Daniel Dilan <danieldilan@google.com>
Commit-Queue: Daniel Dilan <danieldilan@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
20 files changed