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