internal VulkanGraphicsMemoryAllocator(VulkanGraphicsDevice device, ulong blockPreferredSize) : base(device, blockPreferredSize) { blockPreferredSize = BlockPreferredSize; var blockMinimumSize = blockPreferredSize >> 3; if (blockMinimumSize == 0) { blockMinimumSize = blockPreferredSize; } var memoryTypeCount = Device.Adapter.VulkanPhysicalDeviceMemoryProperties.memoryTypeCount; _blockCollections = new VulkanGraphicsMemoryBlockCollection[memoryTypeCount]; for (uint memoryTypeIndex = 0; memoryTypeIndex < memoryTypeCount; memoryTypeIndex++) { _blockCollections[memoryTypeIndex] = new VulkanGraphicsMemoryBlockCollection(blockMinimumSize, blockPreferredSize, BlockMarginSize, BlockMinimumFreeRegionSizeToRegister, this, minimumBlockCount: 0, maximumBlockCount: nuint.MaxValue, memoryTypeIndex); } // TODO: UpdateBudget _ = _state.Transition(to: Initialized); }
internal VulkanGraphicsMemoryBlock(VulkanGraphicsMemoryBlockCollection collection, ulong size, ulong marginSize, ulong minimumFreeRegionSizeToRegister) : base(collection, size, marginSize, minimumFreeRegionSizeToRegister) { _vulkanDeviceMemory = new ValueLazy <VkDeviceMemory>(CreateVulkanDeviceMemory); _ = _state.Transition(to: Initialized); }