Commit graph

20590 commits

Author SHA1 Message Date
Rhys Perry
24ab54fe3f ac/llvm: fix isub image atomic
Fixes red_dead_redemption_2_VK/340c6c75f15678ff

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/41261>
2026-05-01 08:45:26 +00:00
Marek Olšák
1b409ff681 aco/tests: update ACO tests for ac_nir_lower_tex_coords refactoring
For: ac/nir/lower_tex_coords: move input loads instead of cloning them

Suggested by: Georg Lehmann

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41173>
2026-05-01 02:37:16 +00:00
Marek Olšák
ac33f82d54 ac/nir/lower_tex_coords: move input loads instead of cloning them
This stops leaving dead input loads behind.

Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41173>
2026-05-01 02:37:16 +00:00
Marek Olšák
ad4eaaae68 ac/nir: factor out ac_nir_lower_tex_coords from ac_nir_lower_image_tex
This just separates tex coord lowering into a new pass.

The gfx_level parameter is now unused in ac_nir_lower_image_tex, but I'm
keeping it because it will be used in the future.

Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41173>
2026-05-01 02:37:16 +00:00
Samuel Pitoiset
608bc0e593 radv/meta: fix expanding HTILE on compute with multisampling
The expand was considering only the first sample, very old bug.

This fixes test_{copy,compute}_queue_depth_stencil_msaa from
vkd3d-proton on GFX11-GFX11.7 GPUs. Older GPUs don't support image
stores with depth/stencil MSAA images.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41267>
2026-04-30 22:17:43 +00:00
Samuel Pitoiset
e092e945a7 radv: fix printing image format with RADV_DEBUG=img
It should print the Vulkan format, not the pipe format.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41265>
2026-04-30 17:09:00 +00:00
Samuel Pitoiset
f2ce2868c5 ci: uprev vkd3d
This contains new tests for DGC+multiview which are valid in DX12
but invalid in Vulkan, unless RADV allows support for it. Important
to have coverage for us because it's used for Crimson Desert.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41193>
2026-04-30 15:00:02 +00:00
Samuel Pitoiset
b4591f4b30 radv/ci: update list of skipped tests
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
They are fixed now.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
2026-04-30 09:29:43 +00:00
Samuel Pitoiset
a0d39a29da radv: set RADEON_FLAG_EMULATE_SPARSE_RESIDENCY for sparse SSBO/UBO buffers
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
2026-04-30 09:29:43 +00:00
Samuel Pitoiset
41fa965386 radv/amdgpu: emulate sparse residency for the SMEM loads with NULL PRT workaround
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
2026-04-30 09:29:43 +00:00
Samuel Pitoiset
0be39ce4ad radv: use the "LOW" address space for UBOs
Read-only and no sparse feedback support.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
2026-04-30 09:29:43 +00:00
Samuel Pitoiset
3237666fc4 radv: run the pass to fixup SMEM loads with NULL PRT pages
Right after global access are lowered.

fossils-db (NAVI21):
Totals from 37734 (33.68% of 112041) affected shaders:
MaxWaves: 898021 -> 897961 (-0.01%); split: +0.00%, -0.01%
Instrs: 34145252 -> 34267942 (+0.36%); split: -0.00%, +0.36%
CodeSize: 182360344 -> 182943952 (+0.32%); split: -0.00%, +0.32%
VGPRs: 1796672 -> 1796816 (+0.01%); split: -0.00%, +0.01%
SpillSGPRs: 13708 -> 13964 (+1.87%); split: -0.28%, +2.15%
Latency: 442451029 -> 442827188 (+0.09%); split: -0.02%, +0.10%
InvThroughput: 105259490 -> 105287803 (+0.03%); split: -0.01%, +0.03%
VClause: 672269 -> 672252 (-0.00%); split: -0.12%, +0.12%
SClause: 847133 -> 847677 (+0.06%); split: -0.35%, +0.41%
Copies: 2974422 -> 2979443 (+0.17%); split: -0.35%, +0.52%
Branches: 860896 -> 861639 (+0.09%); split: -0.00%, +0.09%
PreSGPRs: 1677701 -> 1682387 (+0.28%); split: -0.01%, +0.29%
VALU: 22386780 -> 22386984 (+0.00%); split: -0.01%, +0.01%
SALU: 5282218 -> 5406460 (+2.35%); split: -0.01%, +2.36%

