[Bug 92760] Add FP64 support to the i965 shader backends
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Sat Oct 31 14:48:09 PDT 2015
https://bugs.freedesktop.org/show_bug.cgi?id=92760
--- Comment #1 from Connor Abbott <cwabbott0 at gmail.com> ---
(In reply to Jason Ekstrand from comment #0)
> 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:
>
> http://cgit.freedesktop.org/~cwabbott0/mesa/log/?h=i965-fp64-v2
>
> 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.
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;
>
> 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)
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.
>
> There's probably more I've missed here but this is what I remember.
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.
--
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/intel-3d-bugs/attachments/20151031/6241d011/attachment-0001.html>
More information about the intel-3d-bugs
mailing list