#vulkan #vulkan-graphics #ash #graphics #3d #api-bindings

vk-sync

简化核心Vulkan同步机制,如管线屏障和事件

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

MIT/Apache

43KB
660

vk-sync

vk-sync on travis-ci.com vk-sync on appveyor.com Latest version Documentation

简化Vulkan同步逻辑,用Rust编写。

概述

为了使Vulkan同步更易于访问,此库提供了对核心同步机制(如管线屏障和事件)的高效简化。

与Vulkan中复杂的枚举和位标志的迷宫相比——其中许多组合是无效的或不合逻辑的——此库将其简化为大约40种不同的使用类型,并提供了一些处理图像布局的选项。

此外,这些使用类型更容易映射到其他图形API,如DirectX 12。

目前此库未处理其他同步机制,如信号量、栅栏和渲染过程。

绑定

有多个Vulkan ffi绑定可用,我计划支持最常见的绑定,但目前此库仅实现了对ash的支持。请通过pull-request添加您需要的其他绑定;我会很高兴接受它。

表现力

尽管此库相当简单,但它表达了您在实践中实际上99%想要做的事情。添加缺失的表现力将导致复杂性的增加,这似乎不值得这种权衡。如果您需要任何特定的模式,请提交问题!

以下是您无法表达的一些已知内容:

  • 执行只依赖关系无法表达。这些偶尔与信号量一起使用时很有用,或者当尝试智能调度时,但它们的用途有限,而且正确使用相当困难。

  • 深度/模板输入附件可以使用ImageLayout::ShaderReadOnlyOptimalImageLayout::DepthStencilReadOnlyOptimal在着色器中读取 - 此库始终使用ImageLayout::DepthStencilReadOnlyOptimal。在图像别名的情况下,这可能导致不必要的转换(尽管可能性极低)。

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
vk-sync = "0.1.6"

并添加到您的 crate 根目录

extern crate vk_sync;

许可证

以下任何一个许可证下授权

任选其一。

致谢

此库大量基于 Tobias Hector 的作品(《https://github.com/Tobski/simple_vulkan_synchronization》)

贡献

除非您明确声明,否则您有意提交的任何贡献,根据 Apache-2.0 许可证定义,均应双授权如上,无任何额外条款或条件。

行为准则

vk-sync crate 的贡献遵循贡献者协议,vk-sync 的维护者 @gwihlidal 承诺将介入维护此行为准则。

依赖项

~0–1.3MB
~32K SLoC