glsl: allow barrier builtin functions for mesh shader

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
+10 -8
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);