Vulkan 是一個低開銷、跨平台的二維、三維圖形與計算的應用程式介面（API），最早由科納斯組織在 2015 年遊戲開發者大會（GDC）上發表。與 OpenGL 類似，Vulkan 針對全平台即時 3D 圖形程式（如電子遊戲和互動媒體）而設計，並提供高效能與更均衡的 CPU 與 GPU 占用，這也是 Direct3D 12 和 AMD 的 Mantle 的目標。與 Direct3D（12 版之前）和 OpenGL 的其他主要區別是，Vulkan 是一個底層 API，而且能執行並列任務。除此之外，Vulkan 還能更好地分配多個 CPU 核心的使用。

科納斯最先把 Vulkan API 稱為「次世代 OpenGL 行動」（next generation OpenGL initiative）或「glNext」，但在正式宣佈 Vulkan 之後這些名字就沒有再使用了。Vulkan 基於 Mantle 構建，AMD 將其 Mantle API 捐贈給科納斯組織，給予該組織開發底層 API 的基礎，使其像 OpenGL 一樣成為行業標準。



特性

Vulkan 旨在提供更低的 CPU 開銷與更直接的 GPU 控制，其理念大致與 Direct3D 12 和 Mantle 類似。

以下是 Vulkan 相對於上一代 API 的優勢：


* Vulkan API 適用於從高效能電腦到移動低功耗裝置的顯示卡（OpenGL 具有名為 OpenGL ES 的行動裝置 API 子集，它仍是支援 Vulkan 裝置的備選 API）。

* 相比於 Direct3D 12，Vulkan 與前身 OpenGL 類似，受多種作業系統支援。Vulkan 已經能在 Windows 7、Windows 8、Windows 10、Tizen、Linux 與 Android 上執行（iOS 和 macOS 有第三方支援）。

* 通過批次處理（Batching）減少 CPU 負載，使 CPU 可以執行更多其他的計算或彩現任務。

* 在多核心 CPU 上，Vulkan 能對核心與執行緒進行最佳化。Direct3D 11 與 OpenGL 4 最初為單核心 CPU 設計，儘管後來出現了針對多核心 CPU 最佳化的擴充，不過與 Vulkan 相比，最佳化仍不是很好。

* 減少了驅動程式的開銷與維護工作。OpenGL 使用進階著色語言 GLSL 編寫著色器，不同的驅動在程式執行時需要執行自身的 GLSL 編譯器，將程式的著色器轉換為 GPU 可執行的機器碼。而 Vulkan 驅動將著色器語言預先轉化為 SPIR-V（Standard Portable Intermediate Representation）的中間二進位格式，其行為類似於 Direct3D 的 HLSL 著色器。通過著色器預編譯，應用程式載入速度更快，並且 3D 場景可以使用更多種著色器。Vulkan 驅動只需對 GPU 進行最佳化並生成代碼，這使得驅動程式更容易維護，驅動程式包更小（目前 GPU 供應商仍需在驅動程式中提供 OpenGL 與 OpenCL 的支援）。

* 計算與圖形處理的統一管理，因此 Vulkan 無需與單獨的計算 API 配合使用。

輝達在 2016 年時指出，由於 OpenGL 的複雜度和維護難度比 Vulkan 低很多，在多數情況下也能提供理想的整體效能，現階段 OpenGL 仍是個很好的選擇。AMD 表示，Vulkan 支援 Close-To-Metal 控制的獨特能力可加快跨 Windows 和 Linux 的效能並且提高影像品質。現今無其他圖形 API 提供如此強大的作業系統相容性、成像功能和硬體效率組合 。 例如，CPU 中包含的整合 GPU 可與高端專用 GPU 結合使用，以略微提高效能。

Vulkan 1.1

科納斯在 SIGGRAPH2016 上宣布 Vulkan 將支援自動多 GPU 功能，類似於 Direct3D 12 所提供的功能，顯示驅動程式不再需要處理多個 GPU 的使用，相反，兩個或更多完全不同的 GPU 之間可以智慧型地分配工作負載。

科納斯於 2018 年 3 月 7 日發布了 Vulkan 1.1 。它擴展了幾個核心功能，包括子集操作，例如多視圖、裝置組、高級彩現和編輯操作程式跨流程 API 互動操作。這些核心功能還包括 16 位元記憶體獲取高級計算，HLSL 記憶體分佈支援，影片流的顯示，處理和編程，通過許多影片編輯解碼器生成的 YCbcRr 顏色格式化紋理的直接抽樣。同時，它還帶來了與 DirectX 12 的更好相容性，顯式支援多 GPU，光線跟蹤支援，為下一代 GPU 奠定了基礎。

vulkan 1.2

2020 年 1 月 15 日，科納斯組織發布了 Vulkan 1.2，將 23 個已經通過驗證的擴展整合到基本 Vulkan 標準中，大部份用來幫助提升 Vulkan 與其他圖形 API 之間的相容層效能。

Vulkan 1.3

2022 年 1 月 25 日，科納斯組織發布了 Vulkan 1.3。 這次更新將另外 23 個常用的成熟的 Vulkan 擴充整合到基本的 Vulkan 標準中。

計劃中的功能

科納斯在 SIGGRAPH 2016 上宣布，Vulkan 將提供類似於 Direct3D 12 的多卡互聯功能。通過 Vulkan，不同型號的顯示卡也能協同工作，而無需 NVIDIA SLI 或 AMD Crossfire 的支援。Vulkan 多卡互聯功能允許 API 在多個不同的顯示卡之間智慧型分配負載，例如，CPU 上的整合顯示卡與高端獨立顯示卡協同工作，能夠略微提升顯示效能。

