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