Mali GPU- 抽象机器(二) – 基于区块的渲染_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、mali gpu: 抽象机器(二) 基于区块的渲染定义一台抽象机器,用于描述 mali gpu和驱动程序软件对应用程序可见的行为。此机器的用意是为开发人员提供 opengl es api 下好玩行为的一个心智模型,而这反过来也可用于说明影响其应用程序性能的问题。我在本系列后面几篇博文中继续用法这一模型,探讨开发人员在开发图形应用程序不时常碰到的一些性能缺口。这篇博文将继续开发这台抽象机器,探讨 mali gpu系列基于区块的渲染模型。你应当已经阅读了关于管线化的第一篇博文;假如还没有,建议你先读一下。“传统”方式在传统的主线驱动型桌面 gpu 架构中 通常称为挺直模式架构 片段着色器根据挨次在

2、每一绘制调用、每一原语上执行。每一原语渲染结束后再开头下一个,其利用类似于如下所示的算法:1. foreach( primitive )2. foreach( fragment )3. render fragment因为流中的任何三角形可能会笼罩屏幕的任何部分,由这些渲染器维护的数据工作集将会很大;通常起码包含全屏尺寸色彩缓冲、深度缓冲,还可能包含模板缓冲。现代设备的典型工作集是 32 位/像素 (bpp) 色彩,以及 32 bpp 封装的深度/模板。因此,1080p 显示屏拥有一个 16mb 工作集,而 4k2k 电视机则有一个 64mb 工作集。因为其大小缘由,这些工作缓冲必需存储在芯片外

3、的 dram 中。每一次混合、深度测试和模板测试运算都需要从这一工作集中猎取当前片段像素坐标的数据值。被着色的全部片段通常会接触到这一工作集,因此在高清显示中,置于这一内存上的带宽负载可能会特殊高,每一片段也都有多个读-改-写运算,尽管缓存可能会稍稍缓减这一问题。这一对高带宽存取的需求反过来推进了对具备许多针脚的宽内存接口和专用高频率内存的需求,这两者都会造成能耗特殊密集的外部内存拜访。mali 方式mali gpu 系列采纳十分不同的方式,通常称为基于区块的的渲染,其设计宗旨是竭力削减渲染期间所需的功耗巨大的外部内存拜访。如本系列第一篇博文中所述,mali 对每一渲染目标用法独特的两步骤渲染

4、算法。它首先执行所有的几何处理,然后执行全部的片段处理。在几何处理阶段中,mali gpu 将屏幕分割为极小的16x16 像素区块,并对每个区块中存在的渲染原语构建一份清单。gpu 片段着色步骤开头时,每一着色器核心一次处理一个 16x16 像素区块,将它渲染完后再开头下一区块。对于基于区块的架构,其算法相当于:1. foreach( tile )2. foreach( primitive in tile )3. foreach( fragment in primitive in tile )4. render fragment因为 16x16 区块仅仅是总屏幕面积的一小部分,所以有可能将囫囵

5、区块的完整工作集(色彩、深度和模板)存放在和 gpu 着色器核心紧密耦合的迅速 ram 中。这种基于区块的方式有诸多优势。它们大体上对开发人员透亮,但也值得了解,尤其是在尝试了解你内容的带宽成本时:对工作集的全部拜访都属于本地拜访,速度快、功耗低。读取或写入外部 dram 的功耗因系统设计而异,但对于提供的每 1gb/s 带宽,它很简单达到大约 120mw。与这相比,内部内存拜访的功耗要大约少一个数量级,所以你会发觉这真的大有关系。混合不仅速度快,而且功耗低,由于许多混合方式需要的目标色彩数据都随时可用。区块足够小,我们事实上可以在区块内存中本地存储足够数量的样本,实现 4 倍、8 倍和 16

6、 倍多采样抗锯齿1。这可提供质量高、开销很低的抗锯齿。因为涉及的工作集大小(普通单一采样渲染目标的 4、8 或 16 倍;4k2k 显示面板的 16x msaa需要巨大的 1gb 工作集数据),少数挺直模式渲染器甚至将 msaa 作为一项功能提供应开发人员,由于外部内存大小和带宽通常导致其成本过于昂扬。mali 仅仅需要将单一区块的色彩数据写回到区块末尾的内存,此时我们便能知道其终于状态。我们可以通过 crc 检查将块的色彩与主内存中的当前数据举行比较 这一过程叫做“事务消退” 假如区块内容相同,则可彻低跳过写出,从而节约了 功耗。我的同事 tom olson 针对这一技术写了一篇 优秀的博文

7、,文中还提供了“事务消退”的一个现实世界示例(某个名叫“生气的小鸟”的嬉戏;你或许听说过)。有关这一技术的具体信息还是由 tom 的博文来介绍;不过,这儿也稍稍了解一下该技术的运用(仅“多出的粉色”区块由 gpu 写入 - 其他全被胜利丢弃)。我们可以采纳迅速的无损压缩计划 帧缓冲压缩 (afbc) ,对逃过事务消退的区块的色彩数据举行压缩,从而进一步降低带宽和功耗。这一压缩可以应用到离屏 fbo 渲染目标,后者可在随后的渲染步骤中由 gpu 作为纹理读回;也可以应用到主窗口表面,只要系统中存在兼容 afbc 的显示控制器,如 mali-dp500。大多数内容拥有深度缓冲和模板缓冲,但帧渲染结

8、束后就不必再保留其内容。假如开发人员告知 mali 驱动程序不需要保留深度缓冲和模板缓冲2 抱负方式是通过调用 gldiscardframebufferext (opengl es 2.0) 或 glinvalidateframebuffer (opengles 3.0),虽然在某些情形中可由驱动程序判断 那么区块的深度内容和模板内容也就彻底不用写回到主内存中。我们又大幅节约了带宽和功耗!上表中可以清楚地看出,基于区块的渲染具有诸多优势,尤其是可以大幅降低与帧缓冲数据相关的带宽和功耗,而且还能够提供低成本的抗锯齿功能。那么,有些什么劣势呢?任何基于区块的渲染计划的主要额外开销是从顶点着色器到片

9、段着色器的交接点。几何处理阶段的输出、各顶点可变数和区块中间状态必需写出到主内存,再由片段处理阶段重新读取。因此,必需要在可变数据和区块状态消耗的额外带宽与帧缓冲数据节约的带宽之间取得平衡。当今的现代消费类设备正大步向更高辨别率显示屏迈进;1080p 现在已是智能手机的常态,配备mali-t604 的 google nexus 10 等以 wqxga (2560x1600) 辨别率运行,而 4k2k 正逐渐成为电视机市场上新的“不二之选”。屏幕辨别率以及帧缓冲带宽正迅速进展。在这一方面,mali 的确表现出众,而且以对应用程序开发人员基本透亮的方式实现 - 无需任何代价,就能获得全部这些益处,而且还不用更改应用程序!在几何处理方面,mali 也能处理好复杂度。许多高端基准测试正在临近每帧百万个三角形,其复杂度比 应用商店中的热门嬉戏应用程序高出一个(或两个)数量级。然而,因为中间几何数据确实到达主内存,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论