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]
历史
2014年6月,科纳斯组织开始了“次世代OpenGL”图形API的计划,并在Valve公司举行项目启动会议。[41]在SIGGRAPH 2014上,项目公之于世。[10]2015年2月19日,Vulkan的商标在美国专利及商标局提交。[42]
2015年早些时候,LunarG(由Valve资助)开发并展示了一款支持Vulkan API的Intel HD Graphics 4000系列Linux驱动进程,不过当时的Mesa开源驱动并不完全兼容OpenGL 4.0。[43][44]
支持Vulkan的软件
电子游戏
- 《塔洛斯法则》——首个支持Vulkan渲染的游戏[45]
- 《Dota 2》——2016年5月开始支持[46]
- 《毁灭战士》——2016年7月开始支持[47]
- 《虹彩六号:围攻行动》——PC公开测试中[48]
- vkQuake——《雷神之锤》的Vulkan移植版,于2016年7月发布[49][50]
- 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公司发布[51][52]
- Serious Engine 4——2016年2月,Croteam宣布支持Vulkan API[53]
- 虚幻引擎4——2016年2月Epic Games在三星Galaxy S7 Unpack发布会上声明提供Vulkan支持[54][55]
- Torque 3D——2016年4月,开发者社区宣称将提供Vulkan支持[56][57]
- id Tech 3引擎——在2017年5月增加了对Vulkan的非正式支持[58]
- id Tech 4引擎——在2017年8月添加了非官方的Vulkan支持[59]
- id Tech 6——2016年5月id Software宣布运行于id Tech 6引擎的《毁灭战士》将支持Vulkan[60]
- id Tech 7——仅在PC上使用Vulkan
- Abyss Engine——2017年5月Deep Silver在Android上发布了基于vulkan的浴火银河3
- Banshee 3D——支持Vulkan的免费开放源代码跨平台游戏引擎
- CryEngine——Crytek计划提供支持[61]
- Xenko——2016年7月加入支持[62]
- Intrinsic——在GitHub上托管的开源跨平台游戏引擎[63]
- Unity——2016年12月,Unity Technologies表示其Unity游戏引擎5.6版将支持Vulkan API;[64]2017年3月,Unity 5.6提供正式支持[65]
- Roblox——自2017年3月起,Roblox支持Vulkan渲染
- Rockstar高级游戏引擎——除DirectX12外,还完全支持Vulkan
- Godot——在2018年2月下旬,开发人员宣布将把重点改为使用OpenGL ES 2和Vulkan的组合。[66]
- Flax Engine——于2019年4月添加Vulkan支持[67]
- Apex Game Engine(来自雪崩工作室)——狂怒炼狱2改用Vulkan进行渲染[68]
- Messiah Game Engine——网易与高通合作,针对Vulkan优化[69]
开发工具
兼容性
初版Vulkan规范指出,Vulkan能在支持OpenGL ES 3.1或OpenGL 4.x及更高版本的显卡上运行。[73]但Vulkan API本身依赖于新版显卡驱动进程,而且并非所有符合Vulkan规范的显卡都能收到厂商提供的驱动进程更新。
2016年8月22日,Google发布的Android Nougat(Android 7.x)提供对Vulkan的支持。[74]
苹果公司没有对iOS和macOS提供官方Vulkan支持,而Molten公司开发的MoltenVK运行于苹果Metal API,提供Vulkan第三方支持。[23]
参见
参考数据
- . 2015-03-04 [2015-03-30]. (原始内容存档于2016-04-22) (英语).
- Kirsch, Nathan. . Legit Reviews. [2015-06-25]. (原始内容存档于2015-06-26) (英语).
- Shilov, Anton. . KitGuru. [2015-06-26]. (原始内容存档于2015-06-26) (英语).
- Koduri, Raja. . 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. . PC Perspective. 2015-03-03 [2015-05-19]. (原始内容存档于2015-05-20) (英语).
- . [2017-02-10]. (原始内容存档于2017-12-15) (英语).
- . 2024年3月22日 [2024年3月26日].
- Bright, Peter; Walton, Mark. . United Kingdom: Ars Technica. 2016-02-16 [2016-02-18]. (原始内容存档于2016-02-17) (英国英语).
- Valich, Theo. . VR World. 2016-02-17 [2016-02-19]. (原始内容存档于2022-05-11) (英语).
- (PDF). Khronos Group: 10. [2015-06-27]. (原始内容 (PDF)存档于2016-08-11) (英语).
- . www.lunarg.com. [2017-02-17]. (原始内容存档于2019-05-02) (美国英语).
- (PDF). Khronos.org. March 2015 [2015-03-05]. (原始内容 (PDF)存档于2016-12-18).
- . Khronos.org. [2015-03-05]. (原始内容存档于2021-05-09).
- . ExtremeTech. 2015-03-10 [2017-02-17]. (原始内容存档于2015-03-13) (美国英语).
- . 2015-03-03 [2015-03-30]. (原始内容存档于2016-10-14) (英语).
- . PCWorld. [2017-02-17]. (原始内容存档于2016-11-07) (英语).
- . Community.amd.com. [2015-03-05]. (原始内容存档于2015-03-06).
- . ExtremeTech. [2015-03-05]. (原始内容存档于2016-04-22).
- . Wccftech.com. 2014-06-20 [2015-03-05]. (原始内容存档于2020-08-19).
- Kirsch, Nathan. . Legit Reviews. [2015-03-05]. (原始内容存档于2015-06-26).
- . Tom's Hardware. 2015-03-03 [2017-02-18] (英语).
- . Fosdem.org. [2017-03-17]. (原始内容存档于2016-03-09) (英语).
- . Molten. [2017-02-18]. (原始内容存档于2018-01-05) (美国英语).
- . Imagination Technologies. 2015-11-05 [2017-02-18]. (原始内容存档于2015-11-09) (英国英语).
- . Imagination Technologies. 2015-11-24 [2017-02-18]. (原始内容存档于2015-11-26) (英国英语).
- Kessenich, John. (PDF). Khronos Group. [2017-02-18]. (原始内容 (PDF)存档于2015-03-09).
- . NVIDIA Developer. 2016-02-11 [2017-03-17]. (原始内容存档于2020-04-25) (英语).
- . AMD. [2020-07-26]. (原始内容存档于2019-07-14).
- . PC World. [2017-03-17]. (原始内容存档于2018-12-06).
- Smith, Daniel Williams, Ryan. . AnandTech. [2017-03-17]. (原始内容存档于2022-04-22).
- . The Khronos Group (新闻稿). 2018-03-07 [2018-03-21]. (原始内容存档于2022-04-14) (英语).
- Larabel, Michael. . Phoronix. 2018-09-19 [2018-09-19]. (原始内容存档于2022-05-11).
- Larabel, Michael. . Phoronix. 2018-11-04 [2018-11-04]. (原始内容存档于2022-05-11).
- Bright, Peter. . Ars Terchnica. 2018-03-07 [2018-03-07]. (原始内容存档于2022-04-29).
- . The Khronos Group (新闻稿). 2020-01-15 [2020-02-27]. (原始内容存档于2022-05-11) (英语).
- . January 25, 2022 [2023-02-13]. (原始内容存档于2022-01-25).
- . PCWorld. [2017-03-17]. (原始内容存档于2018-12-06) (英语).
- Smith, Daniel Williams, Ryan. . [2017-03-17]. (原始内容存档于2022-04-22).
- . www.pcper.com. [2017-06-05]. (原始内容存档于2017-11-01) (英语).
- 超能网. . [2017-06-05]. (原始内容存档于2019-05-03).
- The Khronos Group, , 2015-09-16 [2017-03-17], (原始内容存档于2022-05-11)
- . tsdr.uspto.gov. [2017-03-17]. (原始内容存档于2013-05-11) (英语).
- . www.phoronix.com. [2017-03-17]. (原始内容存档于2022-05-11) (英语).
- . www.phoronix.com. [2017-03-17]. (原始内容存档于2021-04-17) (英语).
- Smith, Daniel Williams, Ryan. . [2017-03-17]. (原始内容存档于2022-05-15).
- . store.steampowered.com. [2017-03-17]. (原始内容存档于2020-11-08) (中文(中国大陆)).
- . Bethesda.net. [2017-03-17]. (原始内容存档于2022-05-11).
- . [2020-02-01]. (原始内容存档于2022-04-08).
- . www.phoronix.com. [2017-03-17]. (原始内容存档于2022-05-11) (英语).
- . www.dsogaming.com. [2017-03-17]. (原始内容存档于2022-04-12) (美国英语).
- . Polygon. 2015-03-03 [2017-03-17]. (原始内容存档于2015-03-05).
- Mahardy, Mike. . IGN. 2015-03-03 [2017-03-17]. (原始内容存档于2015-03-04) (美国英语).
- . Croteam. 2016-02-05 [2017-03-17]. (原始内容存档于2022-04-12) (美国英语).
- . bit-tech. [2017-03-17]. (原始内容存档于2017-01-19) (英语).
- . www.unrealengine.com. [2017-03-17]. (原始内容存档于2016-08-10) (英语).
- . forums.torque3d.org. [2017-03-17]. (原始内容存档于2021-03-18) (英国英语).
- . reddit. [2017-03-17]. (原始内容存档于2022-05-11) (英语).
- Kharytoniuk, Artem, , 2019-05-16 [2019-05-16], (原始内容存档于2022-05-11)
- . July 2018 [2020-07-26]. (原始内容存档于2022-05-11).
- . Twitter. [2017-03-17]. (原始内容存档于2022-05-11) (英语).
- . TweakTown. 2016-08-19 [2017-03-17]. (原始内容存档于2022-05-11) (美国英语).
- . xenko.com. [2017-03-17]. (原始内容存档于2019-06-23).
- . Intrinsic. [2017-03-17]. (原始内容存档于2016-10-27) (美国英语).
- . The Tech Report. [2017-03-17]. (原始内容存档于2021-09-12).
- . Unity Technologies Blog. [2017-03-17]. (原始内容存档于2021-04-20) (美国英语).
- Linietsky, Juan. . Godot. 2018-02-26 [2018-03-07]. (原始内容存档于2020-06-17).
- . 2019-04-16 [2020-07-26]. (原始内容存档于2022-05-11).
- . Shacknews. [2019-05-31]. (原始内容存档于2022-04-12) (英语).
- . Qualcomm. 2017-12-07 [2019-08-03]. (原始内容存档于2022-05-11) (英语).
- . AMD. [2017-03-17]. (原始内容存档于2017-01-29) (美国英语).
- . git.gnome.org. [2017-03-17] (英语).
- . Collabora - Open Source Consulting. [2017-03-17]. (原始内容存档于2016-06-24) (英语).
- (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. 2015-08-10 [2017-03-17]. (原始内容存档于2016-03-08).
外部链接
- Vulkan 1.0规范 (页面存档备份,存于)
- Vulkan硬件支持数据库 (页面存档备份,存于)