Vulkan是什么?

Vulkan是什么?

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)的中间二进制格式,其行为类似于Direct3D的HLSL着色器。通过着色器预编译,应用程序加载速度更快,并且3D场景可以使用更多种着色器。Vulkan驱动只需对GPU进行优化并生成代码,这使得驱动程序更容易维护,驱动程序包更小(目前GPU供应商仍需在驱动程序中提供OpenGL与OpenCL的支持)。
  • 计算与图形处理的统一管理,因此Vulkan无需与单独的计算API配合使用。

英伟达指出,由于OpenGL的复杂度和维护难度比Vulkan低很多,在多数情况下也能提供理想的整体性能,现阶段OpenGL仍是个很好的选择。AMD表示, Vulkan支持Close-To-Metal控制的独特能力可加快跨 Windows和 Linux的性能并且提高影像质量。现今无其他图形 API 提供如此强大的操作系统兼容性、成像功能和硬件效率组合。例如,CPU中包含的集成GPU可与高端专用GPU结合使用,以略微提高性能。