<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Mon, Nov 12, 2018 at 1:29 PM Christian Gmeiner <<a href="mailto:christian.gmeiner@gmail.com">christian.gmeiner@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Jason<br>
<br>
Am Sa., 1. Sep. 2018 um 21:23 Uhr schrieb Jason Ekstrand <<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>>:<br>
><br>
> I don't think either of these work for negative numbers<br>
><br>
<br>
I would like to land this patch - can you provide some details why<br>
this does not work for<br>
negative numbers?<br></blockquote><div><br></div><div>No, this is correct.  It's GLSL's definition of fract(x) that's dumb.  GLSL defines fract(x) as x - floor(x) (exactly what your formula says.  This means that</div><div><br></div><div>fract(-1.4) = -1.4 - floor(-1.4) = -1.4 - (-2.0) = -1.4 + 2.0 = 0.6</div><div><br></div><div>so GLSL fract() doesn't give you the fractional part at all.  *sigh*</div><div><br></div><div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> On September 1, 2018 14:16:11 Christian Gmeiner<br>
> <<a href="mailto:christian.gmeiner@gmail.com" target="_blank">christian.gmeiner@gmail.com</a>> wrote:<br>
><br>
> > Signed-off-by: Christian Gmeiner <<a href="mailto:christian.gmeiner@gmail.com" target="_blank">christian.gmeiner@gmail.com</a>><br>
> > ---<br>
> > src/compiler/nir/nir.h                | 3 +++<br>
> > src/compiler/nir/nir_opt_algebraic.py | 1 +<br>
> > 2 files changed, 4 insertions(+)<br>
> ><br>
> > diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h<br>
> > index 169fa1fa20..d81eefc032 100644<br>
> > --- a/src/compiler/nir/nir.h<br>
> > +++ b/src/compiler/nir/nir.h<br>
> > @@ -2054,6 +2054,9 @@ typedef struct nir_shader_compiler_options {<br>
> >     */<br>
> >    bool fdot_replicates;<br>
> ><br>
> > +   /** lowers ffloor to fsub+ffract: */<br>
> > +   bool lower_ffloor;<br>
> > +<br>
> >    /** lowers ffract to fsub+ffloor: */<br>
> >    bool lower_ffract;<br>
> ><br>
> > diff --git a/src/compiler/nir/nir_opt_algebraic.py<br>
> > b/src/compiler/nir/nir_opt_algebraic.py<br>
> > index ae1261f874..3d2b861a42 100644<br>
> > --- a/src/compiler/nir/nir_opt_algebraic.py<br>
> > +++ b/src/compiler/nir/nir_opt_algebraic.py<br>
> > @@ -118,6 +118,7 @@ optimizations = [<br>
> >    (('~flrp', a, 0.0, c), ('fadd', ('fmul', ('fneg', a), c), a)),<br>
> >    (('flrp@32', a, b, c), ('fadd', ('fmul', c, ('fsub', b, a)), a),<br>
> >    'options->lower_flrp32'),<br>
> >    (('flrp@64', a, b, c), ('fadd', ('fmul', c, ('fsub', b, a)), a),<br>
> >    'options->lower_flrp64'),<br>
> > +   (('ffloor', a), ('fsub', a, ('ffract', a)), 'options->lower_ffloor'),<br>
> >    (('ffract', a), ('fsub', a, ('ffloor', a)), 'options->lower_ffract'),<br>
> >    (('~fadd', ('fmul', a, ('fadd', 1.0, ('fneg', ('b2f', c)))), ('fmul', b,<br>
> >    ('b2f', c))), ('bcsel', c, b, a), 'options->lower_flrp32'),<br>
> >    (('~fadd@32', ('fmul', a, ('fadd', 1.0, ('fneg',         c ))), ('fmul', b,<br>
> >            c )), ('flrp', a, b, c), '!options->lower_flrp32'),<br>
> > --<br>
> > 2.17.1<br>
> ><br>
> > _______________________________________________<br>
> > mesa-dev mailing list<br>
> > <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">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/mailman/listinfo/mesa-dev</a><br>
><br>
><br>
><br>
<br>
-- <br>
greets<br>
--<br>
Christian Gmeiner, MSc<br>
<br>
<a href="https://christian-gmeiner.info" rel="noreferrer" target="_blank">https://christian-gmeiner.info</a><br>
</blockquote></div></div>