support 64-bit gather()
This splits 64-bit PixelFormats into two 32-bit parts and gathers both
independently. E.g.
F16 = {HALF, 16,16,16,16, 0,16,32,48}
~> lo = {HALF, 16,16, 0, 0, 0,16,32,32}
~> hi = {HALF, 0, 0,16,16, 32,32, 0,16}
The logic at the end merges the channels we gather from each part.
This all does strongly assume no channel straddles lo/hi, which we
assert. We'd need to get more clever to handle something like
20-20-20-4. I'm working on load() and store() now, and they'll need
this same format assumption.
Since I've so far only added support for gather(), I've introduced a
little temporary hack in SkImageShader to let it work just to demo this
all. This hack will go away when I add support for load and store.
Change-Id: Ic4cfda7922f2e51bb7698adedf6f655de43da630
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/303320
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2 files changed