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