Samuel Pitoiset
9b80f4d5f2
radv: rename radv_shader_variant to radv_shader
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13548 >
2021-11-01 20:04:45 +00:00
Jason Ekstrand
4108fda426
vulkan: Move all the common object code to runtime/
...
Reviewed-by: Dylan Baker <dylan@pnwbakers.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13156 >
2021-10-29 23:12:32 +00:00
Samuel Pitoiset
b6a69dbb40
radv: re-emit prolog inputs when the nontrivial divisors state changed
...
If the application first uses nontrivial divisors, the driver emits
the vertex shader VA to the upload BO rather than directly via the
user SGPRs locations. But, if the vertex input dynamic state changes,
the driver might select a different VS prolog that no longer needs
nontrivial divisors.
In this case, the driver needs to re-emit the prolog inputs because
otherwise the VS prolog will jump to the PC that is emitted via the
user SGPR locations, and the previous one was somewhere in the
upload BO...
This fixes a GPU hang with Bioshock and Zink.
Fixes: d9c7a17542
("radv: enable VK_EXT_vertex_input_dynamic_state")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13377 >
2021-10-22 09:47:50 +02:00
Mike Blumenkrantz
eda5634e25
radv: pre-calc "simple" dynamic vertex input values
...
when the shader pipeline is known to not require any of the more complex
calculations, those calculations can be excluded from the dynamic update
code
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13320 >
2021-10-13 17:03:26 +00:00
Mike Blumenkrantz
c335a4d70e
radv: dynamically calculate misaligned_mask for dynamic vertex input
...
this avoids incurring overhead at draw time, instead shifting it to vertex
binding commands
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13320 >
2021-10-13 17:03:26 +00:00
Rhys Perry
80841196b2
radv: implement dynamic vertex input state using vertex shader prologs
...
This doesn't actually use the functionality or implement prolog
compilation yet.
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/11717 >
2021-10-13 05:13:10 +00:00
Rhys Perry
a1069b8bd4
radv: add segregated fit shader memory allocator
...
Way faster than the previous one, especially with a large number of
shaders.
This doesn't have much of an effect right now, but the previous allocator
was expensive compared to the cost of compiling vertex shader prologs.
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/11717 >
2021-10-13 05:13:10 +00:00
Rhys Perry
404752bfb2
radv: add radv_shader_variant_get_va and radv_find_shader_variant helpers
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-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/11717 >
2021-10-13 05:13:10 +00:00
Rhys Perry
6bfacb60ee
radv: add and use radv_vs_input_alpha_adjust
...
Unlike ac_fetch_format, this enum can be packed into two bits.
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/11717 >
2021-10-13 05:13:10 +00:00
Samuel Pitoiset
595b16013a
radv: rename needs_multiview_view_index to uses_view_index
...
To avoid confusion with radv_pipeline_key::has_multiview_view_index.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13243 >
2021-10-12 09:09:19 +02:00
Samuel Pitoiset
ced950e42f
radv: store the post-processed shader binary config to the cache
...
This will allow us to reduce the size of radv_shader_info which is
stored in the cache entry.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12992 >
2021-10-11 12:25:41 +00:00
Samuel Pitoiset
1585629db2
radv: move ac_shader_config to radv_shader_binary instead of legacy
...
This will allow us to avoid postprocessing binaries when they are
loaded from the shaders cache.
LLVM binaries already contain the shader config as part of the ELF,
so it's duplicated and increase the cache entry by 48 bytes. Though,
I don't think that should matter for LLVM.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12992 >
2021-10-11 12:25:41 +00:00
Samuel Pitoiset
ea281f5f0a
radv: remove radv_pipeline::layout
...
From the VK_KHR_maintenance4 spec:
"Allow the application to destroy their VkPipelineLayout object
immediately after it was used to create another object. It is no
longer necessary to keep its handle valid while the created object
is in use."
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13193 >
2021-10-11 08:25:46 +00:00
Samuel Pitoiset
64030e79c5
radv,aco: remap PS inputs when declaring shader arguments
...
LLVM seems to require all inputs for PS.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13192 >
2021-10-08 14:14:09 +02:00
Samuel Pitoiset
4e07fe5f78
radv,aco: compute and store the SPI PS input in radv_shader_info
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13192 >
2021-10-08 14:14:08 +02:00
Samuel Pitoiset
a8c471f962
radv: gather more information about PS in the shader info pass
...
To compute the PS SPI inputs.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13192 >
2021-10-08 14:14:08 +02:00
Samuel Pitoiset
a6298b1bc9
radv: remove unnecessary radv_shader_info:num_inline_push_consts
...
This can be determined directly from the user SGPR loc.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13149 >
2021-10-08 11:37:19 +00:00
Samuel Pitoiset
b172d68e69
radv: remove unnecessary radv_shader_info:base_inline_push_consts
...
No need to duplicate it.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13149 >
2021-10-08 11:37:19 +00:00
Samuel Pitoiset
113ce21528
radv: determine if a shader uses indirect descriptors from the SGPR loc
...
If the SGPR loc is declared, the shader needs indirect descriptor sets.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13149 >
2021-10-08 11:37:19 +00:00
Samuel Pitoiset
69e656dae4
radv: move use of NGG to the graphics pipeline key
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13099 >
2021-10-04 10:05:18 +00:00
Samuel Pitoiset
0fa431087c
radv: move forcing VRS rates to the graphics pipeline key
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13099 >
2021-10-04 10:05:18 +00:00
Samuel Pitoiset
5bacc668fa
radv: move forcing MRT output NaN fixup to the graphics pipeline key
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13099 >
2021-10-04 10:05:18 +00:00
Samuel Pitoiset
fb453d80a4
radv: move forcing invariant geometry to the graphics pipeline key
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13099 >
2021-10-04 10:05:18 +00:00
Samuel Pitoiset
421b5379df
radv: move forcing discard to demote to the graphics pipeline key
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13099 >
2021-10-04 10:05:18 +00:00
Samuel Pitoiset
38c34bf132
radv: constify radv_shader_info for radv_lower_{io_to_mem,ngg}()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13134 >
2021-10-04 08:55:19 +00:00
Rhys Perry
24501b5452
radv: move ngg culling determination earlier
...
Co-Authored-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13134 >
2021-10-04 08:55:19 +00:00
Samuel Pitoiset
19a71e79b8
radv: get the float controls execution mode from NIR for LLVM
...
No need to duplicate it. Though, I think it was already broken
for merged shaders, but it doesn't matter.
No CTS regressions anyways with LLVM.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12989 >
2021-10-04 07:42:19 +00:00
Samuel Pitoiset
dca04dae52
radv: remove the LLVM stat about the number of private VGPRs
...
This doesn't seem really useful.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12999 >
2021-09-30 09:51:17 +00:00
Samuel Pitoiset
e0efc1eafe
radv: remove radv_shader_variant_key completely
...
Die radv_shader_variant_key, die!
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13085 >
2021-09-29 09:59:09 +00:00
Samuel Pitoiset
bff052d6f5
radv: remove vs_common_out:export_prim_id
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13062 >
2021-09-28 13:42:52 +00:00
Samuel Pitoiset
1e5b9b7410
radv: remove unnecessary radv_shader_info:{vs,tes}.export_prim_id
...
Use the VS outputinfo struct instead.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13062 >
2021-09-28 13:42:52 +00:00
Samuel Pitoiset
19e5b4cf2e
radv: remove unnecessary vs_common_out.export_layer_id
...
Same as the viewport index, the driver will emit 0 for the PS input
in this case.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13061 >
2021-09-28 12:30:36 +00:00
Samuel Pitoiset
a35cfa77f6
radv: remove unnecessary vs_common_out.export_viewport_index
...
This was only used when the FS needs the viewport index if it's not
exported by the previous stage. Though, this is actually useless
because the driver will emit 0 for the PS input in this case.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13061 >
2021-09-28 12:30:36 +00:00
Samuel Pitoiset
2c21835963
radv: remove unused radv_nir_compiler_options fields
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13067 >
2021-09-28 08:25:28 +02:00
Samuel Pitoiset
82193fa58c
radv: cleanup uses of VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT
...
Use the pipeline key instead of this mess.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13067 >
2021-09-28 08:25:26 +02:00
Samuel Pitoiset
deede6b03d
radv: pass the pipeline key to the backend compilers
...
It exactly matches the shader keys now. Everything was copied from
the pipeline key to the shader keys.
There is still some work to completely remove radv_shader_variant_key.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13032 >
2021-09-27 11:57:25 +02:00
Samuel Pitoiset
124b003943
radv: store the CS subgroup size to radv_shader_info
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13032 >
2021-09-27 11:57:20 +02:00
Samuel Pitoiset
c97147984b
radv: store the topology instead of the output primitive type in the key
...
To match the pipeline key.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13032 >
2021-09-27 11:57:17 +02:00
Samuel Pitoiset
fa833f9ee5
radv: add export_clip_dists for VS and TES to radv_shader_info
...
To be able to remove radv_vs_out_key entirely.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13028 >
2021-09-24 16:27:23 +00:00
Samuel Pitoiset
525dd54717
radv: remove unused radv_tcs_variant_key:primitive_mode
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13022 >
2021-09-24 11:36:01 +02:00
Bas Nieuwenhuizen
ca2d96db51
radv: Add caching for RT pipelines.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12592 >
2021-09-21 01:53:39 +00:00
Bas Nieuwenhuizen
1ca4fd31e6
radv: Add support for ray launch size.
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12592 >
2021-09-21 01:53:39 +00:00
Rhys Perry
44be450dc1
radv: refactor handling of nir_options
...
Make it easier to change them depending on chip_class and family.
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/12617 >
2021-09-03 13:21:28 +00:00
Samuel Pitoiset
607a14b870
radv: remove NGG streamout support in LLVM
...
It has never really been used due to various issues with GDS in the
past and it will be lowered in NIR at some point.
The driver support is still there because it can likely be re-used.
This implementation can also be used as a reference point.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12695 >
2021-09-02 17:58:51 +02:00
Samuel Pitoiset
b31994cf67
radv: fix determining the maximum number of waves that can use scratch
...
This estimation was incorrect, the number of waves doesn't only
depend of the number of VGPRs.
Though, {SPI,COMPUTE}_TMPRING_SIZE.WAVES should limit the number of
scratch waves in flight, not sure if limiting it really works.
This fixes a GPU hang with an upcoming game, and this might also
helps resolving some spurious random GPU hangs.
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12700 >
2021-09-02 15:09:07 +00:00
Timur Kristóf
c4ca08548b
radv: Remove superfluous workgroup size calculations.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12321 >
2021-08-26 09:46:18 +00:00
Timur Kristóf
9fd36bbacd
radv: Calculate workgroup sizes in radv_pipeline.
...
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12321 >
2021-08-26 09:46:18 +00:00
Timur Kristóf
8341af5109
radv, aco, ac/nir: Tweak position export scheduling for NGG culling.
...
The result is about +5-ish fps in Doom Eternal.
It turns out that the location of position exports matters more
than we thought, and it's actually better to keep them at the bottom
for culling shaders rather than schedule it up to the top.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10525 >
2021-07-13 23:56:33 +00:00
Timur Kristóf
f30e4351de
radv: Support NGG culling with new perftest environment variable.
...
Currently we don't enable it on any chip by default, but
we plan to enable it soon on GFX10.3 when we are comfortable
with its performance.
RADV_PERFTEST=nggc environment variable enables it on GFX10+ GPUs.
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/10525 >
2021-07-13 23:56:33 +00:00
Timur Kristóf
9a95f5487f
radv: New shader args for NGG culling settings and viewport.
...
Add new shader arguments in RADV for:
- NGG culling settings
- Viewport transform
These will be used by NGG culling shaders.
Additionally, some tweaks are made to some config registers
in order to make culling shaders more efficient.
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/10525 >
2021-07-13 23:56:33 +00:00