[Graphite] Plumb RootNodesInfo through all RenderStep SkSL functions

This is a change made for a follow up CL where we do the shader code
stitching for the MeshRenderStep
(https://skia-review.git.corp.google.com/c/skia/+/1307416).

In the future CLs we add a pointer to the SkMeshSpecification to the
RootNodesInfo
(https://skia-review.git.corp.google.com/c/skia/+/1307337/4) so we don't
have to constantly access the mesh specification via the mesh
shaderSnippetId.

Implementation of drawMesh CLs:

- This CL plumbs RootNodesInfo through all the render step sksl generation functions for future use within the MeshRenderStep.
- The next CL adds the support needed for explicit primitive color spaces and alpha types which can be defined by the user in SkMeshSpecification.
- For drawMesh to work with capturing enabled by default now in Viewer, I added the onDrawMesh impls in the applicable places to ensure the call is routed to the correct device (graphite/device.h).
- I then created the MeshRenderStep and the initial MeshShaderBlock within the paint key so the mesh specification info is embedded in the key and then defined in the root nodes info for use in ShaderInfo during vertex and fragment shader construction.
- I filled out the SkSL and uniform logic within MeshRenderStep, along with generating the vertex attributes and varyings within the vert/frag shaders within ShaderInfo depending on the SkMeshSpecification present in the root nodes. With SkMeshSpecification's having explicit attribute offsets, I also had to add that support to each gpu backend and derive the render steps stride via the DrawParams geometry.

Change-Id: If83efb57361a781ec6af4d4d908de0d7269e8da5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1305697
Commit-Queue: Nathan Sanchez <nathanasanchez@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
30 files changed