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