Daniel Schürmann
ce51e48cb6
radv: move nir_opt_dead_cf() before nir_opt_loop()
...
This can avoid unnecessary CF transformations.
Totals from 557 (0.70% of 79395) affected shaders: (GFX11)
MaxWaves: 12020 -> 12028 (+0.07%)
Instrs: 4237096 -> 4234110 (-0.07%); split: -0.08%, +0.01%
CodeSize: 21731952 -> 21719556 (-0.06%); split: -0.06%, +0.00%
VGPRs: 40492 -> 40480 (-0.03%)
SpillSGPRs: 467 -> 416 (-10.92%)
Latency: 25704891 -> 25684156 (-0.08%); split: -0.10%, +0.02%
InvThroughput: 5545224 -> 5542998 (-0.04%); split: -0.06%, +0.02%
VClause: 107850 -> 107838 (-0.01%); split: -0.02%, +0.01%
SClause: 90450 -> 90440 (-0.01%); split: -0.05%, +0.04%
Copies: 292714 -> 291354 (-0.46%); split: -0.50%, +0.03%
Branches: 133630 -> 133617 (-0.01%); split: -0.01%, +0.00%
PreSGPRs: 42299 -> 42104 (-0.46%); split: -0.48%, +0.02%
PreVGPRs: 36396 -> 36393 (-0.01%); split: -0.02%, +0.01%
VALU: 2321811 -> 2321192 (-0.03%); split: -0.03%, +0.01%
SALU: 505001 -> 503289 (-0.34%); split: -0.35%, +0.01%
SMEM: 132622 -> 132640 (+0.01%)
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28150 >
2024-05-03 13:01:29 +00:00
Daniel Schürmann
4453971fbb
radv: mark nir_opt_loop() as not idempotent
...
This pass misses opportunities because foreach_list_typed_safe()
might point to disconnected cf_nodes after some optimization got
applied. No fossil-db changes.
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28150 >
2024-05-03 13:01:29 +00:00
Samuel Pitoiset
d71d189790
radv: add a new dirty state for emitting the color output state
...
SPI_SHADER_COL_FORMAT/CB_SHADER_MASK are used slightly differently
for PS epilogs, shader objects and monolithic graphics pipelines.
This introduces a new state that will allow us to emit these two
registers in only place. The main motivation is for depth-only RB+
support and for tracking context registers in the cmdbuf.
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
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
0ce1bfc040
radv: rename col_format_non_compacted to spi_shader_col_format
...
This is always the non-compacted format because it's compacted right
before it's emitted. This looks much cleaner to me.
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
199f521804
radv: compact SPI_SHADER_COL_FORMAT as late as possible
...
This will allow us to do more cleanups because this thing is a complete
mess.
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
3b41fbd4b8
radv: precompute compute/task shader register values
...
To make emission faster.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29014 >
2024-05-03 06:07:46 +00:00
Samuel Pitoiset
8c4d0b287f
radv: emit compute pipelines directly from the cmdbuf
...
Using this intermediate CS isn't really useful and it prevents us to
optimize register writes in the near future. This will also be removed
for graphics pipelines.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28977 >
2024-05-02 10:39:03 +00:00
Samuel Pitoiset
86281ef15f
radv: add shaders BO to the cmdbuf BO list at bind time
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28965 >
2024-04-30 07:18:08 +00:00
Samuel Pitoiset
42554e81b9
radv: add RT prolog BO to the cmdbuf BO list at bind time
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28965 >
2024-04-30 07:18:08 +00:00
Samuel Pitoiset
42dc4b463b
radv: add GS copy shader BO to the cmdbuf BO list at bind time
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28965 >
2024-04-30 07:18:08 +00:00
Samuel Pitoiset
2664e058de
radv: use the bound GS copy shader when emitting shader objects
...
Similar but doesn't rely on shader_objs.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28965 >
2024-04-30 07:18:08 +00:00
Samuel Pitoiset
be98fe2724
radv: pre-compute VGT_TF_PARAM.DISTRIBUTION_MODE
...
For less CPU overhead.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28965 >
2024-04-30 07:18:08 +00:00
Samuel Pitoiset
d7679c0370
radv: remove useless DB_Z_INFO.NUM_SAMPLES when emitting the MSAA state
...
DB_Z_INFO.NUM_SAMPLES is now correctly set when a null framebuffer is
emitted and this is redundant.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28965 >
2024-04-30 07:18:08 +00:00
Samuel Pitoiset
4dd682e227
radv: inline radv_get_pa_su_sc_mode_cntl() in radv_emit_culling()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28965 >
2024-04-30 07:18:08 +00:00
Samuel Pitoiset
e651a2c856
radv: simplify radv_emit_primitive_restart_enable()
...
Move emitting VGT_MULTI_PRIM_IB_RESET_INDX into the GFX6-8 branch.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28965 >
2024-04-30 07:18:08 +00:00
Samuel Pitoiset
0b51868193
radv: remove bogus VkShaderCreateInfoEXT::flags being 0 assert for compute
...
This was a leftover. Flags can be different than 0, like for required
subgroup size and it should already be correctly supported.
Fixes recent dEQP-VK.shader_object.performance.dispatch_base.
Fixes: 37d7c2172b ("radv: add support for creating/destroying shader objects")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28946 >
2024-04-29 11:45:03 +00:00
Samuel Pitoiset
85deb9f706
radv: simplify DB_Z_INFO.NUM_SAMPLES with null ds target on GFX11
...
According to PAL, the hw uses the smaller value of
DB_Z_INFO.NUM_SAMPLES and PA_SC_AA_CONFIG.MSAA_EXPOSED_SAMPLES when
there is no bound depth/stencil buffer, and it uses 8x to make sure
the used value is MSAA_EXPOSED_SAMPLES.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28952 >
2024-04-29 11:02:02 +00:00
David Rosca
1f07f5a79b
radv/video: Report maxBitrate in encode capabilities
...
Some cards can do higher bitrate, but 1000 Mbit/s should be high enough
for any practical use. It's also the value that AMF reports as max bitrate.
Fixes: 54d499818c ("radv/video: add initial support for encoding with h264.")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28736 >
2024-04-26 09:18:29 +00:00
David Rosca
c210bb7952
radv/video: Check encode profiles and bit depth in capabilities query
...
Fixes: 967e4e09de ("radv/video: add h265 encode support")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28736 >
2024-04-26 09:18:29 +00:00
David Rosca
2d0282f576
radv/video: Set correct bit depth and format for 10bit input
...
Fixes: 967e4e09de ("radv/video: add h265 encode support")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11011
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28736 >
2024-04-26 09:18:29 +00:00
Konstantin Seurer
d6c9b1d03f
radv: Handle all dependencies of CmdWaitEvents2
...
The spec describes pDependencyInfos as an array with eventCount elements.
cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10579
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28896 >
2024-04-26 08:09:22 +00:00
Samuel Pitoiset
7c0b73e0aa
radv/rt: rework the helper that hashes a ray tracing pipeline
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28860 >
2024-04-26 07:40:09 +00:00
Samuel Pitoiset
58fb6db649
radv/rt: pass radv_ray_tracing_state_key to radv_rt_pipeline_compile()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28860 >
2024-04-26 07:40:09 +00:00
Samuel Pitoiset
7be635719c
radv/rt: add radv_ray_tracing_state_key
...
This struct contains all information for compiling a pipeline
(stages, stage keys and groups). It will be used to generate a unique
pipeline hash.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28860 >
2024-04-26 07:40:09 +00:00
Colin Marc
ec78cbce4c
radv/video: don't truncate frame_num and POC to 32
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28719 >
2024-04-26 06:38:44 +00:00
Konstantin
46598758e7
radv: Trace indirect dispatch sizes
...
For figuring out hanging indirect dispatches.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28838 >
2024-04-25 10:20:03 +00:00
Konstantin
2b2f67aa2b
radv: Use a struct for the trace_bo layout
...
Now we can use the members on the CPU side and offsetof on the GPU side
instead of magic offsets.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28838 >
2024-04-25 10:20:03 +00:00
Konstantin
575565af58
ac/debug,radv: Read UMR wave dumps into memory before parsing
...
Allows RADV to reuse the wave dump, which leads to more consistency
between pipeline.log and umr_waves.log.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28838 >
2024-04-25 10:20:03 +00:00
Samuel Pitoiset
e8d94536d2
radv: fix image format properties with fragment shading rate usage
...
This was missing and this caused test failures for formats different
than VK_FORMAT_R8_UINT which is the only one supported for FSR.
Fixes recent
dEQP-VK.api.info.unsupported_image_usage.*.fragment_shading_rate_attachment.*.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28893 >
2024-04-25 06:33:39 +00:00
Pierre-Eric Pelloux-Prayer
b926cd3dd9
radv: don't use python 3.9 feature in radv_annotate_layer_gen.py
...
This commit adds an implementation of removesuffix so we don't
need the 'str' one which was added in 3.9.
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28831 >
2024-04-23 22:45:51 +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
Samuel Pitoiset
8b8d194bfb
radv: advertise VK_EXT_nested_command_buffer
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28826 >
2024-04-23 16:41:57 +00:00
Samuel Pitoiset
7de95e7742
radv: track if nested command buffers uses indirect draws
...
IB2 packets should be avoided when a cmdbuf executes nested cmdbufs.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28826 >
2024-04-23 16:41:57 +00:00
Samuel Pitoiset
0d18a2f4fb
radv/amdgpu: do not use IB2 for nested command buffers
...
This should be enough to support executing nested command buffers.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28826 >
2024-04-23 16:41:56 +00:00
Bas Nieuwenhuizen
d0c4b9144a
radv: Fix differing aspect masks for multiplane image copies.
...
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11050
CC: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28867 >
2024-04-23 13:11:49 +00:00
Samuel Pitoiset
e4f945cd4a
vulkan: pass cmdbuf level to vk_command_buffer_ops::create()
...
RADV needs to know the command buffer level in the create() helper.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28861 >
2024-04-23 06:33:31 +00:00
Samuel Pitoiset
095e3af2b0
radv: add RADV_DEBUG=psocachestats to report per-pipeline cache hits/misses
...
This can be useful to make sure precompilation works as expected.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28829 >
2024-04-22 13:54:05 +00:00
Samuel Pitoiset
1f4ee45914
radv: rework pipeline cache search helpers
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28829 >
2024-04-22 13:54:05 +00:00
Samuel Pitoiset
bbe52934b6
radv: use radv_pipeline::sha1 for graphics/compute pipelines
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28829 >
2024-04-22 13:54:05 +00:00
Samuel Pitoiset
6e24da3ad4
radv/rt: move radv_ray_tracing_pipeline::sha1 to radv_pipeline
...
To re-use it for graphics/compute pipelines.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28829 >
2024-04-22 13:54:05 +00:00
Samuel Pitoiset
862d53f00a
radv/rt: remove unnecessary param to radv_ray_tracing_pipeline_cache_insert()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28829 >
2024-04-22 13:54:05 +00:00
Rhys Perry
e0db4b458b
radv: cache RT stage info
...
If a RT pipeline misses the cache but it's imported stages hit the cache,
then can_inline might be false when it should be true.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28788 >
2024-04-22 11:55:26 +00:00
Joshua Ashton
122455b686
radv: Properly initialize imageCreateFlags in GetPhysicalDeviceVideoFormatPropertiesKHR
...
Signed-off-by: Joshua Ashton <joshua@froggi.es>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28841 >
2024-04-22 11:33:39 +00:00
Konstantin
f4c6664d4b
radv/debug: Dump descriptor binding information
...
Can be useful for correlating offsets with descriptors.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28759 >
2024-04-20 08:29:23 +00:00
Konstantin
e27deed2ab
radv/debug: Try to find unbound shaders
...
Use radv_find_shader to correlate shaders to PCs.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28759 >
2024-04-20 08:29:23 +00:00
Konstantin
23c167f826
radv: Canonicalize addresses in radv_find_shader
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28759 >
2024-04-20 08:29:23 +00:00
Konstantin
48b79a18c5
radv/debug: Canonicalize shader addr
...
The most significant bits of the PC are cleared.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28759 >
2024-04-20 08:29:23 +00:00
David Rosca
9bfb07586c
radv/video: Implement per picture type min/max QP
...
Bump required FW version for VCN 1 and 2.
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28727 >
2024-04-19 09:51:07 +00:00