Christian Gmeiner
87786a7a7e
nak: Move imad late optimization to nir
...
It is more or less just a code move, but I touched
is_only_used_by_iadd(..) to match the style of the other functions in
that file.
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30099 >
2024-07-12 05:54:46 +00:00
Christian Gmeiner
e019517d6e
nak: Set has_imad32 conditionally
...
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30099 >
2024-07-12 05:54:46 +00:00
Faith Ekstrand
b209fedebe
nak/sm50: Fix immediates for IMnMx
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
faeb715535
nak/sm50: Re-order all the ops
...
This puts them in the same order as nak/ir.rs.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
970b3e0e71
nak: Add a legalize() method to ShaderModel
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
e039b7e1ac
nak/sm50: Move legalization into SM50Op
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
59f1ad581e
nak/sm50: Move instruction encoding into a trait
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
99c4b90f3c
nak/sm70: Move legalization into SM70Op
...
This puts the legalize routine and the encoder right next to each other
in the code, making it much easier to verify that legalize() enforces
all of the constraints reqauired by encode().
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
f20b1c50b4
nak/legalize: Handle RA instructions up-front
...
This pulls them out of the per-SM flow. They're also all no-ops to
legalize since they don't take vectors and are handled directly by RA.
This also means these instructions are now getting properly handled on
Maxwell where we previously trusted in the (probably broken) maxwell
legalizing code.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
9d8d928a59
nak/legalize: Handle OpBreak and OpBSSy specially
...
This lets us stop passing liveness information into the per-op
legalization code. Long-term, I want to add a more general core
concept of destinations which are also reads but I haven't gotten
around to that yet.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
d9a9bb651c
nak/legalize: Move a bunch of helpers to a trait
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
1b9b6a9529
nak/sm70: Re-organize the code a bit
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
20e1160f3f
nak/sm70: Move instruction encoding into a trait
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
57667aeac8
nak: Move instruction encoding into ShaderModel
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
d4db2f43de
nak: Move Instr::can_be_uniform() into ShaderModel
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
6ddb2b291d
nak: Move RegFile::num_regs() into ShaderModel
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
74ac40da2d
nak/ra: Move the NAK_DEBUG=spill logic into RA
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
e6b8da5427
nak: Plumb a ShaderModel trait through everywhere
...
Instead of scattering number checks everywhere, this lets us actually
start splitting code paths. This commit just adds the shader model
trait. Later commits will add more methods.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
69bea2b49f
nak/sm50: Get rid of the hand-rolled align_up/down() helpers
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
0f7ff6fbdc
nak: Move encode_sm* to to sm*.rs
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:31 +00:00
Faith Ekstrand
d82a5d0f59
nak/sph: Stop storing the shader model in ShaderProgramHeader
...
It's only needed for one Kepler+ check which is unlikely to ever be
relevant for NAK. Also, that should probably be based on the SPH
version or something, not an arbitrary shader model.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30141 >
2024-07-11 22:28:30 +00:00
Christian Gmeiner
898752818c
nak: Update comment about explicit padding
...
The bindgen thing is not used anymore and NAK_SHADER_INFO_STAGE_UNION_SIZE
is not defined anywhere.
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30094 >
2024-07-09 13:44:13 +00:00
Dave Airlie
fcf5946828
nvk: use 2k overallocation for shader heap.
...
NVIDIA has informed us via Arthur (and Ben) that 2K
is sufficient here, so move nvk to use that.
Reviewed-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29746 >
2024-07-09 15:10:30 +10:00
Faith Ekstrand
c7c3942786
nouveau/push: Cache the last header DW to avoid read-back
...
The pushbuf may live in VRAM in which case readback gets very expensive.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
1c5901c0dc
nvk: Put descriptors in VRAM
...
This improves frame rates in The Witness by another 5% or so.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
a342379c56
nvk: Put CB0 in VRAM
...
This improves frame rates in The Witness by about 2%.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
68f1df5ebb
nvk/nvkmd: Be a lot more pedantic about VA alignments
...
The VA alignment now has two pieces: The bind alignment and the base
address alignment. The caller gets to request the later but not the
former. The bind alignment is based entirely on whether or not we know
a priori that the given VA will only ever be used for GART.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
7f45d20d2b
nvk/nvkmd: Be more specific about memory alignments
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
1db57bb414
nvk/nvkmd: Rework memory placement flags
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
e04bb3dffa
nvk: Drop nvk_buffer::is_local
...
It was always kinda BS and we aren't even using it anymore thanks to
alignment requirements.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
2689760e38
nvk/nvkmd: Flip the script on NO_SHARED
...
It's a positive flag in the kernel interface because it enables an
optimization and adds restrictions to the BO. But from a userspace PoV,
NO_SHARE shoudd be the default with import/export being something we
expressly have to ask for. This also reduces the number of flags we're
setting everywhere.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
1cee0c9cb7
nvk/nvkmd: Add real mem<->bo flag translation
...
This way we can start to disconnect nvkmd_mem_flags from
nouveau_ws_bo_flags.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
0c024da291
nvk: Do mem maps directly in nvkmd on nouveau
...
There's no point in the extra layer. It's all just mmap() and friends.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
7bd9b9d96c
nvk/nvkmd: Re-implement NVK_DEBUG=vm
...
This new implementation is hooked at the nvkmd level and also works for
queued binds via a bind ctx.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
0abd7fa58a
nvk/nvmkd: Plumb parent pointers through everywhere
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
d3264fdfb9
nvk: Move debug flags int nvk_debug.h
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
d96bf198b4
nvk: Move Heaps and BO binding into nvkmd
...
We may want to move this even higher, into NVK at some point. However
the wrappers in the winsys layer really aren't doing us much. If
anything, now that nvkdm_mem::va is an nvkmd_va *, this actually makes
everything simpler because it's allocated through exactly the same paths
as sparse VA.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
0856c27dd1
nouveau/mme: Use fixed BO addresses in the MME test
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
c6c4483d0f
nouveau/mme: Don't leak data_bo
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
7173ae1130
nouveau/mme: Don't dereference an empty vector
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
60c3c272ec
nvk: Remove the last vestages of nouveau/winsys from core NVK
...
Everything now goes through NVKMD.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
8a516394f9
nvk: Use nvkmd_ctx for queue submit
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
996b152375
nvk: Use an nvkmd_ctx for sparse binding
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
a8550862b5
nvk: Convert the upload queue to nvkmd_ctx
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
053b7f0f30
nvk/nvkmd: Implement nvkmd_ctx for nouveau
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
87ca92d881
nvk/nvkmd: Add a context interface
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
29e3b19860
nvk: Use nvkmd_mem for the zero page, VAB, and CB0
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
92ac7db7c8
nvk: Use nvkmd_mem for the nvk_queue_state::push
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
d0593bb86c
nvk: Drop extra_bos from nvk_queue_submit_simple()
...
We aren't using it anymore and the only reason it existed in the first
place was for providing BO lists to the old UAPI.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00
Faith Ekstrand
b86079d61e
nvk: Use an nvkmd_mem for the SLM area
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30033 >
2024-07-09 01:22:23 +00:00