Faith Ekstrand
f54b1f1e77
meson: Set build.rust_std
...
This is needed because meson currently makes rust_std part of the build
environment and therefore per-arch. This is a bit nonsense but it's not
too hard to work around.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
e43e8f3f78
nak: Require meson 1.3.0 and clean up a couple bits
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
7feba721c5
nak: Rely on Rust 1.73 for next_multiple_of() and div_ceil()
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
c7c73d6d17
nvk: Enable subgroups features
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
4bd9c99ca0
nak: Document a bit in encode_lds()
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
0177373e2d
nak: Insert an OpNop after OpBar
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
e111bfdb5c
nak: Emit MemBar before Bar
...
This is what NVIDIA does. I'm not sure why this order but it seems
necessary to pass some of the 1.1 memory model tests.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
bc58620e1e
nak: Use the simplified BAR.SYNC encoding
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
4f2f9c6ab3
nak: Use strong ordering for Image load/store
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
ec2c866a77
nak: Emit CCtl in barriers with acq/rel semantics
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
8781acba18
nak: Allow 1-component image load/store
...
We get these when we get an atomic image load/store
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
ee11b473b5
nak: Implement read_invocation and shuffle_*
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
edf015eb7f
nak: Fix the encoding of OpShfl
...
We weren't handling Zero. Also, we need to mask immediates or else the
encoder blows up. The hardware automatically masks them when they come
in as sources but when we get immediates, they're not guaranteed to fit
in the bitfield.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
5dd7a76c8b
nak: Implement vote and ballot
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
3df9065296
nak/nir: Zero-pad subgroup masks
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
37de14e2e2
nak/nir: Allow boolean vote_ieq
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
143d88dcc3
nak: Lower subgroup_id and num_subgroups
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
42a305416a
nak: Use nir_shader_intrinsics_pass for system values
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
ce40d81d46
nak: Call nir_lower_subgroups()
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
bf8642e984
nak: Remove unnecessary control barriers
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
3468f70ca1
nak: Use barriers for re-convergence
...
Now that we're getting total re-convergence through barriers, we can
drop our OpWarpSyncs in front of barriers and derivatives
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
22468439ff
nak: Handle control-flow barriers
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
95f368a105
nak: Add OpBreak
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:15 +00:00
Faith Ekstrand
3957124492
nak/nir: Add a pass for adding convergence barriers
...
This should give us maximum re-convergence
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
eb0d9a1b88
nir: Add nvidia barrier intrinsics
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
4ec66f3e5c
nak: Don't print a range for one register
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
f29b714ec9
nak: Drop the final calc_max_live() after GPR spilling
...
It's dead code.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
ea27d57882
nak: Get rid of warnings in nak_sph.rs
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
bf04914315
nak: Get rid of dead code warnings in RegFileSet
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
9166b3354c
nak: Drop some unused helpers
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
d0b724aaac
nak: Add some #[allow(dead_code)]
...
All this is either enums where we want all of them for the sake of
documentation or where I'm pretty sure we want them in the future.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
eb8f907855
nak: Upgrade to more modern meson
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Mary Guillemard
f757508d65
nak: Move nir_lower_int64 after I/O lowering
...
Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Mary Guillemard
09d3871267
nak: Implement VK_KHR_shader_terminate_invocation
...
Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
c32b73fdf2
nak: A quick rustfmt fix
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
2b4621b9d8
nak: Use Src::From<u32> and Src::From<bool>
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
0616003de9
nak: Rename lower_vec_split() to lower_ineg()
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
a43e6addca
nak: Fix fneg to do fadd(-0, x)
...
Thanks to floating point sillyness, fadd(0, x) isn't a no-op but
fadd(-0, x) is.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
2c1cc06d03
nak: Support encoding -Zero
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Mary Guillemard
a0b517ba3f
nak: Ensure we allocate one barrier when using BAR.SYNC
...
Fix "Illegal Instruction Parameter" when using barrier() on compute
shaders.
Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
29804bfd26
nak/nir: Don't lower 1-bit phis
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
8d802553a2
nak: Fix to_cssa()
...
I somehow got the dominance check backwards so it's not actually
inserting parallel copies most of the places it should.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
ed187b6e51
nak: Fix parallel copy handling in spilling
...
Only consider copies with the right file. Otherwise, the spill chooser
will blow up looking for the next use. Also, we were marking
destinations as spilled when I ment to mark them as being in W. This
was a right mess. God thing to_cssa() was also broken so it wasn't
inserting nearly as many parallel copies as it was supposed to. 🙃
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
2ff6a36e2a
nak: Fix repair_ssa() for back-edges
...
In the presence of nested loops, there is no guarantee that we can
handle back-edges in a single pass. Instead, use a bitset as a worlist
and repair until we're out of missing sources.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
5839be3c4d
nak/sph: Round tls_size up to a multiple of 16
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
009ae6e7f5
nak/bitset: Fix next_set()
...
It was resetting mask to 0 instead of u32::MAX. This is a copy+paste
error from when I copied it from next_unset() and tweaked it to find set
bits.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
2cc51639ab
nak/bitset: Add an is_empty() helepr
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
0f6d8640e1
nak/bitset: Improve set_words()
...
Only set the bits requested and don't clobber other bits.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Faith Ekstrand
5b355ff25a
nak: Fix opt_out
...
It was converting instructions to/from Op which throws away predicates.
This meant that any instruction immediately after an OUT.EMIT would
loose its predicate (if any). If an OUT.EMIT comes right before a BRA,
this results in the branch always getting taken.
While reworking things, I also totally reformatted the pass to make it
more readable IMO.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00
Mary Guillemard
950db58132
nak: Add geometry shader support
...
Tested on SM75 and SM86.
Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998 >
2023-11-14 00:48:14 +00:00