spirv: Don't use libclc for wait_group_events

v2: Drop old code (Karol)

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18675>
This commit is contained in:
Jason Ekstrand 2022-04-07 17:04:04 -05:00 committed by Marge Bot
parent 093b19b09a
commit 0a06abbb91

View file

@ -603,9 +603,16 @@ handle_core(struct vtn_builder *b, uint32_t opcode,
break;
}
case SpvOpGroupWaitEvents: {
src_types[0] = get_vtn_type_for_glsl_type(b, glsl_int_type());
if (!call_mangled_function(b, "wait_group_events", 0, num_srcs, src_types, dest_type, srcs, &ret_deref))
return NULL;
/* libclc and clang don't agree on the mangling of this function.
* The libclc we have uses a __local pointer but clang gives us generic
* pointers. Fortunately, the whole function is just a barrier.
*/
nir_scoped_barrier(&b->nb, .execution_scope = NIR_SCOPE_WORKGROUP,
.memory_scope = NIR_SCOPE_WORKGROUP,
.memory_semantics = NIR_MEMORY_ACQUIRE |
NIR_MEMORY_RELEASE,
.memory_modes = nir_var_mem_shared |
nir_var_mem_global);
break;
}
default: