mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 11:00:11 +01:00
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:
parent
d8a45db591
commit
c696fc4392
1 changed files with 12 additions and 51 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue