跳转到内容

Vulkan:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
Kazushim留言 | 贡献
简介、版本 更新
Kazushim留言 | 贡献
添加特性 另见
标签加入博客链接 检查外部链接 增加广告宣传内容 2017年版源代码编辑 添加文件 image 圖像檢查
第18行: 第18行:


与[[OpenGL]]类似,Vulkan針對全平台即時3D程式(如[[電子遊戲]]和[[互動式多媒體|交互媒体]])設計,并提供高效能与更均衡的CPU/GPU使用,這也是[[Direct3D]] 12和[[AMD]]的[[Mantle (API)|Mantle]]的目標。与Direct3D(12版之前)和OpenGL的其他主要区别是,Vulkan是一个底层API,并且能执行并行任务。除此之外,Vulkan还能更好地分配[[多核心處理器|多个CPU核心]]的使用。<ref>{{Cite news|url=http://www.extremetech.com/gaming/200836-next-generation-vulkan-api-could-be-valves-killer-advantage-in-battling-microsoft|title=Next-generation Vulkan API could be Valve's killer advantage in battling Microsoft - ExtremeTech|date=2015-03-10|newspaper=ExtremeTech|accessdate=2017-02-17|language=en-US}}</ref>
与[[OpenGL]]类似,Vulkan針對全平台即時3D程式(如[[電子遊戲]]和[[互動式多媒體|交互媒体]])設計,并提供高效能与更均衡的CPU/GPU使用,這也是[[Direct3D]] 12和[[AMD]]的[[Mantle (API)|Mantle]]的目標。与Direct3D(12版之前)和OpenGL的其他主要区别是,Vulkan是一个底层API,并且能执行并行任务。除此之外,Vulkan还能更好地分配[[多核心處理器|多个CPU核心]]的使用。<ref>{{Cite news|url=http://www.extremetech.com/gaming/200836-next-generation-vulkan-api-could-be-valves-killer-advantage-in-battling-microsoft|title=Next-generation Vulkan API could be Valve's killer advantage in battling Microsoft - ExtremeTech|date=2015-03-10|newspaper=ExtremeTech|accessdate=2017-02-17|language=en-US}}</ref>

== 特性 ==
[[File:Division of labor cpu and gpu.svg|缩略图|OpenGL与Vulkan都是执行图形渲染任务的API,GPU处理[[着色器]],而CPU执行其他的一切任务。]]
Vulkan旨在提供其他API缺少的优势特性,例如更低的CPU开销与更直接的GPU控制,大体与Direct3D 12和Mantle类似。<ref name=":0" />

以下是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]]有第三方支持<ref>{{Cite news|url=https://moltengl.com/moltenvk/|title=MoltenVK {{!}} Run Vulkan on iOS and OS X|newspaper=Molten|accessdate=2017-02-18|language=en-US}}</ref>)。
* 降低了驱动程序的开销和CPU负载。<ref>{{Cite news|url=http://www.tomshardware.com/news/khronos-group-vulkan-graphics-api,28678.html|title=Khronos Group Announces The Next-Generation 'Vulkan' Graphics And Compute API|date=2015-03-03|newspaper=Tom's Hardware|accessdate=2017-02-18|language=en}}</ref>
* 通过批量处理(Batching)减少CPU负载,使CPU可以自由地执行更多计算或者渲染任务。<ref>{{Cite news|url=http://blog.imgtec.com/powervr/vulkan-high-efficiency-on-mobile|title=Vulkan: High efficiency on mobile - Imagination Technologies|date=2015-11-05|newspaper=Imagination Technologies|accessdate=2017-02-18|language=en-GB}}</ref>
* 在多核心CPU上更好地将任务分配到多个线程。Direct3D 11和OpenGL 4最初为单核心CPU设计,后来出现了优化多核心处理的扩展,不过即使开发者使用该扩展,API对多核心CPU的优化通常也不会很好。<ref>{{Cite news|url=http://blog.imgtec.com/powervr/vulkan-scaling-to-multiple-threads|title=Vulkan: Scaling to multiple threads - Imagination Technologies|date=2015-11-24|newspaper=Imagination Technologies|accessdate=2017-02-18|language=en-GB}}</ref>
* 对驱动程序的友好性。OpenGL使用高级语言[[GLSL]]编写[[着色器]],这使得不同的OpenGL驱动要在程序运行时执行自身特定的GLSL编译器,将程序的着色器转换为GPU可执行的机器代码。而Vulkan驱动将着色器语言预先转化为[[SPIR-V]](Standard Portable Intermediate Representation)的中间二进制格式,类似于[[Direct3D]]中[[HLSL]]着色器编译的二进制格式。通过着色器预编译,应用程序加载速度提高,并且每个场景可以使用更多种类的着色器。Vulkan驱动只需要做对GPU特定的优化与生成代码,这使得驱动程序更容易维护,驱动程序包更小(目前GPU供应商仍需包括OpenGL和OpenCL的支持)。<ref>{{cite web|url=https://www.khronos.org/registry/spir-v/papers/WhitePaper.pdf|title=An Introduction to SPIR-V|accessdate=2017-02-18|author=|date=|last=Kessenich|first=John|publisher=[[Khronos Group]]}}</ref>
* 计算与图形处理的统一管理,无需与单独的计算API配合使用。

== 另见 ==
* [[OpenGL]],科納斯組織的另一个图形API
* [[OpenCL]],科納斯組織的一个[[异构计算]]框架
* [[Mantle (API)|Mantle]],AMD的底层图形与计算API,Vulkan的基础
* [[Direct3D]],Windows和Xbox独有的图形API
* [[Metal (API)|Metal]],iOS和macOS的一个底层图形与计算API


==參考資料==
==參考資料==
{{reflist}}
{{reflist|2}}


{{Khronos Group standards}}
{{Khronos Group standards}}

2017年2月18日 (六) 04:09的版本

Vulkan
開發者科納斯組織,基于AMDMantle开发[1]
首次发布2016年2月16日,​8年前​(2016-02-16[2]
当前版本1.0.40(2017年2月11日,​7年前​(2017-02-11[3]
源代码库 編輯維基數據鏈接
操作系统AndroidLinuxTizenMicrosoft Windows[4][5]
平台跨平台
类型3D图形与计算API
许可协议 編輯維基數據鏈接
网站khronos.org/Vulkan

Vulkan是一個低CPU开销、跨平台的2D和3D繪圖与计算的應用程式介面(API),[6]最早由科納斯組織在2015年遊戲開發者大會(GDC)上發表。[7][8]科納斯最先把Vulkan API稱為「次世代OpenGL行動」(next generation OpenGL initiative)或「glNext」,但在正式宣佈Vulkan之後這些名字就沒有再使用了。[9]Vulkan基于Mantle而构建,这是由于AMD将Mantle API捐赠给科納斯組織,给予该组织开发底层API的基础,使其成为行业标准。[10][11][12][13][14]

OpenGL类似,Vulkan針對全平台即時3D程式(如電子遊戲交互媒体)設計,并提供高效能与更均衡的CPU/GPU使用,這也是Direct3D 12和AMDMantle的目標。与Direct3D(12版之前)和OpenGL的其他主要区别是,Vulkan是一个底层API,并且能执行并行任务。除此之外,Vulkan还能更好地分配多个CPU核心的使用。[15]

特性

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

Vulkan旨在提供其他API缺少的优势特性,例如更低的CPU开销与更直接的GPU控制,大体与Direct3D 12和Mantle类似。[16]

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

  • Vulkan API适合高端显示卡,也是移动设备的图形解决方案(OpenGL具有名为OpenGL ES的移动设备API子集,它仍是支持Vulkan设备的备选API)。
  • 相比于Direct3D 12,Vulkan与前身OpenGL类似,受多种系统支持。自发布起,Vulkan能在Windows 7Windows 8Windows 10TizenLinuxAndroid上运行(iOSmacOS有第三方支持[17])。
  • 降低了驱动程序的开销和CPU负载。[18]
  • 通过批量处理(Batching)减少CPU负载,使CPU可以自由地执行更多计算或者渲染任务。[19]
  • 在多核心CPU上更好地将任务分配到多个线程。Direct3D 11和OpenGL 4最初为单核心CPU设计,后来出现了优化多核心处理的扩展,不过即使开发者使用该扩展,API对多核心CPU的优化通常也不会很好。[20]
  • 对驱动程序的友好性。OpenGL使用高级语言GLSL编写着色器,这使得不同的OpenGL驱动要在程序运行时执行自身特定的GLSL编译器,将程序的着色器转换为GPU可执行的机器代码。而Vulkan驱动将着色器语言预先转化为SPIR-V(Standard Portable Intermediate Representation)的中间二进制格式,类似于Direct3DHLSL着色器编译的二进制格式。通过着色器预编译,应用程序加载速度提高,并且每个场景可以使用更多种类的着色器。Vulkan驱动只需要做对GPU特定的优化与生成代码,这使得驱动程序更容易维护,驱动程序包更小(目前GPU供应商仍需包括OpenGL和OpenCL的支持)。[21]
  • 计算与图形处理的统一管理,无需与单独的计算API配合使用。

另见

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

參考資料

  1. ^ Not dead yet: AMD’s Mantle powers new Vulkan API, VR efforts. 2015-03-04 [2015-03-30]. 
  2. ^ Khronos Releases Vulkan 1.0 Specification - Khronos Group Press Release. 
  3. ^ https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html
  4. ^ Bright, Peter; Walton, Mark. Vulkan now official, with 1.0 API release and AMD driver [Updated]. United Kingdom: Ars Technica. 16 February 2016 [18 February 2016]. 
  5. ^ Valich, Theo. Mantle Cycle is Complete as Khronos Releases Vulkan 1.0. VR World. 17 February 2016 [19 February 2016]. 
  6. ^ Does Vulkan support 2D graphics? - LunarG. www.lunarg.com. [2017-02-17] (美国英语). 
  7. ^ Vulkan : Graphics and compute Belong Together (PDF). Khronos.org. March 2015 [2015-03-05]. 
  8. ^ Vulkan - Graphics and compute belong together. Khronos.org. [2015-03-05]. 
  9. ^ glNext revealed as Vulkan graphics API. 2015-03-03 [2015-03-30]. 
  10. ^ Mantle is a Vulkan: AMD's dead graphics API rises from the ashes in OpenGL's successor. PCWorld. [2017-02-17] (英语). 
  11. ^ AMD Gaming: One of Mantle's Futures: Vulkan | AMD Blogs. Community.amd.com. [2015-03-05]. 
  12. ^ Not dead yet: AMD’s Mantle powers new Vulkan API, VR efforts. ExtremeTech. [2015-03-05]. 
  13. ^ AMD's Mantle Lives On In Vulkan - Lays The Foundation For The Next OpenGL. Wccftech.com. 2014-06-20 [2015-03-05]. 
  14. ^ Kirsch, Nathan. Is AMD Mantle Dead As We Have Known It? Vulcan API Uses Mantle Technology for OpenGL. Legit Reviews. [2015-03-05]. 
  15. ^ Next-generation Vulkan API could be Valve's killer advantage in battling Microsoft - ExtremeTech. ExtremeTech. 2015-03-10 [2017-02-17] (美国英语). 
  16. ^ 引用错误:没有为名为:0的参考文献提供内容
  17. ^ MoltenVK | Run Vulkan on iOS and OS X. Molten. [2017-02-18] (美国英语). 
  18. ^ Khronos Group Announces The Next-Generation 'Vulkan' Graphics And Compute API. Tom's Hardware. 2015-03-03 [2017-02-18] (英语). 
  19. ^ Vulkan: High efficiency on mobile - Imagination Technologies. Imagination Technologies. 2015-11-05 [2017-02-18] (英国英语). 
  20. ^ Vulkan: Scaling to multiple threads - Imagination Technologies. Imagination Technologies. 2015-11-24 [2017-02-18] (英国英语). 
  21. ^ Kessenich, John. An Introduction to SPIR-V (PDF). Khronos Group. [2017-02-18].