intel/compiler: Drop non-scoped barrier handling

Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21634>
This commit is contained in:
Caio Oliveira
2023-03-02 15:43:00 -08:00
committed by Marge Bot
parent 02eef8ca98
commit c92d589597
3 changed files with 6 additions and 32 deletions

View File

@@ -2765,16 +2765,13 @@ fs_visitor::nir_emit_tcs_intrinsic(const fs_builder &bld,
break; break;
case nir_intrinsic_scoped_barrier: case nir_intrinsic_scoped_barrier:
case nir_intrinsic_control_barrier: { if (nir_intrinsic_memory_scope(instr) != NIR_SCOPE_NONE)
const bool scoped = instr->intrinsic == nir_intrinsic_scoped_barrier;
if (scoped && nir_intrinsic_memory_scope(instr) != NIR_SCOPE_NONE)
nir_emit_intrinsic(bld, instr); nir_emit_intrinsic(bld, instr);
if (!scoped || nir_intrinsic_execution_scope(instr) == NIR_SCOPE_WORKGROUP) { if (nir_intrinsic_execution_scope(instr) == NIR_SCOPE_WORKGROUP) {
if (tcs_prog_data->instances != 1) if (tcs_prog_data->instances != 1)
emit_tcs_barrier(); emit_tcs_barrier();
} }
break; break;
}
case nir_intrinsic_load_input: case nir_intrinsic_load_input:
unreachable("nir_lower_io should never give us these."); unreachable("nir_lower_io should never give us these.");
@@ -3696,11 +3693,9 @@ fs_visitor::nir_emit_cs_intrinsic(const fs_builder &bld,
switch (instr->intrinsic) { switch (instr->intrinsic) {
case nir_intrinsic_scoped_barrier: case nir_intrinsic_scoped_barrier:
case nir_intrinsic_control_barrier: { if (nir_intrinsic_memory_scope(instr) != NIR_SCOPE_NONE)
const bool scoped = instr->intrinsic == nir_intrinsic_scoped_barrier;
if (scoped && nir_intrinsic_memory_scope(instr) != NIR_SCOPE_NONE)
nir_emit_intrinsic(bld, instr); nir_emit_intrinsic(bld, instr);
if (!scoped || nir_intrinsic_execution_scope(instr) == NIR_SCOPE_WORKGROUP) { if (nir_intrinsic_execution_scope(instr) == NIR_SCOPE_WORKGROUP) {
/* The whole workgroup fits in a single HW thread, so all the /* The whole workgroup fits in a single HW thread, so all the
* invocations are already executed lock-step. Instead of an actual * invocations are already executed lock-step. Instead of an actual
* barrier just emit a scheduling fence, that will generate no code. * barrier just emit a scheduling fence, that will generate no code.
@@ -3715,7 +3710,6 @@ fs_visitor::nir_emit_cs_intrinsic(const fs_builder &bld,
cs_prog_data->uses_barrier = true; cs_prog_data->uses_barrier = true;
} }
break; break;
}
case nir_intrinsic_load_subgroup_id: case nir_intrinsic_load_subgroup_id:
cs_payload().load_subgroup_id(bld, dest); cs_payload().load_subgroup_id(bld, dest);
@@ -4358,14 +4352,6 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
break; break;
} }
case nir_intrinsic_group_memory_barrier:
case nir_intrinsic_memory_barrier_shared:
case nir_intrinsic_memory_barrier_buffer:
case nir_intrinsic_memory_barrier_image:
case nir_intrinsic_memory_barrier:
case nir_intrinsic_memory_barrier_atomic_counter:
unreachable("unexpected barrier, expecting only nir_intrinsic_scoped_barrier");
case nir_intrinsic_scoped_barrier: case nir_intrinsic_scoped_barrier:
case nir_intrinsic_begin_invocation_interlock: case nir_intrinsic_begin_invocation_interlock:
case nir_intrinsic_end_invocation_interlock: { case nir_intrinsic_end_invocation_interlock: {
@@ -4616,9 +4602,6 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
break; break;
} }
case nir_intrinsic_memory_barrier_tcs_patch:
break;
case nir_intrinsic_shader_clock: { case nir_intrinsic_shader_clock: {
/* We cannot do anything if there is an event, so ignore it for now */ /* We cannot do anything if there is an event, so ignore it for now */
const fs_reg shader_clock = get_timestamp(bld); const fs_reg shader_clock = get_timestamp(bld);

View File

@@ -714,9 +714,6 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
break; break;
} }
case nir_intrinsic_memory_barrier:
unreachable("expecting only nir_intrinsic_scoped_barrier");
case nir_intrinsic_scoped_barrier: { case nir_intrinsic_scoped_barrier: {
if (nir_intrinsic_memory_scope(instr) == NIR_SCOPE_NONE) if (nir_intrinsic_memory_scope(instr) == NIR_SCOPE_NONE)
break; break;

View File

@@ -305,20 +305,14 @@ vec4_tcs_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
} }
case nir_intrinsic_scoped_barrier: case nir_intrinsic_scoped_barrier:
case nir_intrinsic_control_barrier: { if (nir_intrinsic_memory_scope(instr) != NIR_SCOPE_NONE)
const bool scoped = instr->intrinsic == nir_intrinsic_scoped_barrier;
if (scoped && nir_intrinsic_memory_scope(instr) != NIR_SCOPE_NONE)
vec4_visitor::nir_emit_intrinsic(instr); vec4_visitor::nir_emit_intrinsic(instr);
if (!scoped || nir_intrinsic_execution_scope(instr) == NIR_SCOPE_WORKGROUP) { if (nir_intrinsic_execution_scope(instr) == NIR_SCOPE_WORKGROUP) {
dst_reg header = dst_reg(this, glsl_type::uvec4_type); dst_reg header = dst_reg(this, glsl_type::uvec4_type);
emit(TCS_OPCODE_CREATE_BARRIER_HEADER, header); emit(TCS_OPCODE_CREATE_BARRIER_HEADER, header);
emit(SHADER_OPCODE_BARRIER, dst_null_ud(), src_reg(header)); emit(SHADER_OPCODE_BARRIER, dst_null_ud(), src_reg(header));
} }
break; break;
}
case nir_intrinsic_memory_barrier_tcs_patch:
break;
default: default:
vec4_visitor::nir_emit_intrinsic(instr); vec4_visitor::nir_emit_intrinsic(instr);