1 个不稳定版本
0.1.0 | 2023年10月1日 |
---|
#591 in 图形API
7KB
Vulkan Video
通过 Vulkan Video 和 ash 实现对 Vulkan 的安全绑定。
- Rust 仅有的 GPU 加速 Vulkan Video (我们不依赖于 FFMPEG, NVDEC, ...)
- 在 ash 能够构建的所有环境中构建,最小依赖
- 公开了 Vulkan 所支持的所有†解码/编码操作(例如,H.264,H.265, ...)
- 公开了后处理计算功能
- 导入/导出外国内存以实现互操作†
状态
- 2023年10月1日 - † 目前这还是一个“概念验证”,因为它只能在作者的显卡上解码一个 H.264 帧,并且距离变得有用还有数周。
常见问题解答
-
特性 X 缺失或损坏,你会修复它吗?
目前我只有时间实现我需要的。然而,我会很高兴接受 PR。
-
我如何与 DirectX、Torch、CUDA 等进行互操作?
想法是支持 Vulkan 外部内存,并公开额外的(特性门控)API 以导入或导出到外部设备内存。如何与每个外部 API 最好地接口的详细信息仍在进行中。基于一些初步尝试,与其他 Vulkan 实例的无拷贝 GPU 内存互操作可能是“相对容易的”,而与 Torch 可能“较难”。
-
我可以使用这个来解码 MP4 吗?
我们可能不会将容器支持添加到核心库。相反,您将使用另一个 crate 来解析您的 MP4(或类似),然后将 H.26x 帧输入到这个库中。
-
您的 UB 策略是什么?
这里的所有 Rust 代码都应该是安全的,并且绝不能引起未定义行为(UB)。如果您发现任何可能导致 UB 的内容,请提交问题。尽管如此,目前大多数函数都没有正确检查它们的参数,并且可能很容易向 Vulkan 提交会导致可疑行为的操作。此外,坏的计算着色器可能通过 Vulkan 后门破坏事物。这并不意味着所有着色器调用都应该被
unsafe
,因为这与纯 Rust 中的/proc/self/mem
文件 I/O 问题类似。
贡献
Pull Requests (PR) 非常欢迎。请随时提交简单的 PR。首先应讨论架构问题,但也非常感激。
许可协议
- BSD 2-Clause, Ralf Biedert
依赖项
~7MB
~157K SLoC