3个不稳定版本
0.1.1 | 2022年7月11日 |
---|---|
0.1.0 | 2022年7月9日 |
0.0.0 | 2022年6月24日 |
在图形API中排名第600
450KB
11K SLoC
包含(静态库,2KB) lib/x64/vulkan.lib,(静态库,2KB) lib/x86/vulkan.lib
Maia
Maia 是安全的低级 Vulkan 绑定。该库的一般特性如下:
- 在CPU上内存安全。没有安全的操作可以在宿主*内存中引起内存损坏或数据竞争。
- 无锁。线程安全性在编译时通过
&mut
来处理,而不是通过互斥锁,以避免性能惊喜。 - 低级。与 Vulkan API 调用接近 1-1 对应。在 Vulkan 中不分配的调用在 Maia 中也不分配。
- 选择性。Maia 故意省略了不高效、不实用或很少受支持的 Vulkan 功能。然而,提供了 API 以允许下游 crate 扩展。
- 尽可能直观。特别是,几乎所有内容都是
Send
和Sync
。
设置
Maia 动态链接到系统的 Vulkan 加载器,因此必须安装。以下为特定系统的说明。
要开始使用 API,使用 vk::Instance::new
创建一个实例对象。
要启用调试的验证层,设置环境变量 VK_INSTANCE_LAYERS="VK_LAYER_KHRONOS_validation"
或使用 配置器 GUI。
在 Linux 上
要构建,请安装您的发行版的Vulkan开发库(例如,对于Debian,sudo apt install libvulkan-dev
)。您可能还想安装验证层,可以从发行版安装(例如,sudo apt install vulkan-validationlayers
)或通过安装Vulkan SDK。
运行时,一个兼容Vulkan的图形驱动就足够了。
在MacOS上
要构建,请安装Vulkan SDK,并在安装过程中启用“系统全局文件”选项。
要运行,您可能希望将Vulkan加载器和MoltenVK包含在您的.app包中。完整说明请参见此处,示例代码可在demo/
目录中找到。
在Windows上
一个兼容Vulkan的图形驱动就足够用于构建和运行。不过,您可能还想安装Vulkan SDK以验证层。
运行演示
要编译演示中的着色器,必须安装CMake或Vulkan SDK。(在Linux上,CMake似乎是更简单的方法,而在其他系统上则是Vulkan SDK。)
使用Vulkan
本文档假设您已经了解Vulkan的工作原理。如果您是初学者,我可以推荐Vulkan指南、Vulkan教程,或较旧的但更详细的API无秘密。他们引导您查看的代码将与本存储库中的demo
和hello-triangle
示例非常相似,因此您可以一边查看这些示例,一边查看说明,以了解相应的Rust函数的调用。
安全性
Maia不会尝试保护您的缓冲区、图像和着色器变量的内容,因为这些值没有无效的位模式,并且特别不包含指针。相反,它阻止可能导致“逃逸”到您的程序其余部分的错误API使用,例如Vulkan对象的use-after-free或RAM缓冲区中的越界访问。因此,Maia的内存安全性体验类似于与网络连接另一端的C程序进行通信。这意味着Maia不会强制执行Vulkan规范中的每个“应用程序不得”语句,因为规范没有区分这些不同类型的误用。它提供的安全性是关于实际Vulkan实现的行为的。
依赖关系
~0.2-27MB
~337K SLoC