nir: Add a new memcpy intrinsic
This matches SPIR-V's OpCopyMemorySized Reviewed-by: Jesse Natalie <jenatali@microsoft.com>. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6713>
This commit is contained in:
parent
8cbb6640f0
commit
b2899f7265
|
@ -1373,6 +1373,31 @@ nir_copy_deref(nir_builder *build, nir_deref_instr *dest, nir_deref_instr *src)
|
|||
(enum gl_access_qualifier) 0);
|
||||
}
|
||||
|
||||
static inline void
|
||||
nir_memcpy_deref_with_access(nir_builder *build, nir_deref_instr *dest,
|
||||
nir_deref_instr *src, nir_ssa_def *size,
|
||||
enum gl_access_qualifier dest_access,
|
||||
enum gl_access_qualifier src_access)
|
||||
{
|
||||
nir_intrinsic_instr *copy =
|
||||
nir_intrinsic_instr_create(build->shader, nir_intrinsic_memcpy_deref);
|
||||
copy->src[0] = nir_src_for_ssa(&dest->dest.ssa);
|
||||
copy->src[1] = nir_src_for_ssa(&src->dest.ssa);
|
||||
copy->src[2] = nir_src_for_ssa(size);
|
||||
nir_intrinsic_set_dst_access(copy, dest_access);
|
||||
nir_intrinsic_set_src_access(copy, src_access);
|
||||
nir_builder_instr_insert(build, ©->instr);
|
||||
}
|
||||
|
||||
static inline void
|
||||
nir_memcpy_deref(nir_builder *build, nir_deref_instr *dest,
|
||||
nir_deref_instr *src, nir_ssa_def *size)
|
||||
{
|
||||
nir_memcpy_deref_with_access(build, dest, src, size,
|
||||
(enum gl_access_qualifier)0,
|
||||
(enum gl_access_qualifier)0);
|
||||
}
|
||||
|
||||
static inline nir_ssa_def *
|
||||
nir_load_var(nir_builder *build, nir_variable *var)
|
||||
{
|
||||
|
|
|
@ -174,6 +174,7 @@ intrinsic("load_deref", dest_comp=0, src_comp=[-1],
|
|||
indices=[ACCESS], flags=[CAN_ELIMINATE])
|
||||
intrinsic("store_deref", src_comp=[-1, 0], indices=[WRMASK, ACCESS])
|
||||
intrinsic("copy_deref", src_comp=[-1, -1], indices=[DST_ACCESS, SRC_ACCESS])
|
||||
intrinsic("memcpy_deref", src_comp=[-1, -1, 1], indices=[DST_ACCESS, SRC_ACCESS])
|
||||
|
||||
# Interpolation of input. The interp_deref_at* intrinsics are similar to the
|
||||
# load_var intrinsic acting on a shader input except that they interpolate the
|
||||
|
|
Loading…
Reference in New Issue