<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>