Conor McCarthy (@cmccarthy) commented about libs/vkd3d-shader/spirv.c:
if (component_type != reg_info->component_type) {
type_id = vkd3d_spirv_get_type_id(builder, component_type, 1);
val_id = vkd3d_spirv_build_op_bitcast(builder, type_id, val_id);
if (component_type == VKD3D_SHADER_COMPONENT_BOOL)
{
type_id = vkd3d_spirv_get_type_id(builder, VKD3D_SHADER_COMPONENT_UINT, 1);
val_id = vkd3d_spirv_build_op_bitcast(builder, type_id, val_id);
This assumes `val_id` is not already `UINT`, which is always true here because it's only used for temps, but if another source of `BOOL` occurs it will fail SPIR-V validation. No-op bitcasts are not a problem but the validator rejects them anyway.