vulkan: add ff_vk_exec_add_dep_wait_sem()

This adds a function which adds a regular timeline semaphore
as a wait-only dependency.
This commit is contained in:
Lynne
2025-03-10 03:03:41 +00:00
parent f2a0bdd6b1
commit 4de023f953
2 changed files with 23 additions and 8 deletions

View File

@ -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;

View File

@ -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,