Vulkan
Vulkan是一個低開銷、跨平台的二維、三維圖形與計算的應用程式介面(API),[11]最早由科納斯組織在2015年遊戲開發者大會(GDC)上發表。[12][13]與OpenGL類似,Vulkan針對全平台即時3D圖形程式(如電子遊戲和互動媒體)而設計,並提供高效能與更均衡的CPU與GPU佔用,這也是Direct3D 12和AMD的Mantle的目標。與Direct3D(12版之前)和OpenGL的其他主要區別是,Vulkan是一個底層API,而且能執行並列任務。除此之外,Vulkan還能更好地分配多個CPU核心的使用。[14]
開發者 | 科納斯組織,基於AMD的Mantle開發[1][2][3][4][5] |
---|---|
首次發佈 | 2016年2月16日[6] |
目前版本 |
|
原始碼庫 | |
作業系統 | Android、Linux、Tizen、Microsoft Windows[8][9] |
平台 | 跨平台 |
類型 | 3D圖形與計算API[10] |
許可協定 | |
網站 | www |
科納斯最先把Vulkan API稱為「次世代OpenGL行動」(next generation OpenGL initiative)或「glNext」,但在正式宣佈Vulkan之後這些名字就沒有再使用了。[15]Vulkan基於Mantle構建,AMD將其Mantle API捐贈給科納斯組織,給予該組織開發底層API的基礎,使其像OpenGL一樣成為行業標準。[3][10][16][17][18][19][20]
特性
編輯Vulkan旨在提供更低的CPU開銷與更直接的GPU控制,其理念大致與Direct3D 12和Mantle類似。[21]
以下是Vulkan相對於上一代API的優勢:[22]
- Vulkan API適用於從高效能電腦到移動低功耗裝置的顯示卡(OpenGL具有名為OpenGL ES的流動裝置API子集,它仍是支援Vulkan裝置的備選API)。
- 相比於Direct3D 12,Vulkan與前身OpenGL類似,受多種作業系統支援。Vulkan已經能在Windows 7、Windows 8、Windows 10、Tizen、Linux與Android上執行(iOS和macOS有第三方支援[23])。
- 通過批次處理(Batching)減少CPU負載,使CPU可以執行更多其他的計算或彩現任務。[21][24]
- 在多核心CPU上,Vulkan能對核心與線程進行最佳化。Direct3D 11與OpenGL 4最初為單核心CPU設計,儘管後來出現了針對多核心CPU最佳化的擴充,不過與Vulkan相比,最佳化仍不是很好。[25]
- 減少了驅動程式的開銷與維護工作。OpenGL使用進階着色語言GLSL編寫着色器,不同的驅動在程式執行時需要執行自身的GLSL編譯器,將程式的着色器轉換為GPU可執行的機械碼。而Vulkan驅動將着色器語言預先轉化為SPIR-V(Standard Portable Intermediate Representation)的中間二進制格式,其行為類似於Direct3D的HLSL着色器。通過着色器預編譯,應用程式載入速度更快,並且3D場景可以使用更多種着色器。Vulkan驅動只需對GPU進行最佳化並生成代碼,這使得驅動程式更容易維護,驅動程式包更小(目前GPU供應商仍需在驅動程式中提供OpenGL與OpenCL的支援)。[26]
- 計算與圖形處理的統一管理,因此Vulkan無需與單獨的計算API配合使用。
輝達在2016年時指出,由於OpenGL的複雜度和維護難度比Vulkan低很多,在多數情況下也能提供理想的整體效能,現階段OpenGL仍是個很好的選擇。[27] AMD表示, Vulkan支援Close-To-Metal控制的獨特能力可加快跨 Windows和 Linux的效能並且提高影像質素。現今無其他圖形 API 提供如此強大的作業系統相容性、成像功能和硬件效率組合[28] 。 例如,CPU中包含的整合GPU可與高端專用GPU結合使用,以略微提高效能。
Vulkan 1.1
編輯科納斯在SIGGRAPH2016上宣佈Vulkan將支援自動多GPU功能,類似於Direct3D 12所提供的功能[29] ,顯示驅動程式不再需要處理多個GPU的使用,相反,兩個或更多完全不同的GPU之間可以智能地分配工作負載[30]。
科納斯於2018年3月7日發佈了Vulkan 1.1[31] 。它擴展了幾個核心功能,包括子集操作,例如多視圖、裝置組、高級彩現和編輯操作程式跨流程API互動操作。這些核心功能還包括16位元主記憶體獲取高級計算,HLSL主記憶體分佈支援,影片流的顯示,處理和編程,通過許多影片編輯解碼器生成的YCbcRr顏色格式化紋理的直接抽樣。同時,它還帶來了與DirectX 12的更好相容性,顯式支援多GPU,光線跟蹤支援[32][33],為下一代GPU奠定了基礎。[34]
vulkan 1.2
編輯2020年1月15日,科納斯組織發佈了Vulkan 1.2,將23個已經通過驗證的擴展整合到基本Vulkan標準中[35],大部份用來幫助提升Vulkan與其他圖形API之間的相容層效能。
Vulkan 1.3
編輯2022年1月25日,科納斯組織發佈了Vulkan 1.3。[36] 這次更新將另外23個常用的成熟的Vulkan擴充整合到基本的Vulkan標準中。
計劃中的功能
編輯科納斯在SIGGRAPH 2016上宣佈,Vulkan將提供類似於Direct3D 12的多卡互聯功能。[37]通過Vulkan,不同型號的顯示卡也能協同工作,而無需NVIDIA SLI或AMD Crossfire的支援。Vulkan多卡互聯功能允許API在多個不同的顯示卡之間智能分配負載,例如,CPU上的整合顯示卡與高端獨立顯示卡協同工作,能夠略微提升顯示效能。[38]
在2017年5月發行OpenCL 2.2之時,Khronos Group宣佈OpenCL將儘可能的匯合於Vulkan,以確使OpenCL軟件在這兩種API上靈活部署[39][40]。這已經由Adobe的Premiere Rush展示出來,它使用clspv開源編譯器[41],編譯了大量OpenCL C內核代碼,從而在部署於Android的Vulkan執行時系統上執行[42]。
歷史
編輯2014年6月,科納斯組織開始了「次世代OpenGL」圖形API的計劃,並在Valve公司舉行專案啟動會議。[43]在SIGGRAPH 2014上,專案公之於世。[10]2015年2月19日,Vulkan的商標在美國專利及商標局提交。[44]
2015年早些時候,LunarG(由Valve資助)開發並展示了一款支援Vulkan API的Intel HD Graphics 4000系列Linux驅動程式,不過當時的Mesa開源驅動並不完全相容OpenGL 4.0。[45][46]
支援Vulkan的軟件
編輯電子遊戲
編輯- 《塔洛斯法則》——首個支援Vulkan彩現的遊戲[47]
- 《Dota 2》——2016年5月開始支援[48]
- 《毀滅戰士》——2016年7月開始支援[49]
- 《虹彩六號:圍攻行動》——PC公開測試中[50]
- vkQuake——《雷神之錘》的Vulkan移植版,於2016年7月發佈[51][52]
- 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公司發佈[53][54]
- Serious Engine 4——2016年2月,Croteam宣佈支援Vulkan API[55]
- 虛幻引擎4——2016年2月Epic Games在三星Galaxy S7 Unpack發佈會上聲明提供Vulkan支援[56][57]
- Torque 3D——2016年4月,開發者社區宣稱將提供Vulkan支援[58][59]
- id Tech 3引擎——在2017年5月增加了對Vulkan的非正式支援[60]
- id Tech 4引擎——在2017年8月添加了非官方的Vulkan支援[61]
- id Tech 6——2016年5月id Software宣佈執行於id Tech 6引擎的《毀滅戰士》將支援Vulkan[62]
- id Tech 7——僅在PC上使用Vulkan
- Abyss Engine——2017年5月Deep Silver在Android上發佈了基於vulkan的浴火銀河3
- Banshee 3D——支援Vulkan的免費開放原始碼跨平台遊戲引擎
- CryEngine——Crytek計劃提供支援[63]
- Xenko——2016年7月加入支援[64]
- Intrinsic——在GitHub上寄存的開源跨平台遊戲引擎[65]
- Unity——2016年12月,Unity Technologies表示其Unity遊戲引擎5.6版將支援Vulkan API;[66]2017年3月,Unity 5.6提供正式支援[67]
- Roblox——自2017年3月起,Roblox支援Vulkan彩現
- Rockstar高級遊戲引擎——除DirectX12外,還完全支援Vulkan
- Godot——在2018年2月下旬,開發人員宣佈將把重點改為使用OpenGL ES 2和Vulkan的組合。[68]
- Flax Engine——於2019年4月添加Vulkan支援[69]
- Apex Game Engine(來自雪崩工作室)——狂怒煉獄2改用Vulkan進行彩現[70]
- Messiah Game Engine——網易與高通合作,針對Vulkan優化[71]
開發工具
編輯- GPU PerfStudio 3.6,在Windows與Linux平台上支援Vulkan[72]
- GTK+ Scene Graph Kit,作為GTK+ 3.90的一個組件於2017年3月發佈[73]
作業系統組件
編輯Vulkan視窗系統介面(Window System Interface,WSI)的作用類似於OpenGL ES的EGL。[74]EGL能使OpenGL ES程式跟原生視窗系統相通,並控制上下文管理、緩衝區繫結與彩現同步等。
相容性
編輯初版Vulkan規範指出,Vulkan能在支援OpenGL ES 3.1或OpenGL 4.x及更高版本的顯示卡上執行。[75]但Vulkan API本身依賴於新版顯示卡驅動程式,而且並非所有符合Vulkan規範的顯示卡都能收到廠商提供的驅動程式更新。
2016年8月22日,Google發佈的Android Nougat(Android 7.x)提供對Vulkan的支援。[76]
蘋果公司沒有對iOS和macOS提供官方Vulkan支援,而Molten公司開發的MoltenVK執行於蘋果Metal API,提供Vulkan第三方支援。[23]
參見
編輯參考資料
編輯- ^ Not dead yet: AMD's Mantle powers new Vulkan API, VR efforts. 2015-03-04 [2015-03-30]. (原始內容存檔於2016-04-22) (英語).
- ^ Kirsch, Nathan. Is AMD Mantle Dead As We Have Known It? Vulcan API Uses Mantle Technology for OpenGL. Legit Reviews. [2015-06-25]. (原始內容存檔於2015-06-26) (英語).
- ^ 3.0 3.1 Shilov, Anton. AMD: Vulkan absorbed 'best and brightest' parts of Mantle. KitGuru. [2015-06-26]. (原始內容存檔於2015-06-26) (英語).
- ^ Koduri, Raja. On APIs and the future of Mantle. AMD. 2015-03-04 [2015-05-19]. (原始內容存檔於2015-05-20) (英語).
...(T)he Khronos Group has selected Mantle to serve as the foundation for Vulkan...
- ^ Michaud, Scott. GDC 15: Khronos Acknowledges Mantle's Start of Vulkan. PC Perspective. 2015-03-03 [2015-05-19]. (原始內容存檔於2015-05-20) (英語).
- ^ 6.0 6.1 Khronos Releases Vulkan 1.0 Specification - Khronos Group Press Release. [2017-02-10]. (原始內容存檔於2017-12-15) (英語).
- ^ v1.3.301. 2024年11月2日 [2024年11月2日].
- ^ Bright, Peter; Walton, Mark. Vulkan now official, with 1.0 API release and AMD driver [Updated]. United Kingdom: Ars Technica. 2016-02-16 [2016-02-18]. (原始內容存檔於2016-02-17) (英國英語).
- ^ Valich, Theo. Mantle Cycle is Complete as Khronos Releases Vulkan 1.0. VR World. 2016-02-17 [2016-02-19]. (原始內容存檔於2022-05-11) (英語).
- ^ 10.0 10.1 10.2 More on Vulkan and SPIR - V: The future of high-performance graphics (PDF). Khronos Group: 10. [2015-06-27]. (原始內容 (PDF)存檔於2016-08-11) (英語).
- ^ Does Vulkan support 2D graphics? - LunarG. www.lunarg.com. [2017-02-17]. (原始內容存檔於2019-05-02) (美國英語).
- ^ Vulkan : Graphics and compute Belong Together (PDF). Khronos.org. March 2015 [2015-03-05]. (原始內容 (PDF)存檔於2016-12-18).
- ^ Vulkan - Graphics and compute belong together. Khronos.org. [2015-03-05]. (原始內容存檔於2021-05-09).
- ^ Next-generation Vulkan API could be Valve's killer advantage in battling Microsoft - ExtremeTech. ExtremeTech. 2015-03-10 [2017-02-17]. (原始內容存檔於2015-03-13) (美國英語).
- ^ glNext revealed as Vulkan graphics API. 2015-03-03 [2015-03-30]. (原始內容存檔於2016-10-14) (英語).
- ^ Mantle is a Vulkan: AMD's dead graphics API rises from the ashes in OpenGL's successor. PCWorld. [2017-02-17]. (原始內容存檔於2016-11-07) (英語).
- ^ AMD Gaming: One of Mantle's Futures: Vulkan | AMD Blogs. Community.amd.com. [2015-03-05]. (原始內容存檔於2015-03-06).
- ^ Not dead yet: AMD's Mantle powers new Vulkan API, VR efforts. ExtremeTech. [2015-03-05]. (原始內容存檔於2016-04-22).
- ^ AMD's Mantle Lives On In Vulkan - Lays The Foundation For The Next OpenGL. Wccftech.com. 2014-06-20 [2015-03-05]. (原始內容存檔於2020-08-19).
- ^ Kirsch, Nathan. Is AMD Mantle Dead As We Have Known It? Vulcan API Uses Mantle Technology for OpenGL. Legit Reviews. [2015-03-05]. (原始內容存檔於2015-06-26).
- ^ 21.0 21.1 Khronos Group Announces The Next-Generation 'Vulkan' Graphics And Compute API. Tom's Hardware. 2015-03-03 [2017-02-18] (英語).
- ^ FOSDEM 2016 - Vulkan in Open-Source. Fosdem.org. [2017-03-17]. (原始內容存檔於2016-03-09) (英語).
- ^ 23.0 23.1 MoltenVK | Run Vulkan on iOS and OS X. Molten. [2017-02-18]. (原始內容存檔於2018-01-05) (美國英語).
- ^ Vulkan: High efficiency on mobile - Imagination Technologies. Imagination Technologies. 2015-11-05 [2017-02-18]. (原始內容存檔於2015-11-09) (英國英語).
- ^ Vulkan: Scaling to multiple threads - Imagination Technologies. Imagination Technologies. 2015-11-24 [2017-02-18]. (原始內容存檔於2015-11-26) (英國英語).
- ^ Kessenich, John. An Introduction to SPIR-V (PDF). Khronos Group. [2017-02-18]. (原始內容 (PDF)存檔於2015-03-09).
- ^ Transitioning from OpenGL to Vulkan. NVIDIA Developer. 2016-02-11 [2017-03-17]. (原始內容存檔於2020-04-25) (英語).
- ^ AMD Vulkan API. AMD. [2020-07-26]. (原始內容存檔於2019-07-14).
- ^ Vulkan Next will bring better support for VR and multiple GPUs. PC World. [2017-03-17]. (原始內容存檔於2018-12-06).
- ^ Smith, Daniel Williams, Ryan. Ashes of the Singularity Revisited: A Beta Look at Direct3D 12 & Asynchronous Shading. AnandTech. [2017-03-17]. (原始內容存檔於2022-04-22).
- ^ Khronos Group Releases Vulkan 1.1. The Khronos Group (新聞稿). 2018-03-07 [2018-03-21]. (原始內容存檔於2022-04-14) (英語).
- ^ Larabel, Michael. Vulkan 1.1.85 Released With Raytracing, Mesh Shaders & Other New NVIDIA Extensions. Phoronix. 2018-09-19 [2018-09-19]. (原始內容存檔於2022-05-11).
- ^ Larabel, Michael. Vulkan 1.1.91 Released With NV_ray_tracing, AMD Memory Overallocation Behavior. Phoronix. 2018-11-04 [2018-11-04]. (原始內容存檔於2022-05-11).
- ^ Bright, Peter. Vulkan 1.1 out today, with multi-GPU support, better DirectX compatibility. Ars Terchnica. 2018-03-07 [2018-03-07]. (原始內容存檔於2022-04-29).
- ^ Khronos Group Releases Vulkan 1.2. The Khronos Group (新聞稿). 2020-01-15 [2020-02-27]. (原始內容存檔於2022-05-11) (英語).
- ^ Khronos Strengthens Vulkan Ecosystem with Release of Vulkan 1.3, Public Roadmap and Profiles. January 25, 2022 [2023-02-13]. (原始內容存檔於2022-01-25).
- ^ Vulkan Next will bring better support for VR and multiple GPUs. PCWorld. [2017-03-17]. (原始內容存檔於2018-12-06) (英語).
- ^ Smith, Daniel Williams, Ryan. Ashes of the Singularity Revisited: A Beta Look at DirectX 12 & Asynchronous Shading. [2017-03-17]. (原始內容存檔於2022-04-22).
- ^ Breaking: OpenCL Merging Roadmap into Vulkan | PC Perspective. www.pcper.com. [May 17, 2017]. (原始內容存檔於November 1, 2017).
- ^ SIGGRAPH 2018: OpenCL-Next Taking Shape, Vulkan Continues Evolving – Phoronix. www.phoronix.com.
- ^ Clspv is a prototype compiler for a subset of OpenCL C to Vulkan compute shaders: google/clspv, 2019-08-17 [2019-08-20]
- ^ Vulkan Update SIGGRAPH 2019 (PDF).
- ^ The Khronos Group, SIGGRAPH 2015: 3D Graphics API State of the Union, 2015-09-16 [2017-03-17], (原始內容存檔於2022-05-11)
- ^ Trademark Status & Document Retrieval. tsdr.uspto.gov. [2017-03-17]. (原始內容存檔於2013-05-11) (英語).
- ^ Valve Developed An Intel Linux Vulkan GPU Driver - Phoronix. www.phoronix.com. [2017-03-17]. (原始內容存檔於2022-05-11) (英語).
- ^ Learning More About The Intel Vulkan Driver, Linux Vulkan Plans - Phoronix. www.phoronix.com. [2017-03-17]. (原始內容存檔於2021-04-17) (英語).
- ^ Smith, Daniel Williams, Ryan. Quick Look: Vulkan Performance on The Talos Principle. [2017-03-17]. (原始內容存檔於2022-05-15).
- ^ 新闻 - Dota 2 Update - May 23rd 2016. store.steampowered.com. [2017-03-17]. (原始內容存檔於2020-11-08) (中文(中國大陸)).
- ^ Bethesda.net. Bethesda.net. [2017-03-17]. (原始內容存檔於2022-05-11).
- ^ 存档副本. [2020-02-01]. (原始內容存檔於2022-04-08).
- ^ Quake 1 Ported To Run On Vulkan - Phoronix. www.phoronix.com. [2017-03-17]. (原始內容存檔於2022-05-11) (英語).
- ^ Here is your first look at the first Quake being recreated in Unreal Engine 4 (fan project) - DSOGaming - The Dark Side Of Gaming. www.dsogaming.com. [2017-03-17]. (原始內容存檔於2022-04-12) (美國英語).
- ^ Valve announces Source 2 engine, free for developers. Polygon. 2015-03-03 [2017-03-17]. (原始內容存檔於2015-03-05).
- ^ Mahardy, Mike. GDC 2015: Valve Announces Source 2 Engine. IGN. 2015-03-03 [2017-03-17]. (原始內容存檔於2015-03-04) (美國英語).
- ^ The Talos Principle will support Vulkan – first screenshot released - Croteam. Croteam. 2016-02-05 [2017-03-17]. (原始內容存檔於2022-04-12) (美國英語).
- ^ Epic Games adds Vulkan support to Unreal Engine 4. bit-tech. [2017-03-17]. (原始內容存檔於2017-01-19) (英語).
- ^ Epic Games Unveils ProtoStar at Samsung Galaxy Unpacked. www.unrealengine.com. [2017-03-17]. (原始內容存檔於2016-08-10) (英語).
- ^ Closing in on 3.9 - Forums - Torque 3D. forums.torque3d.org. [2017-03-17]. (原始內容存檔於2021-03-18) (英國英語).
- ^ Torque 3D 3.8 Released! • r/gamedev. reddit. [2017-03-17]. (原始內容存檔於2022-05-11) (英語).
- ^ Kharytoniuk, Artem, GitHub - kennyalive/Quake-III-Arena-Kenny-Edition: The cradle of Quake III Arena., 2019-05-16 [2019-05-16], (原始內容存檔於2022-05-11)
- ^ Vulkan DOOM 3 port based on DOOM 3 BFG Edition. July 2018 [2020-07-26]. (原始內容存檔於2022-05-11).
- ^ DOOM on Twitter. Twitter. [2017-03-17]. (原始內容存檔於2022-05-11) (英語).
- ^ DirectX 12, Vulkan support on the way for CryEngine. TweakTown. 2016-08-19 [2017-03-17]. (原始內容存檔於2022-05-11) (美國英語).
- ^ Xenko Game Engine - Xenko 1.7β released!. xenko.com. [2017-03-17]. (原始內容存檔於2019-06-23).
- ^ Intrinsic - Open-source cross-platform graphics and game engine. Intrinsic. [2017-03-17]. (原始內容存檔於2016-10-27) (美國英語).
- ^ Unity engine adds Vulkan support for a big performance boost. The Tech Report. [2017-03-17]. (原始內容存檔於2021-09-12).
- ^ Introducing the Vulkan renderer preview – Unity Blog. Unity Technologies Blog. [2017-03-17]. (原始內容存檔於2021-04-20) (美國英語).
- ^ Linietsky, Juan. Godot Engine - Moving to Vulkan (and ES 2.0) instead of OpenGL ES 3.0. Godot. 2018-02-26 [2018-03-07]. (原始內容存檔於2020-06-17).
- ^ Flax Facts #25 – Vulkan. 2019-04-16 [2020-07-26]. (原始內容存檔於2022-05-11).
- ^ Rage 2 Uses Just Cause Series' Engine Instead of idTech. Shacknews. [2019-05-31]. (原始內容存檔於2022-04-12) (英語).
- ^ Qualcomm and NetEase Announce Collaboration to Support Optimization of NetEase Games on Snapdragon 845 Flagship Mobile Platform. Qualcomm. 2017-12-07 [2019-08-03]. (原始內容存檔於2022-05-11) (英語).
- ^ GPUPerfStudio Vulkan Tools - AMD. AMD. [2017-03-17]. (原始內容存檔於2017-01-29) (美國英語).
- ^ gskvulkanrenderer.c - gtk+ - Multi-platform toolkit. git.gnome.org. [2017-03-17] (英語).
- ^ Vulkan 1.0 specification released with day-one support for Wayland. Collabora - Open Source Consulting. [2017-03-17]. (原始內容存檔於2016-06-24) (英語).
- ^ Vulkan Overview (PDF). Khronos Group. June 2015 [2015-08-18]. (原始內容 (PDF)存檔於2015-12-08). p. 19 "Vulkan Status"
- ^ Developers, Android. Low-overhead rendering with Vulkan - Android Developers Blog. Low-overhead rendering with Vulkan - Android Developers Blog. 2015-08-10 [2017-03-17]. (原始內容存檔於2016-03-08).
外部連結
編輯- Vulkan 1.0規範 (頁面存檔備份,存於互聯網檔案館)
- Vulkan硬件支援資料庫 (頁面存檔備份,存於互聯網檔案館)