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
Rhys Perry
18d3e4fecd
radv,aco: use ac_nir_lower_legacy_gs
...
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/20296 >
2023-01-16 17:25:51 +00:00
Samuel Pitoiset
ebec42d799
radv: fix hashing pipeline keys if RADV_PERFTEST=ngg_streamout is used
...
On GFX10-10.3, RADV_PERFTEST=ngg_streamout can be used to replace the
legacy path but it should be in the pipeline key. Otherwise, it's
possible to load legacy shaders from the cache instead of NGG.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20668 >
2023-01-13 13:10:12 +00:00
Friedrich Vock
abf3bcd6ea
radv: Add RMV resource tracking
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17331 >
2023-01-11 06:55:04 +00:00
Friedrich Vock
d816859ede
radv: Use internal allocation helpers for internal allocations
...
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17331 >
2023-01-11 06:55:04 +00:00
Samuel Pitoiset
6e888f6159
radv: enable PS epilogs on-demand for some dynamic states
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20201 >
2023-01-10 09:55:29 +00:00
Samuel Pitoiset
eb07a11b8f
radv: add support for compiling PS epilogs on-demand
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20201 >
2023-01-10 09:55:29 +00:00
Samuel Pitoiset
bbd7f70073
radv: rework PS epilog emission
...
With PS epilogs compiled on-demand (for some dynamic states), they need
to be emitted outside of the graphics pipeline path. Also keep track
of the last emitted PS epilog to avoid redundant emission.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20201 >
2023-01-10 09:55:29 +00:00
Samuel Pitoiset
d944959fbf
radv: configure VGT_TF_PARAM directly from the command buffer
...
The driver re-emits the tessellation domain origin state when a new
pipeline with tessellation is bound, so this can be moved there.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20486 >
2023-01-09 15:46:49 +00:00
Samuel Pitoiset
480308c6e5
radv: remove unused radv_is_raster_enabled()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20517 >
2023-01-09 08:20:10 +00:00
Samuel Pitoiset
1099fd71b0
radv: initialize blend state after compiling shaders
...
This function used to compute part of the graphics key but everything
has been moved.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20517 >
2023-01-09 08:20:10 +00:00
Samuel Pitoiset
87b88de973
radv: replace blend_enable_4bit by radv_pipeline_is_blend_enabled()
...
Same logic, though this workaround shouldn't be determined from the
pipeline.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20517 >
2023-01-09 08:20:10 +00:00
Samuel Pitoiset
0768cc5ed1
radv: determine DISABLE_DUAL_QUAD directly from the command buffer
...
With dynamic color blend equations, dual-src blending will be
determined from the dynamic state, better to move it there now.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20517 >
2023-01-09 08:20:10 +00:00
Samuel Pitoiset
ab48665f8d
radv: simplify uses of color_write_mask/color_blend_enable
...
The common Vulkan code already sets them when they are dynamic, so this
was redundant.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20517 >
2023-01-09 08:20:10 +00:00
Samuel Pitoiset
25f067ef4c
radv: adjust CB_SHADER_MASK right after SPI_SHADER_COL_FORMAT is compacted
...
This is a cleanup.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20517 >
2023-01-09 08:20:10 +00:00
Samuel Pitoiset
db2108672d
radv: remove unused parameter in radv_init_multisample_state()
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20517 >
2023-01-09 08:20:10 +00:00
Samuel Pitoiset
5757dbe1ee
radv: fix returning VK_PIPELINE_COMPILE_REQUIRED from library
...
When VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED is set by
the application, the driver should return VK_COMPILE_REQUIRED but this
was broken for GPL (it returned VK_SUCCESS instead). Also, objects
shouldn't be destroyed when creating the library failed because it's
already handled in radv_graphics_lib_pipeline_create().
Cc: 22.3 mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7512
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20532 >
2023-01-06 10:10:18 +00:00
Samuel Pitoiset
21e52a612d
radv: remove enabling out-of-order rasterization internally
...
This was added ~4 years ago for very little performance improvements
(likely < 1%) and this is only supported on GFX8 and GFX9.
Since, the number of dynamic states increased and this is likely
disabled most of the time, and given the maintainability cost, it looks
like it's time to remove it completely.
Applications can still enable it with VK_AMD_rasterization_order.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20514 >
2023-01-06 08:11:17 +00:00
Samuel Pitoiset
5449b6927a
radv: use vk_dynamic_graphics_state for the color blend state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314 >
2023-01-05 10:07:01 +00:00
Samuel Pitoiset
e381ac7aaf
radv: rework some color blend state fields for vk_dynamic_graphics_state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314 >
2023-01-05 10:07:01 +00:00
Samuel Pitoiset
29ca23dd93
radv: use vk_dynamic_graphics_state for the multisample state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314 >
2023-01-05 10:07:01 +00:00
Samuel Pitoiset
ed5dc76ea7
radv: use vk_dynamic_graphics_state for the depth stencil state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314 >
2023-01-05 10:07:01 +00:00
Samuel Pitoiset
a72fcfd40b
radv: use vk_dynamic_graphics_state for the rasterization state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314 >
2023-01-05 10:07:01 +00:00
Samuel Pitoiset
3bc248e564
radv: use vk_dynamic_graphics_state for the discard rectangles state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314 >
2023-01-05 10:07:01 +00:00
Samuel Pitoiset
104a564920
radv: use vk_dynamic_graphic_state for the viewport state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314 >
2023-01-05 10:07:01 +00:00
Samuel Pitoiset
251933efa7
radv: use vk_dynamic_graphics_state for the input assembly state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314 >
2023-01-05 10:07:01 +00:00
Samuel Pitoiset
3bf256e86d
radv: use vk_dynamic_graphics_state for the tessellation state
...
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com >
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314 >
2023-01-05 10:07:01 +00:00