#vulkan #vulkan-graphics #graphics #graphics-pipeline #ash #3d

vk-sync-fork

简化核心Vulkan同步机制,如管道屏障和事件。从原始的未维护的vk-sync包中衍生而来。

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中使用

MIT/Apache

48KB
695

vk-sync(-fork)

Latest version Documentation

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

从原始的vk-sync包中衍生而来,该包目前未维护。

概述

为了使Vulkan同步更容易访问,这个库提供了一种高效的简化核心同步机制,如管道屏障和事件。

与Vulkan中的复杂枚举和位标志的迷宫相比——其中许多组合无效或不合逻辑——这个库将其简化为40多个不同用途类型的更短列表,以及处理图像布局的几个选项。

此外,这些用途类型还提供了一种更容易映射到其他图形API(如DirectX 12)的方式。

目前该库未涉及其他同步机制(如信号量、围栏和渲染传递)的使用。

绑定

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

表达性

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

以下是已知无法表达的内容列表

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

  • 深度/模板输入附件可以使用 ImageLayout::ShaderReadOnlyOptimalImageLayout::DepthStencilReadOnlyOptimal 在着色器中读取 —— 这个库始终使用 ImageLayout::DepthStencilReadOnlyOptimal。当别名图像时,这可能会导致不必要的转换,尽管这种情况非常不可能发生。

使用方法

将其添加到您的 Cargo.toml

[dependencies]
vk-sync = { package = "vk-sync-fork", version = "0.2.1" }

许可证

根据您的要求,许可协议可以是以下之一

任选其一。

致谢

此库基于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