fossils-db (POLARIS10):
Totals from 15054 (21.74% of 69255) affected shaders:
MaxWaves: 87688 -> 87689 (+0.00%); split: +0.01%, -0.00%
Instrs: 12542117 -> 12596734 (+0.44%); split: -0.00%, +0.44%
CodeSize: 65209280 -> 65458732 (+0.38%); split: -0.00%, +0.39%
SGPRs: 1149639 -> 1149975 (+0.03%); split: -0.24%, +0.27%
VGPRs: 749928 -> 749956 (+0.00%); split: -0.02%, +0.02%
SpillSGPRs: 11139 -> 11413 (+2.46%); split: -0.29%, +2.75%
Latency: 169204114 -> 169533989 (+0.19%); split: -0.01%, +0.21%
InvThroughput: 88091947 -> 88185872 (+0.11%); split: -0.01%, +0.11%
VClause: 280519 -> 280318 (-0.07%); split: -0.18%, +0.10%
SClause: 343474 -> 344686 (+0.35%); split: -0.32%, +0.67%
Copies: 1529440 -> 1530545 (+0.07%); split: -0.30%, +0.38%
Branches: 286849 -> 286856 (+0.00%); split: -0.01%, +0.01%
PreSGPRs: 661815 -> 663239 (+0.22%); split: -0.02%, +0.23%
VALU: 8758472 -> 8759214 (+0.01%); split: -0.01%, +0.01%
SALU: 1775129 -> 1829513 (+3.06%); split: -0.02%, +3.08%

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
2026-04-30 09:29:43 +00:00
Samuel Pitoiset
a4668733e5 ac/nir: add a pass to fixup SMEM loads with NULL PRT pages
Only global/SSBO SMEM loads are considered because for UBOs the "LOW"
VA will be set in descriptors.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
2026-04-30 09:29:43 +00:00
Samuel Pitoiset
60b406e233 ac/gpu_info: query the PRT workaround control bit from libdrm
libdrm splits the HIGH address space in two equal parts for GPUs that
are affected by the SMEM loads with NULL PRT page.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
2026-04-30 09:29:43 +00:00
Samuel Pitoiset
978605fd06 ac/gpu_info: add has_smem_with_null_prt_bug
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
2026-04-30 09:29:43 +00:00
Samuel Pitoiset
ecfda339ca ac/gpu_info: store more addr space info
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
2026-04-30 09:29:43 +00:00
xueyuli2
da7ed1c576 amd/virtio: fix bo use-after-free race condition in amdvgpu_bo_free
In amdvgpu_bo_free(), when the reference count drops to 0, vdrm_flush()
is called before removing the bo from the handle_to_vbo hash table.

Since vdrm_flush() is a time-consuming operation and is executed outside
of the handle_to_vbo_mutex lock, another thread calling amdvgpu_bo_import()
can concurrently find this bo in the hash table, increment its refcount,
and attempt to use it. Once vdrm_flush() finishes, amdvgpu_bo_free()
proceeds to remove the bo and call free(), leaving the importing thread
with a dangling pointer, which leads to a use-after-free or double free
crash.

To fix this race condition, we must remove the bo from the hash table
under the lock first. After the bo is safely unlinked and the lock is
released, we can then perform the time-consuming vdrm_flush() and the
actual memory release.

