diff options
author | Lynne <dev@lynne.ee> | 2023-06-07 01:16:29 +0200 |
---|---|---|
committer | Lynne <dev@lynne.ee> | 2023-06-07 23:59:16 +0200 |
commit | 5f1be341c2bdc12f77c3209370144b15661a4958 (patch) | |
tree | 466adc7f3fd1a68c2ae45ce9b729d53c3146d65b /libavutil | |
parent | 975cd48bb3a45aefe314be3b9f8f3b8f0e4f614c (diff) | |
download | ffmpeg-5f1be341c2bdc12f77c3209370144b15661a4958.tar.gz |
vulkan: discard dependencies when explicitly waiting for execution
This reduces memory needed dramatically, as unneeded resources
can be immediately returned to the pool.
Although waitforfences is threadsafe, we add a mutex wait around
it, as the mutex fence in combination with waitforfences assures
us that no other thread will reset the fence in the meanwhile
whilst the mutex is locked. This allows is to call
ff_vk_exec_discard_deps.
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/vulkan.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index b1c585292e..26b9b6f1fb 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -480,7 +480,10 @@ FFVkExecContext *ff_vk_exec_get(FFVkExecPool *pool) void ff_vk_exec_wait(FFVulkanContext *s, FFVkExecContext *e) { FFVulkanFunctions *vk = &s->vkfn; + pthread_mutex_lock(&e->lock); vk->WaitForFences(s->hwctx->act_dev, 1, &e->fence, VK_TRUE, UINT64_MAX); + ff_vk_exec_discard_deps(s, e); + pthread_mutex_unlock(&e->lock); } int ff_vk_exec_start(FFVulkanContext *s, FFVkExecContext *e) |