In SIMD32 programs that don't use discard, the upper 16 bits of the UD
result of sample_mask_reg() don't contain the sample mask of the upper
16 channels as one would expect. Stop pretending we are returning a
valid 32-bit mask.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
} else {
assert(v->devinfo->gen >= 6 && bld.dispatch_width() <= 16);
return retype(brw_vec1_grf((bld.group() >= 16 ? 2 : 1), 7),
- BRW_REGISTER_TYPE_UD);
+ BRW_REGISTER_TYPE_UW);
}
}
subreg + inst->group / 16).subnr);
} else {
bld.group(1, 0).exec_all()
- .MOV(brw_flag_subreg(subreg + inst->group / 16),
- retype(sample_mask, BRW_REGISTER_TYPE_UW));
+ .MOV(brw_flag_subreg(subreg + inst->group / 16), sample_mask);
}
if (inst->predicate) {