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
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
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
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
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
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
Konstantin Seurer
22a028ea99
radv: Implement ordered compute dispatches
...
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
77b0a4c025
radv: Make radv_compute_dispatch non-static
...
To avoid adding yet another radv_*_dispatch helper.
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
Samuel Pitoiset
2fe3cef367
radv: do not insert fast-linked libraries to the shaders cache
...
Similar to fast-linked pipelines that aren't added to the cache.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21133 >
2023-02-06 15:01:30 +00:00
Rhys Perry
c68f9ed020
radv/llvm: use the ring_offsets shader arg
...
Besides being nicer, this also fixes load_sample_positions_amd with LLVM.
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/19202 >
2023-02-06 14:25:16 +00:00
Rhys Perry
24618721d3
ac: move ring_offsets to ac_shader_args
...
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/19202 >
2023-02-06 14:25:15 +00:00
Rhys Perry
10a5035c83
radv: set state.vbo_misaligned_mask_invalid in radv_bind_vs_input_state
...
Found by inspection. Something probably hangs because of this, but I don't
know what.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Tatsuyuki Ishi <ishitatsuyuki@gmail.com >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Fixes: c199a5160a ("radv: bind the VS input state for prologs created with GPL")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20913 >
2023-02-06 14:05:13 +00:00
Marek Olšák
71a6b53192
amd: don't hardcode real VGPR allocation granularity on gfx10.3 and gfx11
...
That's how it really works.
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20967 >
2023-02-05 23:23:58 -05:00
Marek Olšák
e673bb4ae4
amd,util: fix how lod bias is converted to fixed-point
...
according to internal docs
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20967 >
2023-02-05 23:23:45 -05:00
Konstantin Seurer
7f98fcae52
radv: Scalarize global IO with LLVM enabled
...
Fixes the "atomic store operand must have integer, pointer, or floating point type!" error with RADV_DEBUG=llvm,checkir.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20840 >
2023-02-05 12:40:25 +00:00
Konstantin Seurer
55175cd13c
radv/llvm: Use the shader names as module name
...
This makes it easier to identify which (if any) shaders fail validation.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20521 >
2023-02-05 12:16:05 +00:00
Konstantin Seurer
877e150ec8
radv/rq: Use 16 stack entries if there is only one ray query
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21120 >
2023-02-05 11:51:42 +00:00
Konstantin Seurer
4397c166c0
radv: Work around shader_call_data variables in raygen shaders
...
Closes : #5326
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20930 >
2023-02-03 14:25:19 +00:00
Qiang Yu
f6b194b648
nir,ac/llvm,aco,radv,radeonsi: remove nir_export_vertex_amd
...
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20691 >
2023-02-03 12:27:44 +00:00