Samuel Pitoiset
bd30f3619d
radv: implement graphics shaders relocation for a RGP workaround
...
RGP requires shaders to be uploaded consecutively inside the same
buffer object. Otherwise, either it makes the driver generating
huge traces (ie. in GiB) or it fails to load traces at all. Hopefully,
this will be improved soon when AMDGPU drivers will have GPL support.
To workaround this, the driver relocates graphics shaders in the same
buffer object when a pipeline is created. Then at draw time, it
overwrites SPI_SHADER_PGM_xxx registers to make sure SQTT can match
between emitted and exported shaders. It's a bit suboptimal because
graphics shaders are uploaded twice but it's the best solution I found.
This will allow to implement GPL caching without breaking capturing
shaders with RGP.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21078 >
2023-02-10 13:42:14 +00:00
Samuel Pitoiset
69bd1c0c40
radv: restore uploading shaders individually instead of consecutively
...
The shaders were uploaded consecutively to fit a RGP constraint but
this was more like a workaround. This upload path doesn't work well for
graphics pipeline library and it was the main blocker for GPL caching.
This commit breaks capturing shaders with RGP if the offset between
shaders is too big. Next commit should fix it by using shaders reloc.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21078 >
2023-02-10 13:42:14 +00:00
Georg Lehmann
533d0008c7
aco: remove stale TODOs about v_interp opsel
...
These are already handled correctly according to the ISA docs.
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21096 >
2023-02-10 12:01:56 +00:00
Samuel Pitoiset
75ccf7c003
radv/ci: bump the number of runners to 3 for vkcts-navi21-valve
...
RADV_PERFTEST=gpl increased execution time, so let's try with a 3d
runner.
dEQP-VK.api.device_init.create_instance_device_intentional_alloc_fail.basic
seems reliably fixed now for some reasons.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21214 >
2023-02-10 11:06:54 +01:00
Samuel Pitoiset
6533709d10
radv/ci: set RADV_PERFTEST=GPL for all VKCTS jobs
...
The Vulkan CTS version in Mesa CI is so old that a bunch of tests
are broken, but it's expected.
This runs +283939 tests and the overall VKCTS execution time increased
from ~23 minutes to ~26 minutes (+~13%) on my Threadripper 1950X.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21214 >
2023-02-10 11:06:54 +01:00
Yonggang Luo
09061e2fe9
vulkan: Use static_assert for check HWVULKAN_DISPATCH_MAGIC == ICD_LOADER_MAGIC
...
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com >
Reviewed-by: Eric Engestrom <eric@igalia.com >
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21210 >
2023-02-10 07:21:31 +00:00
Emma Anholt
b01c3553f7
ci/radv: Update navi21 llvm xfails.
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21205 >
2023-02-10 02:53:09 +00:00
Tatsuyuki Ishi
9fdc145ad6
radv: Assert the hardware support rbplus when emitting rbplus state.
...
If someone forget to check for rbplus before setting dirty bits, it's going
to cause really mysterious bugs.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21189 >
2023-02-09 08:32:20 +00:00
Tatsuyuki Ishi
a36efe3e19
radv: Fix missing rbplus_allowed check for dynamic PS epilogs.
...
This created really mysterious bugs on gfx10.
Fixes flickering in a bunch of DXVK games, most visibly Overwatch 2.
Fixes: eb07a11b8f ("radv: add support for compiling PS epilogs on-demand")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8258
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21189 >
2023-02-09 08:32:20 +00:00
Samuel Pitoiset
46aee750c6
radv: stop skipping the cache for monolithic graphics pipelines with GPL
...
Only libraries and optimized (LTO) pipelines are still unsupported,
but there is no reason to skip the cache for monolithic pipelines.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21198 >
2023-02-09 08:11:45 +00:00
Samuel Pitoiset
26896616c1
radv: stop skipping the cache for compute/raytracing pipelines with GPL
...
This was a hard solution somewhat.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21198 >
2023-02-09 08:11:45 +00:00
Samuel Pitoiset
53cea404f7
radv: simplify creating a FS epilog from a library
...
It's now compiled in radv_graphics_pipeline_compile().
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21140 >
2023-02-09 07:48:03 +00:00
Samuel Pitoiset
06d17fccfb
radv: make sure to disable MRT compaction when compiling a PS epilog with GPL
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21140 >
2023-02-09 07:48:03 +00:00
Samuel Pitoiset
16e4dd3e37
radv: fix disabling MRT compaction for on-demand PS epilogs
...
Some dynamic states require to compile PS epilogs on-demand. In this
case, MRT compaction should be disabled because we don't know the CB
state when compiling the fragment shader.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21140 >
2023-02-09 07:48:03 +00:00
Samuel Pitoiset
ea5c893289
radv: regroup PS epilog info when generating the graphics pipeline key
...
No logical change.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21140 >
2023-02-09 07:48:03 +00:00
Samuel Pitoiset
84d006ef11
radv: simplify determining when the fragment shader needs an epilog
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21140 >
2023-02-09 07:48:03 +00:00
Samuel Pitoiset
b41c6c3a50
radv: cleanup graphics pipeline library flags uses
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21140 >
2023-02-09 07:48:03 +00:00
Samuel Pitoiset
7976316f3e
radv: fix skipping graphics pipeline compilation when the FS is NULL
...
Fixes: 3eb97b9d33 ("radv: skip compilation when possible with GPL fast-linking")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21192 >
2023-02-09 07:27:53 +00:00
Rhys Perry
b4383821e7
aco: don't modify exec in p_interp_gfx11
...
The RDNA3 ISA docs say that lds_param_load write the entire quad
regardless of exec, so this isn't needed.
fossil-db (gfx1100):
Totals from 5291 (3.93% of 134574) affected shaders:
Instrs: 4891396 -> 4789628 (-2.08%)
CodeSize: 25519032 -> 25111960 (-1.60%)
Latency: 36122982 -> 36074300 (-0.13%); split: -0.14%, +0.00%
InvThroughput: 4162436 -> 4161424 (-0.02%); split: -0.02%, +0.00%
Copies: 263862 -> 263838 (-0.01%)
PreSGPRs: 225012 -> 224179 (-0.37%)
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21171 >
2023-02-08 19:35:54 +00:00
Georg Lehmann
6e4598f7b9
aco: support omod/imod for v_fmac_f16
...
Only matters for post-RA DPP16.
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21174 >
2023-02-08 18:52:28 +00:00
Georg Lehmann
2deda5c0be
aco: don't list imod/omod support v_fmaak_f32/v_fmamk_f32
...
We can never use them anyway because these opcodes don't support VOP3/DPP16/SDWA
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21174 >
2023-02-08 18:52:28 +00:00
Georg Lehmann
4c9ac73064
aco: allow output modifiers for ldexp_f16
...
It also supports imod for the first operand, but we cannot express that at
moment.
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21174 >
2023-02-08 18:52:28 +00:00
Georg Lehmann
b63aa2bb8e
aco: don't allow output modifiers for v_cvt_pkrtz_f16_f32
...
Cc: mesa-stable
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21174 >
2023-02-08 18:52:28 +00:00
Georg Lehmann
5038a049f1
aco: add mov/cndmask opcodes to does_fp_op_flush_denorms
...
For completeness sake also add v_mov_b32, even if we don't use imod for it
because it's only supported since gfx10.
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21170 >
2023-02-08 13:07:46 +00:00
Georg Lehmann
c8adf16278
aco: fix imod/omod for gfx11 VOP3 opcodes
...
Fixes: d8d99c3c4f ("aco: add GFX11 opcode numbers")
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21170 >
2023-02-08 13:07:46 +00:00
Tatsuyuki Ishi
c6ebd2de71
radv: Fix noop FS not getting constructed for GPL pipelines.
...
The condition was inverted, causing compilation to be actually skipped when
a noop FS is used and straight emitting the pipeline from the default
initialized struct.
Fixes: 3eb97b9d33 ("radv: skip compilation when possible with GPL fast-linking")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21166 >
2023-02-08 10:52:54 +00:00
Daniel Schürmann
e5600d5257
radv: CSE ray_launch_{size|id}
...
Stats for Q2RTX
Totals from 7 (0.01% of 134913) affected shaders: (GFX10.3)
VGPRs: 736 -> 704 (-4.35%)
CodeSize: 204424 -> 204400 (-0.01%); split: -0.03%, +0.02%
MaxWaves: 67 -> 69 (+2.99%)
Instrs: 37540 -> 37549 (+0.02%); split: -0.02%, +0.04%
Latency: 973556 -> 973267 (-0.03%)
InvThroughput: 209068 -> 200902 (-3.91%)
VClause: 920 -> 921 (+0.11%); split: -0.11%, +0.22%
SClause: 1045 -> 1043 (-0.19%)
Copies: 4853 -> 4865 (+0.25%); split: -0.08%, +0.33%
Branches: 1571 -> 1578 (+0.45%)
PreSGPRs: 421 -> 407 (-3.33%)
PreVGPRs: 638 -> 632 (-0.94%)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21156 >
2023-02-08 10:10:27 +00:00
Timur Kristóf
8ebb34ee57
radv: Refactor radv_emit_ngg_culling_state so it's based on dirty flags.
...
This significantly lowers the CPU overhead of this function.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20980 >
2023-02-08 09:28:20 +00:00
Timur Kristóf
22947ef0cc
radv: Remove NGG culling skip from command buffer.
...
This code used to runtime-disable NGG culling for small draw calls.
However, this had too much CPU overhead, let's remove it.
It will be solved by the shaders instead.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20980 >
2023-02-08 09:28:19 +00:00
Timur Kristóf
88a4e17018
radv: Use shader code to skip NGG culling in small workgroups.
...
Extend RADV lowering of the load_cull_any_enabled_amd intrinsic to
take into account the number of primitives in the current workgroup.
Workgroups that have less than 16 triangles are considered "small"
and will disable shader culling. Note that LLPC does the same,
but it checks the number of vertices not primitives.
The primary intention of this change is to eliminate the need to
check the draw size in radv_cmd_buffer, but this is actually
beneficial to larger draw calls too, specifically this may improve
the performance of the last workgroup of larger draws too.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20980 >
2023-02-08 09:28:19 +00:00
Timur Kristóf
def53a085c
radv: Move checking primitive topology to radv_get_ngg_culling_settings.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20980 >
2023-02-08 09:28:19 +00:00
Timur Kristóf
8457dfec47
radv: Don't change LDS_SIZE for NGG culling shaders.
...
There was no measurable perf benefit from this optimization,
and it made the code messy and difficult to refactor.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20980 >
2023-02-08 09:28:19 +00:00
Rhys Perry
fad1f716dd
aco: fix out-of-bounds access when moving s_mem(real)time across SMEM
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com >
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8224
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21138 >
2023-02-07 14:50:43 +00:00
Qiang Yu
4888dd7391
radv: use amd common force_vrs option
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21010 >
2023-02-07 08:09:39 +00:00
Qiang Yu
1e3198c766
radv: move radv_consider_force_vrs above radv_fill_shader_info
...
It will be used by radv_fill_shader_info, no function change.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21010 >
2023-02-07 08:09:39 +00:00
Dave Airlie
3e2c768aa8
radv/vcn: enable dynamic dpb tier 2 for h264/h265 on navi21+
...
navi21 can do separate image support, using tier 2 DPB messages.
This enables support for doing that in the vulkan video driver.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:48:28 +10:00
Dave Airlie
6c3c242361
radv/video: add h265 decode UVD support
...
Add support for h265 decode on older UVD GPUs
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:48:26 +10:00
Dave Airlie
db62c38091
radv: add vcn h265 decode.
...
This adds support for HEVC decode in VCN
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:48:24 +10:00
Dave Airlie
8a29291dbe
radv/video: add h264 support for uvd
...
This adds support for the older UVD h264 decoder.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:48:22 +10:00
Dave Airlie
1693c03a39
radv/video: add initial h264 decoder for VCN
...
This adds support for H264 decode on VCN hardware.
It uses the full DPB method, and relies on the application
to allocate an arrayed texture for the DPB to be stored into.
RADV_PERFTEST=video_decode is required to enable this.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:47:53 +10:00
Dave Airlie
9477f117f4
radv/video: add initial frameworking.
...
This just adds the basic commands and objects, and hooks up some
of the queues and extensions.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:47:50 +10:00
Dave Airlie
3253340916
radv: add video decoder register setup.
...
This just assigns the correct registers depending on the gpu family.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:47:48 +10:00
Dave Airlie
85eead4198
radv: adding video decode queue support
...
This adds the video queue interactions to radv and builds
on the winsys code previously added.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:47:46 +10:00
Dave Airlie
30b6e9797d
ac: add name to codec info struct
...
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:47:43 +10:00
Dave Airlie
ee7837aae2
radv: add new upload alloc aligned api
...
The video buffers need to have objects aligned at certain ranges,
this enhances the uploader to allow an alignment to be specified.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:47:39 +10:00
Dave Airlie
855ad612e1
radv: remove the status query mark it unsupported.
...
The current firmware can't support the status query requirements.
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20388 >
2023-02-07 12:47:25 +10:00
Alejandro Piñeiro
a12a71e6c0
radv: use shader_info->var_copies_lowered
...
Instead of passing allow_copies as a parameter for radv_optimize_nir
(so manually doing that tracking).
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19338 >
2023-02-06 22:11:34 +00:00
Konstantin Seurer
569517d7ad
radv: Use common ycbcr conversion lowering
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20731 >
2023-02-06 18:36:29 +00:00
Konstantin Seurer
dae893cb96
radv: Remove radv_indirect_unaligned_dispatch
...
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21071 >
2023-02-06 17:50:53 +00:00
Konstantin Seurer
b9d7306edc
radv: Use an ordered dispatch for BVH encoding
...
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21071 >
2023-02-06 17:50:53 +00:00