告别图像布局:简化 Vulkan 同步

新闻源发布时间:2025年6月26日
原作者:Shahbaz Youssefi - Google


Vulkan® 中的同步一直是其最棘手的挑战之一,开发者们也一直不遗余力地提醒我们这一点。Khronos® Vulkan 工作组一直致力于让 Vulkan 更加易于使用,而简化同步模型一直是我们的首要任务。开发者最常遇到的难题之一是管理图像布局的复杂性,而我们正通过新的 VK_KHR_unified_image_layouts 扩展来解决这个问题,该扩展旨在彻底消除大多数布局转换的需要。


一点历史

Vulkan 的同步模型自设计至今已有十多年。当时,图形开发社区强烈支持对同步进行明确的控制,而 Vulkan 工作组则为此设计了一个 API,该 API 优先考虑当时硬件的性能,为应用程序开发者提供了最大的灵活性和控制力。

事后看来 —— 或许并不令人意外 —— 同步已成为 Vulkan 最具挑战性的方面之一,让新手和经验丰富的开发者都感到困惑。同步模型非常复杂,以至于许多应用程序都难以发出高效甚至正确的同步命令。该 VK_KHR_synchronization2 扩展引入了多项渐进式改进,同时在很大程度上保留了 Vulkan 1.0 原始方法的基本原则。

从那时起,现代 GPU 经历了显著的发展,包括其处理同步的方式,这使得 Vulkan 的许多原始设计约束逐渐过时。意识到这一点,Vulkan 工作组正在积极致力于简化同步,旨在提高可用性,并使高性能图形开发更容易实现。新发布的 VK_KHR_unified_image_layouts 扩展,是这条道路上的一个重要里程碑。


统一图像布局

Vulkan 1.0 引入了多种图像布局,后续扩展又添加了更多。但实际上,这些布局通常只映射到少数几种实际的物理布局或压缩格式。一个值得注意的例外是VK_IMAGE_LAYOUT_UNDEFINED,它根本不是物理布局,而是用于初始化新创建图像的内部元数据。

Vulkan 中的图像布局转换主要出于以下三个原因:

1、初始化 VK_IMAGE_LAYOUT_UNDEFINED —— 从作为图像初始化操作的转换。

2、外部共享 —— 在将所有权转移到外部队列系列,或从外部队列系列转移所有权或将图像呈现到显示器时,可能需要进行转换以确保与不支持 Vulkan 内部压缩方案的外部组件兼容。

3、内部兼容性 —— 即使在同一 Vulkan 设备中,某些子系统也可能无法理解其他子系统使用的帧缓冲区压缩。例如,在渲染通道之外使用深度/模板或多重采样颜色附件可能需要在某些硬件上进行解压缩。

Vulkan 工作组认识到 VK_KHR_unified_image_layouts,第三种情况 - 内部不兼容 - 对于大多数现代 GPU 来说已不再重要。此扩展允许开发者绕过大多数布局转换,从而显著简化同步并减少样板代码。更棒的是,几乎所有 GPU 供应商都已准备好在当前一代硬件上支持此扩展。它已列入 Vulkan 路线图,目标是将其纳入核心 API。

VK_KHR_unified_image_layouts 其核心,是驱动程序向应用程序做出的一个简单但强大的承诺:它保证在几乎所有情况下 VK_IMAGE_LAYOUT_GENERAL 都能高效使用。除了图像初始化或演示等少数特定场景外,开发者完全无需使用布局过渡,只需使用 GENERAL 即可!

预计 7 月份的 Vulkan SDK 将支持验证层。与往常一样(尤其是在此扩展中),我们强烈建议在 Vulkan 验证层中启用同步验证。图像布局不匹配会捕获一些常见的同步错误,但如果布局设置为 GENERAL,标准验证将无法再能够检测到这些错误。


更多精彩

Vulkan 的核心原则—明确的控制和对现代 GPU 功能的底层访问—不会改变。但 Vulkan 工作组正在更加重视开发者体验。我们不仅会构建新功能,还会重新审视旧功能,使其更易于使用。VulkanVK_KHR_unified_image_layouts 就是最新的例子,更多改进即将推出。

我们对未来充满期待,未来同步不再是困扰我们的问题。但实现这一目标离不开您宝贵的反馈。欢迎加入 Vulkan Discord 讨论,或在公众号下方留言。告诉我们您使用这款扩展的感受、您面临的挑战,以及您希望我们接下来解决哪些痛点!


原博客链接:
https://www.khronos.org/blog/so-long-image-layouts-simplifying-vulkan-synchronisation
内容来源 | www.khronos.org
审核校对 | Dennis Fu
翻译排版 | 方莹

本文转自:THE KHRONOS GROUP,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。

最新文章