Samuel Pitoiset
8306256e2a
radv: allow NULL pSamplesMask with vkCmdSetSampleMaskEXT()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38043 >
2025-10-31 07:51:19 +00:00
Samuel Pitoiset
d5d2a4ad07
radv: implement vkCmdEndRendering2KHR()
...
Common runtime code already does CmdEndRendering()->CmdEndRendering2().
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38043 >
2025-10-31 07:51:19 +00:00
Marek Olšák
9def0a6e5b
ac/nir: set support_indirect_inputs/outputs in common code
...
This fixes mesh shader performance of RADV for GravityMark by stopping
the lowering of ClipDistance[64][4] indirect access for mesh shader outputs.
The perf improvement is 14% on Navi48.
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38155 >
2025-10-31 00:57:46 +00:00
Daniel Schürmann
10be538851
tree-wide: don't call nir_opt_constant_folding after nir_lower_flrp
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37195 >
2025-10-30 19:28:07 +00:00
Daniel Schürmann
ef9ecc4058
nir: add nir_imul_nuw() and nir_imul_imm_nuw() helpers
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37195 >
2025-10-30 19:28:06 +00:00
Samuel Pitoiset
b2badb2b24
radv: ignore dual-source blending when blending isn't enabled for MRT0
...
The Vulkan spec says:
"VUID-vkCmdDraw-maxFragmentDualSrcAttachments-09239
If blending is enabled for any attachment where either the source
or destination blend factors for that attachment use the secondary
color input, the maximum value of Location for any output attachment
statically used in the Fragment Execution Model executed by this
command must be less than maxFragmentDualSrcAttachments"
Which means it must be disabled.
Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14190
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38107 >
2025-10-30 07:59:50 +00:00
Samuel Pitoiset
14667eef53
radv: fix reserving enough space for emitting the SPM setup
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
4096 is an arbitrary but large enough number to emit everything needed.
Fixes: 22d73fc077 ("amd,radv,radeonsi: add ac_emit_spm_setup()")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38087 >
2025-10-30 07:36:27 +00:00
Samuel Pitoiset
0dcb800a07
radv: remove some RADV_DEBUG deprecated options
...
They have been marked as deprecated in 25.3, so one release cycle
before they are removed completely.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38085 >
2025-10-30 07:16:23 +00:00
Georg Lehmann
a17afd5edd
aco/tests: add some simple fp64 modifier tests
...
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38011 >
2025-10-29 17:57:53 +00:00
Georg Lehmann
a54f95c52f
aco/optimizer: apply fp64 modifiers
...
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38011 >
2025-10-29 17:57:53 +00:00
Georg Lehmann
62e664f8c8
aco/optimizer: fix applying 64bit neg/abs
...
extract is only valid for <=32bit operands.
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38011 >
2025-10-29 17:57:53 +00:00
Georg Lehmann
0c8b885e21
aco/isel: emit v_mul_f64 for fp64 fsat
...
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38011 >
2025-10-29 17:57:52 +00:00
Georg Lehmann
9ece74ce79
aco/isel: emit v_mul_f64 with modifiers for fneg/fabs
...
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38011 >
2025-10-29 17:57:52 +00:00
Georg Lehmann
c84f60ef08
aco/optimizer: replace 64bit mul with 1.0/-1.0 with bitwise instruction if possible
...
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38011 >
2025-10-29 17:57:52 +00:00
Georg Lehmann
dbc3bbdcef
aco/optimizer: rework canonicalized label
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
To not rely on register classes, which are ambiguous.
Stats improvements are coming from the new phi handling.
Foz-DB Navi21:
Totals from 92 (0.12% of 79789) affected shaders:
Instrs: 352577 -> 346634 (-1.69%)
CodeSize: 1941236 -> 1933608 (-0.39%); split: -0.44%, +0.04%
VGPRs: 7888 -> 7832 (-0.71%)
Latency: 4364419 -> 4363894 (-0.01%); split: -0.02%, +0.01%
InvThroughput: 1502867 -> 1501871 (-0.07%); split: -0.07%, +0.00%
SClause: 5021 -> 5005 (-0.32%); split: -0.34%, +0.02%
Copies: 18469 -> 18485 (+0.09%); split: -0.16%, +0.24%
Branches: 6131 -> 6119 (-0.20%)
VALU: 267063 -> 261219 (-2.19%)
SALU: 32294 -> 32228 (-0.20%); split: -0.21%, +0.01%
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37867 >
2025-10-29 14:29:21 +00:00
Georg Lehmann
c61ee32034
aco/optimizer: add seperate fp16 abs/neg/fcanonicalize labels
...
In the future, we can't use the register class to detect fp16 vs fp32
because SALU uses s1 for both.
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37867 >
2025-10-29 14:29:21 +00:00
Georg Lehmann
9e9d9c0373
aco/optimizer: re-index labels
...
Everything after and including the omod labels will be removed soon.
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37867 >
2025-10-29 14:29:21 +00:00
Marek Olšák
4799dc9447
ac/surface: pass all ac_compute_surface info via ac_surf_config, not radeon_surf
...
radeon_surf stops being an input to ac_compute_surface. It's only an output
now.
This makes it clear which fields affect ac_compute_surface.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:44 +00:00
Marek Olšák
966cb36722
amd: constify struct radeon_surf
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:44 +00:00
Marek Olšák
feaa359b43
ac/surface: move surf_index and fmask_surf_index into ac_addrlib
...
They don't have to be in drivers.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:43 +00:00
Marek Olšák
6857fbba59
ac/surface: pass ac_addrlib* everywhere instead of ADDR_HANDLE
...
ac_addrlib will contain more stuff.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:42 +00:00
Marek Olšák
0e44a5a1c6
radv: set RADEON_SURF_SHAREABLE for surf_index logic
...
use_tile_swizzle uses this flag
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:42 +00:00
Marek Olšák
2bbc7d1db6
radv: move more surf_index logic to use_tile_swizzle
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:41 +00:00
Marek Olšák
ca6ba34669
radv: move VK_IMAGE_USAGE_HOST_TRANSFER_BIT checking to ac_surface.c
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:40 +00:00
Marek Olšák
20eada1bc4
radv: don't check vk_format_is_depth_or_stencil for surf_index
...
already checked by use_tile_swizzle
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:39 +00:00
Marek Olšák
1271850b9b
radv: don't check VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT for surf_index
...
already checked by use_tile_swizzle
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:39 +00:00
Marek Olšák
f0fde95e20
radv: don't set ac_surf_index::surf_index to NULL
...
ac_surface.c already checks RADEON_SURF_SCANOUT.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:38 +00:00
Marek Olšák
55d222c47b
ac/surface: add helper use_tile_swizzle to consolidate that logic
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:35 +00:00
Marek Olšák
484a36302d
amd: don't use non-existent GL1 packet fields on gfx12
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:34 +00:00
Marek Olšák
12062110ab
amd: don't use non-existent GLM packet fields on gfx12
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38093 >
2025-10-29 12:50:34 +00:00
Benjamin Cheng
cef8eff74d
radv/video: Override H265 SPS unaligned resolutions
...
VCN requires 64x16 alignment for HEVC. When the app requests non-aligned
resolutions, make up for it with conformance window cropping.
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38061 >
2025-10-28 08:53:35 +00:00
Benjamin Cheng
84b6d8e0d7
radv/video: Override H265 SPS block size parameters
...
VCN only supports this set of parameters.
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38061 >
2025-10-28 08:53:35 +00:00
Samuel Pitoiset
45affb0e53
radv: advertise VK_EXT_shader_uniform_buffer_unsized_array
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38047 >
2025-10-28 07:55:40 +01:00
Samuel Pitoiset
a31d3c764c
amd,radv,radeonsi: move GFX12 push SH REGS helpers to common code
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38000 >
2025-10-27 08:30:02 +00:00
Samuel Pitoiset
bddd7919d3
amd,radv,radeonsi: add ac_buffered_sh_regs
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38000 >
2025-10-27 08:30:02 +00:00
Samuel Pitoiset
91bd46d34e
amd,radv,radeonsi: add ac_{gfx11_reg_pair,gfx12_reg}
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38000 >
2025-10-27 08:30:01 +00:00
Samuel Pitoiset
846b707045
amd,radv,radeonsi: move some GFX12 emit helpers to common code
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38000 >
2025-10-27 08:30:00 +00:00
Samuel Pitoiset
2009815d61
radv: add radv_wait_for_vm_map_updates drirc and enable for Forza Horizon 5
...
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/13321
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38031 >
2025-10-27 07:56:45 +00:00
Samuel Pitoiset
fc0cfaae1c
radv/amdgpu: add a way to wait for VM updates at alloc time
...
RADEON_FLAG_VM_UPDATE_WAIT can be passed to wait for VM updates at
allocation time instead of delaying them at submit time. There is no
reason to delay the waiting when the memory is bound to images/buffers
because in DX12 ressources are allocated and bound immediately.
This flag will be used to workaround an use-before-alloc in FH5
(game bug) which causes GPU hangs.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38031 >
2025-10-27 07:56:44 +00:00
Samuel Pitoiset
bbaffa22ff
radv/amdgpu: use radv_amdgpu_bo_va_op() for BOs from pointer
...
No logical changes because ac_drm_bo_va_op() sets
AMDGPU_VM_PAGE_{READABLE,EXECUTABLE,WRITEABLE}.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38031 >
2025-10-27 07:56:44 +00:00
Samuel Pitoiset
f9af7f7b2a
radv: use radv_buffer_get_va() more
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38031 >
2025-10-27 07:56:44 +00:00
jglrxavpok
09e091fbdf
radv/aco: Print source location debug info inside ACO disassembly if we have the information
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36443 >
2025-10-26 15:12:58 +00:00
Collabora's Gfx CI Team
8d37098deb
Uprev ANGLE to e9626fbced6841d804e7eaf48bb078770822032b
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
8ed16003f2...e9626fbced
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37858 >
2025-10-26 00:08:20 +00:00
Konstantin Seurer
95a89f7b33
radv: Report smaller bvh sizes when possible
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37830 >
2025-10-24 21:17:10 +00:00
Konstantin Seurer
7809af5e46
radv: Always use compact bvh encoding
...
The compact encoding will make it possible to allocate less space for
internal nodes
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37830 >
2025-10-24 21:17:10 +00:00
Alyssa Rosenzweig
b824ef83ab
util/dynarray: infer type in append
...
Most of the time, we can infer the type to append in
util_dynarray_append using __typeof__, which is standardized in C23 and
support in Jesse's MSMSVCV. This patch drops the type argument most of
the time, making util_dynarray a little more ergonomic to use.
This is done in four steps.
First, rename util_dynarray_append -> util_dynarray_append_typed
bash -c "find . -type f -exec sed -i -e 's/util_dynarray_append(/util_dynarray_append_typed(/g' \{} \;"
Then, add a new append that infers the type. This is much more ergonomic
for what you want most of the time.
Next, use type-inferred append as much as possible, via Coccinelle
patch (plus manual fixup):
@@
expression dynarray, element;
type type;
@@
-util_dynarray_append_typed(dynarray, type, element);
+util_dynarray_append(dynarray, element);
Finally, hand fixup cases that Coccinelle missed or incorrectly
translated, of which there were several because we can't used the
untyped append with a literal (since the sizeof won't do what you want).
All four steps are squashed to produce a single patch changing every
util_dynarray_append call site in tree to either drop a type parameter
(if possible) or insert a _typed suffix (if we can't infer). As such,
the final patch is best reviewed by hand even though it was
tool-assisted.
No Long Linguine Meals were involved in the making of this patch.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Acked-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38038 >
2025-10-24 18:32:07 +00:00
Samuel Pitoiset
849d41dbf8
radv: implement a new descriptor sets allocator
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
The previous implementation was horribly slow with a larger number
of descriptor sets.
The new approach uses util_vma_heap (like ANV) which is a perfect fit.
This fixes stuttering in Indiana Jones because that games seems to use
a huge number of descriptor sets which can also be freed.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13901
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37976 >
2025-10-24 06:25:17 +00:00
Samuel Pitoiset
9b6d89f4ca
radv: use a linked-list for storing descriptor pool sets
...
Only when pool entries aren't freed yet. This will make the new
allocation strategy much simpler.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37976 >
2025-10-24 06:25:17 +00:00
Samuel Pitoiset
4d33d3f507
radv: add radv_bind_{graphics,rt,compute}_pipeline() helpers
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38004 >
2025-10-24 05:59:06 +00:00
Samuel Pitoiset
54a6c81d3a
radv: dirty dynamic descriptors when required
...
The user SGPRS might be different and dynamic descriptors need to be
re-emitted again
This fixes a regression with ANGLE, and VCKTS is currently missing
coverage.
Fixes: a47952d495 ("radv: upload and emit dynamic descriptors separately from push constants")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14146
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38004 >
2025-10-24 05:59:06 +00:00