Konstantin Seurer
fc12fafb1d
radv/meta: Change the return type of get_r32g32b32_format to VkFormat
...
Gets rid of some compiler warnings.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33983 >
2025-03-12 10:07:37 +00:00
Samuel Pitoiset
60b2e6f8ac
radv/tests: add few tests that verify drirc options
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33875 >
2025-03-12 09:07:16 +00:00
Samuel Pitoiset
8abe6beb3c
radv/tests: add a test to verify that pipeline hash matches RGP<->Fossilize
...
Very useful to get the fossil from one RGP capture.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33875 >
2025-03-12 09:07:16 +00:00
Samuel Pitoiset
3da9d6dac9
radv/tests: add a test to verify that pipelineCacheUUID is invariant
...
This was recently broken because pipelineCacheUUID was computed using
the physical device cache key. This caused SteamOS precompilation to
not happen for games that have shaders-based drirc.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33875 >
2025-03-12 09:07:16 +00:00
Samuel Pitoiset
19e62c7abc
radv: add a small framework for RADV specific tests
...
There are a lot of things that can't be tested outside of the driver,
like drirc workarounds, RADV_DEBUG options and debugging stuff.
Writing RADV specific tests would help to avoid introducing regressions.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33875 >
2025-03-12 09:07:16 +00:00
Samuel Pitoiset
b8e3f66328
radv/winsys: enable has_timeline_syncobj for the null winsys
...
For testing the dedicated sparse queue drirc with the null winsys.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33875 >
2025-03-12 09:07:16 +00:00
Samuel Pitoiset
5fe5fb147e
meson: add build-radv-tests option
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33875 >
2025-03-12 09:07:15 +00:00
Samuel Pitoiset
c627097841
radv/amdgpu: fix device deduplication
...
To correctly deduplicate device inside the winsys, it should use the
fd or amdgpu_device_handle. Using the allocated ac_drm_device as key
is obviously broken.
Not deduplicating devices breaks memory budget and a bunch of games
were broken.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12686
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12775
Fixes: a565f2994f ("amd: move all uses of libdrm_amdgpu to ac_linux_drm")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34005 >
2025-03-11 22:35:46 +00:00
Samuel Pitoiset
d1a2ba57f9
radv: fix a GPU hang with inherited rendering and HiZ/HiS on GFX1201
...
With secondary command buffers, inherited rendering can be used but
it's basically impossible to know if the depth/stencil attachment
enabled HiZ/HiS. But it's required to disable WALK_ALIGN8 to avoid
GPU hangs.
This assumes that HiZ/HiS is enabled for inherited rendering as long
as a depth/stencil attachment is used. It's not the most optimal
approach but it's not supposed to hurt either.
This fixes a GPU hang with
dEQP-VK.dynamic_rendering.primary_cmd_buff.basic.contents_secondary_cmdbuffers
and friends.
GFX1200 isn't affected because it doesn't support HiZ/HiS.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33986 >
2025-03-11 14:14:25 +00:00
Samuel Pitoiset
01f92acf10
radv/winsys: use real info for GFX12 in the null winsys
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33970 >
2025-03-11 06:50:49 +00:00
Natalie Vock
a1b0599105
radv/rt: Flush L2 after writing internal node offset on GFX12
...
Otherwise the encoder can read a stale value and make internal nodes
point into leaf space (if 0 is read).
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33985 >
2025-03-10 17:42:05 +00:00
Natalie Vock
cdadda2d51
radv/rt: Guard leaf encoding by leaf node count
...
For empty BVHs we shouldn't emit any leaf nodes, but there is one
invocation to encode the root node. Guard leaf node encoding so that
invocation doesn't try writing any leaves.
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33985 >
2025-03-10 17:42:05 +00:00
Samuel Pitoiset
0bc9d59c2e
ac,radv: add a workaround for a hw bug with primitive restart on GFX10-GFX10.3
...
At least, NAVI10, NAVI21 and NAVI24 are affected by this what looks
like a hardware bug when primitive restart is changed and no context
registers are written between draws. It seems the hardware doesn't
consider primitive restart at all in this situation.
Adding SQ_NON_EVENT(0) as suggested by Marek seems to fix it reliably
without introducing any overhead. It's basically a NOP packet that adds
a small delay.
Fixes new VKCTS coverage dEQP-VK.transform_feedback.primitive_restart.*.
Also fixes this old vkd3d-proton issue.
Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7258
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33929 >
2025-03-10 08:44:31 +00:00
Georg Lehmann
55921bd7ef
radv/gfx10+: remove null exports if discard isn't used
...
Foz-DB Navi31:
Totals from 1362 (1.71% of 79789) affected shaders:
Instrs: 9879 -> 8497 (-13.99%)
CodeSize: 52004 -> 41028 (-21.11%)
Latency: 48821 -> 27349 (-43.98%)
InvThroughput: 7475 -> 7474 (-0.01%)
SALU: 274 -> 254 (-7.30%)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33835 >
2025-03-07 15:00:37 +00:00
Georg Lehmann
ad73af6e68
radv: add dcc_decompress_gfx11 in radv_graphics_state_key
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33835 >
2025-03-07 15:00:37 +00:00
Samuel Pitoiset
82ab58f6c6
radv: add RADV_DEBUG=pso_history
...
This dumps pipeline hash + shader VA to /tmp/radv_pso_history.log. Can
be very useful when investigating GPU hangs using UMR to get the fossils
back with the PC.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33912 >
2025-03-07 09:14:18 +01:00
Rhys Perry
66130a51d3
radv: don't assume WGP mode in radv_get_max_waves
...
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/33873 >
2025-03-06 20:47:20 +00:00
Rhys Perry
17abc5f326
radv: improve radv_get_max_waves for multi-wave workgroups with LDS
...
LDS isn't divided among SIMDs, and it doesn't make sense to launch a
fraction of a compute workgroup.
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/33873 >
2025-03-06 20:47:20 +00:00
Samuel Pitoiset
2a56afed8d
radv: switch to device address from vk_buffer
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33897 >
2025-03-06 09:46:01 +00:00
Mike Blumenkrantz
7200cf8827
radv: don't unnecessarily flag prolog recalc when binding VBOs
...
another 25% for vkoverhead@draw_vbo_change_dynamic
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Mike Blumenkrantz
4f71370830
radv: get vbo info directly into dgc upload
...
don't need this memcpy
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Mike Blumenkrantz
b78835de13
radv: move non_trivial_format calc to dynamic VI bind
...
this otherwise gets pointlessly recalculated on every draw when a VBO changes
another 10% for vkoverhead@draw_vbo_change_dynamic
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Mike Blumenkrantz
42db08c275
radv: split out dynamic vertex input descriptor writing
...
~25% boost to vkoverhead@draw_vbo_change_dynamic
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Mike Blumenkrantz
22434edefc
radv: inline some vertex descriptor functions
...
+5-7% in vkoverhead 16
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Mike Blumenkrantz
00f51f7215
radv: eliminate a memset in radv_get_vbo_info()
...
very minor perf cost
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Mike Blumenkrantz
e2ccd638a8
radv: roll line topology dynamic state changes into existing rast samples flag
...
this eliminates uploading rast samples whenever prim type changes even
when rast samples will not be changed
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Mike Blumenkrantz
b2123314bd
radv: store vertex prolog simple input check to cmdbuf on vs bind
...
no need to check this again and again
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Mike Blumenkrantz
881d94a40a
radv: store num_attributes to shader info
...
this eliminates a util_last_bit from the prolog hotpath
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Mike Blumenkrantz
d40dd4bfb7
radv: rewrite radv_get_line_mode() conditional
...
this was weirdly hard to parse
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33806 >
2025-03-06 01:26:02 +00:00
Samuel Pitoiset
f2eb31b1a2
spirv: move workarounds to an inner struct in spirv_to_nir_options
...
To be more explicit.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33866 >
2025-03-05 19:56:50 +00:00
Samuel Pitoiset
ab4d2d447a
radv: remove redundant radv_instance::drirc::rt_wave64
...
Use RADV_PERFTEST_RT_WAVE_64 instead.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33868 >
2025-03-05 12:45:08 +00:00
Samuel Pitoiset
54a62c5c23
radv: use radv_emulate_rt() more
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33868 >
2025-03-05 12:45:08 +00:00
Samuel Pitoiset
9108c198bb
radv: fix trap handler exception options
...
They are same values.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33868 >
2025-03-05 12:45:07 +00:00
Lucas Fryzek
cfcc522bf8
vulkan/runtime: Add object type to DMR API
...
radv: Update DMR usage to make use of object type arg
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33767 >
2025-03-04 15:24:39 +00:00
Ivan Avdeev
ff6504d4c0
radv: add experimental support for AMD BC-250 board
...
AMD BC-250 is a mining board based on an AMD APU with an integrated GPU
that kernel recognizes as Cyan Skillfish.
It is basically RDNA1/GFX10, but with added hardware ray tracing
support. LLVM calls it GFX1013, see
https://llvm.org/docs/AMDGPU/AMDGPUAsmGFX1013.html
Support for this GPU hasn't been extensively tested. Some games are
known to work, some non-trivial ray query compute and ray tracing
pipeline rendering works too. Q2RTX works.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33116 >
2025-03-04 08:07:31 +00:00
Timur Kristóf
3f3a5d8068
radv: Use flush postamble on GFX7 with different flags.
...
Flush caches at the end of each submission on GFX7.
This significantly improves stability on Hawaii
when running the CTS on multiple threads.
Keep previous behaviour on GFX6.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33563 >
2025-03-03 19:42:21 +00:00
Samuel Pitoiset
7f6e28db26
radv: fix re-emitting fragment output state when resetting gfx pipeline state
...
When switching from pipeline to shader objects.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33840 >
2025-03-03 19:19:33 +00:00
Konstantin Seurer
6e3fc37d47
radv: Implement multidimensional ray query arrays
...
This is technically a bug fix, but no sane developer would use this.
It's still nice to implement all corner cases.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32334 >
2025-03-03 12:07:47 +00:00
Konstantin Seurer
febc923a46
radv: Lower ray query vars to structs
...
This is much cleaner than passing an index around it will allow
implementing multidimensional ray query arrays.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32334 >
2025-03-03 12:07:47 +00:00
Julia Zhang
79bb8e3455
radv: advertise VK_EXT_device_memory_report
...
Signed-off-by: Julia Zhang <julia.zhang@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33088 >
2025-03-03 08:26:51 +00:00
Julia Zhang
f504ed9e73
radv: emit device memory report for device memory events
...
Emit device memory report when radv create memory or free memory.
Signed-off-by: Julia Zhang <julia.zhang@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33088 >
2025-03-03 08:26:51 +00:00
Julia Zhang
313aa44bf1
radv: add obj_id to radeon_winsys_bo
...
mem->bo->obj_id will be used by device memory report.
Signed-off-by: Julia Zhang <julia.zhang@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33088 >
2025-03-03 08:26:51 +00:00
Julia Zhang
900be035c8
radv: add import and export handle_type in radv_alloc_memory
...
The import_handle_type and export_handle_type will be used to set the
memoryObjectId for memory report.
Signed-off-by: Julia Zhang <julia.zhang@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33088 >
2025-03-03 08:26:51 +00:00
Alyssa Rosenzweig
d2edb15454
radv: use VK_COPY_STR
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33826 >
2025-03-01 20:27:26 +00:00
Georg Lehmann
8b2b3e5704
radv: remove outdated vectorize TODO
...
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33448 >
2025-03-01 18:26:54 +00:00
Natalie Vock
237d8799be
radv/rt: Limit monolithic pipelines to 50 stages
...
Beyond that, monolithic pipelines just bloat to incredible sizes,
destroying compile times for questionable, if any, runtime perf benefit.
Indiana Jones: The Great Circle has more than 100 stages and takes
several minutes to compile its RT pipeline on Deck when using monolithic
compilation, and yet separate shaders still end up faster (probably
because instruction cache coherency in traversal is better).
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33818 >
2025-02-28 16:22:45 +00:00
Georg Lehmann
ea3c04b535
radv/nir_lower_ray_queries: use nir_foreach_function_impl
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33770 >
2025-02-28 14:38:14 +00:00
Georg Lehmann
dec60f3337
radv/nir_apply_pipeline_layout: clean up progress handling
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33770 >
2025-02-28 14:38:14 +00:00
Samuel Pitoiset
3c81961c2e
radv: enable DCC fast clears for 8bpp/16bpp on GFX11
...
This was disabled during GFX11 bringup few years ago to follow RadeonSI,
but this is working just fine and RadeonSI also enabled it recently.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33756 >
2025-02-28 08:33:39 +00:00
Samuel Pitoiset
aa476f4b52
radv: check HTILE compression for depth/stencil images per level
...
This might avoid some useless decompression passes/cache levels for
levels that can't be compressed.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33665 >
2025-02-28 08:05:14 +00:00