On Mon, Nov 20, 2017 at 3:11 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote:
> On Mon, Nov 20, 2017 at 5:16 PM, Jason Ekstrand <ja...@jlekstrand.net> > wrote: > > On Sun, Nov 19, 2017 at 11:54 AM, Ilia Mirkin <imir...@alum.mit.edu> > wrote: > >> > >> GL doesn't have this, but some hardware supports it. This is convenient > >> for lowering tg4 to plain texture calls, which is necessary on Adreno > >> A4xx hardware. > >> > >> Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> > >> --- > >> src/compiler/nir/nir.h | 15 +++++++++++++-- > >> 1 file changed, 13 insertions(+), 2 deletions(-) > >> > >> diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h > >> index f46f6147110..64965ae16d6 100644 > >> --- a/src/compiler/nir/nir.h > >> +++ b/src/compiler/nir/nir.h > >> @@ -1364,8 +1364,7 @@ nir_tex_instr_src_size(const nir_tex_instr *instr, > >> unsigned src) > >> if (instr->src[src].src_type == nir_tex_src_ms_mcs) > >> return 4; > >> > >> - if (instr->src[src].src_type == nir_tex_src_offset || > >> - instr->src[src].src_type == nir_tex_src_ddx || > >> + if (instr->src[src].src_type == nir_tex_src_ddx || > >> instr->src[src].src_type == nir_tex_src_ddy) { > >> if (instr->is_array) > >> return instr->coord_components - 1; > >> @@ -1373,6 +1372,18 @@ nir_tex_instr_src_size(const nir_tex_instr > *instr, > >> unsigned src) > >> return instr->coord_components; > >> } > >> > >> + /* Usual APIs don't allow cube + offset, but we allow it, with 2 > >> coords for > >> + * the offset, since a cube maps to a single face. > >> + */ > >> + if (instr->src[src].src_type == nir_tex_src_offset) { > >> + unsigned ret = instr->coord_components; > >> + if (instr->is_array) > >> + ret--; > >> + if (instr->sampler_dim == GLSL_SAMPLER_DIM_CUBE) > >> + ret--; > >> + return ret; > > > > > > I think I'd rather this look more like the one above: > > > > if (instr->is_array) > > return instr->coord_components; > > else if (instr->sampler_dim == GLSL_SAMPLER_DIM_CUBE) > > return 2; > > else > > return instr->coord_components - 1; > > > > It seems a bit cleaner and/or more explicit to me. > > OK. Although your version is slightly wrong, but I get the idea. Will > do that in a v2. (array should get -1, and cube should always get 2 > even if it's an array) > I'd forgotten about cube arrays, yes, those would naturally be -2. In that case, maybe -- for each subtraction is a good idea... > -ilia > > > > > Also, bonus points to anyone who converts this function to use a switch. > :-P > > > > --Jason > > > >> > >> + } > >> + > >> return 1; > >> } > >> > >> -- > >> 2.13.6 > >> > >> _______________________________________________ > >> mesa-dev mailing list > >> mesa-dev@lists.freedesktop.org > >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev > > > > > > > > _______________________________________________ > > Freedreno mailing list > > freedr...@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/freedreno > > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev