Vulkan核心版本的发布初衷是什么?为何不沿用现有扩展机制?
Vulkan的扩展机制确实能在不改动基础API的前提下快速迭代新功能,但核心版本的发布是为了解决扩展机制无法覆盖的行业痛点,核心目的主要有这几点:
统一基础能力,减少开发者适配负担
扩展是硬件厂商可选支持的,不同GPU、不同平台的扩展支持差异极大。开发者要用上某个功能,得先写一堆代码检查该扩展是否存在,还要处理不同扩展的兼容逻辑。核心版本把经过市场验证、通用性极强的扩展升级为必实现功能,比如Vulkan 1.1整合了VK_KHR_descriptor_update_template等多个常用扩展,开发者不用再做额外的兼容性判断,直接调用核心API就能保证功能可用。固化成熟特性,建立行业标准基线
扩展本质是"试验性"的,很多功能最初以扩展形式推出,是为了收集开发者反馈、验证需求合理性。当某个特性被证明是行业通用需求(比如1.1的受保护操作,针对安全敏感场景的通用需求),升级到核心版本后,就成为所有支持该核心版本的硬件必须遵守的标准。这能让整个Vulkan生态有统一的功能基线,新硬件只要宣称支持某个核心版本,开发者就能确定它具备哪些基础能力,不用再逐个核对扩展。优化API结构,消除设计冗余
扩展的快速迭代可能导致API出现冗余:不同扩展可能解决类似问题,或者接口设计有临时妥协。核心版本在整合扩展时,会重新梳理API的整体设计,去掉重复逻辑,让接口更连贯、易用。比如有些早期扩展的命名或参数设计不够严谨,核心版本会统一规范,避免开发者在不同扩展的相似接口间混淆。对齐平台生态要求
像Android、Windows这类主流平台,在集成Vulkan时通常会绑定特定的核心版本作为兼容基础。比如Android 10要求设备必须支持Vulkan 1.1,这就倒逼硬件厂商跟进核心版本的实现,保证平台上的应用能稳定运行统一的核心功能。如果只依赖扩展,平台很难制定清晰的兼容标准,硬件和应用的适配成本会大幅上升。
内容的提问来源于stack exchange,提问作者Maresia

