aco: Implement memory_barrier_tcs_patch.
TCS outputs are going to be written to LDS, so it has to use memory_barrier_shared in order to ensure that it waits for LDS writes. Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3964>
This commit is contained in:
@@ -5414,6 +5414,7 @@ void emit_memory_barrier(isel_context *ctx, nir_intrinsic_instr *instr) {
|
||||
case nir_intrinsic_memory_barrier_image:
|
||||
bld.barrier(aco_opcode::p_memory_barrier_image);
|
||||
break;
|
||||
case nir_intrinsic_memory_barrier_tcs_patch:
|
||||
case nir_intrinsic_memory_barrier_shared:
|
||||
bld.barrier(aco_opcode::p_memory_barrier_shared);
|
||||
break;
|
||||
@@ -6342,6 +6343,7 @@ void visit_intrinsic(isel_context *ctx, nir_intrinsic_instr *instr)
|
||||
|
||||
break;
|
||||
}
|
||||
case nir_intrinsic_memory_barrier_tcs_patch:
|
||||
case nir_intrinsic_group_memory_barrier:
|
||||
case nir_intrinsic_memory_barrier:
|
||||
case nir_intrinsic_memory_barrier_buffer:
|
||||
@@ -6349,8 +6351,6 @@ void visit_intrinsic(isel_context *ctx, nir_intrinsic_instr *instr)
|
||||
case nir_intrinsic_memory_barrier_shared:
|
||||
emit_memory_barrier(ctx, instr);
|
||||
break;
|
||||
case nir_intrinsic_memory_barrier_tcs_patch:
|
||||
break;
|
||||
case nir_intrinsic_load_num_work_groups: {
|
||||
Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
|
||||
bld.copy(Definition(dst), Operand(get_arg(ctx, ctx->args->ac.num_work_groups)));
|
||||
|
Reference in New Issue
Block a user