mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 15:10:10 +01:00
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:
parent
fd50ef046b
commit
2837e67b9b
1 changed files with 28 additions and 0 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue