nir: Rename nir_intrinsic_barrier to control_barrier

This is a more explicit name now that we don't want it to be doing any
memory barrier stuff for us.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3307>
This commit is contained in:
Jason Ekstrand
2020-01-07 14:54:26 -06:00
committed by Marge Bot
parent bd3ab75aef
commit e40b11bbcb
18 changed files with 30 additions and 24 deletions
+6 -1
View File
@@ -195,7 +195,6 @@ intrinsic("get_buffer_size", src_comp=[-1], dest_comp=1,
def barrier(name):
intrinsic(name)
barrier("barrier")
barrier("discard")
# Demote fragment shader invocation to a helper invocation. Any stores to
@@ -207,6 +206,12 @@ barrier("discard")
barrier("demote")
intrinsic("is_helper_invocation", dest_comp=1, flags=[CAN_ELIMINATE])
# A workgroup-level control barrier. Any thread which hits this barrier will
# pause until all threads within the current workgroup have also hit the
# barrier. For compute shaders, the workgroup is defined as the local group.
# For tessellation control shaders, the workgroup is defined as the current
# patch. This intrinsic does not imply any sort of memory barrier.
barrier("control_barrier")
# Memory barrier with semantics analogous to the memoryBarrier() GLSL
# intrinsic.
+1 -1
View File
@@ -303,7 +303,7 @@ combine_stores_block(struct combine_stores_state *state, nir_block *block)
update_combined_store(state, intrin);
break;
case nir_intrinsic_barrier:
case nir_intrinsic_control_barrier:
case nir_intrinsic_group_memory_barrier:
case nir_intrinsic_memory_barrier:
combine_stores_with_modes(state, nir_var_shader_out |
+2 -2
View File
@@ -164,7 +164,7 @@ gather_vars_written(struct copy_prop_var_state *state,
nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
switch (intrin->intrinsic) {
case nir_intrinsic_barrier:
case nir_intrinsic_control_barrier:
case nir_intrinsic_memory_barrier:
written->modes |= nir_var_shader_out |
nir_var_mem_ssbo |
@@ -798,7 +798,7 @@ copy_prop_vars_block(struct copy_prop_var_state *state,
nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
switch (intrin->intrinsic) {
case nir_intrinsic_barrier:
case nir_intrinsic_control_barrier:
case nir_intrinsic_memory_barrier:
if (debug) dump_instr(instr);
+1 -1
View File
@@ -131,7 +131,7 @@ remove_dead_write_vars_local(void *mem_ctx, nir_block *block)
nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
switch (intrin->intrinsic) {
case nir_intrinsic_barrier:
case nir_intrinsic_control_barrier:
case nir_intrinsic_memory_barrier: {
clear_unused_for_modes(&unused_writes, nir_var_shader_out |
nir_var_mem_ssbo |
+1 -1
View File
@@ -347,7 +347,7 @@ nir_schedule_intrinsic_deps(nir_deps_state *state,
add_write_dep(state, &state->store_shared, n);
break;
case nir_intrinsic_barrier:
case nir_intrinsic_control_barrier:
case nir_intrinsic_memory_barrier_shared:
add_write_dep(state, &state->store_shared, n);
@@ -773,12 +773,13 @@ TEST_F(nir_load_store_vectorize_test, ssbo_load_adjacent_memory_barrier)
ASSERT_EQ(count_intrinsics(nir_intrinsic_load_ssbo), 2);
}
/* nir_intrinsic_barrier only syncs invocations in a workgroup, it doesn't
* require that loads/stores complete. */
/* nir_intrinsic_control_barrier only syncs invocations in a workgroup, it
* doesn't require that loads/stores complete.
*/
TEST_F(nir_load_store_vectorize_test, ssbo_load_adjacent_barrier)
{
create_load(nir_var_mem_ssbo, 0, 0, 0x1);
nir_builder_instr_insert(b, &nir_intrinsic_instr_create(b->shader, nir_intrinsic_barrier)->instr);
nir_builder_instr_insert(b, &nir_intrinsic_instr_create(b->shader, nir_intrinsic_control_barrier)->instr);
create_load(nir_var_mem_ssbo, 0, 4, 0x2);
nir_validate_shader(b->shader, NULL);