Use packed contexts for small swizzles in SkRP.

Small (2/3/4-element) swizzles now use 8-bit offsets, and a 32-bit
base pointer RPOffset, in order to squeeze into a 64-bit context.

"Shuffles" (16-element swizzles) continue to use an unpacked
context and 16-bit offsets, but can still share an implementation;
a template papers over the difference.

Small swizzles are very common in SkRP since they are also used to
splat values, so this should be a useful optimization.

Change-Id: I52e6744da39aa59c7d9e49ba941d9631caba51cf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/677716
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
4 files changed