Lluvia
BufferUsageFlags.h
Go to the documentation of this file.
1 
8 #ifndef LLUVIA_CORE_BUFFER_BUFFER_USAGE_FLAGS_H_
9 #define LLUVIA_CORE_BUFFER_BUFFER_USAGE_FLAGS_H_
10 
13 
14 namespace ll {
15 
17  StorageBuffer = static_cast<ll::enum_t>(vk::BufferUsageFlagBits::eStorageBuffer),
18  TransferDst = static_cast<ll::enum_t>(vk::BufferUsageFlagBits::eTransferDst),
19  TransferSrc = static_cast<ll::enum_t>(vk::BufferUsageFlagBits::eTransferSrc),
20  UniformBuffer = static_cast<ll::enum_t>(vk::BufferUsageFlagBits::eUniformBuffer)
21 };
22 
24 
26 {
27  return BufferUsageFlags(bit0) | bit1;
28 }
29 
31 {
32  return BufferUsageFlags(bit0) & bit1;
33 }
34 
36 {
37  return BufferUsageFlags(bit0) ^ bit1;
38 }
39 
40 namespace impl {
41 
43  {
44  return ll::BufferUsageFlags {static_cast<ll::enum_t>(flags)};
45  }
46 
48  {
49  return vk::BufferUsageFlags {static_cast<VkFlags>(flags)};
50  }
51 
52  constexpr const std::array<std::tuple<const char*, ll::BufferUsageFlagBits>, 4> BufferUsageFlagBitsStrings {{std::make_tuple("StorageBuffer", ll::BufferUsageFlagBits::StorageBuffer),
53  std::make_tuple("TransferDst", ll::BufferUsageFlagBits::TransferDst),
54  std::make_tuple("TransferSrc", ll::BufferUsageFlagBits::TransferSrc),
55  std::make_tuple("UniformBuffer", ll::BufferUsageFlagBits::UniformBuffer)}};
56 
57 } // namespace impl
58 
71 inline ll::BufferUsageFlags vectorStringToBufferUsageFlags(const std::vector<std::string>& flagsVector) noexcept
72 {
74 }
75 
85 inline std::vector<std::string> bufferUsageFlagsToVectorString(const ll::BufferUsageFlags flags) noexcept
86 {
88 }
89 
90 } // namespace ll
91 
92 #endif // LLUVIA_CORE_BUFFER_BUFFER_USAGE_FLAGS_H_
Enums.
constexpr ll::BufferUsageFlags fromVkBufferUsageFlags(const vk::BufferUsageFlags &flags) noexcept
Definition: BufferUsageFlags.h:42
constexpr const std::array< std::tuple< const char *, ll::BufferUsageFlagBits >, 4 > BufferUsageFlagBitsStrings
Definition: BufferUsageFlags.h:52
E vectorStringToFlags(const std::vector< std::string > &flagsVector) noexcept
Definition: enums.h:191
vk::BufferUsageFlags toVkBufferUsageFlags(const ll::BufferUsageFlags &flags) noexcept
Definition: BufferUsageFlags.h:47
std::vector< std::string > flagsToVectorString(E flags) noexcept
Definition: enums.h:211
Definition: Buffer.h:28
std::vector< std::string > bufferUsageFlagsToVectorString(const ll::BufferUsageFlags flags) noexcept
Converst from Vulkan BufferUsageFlags to a vector of strings.
Definition: BufferUsageFlags.h:85
constexpr BufferUsageFlags operator^(BufferUsageFlagBits bit0, BufferUsageFlagBits bit1) noexcept
Definition: BufferUsageFlags.h:35
constexpr BufferUsageFlags operator|(BufferUsageFlagBits bit0, BufferUsageFlagBits bit1) noexcept
Definition: BufferUsageFlags.h:25
ll::BufferUsageFlags vectorStringToBufferUsageFlags(const std::vector< std::string > &flagsVector) noexcept
Converts from a string vector to Vulkan BufferUsageFlags.
Definition: BufferUsageFlags.h:71
constexpr BufferUsageFlags operator&(BufferUsageFlagBits bit0, BufferUsageFlagBits bit1) noexcept
Definition: BufferUsageFlags.h:30
ll::Flags< BufferUsageFlagBits, ll::enum_t > BufferUsageFlags
Definition: BufferUsageFlags.h:23
uint32_t enum_t
Definition: enums.h:23
BufferUsageFlagBits
Definition: BufferUsageFlags.h:16