History

vulkan: add ff_vk_exec_add_dep_wait_sem()

This adds a function which adds a regular timeline semaphore as a wait-only dependency.

Lynne committed 1 year ago

Commit 4de023f1 parent f2a0bdd2 files · +23 −8Browse files

Unified · Split

2 files
  1. libavutil/vulkan.c +20 −8
  2. libavutil/vulkan.h +3 −0
libavutil/vulkan.c+20−8
@@ -620,6 +620,23 @@ static void destroy_tmp_semaphores(void *opaque, uint8_t *data) · 619 unmodified lines
620620 av_free(ts);
621621 }
622622
623+int ff_vk_exec_add_dep_wait_sem(FFVulkanContext *s, FFVkExecContext *e,
624+ VkSemaphore sem, uint64_t val,
625+ VkPipelineStageFlagBits2 stage)
626+{
627+ VkSemaphoreSubmitInfo *sem_wait;
628+ ARR_REALLOC(e, sem_wait, &e->sem_wait_alloc, e->sem_wait_cnt);
629+
630+ e->sem_wait[e->sem_wait_cnt++] = (VkSemaphoreSubmitInfo) {
631+ .sType = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO,
632+ .semaphore = sem,
633+ .value = val,
634+ .stageMask = stage,
635+ };
636+
637+ return 0;
638+}
639+
623640 int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e,
624641 VkSemaphore *sem, int nb,
625642 VkPipelineStageFlagBits2 stage,
@@ -672,14 +689,9 @@ int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e, · 46 unmodified lines
672689 }
673690
674691 for (int i = 0; i < nb; i++) {
675− VkSemaphoreSubmitInfo *sem_wait;
676− ARR_REALLOC(e, sem_wait, &e->sem_wait_alloc, e->sem_wait_cnt);
677−
678− e->sem_wait[e->sem_wait_cnt++] = (VkSemaphoreSubmitInfo) {
679− .sType = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO,
680− .semaphore = sem[i],
681− .stageMask = stage,
682− };
692+ err = ff_vk_exec_add_dep_wait_sem(s, e, sem[i], 0, stage);
693+ if (err < 0)
694+ return err;
683695 }
684696
685697 return 0;
libavutil/vulkan.h+3−0
@@ -456,6 +456,9 @@ void ff_vk_exec_wait(FFVulkanContext *s, FFVkExecContext *e); · 455 unmodified lines
456456 */
457457 int ff_vk_exec_add_dep_buf(FFVulkanContext *s, FFVkExecContext *e,
458458 AVBufferRef **deps, int nb_deps, int ref);
459+int ff_vk_exec_add_dep_wait_sem(FFVulkanContext *s, FFVkExecContext *e,
460+ VkSemaphore sem, uint64_t val,
461+ VkPipelineStageFlagBits2 stage);
459462 int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e,
460463 VkSemaphore *sem, int nb,
461464 VkPipelineStageFlagBits2 stage,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t