[Mesa-dev] [PATCH 1/2] nir: allow texture offsets with cube maps

Jason Ekstrand jason at jlekstrand.net
Mon Nov 20 22:16:10 UTC 2017


On Sun, Nov 19, 2017 at 11:54 AM, Ilia Mirkin <imirkin at 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 <imirkin at 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.

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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171120/472cd2e6/attachment.html>


More information about the mesa-dev mailing list