3个不稳定版本

0.1.1 2022年7月11日
0.1.0 2022年7月9日
0.0.0 2022年6月24日

图形API中排名第600

MIT/Apache

450KB
11K SLoC

包含(静态库,2KB) lib/x64/vulkan.lib,(静态库,2KB) lib/x86/vulkan.lib

Maia

Crates.io docs.rs GitHub Workflow Status

Maia 是安全的低级 Vulkan 绑定。该库的一般特性如下:

  1. 在CPU上内存安全。没有安全的操作可以在宿主*内存中引起内存损坏或数据竞争。
  2. 无锁。线程安全性在编译时通过 &mut 来处理,而不是通过互斥锁,以避免性能惊喜。
  3. 低级。与 Vulkan API 调用接近 1-1 对应。在 Vulkan 中不分配的调用在 Maia 中也不分配。
  4. 选择性。Maia 故意省略了不高效、不实用或很少受支持的 Vulkan 功能。然而,提供了 API 以允许下游 crate 扩展。
  5. 尽可能直观。特别是,几乎所有内容都是 SendSync

设置

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无秘密。他们引导您查看的代码将与本存储库中的demohello-triangle示例非常相似,因此您可以一边查看这些示例,一边查看说明,以了解相应的Rust函数的调用。

安全性

Maia不会尝试保护您的缓冲区、图像和着色器变量的内容,因为这些值没有无效的位模式,并且特别不包含指针。相反,它阻止可能导致“逃逸”到您的程序其余部分的错误API使用,例如Vulkan对象的use-after-free或RAM缓冲区中的越界访问。因此,Maia的内存安全性体验类似于与网络连接另一端的C程序进行通信。这意味着Maia不会强制执行Vulkan规范中的每个“应用程序不得”语句,因为规范没有区分这些不同类型的误用。它提供的安全性是关于实际Vulkan实现的行为的。

依赖关系

~0.2-27MB
~337K SLoC