spirv: Memory semantics is optional for OpControlBarrier

Fixes: 3ed2123d77 ("spirv: Use scoped barriers for SpvOpControlBarrier")
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5365>
This commit is contained in:
Caio Marcelo de Oliveira Filho 2020-06-05 15:58:32 -07:00 committed by Marge Bot
parent b7a3821a5c
commit e5bb4b1ee8

View file

@ -2130,18 +2130,18 @@ vtn_emit_scoped_control_barrier(struct vtn_builder *b, SpvScope exec_scope,
SpvScope mem_scope,
SpvMemorySemanticsMask semantics)
{
nir_memory_semantics nir_semantics;
nir_variable_mode modes;
nir_semantics = vtn_mem_semantics_to_nir_mem_semantics(b, semantics);
modes = vtn_mem_sematics_to_nir_var_modes(b, semantics);
/* No barrier to add. */
if (nir_semantics == 0 || modes == 0)
return;
nir_memory_semantics nir_semantics =
vtn_mem_semantics_to_nir_mem_semantics(b, semantics);
nir_variable_mode modes = vtn_mem_sematics_to_nir_var_modes(b, semantics);
nir_scope nir_exec_scope = vtn_scope_to_nir_scope(b, exec_scope);
nir_scope nir_mem_scope = vtn_scope_to_nir_scope(b, mem_scope);
/* Memory semantics is optional for OpControlBarrier. */
nir_scope nir_mem_scope;
if (nir_semantics == 0 || modes == 0)
nir_mem_scope = NIR_SCOPE_NONE;
else
nir_mem_scope = vtn_scope_to_nir_scope(b, mem_scope);
nir_scoped_barrier(&b->nb, nir_exec_scope, nir_mem_scope, nir_semantics, modes);
}