mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-07 19:30:12 +01:00
i965/nir/vec4: Implement atomic counter intrinsics (read, inc and dec)
The implementation is based on its fs_nir counterpart. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
e6cafb5dfd
commit
98d07022f5
1 changed files with 25 additions and 2 deletions
|
|
@ -551,9 +551,32 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
|
|||
|
||||
case nir_intrinsic_atomic_counter_read:
|
||||
case nir_intrinsic_atomic_counter_inc:
|
||||
case nir_intrinsic_atomic_counter_dec:
|
||||
/* @TODO: Not yet implemented */
|
||||
case nir_intrinsic_atomic_counter_dec: {
|
||||
unsigned surf_index = prog_data->base.binding_table.abo_start +
|
||||
(unsigned) instr->const_index[0];
|
||||
src_reg offset = get_nir_src(instr->src[0], nir_type_int,
|
||||
instr->num_components);
|
||||
dest = get_nir_dest(instr->dest);
|
||||
|
||||
switch (instr->intrinsic) {
|
||||
case nir_intrinsic_atomic_counter_inc:
|
||||
emit_untyped_atomic(BRW_AOP_INC, surf_index, dest, offset,
|
||||
src_reg(), src_reg());
|
||||
break;
|
||||
case nir_intrinsic_atomic_counter_dec:
|
||||
emit_untyped_atomic(BRW_AOP_PREDEC, surf_index, dest, offset,
|
||||
src_reg(), src_reg());
|
||||
break;
|
||||
case nir_intrinsic_atomic_counter_read:
|
||||
emit_untyped_surface_read(surf_index, dest, offset);
|
||||
break;
|
||||
default:
|
||||
unreachable("Unreachable");
|
||||
}
|
||||
|
||||
brw_mark_surface_used(stage_prog_data, surf_index);
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_load_ubo_indirect:
|
||||
/* fallthrough */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue