ffmpeg | branch: master | Lynne <d...@lynne.ee> | Mon Mar 10 03:03:41 2025 +0000| [4de023f95362b0a13567e81329efd22cbb8c6a34] | committer: Lynne
vulkan: add ff_vk_exec_add_dep_wait_sem() This adds a function which adds a regular timeline semaphore as a wait-only dependency. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4de023f95362b0a13567e81329efd22cbb8c6a34 --- libavutil/vulkan.c | 28 ++++++++++++++++++++-------- libavutil/vulkan.h | 3 +++ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index e641975f1e..6ae63f2348 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -620,6 +620,23 @@ static void destroy_tmp_semaphores(void *opaque, uint8_t *data) av_free(ts); } +int ff_vk_exec_add_dep_wait_sem(FFVulkanContext *s, FFVkExecContext *e, + VkSemaphore sem, uint64_t val, + VkPipelineStageFlagBits2 stage) +{ + VkSemaphoreSubmitInfo *sem_wait; + ARR_REALLOC(e, sem_wait, &e->sem_wait_alloc, e->sem_wait_cnt); + + e->sem_wait[e->sem_wait_cnt++] = (VkSemaphoreSubmitInfo) { + .sType = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, + .semaphore = sem, + .value = val, + .stageMask = stage, + }; + + return 0; +} + int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e, VkSemaphore *sem, int nb, VkPipelineStageFlagBits2 stage, @@ -672,14 +689,9 @@ int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e, } for (int i = 0; i < nb; i++) { - VkSemaphoreSubmitInfo *sem_wait; - ARR_REALLOC(e, sem_wait, &e->sem_wait_alloc, e->sem_wait_cnt); - - e->sem_wait[e->sem_wait_cnt++] = (VkSemaphoreSubmitInfo) { - .sType = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, - .semaphore = sem[i], - .stageMask = stage, - }; + err = ff_vk_exec_add_dep_wait_sem(s, e, sem[i], 0, stage); + if (err < 0) + return err; } return 0; diff --git a/libavutil/vulkan.h b/libavutil/vulkan.h index f085649eab..9c068f03e1 100644 --- a/libavutil/vulkan.h +++ b/libavutil/vulkan.h @@ -456,6 +456,9 @@ void ff_vk_exec_wait(FFVulkanContext *s, FFVkExecContext *e); */ int ff_vk_exec_add_dep_buf(FFVulkanContext *s, FFVkExecContext *e, AVBufferRef **deps, int nb_deps, int ref); +int ff_vk_exec_add_dep_wait_sem(FFVulkanContext *s, FFVkExecContext *e, + VkSemaphore sem, uint64_t val, + VkPipelineStageFlagBits2 stage); int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e, VkSemaphore *sem, int nb, VkPipelineStageFlagBits2 stage, _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".