[FFmpeg-devel] [PATCH 2/2] vulkan: discard dependencies when explicitly waiting for execution

Lynne dev at lynne.ee
Thu Jun 8 01:06:03 EEST 2023


Jun 7, 2023, 23:33 by philipl at overt.org:

> On Wed, 7 Jun 2023 01:23:24 +0200 (CEST)
> Lynne <dev at lynne.ee> wrote:
>
>> From eb74297de8662c9fa66cd719c6315567966afe56 Mon Sep 17 00:00:00 2001
>> From: Lynne <dev at lynne.ee>
>> Date: Wed, 7 Jun 2023 01:16:29 +0200
>> Subject: [PATCH 2/2] 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.
>> ---
>>  libavutil/vulkan.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c
>> index 4b96c0c200..0cfe334db0 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)
>>
>
> LGTM.
>

Thanks, pushed.


More information about the ffmpeg-devel mailing list