2
3
4
5
18
19
20 VkSemaphoreTypeCreateInfo timelineCreateInfo{};
21 timelineCreateInfo.sType = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO;
22 timelineCreateInfo.pNext =
nullptr;
23 timelineCreateInfo.semaphoreType = VK_SEMAPHORE_TYPE_TIMELINE;
24 timelineCreateInfo.initialValue = 0;
27
28
29 VkSemaphoreCreateInfo createInfo{};
30 createInfo.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
31 createInfo.pNext = &timelineCreateInfo;
35
36
37 VK_CHECK(vkCreateSemaphore(vulkanState.m_Device, &createInfo,
nullptr, &m_TimelineSemaphore))
38 DEBUGUTILS_SETOBJECTNAME(VK_OBJECT_TYPE_SEMAPHORE,
reinterpret_cast<uint64_t>(m_TimelineSemaphore), vulkanState.m_Device,
"Timeline Semaphore")
46
47
48 vkDestroySemaphore(m_VulkanState.m_Device, m_TimelineSemaphore,
nullptr);
56
57
58 VkSemaphoreWaitInfo waitInfo{};
59 waitInfo.sType = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO;
60 waitInfo.pNext =
nullptr;
62 waitInfo.semaphoreCount = 1;
63 waitInfo.pSemaphores = &m_TimelineSemaphore;
64 waitInfo.pValues = &waitValue;
67
68
69 VK_CHECK(vkWaitSemaphores(m_VulkanState.m_Device, &waitInfo, UINT64_MAX))
77
78
79 VkSemaphoreSignalInfo signalInfo{};
80 signalInfo.sType = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO;
81 signalInfo.pNext =
nullptr;
82 signalInfo.semaphore = m_TimelineSemaphore;
83 signalInfo.value = signalValue;
86
87
88 VK_CHECK(vkSignalSemaphore(m_VulkanState.m_Device, &signalInfo))
96 VK_CHECK(vkGetSemaphoreCounterValue(m_VulkanState.m_Device, m_TimelineSemaphore, &value))
#define SPICES_PROFILE_ZONE
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
VulkanObject(VulkanState &vulkanState)
Constructor Function. Init member variables.
VulkanObject Class. This class defines the basic behaves of VulkanObject. When we create an new Vulka...
VulkanTimelineSemaphore(VulkanState &vulkanState)
Constructor Function.
void Singal(uint64_t signalValue=1) const
Signal this VkSemaphore using specific value.
uint64_t GetValue() const
Get what Counter this VkSemaphore is now.
virtual ~VulkanTimelineSemaphore() override
Destructor Function.
void Wait(uint64_t waitValue=1) const
Wait on this VkSemaphore using specific value.
VulkanTimelineSemaphore Class. This class is a wrapper of timeline VkSemaphore.
This struct contains all Vulkan object in used global.