Vulkan (API)

Vulkan是一個低开销、跨平台的二维、三维图形与计算的應用程式接口(API),[11]最早由科納斯組織在2015年游戏开发者大会(GDC)上發表。[12][13]OpenGL类似,Vulkan針對全平台即時3D图形程式(如電子遊戲交互媒体)而設計,并提供高效能与更均衡的CPUGPU占用,這也是Direct3D 12和AMDMantle的目標。与Direct3D(12版之前)和OpenGL的其他主要区别是,Vulkan是一个底层API,而且能执行并行任务。除此之外,Vulkan还能更好地分配多个CPU核心的使用。[14]

Vulkan
開發者科納斯組織,基于AMDMantle开发[1][2][3][4][5]
初始版本2016年2月16日2016-02-16[6]
穩定版本
1.2.170
(2021年2月15日2021-02-15[7]
源代码库
操作系统AndroidLinuxTizenMicrosoft Windows[8][9]
系統平台跨平台
类型3D图形与计算API[10]
网站khronos.org/Vulkan

科納斯最先把Vulkan API稱為「次世代OpenGL行動」(next generation OpenGL initiative)或「glNext」,但在正式宣佈Vulkan之後這些名字就沒有再使用了。[15]Vulkan基于Mantle构建,AMD将其Mantle API捐赠给科納斯組織,给予该组织开发底层API的基础,使其像OpenGL一样成为行业标准。[3][10][16][17][18][19][20]

特性

OpenGL与Vulkan都是图形渲染API,GPU处理着色器,而CPU执行其他任务。

Vulkan旨在提供更低的CPU开销与更直接的GPU控制,其理念大致与Direct3D 12和Mantle类似。[21]

以下是Vulkan相对于上一代API的优势:[22]

  • Vulkan API适用于从高性能电脑到移动低功耗设备的显示卡(OpenGL具有名为OpenGL ES的移动设备API子集,它仍是支持Vulkan设备的备选API)。
  • 相比于Direct3D 12,Vulkan与前身OpenGL类似,受多种操作系统支持。Vulkan已经能在Windows 7Windows 8Windows 10TizenLinuxAndroid上运行(iOSmacOS有第三方支持[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)的中间二进制格式,其行为类似于Direct3DHLSL着色器。通过着色器预编译,应用程序加载速度更快,并且3D场景可以使用更多种着色器。Vulkan驱动只需对GPU进行优化并生成代码,这使得驱动程序更容易维护,驱动程序包更小(目前GPU供应商仍需在驱动程序中提供OpenGL与OpenCL的支持)。[26]
  • 计算与图形处理的统一管理,因此Vulkan无需与单独的计算API配合使用。

英伟达指出,由於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之間的兼容層性能。

计划中的功能

科纳斯在SIGGRAPH 2016上宣布,Vulkan将提供类似于Direct3D 12的多卡互联功能。[36]通过Vulkan,不同型号的显卡也能协同工作,而无需NVIDIA SLIAMD Crossfire的支持。Vulkan多卡互联功能允许API在多个不同的显卡之间智能分配负载,例如,CPU上的集成显卡与高端独立显卡协同工作,能够略微提升显示性能。[37]

在OpenCL 2.2规范发布时,科纳斯宣布OpenCL将在未来融入Vulkan。[38][39]

历史

2014年6月,科纳斯组织开始了“次世代OpenGL”图形API的计划,并在Valve公司举行项目启动会议。[40]在SIGGRAPH 2014上,项目公之于世。[10]2015年2月19日,Vulkan的商标在美国专利及商标局提交。[41]

2015年早些时候,LunarG(由Valve资助)开发并展示了一款支持Vulkan API的Intel HD Graphics 4000系列Linux驱动程序,不过当时的Mesa开源驱动并不完全兼容OpenGL 4.0。[42][43]

2016年2月16日,科纳斯组织发布了Vulkan 1.0版规范与开源软件开发工具包(SDK)。[6]

支持Vulkan的软件

电子游戏

游戏引擎

  • Source 2——2015年3月由Valve公司发布[50][51]
  • Serious Engine 4——2016年2月,Croteam宣布支持Vulkan API[52]
  • 虚幻引擎4——2016年2月Epic Games在三星Galaxy S7 Unpack发布会上声明提供Vulkan支持[53][54]
  • Torque 3D——2016年4月,开发者社区宣称将提供Vulkan支持[55][56]
  • id Tech 3引擎——在2017年5月增加了對Vulkan的非正式支持[57]
  • id Tech 4引擎——在2017年8月添加了非官方的Vulkan支持[58]
  • id Tech 6——2016年5月id Software宣布运行于id Tech 6引擎的《毁灭战士》将支持Vulkan[59]
  • id Tech 7——僅在PC上使用Vulkan
  • Abyss Engine——2017年5月Deep Silver在Android上發佈了基於vulkan的浴火銀河3
  • Banshee 3D——支持Vulkan的免費開放源代碼跨平台遊戲引擎
  • CryEngine——Crytek计划提供支持[60]
  • Xenko——2016年7月加入支持[61]
  • Intrinsic——在GitHub上托管的开源跨平台游戏引擎[62]
  • Unity——2016年12月,Unity Technologies表示其Unity游戏引擎5.6版将支持Vulkan API;[63]2017年3月,Unity 5.6提供正式支持[64]
  • Roblox——自2017年3月起,Roblox支持Vulkan渲染
  • Rockstar高級遊戲引擎——除DirectX12外,還完全支持Vulkan
  • Godot——在2018年2月下旬,開發人員宣布將把重點改為使用OpenGL ES 2和Vulkan的組合。[65]
  • Flax Engine——於2019年4月添加Vulkan支持[66]
  • Apex Game Engine(來自雪崩工作室)——狂怒煉獄2改用Vulkan進行渲染[67]
  • Messiah Game Engine——網易高通合作,針對Vulkan優化[68]

开发工具

  • GPU PerfStudio 3.6,在Windows与Linux平台上支持Vulkan[69]
  • GTK+ Scene Graph Kit,作为GTK+ 3.90的一个组件于2017年3月发布[70]

操作系统组件

Vulkan视窗系统接口(Window System Interface,WSI)的作用类似于OpenGL ESEGL[71]EGL能使OpenGL ES程序跟原生视窗系统相通,并控制上下文管理缓冲器绑定与渲染同步等。

兼容性

初版Vulkan规范指出,Vulkan能在支持OpenGL ES 3.1或OpenGL 4.x及更高版本的显卡上运行。[72]但Vulkan API本身依赖于新版显卡驱动程序,而且并非所有符合Vulkan规范的显卡都能收到厂商提供的驱动程序更新。

2016年8月22日,Google发布的Android Nougat(Android 7.x)提供对Vulkan的支持。[73]

苹果公司没有对iOS和macOS提供官方Vulkan支持,而Molten公司开发的MoltenVK运行于苹果Metal API,提供Vulkan第三方支持。[23]

参见

  • OpenGL,科納斯組織的另一个图形API
  • OpenCL,科納斯組織的一个异构计算框架
  • Mantle,AMD的底层图形与计算API,Vulkan的前身
  • Direct3D,Windows和Xbox专有的图形API
  • Metal,iOS和macOS的一个底层图形与计算API

參考資料

  1. . 2015-03-04 [2015-03-30] (英语).
  2. Kirsch, Nathan. . Legit Reviews. [2015-06-25] (英语).
  3. Shilov, Anton. . KitGuru. [2015-06-26] (英语).
  4. Koduri, Raja. . AMD. 2015-03-04 [2015-05-19] (英语). ...(T)he Khronos Group has selected Mantle to serve as the foundation for Vulkan...
  5. Michaud, Scott. . PC Perspective. 2015-03-03 [2015-05-19] (英语).
  6. (英语).
  7. (英语).
  8. Bright, Peter; Walton, Mark. . United Kingdom: Ars Technica. 2016-02-16 [2016-02-18]. (原始内容存档于2016-02-17) (英国英语).
  9. Valich, Theo. . VR World. 2016-02-17 [2016-02-19] (英语).
  10. (PDF). Khronos Group: 10. [2015-06-27]. (原始内容 (PDF)存档于2016-08-11) (英语).
  11. . www.lunarg.com. [2017-02-17] (美国英语).
  12. (PDF). Khronos.org. March 2015 [2015-03-05]. (原始内容 (PDF)存档于2016-12-18).
  13. . Khronos.org. [2015-03-05].
  14. . ExtremeTech. 2015-03-10 [2017-02-17] (美国英语).
  15. . 2015-03-03 [2015-03-30]. (原始内容存档于2016-10-14) (英语).
  16. . PCWorld. [2017-02-17]. (原始内容存档于2016-11-07) (英语).
  17. . Community.amd.com. [2015-03-05]. (原始内容存档于2015-03-06).
  18. . ExtremeTech. [2015-03-05].
  19. . Wccftech.com. 2014-06-20 [2015-03-05]. (原始内容存档于2020-08-19).
  20. Kirsch, Nathan. . Legit Reviews. [2015-03-05].
  21. . Tom's Hardware. 2015-03-03 [2017-02-18] (英语).
  22. . fosdem.org. [2017-03-17] (英语).
  23. . Molten. [2017-02-18]. (原始内容存档于2018-01-05) (美国英语).
  24. . Imagination Technologies. 2015-11-05 [2017-02-18]. (原始内容存档于2015-11-09) (英国英语).
  25. . Imagination Technologies. 2015-11-24 [2017-02-18]. (原始内容存档于2015-11-26) (英国英语).
  26. Kessenich, John. (PDF). Khronos Group. [2017-02-18].
  27. . NVIDIA Developer. 2016-02-11 [2017-03-17] (英语).
  28. . AMD.
  29. . PC World.
  30. Smith, Daniel Williams, Ryan. . AnandTech.
  31. . The Khronos Group (新闻稿). 2018-03-07 [2018-03-21] (英语).
  32. Larabel, Michael. . Phoronix. September 19, 2018 [September 19, 2018].
  33. Larabel, Michael. . Phoronix. November 4, 2018 [November 4, 2018].
  34. Bright, Peter. . Ars Terchnica. March 7, 2018 [March 7, 2018].
  35. . The Khronos Group (新闻稿). 2020-01-15 [2020-02-27] (英语).
  36. . PCWorld. [2017-03-17] (英语).
  37. Smith, Daniel Williams, Ryan. . [2017-03-17].
  38. . www.pcper.com. [2017-06-05]. (原始内容存档于2017-11-01) (英语).
  39. 超能网. . [2017-06-05].
  40. The Khronos Group, , 2015-09-16 [2017-03-17]
  41. . tsdr.uspto.gov. [2017-03-17]. (原始内容存档于2013-05-11) (英语).
  42. . www.phoronix.com. [2017-03-17] (英语).
  43. . www.phoronix.com. [2017-03-17] (英语).
  44. Smith, Daniel Williams, Ryan. . [2017-03-17].
  45. . store.steampowered.com. [2017-03-17] (中文(中国大陆)‎).
  46. . Bethesda.net. [2017-03-17].
  47. https://www.ubisoft.com/zh-tw/game/rainbow-six/siege/news-updates/6VFn74oMO2nVQGZxvFhBb5/vulkan-api--pc-. 缺少或|title=为空 (帮助)
  48. . www.phoronix.com. [2017-03-17] (英语).
  49. . www.dsogaming.com. [2017-03-17] (美国英语).
  50. . Polygon. 2015-03-03 [2017-03-17]. (原始内容存档于2015-03-05).
  51. Mahardy, Mike. . IGN. 2015-03-03 [2017-03-17]. (原始内容存档于2015-03-04) (美国英语).
  52. . Croteam. 2016-02-05 [2017-03-17] (美国英语).
  53. . bit-tech. [2017-03-17] (英语).
  54. . www.unrealengine.com. [2017-03-17]. (原始内容存档于2016-08-10) (英语).
  55. . forums.torque3d.org. [2017-03-17] (英国英语).
  56. . reddit. [2017-03-17] (英语).
  57. Kharytoniuk, Artem, , 2019-05-16 [2019-05-16]
  58. . July 2018.
  59. . Twitter. [2017-03-17] (英语).
  60. . TweakTown. 2016-08-19 [2017-03-17] (美国英语).
  61. . xenko.com. [2017-03-17].
  62. . Intrinsic. [2017-03-17]. (原始内容存档于2016-10-27) (美国英语).
  63. . The Tech Report. [2017-03-17].
  64. . Unity Technologies Blog. [2017-03-17] (美国英语).
  65. Linietsky, Juan. . Godot. February 26, 2018 [March 7, 2018]. (原始内容存档于2020-06-17).
  66. . April 16, 2019.
  67. . Shacknews. [2019-05-31] (英语).
  68. . Qualcomm. 2017-12-07 [2019-08-03] (英语).
  69. . AMD. [2017-03-17]. (原始内容存档于2017-01-29) (美国英语).
  70. . git.gnome.org. [2017-03-17] (英语).
  71. . Collabora - Open Source Consulting. [2017-03-17] (英语).
  72. (PDF). Khronos Group. June 2015 [2015-08-18]. p. 19 "Vulkan Status"
  73. Developers, Android. . Low-overhead rendering with Vulkan - Android Developers Blog. 2015-08-10 [2017-03-17].

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.