在 OpenCL 2.2 規範發布時，科納斯宣布 OpenCL 將在未來融入 Vulkan。



歷史

2014 年 6 月，科納斯組織開始了「次世代 OpenGL」圖形 API 的計劃，並在 Valve 公司舉行專案啟動會議。在 SIGGRAPH 2014 上，專案公之於世。2015 年 2 月 19 日，Vulkan 的商標在美國專利及商標局提交。

2015 年早些時候，LunarG（由 Valve 資助）開發並展示了一款支援 Vulkan API 的 Intel HD Graphics 4000 系列 Linux 驅動程式，不過當時的 Mesa 開源驅動並不完全相容 OpenGL 4.0。

2016 年 2 月 16 日，科納斯組織發布了 Vulkan 1.0 版規範與開源軟體開發套件（SDK）。



支援 Vulkan 的軟體

電子遊戲


* 《塔洛斯法則》—— 首個支援 Vulkan 彩現的遊戲

* 《Dota 2》——2016 年 5 月開始支援

* 《毀滅戰士》——2016 年 7 月開始支援

* 《虹彩六號：圍攻行動》——PC 公開測試中

* vkQuake——《雷神之錘》的 Vulkan 移植版，於 2016 年 7 月發布

* World War Z——《末日之戰》電影改編遊戲。由 Epic Games 出品。

* Red Dead Redemption 2——《碧血狂殺 2》。由 Rockstar Games 出品。

* X-Plane（飛行類比軟體）—— 由 Laminar Research 推出。從 X-Plane 11 開始支援，X-Plane 12 作為默認彩現方式

遊戲引擎


* Source 2——2015 年 3 月由 Valve 公司發布

* Serious Engine 4——2016 年 2 月，Croteam 宣布支援 Vulkan API

* 虛幻引擎 4——2016 年 2 月 Epic Games 在三星 Galaxy S7 Unpack 發布會上聲明提供 Vulkan 支援

* Torque 3D——2016 年 4 月，開發者社群宣稱將提供 Vulkan 支援

* id Tech 3 引擎 —— 在 2017 年 5 月增加了對 Vulkan 的非正式支援

* id Tech 4 引擎 —— 在 2017 年 8 月添加了非官方的 Vulkan 支援

* id Tech 6——2016 年 5 月 id Software 宣布執行於 id Tech 6 引擎的《毀滅戰士》將支援 Vulkan

* id Tech 7—— 僅在 PC 上使用 Vulkan

* Abyss Engine——2017 年 5 月 Deep Silver 在 Android 上發佈了基於 vulkan 的浴火銀河 3

* Banshee 3D—— 支援 Vulkan 的免費開放原始碼跨平台遊戲引擎

* CryEngine——Crytek 計劃提供支援

* Xenko——2016 年 7 月加入支援

* Intrinsic—— 在 GitHub 上代管的開源跨平台遊戲引擎

* Unity——2016 年 12 月，Unity Technologies 表示其 Unity 遊戲引擎 5.6 版將支援 Vulkan API；2017 年 3 月，Unity 5.6 提供正式支援

* Roblox—— 自 2017 年 3 月起，Roblox 支援 Vulkan 彩現

* Rockstar 高級遊戲引擎 —— 除 DirectX12 外，還完全支援 Vulkan

* Godot—— 在 2018 年 2 月下旬，開發人員宣布將把重點改為使用 OpenGL ES 2 和 Vulkan 的組合。

* Flax Engine—— 於 2019 年 4 月添加 Vulkan 支援

* Apex Game Engine (來自雪崩工作室)—— 狂怒煉獄 2 改用 Vulkan 進行彩現

* Messiah Game Engine—— 網易與高通合作，針對 Vulkan 優化

開發工具


* GPU PerfStudio 3.6，在 Windows 與 Linux 平台上支援 Vulkan

* GTK+ Scene Graph Kit，作為 GTK+ 3.90 的一個組件於 2017 年 3 月發布

作業系統組件

Vulkan 視窗系統介面（Window System Interface，WSI）的作用類似於 OpenGL ES 的 EGL。EGL 能使 OpenGL ES 程式跟原生視窗系統相通，並控制上下文管理、緩衝區繫結與彩現同步等。



相容性

初版 Vulkan 規範指出，Vulkan 能在支援 OpenGL ES 3.1 或 OpenGL 4.x 及更高版本的顯示卡上執行。但 Vulkan API 本身依賴於新版顯示卡驅動程式，而且並非所有符合 Vulkan 規範的顯示卡都能收到廠商提供的驅動程式更新。

2016 年 8 月 22 日，Google 發布的 Android Nougat（Android 7.x）提供對 Vulkan 的支援。

蘋果公司沒有對 iOS 和 macOS 提供官方 Vulkan 支援，而 Molten 公司開發的 MoltenVK 執行於蘋果 Metal API，提供 Vulkan 第三方支援。



參見


* OpenGL，科納斯組織的另一個圖形 API

* OpenCL，科納斯組織的一個異構計算框架

* Mantle，AMD 的底層圖形與計算 API，Vulkan 的前身

* Direct3D，Windows 和 Xbox 專有的圖形 API

* Metal，iOS 和 macOS 的一個底層圖形與計算 API



參考資料



外部連結


* Vulkan 1.0 規範 （頁面存檔備份，存於網際網路檔案館）

* Vulkan 硬體支援資料庫 （頁面存檔備份，存於網際網路檔案館）