Rhys Perry
df7024bcdd
radv,aco: allow VS prologs to increase VGPR usage
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27920 >
2024-03-14 15:30:12 +00:00
Samuel Pitoiset
1a20942f6a
radv: fix wave32 support with ESO
...
For example when RADV_PERFTEST=gewave32 is used, the vgt shader key
was incorrect.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28151 >
2024-03-14 14:56:45 +00:00
Samuel Pitoiset
9ccbd459c6
radv: fix determining if PrimId is used for merged shaders compiled separately
...
For ESO when TES and GS are compiled separately,
BREAK_WAVE_AT_EOI/IA_SWITCH_ON_EOI must be enabled if the GS uses
PrimID.
This fixes
tests/spec/arb_tessellation_shader/execution/gs-primitiveid-instanced.shader_test
on RDNA2 when shader object is enabled with Zink.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28149 >
2024-03-14 14:34:19 +00:00
Samuel Pitoiset
c7202751ad
radv: fix emitting default blend state for PS without epilogs and ESO
...
When a fragment shader doesn't have any written color outputs it
doesn't need a PS epilog because it's unnecessary. Though, with ESO
the driver still needs to emit the default blend state like graphics
pipelines.
This fixes a bunch of flakes with ESO and Zink.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28008 >
2024-03-11 08:51:47 +00:00
Samuel Pitoiset
7ebff681db
radv: re-emit RB+ state with PS epilogs only when the col format changes
...
RB+ was re-emitted every time a new PS epilog was requested even if
the non-compacted color format was equal.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28008 >
2024-03-11 08:51:47 +00:00
Samuel Pitoiset
c1307184d2
radv: stop using the custom blend mode for PS epilogs
...
Internal operations that set the custom blend mode are monolithic
pipelines only, and the value should always be zero.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28008 >
2024-03-11 08:51:47 +00:00
Samuel Pitoiset
3f8ff988fa
radv: add a helper to emit PS/TCS epilogs
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28042 >
2024-03-08 07:28:47 +00:00
Samuel Pitoiset
0ed6aba85a
radv,aco: stop duplicating PS/TCS epilog fields
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28042 >
2024-03-08 07:28:47 +00:00
Samuel Pitoiset
86e4c56dbb
radv: implement has_vgt_flush_ngg_legacy_bug for ESO
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27880 >
2024-03-08 07:09:39 +00:00
Samuel Pitoiset
4a2a261a79
radv: stop passing radv_cmd_buffer to draw functions with task shaders
...
In order to remove the ambiguity because for task shaders the driver
needs to emit to both the GFX CS and the ACE CS but all states come
from the main cmdbuf (ie. GFX) from the application point of view.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27819 >
2024-03-06 08:24:39 +00:00
Samuel Pitoiset
c2288ad43d
radv: allocate a 32-bit value for the MEC fw bug with indirect mesh+task earlier
...
This workaround will be removed soon but in order to pass only
radv_cmd_state+cs+ace_cs to the functions that draw with mesh+task, the
32-bit value needs to be allocated earlier.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27819 >
2024-03-06 08:24:39 +00:00
Samuel Pitoiset
d18c50856a
radv: refactor emitting the view index for task shaders
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27819 >
2024-03-06 08:24:39 +00:00
Samuel Pitoiset
1f8cfb2b2e
radv: always use ace_cs for the gang CS variable
...
For consistency.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27819 >
2024-03-06 08:24:39 +00:00
Friedrich Vock
4c05ebf3a5
radv: Set SCRATCH_EN for RT pipelines based on dynamic stack size
...
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27899 >
2024-03-05 18:15:00 +00:00
Bas Nieuwenhuizen
cccbe1527c
radv/winsys: Use radv_buffer_map wrapper.
...
So we can have 1 function ptr and then have a version with default
args.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27689 >
2024-03-01 15:07:09 +00:00
Bas Nieuwenhuizen
f7e8fdf35d
radv: Add winsys argument to buffer map/unmap.
...
To use later.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27689 >
2024-03-01 15:07:09 +00:00
Samuel Pitoiset
426d8b5216
radv: add support for emitting NGG shaders with ESO
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27724 >
2024-03-01 14:45:05 +00:00
Samuel Pitoiset
4d87a05d34
radv: add a helper to emit PKT3_COND_EXEC
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27746 >
2024-03-01 14:19:48 +00:00
Samuel Pitoiset
f21cc55dae
radv: add missing conditional rendering for indirect dispatches on GFX6
...
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27746 >
2024-03-01 14:19:48 +00:00
Samuel Pitoiset
cdf7e35618
radv: fix conditional rendering on compute queue on GFX6
...
PKT3_SET_PREDICATION is GFX only, even on GFX6.
This fixes recent
dEQP-VK.conditional_rendering.dispatch.*_compute_queue.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27746 >
2024-03-01 14:19:48 +00:00
Samuel Pitoiset
c253a76f5d
radv: handle indirect pipeline binds with scratch and DGC
...
vkCmdUpdatePipelineIndirectBufferNV() can be called on any queue
supporting transfer operations and it's not required to call it on the
same queue as DGC execute. This is very annoying if the compute shader
has scratch because it needs to be configured per queue.
The solution is to gather the maximum possible scratch size used by
indirect compute pipelines and use that to configure scratch.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27495 >
2024-03-01 06:59:59 +00:00
Samuel Pitoiset
a2d67adff1
radv: implement indirect compute pipeline binds with DGC
...
This also supports push constants.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27495 >
2024-03-01 06:59:59 +00:00
Samuel Pitoiset
12b015940f
radv: implement vkCmdUpdatePipelineIndirectBufferNV()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27495 >
2024-03-01 06:59:59 +00:00
Samuel Pitoiset
778ef9b133
radv: move conditional rendering for compute in radv_cmd_state
...
Like other conditional rendering states.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27818 >
2024-02-28 17:33:29 +00:00
Samuel Pitoiset
536c44d946
radv: fix conditional rendering with direct mesh+task draws and multiview
...
Having to compute the predication size manually is VERY prone to errors.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27818 >
2024-02-28 17:33:29 +00:00
Samuel Pitoiset
3004923ae3
radv: add support for conditional rendering on the compute queue with DGC
...
Conditional rendering is annoying to implement on ACE because there is
no predication packet like on GFX. With DGC it's even worse because
ACE is missing the IB2 packet which means it's not possible to predicate
the DGC IB entirely.
The provided solution is to always run the DGC prepare shader if
conditional rendering is enabled in order to generate a cmdbuf which
only contains NOPs.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27673 >
2024-02-22 17:32:58 +00:00
Samuel Pitoiset
f843027c22
radv: store/reset conditional rendering user info in the helpers
...
This also correctly initialize predication_op when the hw doesn't
support 32-bit predicate.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27673 >
2024-02-22 17:32:58 +00:00
Samuel Pitoiset
4a6c18f503
radv: only enable emulated mesh/task shader invocations on GFX10.3
...
This shouldn't be enabled on GFX11.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26304 >
2024-02-22 14:12:00 +00:00
Samuel Pitoiset
c1418dcb3d
radv: re-emit more states when a shader compiled separately is bound
...
Shader configs are combined and they need to be re-emitted. Doesn't
fix anything known but this was obviously incorrect.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27699 >
2024-02-22 13:05:28 +00:00
Samuel Pitoiset
dc42ad4c6a
radv: simplify emitting VGT_ESGS_RING_ITEMSIZE for ESO
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27699 >
2024-02-22 13:05:28 +00:00
Samuel Pitoiset
78be19fc72
radv: rename radv_emit_shaders() to radv_emit_graphics_shaders()
...
Also RADV_CMD_DIRTY_SHADERS to ~ADV_CMD_DIRTY_GRAPHICS_SHADERS for
consistency.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27699 >
2024-02-22 13:05:28 +00:00
Samuel Pitoiset
76ccf71587
radv: simplify binding the GS copy shader with ESO
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27699 >
2024-02-22 13:05:28 +00:00
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