Commit graph

17813 commits

Author SHA1 Message Date
Samuel Pitoiset
50c4d5cccd radv: use one descriptor per plane for combined image+sampler with ycbcr
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
This removes a very old hack which will also allow us to enable DCC
for multiplanar formats eventually and to reduce the combined
image+sampler descriptor size from 96 to 48 on RDNA3+.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35457>
2025-06-19 12:58:32 +00:00
Samuel Pitoiset
f46126284f radv: reduce the number of bytes written for combined image+sampler desc
Only for non multiplanar formats.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35457>
2025-06-19 12:58:32 +00:00
Samuel Pitoiset
22402dadd3 radv: add a separate path for writing ycbcr combined image+sampler desc
This will allow us to remove the ycbcr hack and to reduce the number
of bytes written for combined image+sampler from 80 to 64.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35457>
2025-06-19 12:58:31 +00:00
Samuel Pitoiset
4f37876c7b radv: replace radv_combined_image_descriptor_sampler_offset() by a constant
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35457>
2025-06-19 12:58:31 +00:00
Rhys Perry
2cfd2d3b1d aco/tests: add lower_branches tests
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35202>
2025-06-19 10:58:39 +00:00
Rhys Perry
c45482e652 aco: validate that preds/succs match
This isn't done in validate_cfg() because that's called less frequently.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35202>
2025-06-19 10:58:39 +00:00
Rhys Perry
85db025cd7 aco: continue when try_remove_simple_block can't remove a predecessor
We should update linear_preds so that the predecessors we can remove are
actually removed.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35202>
2025-06-19 10:58:38 +00:00
Rhys Perry
5344abbc56 aco/lower_branches: keep blocks with multiple logical successors
It might be the case that both the branch and exec mask write in a
divergent branch block are removed. try_remove_simple_block() might then
try to remove it, but fail because it has multiple logical successors.
Instead, just skip these blocks.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Backport-to: 25.1
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35202>
2025-06-19 10:58:38 +00:00
Georg Lehmann
001fe8c236 aco: optimize boolean phi with empty else block
We can keep the else empty by handling the phi in the "then" block.

Foz-DB Navi21:
Totals from 921 (1.15% of 80065) affected shaders:
Instrs: 4532598 -> 4527309 (-0.12%); split: -0.12%, +0.00%
CodeSize: 24498484 -> 24481780 (-0.07%); split: -0.08%, +0.01%
Latency: 41016915 -> 41020477 (+0.01%); split: -0.10%, +0.11%
InvThroughput: 9998405 -> 9991873 (-0.07%); split: -0.08%, +0.02%
SClause: 128261 -> 128267 (+0.00%)
Copies: 409949 -> 408585 (-0.33%); split: -0.36%, +0.02%
Branches: 169740 -> 169222 (-0.31%); split: -0.58%, +0.27%
PreSGPRs: 64408 -> 64398 (-0.02%)
VALU: 2972521 -> 2972518 (-0.00%)
SALU: 673844 -> 668973 (-0.72%); split: -0.72%, +0.00%

Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35165>
2025-06-19 07:32:43 +00:00
Georg Lehmann
4a2884237a radv: dump NIR for executable info after nir_to_asm
ACO modifies the NIR, most importantly it updates divergence analysis.

Acked-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32990>
2025-06-19 07:02:20 +00:00
Georg Lehmann
88753ddd1d aco: allow nir divergence to be printed again
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32990>
2025-06-19 07:02:20 +00:00
Yiwei Zhang
4efaa64159 vulkan/treewide: add and use common Android HMI hal implementation
There's no need for a per driver HMI implementation since the
vk_icdGetInstanceProcAddr implementation can well populate the required
entrypoints for Android icd.

Changes have to be done in this single commit for simplicity. Otherwise,
I would have to create a separate android shared library in the runtime
like how vk_instance is handled today, so that the target is able to
check per driver enablement def. However, after all drivers have
migrated over within this MR, we still have to clean those up. So I
decided to just do those in a single commit instead.

