Timur Kristóf
96b95c8427
radv: Flush L2 cache for non-L2-coherent images in EndCommandBuffer.
...
This fixes a CTS hang on Hawaii.
We previously only did a CB/DB flush,
but that doesn't include a L2 cache flush.
Also fix the comment that said this is for GFX9+.
Fixes: 7c62f6fa01
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/31906 >
2024-10-30 17:46:50 +00:00
Samuel Pitoiset
e83f91f206
radv: regroup and emit all raster related states in the same function
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31787 >
2024-10-29 07:25:34 +00:00
Samuel Pitoiset
62f51becbb
radv: track more redundant raster related registers
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31787 >
2024-10-29 07:25:34 +00:00
Samuel Pitoiset
9f8684359f
radv: implement VK_EXT_device_generated_commands
...
The major differences compared to the NV extensions are:
- support for the sequence index as push constants
- support for draw with count tokens (note that DrawID is zero for
normal draws)
- support for raytracing
- support for IES (only compute is supported for now)
- improved preprocessing support with the state command buffer param
The NV DGC extensions were only enabled for vkd3d-proton and it will
maintain both paths for a while, so they can be replaced by the EXT.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31383 >
2024-10-28 16:27:35 +00:00
Samuel Pitoiset
b3a06daa72
radv: simplify determining if dual-source blending is enabled
...
If blending is disabled or the color write mask is 0, dual-source
blending would be ignored, and this can be simplified a bit.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31681 >
2024-10-28 12:04:59 +00:00
Joshua Ashton
c66fd95d92
radv: Fix sample locations at 0 for X/Y
...
We cannot set the {X,Y}MAX_RIGHT_EXCLUSION bits
if we have a sample location at a pixel boundary.
CTS does not seem to be catching this.
Signed-off-by: Joshua Ashton <joshua@froggi.es >
Co-authored-by: Vitaliy Triang3l Kuzmin <triang3l@yandex.ru >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31839 >
2024-10-25 11:24:12 +00:00
Samuel Pitoiset
62efebfd70
radv: fix emitting NGG culling state for ESO
...
It's possible to enable NGG culling with ESO if shaders are linked, or
if the VS doesn't need a prolog or if TES is used. This wasn't
supposed to be enabled but I think it worked just by luck because the
user SGPR value was probably zero and NGGC was disabled at draw time.
Found by inspection.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31829 >
2024-10-25 07:10:27 +00:00
Samuel Pitoiset
3a5d40b152
radv: fix enabling/disabling user sample locations
...
When user sample locations are disabled dynamically, the driver should
re-emit the standard sample locations.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31786 >
2024-10-23 06:28:20 +00:00
Samuel Pitoiset
b33f47b498
radv: regroup and emit all DS related states in the same function
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31662 >
2024-10-22 11:52:10 +00:00
Samuel Pitoiset
8791e56b62
radv: track more redundant DB related registers
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31662 >
2024-10-22 11:52:10 +00:00
Samuel Pitoiset
0f2363993d
radv: fix emitting DB_RENDER_OVERRIDE on GFX12
...
This register is already set in the GFX12 preamble and it shouldn't
be overwritten.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31690 >
2024-10-18 00:28:02 +00:00
Samuel Pitoiset
daefd280e2
radv do not force-disable hierarchical stencil testing
...
Looks like this was disabled by mistake. RadeonSI relies on the default
value which is "no force" and PAL only sets this to FORCE_DISABLE when
HTILE is completely disabled using settings.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31690 >
2024-10-18 00:28:01 +00:00
Samuel Pitoiset
38e12dd53c
radv: optimize breaking batch when CB_TARGET_MASK change
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31688 >
2024-10-16 18:24:22 +00:00
Samuel Pitoiset
fc52c6358c
radv: stop recomputing the viewport xform for guarband/viewport
...
It's already computed when viewports are bound.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31680 >
2024-10-16 16:10:12 +00:00
Samuel Pitoiset
583b93f7a2
radv: rename 'gfx' to 'main' in the DGC path
...
It can be confusing because the main DGC IB can be executed either on
GFX or ACE compute queues.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31583 >
2024-10-10 15:52:51 +00:00
Samuel Pitoiset
c1b2cb6ef7
radv: implement IB chaining for DGC when it's executed on compute
...
The IB2 packet is only supported on the graphics queue. To execute DGC
IB on compute, the previous solution was to submit it separately
without any chaining. Though this solution was incomplete because it's
easy to reach the maximum number of IBs per submit when there is a lot
of ExecuteIndirect() calls.
To fix that, the proposed solution is to implement DGC IB chaining when
it's executed on the compute only. The idea is to add a trailer that is
added at the beginning of the DGC IB (to know the offset). This trailer
is used to chain back back the DGC IB to a normal CS, it's patched at
execution time. Patching is fine because it's not allowed to execute
the same DGC IB concurrently and the entire solution relies on that.
When the DGC IB is executed on graphics, the trailer isn't patched and
it only contains NOPs padding. Performance should be mostly similar.
This fixes
dEQP-VK.dgc.nv.compute.misc.execute_many_*_primary_cmd_compute_queue.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30809 >
2024-10-10 14:08:39 +00:00
Samuel Pitoiset
056b638588
radv: add a helper to bind the color output state
...
Instead of duplicating almost the same code chunk in three different
locations.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31566 >
2024-10-10 13:19:22 +00:00
Samuel Pitoiset
39745dd7cf
radv: move radv_compact_spi_shader_col_format() to radv_cmd_buffer.c
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31566 >
2024-10-10 13:19:22 +00:00
Samuel Pitoiset
336f80137d
radv: fix conditional rendering with DGC preprocessing on compute
...
Preprocess now must use the same conditional rendering state as the
execute, so the DGC prepare shader must reset the number of sequences
to generate an empty cmdbuf for compute.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31563 >
2024-10-08 12:35:16 -04:00
Samuel Pitoiset
50f78e4a54
radv: remove GFX6-7 DGC support completely
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31491 >
2024-10-04 07:58:37 +00:00
Samuel Pitoiset
7702520239
radv: stop passing image create flags to radv_image_view_init()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31463 >
2024-10-02 09:28:51 +00:00
Jules Blok
12b4ab3b04
radv: Add support for VK_EXT_depth_clamp_control
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31411 >
2024-09-30 22:18:27 +00:00
Samuel Pitoiset
f7482e85ba
radv: move updating compute scratch for RT when stack size is emitted
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31347 >
2024-09-25 07:56:58 +00:00
Samuel Pitoiset
ebe66dee08
radv: move emitting some RT user SGPRs when the RT pipeline is emitted
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31347 >
2024-09-25 07:56:58 +00:00
Samuel Pitoiset
cf536f63d1
radv: introduce dirty flags for shaders state
...
Instead of re-emitting some dynamic states when a new shader is bound,
only re-emit the user SGPR states. This is slightly more optimal.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31160 >
2024-09-24 06:00:00 +00:00
Samuel Pitoiset
8beea85232
radv: rename shader_query_state to task_state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31160 >
2024-09-24 06:00:00 +00:00
Samuel Pitoiset
a0951bae70
radv: use only one user SGPR for all NGG state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31160 >
2024-09-24 06:00:00 +00:00
Samuel Pitoiset
3022282ba3
radv: make sure to re-emit shader query state when a task shader is bound
...
This doesn't change anything in practice because if we have a task
shader, we also have a mesh shader and the state was already re-emitted.
Though, this will prevent a regression from the upcoming patches because
the user SGPR layout will change.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31160 >
2024-09-24 06:00:00 +00:00
Samuel Pitoiset
16341f41e1
radv: emit all shader related user SGPR states in one place
...
This will allow us to use only one user SGPR for NGG shaders, and also
further optimizations.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31160 >
2024-09-24 05:59:59 +00:00
Samuel Pitoiset
cbae7792f9
radv: stop emulating GS invocations for legacy GS on RDNA1-2
...
This is basically a revert of !24231 . This emulation was introduced
to fix counting the number of GS invocations in cases it's VS/TES as
NGG (hw does that), but it's unnecessary.
Since the specification has been clarified and pipeline stat queries
are undefined for stages not present in pipelines.
See https://gitlab.khronos.org/vulkan/vulkan/-/merge_requests/6547
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31153 >
2024-09-20 12:28:08 +00:00
Samuel Pitoiset
71e9572e72
radv: update the stencil layout for DRLR feedback loops
...
HTILE decompresses both aspects.
Fixes: 3af0f0129c ("radv: fix DRLR with subpass input attachments and feedback loops")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31200 >
2024-09-18 08:05:32 +00:00
Samuel Pitoiset
231688ad57
radv: add missing cache flushes for DRLR feedback loops
...
We should make sure the attachment is readable after the transition.
Fixes: 3af0f0129c ("radv: fix DRLR with subpass input attachments and feedback loops")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31200 >
2024-09-18 08:05:32 +00:00
Samuel Pitoiset
ba7e3be425
radv: merge radv_emit_epilog() with radv_emit_ps_epilog_state()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31150 >
2024-09-16 07:53:00 +00:00
Samuel Pitoiset
26d8f1a306
aco,radv,radeonsi: move has_epilog to the fragment shader info
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31150 >
2024-09-16 07:53:00 +00:00
Samuel Pitoiset
e1df6cf499
radv: use radv_get_user_sgpr_loc() more
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31115 >
2024-09-12 07:01:36 +00:00
Samuel Pitoiset
190d46b65d
radv: precompute more PGM registers for all stages
...
Less error prone and easier to update for new hardware.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31115 >
2024-09-12 07:01:36 +00:00
Samuel Pitoiset
c7a509f55c
radv: update PGM register for TES+GS compiled separately with ESO
...
Not sure why 0xB210 works on GFX10+ because it's supposed to be
0xB320 with/without NGG...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31115 >
2024-09-12 07:01:36 +00:00
Samuel Pitoiset
31875e92aa
radv: make the helper that uploads indirect descriptors non-static
...
It will be used by DGC.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31096 >
2024-09-10 15:07:04 +00:00
Samuel Pitoiset
3deebeb20a
radv: unify emitting non-indirect/indirect descriptor sets
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31096 >
2024-09-10 15:07:04 +00:00
Samuel Pitoiset
bac5ad9f8d
radv: rename radv_emit_descriptor_pointers() to radv_emit_descriptors_per_stage()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31096 >
2024-09-10 15:07:04 +00:00
Samuel Pitoiset
2c2735083b
radv: store the indirect descriptor sets VA to the descriptor state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31096 >
2024-09-10 15:07:04 +00:00
Samuel Pitoiset
529d7ebdcc
radv: cleanup some functions that emit shader user SGPRs
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31096 >
2024-09-10 15:07:04 +00:00
Samuel Pitoiset
e621f0c173
radv: rework emitting indirect compute pipelines with DGC
...
Instead of recreating the packets in the DGC prepare shader, the best
solution is to emit them to a temporary CS object at pipeline creation
time. Then in the DGC prepare shader, the driver just needs to copy
the packets.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31101 >
2024-09-10 09:13:44 +00:00
Samuel Pitoiset
4bd4f037b5
radv: emit all VBO descriptors in the prepare DGC shader
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31040 >
2024-09-06 07:04:59 +00:00
Samuel Pitoiset
a1646f468d
radv: compute rsrc3 for VBO descriptors in NIR for DGC
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31040 >
2024-09-06 07:04:59 +00:00
Samuel Pitoiset
91fdce3f5a
radv: add a helper to get VBO info for emitting descriptors
...
This will be used to rework VBO in DGC.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31040 >
2024-09-06 07:04:59 +00:00
Samuel Pitoiset
fbb1ed66e4
radv: stop storing DGC info as part of the VBO descriptors
...
This is no longer needed and it's possible to just load&store the
bindings that aren't updated by DGC.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30918 >
2024-09-04 06:17:37 +00:00
Samuel Pitoiset
57aa34a30d
radv: pass more VBO info as parameters to the DGC prepare shader
...
Instead of storing the stride/rsrc_word3 as part of the VBO descriptors,
pass them as parameters. This is cleaner and this will allow us
to simplify VBO in DGC.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30918 >
2024-09-04 06:17:37 +00:00
Samuel Pitoiset
0dc2a5bfee
radv: pass the vertex shader to radv_write_vertex_descriptors()
...
Mostly for DGC.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30916 >
2024-09-03 11:39:47 +00:00
Samuel Pitoiset
bd5dca3e81
radv: rename radv_vs_input_state to radv_vertex_input_state
...
"vs_state" is confusing because it could be "Vertex Shader state" but
it's not.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30916 >
2024-09-03 11:39:47 +00:00