[graphite] Remove data payload from PaintParamsKey

Fixed-function blending was the only real use (outside of tests) for
storing key-affecting data into a PaintParamsKey. There was a lot of
infrastructure for more complicated paint specializations that are
unlikely to be used. Instead, the SkSL module system makes it easy to
write simple functions that specialize and it's simple to define a new
BuiltInCodeSnippetID as needed.

With the blend mode no longer stored in the key, this adds new code
IDs for each of the coefficient blend modes. The skgpu::BlendInfo is
not stored on the PaintParamsKeyBuilder or ShaderCodeDictionary::Entry
anymore, but is instead set directly on the extracted ShaderInfo by
the PaintParamsKey when parsing the key and a fixed-function code ID
is encountered.

This is the first step in simplifying key generation and uniform data
gathering. The rough plan is:
1. this
2. remove block size from the key data; it can be reconstructed when
   creating block readers
3. simplify BlockReader to an indexable tree of ShaderSnippets
4. move flag gathering to only happen during pipeline creation
5. consolidate the definitions of the blocks and data (currently in
   KeyHelpers) and the snippet entries (currently in ShaderCodeDict)
6. write uniforms without as many abstraction layers
   - fewer intermediate structs
   - make sure writing functions are inlinable
7. magic a way to combine SkFoo->snippet and Precompile->snippet logic

Bug: b/251493570
Change-Id: I0e20f57028cf828639f53e6c515ebba285a8bf08
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/663438
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
7 files changed