Vulkan API图形应用接口介绍和展望
农步祥 于 2016.05.19 00:40:50 | 源自:www.soomal.com | 版权:原创 | 平均/总评分:09.50/171
  • 2016年2月16日,Khronos Group发布了Vulkan API的首个正式版本。从此,数字图形技术产业诞生了一个真正意义上能与OpenGL、Direct3D分庭抗礼的全新图形接口项目。 而2016年4月,Google在第二个Android N的开发预览版中正式加入了Vulkan的支持,什么是Vulkan?它的技术优势何在?本文通过维基百科英文版的Vulkan API介绍页面[中文版维基介绍仅一句话]的主要部分进行翻译,并简单介绍Vulkan的技术特点和优势。

    什么是Vulkan

    Vulkan最早是2015年由Khronos Group发布的一个低负载、多平台3D图形和运算API接口,当时被称为下一代OpenGL项目[glNext],但在这一名字发布后项目就被中止。目前的Vulkan API是由AMD资助Khronos,基于AMD的Mantle API重新进行构建和开发的低级图形接口,目标是成为类似OpenGL那样的跨行业标准。

    Vulkan针对高性能的实时3D应用,如跨平台的各类3D游戏和交互软件,并提供更好的性能和更低的CPU占用率[类似Mantle和DirectX12],而且在多核CPU协同负载运行更加优秀。

    Vulkan的特点

    Vulkan的目的是全面优于OpenGL等老的API。提供更低的运行开销、更直接的GPU控制,和较低的CPU使用率。它的优点包括:

    减少了驱动的开销,降低CPU的运行负担。

    通过批处理方式减少CPU的负担,将CPU从额外的运算和渲染中解放出来去执行别的任务。

    为当前市面主流的多核心处理器工作更智能和均衡,以往的DirectX11或openGL最初是为单核CPU设计,无法轻易地将工作负载均衡扩展,导致了一些处理器核心在工作的时候而另一些核心处于完全闲置状态,造成了性能缺陷和瓶颈。

    OpenGL使用高级语言GLSL[OpenGL Shading Language,OpenGL着色语言,常用于OpenGL的3D实时渲染的高级特效,如体积光、光线遮蔽阴影等效果——译者注]编写的着色器,它迫使每个OpenGL驱动必须为了GLSL运行自己的编译器将运行的程序解释成目标平台的可执行代码。而Vulkan提供了一种被成为SPIR-V[Standard Portable Intermediate Representation,轻量化标准中间件]的二进制中间层格式,类似于HLSL[High-Level Shading Language,高级着色语言,在DirectX中的作用类似GLSL]着色器在DirectX中被编译的二进制代码。它减轻了显卡驱动方的负担,着色器可预编译,并允许程序开发者使用GLSL以外的语言编写着色器。

    将计算核心和图形着色渲染统一管理,无需使用单独的计算API和图形API进行连接。

    为移动设备和高端显卡提供跨平台的API接口支持。

    API的系统无关性提高了应用的可移植性。
    OpenGL Vulkan
    一个单一的全局状态设备 无全局状态的基于对象标准
    状态由单一的内容进行连接 所有的状态概念都定位于命令缓冲区
    GPU内存和同步工作通常被隐藏 显式的内存管理和同步控制
    大量的错误检测 Vulkan驱动无错误检测

    软件支持

  • 在游戏方面,2016年5月最新上市的知名游戏《Doom》[《毁灭战士》]提供了Vulkan的支持,并获得了巨大的性能提升。Epic开发的Unreal Engine 4[虚幻4]引擎和Valve的Source 2也即将支持Vulkan。

    Vulkan提供了图形系统界面的处理接口,而Android N开始全面支持Vulkan。苹果并没有考虑加入相关支持,但有应用开发商考虑为iOS编写基于Metal的Vulkan API第三方兼容接口。

    硬件支持

    由于Vulkan API需要显卡厂商提供驱动支持,因此用户设备是否支持Vulkan取决于厂商提供的驱动。

    厂商 硬件

    Vulkan1.0支持

    AMD GCN系列架构的设备[独显、APU、PS4和XBOX1主机等]、Polaris Windows、Ubuntu
    nVIDIA Kepler、Maxwell、Pascal架构的显卡或Tegra X1等移动处理器 Linux\Windows\Android
    英特尔 仅Skylake系列处理器[6000系列的i3/i5/i7] 仅测试版驱动支持
    Imagination
    Technologies
    PowerVR 6系列及更新型号 全平台支持
    高通 Adreno 400和500系列 全平台支持
    ARM Mali Midgard1-4 全平台支持

    总结和前景评价

  • 尽管AMD的硬件市场表现不怎么好,但从非经济因素看,其推行的技术理念已经成为了赢家,无论是Vulkan或微软DirectX12的3D图形单元接口,实际上都基于AMD Mantle的技术平台发展而来,已经成为下一代3D图形和通用计算的标准。除英特尔以外几乎所有主流GPU厂商在Vulkan正式发布后提供了支持。

    而AMD的老冤家nVIDIA也在第一时间为旗下显卡提供了Vulkan的驱动支持,其重视程度甚至远大于AMD和其它厂商。或许很多人不解,以nVIDIA的PhysX、CUDA等技术储备,为何不自立门户与其竞争?很大原因是AMD的眼光确实更独到,从Havok到Vulkan,更多的是提供了开发者级别的底层支持,而并不是局限在自身的显卡支持上,这与AMD同时是CPU和GPU厂商有很大的关联。nVIDIA PhysX发展多年更多的优势在于一些游戏应用层上能便捷地提供额外的效果,例如纸屑飞舞、毛发、枪口火焰这种看起来简单实现困难的细节上,实际上许多技术并不是竞争关系,而是完全可以并存。而CUDA的通用性一贯较差,难以大范围的商业推广。

    以Mantle为代表的新一代图形接口的性能表现确实非常抢眼,原生支持Mantle、Vulkan和DirectX12的游戏,尽管不一定会带来决定性的性能提升,也无法让入门的集显核显能瞬间媲美高端独显,但CPU负载明显更低,图形效率更加出色。对于急切想体现其自身绝对技术优势的图形单元领域,尤其是nVIDIA Pascal、AMD Polaris等新工艺架构的图形单元即将发布上市之际,nVIDIA和AMD自然会站在最前线。对于移动设备来说,由于半导体工艺和硬件架构发展已经接近极限,任何一点的系统级效率和性能提升都是必须的,因此高通、ARM等企业同样非常重视。相对来说,Vulkan的优点和英特尔优势硬件和应用关联没有前面谈及的厂商那么紧密,其跟进自然也不会很积极。

    诞生于旧时代的OpenGL,虽然也增加了大量改进,如OpenGL ES等,但这个接口过于古老、繁杂,已经成为了很明显的瓶颈。随着主机、PC游戏技术水平的进步,3D游戏画面也越来越出色或逼真,移动游戏画面的水平也在水涨船高,但OpenGL尤其是GLSL的效率太低,在常规移动应用上几乎是无法实现的级别,景深、体积光和环境光等对游戏图像带来立竿见影提升的效果无法出现在手游上。同时对于画面速度要求快越好的VR应用来说,OpenGL的效率已经不够用。OpenGL的效率低下也祸及了Android和iOS等移动操作系统的图形界面运行速度,一个看起简单的动画或半透明渐变缩放等效果,被拆解成大量的OpenGL指令并等待缓冲,这些无关紧要的步骤成为了手机CPU运行负担最重的时刻,随着1080p甚至2K级别分辨率成为手机和平板设备的主流,大量的像素数据和CPU处理已经让设备不堪重负。

    但Vulkan也不是完美到能让所有开发者都能马上急于转型,无视错误无回馈的运行机制如同黑洞,显然极不适合刚入门的初级开发者和新手级序员,它更适合有经验和更有实力的软件开发商,以及更重视性能的应用场合。大量的现有移动应用和游戏开发资源仍是是针对OpenGL进行设计[如著名的Unity],并不是所有厂商和用户都急切需要高性能,Android更不可能为了Vulkan而砍掉OpenGL支持。而Vulkan的普及,也会急速加剧应用开发水平的两极分化——画面酷炫、效果出色的应用比起画面简单的应用反而是硬件利用效率更高的那个。随着GPGPU通用计算的广泛和深入,目前许多手机应用如拍照、视频录制和解码播放、3D游戏和VR、AR等交互应用中也会通过高效的GPU运算提升性能使用体验,普通用户并不需要了解其中的技术细节,也能切身体会到新技术给我们带来的好处。

  • 请评分
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    提示
    本贴不可匿名回复,回复等级为:1 ,您现在正处在潜水状态
    回复
    验证码
    3386 为防止广告机贴垃圾,不得已而为之
    表情
    正文