workaround for Intel OpCompositeConstruct bug

The SPIR-V spec permits constructing a vector from mixed vectors and
scalars, e.g. vec3(vec2, float). Intel's Vulkan driver does not handle
this correctly. We already have a workaround in place for vector
construction (writing the code as vec3(vec2.x, vec2.y, float) instead),
but missed that matrix construction can produce the same problem, as
each column requires a vector to be constructed for it. This CL extends
the workaround to handle matrix construction as well.

Bug: skia:7851
Change-Id: I0fe5d300ec7ad5db87bcc6662cf8371bcd6deed8
Reviewed-on: https://skia-review.googlesource.com/124321
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
1 file changed