<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 8, 2016 at 1:21 PM, Jason Ekstrand <span dir="ltr"><<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">The precision of our trig instructions instructions appears to have been<br></blockquote><div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;display:inline">​s/​instructions instructions/instructions</div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
fixed on Kaby Lake.  Neither Ben nor I can find any documentation for this.<br>
However, the dEQP precision tests now pass with INTEL_PRECISE_TRIG=0 where<br>
they fail on Sky Lake.<br>
<br>
Signed-off-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
---<br>
 src/mesa/drivers/dri/i965/brw_<wbr>nir.c                   | 5 ++++-<br>
 src/mesa/drivers/dri/i965/brw_<wbr>nir_trig_workarounds.py | 7 ++++---<br>
 2 files changed, 8 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_nir.c b/src/mesa/drivers/dri/i965/<wbr>brw_nir.c<br>
index a93d825..1069438 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_nir.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_nir.c<br>
@@ -449,6 +449,7 @@ nir_optimize(nir_shader *nir, bool is_scalar)<br>
 nir_shader *<br>
 brw_preprocess_nir(const struct brw_compiler *compiler, nir_shader *nir)<br>
 {<br>
+   const struct gen_device_info *devinfo = compiler->devinfo;<br>
    bool progress; /* Written by OPT and OPT_V */<br>
    (void)progress;<br>
<br>
@@ -457,7 +458,9 @@ brw_preprocess_nir(const struct brw_compiler *compiler, nir_shader *nir)<br>
    if (nir->stage == MESA_SHADER_GEOMETRY)<br>
       OPT(nir_lower_gs_intrinsics);<br>
<br>
-   if (compiler->precise_trig)<br>
+   /* See also brw_nir_trig_workarounds.py */<br>
+   if (compiler->precise_trig &&<br>
+       !(devinfo->gen >= 10 || devinfo->is_kabylake))<br>
       OPT(brw_nir_apply_trig_<wbr>workarounds);<br>
<br>
    static const nir_lower_tex_options tex_options = {<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_nir_trig_workarounds.py b/src/mesa/drivers/dri/i965/<wbr>brw_nir_trig_workarounds.py<br>
index 67dab9a..3b8d0ce 100755<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_nir_trig_workarounds.py<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_nir_trig_workarounds.py<br>
@@ -23,9 +23,10 @@<br>
<br>
 import nir_algebraic<br>
<br>
-# The SIN and COS instructions on Intel hardware can produce values<br>
-# slightly outside of the [-1.0, 1.0] range for a small set of values.<br>
-# Obviously, this can break everyone's expectations about trig functions.<br>
+# Prior to Kaby Lake, The SIN and COS instructions on Intel hardware can<br>
+# produce values slightly outside of the [-1.0, 1.0] range for a small set of<br>
+# values.  Obviously, this can break everyone's expectations about trig<br>
+# functions.  This appears to be fixed in Kaby Lake.<br>
 #<br>
 # According to an internal presentation, the COS instruction can produce<br>
 # a value up to 1.000027 for inputs in the range (0.08296, 0.09888).  One<br>
<span class="gmail-HOEnZb"><font color="#888888">--<br>
2.5.0.400.gff86faf<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>
</font></span></blockquote></div><br></div></div>