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:
@@ -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);
|
||||||
|
@@ -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;
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user