SPIRV: Track function signatures by SpvId(s), rather than display name

It's possible for two types that look distinct (float4 vs half4) to
resolve to the same type ID in the SPIRV. If two function signatures
differ only in that way ("half4 foo(half4)" vs. "half4 bar(float4)"),
we'd end up generating two identical function type declarations, which
is a validation error.

Instead, key the declarations that we've already emitted by resolved
SPIRV Id, so we notice that those functions can share a single type

Change-Id: Iea27101612f8990b3750424ca265ba04306f1f25
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/279217
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
1 file changed