diff options
author | Lynne <dev@lynne.ee> | 2025-03-10 03:03:41 +0000 |
---|---|---|
committer | Lynne <dev@lynne.ee> | 2025-03-17 08:49:15 +0100 |
commit | 4de023f95362b0a13567e81329efd22cbb8c6a34 (patch) | |
tree | 7d8297072a715b159f2a2ce6e80e8955ea2b511b /libavutil/vulkan.c | |
parent | f2a0bdd6b15523f062ac782727696effd449d347 (diff) | |
download | ffmpeg-4de023f95362b0a13567e81329efd22cbb8c6a34.tar.gz |
vulkan: add ff_vk_exec_add_dep_wait_sem()
This adds a function which adds a regular timeline semaphore
as a wait-only dependency.
Diffstat (limited to 'libavutil/vulkan.c')
-rw-r--r-- | libavutil/vulkan.c | 28 |
1 files changed, 20 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; |