glsl: allow barrier builtin functions for mesh shader
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36405>
This commit is contained in:
Qiang Yu 2025-09-03 15:41:53 +08:00 committed by Marge Bot
parent 9ffbf9f96b
commit d52452a486

View file

@ -853,9 +853,11 @@ ballot_khr_and_fp64(const _mesa_glsl_parse_state *state)
}
static bool
compute_shader(const _mesa_glsl_parse_state *state)
compute_or_mesh_shader(const _mesa_glsl_parse_state *state)
{
return state->stage == MESA_SHADER_COMPUTE;
return state->stage == MESA_SHADER_COMPUTE ||
state->stage == MESA_SHADER_MESH ||
state->stage == MESA_SHADER_TASK;
}
static bool
@ -867,7 +869,7 @@ compute_shader_supported(const _mesa_glsl_parse_state *state)
static bool
buffer_atomics_supported(const _mesa_glsl_parse_state *state)
{
return compute_shader(state) || shader_storage_buffer_object(state);
return compute_or_mesh_shader(state) || shader_storage_buffer_object(state);
}
static bool
@ -880,7 +882,7 @@ buffer_int64_atomics_supported(const _mesa_glsl_parse_state *state)
static bool
barrier_supported(const _mesa_glsl_parse_state *state)
{
return compute_shader(state) ||
return compute_or_mesh_shader(state) ||
state->stage == MESA_SHADER_TESS_CTRL;
}
@ -1928,7 +1930,7 @@ builtin_builder::create_intrinsics()
ir_intrinsic_memory_barrier),
NULL);
add_function("__intrinsic_group_memory_barrier",
_memory_barrier_intrinsic(compute_shader,
_memory_barrier_intrinsic(compute_or_mesh_shader,
ir_intrinsic_group_memory_barrier),
NULL);
add_function("__intrinsic_memory_barrier_atomic_counter",
@ -1944,7 +1946,7 @@ builtin_builder::create_intrinsics()
ir_intrinsic_memory_barrier_image),
NULL);
add_function("__intrinsic_memory_barrier_shared",
_memory_barrier_intrinsic(compute_shader,
_memory_barrier_intrinsic(compute_or_mesh_shader,
ir_intrinsic_memory_barrier_shared),
NULL);
@ -5620,7 +5622,7 @@ builtin_builder::create_builtins()
NULL);
add_function("groupMemoryBarrier",
_memory_barrier("__intrinsic_group_memory_barrier",
compute_shader),
compute_or_mesh_shader),
NULL);
add_function("memoryBarrierAtomicCounter",
_memory_barrier("__intrinsic_memory_barrier_atomic_counter",
@ -5636,7 +5638,7 @@ builtin_builder::create_builtins()
NULL);
add_function("memoryBarrierShared",
_memory_barrier("__intrinsic_memory_barrier_shared",
compute_shader),
compute_or_mesh_shader),
NULL);
add_function("ballotARB", _ballot(&glsl_type_builtin_uint64_t, ballot_arb), NULL);