nak: Add a condition to bar_break_nv
Reviewed-by: M Henning <drawoc@darkrefraction.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28300>
This commit is contained in:
committed by
Marge Bot
parent
18c4c36ae2
commit
879c5c1dda
@@ -2154,7 +2154,7 @@ intrinsic("final_primitive_nv", src_comp=[1])
|
||||
barrier("copy_fs_outputs_nv")
|
||||
|
||||
intrinsic("bar_set_nv", dest_comp=1, bit_sizes=[32], flags=[CAN_ELIMINATE])
|
||||
intrinsic("bar_break_nv", dest_comp=1, bit_sizes=[32], src_comp=[1])
|
||||
intrinsic("bar_break_nv", dest_comp=1, bit_sizes=[32], src_comp=[1, 1])
|
||||
# src[] = { bar, bar_set }
|
||||
intrinsic("bar_sync_nv", src_comp=[1, 1])
|
||||
|
||||
|
||||
@@ -1919,12 +1919,13 @@ impl<'a> ShaderFromNir<'a> {
|
||||
nir_intrinsic_bar_break_nv => {
|
||||
let src = self.get_src(&srcs[0]);
|
||||
let bar_in = b.bmov_to_bar(src);
|
||||
let cond = self.get_src(&srcs[1]);
|
||||
|
||||
let bar_out = b.alloc_ssa(RegFile::Bar, 1);
|
||||
b.push_op(OpBreak {
|
||||
bar_out: bar_out.into(),
|
||||
bar_in: bar_in.into(),
|
||||
cond: SrcRef::True.into(),
|
||||
cond: cond.into(),
|
||||
});
|
||||
|
||||
self.set_dst(&intrin.def, b.bmov_to_gpr(bar_out.into()));
|
||||
|
||||
@@ -77,7 +77,7 @@ break_loop_bars(nir_block *block, struct add_barriers_state *state)
|
||||
util_dynarray_element(&state->barriers, struct barrier, idx);
|
||||
if (bar->node == p) {
|
||||
nir_def *bar_val = nir_load_reg(b, bar->bar_reg);
|
||||
bar_val = nir_bar_break_nv(b, bar_val);
|
||||
bar_val = nir_bar_break_nv(b, bar_val, nir_imm_true(b));
|
||||
nir_store_reg(b, bar_val, bar->bar_reg);
|
||||
idx--;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user