summaryrefslogtreecommitdiff
path: root/libavfilter/vulkan.c
Commit message (Collapse)AuthorAgeFilesLines
* lavfi/vulkan: split off lavfi-specific code into vulkan_filter.cLynne2021-11-191-173/+0
| | | | | | | | | | | | | | | | | 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.
* lavu/vulkan: add option to switch between shader compilers and cleanup glslangLynne2021-11-191-3/+0
|
* lavu/vulkan: move common Vulkan code from libavfilter to libavutilLynne2021-11-191-1390/+1
|
* lavfi/vulkan: fix issues the previous commit introducedLynne2021-11-161-4/+4
| | | | One typo and one think-before-you-paste.
* lavfi/vulkan: add mutliqueue emulation codeLynne2021-11-161-15/+18
| | | | | This helps with testing multiple queues when the hardware only has a single queue.
* lavfi/vulkan: fix static descriptor set updatingLynne2021-11-161-0/+21
| | | | | Update all descriptor sets for all queues if a descriptor set hasn't been initialized yet.
* lavfi/vulkan: refactor, fix and fully implement multiple queuesLynne2021-11-121-130/+210
|
* lavfi/glslang: migrate to the C API and robustify library detectionLynne2021-11-121-39/+24
| | | | | | | | 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.
* lavfi/vulkan: use libavutil's vulkan loaderLynne2021-11-121-75/+111
| | | | This finally fully eliminates the need to statically link to libvulkan!
* lavfi/vulkan: port to using timeline semaphoresLynne2021-11-121-0/+31
|
* avfilter/vulkan: Store format in filter, remove query functionAndreas Rheinhardt2021-10-051-9/+0
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/formats: Factor common function combinations outAndreas Rheinhardt2021-08-131-4/+1
| | | | | | | | | | | 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>
* lavfi/vulkan: fix queue counts and set indicesLynne2020-05-261-4/+2
|
* lavfi/vulkan: use dedicated allocation for buffers when necessaryLynne2020-05-261-3/+28
|
* lavfi/vulkan: use all enabled queues in the queue familyLynne2020-05-231-65/+231
| | | | | This should significantly improve the performance with certain filterchains.
* lavfi/vulkan: fix 2 minor memory leaksLynne2020-05-231-1/+4
|
* Revert "hwcontext_vulkan: only use one semaphore per image"Lynne2020-05-111-17/+21
| | | | | | | | | 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.
* hwcontext_vulkan: only use one semaphore per imageLynne2020-04-071-21/+17
| | | | | | 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.
* scale_vulkan: add support for RGB->YUV conversionsLynne2020-03-171-0/+12
| | | | Only top-left chroma position supported for now.
* lavfi: add Vulkan filtering frameworkLynne2020-02-041-0/+1236
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.