llvmpipe: emit fences for barrier.

I tried emitting less here but I'm just gonna hit it with the big
seq_cst hammer.

Fixes:
dEQP-VK.memory_model.message_passing.*

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23453>
This commit is contained in:
Dave Airlie 2023-06-06 10:08:10 +10:00 committed by Marge Bot
parent 9fb0bbd7d4
commit 91e919f1bf
2 changed files with 13 additions and 11 deletions

View file

@ -1841,9 +1841,19 @@ visit_shared_atomic(struct lp_build_nir_context *bld_base,
static void
visit_barrier(struct lp_build_nir_context *bld_base)
visit_barrier(struct lp_build_nir_context *bld_base,
nir_intrinsic_instr *instr)
{
bld_base->barrier(bld_base);
LLVMBuilderRef builder = bld_base->base.gallivm->builder;
nir_scope exec_scope = nir_intrinsic_execution_scope(instr);
unsigned nir_semantics = nir_intrinsic_memory_semantics(instr);
if (nir_semantics) {
LLVMAtomicOrdering ordering = LLVMAtomicOrderingSequentiallyConsistent;
LLVMBuildFence(builder, ordering, false, "");
}
if (exec_scope != NIR_SCOPE_NONE)
bld_base->barrier(bld_base);
}
@ -2142,8 +2152,7 @@ visit_intrinsic(struct lp_build_nir_context *bld_base,
visit_shared_atomic(bld_base, instr, result);
break;
case nir_intrinsic_scoped_barrier:
if (nir_intrinsic_execution_scope(instr) != NIR_SCOPE_NONE)
visit_barrier(bld_base);
visit_barrier(bld_base, instr);
break;
case nir_intrinsic_load_kernel_input:
visit_load_kernel_input(bld_base, instr, result);

View file

@ -7,10 +7,3 @@ dEQP-VK.rasterization.provoking_vertex.transform_feedback.first.line_strip_with_
dEQP-VK.rasterization.provoking_vertex.transform_feedback.per_pipeline.triangle_strip_with_adjacency
dEQP-VK.rasterization.provoking_vertex.transform_feedback.last.triangle_list_with_adjacency
# https://gitlab.freedesktop.org/mesa/mesa/-/issues/8441
dEQP-VK.memory_model.transitive.coherent.fence_fence.payload_local.image.guard_local.physbuffer.nontransvis
nir-stress=dEQP-VK.memory_model.transitive.coherent.fence_atomic.payload_local.image.guard_local.physbuffer.nontransvis
dEQP-VK.memory_model.transitive.coherent.fence_atomic.payload_local.physbuffer.guard_local.image.nontransvis
dEQP-VK.memory_model.message_passing.ext.u64.noncoherent.atomic_atomic.atomicwrite.device.payload_local.physbuffer.guard_local.image.comp