Commit Graph

192662 Commits

Author SHA1 Message Date
Faith Ekstrand
63db105014 nak: Rename OpFSOut to OpRegOut
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
0b4bfefd6f nak/nir: Preserve rounding modes in split_64bit_conversions()
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
ec84d7ce74 nak: Add tests for OpPopC and enable SrcMod::BNot
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
27ee9027da nak: Use OpFoldData::get_u32_bnot_src() more places
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
1a6ca8e601 nak/sm50: Set the not bit for OpLop2::srcs[0]
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
61076b04a7 nak: Add tests for OpIAdd2 and OpIAdd2X
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
aa87c9c96d nak/hw_tests: Use better test values for iadd tests
This new helper makes sure we return some particularly interesting
numbers which may hit edge cases in the hardware and/or folding code.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
6291440ee7 nak/hw_tests: Respect src_mod and src_swizzle in op auto-tests
Instead of replacing the whole source, just replace the src_ref so we
maintain the modifier.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
f557423467 nak: Add source and destination types for carry values
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
eb5f333606 nak: Assert no overflow when legalizing iadd with too many ineg modifiers
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
96812f6b72 nak: Add tests for OpFlo
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
10701ac331 nak/hw_tests: Explicitly test equal cases in test_isetp64
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
957e7b3451 nak: Lower iadd64(x, -y) to isub64(x, y) in NIR
This is easier than optimizing in the back-end and lets us use 2
instructions for an isub64 rather than 4.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
8646ae7e23 nak/builder: Allow source modifiers in ineg64()
This lets us implement ineg64(x) as iadd64(0, -x, 0) and also reduces
the number of cases in iadd64() itself.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
7f0b8a82d0 nak: Add tests for nak_builder::ineg64
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
73384c626d nak: SrcMod::INeg cannot be folded
The only reason why this hasn't been causing us problems before is
because the only use of ineg in an iadd with a carry-out is ineg64 and
that's basically guaranteed to be folded in NIR because it's unary.
However, if we want to be able to use SrcMod::INeg more, we need to be
more careful about it.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
c2b5d7ca41 nak/sm50: Add execution delays for more ops
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
ce91e8875a nak: OpKill also needs a delay on Maxwell
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:20 +00:00
Faith Ekstrand
c8eb8f946a nak: Add an optimization for CRS ops
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:19 +00:00
Faith Ekstrand
1cf945a5d1 nak: Add target labels to CRS pop instructions
This makes them easier to read.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:19 +00:00
Faith Ekstrand
9bbc692064 nak/nir: Rework CRS handling
THe new code tracks the whole call/return stack.  This means we know the
size of the stack at all times.  It also means that we can detect a
bunch of potential error cases.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:19 +00:00
Faith Ekstrand
cb5e10d0aa nak/nir: Add a few more NIR helpers
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:19 +00:00
Faith Ekstrand
f66ca6edc3 nak/nir: Fix the reverse execlist iterator
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:19 +00:00
Faith Ekstrand
d19ea8524b nvk: Take CRS into account when allocating the SLM area
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:19 +00:00
Faith Ekstrand
b78f7d208b nak: Plumb through the call/return stack size
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:19 +00:00
Faith Ekstrand
3e935df2b0 nak: Move the runner into the main nak crate
This makes the meson a bit simpler since we can just conditionally build
it based on #[cfg(test)] instead of breaking it into a separate library.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30402>
2024-07-28 21:49:19 +00:00
Rob Clark
ad90bf0500 freedreno/a6xx: Initial a7xx support
Passing all of deqp-gles*

LRZ is still causing some artifacts in games so it is disabled for now.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:18 +00:00
Rob Clark
e6be78c703 freedreno/a6xx: Rework CCU_CNTL emit for a7xx
Regs are different, and a750+ gets new configuration for VPC cache in
GMEM.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:18 +00:00
Rob Clark
1f41d59059 freedreno/a6xx: Refactor CP_EVENT_WRITE emit
Consolidate the various uses of CP_EVENT_WRITE into helpers, and use use
fd_gpu_event to manage the differences between a6xx and a7xx.  This is a
bit churny as it spreading a fair bit of the CHIP template param around.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:18 +00:00
Rob Clark
b1937f76ff freedreno/a6xx: Allocate lrcfc when needed for direction tracking
On later GPUs this buffer is also used for direction tracking, etc.
Meaning that it is not optional.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:18 +00:00
Rob Clark
679e9093e1 freedreno: Extract out shared LRZFC layout helpers
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:18 +00:00
Rob Clark
beb5577e12 freedreno: Extract out common UBWC helper
And re-use in gallium driver.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:18 +00:00
Rob Clark
5c34a5e59a freedreno: Move GENX/CALLX magic to common
And re-use them in the gallium driver

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:18 +00:00
Rob Clark
a6c9f152cc freedreno/drm: Handle a7xx case
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:18 +00:00
Rob Clark
31302ca107 tu/drm/virtio: Add missing a7xx case
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:17 +00:00
Rob Clark
8ff33a756d freedreno/cffdec: Fix a7xx CP_EVENT_WRITE decoding
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:17 +00:00
Rob Clark
10eaf06e47 freedreno/a7xx: Fix GRAS_UNKNOWN_80F4 writes
If this is a 64b reg, we should write both halves.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:17 +00:00
Rob Clark
1a3f041cd8 freedreno/a6xx: Implement reg stomper support
Useful to track down issues related to uninitialized regs.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30304>
2024-07-28 18:25:17 +00:00
Mike Blumenkrantz
1242f3ed3a glx: unhackify inferring zink from dri3
this still needs to be broken up more

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
8994165e92 glx: consolidate some LIBGL_KOPPER_DISABLE checks
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
725875cdea glx: move drisw dri3 handling for zink out to glxInitialize
this is much cleaner

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
82955b48aa glx: use base screen has_multibuffer for drisw
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
e9aec758c6 glx: delete all driver-specific display handling
this no longer does anything

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
886af985f8 glx: move dri2 loader extensions to static vtable
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
d723438e0d glx: move dri2 init checks to separate function
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
5f55da01db glx: tweak dri2 init ordering
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
f79eb4730c glx: move dri2Hash to base glx_display
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
6be546764a glx: rework/simplify drisw zink handling
this pushes the logic further down so it's all in one place

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
08e2985e57 glx: move driwindows_display::event_base to driwindows_context
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00
Mike Blumenkrantz
2126a48149 glx: move has_multibuffer to base glx_screen struct
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30375>
2024-07-28 13:11:07 +00:00