start on lowp shaders

We're going to want to assign types to the stages depending on their
inputs and outputs:
  GG: x,y -> x,y
  GP: x,y -> r,g,b,a
  PP: r,g,b,a -> r,g,b,a

(There are a couple other degenerate cases here, where a stage ignores
its inputs or creates no outputs, but we can always just pretend their
null input or output is one type or the other arbitrarily.)

The GG stages will be pretty much entirely float code, and the GP stages
a mix of float math and byte stuff.

Since we've chosen U16 to match our register size in _lowp land,
we'll unpack each F register across two of those for transport between
stages.  This is a notional, free operation in both directions.

Change-Id: I605311d0dc327a1a3a9d688173d9498c1658e715
Reviewed-on: https://skia-review.googlesource.com/60800
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
4 files changed