mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 07:08:04 +02:00
glsl: support barrier() for task and mesh shader
It was ignored when translating glsl to nir.
Fixes: d52452a486 ("glsl: allow barrier builtin functions for mesh shader")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38692>
This commit is contained in:
parent
9e37969179
commit
2f6a034528
1 changed files with 17 additions and 4 deletions
|
|
@ -2897,12 +2897,25 @@ nir_visitor::visit(ir_dereference_array *ir)
|
||||||
void
|
void
|
||||||
nir_visitor::visit(ir_barrier *)
|
nir_visitor::visit(ir_barrier *)
|
||||||
{
|
{
|
||||||
if (shader->info.stage == MESA_SHADER_COMPUTE) {
|
switch (shader->info.stage) {
|
||||||
|
case MESA_SHADER_COMPUTE:
|
||||||
nir_barrier(&b, SCOPE_WORKGROUP, SCOPE_WORKGROUP,
|
nir_barrier(&b, SCOPE_WORKGROUP, SCOPE_WORKGROUP,
|
||||||
NIR_MEMORY_ACQ_REL, nir_var_mem_shared);
|
NIR_MEMORY_ACQ_REL, nir_var_mem_shared);
|
||||||
} else if (shader->info.stage == MESA_SHADER_TESS_CTRL) {
|
break;
|
||||||
|
case MESA_SHADER_TESS_CTRL:
|
||||||
nir_barrier(&b, SCOPE_WORKGROUP, SCOPE_WORKGROUP,
|
nir_barrier(&b, SCOPE_WORKGROUP, SCOPE_WORKGROUP,
|
||||||
NIR_MEMORY_ACQ_REL, nir_var_shader_out);
|
NIR_MEMORY_ACQ_REL, nir_var_shader_out);
|
||||||
|
break;
|
||||||
|
case MESA_SHADER_TASK:
|
||||||
|
nir_barrier(&b, SCOPE_WORKGROUP, SCOPE_WORKGROUP, NIR_MEMORY_ACQ_REL,
|
||||||
|
nir_var_mem_task_payload | nir_var_mem_shared);
|
||||||
|
break;
|
||||||
|
case MESA_SHADER_MESH:
|
||||||
|
nir_barrier(&b, SCOPE_WORKGROUP, SCOPE_WORKGROUP, NIR_MEMORY_ACQ_REL,
|
||||||
|
nir_var_shader_out | nir_var_mem_shared);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
UNREACHABLE("barrier() not supported in this shader stage");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue