In fragment shaders f0.1 is used for discards so doing ballot after a discard can potentially cause the discard to not happen.
Cc: mesa-sta...@lists.freedesktop.org --- src/intel/compiler/brw_fs_nir.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/intel/compiler/brw_fs_nir.cpp b/src/intel/compiler/brw_fs_nir.cpp index 513ff3e..ffb2d6a 100644 --- a/src/intel/compiler/brw_fs_nir.cpp +++ b/src/intel/compiler/brw_fs_nir.cpp @@ -4211,8 +4211,9 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr case nir_intrinsic_ballot: { const fs_reg value = retype(get_nir_src(instr->src[0]), BRW_REGISTER_TYPE_UD); - const struct brw_reg flag = retype(brw_flag_reg(0, 0), - BRW_REGISTER_TYPE_UD); + struct brw_reg flag = brw_flag_reg(0, 0); + if (dispatch_width == 32) + flag.type = BRW_REGISTER_TYPE_UD; bld.exec_all().MOV(flag, brw_imm_ud(0u)); bld.CMP(bld.null_reg_ud(), value, brw_imm_ud(0u), BRW_CONDITIONAL_NZ); -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev