Commit graph

8439 commits

Author SHA1 Message Date
Samuel Pitoiset
dd0b4f05ad radv: add helpers to bind the GS copy shader and the RT prolog
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28154>
2024-03-15 08:10:59 +00:00
Friedrich Vock
cc61409ea6 radv: Only enable SEs that the device reports
Matches PAL behavior.

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28195>
2024-03-15 07:31:34 +00:00
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
e1c73db01c radv: rework generating vgt_shader_key for pipelines
This new helper will also be used for ESO.

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
c6485f560d radv: determine radv_vgt_shader_key::has_ngg_xxx with the last VGT shader
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:44 +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
Lynne
ee476f3eda radv/av1: limit profile and bit depth to supported values
Same as with other codecs.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28143>
2024-03-13 02:20:59 +00:00
Alyssa Rosenzweig
a6123a80da nir/opt_shrink_vectors: shrink some intrinsics from start
If the backend supports it, intrinsics with a component() are straightforward to
shrink from the start. Notably helps vectorized I/O.

v2: add an option for this and enable only on grown up backends, because some
backends ignore the component() parameter.

RADV GFX11:
Totals from 921 (1.16% of 79439) affected shaders:
Instrs: 616558 -> 615529 (-0.17%); split: -0.30%, +0.14%
CodeSize: 3099864 -> 3095632 (-0.14%); split: -0.25%, +0.11%
Latency: 2177075 -> 2160966 (-0.74%); split: -0.79%, +0.05%
InvThroughput: 299997 -> 298664 (-0.44%); split: -0.47%, +0.02%
VClause: 16343 -> 16395 (+0.32%); split: -0.01%, +0.32%
SClause: 10715 -> 10714 (-0.01%)
Copies: 24736 -> 24701 (-0.14%); split: -0.37%, +0.23%
PreVGPRs: 30179 -> 30173 (-0.02%)
VALU: 353472 -> 353439 (-0.01%); split: -0.03%, +0.02%
SALU: 40323 -> 40322 (-0.00%)
VMEM: 25353 -> 25352 (-0.00%)

AGX:

total instructions in shared programs: 2038217 -> 2038049 (<.01%)
instructions in affected programs: 10249 -> 10081 (-1.64%)

total alu in shared programs: 1593094 -> 1592939 (<.01%)
alu in affected programs: 7145 -> 6990 (-2.17%)

total fscib in shared programs: 1589254 -> 1589102 (<.01%)
fscib in affected programs: 7217 -> 7065 (-2.11%)

total bytes in shared programs: 13975666 -> 13974722 (<.01%)
bytes in affected programs: 65942 -> 64998 (-1.43%)

total regs in shared programs: 592758 -> 591187 (-0.27%)
regs in affected programs: 6936 -> 5365 (-22.65%)

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> (v1)
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28004>
2024-03-12 18:17:17 +00:00
Rhys Perry
a977a51a21 radv: stop using 5/8 component SSBO stores
These apparently work, but I'm not sure they were supposed to.

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/28108>
2024-03-12 17:23:29 +00:00
Rhys Perry
cc7e3efc7c radv: don't advertise DGC with LLVM
The meta shaders for this feature don't compile with LLVM because of 5/8
component SSBO stores. I'm not sure this was ever expected to work.

This seemed to break vkd3d-proton.

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/28108>
2024-03-12 17:23:29 +00:00
Friedrich Vock
4c35828933 radv,driconf: Remove active accel struct workaround
Now unused and enabled by default.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28077>
2024-03-11 17:08:09 +00:00
Friedrich Vock
217072d25f radv/rt: Force active leaves for every updateable accel struct
We can't rely on games getting updates right. To avoid adding
workarounds for tons of games, be more robust by default.

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28077>
2024-03-11 17:08:09 +00:00
Samuel Pitoiset
898f28f790 radv: allow RADV_PERFTEST=shader_object on all GFX9 GPUs
Renoir used to hangs in CI but it's fixed now.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28069>
2024-03-11 09:45:58 +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
Yiwei Zhang
c9d3cc2615 vulkan: refactor the runtime header gen order dependency
Summary:
- ensure headers used outside runtime are included in dependency source
- drop redundant idep_vulkan_common_entrypoints_h
- drop redundant icd side tricks for the order of header gen

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Yonggang Luo <luoyonggang@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28066>
2024-03-08 21:42:07 +00:00
Yiwei Zhang
872c9fabeb vulkan: remove unused wsi_common_entrypoints include and dep
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28066>
2024-03-08 21:42:07 +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
974d1395a2 radv: allow RADV_PERFTEST=shader_object on GFX10/GFX10.3
VK_EXT_shader_object is now supported on all GPUs! It's still not
enabled by default because it needs more testing and more fixing (Renoir
still hangs for some reasons and Zink/RADV on Polaris10 still has
flakes).

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:40 +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
62e6132284 radv: disable NGG in more situations with ESO on GFX10/GFX10.3
NGG streamout isn't supported on GFX10/GFX10.3, so NGG GS must be
disabled when pre-rasterization stages are compiled separately because
it's not possible to know that when compiling VS/TES only.

Also GFX10/GFX10.3 needs to disable NGG when extreme geometry are used
with tessellation and we can't know the previous stage if the GS is
compiled separately.

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
Konstantin Seurer
12c71ef847 radv/rt: Fix raygen_imported condition
This can cause GPU hangs if the imported raygen shader is the first
shader of the library.

