Vulkan

出自Local Chinese Wikipedia
imported>小鵜2026年4月24日 (五) 12:58的修訂 growthexperiments-addlink-summary-summary:3|0|0
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
跳至導覽 跳至搜尋

頁面Module:Infobox/styles.css沒有內容。

Vulkan
File:Vulkan API logo.svg
File:Vulkaninfo screenshot.png
開發者科納斯組織,基於AMDMantle開發[1][2][3][4][5]
首次發布2016年2月16日,​10年前​(2016-02-16[6]
目前版本Template:Software version
作業系統AndroidLinuxTizenMicrosoft Windows[7][8]
平台跨平台
類型3D圖形與計算API[9]
網站www.vulkan.org
頁面Module:Infobox/styles.css沒有內容。

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

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

特性[編輯]

File:Division of labor cpu and gpu.svg
OpenGL與Vulkan都是圖形渲染API,GPU處理著色器,而CPU執行其他任務。

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

以下是Vulkan相對於上一代API的優勢:[21]

  • Vulkan API適用於從高效能電腦到移動低功耗裝置的顯示卡(OpenGL具有名為OpenGL ES的行動裝置API子集,它仍是支援Vulkan裝置的備選API)。
  • 相比於Direct3D 12,Vulkan與前身OpenGL類似,受多種作業系統支援。Vulkan已經能在Windows 7Windows 8Windows 10TizenLinuxAndroid上執行(iOSmacOS有第三方支援[22])。
  • 通過批次處理(Batching)減少CPU負載,使CPU可以執行更多其他的計算或渲染任務。[20][23]
  • 在多核心CPU上,Vulkan能對核心與執行緒進行最佳化。Direct3D 11與OpenGL 4最初為單核心CPU設計,儘管後來出現了針對多核心CPU最佳化的擴充,不過與Vulkan相比,最佳化仍不是很好。[24]
  • 減少了驅動程式的開銷與維護工作。OpenGL使用進階著色語言GLSL編寫著色器,不同的驅動在程式執行時需要執行自身的GLSL編譯器,將程式的著色器轉換為GPU可執行的機器碼。而Vulkan驅動將著色器語言預先轉化為package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found(Standard Portable Intermediate Representation)的中間二進制格式,其行為類似於Direct3DHLSL著色器。通過著色器預編譯,應用程式載入速度更快,並且3D場景可以使用更多種著色器。Vulkan驅動只需對GPU進行最佳化並生成代碼,這使得驅動程式更容易維護,驅動程式包更小(目前GPU供應商仍需在驅動程式中提供OpenGL與OpenCL的支援)。[25]
  • 計算與圖形處理的統一管理,因此Vulkan無需與單獨的計算API配合使用。

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

Vulkan 1.1[編輯]

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

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

vulkan 1.2[編輯]

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

Vulkan 1.3[編輯]

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

Vulkan 1.4[編輯]

2024年12月3日,科納斯組織發布Vulkan 1.4。[36]

計劃中的功能[編輯]

科納斯在SIGGRAPH 2016上宣布,Vulkan將提供類似於Direct3D 12的多卡互聯功能。[37]通過Vulkan,不同型號的顯示卡也能協同工作,而無需NVIDIA SLIAMD 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上,專案公之於世。[9]2015年2月19日,Vulkan的商標在美國專利及商標局提交。[44]

2015年早些時候,package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found(由Valve資助)開發並展示了一款支援Vulkan API的Intel HD Graphics 4000系列Linux驅動程式,不過當時的Mesa開源驅動並不完全相容OpenGL 4.0。[45][46]

2016年2月16日,科納斯組織發布了Vulkan 1.0版規範與開源軟體開發套件(SDK)。[6]

支援Vulkan的軟體[編輯]

電子遊戲[編輯]

遊戲引擎[編輯]

開發工具[編輯]

  • package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found 3.6,在Windows與Linux平台上支援Vulkan[72]
  • package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found,作為GTK+ 3.90的一個組件於2017年3月發布[73]

作業系統組件[編輯]

Vulkan視窗系統介面(Window System Interface,WSI)的作用類似於OpenGL ESpackage.lua第80行Lua錯誤:module 'Module:Ilh/data' not found[74]EGL能使OpenGL ES程式跟原生視窗系統相通,並控制package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found緩衝區繫結與渲染同步等。

相容性[編輯]

初版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第三方支援。[22]

參見[編輯]

  • OpenGL,科納斯組織的另一個圖形API
  • OpenCL,科納斯組織的一個異構計算框架
  • Mantle,AMD的底層圖形與計算API,Vulkan的前身
  • Direct3D,Windows和Xbox專有的圖形API
  • Metal,iOS和macOS的一個底層圖形與計算API

參考資料[編輯]

  1. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  2. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  3. 3.0 3.1 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  4. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  5. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  6. 6.0 6.1 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  7. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  8. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  9. 9.0 9.1 9.2 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  10. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  11. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  12. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  13. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  14. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  15. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  16. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  17. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  18. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  19. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  20. 20.0 20.1 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  21. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  22. 22.0 22.1 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  23. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  24. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  25. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  26. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  27. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  28. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  29. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  30. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  31. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  32. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  33. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  34. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  35. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  36. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  37. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  38. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  39. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  40. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  41. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  42. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  43. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  44. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  45. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  46. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  47. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  48. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  49. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  50. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  51. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  52. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  53. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  54. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  55. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  56. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  57. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  58. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  59. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  60. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  61. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  62. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  63. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  64. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  65. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  66. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  67. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  68. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  69. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  70. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  71. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  72. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  73. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  74. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
  75. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found p. 19 "Vulkan Status"
  76. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found

外部連結[編輯]

package.lua第80行Lua錯誤:module 'Module:Navbar/configuration' not found