[FFmpeg-cvslog] vulkan: discard dependencies when explicitly waiting for execution

Lynne git at videolan.org
Thu Jun 8 00:59:51 EEST 2023


ffmpeg | branch: master | Lynne <dev at lynne.ee> | Wed Jun  7 01:16:29 2023 +0200| [5f1be341c2bdc12f77c3209370144b15661a4958] | committer: Lynne

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5f1be341c2bdc12f77c3209370144b15661a4958
---

 libavutil/vulkan.c | 3 +++
 1 file changed, 3 insertions(+)

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)



More information about the ffmpeg-cvslog mailing list