mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 08:20:12 +01:00
nir/builder: Add a helper for storing to variable derefs
Reviewed-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
77e2ac1da7
commit
6a2479d618
1 changed files with 16 additions and 0 deletions
|
|
@ -398,6 +398,22 @@ nir_store_var(nir_builder *build, nir_variable *var, nir_ssa_def *value,
|
|||
nir_builder_instr_insert(build, &store->instr);
|
||||
}
|
||||
|
||||
static inline void
|
||||
nir_store_deref_var(nir_builder *build, nir_deref_var *deref,
|
||||
nir_ssa_def *value, unsigned writemask)
|
||||
{
|
||||
const unsigned num_components =
|
||||
glsl_get_vector_elements(nir_deref_tail(&deref->deref)->type);
|
||||
|
||||
nir_intrinsic_instr *store =
|
||||
nir_intrinsic_instr_create(build->shader, nir_intrinsic_store_var);
|
||||
store->num_components = num_components;
|
||||
store->const_index[0] = writemask & ((1 << num_components) - 1);
|
||||
store->variables[0] = nir_deref_as_var(nir_copy_deref(store, &deref->deref));
|
||||
store->src[0] = nir_src_for_ssa(value);
|
||||
nir_builder_instr_insert(build, &store->instr);
|
||||
}
|
||||
|
||||
static inline void
|
||||
nir_copy_deref_var(nir_builder *build, nir_deref_var *dest, nir_deref_var *src)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue