5个不稳定版本
0.4.0 | 2022年4月6日 |
---|---|
0.3.0 | 2021年12月28日 |
0.2.2 | 2021年12月10日 |
0.2.1 | 2021年10月23日 |
0.2.0 | 2021年10月23日 |
在图形API中排名第337
每月下载量47次
在screen-13中使用
48KB
695 行
vk-sync(-fork)
简化Vulkan同步逻辑,用rust编写。
从原始的vk-sync包中衍生而来,该包目前未维护。
概述
为了使Vulkan同步更容易访问,这个库提供了一种高效的简化核心同步机制,如管道屏障和事件。
与Vulkan中的复杂枚举和位标志的迷宫相比——其中许多组合无效或不合逻辑——这个库将其简化为40多个不同用途类型的更短列表,以及处理图像布局的几个选项。
此外,这些用途类型还提供了一种更容易映射到其他图形API(如DirectX 12)的方式。
目前该库未涉及其他同步机制(如信号量、围栏和渲染传递)的使用。
绑定
有多个Vulkan ffi绑定可用,我也计划支持最常见的绑定,但到目前为止,这个库仅实现了对ash
的支持。请通过pull-request添加您需要的其他绑定;我会很高兴接受。
表达性
尽管这个库相当简单,但它表达了您在实践中可能会做的99%的事情。添加缺失的表达性会导致复杂性增加,这似乎不值得权衡。如果您需要任何模式表达,请提交问题!
以下是已知无法表达的内容列表
-
执行仅依赖关系无法表达。这些有时与信号量一起使用,或者尝试在调度中巧妙地使用时偶尔有用——但它们的用途有限,而且正确使用相当困难。
-
深度/模板输入附件可以使用
ImageLayout::ShaderReadOnlyOptimal
或ImageLayout::DepthStencilReadOnlyOptimal
在着色器中读取 —— 这个库始终使用ImageLayout::DepthStencilReadOnlyOptimal
。当别名图像时,这可能会导致不必要的转换,尽管这种情况非常不可能发生。
使用方法
将其添加到您的 Cargo.toml
[dependencies]
vk-sync = { package = "vk-sync-fork", version = "0.2.1" }
许可证
根据您的要求,许可协议可以是以下之一
- Apache License, Version 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
致谢
此库基于Tobias Hector的工作(https://github.com/Tobski/simple_vulkan_synchronization)。
如上所述,此库最初由Graham Wihlidal开发(https://github.com/gwihlidal/vk-sync-rs)。
贡献
除非您明确声明,否则您提交的任何有意包含在此软件包中的贡献,根据Apache-2.0许可证定义,应按照上述方式双许可,没有任何额外条款或条件。
行为准则
vk-sync-fork软件包的贡献根据贡献者协议组织,vk-sync的维护者@gwihlidal承诺将介入以维护该行为准则。
依赖关系
~5MB
~124K SLoC