Fixes: 0f87d40 ("radv/rt: Skip compiling a traversal shader")
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27137>
2024-03-07 20:07:07 +00:00
Konstantin Seurer
0e8f2eca9e radv/rt: Inline constant information about ray flags
Totals from 4 (1.06% of 379) affected shaders:
Instrs: 2868 -> 2588 (-9.76%)
CodeSize: 15184 -> 13544 (-10.80%)
Latency: 69280 -> 86922 (+25.46%)
InvThroughput: 11546 -> 14486 (+25.46%)
Copies: 680 -> 592 (-12.94%)
Branches: 148 -> 128 (-13.51%)
PreSGPRs: 216 -> 172 (-20.37%)

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27137>
2024-03-07 20:07:07 +00:00
Konstantin Seurer
b4735a944a radv/rt: Inline constant trace_ray srcs into the traversal shader
Totals from 4 (1.06% of 379) affected shaders:
Instrs: 2864 -> 2868 (+0.14%)
CodeSize: 15232 -> 15184 (-0.32%)
Latency: 69074 -> 69280 (+0.30%)
InvThroughput: 11512 -> 11546 (+0.30%)
VClause: 124 -> 116 (-6.45%)
Copies: 676 -> 680 (+0.59%)
PreVGPRs: 316 -> 312 (-1.27%)

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27137>
2024-03-07 20:07:07 +00:00
Konstantin Seurer
843d19a995 radv/rt: Avoid passing unused data to the next stage
We can gather the args used by all other stages and use that to optimize
the traversal shader.

Totals from 4 (1.06% of 379) affected shaders:
Instrs: 2912 -> 2864 (-1.65%)
CodeSize: 15424 -> 15232 (-1.24%)
Latency: 69342 -> 69074 (-0.39%)
InvThroughput: 11558 -> 11512 (-0.40%)
Copies: 712 -> 676 (-5.06%)
Branches: 152 -> 148 (-2.63%)
PreVGPRs: 324 -> 316 (-2.47%)

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27137>
2024-03-07 20:07:07 +00:00
Konstantin Seurer
348d13f06e radv/rt: Fixup constant args
They are fixed up automatically right now, which will change in the next
patch.

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27137>
2024-03-07 20:07:07 +00:00
Konstantin Seurer
0597906ada radv/rt: Add radv_ray_tracing_stage_info
Useful for gathering more information about used args and traces.

Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27137>
2024-03-07 20:07:07 +00:00
Konstantin Seurer
a44765606c radv/rt: Implement RADV_DEBUG=shaderstats
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27137>
2024-03-07 20:07:07 +00:00
Konstantin Seurer
f3fe1f2f18 vulkan: Implement DebugMarkerSetObjectNameEXT
DebugMarkerSetObjectNameEXT is just a less powerful version of
SetDebugUtilsObjectNameEXT. Fixes the objectType cast warning as well.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27975>
2024-03-07 19:28:53 +00:00
Timur Kristóf
a6f270c160 radv: Lower mesh shader draw ID to zero when they have a task shader.
This prevents potential app bugs causing GPU hangs and other issues.
Note that the draw ID is undefined in mesh shaders when also
using a task shader.

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/27879>
2024-03-07 17:07:24 +00:00
Friedrich Vock
7792ee1c15 radv/rt: Fix frontface culling with emulated RT
We need to preserve the divisor's sign for front/backface detection to
work correctly.

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28034>
2024-03-07 10:34:52 +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
Yonggang Luo
db103c56ab treewide: Remove vulkan/runtime vulkan/util prefix in include path
This is for unify the include style of shared vulkan headers

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27526>
2024-03-05 19:05:00 +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
Samuel Pitoiset
a38e7f127a radv: preserve streamout_buffers user SGPR for VS/TES + GS compiled separately
Otherwise, VS or TES could overwrite it but it needs to be preserved
if GS reads it.

This fixes the remaining NGG streamout bug on RDNA3 with VKCTS and ESO.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27914>
2024-03-04 07:38:06 +00:00
Yifan Zhang
4ed8931164 radv: initialize video decoder for GFX11.5.1
Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com>
Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27811>
2024-03-04 04:43:53 +00:00
Luca Bacci
fe520ecfbf meson,windows: Use relative paths in Vulkan ICD manifest files
See https://github.com/msys2/MINGW-packages/issues/16065

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27468>
2024-03-01 20:09:59 +00:00
Konstantin Seurer
6380118d13 radv/meta: Add shader - device mapping for radv_build_printf
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27817>
2024-03-01 18:46:41 +00:00
Konstantin Seurer
d9a1882daa radv/rra: Avoid reading past the ray history buffer
The loop exit condition did not take the token size into account.

Fixes: 767f628 ("radv/rra: Dump basic ray history tokens")
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27815>
2024-03-01 18:20:13 +00:00
Bas Nieuwenhuizen
3b15a9c52c radv: Expose VK_EXT_map_memory_placed.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27689>
2024-03-01 15:07:09 +00:00
Bas Nieuwenhuizen
7e029735e6 radv: Implement reserving the VA range on unmap.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27689>
2024-03-01 15:07:09 +00:00
Bas Nieuwenhuizen
a6a31538c5 radv: Support for mapping a buffer at a fixed address.
Doing the separate bool to support mapping at 0.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27689>
2024-03-01 15:07:09 +00:00
Bas Nieuwenhuizen
d779cda0ae radv/amdgpu: Use mmap directly.
To give more control.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27689>
2024-03-01 15:07:09 +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