Samuel Pitoiset
e88a5842b2
radv: remove the union in radv_shader_object
...
It's actually more annoying to deal with.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27715 >
2024-02-22 07:48:02 +00:00
Samuel Pitoiset
9ae8f0f9d7
radv: fix indirect dispatches on compute queue with conditional rendering on GFX7
...
COND_EXEC needs to happen right before PKT3_DISPATCH_INDIRECT.
Like this combination will probably never happen but better to have
it fixed anyways.
Fixes: 5c03cdbd02 ("radv: fix indirect dispatches on the compute queue on GFX7")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27655 >
2024-02-22 07:23:43 +00:00
Samuel Pitoiset
0543394bfa
radv: move mesh_fast_launch_2 to radv_physical_device
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27632 >
2024-02-22 07:03:04 +00:00
Samuel Pitoiset
a5bdc4b19a
radv: fix a compilation warning in radv_bind_graphics_shaders()
...
../src/amd/vulkan/radv_cmd_buffer.c: In function ‘radv_bind_graphics_shaders’:
../src/amd/vulkan/radv_cmd_buffer.c:9366:65: warning: array subscript -1 is below array bounds of ‘struct radv_shader *[14]’ [-Warray-bounds=]
9366 | cmd_buffer->state.last_vgt_shader = cmd_buffer->state.shaders[last_vgt_api_stage];
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27670 >
2024-02-20 08:47:18 +00:00
Samuel Pitoiset
12b5c3f00e
radv: set radv_vgt_shader_key::ngg_streamout for ESO
...
Not used yet, but will be needed.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27575 >
2024-02-19 16:30:08 +00:00
Samuel Pitoiset
eea75777be
radv: pass the ES stage when emitting geometry shader with ESO
...
Not used yet, but will be needed for NGG support.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27575 >
2024-02-19 16:30:08 +00:00
Samuel Pitoiset
3713f27260
radv: only configure {XYZ_DIM,DRAW_INDEX}_REG for mesh shaders if enabled
...
This seems to be the root cause of the huge performance issue with
GS_FAST_LAUNCH=2 on RDNA3 dGPUs. Probably a firmware bug, but on dGPUs
only, because on RDNA3 APUs this is just working...
With that GS_FAST_LAUNCH=2 can be re-enabled by default on GFX11.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27636 >
2024-02-16 15:58:31 +00:00
Samuel Pitoiset
0c2213cbbd
radv: fix setting the rasterized primitive for ESO
...
This was missing.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27479 >
2024-02-16 07:08:36 +00:00
Samuel Pitoiset
b199aa1bda
radv: fix selecting shader variants with ESO
...
The shader BO for variants (like as LS) wasn't added to the BO list.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27479 >
2024-02-16 07:08:36 +00:00
Samuel Pitoiset
a47de04ff3
radv: make sure to reset the GS copy shader with ESO
...
It should be NULL when not used. This is also slightly more optimal
than doing it in the loop.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27479 >
2024-02-16 07:08:36 +00:00
Samuel Pitoiset
b1d4a7a95e
radv: fix re-emitting DB_RENDER_CONTROL when resetting gfx pipeline state
...
This is only used by internal operations but the state wasn't
re-emitted.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27479 >
2024-02-16 07:08:36 +00:00
Samuel Pitoiset
64e18b04d9
radv: clear the custom blend mode when resetting gfx pipeline state
...
This custom blend mode is only used by internal operations and they
don't use shader objects.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27479 >
2024-02-16 07:08:35 +00:00
Samuel Pitoiset
b0a31a62e4
radv: clear RADV_CMD_DIRTY_SHADERS when resetting the shader object state
...
Binding a pipeline resets the shader object state and it's more optimal
to clear this flag here.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27479 >
2024-02-16 07:08:35 +00:00
Samuel Pitoiset
32c1e45718
radv: fix emitting VS prologs for merged shaders compiled separately on GFX10+
...
RSRC1 isn't equal to the VS RSRC1 and both config registers need to
be re-emitted.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27574 >
2024-02-13 14:01:42 +00:00
Samuel Pitoiset
6cab5559f9
radv: add support for emitting TES+GS compiled separately on GFX9+
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27432 >
2024-02-12 08:09:28 +00:00
Samuel Pitoiset
dd92f5f664
radv: bind the vertex input SGPR only for relevant stages
...
Otherwise, user_data_0 is wrong if merged shaders are compiled
separately and if we have GS.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27432 >
2024-02-12 08:09:28 +00:00
Samuel Pitoiset
b58de424f4
radv: fix RGP barrier reason for RP barriers inserted by the runtime
...
Without that, RGP is confused and it's reporting CmdPipelineBarrier()
instead of CmdRenderPassSync().
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27546 >
2024-02-12 07:50:16 +00:00
Samuel Pitoiset
bde272349d
radv: add support for emitting VS+GS compiled separately on GFX9+
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27388 >
2024-02-08 13:33:34 +00:00
Konstantin Seurer
767f628079
radv/rra: Dump basic ray history tokens
...
This only dumps the begin tokens. Tokens are written to a buffer
containing a 12 byte header at the beginning.
We use an intermediate format for the ray history tokens because the RRA
format is very inefficient.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25548 >
2024-02-03 12:59:47 +01:00
Samuel Pitoiset
0aa9afa8e1
radv: add support for emitting VS+TCS compiled separately on GFX9+
...
With a VS prolog, we end up with 3 long jumps (VS prolog->VS->TCS->TCS
epilog), super annoying.
The shaders config must also be combined between VS and TCS.
This is for VK_EXT_shader_object.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27336 >
2024-02-02 10:16:59 +01:00
Samuel Pitoiset
397a08b407
radv: always emit PGM_RSRC1_HS when emitting the TCS epilog state
...
This will simplify upcoming changes and it doesn't matter much because
this is for ESO only.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27336 >
2024-02-02 10:16:59 +01:00
Samuel Pitoiset
3d5d163693
radv: always mark drawid/base_instance used with ESO
...
The user SGPR is always declared for merged shaders compiled separately
because the args must match.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27336 >
2024-02-02 10:16:59 +01:00
Samuel Pitoiset
7a20946579
radv: add a helper to know if device fault detection is enabled
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27293 >
2024-01-31 08:41:54 +01:00
Samuel Pitoiset
f23efd7093
radv: bind and emit mesh/task shaders with ESO
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27237 >
2024-01-30 18:29:51 +00:00
Samuel Pitoiset
29491d36aa
radv: determine the last VGT api stage with mesh shaders and ESO
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27237 >
2024-01-30 18:29:51 +00:00
Samuel Pitoiset
6adea03a3e
radv: ignore unneeded dynamic states with mesh shaders and ESO
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27237 >
2024-01-30 18:29:51 +00:00
Samuel Pitoiset
f870e5ff11
radv: fix emitting tess domain origin for merged TES+GS on GFX9
...
For merged TES+GS, TES is NULL and this state wasn't emitted.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27301 >
2024-01-30 11:47:29 +00:00
Samuel Pitoiset
6a2b264526
radv: emit more default states for ESO on GFX10.3+
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27236 >
2024-01-29 09:47:01 +00:00
Samuel Pitoiset
b7fdfdc901
radv: do not ignore RADV_DYNAMIC_FRAGMENT_SHADING_RATE for ESO on GFX10.3+
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27236 >
2024-01-29 09:47:01 +00:00
Samuel Pitoiset
9a7c551f95
radv: set NGG fields in vgt_shader_key for ESO on GFX10+
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27236 >
2024-01-29 09:47:01 +00:00
Samuel Pitoiset
70c288558a
radv: fix the late scissor emission workaround with ESO on GFX9
...
graphics_pipeline is NULL when ESO is used.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27236 >
2024-01-29 09:47:01 +00:00
Samuel Pitoiset
411e23e193
radv: use the non-emitted graphics pipeline for the needed dynamic states
...
This is similar but it will allow us to re-use the helper for the
late scissor bug on GFX9.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27236 >
2024-01-29 09:47:01 +00:00
Samuel Pitoiset
d14ecd6d89
radv: use device->vk.enabled_features instead of iterating twice
...
vk_device already has the list of enabled features, no need to iterate
twice on the pNext structs.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27276 >
2024-01-26 15:16:26 +00:00
Samuel Pitoiset
30f2802e31
radv: promote VK_EXT_index_type_uint8 to KHR
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27262 >
2024-01-26 10:00:48 +00:00
Samuel Pitoiset
df3fbe3b33
radv: promote VK_EXT_line_rasterization to KHR
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27262 >
2024-01-26 10:00:48 +00:00
Samuel Pitoiset
f0e7714d0d
radv: add support for binding/emitting shader objects
...
Only GFX6-8 support for now because merged shaders make it harder to
implement but I have a bunch of local work for that.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26930 >
2024-01-26 08:56:54 +00:00
Samuel Pitoiset
a12019cc91
radv: initialize default dynamic state when beginning a new cmdbuf
...
With ESO everything is dynamic and the default dynamic state must be
initialized when beginning a new command buffer.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26930 >
2024-01-26 08:56:54 +00:00
Samuel Pitoiset
482ca4b074
radv: add required NV entrypoints for VK_EXT_shader_object
...
Even if the implementation doesn't support the extensions, the
entrypoints must exist.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26930 >
2024-01-26 08:56:54 +00:00
Samuel Pitoiset
9351a4c51a
radv: re-emit the TCS epilog when a new TCS is bound
...
Similarly to VS prologs and PS epilogs, this needs to be re-emitted
otherwise the config shader state can be overwritten.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26930 >
2024-01-26 08:56:54 +00:00
Samuel Pitoiset
1bc5f15b68
radv: prevent accessing NULL pipelines when emitting VBO with ESO
...
ESO always uses dynamic strides, so this should be zero.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26930 >
2024-01-26 08:56:54 +00:00
Samuel Pitoiset
fe1a9b3ab3
radv: add a helper for binding the custom blend mode
...
This re-emits the according state when a new graphics pipeline is bound
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26930 >
2024-01-26 08:56:54 +00:00
Samuel Pitoiset
783e3c096f
radv: fix indirect draws with NULL index buffer on GFX10
...
GFX10 has a hw bug and it can't handle 0-sized index buffer. The
non-indirect draw path was fine but not the indirect path where RADV
emits the index buffer.
This fixes flakes with dEQP-VK.*maintenance6* on NAVI14, and possibly
GPU hangs if there is an indirect draw with a valid index buffer right
before because it would re-use the same index buffer.
Fixes: db9816fd66 ("radv: add support for NULL index buffer")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27142 >
2024-01-22 08:14:23 +00:00
Samuel Pitoiset
5c03cdbd02
radv: fix indirect dispatches on the compute queue on GFX7
...
GFX7 CP requires the indirect dispatch VA to be aligned to 32-bytes.
This fixes dEQP-VK.api.command_buffers.many_indirect_disps_on_secondary,
but it's unexpected that it uncovered this bug.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27148 >
2024-01-22 07:41:05 +00:00
Samuel Pitoiset
10e2dbb63b
radv: delay emitting streamout enable at draw time
...
Since Vulkan 1.3.271, the spec allowed vkCmdBeginTransformFeedbackEXT
to be called without an active graphics pipeline bound when using
shader objects.
That means that the last VGT shader would be NULL once VKCTS is
updated accordingly. This change delays emitting streamout enable at
draw time to make sure the last VGT shader is present, regarldess if
ESO is enabled or not.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27075 >
2024-01-17 17:33:17 +00:00
Samuel Pitoiset
3f655bc47c
radv: do not issue SQTT marker with DISPATCH_MESH_INDIRECT_MULTI
...
According to PAL, only DISPATCH_TASKMESH_GFX is supposed to emit a
SQTT marker as part of the packet, probably because there is also
a packet emitted on ACE for executing task shaders.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10401
Fixes: 312103e0ff ("radv: set THREAD_TRACE_MARKER_ENABLE for mesh/task draws")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26936 >
2024-01-11 07:59:40 +00:00
Samuel Pitoiset
41cbd6f735
radv: rework declaring color arguments for PS epilogs
...
Rely on the actual FS outputs instead of the spi shader col format,
this is safer and it will help for future work.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26903 >
2024-01-10 16:10:15 +00:00
Dave Airlie
71bd479a7f
radv: don't emit cp dma packets on video rings.
...
Only emit this on the gfx/ace rings.
Fixes hangs with CTS on video decode with navi3x.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26945 >
2024-01-09 07:39:52 +00:00
Konstantin Seurer
77b9a6f9e2
radv/rt: Use radv_shader for compiled shaders
...
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25224 >
2024-01-07 21:28:19 +01:00
Konstantin Seurer
8198805e1f
radv: Skip compiling chit and miss shaders
...
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25224 >
2024-01-07 21:28:06 +01:00
Konstantin Seurer
0f87d406b5
radv/rt: Skip compiling a traversal shader
...
If we don't need one, we don't compile one.
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25224 >
2024-01-07 21:28:02 +01:00