科纳斯组织(Khronos Group)日前发布了Vulkan 1.4.353版本规范,这是Vulkan 1.4系列自2024年正式定稿后的又一次增量更新。本次更新带来了三个全新扩展:VK_KHR_extended_flags、VK_KHR_video_encode_feedback2以及VK_EXT_multisampled_render_to_swapchain。前两者侧重于扩展API的数据容量与功能深度,后者则简化了多重采样渲染的实现路径。除此之外,本次规范还更新了大量文档描述,提升了标准的清晰度与一致性。
Vulkan作为面向高性能图形和计算的低开销API,其规范由Khronos工作组负责制定,覆盖从PC、移动端到云服务等各类平台。Vulkan 1.4于2024年正式发布,引入了动态状态继承等重大特性。此后每1-2周都会有规范的修订更新,主要包含扩展增减、文档校正和新扩展的附加。本次发布的Vulkan 1.4.353距离上次1.4.308约三周,除扩展新增外,主要体现了文档层面的持续打磨。
新扩展详细解析
本次新增的三个扩展分别针对Vulkan API中的资源标志位系统、视频编码反馈机制和渲染管线效率。以下对每个扩展的设计背景和功能特点进行说明。
VK_KHR_extended_flags:扩展格式特性标志位至64位
VK_KHR_extended_flags扩展由多家厂商(包括AMD、Intel、NVIDIA等)共同完成,核心目标是解决Vulkan中多个位掩码类型可用比特位即将耗尽的问题。具体涉及的数据类型包括VkFormatFeatureFlagBits2(64位)、VkImageUsageFlagBits(32位)以及VkImageCreateFlagBits(32位)。随着Vulkan硬件特性的持续增加,这些掩码的高位段已接近使用上限,若继续增加新标志位而现有类型没有空余位,将被迫采用重新定义枚举值或引入新的扩展结构体,这会导致兼容性复杂化。
为此,VK_KHR_extended_flags引入了新的标志位类型VkFormatFeatureFlagBits4KHR,这是一个具有64位宽度的新枚举,可在原有VkFormatFeatureFlagBits2基础上再提供最多64个额外的标志位。配合新标志位类型,规范还增加了VkFormatProperties4KHR结构体,用于查询扩展后的格式特性;同时新增了VkImageCreateFlagBits2KHR,对应扩展图像创建标志。目前该扩展尚未定义任何具体的新标志位,它仅仅提供了数据结构层面的预留功能,为后续扩展能够在64位空间内定义新标志位铺平道路。开发者如果使用的硬件驱动支持此扩展,可以通过新结构体获取更完整的格式信息。
该扩展对于短期使用影响有限,但标志着Vulkan API开始为更长远的硬件进化做准备。未来当需要添加新的格式特性或图像创建选项时,开发者无需担心位掩码溢出,可以直接利用新类型进行扩展。
VK_KHR_video_encode_feedback2:细化视频编码反馈条目
Vulkan Video是Vulkan在视频编码和解码方面的扩展体系,从Vulkan 1.3时开始逐步完善。VK_KHR_video_encode_feedback2是视频编码反馈机制的升级版,在已有VK_KHR_video_encode_feedback的基础上,增加了更多细粒度的查询条目。根据Khronos官方说明,新的反馈条目包括:采用帧内预测(Intra Prediction)和帧间预测(Inter Prediction)编码的像素数量、跳过的宏块(Skipped Blocks)数量、编码块类型分布以及其他统计信息。这些数据在编码每帧或每段后可以通过反馈查询获得。
VK_KHR_video_encode_feedback2的引入使编码器能够更精确地了解输出的内容特征,从而动态调整编码参数,实现更好的率失真优化。例如,在流媒体转码中,可以根据帧内预测的比例决定是否切换参考帧;在游戏录制中,可根据画面复杂度调整量化参数。该扩展保持与现有Vulkan Video管线兼容,创建编码会话时添加相应的反馈槽即可开启,不会影响不使用的应用。
VK_EXT_multisampled_render_to_swapchain:简化多重采样渲染
在实时渲染中,多重采样抗锯齿(MSAA)是常用的画质提升手段。传统的Vulkan实现需要开发者创建一个多重采样的离屏颜色附件和解析附件,先渲染到离屏缓冲,再通过解析操作将结果还原为单样本并提交到交换链。这一流程增加了渲染目标切换和片外带宽消耗。VK_EXT_multisampled_render_to_swapchain扩展允许渲染通道直接通过交换链图像进行多重采样,应用程序创建一个多重采样兼容的交换链,在渲染时将多重采样数据直接写入交换链图像,硬件在呈现时自动执行解析,省去了显式的解析步骤。
该扩展对于VR和多视角渲染等需要低延迟且高画质的场景尤其有利。在那些场景中,减少渲染Pass和带宽操作可以显著降低帧渲染时间。同时,统一的多重采样渲染到交换链也意味着跨平台游戏引擎可以依赖标准扩展实现功能,减少对特定GPU的依赖。扩展的支持性取决于硬件和驱动程序,应用可以通过vkGetPhysicalDeviceProperties2查询是否支持。目前,主要GPU厂商的现代产品均已具备此能力。
扩展的驱动支持与兼容性分析
任何新型扩展的推广都离不开驱动层面的支持。Vulkan 1.4.353中的这三个扩展均需最新的显卡驱动才能启用。根据以往规律,NVIDIA、AMD、Intel会在各自驱动中逐步集成最新Vulkan扩展。VK_EXT_multisampled_render_to_swapchain由于直接关系游戏和VR应用的渲染效率,通常会获得优先支持。VK_KHR_video_encode_feedback2则对多媒体应用开发者更为重要,而VK_KHR_extended_flags作为底层基础扩展,各厂商会在后续驱动中统一提供支持。
对于应用开发者,可以采用扩展检测机制在运行时判断系统是否支持,并为不支持的设备准备后备代码路径。Vulkan的扩展机制成熟,通过vkEnumerateInstanceExtensionProperties和vkGetPhysicalDeviceProperties2等API即可判断。部分扩展要求特定的Vulkan版本或设备特性,例如VK_EXT_multisampled_render_to_swapchain需要Vulkan 1.1以上版本且设备支持多重采样渲染。开发者应参考最新的Vulkan规范附件以确保正确使用。
名词解释与规格科普
Vulkan:科纳斯组织(Khronos Group)维护的跨平台高性能图形与计算API,以低驱动开销、多线程友好和显式控制著称,是OpenGL的继任者,广泛应用于游戏引擎、实时渲染及计算加速。
格式特性标志位:Vulkan中用于描述每个图像格式支持能力的位掩码,如是否支持纹理采样、存储、线性贴图等。随着硬件功能增加,标志位需求扩大,VK_KHR_extended_flags将其扩展至128位组合空间。
多重采样渲染到交换链:一种允许应用直接对交换链图像进行多重采样抗锯齿的渲染方式,省去离屏缓冲和显式解析步骤,降低带宽和延迟,提升渲染效率。
本文参考来源:Phoronix


