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
620 av_free(ts);620 av_free(ts);
621}621}
622 622
623int 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
623int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e,640int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e,
624 VkSemaphore *sem, int nb,641 VkSemaphore *sem, int nb,
625 VkPipelineStageFlagBits2 stage,642 VkPipelineStageFlagBits2 stage,
@@ -672,14 +689,9 @@ int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e, · 46 unmodified lines
672 }689 }
673 690
674 for (int i = 0; i < nb; i++) {691 for (int i = 0; i < nb; i++) {
675 VkSemaphoreSubmitInfo *sem_wait;692 err = ff_vk_exec_add_dep_wait_sem(s, e, sem[i], 0, stage);
676 ARR_REALLOC(e, sem_wait, &e->sem_wait_alloc, e->sem_wait_cnt);693 if (err < 0)
677 694 return err;
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 };
683 }695 }
684 696
685 return 0;697 return 0;
libavutil/vulkan.h+3−0
@@ -456,6 +456,9 @@ void ff_vk_exec_wait(FFVulkanContext *s, FFVkExecContext *e); · 455 unmodified lines
456 */456 */
457int ff_vk_exec_add_dep_buf(FFVulkanContext *s, FFVkExecContext *e,457int ff_vk_exec_add_dep_buf(FFVulkanContext *s, FFVkExecContext *e,
458 AVBufferRef **deps, int nb_deps, int ref);458 AVBufferRef **deps, int nb_deps, int ref);
459int ff_vk_exec_add_dep_wait_sem(FFVulkanContext *s, FFVkExecContext *e,
460 VkSemaphore sem, uint64_t val,
461 VkPipelineStageFlagBits2 stage);
459int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e,462int ff_vk_exec_add_dep_bool_sem(FFVulkanContext *s, FFVkExecContext *e,
460 VkSemaphore *sem, int nb,463 VkSemaphore *sem, int nb,
461 VkPipelineStageFlagBits2 stage,464 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