nir/spirv: Handle boolean uniforms correctly
This commit is contained in:
parent
b6562bbc30
commit
ca51d926fd
|
@ -573,7 +573,16 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,
|
|||
|
||||
nir_builder_instr_insert(&b->nb, &load->instr);
|
||||
val->type = src_type;
|
||||
val->ssa = &load->dest.ssa;
|
||||
|
||||
if (src->var->data.mode == nir_var_uniform &&
|
||||
glsl_get_base_type(src_type) == GLSL_TYPE_BOOL) {
|
||||
/* Uniform boolean loads need to be fixed up since they're defined
|
||||
* to be zero/nonzero rather than NIR_FALSE/NIR_TRUE.
|
||||
*/
|
||||
val->ssa = nir_ine(&b->nb, &load->dest.ssa, nir_imm_int(&b->nb, 0));
|
||||
} else {
|
||||
val->ssa = &load->dest.ssa;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue