Lugdunum  0.1.0
Semaphore.cpp
Go to the documentation of this file.
2 
4 
5 namespace lug {
6 namespace Graphics {
7 namespace Vulkan {
8 namespace API {
9 namespace Builder {
10 
11 Semaphore::Semaphore(const API::Device& device) : _device{device} {}
12 
13 bool Semaphore::build(API::Semaphore& semaphore, VkResult* returnResult) {
14  // Create the semaphore creation information for vkCreateSemaphore
15  const VkSemaphoreCreateInfo createInfo{
16  /* createInfo.sType */ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
17  /* createInfo.pNext */ nullptr,
18  /* createInfo.flags */ 0
19  };
20 
21  // Create the semaphore
22  VkSemaphore vkSemaphore{VK_NULL_HANDLE};
23  VkResult result = vkCreateSemaphore(static_cast<VkDevice>(_device), &createInfo, nullptr, &vkSemaphore);
24 
25  if (returnResult) {
26  *returnResult = result;
27  }
28 
29  if (result != VK_SUCCESS) {
30  return false;
31  }
32 
33  semaphore = API::Semaphore(vkSemaphore, &_device);
34 
35  return true;
36 }
37 
38 std::unique_ptr<API::Semaphore> Semaphore::build(VkResult* returnResult) {
39  std::unique_ptr<API::Semaphore> semaphore = std::make_unique<API::Semaphore>();
40  return build(*semaphore, returnResult) ? std::move(semaphore) : nullptr;
41 }
42 
43 } // Builder
44 } // API
45 } // Vulkan
46 } // Graphics
47 } // lug
bool build(API::Semaphore &instance, VkResult *returnResult=nullptr)
Definition: Semaphore.cpp:13