glsl: Assume use_scoped_barrier

True for all backends supporting barriers.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23191>
This commit is contained in:
Alyssa Rosenzweig 2023-06-06 16:43:26 -04:00 committed by Marge Bot
parent d8a45db591
commit c696fc4392

View file

@ -1121,9 +1121,12 @@ nir_visitor::visit(ir_call *ir)
atomic_op = nir_atomic_op_dec_wrap;
break;
case ir_intrinsic_memory_barrier:
op = shader->options->use_scoped_barrier
? nir_intrinsic_scoped_barrier
: nir_intrinsic_memory_barrier;
case ir_intrinsic_memory_barrier_buffer:
case ir_intrinsic_memory_barrier_image:
case ir_intrinsic_memory_barrier_shared:
case ir_intrinsic_memory_barrier_atomic_counter:
case ir_intrinsic_group_memory_barrier:
op = nir_intrinsic_scoped_barrier;
break;
case ir_intrinsic_image_size:
op = nir_intrinsic_image_deref_size;
@ -1143,31 +1146,6 @@ nir_visitor::visit(ir_call *ir)
case ir_intrinsic_end_invocation_interlock:
op = nir_intrinsic_end_invocation_interlock;
break;
case ir_intrinsic_group_memory_barrier:
op = shader->options->use_scoped_barrier
? nir_intrinsic_scoped_barrier
: nir_intrinsic_group_memory_barrier;
break;
case ir_intrinsic_memory_barrier_atomic_counter:
op = shader->options->use_scoped_barrier
? nir_intrinsic_scoped_barrier
: nir_intrinsic_memory_barrier_atomic_counter;
break;
case ir_intrinsic_memory_barrier_buffer:
op = shader->options->use_scoped_barrier
? nir_intrinsic_scoped_barrier
: nir_intrinsic_memory_barrier_buffer;
break;
case ir_intrinsic_memory_barrier_image:
op = shader->options->use_scoped_barrier
? nir_intrinsic_scoped_barrier
: nir_intrinsic_memory_barrier_image;
break;
case ir_intrinsic_memory_barrier_shared:
op = shader->options->use_scoped_barrier
? nir_intrinsic_scoped_barrier
: nir_intrinsic_memory_barrier_shared;
break;
case ir_intrinsic_vote_any:
op = nir_intrinsic_vote_any;
break;
@ -1404,14 +1382,6 @@ nir_visitor::visit(ir_call *ir)
nir_builder_instr_insert(&b, &instr->instr);
break;
}
case nir_intrinsic_memory_barrier:
case nir_intrinsic_group_memory_barrier:
case nir_intrinsic_memory_barrier_atomic_counter:
case nir_intrinsic_memory_barrier_buffer:
case nir_intrinsic_memory_barrier_image:
case nir_intrinsic_memory_barrier_shared:
nir_builder_instr_insert(&b, &instr->instr);
break;
case nir_intrinsic_scoped_barrier: {
/* The nir_intrinsic_scoped_barrier follows the general
* semantics of SPIR-V memory barriers, so this and other memory
@ -2681,21 +2651,12 @@ nir_visitor::visit(ir_dereference_array *ir)
void
nir_visitor::visit(ir_barrier *)
{
if (shader->options->use_scoped_barrier) {
if (shader->info.stage == MESA_SHADER_COMPUTE) {
nir_scoped_barrier(&b, NIR_SCOPE_WORKGROUP, NIR_SCOPE_WORKGROUP,
NIR_MEMORY_ACQ_REL, nir_var_mem_shared);
} else if (shader->info.stage == MESA_SHADER_TESS_CTRL) {
nir_scoped_barrier(&b, NIR_SCOPE_WORKGROUP, NIR_SCOPE_WORKGROUP,
NIR_MEMORY_ACQ_REL, nir_var_shader_out);
}
} else {
if (shader->info.stage == MESA_SHADER_COMPUTE)
nir_memory_barrier_shared(&b);
else if (shader->info.stage == MESA_SHADER_TESS_CTRL)
nir_memory_barrier_tcs_patch(&b);
nir_control_barrier(&b);
if (shader->info.stage == MESA_SHADER_COMPUTE) {
nir_scoped_barrier(&b, NIR_SCOPE_WORKGROUP, NIR_SCOPE_WORKGROUP,
NIR_MEMORY_ACQ_REL, nir_var_mem_shared);
} else if (shader->info.stage == MESA_SHADER_TESS_CTRL) {
nir_scoped_barrier(&b, NIR_SCOPE_WORKGROUP, NIR_SCOPE_WORKGROUP,
NIR_MEMORY_ACQ_REL, nir_var_shader_out);
}
}