Vulkan

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）（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結合使用，以略微提高性能。 科納斯在SIGGRAPH2016上宣布Vulkan將支持自動多GPU功能,類似於Direct3D 12所提供的功能 ,顯示驅動程序不再需要處理多個GPU的使用,相反，兩個或更多完全不同的GPU之間可以智能地分配工作負載。 科納斯於2018年3月7日發布了Vulkan 1.1 。它擴展了幾個核心功能，包括子集操作，例如多視圖、設備組、高級渲染和編輯操作程序跨流程API交互操作。這些核心功能還包括16位內存獲取高級計算，HLSL內存分佈支持，視頻流的顯示，處理和編程，通過許多視頻編輯解碼器生成的YCbcRr顏色格式化紋理的直接抽樣。同時，它還帶來了與DirectX 12的更好兼容性，顯式支持多GPU，光線跟踪支持，為下一代GPU奠定了基礎。 2020年1月15日，科納斯組織發布了Vulkan 1.2，將23個已經通過驗證的擴展集成到基本Vulkan標準中，大部份用來幫助提升Vulkan與其他圖形API之間的兼容層性能。 2022年1月25日，科納斯組織发布了Vulkan 1.3。 这次更新将另外23个常用的成熟的Vulkan扩展集成到基本的Vulkan标准中。 科纳斯在SIGGRAPH 2016上宣布，Vulkan将提供类似于Direct3D 12的多卡互联功能。通过Vulkan，不同型号的显卡也能协同工作，而无需NVIDIA SLI或AMD Crossfire的支持。Vulkan多卡互联功能允许API在多个不同的显卡之间智能分配负载，例如，CPU上的集成显卡与高端独立显卡协同工作，能够略微提升显示性能。 在2017年5月发行OpenCL 2.2之时，Khronos Group宣布OpenCL将尽可能的汇合于Vulkan，以确使OpenCL软件在这两种API上灵活部署。这已经由Adobe的Premiere Rush展示出来，它使用clspv开源编译器，编译了大量OpenCL C内核代码，从而在部署于Android的Vulkan运行时系统上运行。 2014年6月，科纳斯组织开始了“次世代OpenGL”图形API的计划，并在Valve公司举行项目启动会议。在SIGGRAPH 2014上，项目公之于世。2015年2月19日，Vulkan的商标在美国专利及商标局提交。 2015年早些时候，LunarG（英语：LunarG）（由Valve资助）开发并展示了一款支持Vulkan API的Intel HD Graphics 4000系列Linux驱动程序，不过当时的Mesa开源驱动并不完全兼容OpenGL 4.0。 2016年2月16日，科纳斯组织发布了Vulkan 1.0版规范与开源软件开发工具包（SDK）。 《塔洛斯法则》——首个支持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（英语：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 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（英语：GPU PerfStudio） 3.6，在Windows与Linux平台上支持Vulkan GTK+ Scene Graph Kit（英语：GTK+ Scene Graph Kit），作为GTK+ 3.90的一个组件于2017年3月发布 Vulkan视窗系统接口（Window System Interface，WSI）的作用类似于OpenGL ES的EGL（英语：EGL）。EGL能使OpenGL ES程序跟原生视窗系统相通，并控制上下文管理（英语：Context management）、缓冲器绑定与渲染同步等。 初版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 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） （英语）.  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） （英语）.  Khronos Releases Vulkan 1.0 Specification - Khronos Group Press Release. [2017-02-10]. （原始内容存档于2017-12-15） （英语）.  Release 1.3.297. 2024年10月4日 [2024年10月7日].  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） （英语）.  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）.  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） （英语）.  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硬件支持数据库 （页面存档备份，存于互联网档案馆）