/ src / video_core / renderer_vulkan / vk_memory_util.cpp
vk_memory_util.cpp
 1  // Copyright 2023 Citra Emulator Project
 2  // Licensed under GPLv2 or any later version
 3  // Refer to the license.txt file included.
 4  
 5  #include "video_core/renderer_vulkan/vk_memory_util.h"
 6  
 7  namespace Vulkan {
 8  
 9  std::optional<u32> FindMemoryType(const vk::PhysicalDeviceMemoryProperties& properties,
10                                    vk::MemoryPropertyFlags wanted, std::bitset<32> memory_type_mask,
11                                    vk::MemoryPropertyFlags excluded) {
12      for (u32 i = 0; i < properties.memoryTypeCount; ++i) {
13          if (!memory_type_mask.test(i)) {
14              continue;
15          }
16          const auto flags = properties.memoryTypes[i].propertyFlags;
17          if (((flags & wanted) == wanted) && (!(flags & excluded))) {
18              return i;
19          }
20      }
21      return std::nullopt;
22  }
23  } // namespace Vulkan