Reviewed-by: Iago Toral Quiroga <ito...@igalia.com> On Tue, 2015-12-01 at 00:19 -0800, Jordan Justen wrote: > v3: > * Remove extra #includes (Iago) > * Use recently added GEN7_BTI_SLM instead of BRW_SLM_SURFACE_INDEX (curro) > > Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> > Cc: Iago Toral Quiroga <ito...@igalia.com> > --- > src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > index 9b50e4e..12a8b59 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > @@ -2444,6 +2444,34 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, > nir_intrinsic_instr *instr > break; > } > > + case nir_intrinsic_load_shared_indirect: > + has_indirect = true; > + /* fallthrough */ > + case nir_intrinsic_load_shared: { > + assert(devinfo->gen >= 7); > + > + fs_reg surf_index = brw_imm_ud(GEN7_BTI_SLM); > + > + /* Get the offset to read from */ > + fs_reg offset_reg; > + if (has_indirect) { > + offset_reg = get_nir_src(instr->src[0]); > + } else { > + offset_reg = brw_imm_ud(instr->const_index[0]); > + } > + > + /* Read the vector */ > + fs_reg read_result = emit_untyped_read(bld, surf_index, offset_reg, > + 1 /* dims */, > + instr->num_components, > + BRW_PREDICATE_NONE); > + read_result.type = dest.type; > + for (int i = 0; i < instr->num_components; i++) > + bld.MOV(offset(dest, bld, i), offset(read_result, bld, i)); > + > + break; > + } > + > case nir_intrinsic_load_input_indirect: > has_indirect = true; > /* fallthrough */
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev