Konstantin Seurer
76031ba53d
radv: Optimize the gfx12 encode shader
...
Reviewed-by: Natalie Vock <natalie.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34273 >
2025-04-17 20:20:40 +00:00
Konstantin Seurer
97f6287827
radv: Use the BVH8 format on GFX12
...
Reviewed-by: Natalie Vock <natalie.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34273 >
2025-04-17 20:20:40 +00:00
Konstantin Seurer
95e7343a7d
radv/bvh: Add helpers for encoding
...
The build and update paths can use the same code.
Reviewed-by: Natalie Vock <natalie.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34273 >
2025-04-17 20:20:40 +00:00
Konstantin Seurer
3af19f336c
radv/bvh: Document GFX12 BVH encoding
...
Reviewed-by: Natalie Vock <natalie.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34273 >
2025-04-17 20:20:40 +00:00
Konstantin Seurer
676e26aed5
radv: Fix rayTracingPositionFetch with multiple geometies
...
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
The fix adds more indirections to avoid increasing register pressure by
tracking the primitive address.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34460 >
2025-04-11 22:26:08 +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
Natalie Vock
f01623ea75
radv/bvh: Add custom leaf node builder
...
This custom builder implements fine-grained instance node bounds
calculation by looking at all AABBs at tree depth 2.
Shaves off 0.3ms in the start scene for Indiana Jones: The Great Circle
on Deck (roughly 29.1ms->28.7ms).
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32797 >
2025-02-18 13:00:53 +00:00
Natalie Vock
90c3450621
radv/bvh: Prefix RADV-specific node functions with radv_
...
Avoids naming conflicts when including both the common leaf shader and
RADV's build_helpers.h.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32797 >
2025-02-18 13:00:53 +00:00
Natalie Vock
444bd02255
radv/bvh: Remove unused build_instance helper
...
This is in common code now.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32797 >
2025-02-18 13:00:53 +00:00
Natalie Vock
b1f6d3b6b7
radv/bvh, vulkan/bvh: Move AccelerationStructureInstance to vk_build_helpers
...
Remove duplications.
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32797 >
2025-02-18 13:00:52 +00:00
Connor Abbott
8fe3674df8
vulkan/runtime,radv: Add shared BVH building framework
...
This is mostly adapted from radv's BVH building. This defines a common
"IR" for BVH trees, two algorithms for constructing it, and a callback
that the driver implements for encoding. The framework takes care of
parallelizing the different passes, so the driver just has to split the
encoding process into "stages" and implement just one part for each
stage.
The runtime changes are:
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
The radv changes are;
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31433 >
2024-12-01 20:08:35 +01:00
Connor Abbott
f8b584d6a5
vulkan/runtime,radv: Add shared BVH building framework
...
This is mostly adapted from radv's BVH building. This defines a common
"IR" for BVH trees, two algorithms for constructing it, and a callback
that the driver implements for encoding. The framework takes care of
parallelizing the different passes, so the driver just has to split the
encoding process into "stages" and implement just one part for each
stage.
The runtime changes are:
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
The radv changes are;
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31433 >
2024-12-01 16:08:06 +00:00
Friedrich Vock
70fc5987d4
radv/rt: Don't atomicAdd local prefix sums
...
This only gets written to by one invocation at a time.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30483 >
2024-08-09 18:12:52 +00:00
Friedrich Vock
a3df3ebab4
radv/rt: Only do ploc atomicCompSwap once per workgroup
...
There is no need to do this for every invocation in the wave.
Improves GravityMark scores by 5%.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30483 >
2024-08-09 18:12:52 +00:00
David Heidelberg
68215332a8
build: pass licensing information in SPDX form
...
Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Dylan Baker <dylan.c.baker@intel.com>
Acked-by: Eric Engestrom <eric@igalia.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: David Heidelberg <david@ixit.cz>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29972 >
2024-06-29 12:42:49 -07:00
Dylan Baker
46644ba371
meson: use glslang --depfile argument when possible
...
This reduces the amount of manual dependency tracking developers need to
do. This is turned on if glslang >= 11.3.0 is used, or 11.9.0 on
Windows, but otherwise the status quo is maintained. This means I have
not removed any use of `depend_files`. We could make make these hard
requirements and remove the use of `depend_files` too.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28329 >
2024-05-20 17:34:17 +00:00
Samuel Pitoiset
87fde606cf
radv: use SPDX-License-Identifier
...
Only files under src/amd/vulkan/** are concerned.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28599 >
2024-04-08 07:17:31 +00:00
Samuel Pitoiset
b409936e97
radv: add missing endif comment for some headers
...
For consistency.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28568 >
2024-04-04 21:57:45 +00:00
Friedrich Vock
d4c094dfb4
radv/rt: Optimize update shader VGPR usage
...
Brings VGPR allocation down from 72 (absolutely insane) to 32.
We can now reach the theoretical maximum occupancy of 16 waves per SIMD.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27472 >
2024-02-05 21:14:45 +01:00
Friedrich Vock
f66055a6a6
radv/rt: Write inactive node data in ALWAYS_ACTIVE workaround
...
Fixes: a9831caa ("radv/rt: Add workaround to make leaves always active")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27340 >
2024-02-01 05:42:59 +00:00
Friedrich Vock
a9831caa14
radv/rt: Add workaround to make leaves always active
...
DOOM Eternal builds acceleration structures with inactive primitives and
tries to make them active in later AS updates. This is disallowed by the
spec and triggers a GPU hang. Fix the hang by working around the bug.
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27034 >
2024-01-17 15:14:48 +00:00
Friedrich Vock
0b55a3cf64
radv/rt: Acceleration structure updates
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26729 >
2024-01-09 18:47:45 +00:00
Friedrich Vock
62fe4f0b1b
radv/rt: Move per-geometry build info into a geometry_data struct
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26729 >
2024-01-09 18:47:45 +00:00
Konstantin Seurer
2e4951d3fb
radv: Remove the BVH depth heuristics
...
It only helps Quake II RTX and hurts everything else.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26481 >
2024-01-09 09:00:24 +00:00
Konstantin Seurer
662f86c533
radv/bvh: Stop emitting leaf nodes inside the encoder
...
Avoids unnecessary copies.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26725 >
2023-12-18 19:17:21 +00:00
Friedrich Vock
f9a394b753
radv/rt: Initialize unused children in PLOC early-exit
...
Bad things happen when these aren't initialized.
Fixes GPU hangs when loading Avatar: Frontiers of Pandora savegames.
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26712 >
2023-12-15 17:52:00 +00:00
Konstantin Seurer
b3c43d6865
radv/bvh/ploc: Load child bounds from LDS
...
The bounds are already in LDS so there is no need to load them from
VRAM.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24846 >
2023-09-30 11:49:14 +00:00
Konstantin Seurer
3e7850f97b
radv/bvh: Treat instances with mask == 0 as inactive
...
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25268 >
2023-09-20 13:00:03 +00:00
Konstantin Seurer
2943bc34e9
radv: Remove leaf_args::dst_offset
...
We can use first_id instead.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24756 >
2023-08-21 12:45:06 +00:00
Konstantin Seurer
e2a02f3910
clang-format: Disable formatting by default
...
This should make `git clang-format` usable for patches that modify
clang formatted and manually formatted code.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9492
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24645 >
2023-08-13 16:48:49 +02:00
Eric Engestrom
8b319c6db8
radv: reformat according to its .clang-format
...
Signed-off-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23253 >
2023-06-16 19:59:52 +00:00
Konstantin Seurer
03a9715a68
amd: Use the Mesa base style
...
Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23275 >
2023-05-29 21:06:12 +00:00
Harri Nieminen
f85f511a38
amd: fix typos in code
...
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22432 >
2023-04-13 23:08:22 +00:00
Harri Nieminen
aea48a4ff1
amd: fix typos
...
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22432 >
2023-04-13 23:08:22 +00:00
Konstantin Seurer
2bf9ae78c5
radv: Remove radv_bvh_aabb_node::aabb
...
It was only read by RRA which can infer it from the parenbt internal
node.
Change in average build time (Control):
84.69471 ms -> 84.25319 ms
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22400 >
2023-04-11 07:57:34 +00:00
Konstantin Seurer
1ce50f0774
radv/bvh: Remove calculate_node_bounds
...
It is unused and will prevent removing the aabb field from
radv_bvh_aabb_node.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22400 >
2023-04-11 07:57:34 +00:00
Konstantin Seurer
f791cd9e43
radv: Pack and encode geometry id and flags on the CPU
...
There is no need to do it on the GPU.
Change in average build time (Control):
84.80691 ms -> 84.69471 ms
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22400 >
2023-04-11 07:57:34 +00:00
Konstantin Seurer
40e9efa2de
radv/bvh: Add a shader for filling the header
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818 >
2023-02-24 15:14:40 +00:00
Konstantin Seurer
c83ea20683
radv/bvh: Move the size header field up
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818 >
2023-02-24 15:14:40 +00:00
Konstantin Seurer
07c1b23022
radv/bvh: Implement compact encoding
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818 >
2023-02-24 15:14:40 +00:00
Konstantin Seurer
da4f498f6f
radv/bvh/encoder: Move dst_node initialization into the loop
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818 >
2023-02-24 15:14:40 +00:00
Konstantin Seurer
2792d012d2
radv/bvh/encode: Introduce is_root_node
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818 >
2023-02-24 15:14:40 +00:00
Konstantin Seurer
2c0e158ae2
radv/bvh/encode: Move bvh_offset NULL check to the top of the loop
...
NULL nodes don't have to be encoded and they also don't carry over any
information to their children.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818 >
2023-02-24 15:14:40 +00:00
Konstantin Seurer
4e87a01b93
radv/bvh: Replace is_final_tree with bvh_offset
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818 >
2023-02-24 15:14:40 +00:00
Konstantin Seurer
688f598237
radv/bvh/encode: Use the node type for identifying internal nodes
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818 >
2023-02-24 15:14:40 +00:00
Konstantin Seurer
3eb646efd0
radv: Merge the leaf and internal converter
...
We have everything we need in the internal one already so we can just
encode leaf nodes there. Since this functionality isn't split anymore,
the shader was renamed to "encode".
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20768 >
2023-01-25 15:54:03 +00:00
Konstantin Seurer
c53eb2f3d4
radv: Add a shader variant for PLOC with extended SAH
...
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20656 >
2023-01-21 20:26:41 +00:00
Konstantin Seurer
b1755c0b21
radv/bvh: Add a define for extended SAH
...
This will be used to only chose depth aware SAH when we know that it's
more optimal and doesn't increase build overhead too much.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20656 >
2023-01-21 20:26:41 +00:00
Konstantin Seurer
13a8a4071a
radv/bvh/meson: Add the option to set defines
...
This is useful for compiling different variants of the same shader.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20656 >
2023-01-21 20:26:41 +00:00
Friedrich Vock
684eee0748
radv/bvh: Prevent NANs when computing node cost
...
Otherwise the degenerate geometry workaround never triggers, leading to bad performance.
Fixes: 6f45c98b ("radv/bvh: Adjust sah cost based on depth")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20723 >
2023-01-16 14:49:54 +00:00