diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index ec908940de..b2e575c131 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -836,6 +836,20 @@ void ff_vk_exec_add_dep_wait_sem(FFVulkanContext *s, FFVkExecContext *e, }; } +void ff_vk_exec_add_dep_signal_sem(FFVulkanContext *s, FFVkExecContext *e, + VkSemaphore sem, uint64_t val, + VkPipelineStageFlagBits2 stage) +{ + av_assert1(e->sem_sig_cnt < FF_VK_EXEC_MAX_SEM_OPS); + + e->sem_sig[e->sem_sig_cnt++] = (VkSemaphoreSubmitInfo) { + .sType = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, + .semaphore = sem, + .value = val, + .stageMask = stage, + }; +} + void ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e, VkSemaphore *sem, int nb, VkPipelineStageFlagBits2 stage, diff --git a/libavutil/vulkan.h b/libavutil/vulkan.h index 1952965c89..e92b8dffb9 100644 --- a/libavutil/vulkan.h +++ b/libavutil/vulkan.h @@ -525,6 +525,9 @@ void ff_vk_exec_add_dep_obj(FFVulkanContext *s, FFVkExecContext *e, void ff_vk_exec_add_dep_wait_sem(FFVulkanContext *s, FFVkExecContext *e, VkSemaphore sem, uint64_t val, VkPipelineStageFlagBits2 stage); +void ff_vk_exec_add_dep_signal_sem(FFVulkanContext *s, FFVkExecContext *e, + VkSemaphore sem, uint64_t val, + VkPipelineStageFlagBits2 stage); void ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e, VkSemaphore *sem, int nb, VkPipelineStageFlagBits2 stage,