microsoft/compiler: Handle more GL memory barriers

Reviewed-by: Sil Vilerino <sivileri@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14367>
This commit is contained in:
Jesse Natalie 2022-01-01 08:08:48 -08:00 committed by Marge Bot
parent fd50ef046b
commit 2837e67b9b

View file

@ -2332,6 +2332,7 @@ emit_barrier(struct ntd_context *ctx, nir_intrinsic_instr *intr)
nir_intrinsic_memory_scope(intr));
}
/* Memory barrier for UAVs (buffers/images) at cross-workgroup scope */
static bool
emit_memory_barrier(struct ntd_context *ctx, nir_intrinsic_instr *intr)
{
@ -2341,6 +2342,26 @@ emit_memory_barrier(struct ntd_context *ctx, nir_intrinsic_instr *intr)
NIR_SCOPE_DEVICE);
}
/* Memory barrier for TGSM */
static bool
emit_memory_barrier_shared(struct ntd_context *ctx, nir_intrinsic_instr *intr)
{
return emit_barrier_impl(ctx,
nir_var_mem_shared,
NIR_SCOPE_NONE,
NIR_SCOPE_WORKGROUP);
}
/* Memory barrier for all intra-workgroup memory accesses (UAVs and TGSM) */
static bool
emit_group_memory_barrier(struct ntd_context *ctx, nir_intrinsic_instr *intr)
{
return emit_barrier_impl(ctx,
nir_var_mem_shared | nir_var_mem_global,
NIR_SCOPE_NONE,
NIR_SCOPE_WORKGROUP);
}
static bool
emit_control_barrier(struct ntd_context *ctx, nir_intrinsic_instr *intr)
{
@ -3622,7 +3643,14 @@ emit_intrinsic(struct ntd_context *ctx, nir_intrinsic_instr *intr)
case nir_intrinsic_scoped_barrier:
return emit_barrier(ctx, intr);
case nir_intrinsic_memory_barrier:
case nir_intrinsic_memory_barrier_buffer:
case nir_intrinsic_memory_barrier_image:
case nir_intrinsic_memory_barrier_atomic_counter:
return emit_memory_barrier(ctx, intr);
case nir_intrinsic_memory_barrier_shared:
return emit_memory_barrier_shared(ctx, intr);
case nir_intrinsic_group_memory_barrier:
return emit_group_memory_barrier(ctx, intr);
case nir_intrinsic_control_barrier:
return emit_control_barrier(ctx, intr);
case nir_intrinsic_ssbo_atomic_add: