public PooledMemoryBuffer(Device dev, VkBufferUsageFlag usage, VkBufferCreateFlag flags, MemoryRequirements req, ulong size, params uint[] sharedQueueFamilies) : base(dev, usage, flags, size, sharedQueueFamilies) { var pool = Size >= DeviceMemoryPools.BlockSizeForPool(DeviceMemoryPools.Pool.LargeBufferPool) ? DeviceMemoryPools.Pool.LargeBufferPool : DeviceMemoryPools.Pool.SmallBufferPool; var reqs = MemoryRequirements.Union(MemoryRequirements, req); var type = reqs.FindMemoryType(PhysicalDevice); _memory = Device.MemoryPool.Allocate(type, pool, reqs.TypeRequirements.Size); BindMemory(_memory.BackingMemory, _memory.Offset); }