对GPU内存的全面应用控制是新款显式图形API(如Vulkan和Direct3D 12)的主要差异化功能之一。在以往的API中,GPU驱动可以完全控制你创建的曲面和缓冲区,根据应用程序希望如何进行渲染的推断视图,以及将GPU与其他系统元素(如显示合成器)共享的需要来调度内存以实现良好的性能。

在现代的显式API中,GPU仍然是一项共享资源,这意味着驱动仍然有其他工作要做。但现在你已经可以完全控制应用程序所使用的GPU内存,比方说如何放置,如何分配,以及如何移动以适应你正在渲染的内容。作为应用程序开发者,这对你来说是一种新负担,而且我们通常不清楚处理它的最佳策略是什么。

AMD为Vulkan创建了一个直接内存分配器-魔方VR网

为了解决这个问题,AMD为Vulkan创建了一个直接内存分配器。现在开发工作已经来到了可以进行发布以便大家开始使用的阶段,而AMD将继续优化这个内存分配器,并在考虑集成至其他Vulkan技术。

1.0版本支持从较大的分配块中轻松分配缓冲区和图像存储,并附带一个旨在说明如何使用的示例。示例主要是渲染具有索引缓冲区,顶点缓冲区和纹理的立方体,而这一起都是通过库进行分配。对于未来2.0版本,AMD计划包含对所有分配策略(适用于需要进行纹理流式传输的游戏)的支持。所以大家可以留意未来的库更新。

这个API定义在一个记录详尽的头文件中(与STB非常相似),而且代码为MIT授权,包含一个Apache授权的依赖项MathFu(仅用于样本,而不是库)。你同时可以非常轻松地更换以自己的STL变量,或者甚至是完全移除AMD的STL兼容数据结构。所以如果你是使用EASTL之类的东西,或者像AMD一样定义自己的内部STL兼容结构,集成该库的工作量将非常少。

代码已经托管至GitHub(点击前往)。AMD表示,鼓励大家将其用于自己的项目并向他们提供反馈。

via:gpuopen