前言 VMA(VulkanMemoryAllocator),是AMD提供的Vulkan内存分配管理器,那么Vulkan的内存分配为何要使用VMA这种内存分配器呢?原因就在于其显存的分配次数是有限的(比如4096次),那么我们就需要分配一整块显存,然后自己使用offset以及size来进行分割使用,这个过程冗长繁杂,而且容易出错,那么VMA就成为了我们管理Vulkan内存的首要选择 一、工程安装 VulkanMemoryAllocator属于单头文件的“stb-style”风格库。你不需要单独去构建它,只需要把头文件加入到工程里就好了。 “SingleHeader”并不意味着所有功能都已经作为了...
一、选择内存类型 在Vulkan物理设备这一层当中,支持各种各样的堆内存与类型的组合。对于VMA来说,帮助用户选择正确的或者说最优的内存类型这件事儿是一个重要任务。用户可以填写合适的参数到VmaAllocationCreateInfo这个结构体当中。 1如果你想找到符合你需求的内存类型Index,你可以使用如下函数:vmaFindMemoryTypeIndex(),vmaFindMemoryTypeIndexForBufferInfo(),vmaFindMemoryTypeIndexForImageInfo(). 2如果你想你想分配一个跟任何VkImage或者VkBuffer不相关(不绑定)的...
前言 VMA(VulkanMemoryAllocator),是AMD提供的Vulkan内存分配管理器,那么Vulkan的内存分配为何要使用VMA这种内存分配器呢?原因就在于其显存的分配次数是有限的(比如4096次),那么我们就需要分配一整块显存,然后自己使用offset以及size来进行分割使用,这个过程冗长繁杂,而且容易出错,那么VMA就成为了我们管理Vulkan内存的首要选择。 MemoryMapping技术,是指把Vulkan当中生成的任何内存(VkDeviceMemory)映射到CPU端的一个void指针的过程,这样我们就可以从CPU端读取或者写入这块内存。这种可以映射的内存可能只能...
前言 VMA(VulkanMemoryAllocator),是AMD提供的Vulkan内存分配管理器,那么Vulkan的内存分配为何要使用VMA这种内存分配器呢?原因就在于其显存的分配次数是有限的(比如4096次),那么我们就需要分配一整块显存,然后自己使用offset以及size来进行分割使用,这个过程冗长繁杂,而且容易出错,那么VMA就成为了我们管理Vulkan内存的首要选择。 当开发一款图形学为主的游戏或者程序的时候,必须避免分配内存的时候超出物理内存承受能力。当内存被过量分配的命令提交之后,不好的事情就会发生( 取决于GPU类型,图形驱动,以及操作系统)。 程序可能不会出任何问题。 ...