Samuel Pitoiset
ea5c893289
radv: regroup PS epilog info when generating the graphics pipeline key
...
No logical change.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21140 >
2023-02-09 07:48:03 +00:00
Samuel Pitoiset
84d006ef11
radv: simplify determining when the fragment shader needs an epilog
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21140 >
2023-02-09 07:48:03 +00:00
Samuel Pitoiset
b41c6c3a50
radv: cleanup graphics pipeline library flags uses
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21140 >
2023-02-09 07:48:03 +00:00
Samuel Pitoiset
7976316f3e
radv: fix skipping graphics pipeline compilation when the FS is NULL
...
Fixes: 3eb97b9d33
("radv: skip compilation when possible with GPL fast-linking")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21192 >
2023-02-09 07:27:53 +00:00
Tatsuyuki Ishi
c6ebd2de71
radv: Fix noop FS not getting constructed for GPL pipelines.
...
The condition was inverted, causing compilation to be actually skipped when
a noop FS is used and straight emitting the pipeline from the default
initialized struct.
Fixes: 3eb97b9d33
("radv: skip compilation when possible with GPL fast-linking")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21166 >
2023-02-08 10:52:54 +00:00
Qiang Yu
4888dd7391
radv: use amd common force_vrs option
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21010 >
2023-02-07 08:09:39 +00:00
Qiang Yu
1e3198c766
radv: move radv_consider_force_vrs above radv_fill_shader_info
...
It will be used by radv_fill_shader_info, no function change.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21010 >
2023-02-07 08:09:39 +00:00
Alejandro Piñeiro
a12a71e6c0
radv: use shader_info->var_copies_lowered
...
Instead of passing allow_copies as a parameter for radv_optimize_nir
(so manually doing that tracking).
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19338 >
2023-02-06 22:11:34 +00:00
Konstantin Seurer
569517d7ad
radv: Use common ycbcr conversion lowering
...
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20731 >
2023-02-06 18:36:29 +00:00
Samuel Pitoiset
2fe3cef367
radv: do not insert fast-linked libraries to the shaders cache
...
Similar to fast-linked pipelines that aren't added to the cache.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21133 >
2023-02-06 15:01:30 +00:00
Rhys Perry
c68f9ed020
radv/llvm: use the ring_offsets shader arg
...
Besides being nicer, this also fixes load_sample_positions_amd with LLVM.
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/19202 >
2023-02-06 14:25:16 +00:00
Konstantin Seurer
7f98fcae52
radv: Scalarize global IO with LLVM enabled
...
Fixes the "atomic store operand must have integer, pointer, or floating point type!" error with RADV_DEBUG=llvm,checkir.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20840 >
2023-02-05 12:40:25 +00:00
Qiang Yu
7c41cdb81f
ac/nir,radv,radeonsi: gs copy shader use ac_nir_export_(position|parameter)
...
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20691 >
2023-02-03 12:27:44 +00:00
Qiang Yu
7308637bb4
ac/nir,radv,radeonsi: legacy vs use ac_nir_export_(position|parameter)
...
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20691 >
2023-02-03 12:27:44 +00:00
Samuel Pitoiset
3ad9a6e7c2
radv: simplify an assertion after considering RADV_FORCE_VRS
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21068 >
2023-02-02 15:06:07 +00:00
Samuel Pitoiset
3eb97b9d33
radv: skip compilation when possible with GPL fast-linking
...
When all shader stages have already been imported it's possible to
skip radv_graphics_pipeline_compile() entirely. This makes GPL
fast-linking VERY fast.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21068 >
2023-02-02 15:06:07 +00:00
Samuel Pitoiset
6b513a9c6a
radv: determine the last VGT API stage earlier
...
It can be computed right after the active stages are known. While we
are at it, simplify the code.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21068 >
2023-02-02 15:06:07 +00:00
Samuel Pitoiset
031bbdfbe6
radv: stop using the graphics pipeline key after compilation
...
Only the blend state was relying on the graphics pipeline key. This
will allow us to skip generating it when there is no compilation at
all (for fast-linking with GPL).
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21068 >
2023-02-02 15:06:07 +00:00
Samuel Pitoiset
aebe65e88a
radv: return a boolean value in radv_pipeline_needs_dynamic_ps_epilog()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21068 >
2023-02-02 15:06:07 +00:00
Samuel Pitoiset
6ddf1fd9ad
radv: pass the lib flags for generating the pipeline key
...
No functional change.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21068 >
2023-02-02 15:06:07 +00:00
Samuel Pitoiset
863bc08136
radv: remove one unused variable in radv_graphics_lib_pipeline_init()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21042 >
2023-02-02 14:01:12 +00:00
Samuel Pitoiset
c9e032be7f
radv: allow to create a noop FS in a library with GPL
...
Otherwise, a noop FS will be always compiled during linking if not
provided by the application and that is too slow for fast-linking.
This should be improved to use a global noop FS but it's really tricky
because NIR linking doesn't do anything when the next stage is unknown,
and hence doesn't remove unused varyings.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21042 >
2023-02-02 14:01:12 +00:00
Samuel Pitoiset
aa68b98b87
radv: remove radv_pipeline_stage::spirv::sha1
...
This is no longer used.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21048 >
2023-02-01 23:25:52 +00:00
Samuel Pitoiset
853f8eb930
radv: remove redundant zero initialization of pipeline layout
...
It's already zeroed in radv_pipeline_layout_init().
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21048 >
2023-02-01 23:25:52 +00:00
Samuel Pitoiset
cd6712e3a8
radv: pass pCreateInfo to radv_graphics_pipeline_compile()
...
This removes some duplicated code.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990 >
2023-02-01 14:20:47 +00:00
Samuel Pitoiset
6f17ce08fc
radv: pass radv_compute_pipeline to radv_compute_pipeline_compile()
...
Similar to graphics.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990 >
2023-02-01 14:20:47 +00:00
Samuel Pitoiset
b4deb3aa32
radv: move retained shaders info to radv_graphics_pipeline
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990 >
2023-02-01 14:20:47 +00:00
Samuel Pitoiset
b982f8bbe4
radv: pass radv_graphics_pipeline to radv_graphics_pipeline_compile()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990 >
2023-02-01 14:20:47 +00:00
Samuel Pitoiset
d1b36b01a2
radv: add helpers for capturing shaders and statistics
...
Instead of duplicating the logic everywhere.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990 >
2023-02-01 14:20:47 +00:00
Samuel Pitoiset
e1bc8b0b21
radv: simplify pipeline_has_ngg during graphics shaders compilation
...
The is_ngg field is copied during shader info linking for GS, so
after radv_shader_fill_info() is performed, it's possible to use it.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20990 >
2023-02-01 14:20:47 +00:00
Samuel Pitoiset
064141266f
radv: skip shaders cache for fast-linked pipelines with GPL
...
Shader binaries that are imported during linking should already be in
the cache (not yet implemented though) and computing the per pipeline
cache hash is really expensive.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21009 >
2023-01-31 20:27:50 +00:00
Samuel Pitoiset
e07232acbb
radv: fix GPL fast-linking with libs that have retained NIR shaders
...
Zink creates all libaries with CREATE_RETAIN_LINK_TIME_OPTIMIZATION,
then it first creates unoptimized pipelines and it enqueues optimized
pipelines in the background with CREATE_LINK_TIME_OPTIMIZATION.
If a pipeline is linked without CREATE_LINK_TIME_OPTIMIZATION, the
driver should import binaries instead of retained NIR shaders. This
was broken because RADV wasn't compiling binaries at all in presence
of CREATE_RETAIN_LINK_TIME_OPTIMIZATIONS. Now, it always compiles
binaries in libraries but can also retain NIR if requested.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8150
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21008 >
2023-01-31 15:24:50 +00:00
Samuel Pitoiset
2f93398047
radv: only initialize non-zero values for the default dynamic state
...
This avoids a big memcpy and cut the function time by 2x.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20960 >
2023-01-31 09:01:48 +00:00
Samuel Pitoiset
912a19e630
radv: regroup dynamic states initialization
...
It should be possible to initialize these inside libraries at some
point.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20960 >
2023-01-31 09:01:48 +00:00
Samuel Pitoiset
c08082e861
radv: ignore all CB dynamic states when there is no color attachments
...
This simplifies radv_init_dynamic_state() slightly.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20960 >
2023-01-31 09:01:48 +00:00
Samuel Pitoiset
df8243dadf
radv: rename radv_create_shaders() to radv_graphics_pipeline_compile()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20943 >
2023-01-30 09:37:52 +00:00
Samuel Pitoiset
21f53b9c48
radv: split radv_create_shaders() between graphics and compute shaders
...
This introduces radv_compute_pipeline_compile() which is used for
compute and ray tracing pipelines. I think it's better than having a
single function for compiling everything, and that will allow us to do
more cleanups.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20943 >
2023-01-30 09:37:52 +00:00
Samuel Pitoiset
87e055a700
radv: pass the number of stages to radv_hash_shaders()
...
This will help for splitting radv_create_shaders().
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20943 >
2023-01-30 09:37:52 +00:00
Samuel Pitoiset
fc93e0453c
radv: simplify VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED
...
The Vulkan spec says:
"VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT specifies
that pipeline creation will fail if a compile is required for
creation of a valid VkPipeline object; VK_PIPELINE_COMPILE_REQUIRED
will be returned by pipeline creation, and the VkPipeline will be
set to VK_NULL_HANDLE."
Given the implementation is expected to set the pipeline to
VK_NULL_HANDLE, it's unecessary to handle pipeline feedback.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20943 >
2023-01-30 09:37:52 +00:00
Samuel Pitoiset
b97fee432c
radv: fix ignoring graphics shader stages that don't need to be imported
...
If a shader stage is already imported from a library it should be
properly ignored.
Fixes recent CTS dEQP-VK.pipeline.fast_linked_library.misc.unused_shader_stages*.
Fixes: c8765c5244
("radv: ignore shader stages that don't need to be imported with GPL")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20899 >
2023-01-26 08:34:36 +00:00
Samuel Pitoiset
6bec915919
radv: fix creating libraries with PS epilog and all CB states as dynamic
...
It's legal to create a library with FRAGMENT_OUTPUT_INTERFACE and with
all CB states as dynamic, in this case the PS epilog should be dynamic.
This fixes a bunch of regressions while running Zink/RADV CTS with
RADV_PERFTEST=gpl.
Zink is the final boss.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20882 >
2023-01-26 08:14:39 +00:00
Timur Kristóf
39448c8e9c
radv, aco: Add uses_full_subgroups to compute shader info.
...
Allow the compiler to assume that the shader always has full subgroups,
meaning that the initial EXEC mask is -1 in all waves (all lanes enabled).
This assumption is incorrect for ray tracing and internal (meta) shaders
because they can use unaligned dispatch.
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/20670 >
2023-01-26 01:59:26 +00:00
Timur Kristóf
22b350fa27
radv: Get rid of app_shaders_internal.
...
This will make sure the internal field is set to true for internal
shaders which are initialized outside of radv_device_init_meta.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com >
Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de >
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20670 >
2023-01-26 01:59:26 +00:00
Mike Blumenkrantz
46e2cc5d4c
radv: add some graphics pipeline hints to optimize pipeline bind
...
this is a costly function, and we want to avoid loading random struct data
as much as possible
these struct members aren't accessed anywhere else in the function, so eliminating
access avoids some cpu overhead
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20751 >
2023-01-20 19:43:43 +00:00
Samuel Pitoiset
de1e2b65db
radv: fix detecting that blend is enabled when all CB states are dynamic
...
It's allowed to be NULL.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20281 >
2023-01-20 11:55:07 +00:00
Samuel Pitoiset
4041be0f6f
radv: enable compiling PS epilogs on-demand for dynamic color blend equations
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20281 >
2023-01-20 11:55:07 +00:00
Samuel Pitoiset
daa2aeaa0c
radv: add support for dynamic blend equation
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20281 >
2023-01-20 11:55:06 +00:00
Samuel Pitoiset
11382a6711
radv: add a new helper for normalizing blend factors
...
It will be also used when compiling PS epilogs on-demand.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20281 >
2023-01-20 11:55:06 +00:00
Samuel Pitoiset
39dcac4f79
radv: move some color blend helpers to radv_private.h
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20281 >
2023-01-20 11:55:06 +00:00
Tatsuyuki Ishi
1617dac6c3
radv: Fix depth-only-with-discard when epilogs are used.
...
For a depth-only-with-discard pipeline, spi_shader_col_format needs to be
fixed up to a single channel export, or otherwise discard will not work.
Since col_format can change depending on the dynamic state, precompute the
need for this workaround on pipeline creation and apply it when emitting
prolog states.
Fixes: eb07a11b8f
("radv: add support for compiling PS epilogs on-demand")
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20704 >
2023-01-20 08:17:50 +00:00