20 Commits

Author SHA1 Message Date
f6dd30df24 lavfi/vulkan: split off lavfi-specific code into vulkan_filter.c
The issue is that libavfilter depends on libavcodec, and when doing a
static build, if libavcodec also includes "libavfilter/vulkan.c", then
during link-time, compiling programs will fail as there would be multiple
definitions of the same symbols in both libavfilter and libavcodec's
object files.
Linkers are, however, more permitting if both files that include
a common file that's used as a template are one-to-one identical.
Hence, to make both files the same in the future, export all avfilter
specific functions to a separate file.
There is some work in progress to make templated files like this be
compiled only once, so this is not a long-term solution.

This also removes a macro that could be used to toggle SPIRV compilation
capability on #include-time, as this could cause the files to be different.
2021-11-19 16:47:26 +01:00
b2aec70bd6 lavu/vulkan: add option to switch between shader compilers and cleanup glslang 2021-11-19 13:44:47 +01:00
d1133e8c44 lavu/vulkan: move common Vulkan code from libavfilter to libavutil 2021-11-19 13:44:45 +01:00
20c66fe2f9 lavfi/vulkan: fix issues the previous commit introduced
One typo and one think-before-you-paste.
2021-11-16 11:20:13 +01:00
8af7bcb6c3 lavfi/vulkan: add mutliqueue emulation code
This helps with testing multiple queues when the hardware only
has a single queue.
2021-11-16 10:32:37 +01:00
8f9888a8d4 lavfi/vulkan: fix static descriptor set updating
Update all descriptor sets for all queues if a descriptor set hasn't
been initialized yet.
2021-11-16 10:32:35 +01:00
f705e9ea05 lavfi/vulkan: refactor, fix and fully implement multiple queues 2021-11-12 05:23:41 +01:00
246f841b53 lavfi/glslang: migrate to the C API and robustify library detection
Finally, this is as close to usable as it gets for glslang.
Much faster to compile as well, and eliminates the need for a C++
compiler, which is great.
Also, changes to the resource limits won't break users, as we
can use designated initializers in C90.
2021-11-12 05:23:41 +01:00
fef85c376a lavfi/vulkan: use libavutil's vulkan loader
This finally fully eliminates the need to statically link to libvulkan!
2021-11-12 05:23:40 +01:00
dfc61800a2 lavfi/vulkan: port to using timeline semaphores 2021-11-12 03:36:46 +01:00
4c0adcd07e avfilter/vulkan: Store format in filter, remove query function
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-10-05 18:58:29 +02:00
18ec426a86 avfilter/formats: Factor common function combinations out
Several combinations of functions happen quite often in query_format
functions; e.g. ff_set_common_formats(ctx, ff_make_format_list(sample_fmts))
is very common. This commit therefore adds functions that are equivalent
to commonly used function combinations in order to reduce code
duplication.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-08-13 17:36:22 +02:00
c0344cbfb0 lavfi/vulkan: fix queue counts and set indices 2020-05-26 10:52:11 +01:00
fb49d5c0b1 lavfi/vulkan: use dedicated allocation for buffers when necessary 2020-05-26 10:52:11 +01:00
727cac88b8 lavfi/vulkan: use all enabled queues in the queue family
This should significantly improve the performance with certain
filterchains.
2020-05-23 19:07:50 +01:00
fac17fd46f lavfi/vulkan: fix 2 minor memory leaks 2020-05-23 19:07:48 +01:00
70d396c8af Revert "hwcontext_vulkan: only use one semaphore per image"
This reverts commit 97b526c192add6f252b327245fd9223546867352.
It broke the API, and assumed no other APIs used multiple semaphores.
This also disallowed certain optimizations to happen.

Dealing with APIs that give or expect single semaphores is easier when
we use per-image semaphores.
2020-05-11 23:48:26 +01:00
97b526c192 hwcontext_vulkan: only use one semaphore per image
The idea was to allow separate planes to be filtered independently, however,
in hindsight, literaly nothing uses separate per-plane semaphores and it
would only work when each plane is backed by separate device memory.
2020-04-07 12:52:56 +01:00
1a5e9ae4d8 scale_vulkan: add support for RGB->YUV conversions
Only top-left chroma position supported for now.
2020-03-17 22:52:00 +00:00
6fca61bbc9 lavfi: add Vulkan filtering framework
This commit adds a Vulkan filtering infrastructure for libavfilter.
It attempts to abstract as much as possible of the Vulkan API from filters.

The way the hwcontext and the framework are designed permits for parallel,
non-CPU-blocking filtering throughout, with the exception of up/downloading
and mapping.
2020-02-04 23:19:48 +00:00