v2: avoid preloading u_gralloc in vulkan hal open

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> (v1)
Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Acked-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35561>
2025-06-18 22:23:53 +00:00
Yiwei Zhang
ba48380260 radv: free up hwvulkan_device_t upon driver unloading
Per <hardware/hwvulkan.h>, the hw_device_t::close() function is called
upon driver unloading. The behavior has been like this since Android 10.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Acked-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35561>
2025-06-18 22:23:51 +00:00
Samuel Pitoiset
e5d047d160 ci: uprev VKCTS main to 9cc8e038994c32534b3d2c4ba88c1dc49ef53228
RADV is the only driver using VKCTS main. This bumps adds tests for
maintenance9, unified_image_layout and VP9.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35540>
2025-06-18 09:15:34 +00:00
Georg Lehmann
e0cdf4dfdd radv/nir/lower_cmat: use common matrix layout on gfx12
The GFX12 ISA doc describes other layouts for A/B, but they are identical
to the C layout with the exception of the order of the rows (columns for A).
And as long as these are swapped in the same way for both A and B, the muladd
result will be the same. So we use the C layout for all uses.

This will simplify conversions between uses, and allows A/B to use a single
memory access for load/store in wave32.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35570>
2025-06-18 06:33:06 +00:00
Eric Engestrom
454684aa59 radv/ci: document flakes seen recently
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35592>
2025-06-17 21:49:35 +00:00
Eric Engestrom
d5a3cfac25 radeonsi/ci: document flakes seen recently
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35592>
2025-06-17 21:49:35 +00:00
Eric Engestrom
92cf8b2dc3 radeonsi/ci: update glcts expectations
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35592>
2025-06-17 21:49:35 +00:00
David Rosca
31967efd2c radv/video: Fix indentation
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35543>
2025-06-17 16:28:59 +00:00
David Rosca
58085da743 radv/video: Only enable VP9 decode with supported firmware
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35543>
2025-06-17 16:28:59 +00:00
David Rosca
3b6f23a8e1 ac/gpu_info: Add vcn_fw_revision
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35543>
2025-06-17 16:28:59 +00:00
Eve
f4ad6e6d4a radv: add RADV_PERFTEST option to turn off gtt spilling
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8107
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35355>
2025-06-17 06:46:27 +00:00
Samuel Pitoiset
203aacf064 radv/meta: use radv_get_copy_flags_from_bo() more
Cleanups.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35550>
2025-06-17 06:16:07 +00:00
Samuel Pitoiset
061bc6151a radv: fix 1x user sample locations on GFX10+
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Only GFX10+ can support 1x user sample locations, but MSAA_ENABLE
needs to be enabled.

Fixes new VKCTS coverage dEQP-VK.pipeline.*samples_1*.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35492>
2025-06-16 06:18:07 +00:00
Samuel Pitoiset
251b23f6c2 ac/surface: fix aliasing DCC tilings with HiZ info on GFX12
DCC tilings info needs to be set for all surfaces, including
depth/stencil. But because this is a C union, settings those fields
for depth/stencil surfaces might accidentally overwrite HiZ info.

