专利名称:基于分块渲染的gpu中块存储策略的实现的制作方法
技术领域:
本发明主要涉及到GPU芯片设计中的分块渲染实现领域,特指基于分块渲染的 GPU中块存储策略的实现。
背景技术:
计算机图形绘制技术很早以前就是信息技术研究的一个重要方向,尤其是近十几 年以来,随着计算机性能的不断提升,计算机图形应用也从2D延伸到3D,相应的应用范围 也更加广泛,在商业、工业、娱乐、艺术、教育、医疗、军事等各个方面都发挥着重要的作用, 图形芯片的实现架构也在不断的创新和发展。早期的GPU设计领域,一般都采取固定流水线(Fixed Pipeline)的设计方式。其 固定流程包括几何变换、光照、裁剪、光栅化、Z测试、纹理贴图等,在设计中除了考虑要提 供足够的整数和浮点运算之外,另一个重要的考虑因素就是存储体的带宽,根据研究表明, 在渲染阶段,影响GPU运行速度的主要因素就是存储体的带宽,因为在这一过程中,需要频 繁的读取纹理、深度、帧存等外存数据,往往一个像素需要读取多次外存才能够最终写入帧 存,为了减小存储体带宽的影响,在这种架构中往往采取加大片上存储(Cache)的方法来减 少外存的访问量,但是这种方式增大了芯片的功耗,对性能的提高程度也有限。实际上在固定流水线架构中,造成存储带宽不够的原因是大量相互遮盖的图元在 绘制,最终显示的像素需要多次重复渲染,为了解决这一问题,将绘图流程进行改进,比较 常见的就是延迟渲染(Deferred Rendering),延迟渲染是利用额外的缓冲区来缓存绘图过 程中间的信息,在确定像素最终颜色之前,尽量延后像素实际写入输出图像缓冲区的时间, 来避免处理多余不必要的像素以及缓冲区读写,因为最终能够显示在屏幕上的三角形占原 始输入图元的209Γ83%,所以这种延迟渲染的方式可以在一定程度上减少运算量和访存次 数,提高性能。另一种GPU的实现架构为分块渲染技术。这项技术是将绘图区划分为若干个相同 大小的块,然后将所有的待绘制图元收集完毕写入外存后,再从外存将每一块的图元读出, 以块为单位进行渲染。这种技术可以大大减少访问外存的次数,大大提高GPU的绘制效率, 在分块渲染技术中,块的存储是一个重要的问题,以前的做法是将图元分块之后顺序存放 在外存,片上维持一个链接表,读取的时候按照链接表将当前块的图元读出进行绘制。
发明内容
本发明要解决的问题就在于针对现有技术存在的技术难点,本发明提供了一种 基于分块渲染的GPU中块的高效存储策略,该发明可以减小片上存储的信息,同时可以将 块的收集和绘制时间重合,加快GPU的绘制效率。与现有的技术相比,本发明的优点就在于1、逻辑简单本发明提出的块存储策 略在实现结构上将写入和读出分开,两者之间通过一个计数器建立关系;2、片上存储资源 少本发明提出的块存储策略只需要在片上维持两个RAM(作为奇数帧和偶数帧的计数器),
4而其余的信息全部写入外存DDR中,大大减少片上存储资源;3、性能优良本发明提出的奇 偶两帧缓存的技术,可以将图元绘制时间和图元收集时间重合,绘制一帧的时间平均可以 节约30% 50%。
图1是本发明实现的块存储策略结构图。
具体实施例方式以下将结合附图和具体实施例对本发明做进一步详细说明。如图1所示,本发明的基于分块渲染的GPU中块存储策略的实现,它包括每一块最 多包含的块数目确定,本实现中,块的存储空间设置为一固定大小的区域,同时设置块的大 小为一固定值,那么绘图区域大小不同,该存储区域能够存储的块的数目就不同,每一块能 够存储的图元数目就不同。根据图元分块送入的块号,从本地RAM(内部维持每个块的计数 器)中取出当前块中已经存储的块的数目,若为第一次处理该块,那么块的数目为0。根据 当前绘图区块的数目、每一块占用的存储空间、当前待写入的块号、当前块已写入的图元数 目、每一块占用的存储空间计算当前图元写入DDR存储体的地址。得到存储地址之后,将图 元的绘制信息写入DDR存储体中。同时将对应块的计数器加1。由于存储空间有限,若当前 块存储的块的数目超过最大数目,前面的分块算法需要停顿,然后优先读取该块绘制,直到 小于最大存储数目,前面分块算法再继续执行。当所有的块都写入完毕之后,开始读取块, 首先按块的顺序轮询保持的计数器的值,直到找到第一个图元数目不为0的块。将该计数 器的值读出,根据当前块号、每一块占用的存储空间、每一个图元所占用的存储空间计算读 取块的地址。所有图元读取完毕,当前帧绘制完毕。为了提高绘图效率,本实现策略将维持 两个计数器,奇数帧和偶数帧分别用一个计数器,这样可以再奇数帧收集图元时,偶数帧进 行绘制,反之亦然。
权利要求
1.基于分块渲染的GPU中块存储策略的实现,其输入为图元(包括线段和三角形)分块 后得到的块号及块内图元的绘制信息。
2.根据当前绘图区的大小确定每一块最多包含的块数目,本实现策略中,块的存储空 间设置为一固定大小的区域,同时设置块的大小为一固定值,那么绘图区域不同,该存储区 域能够存储的块的数目就不同,每一块能够存储的图元数目也不同。
3 . 假设用 来存储 块 的 空 间 为 M (单位字节),本实现策略中采用乒乓操作,需要存储两帧的图元分块信息,所以每帧占 用的空间为JM72 ,当前绘图区的大小为JTxAT (单位像素),分块的大小为ΓχΓ (像素), 每个图元占用的存储空间为C (单位字节),那么,「 ΤχΛ"总共的块数目为
4.计算当前图元写入DDR存储体的地址。
5.假设当前绘图区块的数目为N,每一块占用的存储空间为Cji,当前待写入的块号为 Ik,从2中读出的块的数目为n,每一个图元所占用的存储空间为C (单位字节),那么当 前待写入图元的存储地址为
6.得到存储地址之后,将图元的绘制信息写入DDR存储体中。
7.同时将对应块的计数器加1。
8.由于存储空间有限,若当前块存储的图元数目超过最大数目,前面的分块模块需要 停顿,然后优先读取该块绘制,直到小于最大图元存储数目,前面的分块模块再继续执行。
9.重复1-4,直到将所有的图元信息都写入DDR存储体中,写入过程结束。
10.读取时,首先按块的顺序查询保持的计数器的值,直到找到第一个图元数目不为0 的块。
11.将该计数器的值读出(假设为Jfe),计算读取块的地址,假设当前块号为Ihi,每 一块占用的存储空间为^ ,每一个图元所占用的存储空间为C (单位字节),那么第一 次读取的图元地址
12.在分块渲染算法中,一般情况下需要等到所有的块写入DDR完毕才可以进行绘制 (中间出现块满的情况除外),那么在块收集的过程中,块绘制模块空闲,为了将两部分时间 重合,在本策略实现中维持两个计数器,同时有两块DDR存储空间,当奇数帧在块收集的过程中,偶数帧在进行绘制,偶数帧在块收集时,奇数帧在进行绘制。
全文摘要
本发明公开了一种基于分块渲染的GPU中块存储策略的实现,它包括写入块和读出块两个部分,写入块时,根据图元分块的结果将块号作为索引,将块写入对应本块的存储空间(具体地址计算得到),同时维持一个本地计数器,将写入块的计数器加1;读出块时,根据每一块计数器的值按顺序将块内存储的图元信息取出来送入绘制模块。
文档编号G06T1/60GK102096897SQ20111006516
公开日2011年6月15日 申请日期2011年3月17日 优先权日2011年3月17日
发明者焦勇, 陈怒兴, 饶先宏 申请人:长沙景嘉微电子有限公司