spirv_assembly: Don't use booleans in SSBOs
The bool type in spirv isn't allowed in external storage. From the SPIR-V
spec for OpTypeBool:
> Values of this type can only be either true or false. There is no
> physical size or bit pattern defined for these values. If they are
> stored (in conjunction with OpVariable), they can only be used with
> logical addressing operations, not physical, and only with
> non-externally visible shader Storage Classes: Workgroup,
> CrossWorkgroup, Private, and Function.
Instead, we should use an integer and use OpSelect to convert from a
boolean to the expected 0/1 value the test wants.
See merge request !569