Marek Olšák
b2d32ae246
nir: add nir_intrinsic_load_per_primitive_input, split from io_semantics flag
...
Instead of having 1 bit in nir_io_semantics indicating a per-primitive
FS input, add a dedicated intrinsic for it.
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29895 >
2024-07-23 16:13:16 +00:00
Samuel Pitoiset
65acc81e9d
radv: fix shaders cache corruption with indirect pipeline binds
...
Indirect pipeline binds force indirect descriptor sets and this needs
to be in the shader stage key, otherwise two shaders might result in
the same pipeline cache key.
Fixes: b1ba02e707
("radv: force using indirect descriptor sets for indirect compute pipelines")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30209 >
2024-07-19 06:52:21 +00:00
Samuel Pitoiset
b1ba02e707
radv: force using indirect descriptor sets for indirect compute pipelines
...
Emitting descriptors in DGC is a huge pain but using indirect descriptor
sets is much easier.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29700 >
2024-06-18 13:50:16 +00:00
Samuel Pitoiset
be3c837c04
radv: update configuring COVERAGE_TO_SHADER_SELECT on GFX12
...
This bit has been moved to SPI_PS_INPUT_ENA.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29566 >
2024-06-06 15:42:35 +00:00
Konstantin Seurer
9fe34a3204
radv: Remove uses_dynamic_rt_callable_stack
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28619 >
2024-05-28 12:23:45 +00:00
Konstantin Seurer
1038f48dd1
radv: Replace is_rt_shader with RADV_SHADER_TYPE_RT_PROLOG
...
The flag was only used for identifying the rt prolog.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28619 >
2024-05-28 12:23:45 +00:00
Timur Kristóf
590fff6906
radv: Add TES num_linked_patch_inputs.
...
Not needed by actual driver functionality, but will be
used for reporting I/O stats.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29209 >
2024-05-21 20:37:05 +00:00
Samuel Pitoiset
c9162034bc
radv: precompute DB_SHADER_CONTROL for fragment shaders later
...
To regroup all precomputed register values.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29022 >
2024-05-06 18:00:02 +00:00
Samuel Pitoiset
e5bc4d85bb
radv: precompute existing legacy GS register values later
...
To precompute all registers at the same place.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29022 >
2024-05-06 18:00:02 +00:00
Samuel Pitoiset
66d4188ec5
radv: store cb_shader_mask for fragment shaders and epilogs
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28976 >
2024-05-03 06:29:05 +00:00
Samuel Pitoiset
e1483d022b
radv: clear unwritten color attachments for monolithic PS earlier
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28976 >
2024-05-03 06:29:04 +00:00
Samuel Pitoiset
fb323ae46b
radv: rework the number of tess patches computation
...
This uses the same helper as RadeonSI which seems more robust and more
optimal (eg. it reduces the number of patches to increase occupancy).
fossils-db (NAVI21):
Totals from 638 (0.80% of 79395) affected shaders:
MaxWaves: 13182 -> 13142 (-0.30%)
Instrs: 419446 -> 419322 (-0.03%); split: -0.08%, +0.05%
CodeSize: 2261408 -> 2261200 (-0.01%); split: -0.06%, +0.05%
VGPRs: 32560 -> 32600 (+0.12%)
LDS: 4648960 -> 5343232 (+14.93%); split: -1.67%, +16.61%
Latency: 4812105 -> 4811141 (-0.02%); split: -0.04%, +0.02%
InvThroughput: 1159924 -> 1153998 (-0.51%); split: -0.60%, +0.09%
VClause: 7837 -> 7871 (+0.43%); split: -0.36%, +0.79%
SClause: 9378 -> 9381 (+0.03%); split: -0.21%, +0.25%
Copies: 28451 -> 28211 (-0.84%); split: -0.97%, +0.13%
PreVGPRs: 25404 -> 25411 (+0.03%); split: -0.06%, +0.09%
VALU: 278086 -> 277975 (-0.04%); split: -0.11%, +0.07%
SALU: 43657 -> 43617 (-0.09%)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28015 >
2024-04-23 17:20:40 +00:00
Timur Kristóf
2d9e38dbe5
radv: Calculate VRAM tess patch size independently of LDS size.
...
We recently made some effort to reduce the LDS use of TCS:
The lowering no longer uses the same output location mapping when
storing TCS outputs to LDS and VRAM. This means that the same
patch will use a different amount of LDS and VRAM.
Therefore, we need to properly calculate the patch size in VRAM
when determining the number of output patches.
Fixes: 0e481a4adc
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28739 >
2024-04-19 08:54:23 +00:00
Timur Kristóf
3279abd494
radv: Rename per_vertex_shaded_mask to explicit_strict_shaded_mask.
...
This better describes what it actually is.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28764 >
2024-04-18 18:35:07 +00:00
Timur Kristóf
3dd758f72c
radv: Allow using high 16 bits of PS input slots.
...
Add a new float16_hi_shaded_mask to keep track of which PS input
slots use their high 16 bits, based on the high_16bits of the
NIR IO semantics. Then, set ATTR1_VALID accordingly.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28764 >
2024-04-18 18:35:07 +00:00
Timur Kristóf
c471aed748
radv: Only consider interpolated inputs as 16-bit float.
...
Enabling FP16_INTERP_MODE makes no sense for other types of inputs.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28764 >
2024-04-18 18:35:07 +00:00
Timur Kristóf
cfb8f3c1a5
radv: Clean up gathering linked I/O info.
...
The code is more concise now without these helpers.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28488 >
2024-04-11 00:44:45 +00:00
Timur Kristóf
892ebf2040
radv: Add radv_gather_unlinked_io_mask to shader info header.
...
We will call this from another file.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28488 >
2024-04-11 00:44:45 +00:00
Timur Kristóf
e8ddf1a064
radv: Remove dead code for creating per-patch IO mask.
...
Not relevant or necessary anymore.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28488 >
2024-04-11 00:44:45 +00:00
Timur Kristóf
66f4dd292c
radv: Keep track of TCS outputs that need LDS.
...
Instead of reserving LDS space for all TCS outputs, we will now
only reserve it for TCS outputs which really need it, ie. those
which are read by the TCS.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28488 >
2024-04-11 00:44:45 +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
69b911bc53
radv: remove radv_private.h
...
This file was a giant mess and I'm very happy to remove it entirely.
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:46 +00:00
Samuel Pitoiset
b171bc2809
radv: add radv_shader_info.h
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28551 >
2024-04-04 16:35:15 +00:00
Timur Kristóf
b188561df5
radv: Use NIR IO semantics to determine FS input info.
...
This commit does two things at once, which cannot be split
into two commits because otherwise the driver would regress
in-between the two.
Change radv_nir_shader_info_pass so that it uses I/O intrinsics
instead of I/O variables for determining FS information.
Also eliminate gaps between input slots caused by unused input
variables. To this end, we use nir_recompute_io_bases after
nir_lower_io instead of assigning driver locations before it.
As part of this, we can now omit a clip/cull input when only
the second one is used.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28506 >
2024-04-04 15:43:56 +00:00
Timur Kristóf
5fa70730da
radv: Use IO semantic location for shader output info.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Timur Kristóf
f23795e78c
radv: Use NIR IO semantics to determine VS input info.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Timur Kristóf
9fd67c84da
radv: Remove unused VS input usage mask.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Timur Kristóf
0ddecb3f0e
radv: Add helper to determine usage of VS prologs.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Timur Kristóf
5156d3097b
radv: Add helper for determining per-attribute vertex buffer descriptors.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Timur Kristóf
e04f66ae33
radv: Use NIR IO semantics to determine GS output info.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Timur Kristóf
7276bea52d
radv: Record PS input clip/cull mask instead of number.
...
Keeping the mask instead of the actual number will make it easier
later to transition to basing the information on I/O intrinsics
instead of I/O variables.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Timur Kristóf
cbc8f5216a
radv: Slightly refactor gather_intrinsic_store_output_info.
...
No functional changes.
Use const more, and rename some variables to make them clearer.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Timur Kristóf
d10e458df0
radv: Extract gather_load_vs_input_info function.
...
No functional changes.
Make the code look cleaner by handling the various stages
by different functions.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Timur Kristóf
4e2eeab90d
radv: Pass key structures to gather intrinsic info.
...
No functional changes.
The information in these structures will be needed
in a later commit. Done separately to help keep that
other commit cleaner.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28172 >
2024-04-03 23:40:33 +00:00
Samuel Pitoiset
57dd6691df
radv: pass a radv_physical_device to radv_use_llvm_for_stage()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28519 >
2024-04-02 13:55:52 +00:00
Samuel Pitoiset
896c9cf486
radv: remove radv_device::physical_device
...
Get the logical device object using the base object.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28500 >
2024-04-01 16:35:09 +00:00
Samuel Pitoiset
310597cab6
radv: rename radv_physical_device::rad_info to info
...
The extra rad_ prefix isn't necessary and it's longer to type.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28500 >
2024-04-01 16:35:09 +00:00
Samuel Pitoiset
ce1c32e358
radv: rename radv_physical_device variables to pdev everywhere
...
Shorter and more consistent.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28500 >
2024-04-01 16:35:09 +00:00
Timur Kristóf
e421923692
radv: Completely delete TCS epilogs.
...
TCS epilogs are not needed anymore because the TCS can implement
dynamic states by itself now.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28408 >
2024-03-28 23:44:03 +00:00
Timur Kristóf
5a43f33426
radv: Copy TES primitive mode to TCS info.
...
Will be needed by the ABI lowering of the new intrinsic that
tells the TCS the primitive type, if it's known.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28408 >
2024-03-28 23:44:03 +00:00
Timur Kristóf
c32401f49b
radv: Allow NGG culling with LLVM.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28430 >
2024-03-27 23:02:26 +00:00
Samuel Pitoiset
328f74fb44
radv: make sure to disable NGG culling with TES when the FS stage is unknown
...
NGG culling depends on the number of FS input reads but this can be
unknown with GPL/ESO when VS/TES are compiled separately. While VS
has a prolog most of the time, TES might incorrectly enable NGG culling
because the number of FS inputs was considered to be zero. To fix that,
consider the number of FS input reads to be the maximum possible value
when the FS is unknown to implicitly disable NGG culling.
This fixes a bunch of tess related flakes with Zink/ESO/RADV on RDNA2.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28293 >
2024-03-25 11:48:58 +00:00
Timur Kristóf
8f3cc3cb29
radv: Use mapped driver locations for determining I/O strides.
...
This will allow us to more accurately determine the
input and output strides, because the I/O locations mapped
by RADV don't match the locations in NIR.
As a result, ESO will use less LDS.
It also fixes the per-patch output stride of tess control
shaders, because previously we omitted tess factors from them.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28021 >
2024-03-19 15:01:19 +00:00
Timur Kristóf
2f1f55cf32
radv: Extract input and output stride info to new functions.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28021 >
2024-03-19 15:01:19 +00:00
Samuel Pitoiset
426d8b5216
radv: add support for emitting NGG shaders with ESO
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27724 >
2024-03-01 14:45:05 +00:00
Samuel Pitoiset
4071c399a2
radv: compute the total LDS usage in gfx10_get_ngg_info()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27722 >
2024-02-26 10:42:37 +00:00
Samuel Pitoiset
d85311b120
radv: compute NGG scratch LDS base in gfx10_get_ngg_info()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27722 >
2024-02-26 10:42:37 +00:00
Samuel Pitoiset
0570d40d5b
radv: determine NGG culling info before NGG info
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27722 >
2024-02-26 10:42:37 +00:00
Samuel Pitoiset
e3863a22bb
radv: pass radv_shader_info to gfx10_get_ngg_info()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27722 >
2024-02-26 10:42:37 +00:00
Samuel Pitoiset
4db0952639
radv: pass gfx10_ngg_info to gfx10_get_ngg_info()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27722 >
2024-02-26 10:42:37 +00:00