新闻中心

EEPW首页 > 消费电子 > 专题 > 用ARM Mali GPU驱动实现移动VR

用ARM Mali GPU驱动实现移动VR

作者:时间:2017-06-08来源:电子产品世界收藏

移动的性能要求

本文引用地址:http://www.eepw.com.cn/article/201706/360265.htm

  不是一个新话题,早在上世纪90年代就有提到,那时设备还比较贵,性能也不能满足比较好或者是让人可以接受的用户体验。在2014、2015年,重新热起来,市场上可以看到Oculus Rift、SONY的PlayStation VR以及HTC的Vive等,这些设备的价格都超过500美元。

  基于手机的VR也不断出现,像三星的Gear VR设备。可以看到随着手机处理器能力的增加,手机VR已经能够提供较好的用户体验了,同时传感器的技术也在不断跟进,另外,这类设备对功耗也有严格要求,需要控制在5W以内。

  M认为,移动产品形态是更容易被客户接受的产品形态。VR包括(增强现实)都能很好地拉动高端手机市场的应用场景,这类应用对性能的要求非常高,而且性能不只是来自于GPU,也来自于CPU,包括可能还需要摄像头的参与,所以VR/AR是全系统的运算方案。

  如图1,左侧为VR游戏的例子,可以看到在高端的VR游戏运算的情况下,需要很强的GPU、CPU处理能力,以及很强的系统设计,所以对整个硬件的要求是非常高的;右边是VR的360°视频播放的应用场景,它除了对GPU有要求以外,对视频编/解码器也有较高的要求,需要高分辨率,配合VR设备得到一个沉浸式的体验。

图1 VR游戏与VR 360°视频播放的比较

  因此,VR需要几个重点:

  第一点就是立体显示是如何实现的,通过我们左右眼的渲染,使左眼和右眼的图像通过角度的细微差别去得到这样一个立体的视觉效果(如图2),这对处理器的性能要求会翻番。

图2 左右眼的立体视觉效果需要CPU处理速度翻番

  还有一点是对头部动作的捕捉,这是通过一些传感器可以实现的。从VR的处理流程可以看到我们需要渲染左右眼两幅图像,这两幅图像通过人眼的位置对几何图形做了投影,再通过光学透镜看到在屏幕上显示的左右眼的两幅图像,处理过程中需要两倍的CPU处理,同时需要两倍几何顶点的处理能力,在最后显示的像素处理这块,它的性能要求也是在不断提升的。

  那么,如何得到一个好的VR体验?第一点是延时。延时可能是从系统来的,也可能是从传感器,到你的软件运行,再到硬件的加速……整个延时你需要控制得非常小,才可以得到较好的体验。我们现在的设备需要把延时控制在16ms,但是实际上在下一代我们看到的需求是在10ms以下。

  还有一点是高的帧率,现在的设备可能是在60Hz范围内,但是在未来的设备需要达到120Hz。

  在分辨率这块,高分辨率也是VR非常重要的需求。其实分辨率也是越高越好,目前我们看到的VR设备,1080p是一个门槛,大部分是在2K左右的分辨率,未来这个分辨率需要进一步的达到4K的量级。

  所以延时的挑战来自于VR全通道,可以从图3看到从一开始的传感器的数据处理,再到应用层面(注:可能是UI或者是VR的应用),再到API的驱动,再到你的渲染,到后面的缓存机制,包括双缓存到三缓存,以及最后显示到屏幕顶上。ARM现在要做的就是和GPU相关的,也就是图2右侧蓝色框内的部分,以把这部分的延迟降到最低。

图3 可能发生延迟的部分

用Mali实现VR/AR体验

VR体验

  ARM很早就在参与VR产业了,ARM GPU是在2013年,也就是三星的Gear就已经作为硬件的加速单元做了这样的产品。

  第二点就是ARM基于VR技术也做了很多的贡献,第一就是之前提到的ARM GPU的多核的可扩展的设计,能够更好地支持不同的VR运算的要求。第二点是在OpenGL ES和OpenEGL这块有很多的扩展,去减小延时。

  第三是之前提到的4倍全屏抗锯齿或者是全屏反走样功能,可以更好地减少体验上的不足。

  第四点就是AFBC(ARM Frame Buffer Compression)的技术,该技术是在全系统减少系统带宽,可以节省功耗,同时也能够增加整体的性能表现。

  ARM和Google在Daydream platform也有非常近的合作。

  这里再强调ARM AFBC技术。UI的带宽节省可以到50%。GFXBench的带宽节省可以达到46%的量级。

  VR在应用场景里面也是要求各种各样IP的支持,在video这一块,在VR这个场景底下也是有很多应用的方式,比如360°的VR场景的视频应用。ARM video IP也是可以支持多种编码以及解码的功能的,可以支持2K到4K高清的内容的解码。

AR体验

  回到AR的应用场景,其实AR的应用场景的计算要求和VR非常像,无论从性能上,还是从低延迟的要求来看,但是AR应用是需要非常强的各种处理模块的互动的,包括CPU、GPU以及display的IP在里面的。ARM是通过异构运算(图4),通过内存的一致性,能够把所有的运算单元组合在一起,能够提供一个最好的对AR加速的计算平台。

图4 通过异构运算实现AR

Mali VR的外部支持

  第一个是multiview(多画面)的渲染的能力。首先VR是需要左右眼两个画面做渲染的,可能需要两个draw-call实现这样的功能,通过multiview这样一个扩展的支持,我们可以通过单个的draw-call实现这两个应用场景的渲染,可以极大程度上降低CPU的应用负载。

  第二个扩展是Context Priority(内容上下文优先)的扩展。它的功能主要是现在我们在VR处理的时候需要60帧、90帧甚至120帧这样一个高的屏幕刷新率,在处理的时候,如果这个场景过于复杂,我没有办法满足这样一个刷新率的情况下,我可以通过对前一帧的后处理,去补足当前没有处理到的这一帧,能够得到更好的体验效果。

  ARM这个地方是我们的一个技术贡献,它叫视网膜中央凹渲染。它可以用到前文提到的multiview(多画面)渲染技术。如图5,中间部分是人最关注的,我们人眼在看的时候最关注的是一个场景中间的,或者是你眼球中心这块,视网膜也是分辨率最高的部分,因此我们可以把这部分渲染得更精细,但是它周围的人眼不关注的地方,可以把它渲染得没有那么精细,这样可以把性能完全发挥出来,得到一个更好的VR性能表现,因为整体的负载相比你全渲染整幅图而言,你是有一个节省的,这部分节省就可以体现在你的VR的性能上。

图5 视网膜中央凹渲染示例

  Mali VR SDK是免费的,之前ARM提到的很多技术,包括扩展及其实现,都可以从这个SDK里面找到,这样可以使我们开发者很容易在开发者项应用的时候用到这样一些新的技术。

  另外,Enlighten(全局光照)技术对于VR的用户体验来讲是一个非常重要的技术。Enlighten是一个非常好的能够实现高效的全局光照的技术实现,前面提到我们VR在挑战上是非常多的,比如刷新率低延时以及GPU这块很重的负载,从光照这个角度来看,通过引入Enlighten,我们可以只计算一次,去渲染两次,这样可以很大程度上降低这样一个负载。



关键词: VR AR

评论


相关推荐

技术专区

关闭