<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Add FP64 support to the i965 shader backends"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=92760#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Add FP64 support to the i965 shader backends"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=92760">bug 92760</a>
              from <span class="vcard"><a class="email" href="mailto:cwabbott0@gmail.com" title="Connor Abbott <cwabbott0@gmail.com>"> <span class="fn">Connor Abbott</span></a>
</span></b>
        <pre>(In reply to Jason Ekstrand from <a href="show_bug.cgi?id=92760#c0">comment #0</a>)
<span class="quote">> We've had a variety of people take a crack at this over the last year or two
> and haven't actually gotten there yet.  I'm making this bug as a place to
> put notes for the next person to pick it up.  Connor Abbott started on this
> towards the end of this summer but there's still more work to do.  The best
> place to pick up would probably be with his branch which can be found here:

> <a href="http://cgit.freedesktop.org/~cwabbott0/mesa/log/?h=i965-fp64-v2">http://cgit.freedesktop.org/~cwabbott0/mesa/log/?h=i965-fp64-v2</a>

> With this branch, most of the core NIR bits are in place and most of the
> i965 fs backend code is in place but there's still more to do:

>  1) Review core NIR bits (Probably Jason)

>  2) Write a bit-width well-definedness validator for nir_algebraic (Probably
> Jason or Connor)

>  3) Write piglit tests for and fix up Uniform alignment issues.  The
> hardware requires that 64-bit things be 64-bit aligned and we're doing
> nothing right now to ensure that.

>  4) Implement NIR lowering of ftrunc and use that to implement fround etc.

>  5) Write more tests.  Right now, the piglit tests for fp64 basically only
> test the math operations.  There are many other things that need testing
> such as uniform packing, UBOs, SSBOs, pack/unpack operations, and whatever
> other interactions need testing.  One of the issues Connor ran into was that
> the "simplest" tests were doing double-precision operations like sqrt that
> were lowered lots of operations and made it very hard to debug simple issues.

>  6) Implement a NIR pass to lower double-precision vec4 operations to vec2
> operations for use in the vec4 backend.</span >

I actually have this pass in my branch already. What's missing is support in
the vec4 backend for handling something like:

dvec2 foo = vec2(bar.x, baz.y);

which happens when lowering vec4 operations that "cross" the vec2 boundaries,
as in e.g.

dvec4 foo = bar + baz.xzyw;

<span class="quote">> 
>  7) Get fp64 working in the vec4 backend.  The vec4 backend can only work
> with doubles as vec2's; hence the splitting pass in (6)</span >

I actually got this half-working, besides the above-mentioned issue. I believe
there are issues with the exec_mask, unless I'm misunderstanding something, but
I don't think there are any tests that actually do anything
non-dynamically-uniform, so that's another test that needs to be written.

<span class="quote">> 
> There's probably more I've missed here but this is what I remember.</span >

QWORD spilling! And some of the changes that came out of the discussion with
curro. Other than that, I don't remember anything in particular.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>