This fixes rendering issues with RADV_DEBUG=nohiz.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35515>
2025-06-16 05:56:45 +00:00
Rhys Perry
01fae0c5c2 ac/llvm: use ds_bpermute_b32 for GFX12 wave64
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
It works.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35489>
2025-06-14 13:59:11 +00:00
Rhys Perry
9a5073e3a4 ac/llvm: rewrite shuffle waterfall loop
This can't break until we have read all lanes, otherwise it might read
from an inactive lane.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35489>
2025-06-14 13:59:11 +00:00
Rhys Perry
2ff53fd97c ac/llvm: convert to integer after reductions
These return floating point types for floating point ops.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Backport-to: 25.1
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35489>
2025-06-14 13:59:10 +00:00
Rhys Perry
8609008aeb ac/llvm: fix mul24 intrinsic overloading
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Fixes: e3edc6029b ("ac/llvm: use mul24 intrinsics")
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35489>
2025-06-14 13:59:10 +00:00
Rhys Perry
3c2b3fbd03 ac/llvm: fix overloading of intrinsic names
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Backport-to: 25.1
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35489>
2025-06-14 13:59:10 +00:00
Rhys Perry
ac2e36b377 ac/nir: create lowered inverse_ballot
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Fixes: b49eab68a8 ("ac/nir: use s_sendmsg(HS_TESSFACTOR) to optimize writing tess factors for gfx11")
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Reviewed-by: Marek Olšák <maraeo@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35489>
2025-06-14 13:59:10 +00:00
Derek Foreman
07881b085e vulkan: Enable PresentWait2 on many physical devices
PresentWait2 should be possible on any physical device, as it adds a
surface capability query that depends on common wsi code.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35414>
2025-06-13 15:52:02 +00:00
Samuel Pitoiset
3c3684f4d4 radv: fix a compilation warning with Clang in radv_get_depth_clamp_mode()
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35508>
2025-06-13 14:31:22 +00:00
Rhys Perry
a905ff3d54 meson: add dep_llvm to radv_tests
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
It seems this will try to link to LLVM because libvulkan_radeon links to
LLVM. Without the dep_llvm and with the GCC linker (instead of mold), this
will fail if you use a custom built LLVM and it can't find the shared object.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35495>
2025-06-13 11:29:31 +00:00
Samuel Pitoiset
161f27e206 radv: enable shaderImageFloat32AtomicAdd on GFX12 with ACO
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35493>
2025-06-13 08:47:59 +00:00
Samuel Pitoiset
d23de4918e aco: add support for image f32 atomic add
It's supported on GFX12.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35493>
2025-06-13 08:47:59 +00:00
Samuel Pitoiset
c5bf1caf17 radv: enable shaderBufferFloat32AtomicMinMax on GFX12
This is supported.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35493>
2025-06-13 08:47:59 +00:00
Samuel Pitoiset
8dd496955d radv: advertise VK_KHR_unified_image_layouts on GFX11+
On GFX12, everything is compressed with DCC and it's completely
transparent to the userspace driver.

On GFX11-GFX11.5, DCC can compress everything with GENERAL and FMASK
has been merged with DCC.

On GFX10-GFX10.3, MSAA through FMASK can't be compressed with GENERAL
and this will hurt performance.

On GFX6-9, DCC can't be supported with GENERAL because no DCC stores,
so this will destroy performance.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35424>
2025-06-13 08:12:04 +00:00
Samuel Pitoiset
a3fa8eed4c radv: implement VK_KHR_unified_image_layouts
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35424>
2025-06-13 08:12:04 +00:00
Samuel Pitoiset
eeabce93b6 radv: use constants for different descriptor sizes
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Instead of magic values everywhere.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35428>
2025-06-13 07:53:04 +00:00
Samuel Pitoiset
939b66a798 radv: remove unused 96-bit memcpy for image descriptors
This can only be 32, 64 or 80 for combined image/sampler.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35428>
2025-06-13 07:53:04 +00:00
Samuel Pitoiset
6b604ff60f radv: cleanup redundant switch cases in radv_GetDescriptorEXT()
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35428>
2025-06-13 07:53:04 +00:00
Samuel Pitoiset
63f8b8ce6d radv/nir: adjust a comment about inlining immutable samplers
That (broken) optimization has been removed few weeks ago.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35428>
2025-06-13 07:53:04 +00:00
Samuel Pitoiset
d5da47f831 radv: advertise VK_KHR_maintenance9
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35423>
2025-06-13 07:33:03 +00:00
Samuel Pitoiset
99fb1a9bd7 radv/nir: lower unassigned vertex attributes to (0,0,0,0)
The spec allows both 0,0,0,0 and 0,0,0,1. Returning all zeroes makes it
consistent with vertex prologs.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35423>
2025-06-13 07:33:03 +00:00
Samuel Pitoiset
4e46cabb75 radv: add support for VK_QUERY_POOL_CREATE_RESET_BIT_KHR
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35423>
2025-06-13 07:33:03 +00:00
Karol Herbst
4ff66b4343 ac/llvm: fix bitfield ops
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35423>
2025-06-13 07:33:03 +00:00
Samuel Pitoiset
36c0c1e857 Revert "radv,driconf: Add radv_force_64k_sparse_alignment config"
This reverts commit e32a90b57c.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35023>
2025-06-13 06:43:47 +00:00
Samuel Pitoiset
817f7f1bb2 radv: remove radv_disable_dedicated_sparse_queue completely
This drirc workaround is probably not useful since RADV allows SPARSE
on all queues.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35023>
2025-06-13 06:43:47 +00:00
Samuel Pitoiset
7f7ed18929 radv: fix 3-plane formats with descriptor buffers
Found by inspection.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35455>
2025-06-13 06:27:26 +00:00