7 个版本
0.1.6 | 2019年7月14日 |
---|---|
0.1.5 | 2019年6月1日 |
0.1.4 | 2018年12月7日 |
0.1.2 | 2018年11月17日 |
0.1.0 | 2018年8月26日 |
#434 in 图形API
43KB
660 行
vk-sync
简化Vulkan同步逻辑,用Rust编写。
概述
为了使Vulkan同步更易于访问,此库提供了对核心同步机制(如管线屏障和事件)的高效简化。
与Vulkan中复杂的枚举和位标志的迷宫相比——其中许多组合是无效的或不合逻辑的——此库将其简化为大约40种不同的使用类型,并提供了一些处理图像布局的选项。
此外,这些使用类型更容易映射到其他图形API,如DirectX 12。
目前此库未处理其他同步机制,如信号量、栅栏和渲染过程。
绑定
有多个Vulkan ffi绑定可用,我计划支持最常见的绑定,但目前此库仅实现了对ash
的支持。请通过pull-request添加您需要的其他绑定;我会很高兴接受它。
表现力
尽管此库相当简单,但它表达了您在实践中实际上99%想要做的事情。添加缺失的表现力将导致复杂性的增加,这似乎不值得这种权衡。如果您需要任何特定的模式,请提交问题!
以下是您无法表达的一些已知内容:
-
执行只依赖关系无法表达。这些偶尔与信号量一起使用时很有用,或者当尝试智能调度时,但它们的用途有限,而且正确使用相当困难。
-
深度/模板输入附件可以使用
ImageLayout::ShaderReadOnlyOptimal
或ImageLayout::DepthStencilReadOnlyOptimal
在着色器中读取 - 此库始终使用ImageLayout::DepthStencilReadOnlyOptimal
。在图像别名的情况下,这可能导致不必要的转换(尽管可能性极低)。
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
vk-sync = "0.1.6"
并添加到您的 crate 根目录
extern crate vk_sync;
许可证
以下任何一个许可证下授权
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
致谢
此库大量基于 Tobias Hector 的作品(《https://github.com/Tobski/simple_vulkan_synchronization》)
贡献
除非您明确声明,否则您有意提交的任何贡献,根据 Apache-2.0 许可证定义,均应双授权如上,无任何额外条款或条件。
行为准则
vk-sync crate 的贡献遵循贡献者协议,vk-sync 的维护者 @gwihlidal 承诺将介入维护此行为准则。
依赖项
~0–1.3MB
~32K SLoC