MCPcopy Create free account
hub / github.com/alibaba/MNN / allocMemory

Method allocMemory

source/backend/vulkan/component/VulkanMemoryPool.cpp:77–96  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75}
76
77MemChunk VulkanMemoryPool::allocMemory(const VkMemoryRequirements& requirements, VkFlags extraMask,
78 bool separate) {
79 uint32_t index = 0;
80 auto typeBits = requirements.memoryTypeBits;
81 for (uint32_t i = 0; i < mDevice.memProty().memoryTypeCount; i++) {
82 if ((typeBits & 1) == 1) {
83 // Type is available, does it match user properties?
84 if ((mDevice.memProty().memoryTypes[i].propertyFlags & extraMask) == extraMask) {
85 index = i;
86 break;
87 }
88 }
89 typeBits >>= 1;
90 }
91 MNN_ASSERT(index >= 0);
92 MNN_ASSERT(index < mAllocators.size());
93 auto mem = mAllocators[index]->alloc(requirements.size, separate, requirements.alignment);
94 MNN_ASSERT(mem.second % requirements.alignment ==0);
95 return mem;
96}
97
98void VulkanMemoryPool::returnMemory(MemChunk memory) {
99 auto mem = (VulkanMemory*)memory.first;

Callers 1

VulkanMemoryMethod · 0.45

Calls 2

sizeMethod · 0.45
allocMethod · 0.45

Tested by

no test coverage detected