Signed-off-by: zhaqian <zhaqian@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41146>
2026-04-30 08:41:50 +00:00
Samuel Pitoiset
69680f3d66 radv/ci: bump timeouts for radv-{navi21,gfx1201}-vkcts-full
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
They usually don't finish otherwise.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41282>
2026-04-30 07:56:04 +00:00
Samuel Pitoiset
52669c3b5b radv: re-organize radv_cmd_state slightly
Trying to regroup states.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41152>
2026-04-30 06:18:29 +00:00
Samuel Pitoiset
730a5b725e radv: move vertex buffer state to radv_cmd_state
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41152>
2026-04-30 06:18:29 +00:00
Samuel Pitoiset
9feb722b31 radv: move conditional rendering state to radv_cond_render_state
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41152>
2026-04-30 06:18:29 +00:00
Samuel Pitoiset
57ecb1c1ec radv: cleanup suspending/resuming cond rendering with DGC
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41152>
2026-04-30 06:18:28 +00:00
Samuel Pitoiset
43abb73273 radv: move index buffer state to radv_index_buffer_state
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41152>
2026-04-30 06:18:28 +00:00
Samuel Pitoiset
93468750ef radv: remove unnecessary radv_cmd_state::mesh_shading
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41152>
2026-04-30 06:18:27 +00:00
Samuel Pitoiset
5246eee299 radv: move streamout bindings to radv_streamout_state
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41152>
2026-04-30 06:18:26 +00:00
Samuel Pitoiset
02ec87672b radv: move suspend_streamout to radv_streamout_state
And rename it to suspended.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41152>
2026-04-30 06:18:25 +00:00
Mike Blumenkrantz
d4d7055aee radv: add RADV_QUEUE_DISABLE env var for selectively disabling queues
it is sometimes useful to test radv without certain queues disabled in order
to exercise alternative codepaths. this exposes that capability

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41086>
2026-04-29 15:08:28 +00:00
Benjamin Cheng
656b3814c2 radv/wsi: Re-use transfer queue if it exists
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
This avoids writing past the end of pdev->vk_queue_to_radv if all the
queue families are available.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/work_items/14834
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41155>
2026-04-29 12:38:02 +00:00
Rhys Perry
aac8787fda radv: remove radv_device_cache_key
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/41022>
2026-04-29 08:10:12 +00:00
Rhys Perry
44b09b8396 radv: remove radv_physical_device_cache_key
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/41022>
2026-04-29 08:10:12 +00:00
Rhys Perry
27815719aa radv: remove most fields from radv_physical_device_cache_key
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/41022>
2026-04-29 08:10:12 +00:00
Rhys Perry
9ad0cd7e38 radv: hash radv_compiler_info::key into the cache key
This will replace both the pdev and device cache keys.

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/41022>
2026-04-29 08:10:12 +00:00
Rhys Perry
1ac306c11e radv: remove radv_compiler_info::cache_key
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/41022>
2026-04-29 08:10:11 +00:00
Rhys Perry
c6c4f523af radv: add fields to radv_compiler_info from radv_physical_device_cache_key
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/41022>
2026-04-29 08:10:11 +00:00
Rhys Perry
3aa6903883 radv: move fields to radv_compiler_info::key
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/41022>
2026-04-29 08:10:10 +00:00
Rhys Perry
7c93a6e91c radv: move use_llvm to radv_compiler_info::key
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/41022>
2026-04-29 08:10:10 +00:00
Rhys Perry
5f3b73b2f0 radv: move load_grid_size_from_user_sgpr to radv_physical_device
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-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/41022>
2026-04-29 08:10:10 +00:00
Rhys Perry
48645f21b5 radv: initialize nir_shader_compiler_options directly in compiler info
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-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/41022>
2026-04-29 08:10:09 +00:00
Rhys Perry
0249fcfbb6 radv: assert there is no padding in cache keys
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-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/41022>
2026-04-29 08:10:08 +00:00
Rhys Perry
5ee0935861 ac: move has_cs_regalloc_hang_bug to ac_compiler_info
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/41022>
2026-04-29 08:10:08 +00:00
Rhys Perry
e40457b136 ac: move lds_size_per_workgroup to ac_compiler_info
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/41022>
2026-04-29 08:10:08 +00:00
Peyton Lee
ab878cc1ea amd/gmlib: add tm_generate_formatted_3DLut
Adds a utility to format a 3D LUT into the required memory layout and write it into a given buffer.

Signed-off-by: Peyton Lee <peytolee@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41190>
2026-04-29 07:46:28 +00:00
Samuel Pitoiset
669d3915c6 radv: slightly rework initializing the default graphics state
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
All these parameters are only used for graphics.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41136>
2026-04-28 17:06:42 +00:00
Samuel Pitoiset
461154fd5c radv: remove useless tracking about non-coherent RBs with secondaries
Either the rendering begins in the primary and the information is
already known, or if it begins in the secondary, non-coherent RBs
should already be flushed in EndCommandBuffer().

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41136>
2026-04-28 17:06:42 +00:00
Samuel Pitoiset
bcd74a7af0 radv: add RADV_CMD_DIRTY_RAY_TRACING_PIPELINE
This seems cleaner than storing the last emitted ray tracing pipeline.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41136>
2026-04-28 17:06:42 +00:00
Samuel Pitoiset
20f7fba442 radv: add RADV_CMD_DIRTY_COMPUTE_PIPELINE
This seems cleaner than storing the last emitted compute pipeline.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41136>
2026-04-28 17:06:42 +00:00
Samuel Pitoiset
c7c2ce13ae radv: stop tracking the last emitted graphics pipeline
This shouldn't have any effects because there is a dirty bit and
binding the same graphics pipeline doesn't trigger it.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41136>
2026-04-28 17:06:42 +00:00
Samuel Pitoiset
6af89db05c radv: rename RADV_CMD_DIRTY_PIPELINE to RADV_CMD_DIRTY_GRAPHICS_PIPELINE
This is really only used for graphics pipelines.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41136>
2026-04-28 17:06:42 +00:00
Samuel Pitoiset
75e5ba9a03 radv: simplify resetting pipeline state for ESO
Checking if there is a bound graphics pipeline should be enough to
reset the appropriate states. Also clear the dirty pipeline bit only
for graphics pipelines because it's not used for compute pipelines.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41136>
2026-04-28 17:06:42 +00:00
Samuel Pitoiset
d1a428606e radv: add missing VkMemoryRangeBarriersInfoKHR from DAC
This is used to declare barrier dependencies for an addr range
(because no VkBuffer with DAC).

This fixes new dEQP-VK.api.device_address.misc.memory_range_barrier.

Fixes: a97c889a7b ("radv: implement VK_KHR_device_address_commands")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41198>
2026-04-28 16:39:26 +00:00