<p dir="ltr"><br>
On Mar 23, 2016 12:32 AM, "Samuel Iglesias Gonsálvez" <<a href="mailto:siglesias@igalia.com">siglesias@igalia.com</a>> wrote:<br>
><br>
> On 21/03/16 23:40, Jason Ekstrand wrote:<br>
> > On Mon, Mar 21, 2016 at 3:39 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
> > wrote:<br>
> ><br>
> >><br>
> >><br>
> >> On Mon, Mar 21, 2016 at 5:05 AM, Samuel Iglesias Gonsálvez <<br>
> >> <a href="mailto:siglesias@igalia.com">siglesias@igalia.com</a>> wrote:<br>
> >><br>
> >>> From: Iago Toral Quiroga <<a href="mailto:itoral@igalia.com">itoral@igalia.com</a>><br>
> >>><br>
> >>> v2 (Sam):<br>
> >>> - Use helper to get type size from nir_alu_type enum.<br>
> >>> ---<br>
> >>>  src/compiler/nir/nir_lower_tex.c | 3 ++-<br>
> >>>  1 file changed, 2 insertions(+), 1 deletion(-)<br>
> >>><br>
> >>> diff --git a/src/compiler/nir/nir_lower_tex.c<br>
> >>> b/src/compiler/nir/nir_lower_tex.c<br>
> >>> index 4999603..a58385a 100644<br>
> >>> --- a/src/compiler/nir/nir_lower_tex.c<br>
> >>> +++ b/src/compiler/nir/nir_lower_tex.c<br>
> >>> @@ -226,7 +226,8 @@ get_zero_or_one(nir_builder *b, nir_alu_type type,<br>
> >>> uint8_t swizzle_val)<br>
> >>>        v.u32[0] = v.u32[1] = v.u32[2] = v.u32[3] = 0;<br>
> >>>     } else {<br>
> >>>        assert(swizzle_val == 5);<br>
> >>> -      if (type == nir_type_float)<br>
> >>> +      assert(nir_alu_type_get_type_size(type) < 64);<br>
> >>> +      if (type == nir_type_float32)<br>
> >>><br>
> >><br>
> >> This seems dangerious.  It switches a check from checking for float to<br>
> >> checking for float32.  At the particular point in the git history where<br>
> >> this patch lands, one of these checks is broken.  I'm guessing this<br>
> >> actually breaks things that get fixed later when we switch glsl_to_nir to<br>
> >> giving us sized types.<br>
> >><br>
><br>
> Right, Connor modified glsl_to_nir to add sized types to the destination<br>
> type. Actually, these patches should come after it, we reordered them<br>
> when preparing this series for submission.<br>
><br>
> >> If we're going to change tex instructions to use sized types, we need to<br>
> >> do it all in one big patch and it will have to touch all three drivers<br>
> >> again.<br>
> >><br>
> ><br>
> > One more thought:  Tex instructions already have a bit size provided by the<br>
> > destination so I don't see a need for having it be sized at all.  At the<br>
> > end of the day it doesn't matter since we either don't have a size or we do<br>
> > have a size and it's required to match.<br>
> ><br>
> ><br>
><br>
> Yeah, right. Currently brw_glsl_base_type_for_nir_type() and<br>
> brw_type_for_nir_type() manage unsized types but our idea was to support<br>
> only sized types in the driver at the end of the fp64 changes. See this<br>
> patch [0].</p>
<p dir="ltr">That seems reasonable as long as we don't break anything along the way.</p>
<p dir="ltr">> If we are not going to change tex instructions to use sized types, then<br>
> we just need to get rid of patch [0] because otherwise it would break<br>
> tex instructions emission.<br>
><br>
> What do you think?<br>
><br>
> If we agree with keeping unsized types for tex instructions, I will<br>
> remove these patches from the series:<br>
><br>
>    nir/lower_tex: fix get_zero_or_one() to use sized types<br>
>    nir/lower_tex: fix get_texture_size() to use sized types<br>
>    program/nir: include bit-size information<br>
><br>
> Delete the respective ir_visitor::visit(ir_texture *ir) hunk from:<br>
><br>
>    nir/glsl_to_nir: support doubles</p>
<p dir="ltr">I don't really care too much much one way or the other.  I think my mild preference would be to keep them unsized. (A texture instruction returning an fp16 value can happen on some hardware).</p>
<p dir="ltr">My point is that if we do keep those hunks, they need to be squashed together with a tgsi_to_nir patch and corresponding back-end fixes.</p>
<p dir="ltr">> And do the corresponding modifications to the driver.<br>
><br>
> Thanks!<br>
><br>
> Sam<br>
><br>
> [0]<br>
> <a href="https://github.com/Igalia/mesa/commit/16c477ab84227d8bb9ffcba07091aef9a5e9f61e">https://github.com/Igalia/mesa/commit/16c477ab84227d8bb9ffcba07091aef9a5e9f61e</a><br>
><br>
> >>           v.f32[0] = v.f32[1] = v.f32[2] = v.f32[3] = 1.0;<br>
> >>>        else<br>
> >>>           v.u32[0] = v.u32[1] = v.u32[2] = v.u32[3] = 1;<br>
> >>> --<br>
> >>> 2.5.0<br>
> >>><br>
> >>> _______________________________________________<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">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
> >>><br>
> >><br>
> >><br>
> ><br>
</p>