图形处理单元及其图形处理方法

文档序号:10471752阅读:511来源:国知局
图形处理单元及其图形处理方法
【专利摘要】本发明提供一种图形处理单元及其图形处理方法。图形处理单元的图形处理方法包括:根据图元数据与多个区块的关联来产生显示区域的区块数据,其中,多个区块对应于显示区域;根据侦测的自适应条件来产生信号,其中,于第一帧被完全分级之前,信号指示第一帧的一个或多个区块将以第一顺序被刷新,其中,信号打断以第二顺序进行的第二帧的区块刷新;以第一顺序刷新第一帧的一个或多个区块;以及恢复以第二顺序进行的第二帧的区块刷新。本发明提供的图形处理单元及其图形处理方法,可以防止或减轻渲染阶段的失速,减少图形处理总执行时间,改善图形处理单元的性能。
【专利说明】
图形处理单元及其图形处理方法
【技术领域】
[0001]本发明关于图形处理技术,特别关于一种图形处理单元及其图形处理方法。
【【背景技术】】
[0002]图形处理单元(graphics processing unit,以下简称为GPU)于显示装置上处理并清染图形对象(graphical object),例如:图像元素(picture element)或像素。于计算机图形中,3D图形对象通常是由图元(primitive)例如:点、线、多边形、以及高阶表面(higher order surface)的组合来表示。为了清染特定场景,图元被单独光栅化为像素的2D图像。因为在复杂3D场景中常常有上千、上百万、甚至是上亿个的图元,完成单独对每个图元的光栅化可能会导致次优的(suboptimal)系统性能。因为光栅化处理是从一个图元到下一个图元,现有的图形系统遭受着从存储器中反复读取以及写入颜色及深度值。光栅化的像素的立即着色会导致不必要的处理开销以及系统存储器带宽的整体低效。
[0003]延迟渲染是关于多个图元在渲染阶段被渲染之前的累积,这些图元可能来自一个场景中的多个图形对象。延迟渲染的一个方法是将显示空间分为多个区域。于一个帧的多个图形对象中累积的图元可以是一个区域接着一个区域被渲染,而不是一个图元接着一个图元被渲染,以减少存储器的存取量。使用延迟渲染可以显著地提高系统性能,尤其是在功耗及系统带宽都很宝贵的移动装置中。

【发明内容】

[0004]为了解决上述问题,本发明提出了一种图形处理单元及其图形处理方法。
[0005]根据本发明的第一方面,提供一种图形处理单元,包括:分级引擎,根据图元数据与多个区块的关联来产生显示区域的区块数据,其中,所述多个区块对应于所述显示区域;渲染引擎,渲染所述显示区域的所述区块数据;刷新控制器,根据侦测的自适应条件来产生信号,其中,于第一帧被完全分级之前,所述信号指示来自分级缓冲器的所述第一帧的一个或多个区块将以第一顺序被刷新;以及分级控制器,耦接于所述分级引擎、所述渲染引擎、以及所述刷新控制器,控制所述分级缓冲器的存取,其中,于以第二顺序进行第二帧的区块刷新的过程中,所述分级控制器被所述信号打断以所述第一顺序刷新所述第一帧的所述一个或多个区块,以及恢复以所述第二顺序进行的所述第二帧的所述区块刷新。
[0006]根据本发明的第二方面,提供图形处理单元的图形处理方法,其特征在于,包括:根据图元数据与多个区块的关联来产生显示区域的区块数据,其中,所述多个区块对应于所述显示区域;根据侦测的自适应条件来产生信号,其中,于第一帧被完全分级之前,所述信号指示所述第一帧的一个或多个区块将以第一顺序被刷新,其中,所述信号打断以第二顺序进行的第二帧的区块刷新;以所述第一顺序刷新所述第一帧的所述一个或多个区块;以及恢复以所述第二顺序进行的所述第二帧的所述区块刷新。
[0007]本发明提供的图形处理单元及其图形处理方法,可以防止或减轻渲染阶段的失速,减少图形处理总执行时间,改善GPU的性能。【【附图说明】】
[0008]图1为根据本发明实施例的包括CPU以及GPU的图形处理系统的示意图。
[0009]图2为根据本发明实施例的GPU核心的示意图。
[0010]图3为根据本发明实施例的由GPU核心执行的延迟渲染过程的示意图。
[0011]图4为根据本发明实施例的用于选择区块进行抢占式刷新的方法的流程图。
[0012]图5A为根据本发明实施例的被分段或分为3x3区块的网格的显示区域的示意图。
[0013]图5B为根据本发明实施例的待渲染的帧的示意图。
[0014]图6A至图6D为根据本发明实施例的帧的抢占式刷新的过程示意图。
[0015]图7为根据本发明实施例的空间选择性分级的抢占式刷新方法的流程图。
【【具体实施方式】】
[0016]下面的描述是实施本发明的较佳预期模式。这种描述是为了说明本发明的一般原理的目的,而不应被理解成具有限制性的意义。但是应当理解,实施例可以利用软件、硬件、固件、或其任何组合来实现。
[0017]在以下的描述中,阐述了很多具体细节。然而,可以理解的是,本发明的实施例可以在没有这些具体细节的情况下实施。在其它实例中,公知的电路、结构以及技术没有被详细的示出,以便不模糊对此描述的理解。然而,本领域的普通技术人员可以理解的是,本发明可以在没有这些具体细节的情况下实施。本领域的普通技术人员利用所包括的描述,无需过多的实验就能够实现适当的功能。
[0018]本发明是有关于图形处理系统;特别是是关于延迟图形处理(deferred graphicsprocessing)。
[0019]有限的存储器带宽是增强现有的3D图形管线的性能的一个主要的障碍。如先前所描述的,延迟渲染可以减少3D图形管线中的存储器带宽的需求。延迟渲染的一个方法包括两个阶段。第一阶段是分级阶段(binning pass),于分级阶段中,帧的图元被分类为(或等效于“相关于”)一组区块(a set of bins)。这些区块包括将在显示空间中被渲染的区块数据(bin data)。显示空间是空间或区域,在显示空间中一系列的帧待渲染。显示空间被分段为规则网格的区块区域(bin area)(例如,32像素x 32像素或其它合适的大小),每个区块区域显示对应区块的已渲染的区块数据。
[0020]第二阶段为渲染阶段,于渲染阶段,区块数据逐区块被渲染。通过在一个时间渲染一个区块的数据,位于相同区块的多个图形对象的图元数据可以在相同的阶段被处理,这样就可以进行有效率的数据存取。因此,一般而言,延迟渲染可以提高系统性能。
[0021]现有技术中,在进行渲染处理之前,区块数据是临时储存在存储器中。于某些系统中,存储器是附属于GPU的动态随机存取存储器(dynamic random-access memory,以下简称为DRAM)。于某些系统中,DRAM可以由GPU以及CPU来共用。可以指定存储器的一部分来储存区块数据。然而,于现有的系统中,于对帧分级的中间,此存储器的指定部分可能达到其最大容量,且整个帧被刷新到渲染硬件,以开始立即渲染。整个帧刷新的代价是很昂贵的,因为它失去了关于存储器I/O存储的延迟渲染的优点。S卩,刷新没有被分级的图元,其结果是整个帧的刷新是按照对逐个图元进行渲染来处理的,而不是对逐个区块进行渲染。因此,存储器I/O开销将增加,且系统性能将显著地降低。
[0022]现有的GPU系统还会受到渲染硬件的不均衡工作负载(workload)分布的影响。因为从分级硬件反馈的区块数据不足,渲染硬件可能会不时地停止。例如,当一个帧的图元都集中在少数几个区块,分级硬件就需要花较长的时间段来完成一个区块的处理,并将该区块的区块数据输出到渲染硬件。在这个时间段,渲染硬件可能会停止或利用不足(under-utilized)。导致高度集中区块的一个场景是镶嵌(tessellat1n)。当图形对象被镶嵌,图形对象被表示为很多小的图元,这些图元通常是群集于局部区块。于现有的系统中,这些高度集中区块不仅会导致临时的工作负载失衡,还可能占用很多存储器容量,进而又会导致降低系统性能的整个帧刷新。
[0023]根据本发明的实施例,提供了一种系统以及方法,根据侦测一个或多个自适应条件来对帧的一个或多个区块启用抢占式刷新(preemptive flushing)。刷新是抢占式的,因为刷新发生于帧被完全分级之前以及另一帧的正常刷新过程期间。抢占式刷新可防止存储器溢出,因为所选择的区块可以在存储器达到其最大容量之前被刷新。抢占式刷新也减轻了不均衡工作负载的分布,因为负载较重的区块可以被刷新以保持渲染硬件的忙碌程度。此外,系统可以控制将刷新哪些区块,以何种顺序刷新这些区块,且在某些场景中,刷新这些区块的哪一部分。在一个帧的所选择的一个或多个区块被抢占式地刷新后,该帧中未被分级的部分(即,帧中还没有被分级的部分)可以继续被分级且接着被刷新。
[0024]如本文所使用的,当帧被分类为区块并被储存于分级缓冲器(bin buffer)时,表示帧被“分级”。“分级缓冲器”用于临时存储区块数据,且将在图2中做详细的参考描述。当一个帧中所有的图元都被分类到区块并被储存于分级缓冲器时,此帧就全部地或完全地被分级。类似地,当图元被分类到一个区块并被储存到分级缓冲器中,图元被分级。当对应于区块的区块区域中的图元中的至少一个被渲染,图形对象“接触”或“截取”一个区块。术语“区块”以及“区块区域”是可以互换使用的,以表示分级以及渲染的工作单元。被分类到一个区块的图元被称为区块的区块数据。术语“刷新”是指从分级缓冲器中移动或装载区块数据到渲染引擎,其启用区块数据的立即渲染,并释放被占用的缓冲器空间以重利用(reuse)。此外,“刷新区块的区块数据”与“刷新区块”或“区块刷新”是可以互换使用的。
[0025]图1为根据本发明实施例的包括CPU 110以及GPU 120的图形处理系统100的示意图。虽然图1中只显示了一个CPU以及一个GPU,要理解的是,图形处理系统100可包含任何数量的CPU、GPU、以及任何数量的其它处理器。在一个实施例中,图形处理系统100可由片上系统(system-on-a-chip,SoC)来实现,片上系统可用于计算和/或通信系统。虽然在本实施例中CPU 110以及GPU 120包含四个核心(分别表示为核心115以及核心125),但是每个CPU 110以及GPU 120可包含任何数量的核心以执行计算任务。在一个实施例中,CPU 110以及GPU 120经由系统互连140以及存储器控制器150与系统存储器130(例如,DRAM或其它易失性或非易失性随机存取存储器)进行通信。要理解,为了简化说明,许多其它系统元件被省略。
[0026]在一个实施例中,GPU 120 (更具体地,一个或多个GPU核心125)接收描述待渲染的图形对象的命令以及数据。根据此命令以及数据,GPU 120产生一组图元来表示图形对象。图元是图形处理系统100可以绘制并储存的一组最简单的几何对象,例如:线段、曲线、三角形、多边形等。每个图元可以由一个或多个顶点来描述,每个图元是一个包括一组属性(例如:位置、移动、亮度、颜色等)的数据结构。GPU 120执行延迟渲染,延迟渲染包括分级阶段以及渲染阶段。每个区块包括待渲染的区块数据,每个区块位于显示区域的对应区块区域内。例如,如果显示区域被分为3x3区块的网格,总的9个区块被设置以累积一个或多个帧的图元。
[0027]图2为根据本发明实施例的GPU核心125的示意图。GPU核心125包括分级引擎210以及渲染引擎220。需要理解的是,为了简化说明,许多其它GPU元件被省略。GPU核心125还包含分级缓冲器230的芯片上元件230A,分级控制器240以及刷新控制器250。在一个实施例中,分级缓冲器230包括芯片上元件(on-chip component) 230A (即,位于与GPU核心125相同的芯片上)以及芯片外元件(off-chip component) 230B,芯片外元件230B位于图1中系统存储器130的指定的空间中。芯片上元件230A可以通过静态RAM(staticRAM, SRAM)或其它存储器元件来实现。分级缓冲器230的芯片上元件230A以及芯片外元件230B —起保存(hold)区块数据。区块数据被临时存入芯片上元件230A,当必要时,区块数据被写入到芯片外元件230B。除非另有规定,本文中的术语“分级缓冲器230”是芯片上元件230A以及芯片外元件230B的统称。
[0028]图2中的元件(例如:分级引擎210、渲染引擎220、分级控制器240、以及刷新控制器250)可以由硬件、软件、固件、或以上任何的组合来实现。虽然图2所示的这些元件是单独的功能模块,在一些实施例中,某些或所有的这些元件可以共用相同的硬件、软件、固件、或任何以上的组合,以执行其指定任务的某些部分。此外,于变化实施例中,元件的位置可能会不同于图2所示的元件的位置。例如,虽然图2中所示的分级控制器240以及刷新控制器250位于分级引擎210以及渲染引擎220外部,在一些实施例中,分级控制器240以及刷新控制器250可以全部或部分地位于分级引擎210和/或渲染引擎220内。在一些实施例中,分级缓冲器230的芯片上元件230A可以位于级控制器240内。在一些实施例中,所示的位于GPU核心125内的某些元件可以由GPU 120的多个GPU核心来共用。
[0029]图3为根据本发明实施例的由GPU核心125 (例如,图2所示的GPU核心125)执行的延迟渲染过程300的示意图。在本实施例中,延迟渲染过程300包括由渲染阶段320跟随的分级阶段310。于分级阶段310中,顶点负载(vertex load) 311从顶点负载缓冲器中加载顶点数据以及属性。顶点表示(vertex representat1n)通常被用于计算机图形,以描述图形对象。图形对象通常由一组被称为图元的基础元件来表示,例如:线、曲线、三角形、以及多边形等。每个图元是由一个或多个顶点组成并通过顶点来指定。每个顶点与一组属性(例如:位置,颜色,常量,纹理等)相关联。对于每个顶点,顶点着色器312将其3D位置转换为2D坐标以及深度值。顶点着色器312操作是由剔除、修剪以及设置(culling,clippingand setup) 313跟随,其将在进一步的处理中移除没有面对(facing)观察者(例如,照相机)的图元以及视场(field of view)外的图元。区块光栅化314将每个图元关联到一个区块。最终的区块数据被加载到分级缓冲器230,于分级缓冲器230中,发生区块储存以及刷新330。
[0030]于渲染阶段320,由分级缓冲器230刷新的数据进一步被修剪以及设置(clippingand setup) 321。接着,像素光栅化322、像素着色器以及纹理323处理数据,且渲染结果(例如,颜色以及Z(深度)值)进入到渲染输出324。
[0031]需要理解的是,于可选实施例中,与图3所示的操作相比,分级阶段310以及渲染阶段320可包含更少的、更多的,和/或不同的操作。再次参考图2,在一个实施例中,分级阶段310的一个或多个操作可由分级引擎210来执行,且渲染阶段320的一个或多个操作可由渲染引擎220来执行。分级控制器240以及刷新控制器250可以执行用于区块储存以及刷新330过程的操作。在一些实施例中,图3中的某些单独的操作可由相同的硬件来执行。例如,在GPU中包含统一着色器系统,可以对统一着色器系统进行编程以执行其他任务中的顶点着色器312以及像素着色器及纹理323的任务。
[0032]再次参考图2,对于帧中的每个图形对象,分级引擎210识别一个或多个图形对象接触的区块。接着,分级引擎210将图形对象所产生的图元关联到所识别的一个或多个区块。分级引擎210对帧中所有的图形对象重复此分级过程,且接着对下一帧重复相同的过程。
[0033]在一个实施例中,分级引擎210也在图形对象上执行镶嵌。镶嵌是一个众所周知的技术,将表面细分成位于原始表面的平面和边界内的许多较小的连续衔接的表面(adjoined surfaces) 0可以对图形对象执行多于一个层次的镶嵌。在任何给定的帧中,可以镶嵌一个或多个图形对象。如上所述,通常图形对象的镶嵌会导致大量图元。这些图元可以以与非镶嵌对象产生的图元相同的方式来分级。
[0034]在一个实施例中,渲染引擎220对区块数据执行渲染阶段320以产生2D显示。渲染引擎220从分级缓冲器230加载区块数据,分级缓冲器230临时储存由分级引擎210产生的区块数据。分级控制器240控制分级缓冲器230的存取。当分级引擎210写入区块数据到分级缓冲器230时,分级控制器240控制何时将区块数据传送到渲染引擎220以进行刷新。在一个实施例中,分级控制器240根据刷新控制器250发出的信号控制分级缓冲器230的存取。当侦测到自适应条件时,刷新控制器250产生这样的信号到分级控制器240。于下文的示例中,帧N+1表示正在进行分级阶段的帧,且帧N表示帧N+1之前的帧。
[0035]作为第一示例,当遇到镶嵌对象时,可以侦测自适应条件。这个条件是“自适应”于镶嵌因子(tessellat1n factor)的,镶嵌因子是镶嵌所产生的新的图元的数量的指示符。如果镶嵌因子较小(例如,镶嵌所产生的新的图元的数量小于阈值),则刷新控制器250可能不会选择执行抢占式刷新。当执行抢占式刷新时,刷新控制器250可以仅刷新帧N+1中的镶嵌对象接触的区块。
[0036]作为第二示例,如果渲染引擎220处于空闲状态或利用不足(例如,当其利用,或每单位时间的工作周期的数量低于阈值)时,刷新控制器250可以选择抢占式地刷新帧N+1中负载最重的区块。此条件是“自适应”于渲染引擎250中的临时工作负载失衡。通过刷新帧中所选择的区块,可增加渲染引擎220的利用率。
[0037]作为第三示例,刷新控制器250根据先前的帧N确定是否抢占式地刷新帧N+1。此条件是“自适应”于先前帧。该确定是基于来自帧N以及帧N+1的类似性的预测绘制(predict1n drawn)。即,如果帧N以及帧N+1是“类似”的,且帧N的至少一部分是被抢占式地刷新,则可以预测帧N+1也会抢占式地被刷新。有多个类似性指标(similaritymetric)用于确定两个帧之间的类似性。作为示例,根据类似性指标,如果两个帧包含具有细微的不同位置(例如,当两个帧的每个图形对象或每个其组成图元的之间的位置差别小于阈值时)的相同图形对象,则两个帧会被认为是“类似”的。关于区块的刷新,如果帧N+1的区块达到帧N的相同的区块所达到的图元计数(primitive count),接着这个区块待选择为用于抢占式刷新的目标区块,因为这个区块最接近于刷新的“成熟”条件(换句话说,最有可能没有更多的图元与帧N+1中的区块相交)。此外,如果由于镶嵌对象的存在,帧N的区块被抢占式地刷新,则可以预测帧N+1的相同的区块也具有相同的镶嵌对象,且当镶嵌对象到达以用于分级时,可以被抢占式地刷新。此预测刷新避免了镶嵌对象的接触区域的重新计算(re-calculat1n),因为重新计算会消耗计算资源。此外,关于此预测刷新,当镶嵌对象的区块数据进入到分级缓冲器230的芯片上元件230A时,镶嵌对象的区块数据被直接及立即地刷新。因此,于分级缓冲器230的芯片上元件230A中,不需要进行区块数据的累积,也不需要增量地刷新区块数据,这将于接下来的变化实施例中做更详细的描述。
[0038]作为附加的示例,当任何下文的情形发生时,可以侦测自适应条件:当帧N+1的图元的总数量p_total达到阈值p_threshold(例如,当p_total>p_threshold时);当用于储存区块数据的分级缓冲器230中的字节的数量b_total达到阈值13_1:11^81101(1 (例如,当b_total>b_threshold时);当图形对象被镶嵌且被分级,或当预测到图形对象会产生大量的被分级的图元(例如,当其预测的图元计数 > 预测的阈值)。即,抢占式刷新是自适应于帧N+1及帧N的状态以及特性,可用的存储器、和/或一个或多个预设、预测、历史、比较、或用于设置有关阈值的经验值。在一个实施例中,阈值被决定及设置,这样一来,区块数据就能在分级缓冲器230已满之前被刷新。在一个实施例中,刷新控制器250使用图元计数器来计数帧中所产生的图元(即,图元的总数量P_total),以及一个监视逻辑用于监视分级缓冲器230的存储器使用(即,分级缓冲器230中的字节的数量13_切丨&1)。
[0039]继续描述以上示例,刷新控制器250还可使用图元计数器来计数每个区块的图元数量。每个区块的图元计数值由p_cnt[bin]来表示,当确定刷新哪个图元时,图元计数值是非常有用的。例如:当区块的?_(3#[1^11]达到一个预测值时,选择这个区块来进行抢占式刷新。例如,当区块的p_cnt[bin]达到一个预设值、当区块的p_cnt [bin]达到由先前帧(即,帧N)预测的值、或当区块的p_cnt[bin]是所有的区块的p_cnt[bin]中最大的值时,选择这个区块来进行抢占式刷新。当区块的p_cnt[bin]是所有的区块的p_cnt [bin]中最大的值时,表示这个区块是所有区块中负载最重的区块。在一个实施例中,刷新控制器250可以使用口_(3社[1^11]值在所有将刷新的区块中选择负载最重的前η个区块(S卩,最大η ρ_cnt[bin]值),其中,η是一个能在运行时间适应性地被确定的数字。
[0040]图4为根据本发明实施例的用于选择区块进行抢占式刷新的方法400的流程图。分级引擎210对帧(例如,帧Ν+1)中的每个图形对象产生一组图元(步骤410),并识别这些图元关联的是哪些区块(即,图形对象接触的是那些区块)(步骤420)。当帧Ν+1被分级且帧N被刷新,更新一组计数器值以及指标值。也就是说,当帧Ν+1被分级到所识别的区块,刷新控制器250更新一组计数器值以及指标值:例如:帧Ν+1的总图元计数、分级缓冲器230中使用的字节数量、所识别区块的图元计数、帧Ν+1的镶嵌因子、渲染硬件的利用率、先前帧(即,帧N)以及帧Ν+1之间的类似性指标等,和/或任何以上的组合(步骤430)。当帧Ν+1被分级,刷新控制器250从分级缓冲器230中移动(即,刷新)帧N的区块到渲染引擎220以用于渲染。在一个实施例中,刷新控制器250发送命令信号触发分级控制器240以进行刷新。为了反映帧N刷新的效果并保持系统状态的跟踪,刷新控制器250也更新一组计数器值以及指标值,例如:帧N的总图元计数、分级缓冲器230中使用的字节数量、所刷新区块的图元计数、渲染硬件的利用率、帧N中镶嵌对象(如果存在)接触的区块类似性指标等(步骤430)。刷新控制器250确定是否存在任何自适应条件(步骤440)。例如,刷新控制器250将已更新的计数器值以及指标值与一组阈值做比较,以确定已更新的计数器值以及指标值是否达到或超过任何阈值,例如:是否p_total>p_threshold、b_total>b_threshold、镶嵌因子 >t_threshold、清染利用率 <u_threshold、帧类似性 >s_threshold 等(步骤440)。如果这些计数器值都没有达到或超过相应阈值,则当帧N+1被分级时,帧N是逐个区块被刷新(步骤450)。如果刷新控制器250侦测到自适应条件,例如,通过将任意计数器值或指标值与其相应阈值做比较,刷新控制器250还确定帧N+1中的哪个区块需要被抢占式地刷新,以及如果多于一个区块需要被占式地刷新,刷新控制器250还确定这些区块的刷新顺序(步骤460)。于一个场景中,刷新控制器250使用图元计数器值p_cnt[bin]来确定被抢占式地刷新的区块以及区块刷新的顺序。接着,刷新控制器250发送信号到分级控制器240以指示帧N+1的哪个区块待刷新,以什么顺序开始抢占式刷新帧N+1的区块(步骤470)。于抢占式刷新的过程中,帧N的刷新以及帧N+1的分级被暂停。于抢占式刷新之后,分级控制器240恢复帧N的刷新,且分级引擎210恢复帧N+1的分级(步骤480)。
[0041]在一个实施例中,刷新控制器250使用分级引擎210发送的信息来确定是否进行刷新。例如,分级引擎210可指示刷新控制器250图形对象正在被镶嵌。分级引擎210还可指示刷新控制器250具有大量图元的图形对象(例如,当图元的数量达到阈值时)正在被分级。由镶嵌或其它复杂的图形对象产生的图元在数量上可能会是巨大的,因此,分级缓冲器230的芯片上元件230A可能没有充分的容量来储存其所有的图元。为增加区块数据的存取速度,在一个实施例中,镶嵌(或其它复杂)图形对象的分级以及刷新可以多个迭代的方式增量地被执行。于每个迭代过程中,由图形对象产生的区块数据的一部分(也被称作局部区块数据)被加载到分级缓冲器230的芯片上元件230A。接着,抢占式刷新被触发,以刷新局部区块数据。迭代会一直重复,直到图形对象的所有区块数据被分级并被完全地刷新。于每个迭代中,确定被加载及刷新的局部区块数据的大小,以使分级缓冲器230的芯片上元件230A不会溢出。因此,在被渲染之前,图形对象的区块数据将不会到达分级缓冲器230的芯片外元件230B。其结果是,在这样的场景下,因为所有区块数据都适合于分级缓冲器230的芯片上元件230A,增强了系统性能(例如:效率)被。
[0042]图5A为根据本发明实施例的被分段或分为3x3区块的网格的显示区域500的示意图。于变化实施例中,显示区域500可以被分段为任何数量的区块(例如,上百个或上千个),这由显示装置的解决方案来限定。显示区域500是指帧序列的每个帧被渲染及显示的区域。在此示例中,区块由B1、B2、B3、…、以及B9来表示。箭头520显示了来自分级缓冲器230的区块刷新的正常顺序(例如:以B1、B2、B3、…、B9的顺序)。当没有区块被抢占式地刷新时,根据此“正常”顺序来刷新帧。于变换实施例中,可能会使用不同的序列。
[0043]图5B为根据本发明实施例的待渲染的帧580的示意图。在此示例中,帧580包括三个图形对象:位于背景中的椎体530、位于中景(midground)的茶壶540、以及位于前景(foreground)的三角形550。当椎体530以及三角形550是非镶嵌时,茶壶540是镶嵌的。假设分级引擎210以椎体530、茶壶540、以及三角形550的顺序接收到三个重叠的图形对象。三个图形对象中的每个的区块数据是与以椎体530、茶壶540、以及三角形550相同的顺序来产生。在此示例中,于椎体530被完全分级后,茶壶540被镶嵌并被分级为区块4-9 (即:B4、B5、B6、B7、B8、以及B9)。当茶壶540被完全地或部分地镶嵌以及分级时,刷新控制器250侦测自适应条件。其结果是,于帧580被全部分级之前,与茶壶540相接触的帧580的区块4-9被抢占式地刷新。于一个场景中,落入区块4-9的椎体530的一部分也与茶壶540 —起被抢占式地刷新。对于每个刷新的区块,将首先刷新从椎体530产生的区块数据,然后刷新从茶壶540产生的区块数据。抢占式刷新打断了先前帧的刷新过程。于抢占式刷新后,分级引擎210继续分级茶壶540的未分级的部分(如果存在任何未分级的部分)以及三角形550,而先前帧恢复其刷新过程。于可变中场景,刷新控制器250可以选择要刷新区块4-9的哪个部分的区块数据,例如:茶壶540的区块数据可以单独被刷新,而椎体530的区块数据不会被刷新。
[0044]图6A至图6D为根据本发明实施例的帧(例如,帧N+1)的抢占式刷新的过程示意图,其中,帧(例如,帧N+1)的抢占式刷新打断了另一帧(例如,帧N,其为先前帧)的正常刷新过程。图6A为支持乒乓(ping-pong)数据存取的分级缓冲器230的示意图。在此示例中,分级缓冲器230包括两个区域:区域#1以及区域#2。帧N+1的图元被加载到区域#1。已经被加载到区域#2的帧N的图元,被从分级缓冲器230刷新以开始渲染过程。
[0045]参考图6B,假设来自区域#2的帧N正在根据图5A所示的正常顺序被逐区块刷新。当帧N被刷新时,帧N+1正在被加载到区域#1。已经准备好从分级缓冲器230中被刷新的帧N+1的部分由倾斜阴影线列图案(slanted hatched-line pattern)来指示。在此示例中,于帧N的BI以及B2被刷新后,且当帧N的B3被部分地刷新时,自适应条件出现,且由刷新控制器250侦测到。刷新控制器250发送信号到分级控制器240以打断帧N的刷新。信号指示帧N+1中被选择的区块(例如:B6、B7以及B4)待按照顺序来刷新。参考图6C,根据接收到的信号,分级控制器240首先完成目前区块的刷新(即,帧N的B3),暂停帧N进一步的刷新,且接下来切换到刷新帧N+1的B6、B7以及B4。于图6C中,帧N+1的B6、B7以及B4以水平线表示,用来指示B6、B7以及B4于抢占式刷新过程中。参考图6D,于帧N+1的B6、B7以及B4被刷新后,分级控制器240恢复来自区域#2的帧N的其余区块(S卩,帧N的B4-B9)的刷新,而分级引擎210继续将帧N+1中未分级的部分分级到区域#1。
[0046]需要注意的是,帧N+1的区块可以以刷新控制器250所确定的任何顺序被刷新。区块刷新可以根据一个或多个场景或参数来进行优先级排序,例如:每个区块的图元计数(即,p_cnt[bin])。例如,如果 p_cnt[B6]>p_cnt[B7]>p_cnt[B4],接着,区块可以以 B6、B7以及B4的顺序被刷新。因此,在此示例中,帧N+1的B6、B7以及B4将以所描述的顺序被刷新,即使通常这些区块是以不同的顺序(例如,如图5A所示的B1、B2、…、B9)被刷新。因此,于图6A至图6D的示例中,于抢占式刷新的过程中,帧N+1所选择的区块的刷新顺序与帧N的区块刷新顺序不同。
[0047]还需要注意的是,如果在区块刷新过程中自适应条件的出现多于一次,则帧N的区块刷新可以被帧N+1的抢占式刷新多次打断。于帧N被完全地刷新且帧N+1被完全地分级后,帧N+1可以正常的顺序被刷新,且帧N+1的区块刷新还可被下一帧(例如,帧N+2)进行任何次数的打断。
[0048]图7为根据本发明实施例的空间选择性分级的抢占式刷新方法700的流程图。参考图2以及图7,在一个实施例中,当GPU(例如,图2所示的GPU核心125)根据图元数据与多个与显示区域对应的区块的关联来产生显示区域的区块数据时,抢占式刷新方法700开始(步骤710)。根据侦测的自适应条件,GPU产生信号来指示在第一帧被完全分级前,第一帧的一个或多个区块将以第一顺序来刷新。此信号打断以第二顺序刷新的第二帧的区块(步骤720),来以第一顺序刷新第一帧的一个或多个区块(步骤730)。于第一帧的一个或多个区块被刷新后,恢复以第二顺序进行的第二帧的区块刷新(步骤740)。
[0049]抢占式刷新方法700空间地选择,于抢占式刷新方法700中启用了待刷新的帧的区块的子集,其中,区块的子集对应于显示区域的一部分。区块的子集可保持具有复杂特征的图形对象(例如,具有大量的图元)所产生的区块数据。因此,那些待渲染及显示的具有复杂特征的区块待给出优先级以开始渲染。区块的子集的抢占式刷新防止这些区块具有过度的负载很重的区块数据。
[0050]此外,一般来说,复杂图形对象比简单图形对象所需的分级时间更长。其结果是,当等待分级阶段产生复杂图形对象的输出时,渲染阶段可能会停止。如本文所描述的抢占式刷新,可以防止或减轻渲染阶段的失速(stalling)。由于抢占式刷新,分级阶段可以更早的输出数据(比没有抢占式刷新要早)以将区块数据送入渲染阶段。这允许渲染阶段更早地开始其工作。因此,由于抢占式刷新,分级阶段以及渲染阶段的总执行时间减少了,可改善GPU性能。
[0051]处理方法700可以由硬件(例如,电路、专属逻辑、可编程逻辑、微码等)、软件(例如,处理装置上运行的指令)、或其组合来执行。在一个实施例中,方法700由图1中的GPU120 (或更具体地,图1以及图2中的GPU核心125)来执行。在一个实施例中,GPU 120可以是移动计算和/或通信装置(例如,智能电话,平板电脑,笔记本电脑等)的一部分。在一个实施例中,GPU 120可以是服务器系统或云计算系统的一部分。
[0052]图4以及图7所示的流程图中的操作已经参考图1以及图2的示范性实施例做了描述。然而,应该理解的是,本发明实施例的图4以及图7的流程图的操作可以不同于关于图1以及图2中所讨论的,且关于图1以及图2所讨论的实施例可以执行不同于所讨论的参考流程图的操作。而由本发明的某些实施例执行的图4以及图7所示的流程图显示了特定的操作顺序,应该理解的是,这样的操作顺序是示范性的(例如,备选实施例可以以不同的操作顺序来操作,可以组合某些操作,可以重叠某些操作等)。
[0053]本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视权利要求所界定者为准。
【主权项】
1.一种图形处理单元,其特征在于,包括: 分级引擎,根据图元数据与多个区块的关联来产生显示区域的区块数据,其中,所述多个区块对应于所述显示区域; 渲染引擎,渲染所述显示区域的所述区块数据; 刷新控制器,根据侦测的自适应条件来产生信号,其中,于第一帧被完全分级之前,所述信号指示来自分级缓冲器的所述第一帧的一个或多个区块将以第一顺序被刷新;以及 分级控制器,耦接于所述分级引擎、所述渲染引擎、以及所述刷新控制器,控制所述分级缓冲器的存取, 其中,于以第二顺序进行第二帧的区块刷新的过程中,所述分级控制器被所述信号打断以所述第一顺序刷新所述第一帧的所述一个或多个区块,以及恢复以所述第二顺序进行的所述第二帧的所述区块刷新。2.如权利要求1所述的图形处理单元,其特征在于,所述刷新控制器进一步计数所述第一帧中图元的总数量,以及当所述总数量达到第一阈值时,侦测所述自适应条件。3.如权利要求1所述的图形处理单元,其特征在于,所述刷新控制器进一步监视所述分级缓冲器中存储器的使用,以及当所述存储器使用达到第二阈值时,侦测所述自适应条件。4.如权利要求1所述的图形处理单元,其特征在于,所述刷新控制器进一步产生与所述第一帧的每个区块相关联的图元计数,以及当所述区块的所述图元计数达到预设值、从先前帧预测的值、以及所有所述区块的图元计数中最大值中的一个时,所述刷新控制器根据侦测的所述自适应条件产生所述信号来刷新区块。5.如权利要求1所述的图形处理单元,其特征在于,当所述第一帧的镶嵌对象产生的图元计数大于阈值时,所述刷新控制器侦测所述自适应条件。6.如权利要求1所述的图形处理单元,其特征在于,当所述渲染引擎的利用率小于阈值时,所述刷新控制器侦测所述自适应条件。7.如权利要求1所述的图形处理单元,其特征在于,当所述第一帧以及所述第二帧之间的类似性指标在阈值内,且所述第二帧的至少一部分是被抢占式地刷新时,所述刷新控制器侦测所述自适应条件。8.如权利要求7所述的图形处理单元,其特征在于,当镶嵌对象到达分级时,所述刷新控制器使所述第一帧中的一组区块待刷新,其中,所述的一组区块与所述第二帧的所述镶嵌对象接触。9.如权利要求1所述的图形处理单元,其特征在于,所述分级控制器进一步刷新所述一个或多个区块以移除多个迭代的图形对象产生的区块数据,以及其中,在每个所述多个迭代期间所述区块数据的一部分产生于所述图形对象且被刷新,以使所述分级缓冲器的芯片上元件具有充分的容量来储存遍及所述多个迭代的所述区块数据,直到所述图形对象被完全地刷新。10.如权利要求1所述的图形处理单元,其特征在于,当所述分级控制器恢复刷新所述第二帧时,所述分级引擎进一步恢复对所述第一帧中未分级部分的分级。11.一种图形处理单元的图形处理方法,其特征在于,包括: 根据图元数据与多个区块的关联来产生显示区域的区块数据,其中,所述多个区块对应于所述显示区域; 根据侦测的自适应条件来产生信号,其中,于第一帧被完全分级之前,所述信号指示所述第一帧的一个或多个区块将以第一顺序被刷新,其中,所述信号打断以第二顺序进行的第二帧的区块刷新; 以所述第一顺序刷新所述第一帧的所述一个或多个区块;以及 恢复以所述第二顺序进行的所述第二帧的所述区块刷新。12.如权利要求11所述的图形处理单元的图形处理方法,其特征在于,还包括: 计数所述第一帧中图元的总数量;以及 当所述总数量达到第一阈值时,侦测所述自适应条件。13.如权利要求11所述的图形处理单元的图形处理方法,其特征在于,还包括: 监视所述分级缓冲器中存储器的使用;以及 当所述存储器使用达到第二阈值时,侦测所述自适应条件。14.如权利要求11所述的图形处理单元的图形处理方法,其特征在于,还包括: 产生与所述第一帧的每个区块相关联的图元计数;以及 当所述区块的所述图元计数达到预设值、从先前帧预测的值、以及所有所述区块的图元计数中最大值中的一个时,侦测所述自适应条件以产生所述信号来刷新区块。15.如权利要求11所述的图形处理单元的图形处理方法,其特征在于,所述根据侦测的自适应条件来产生信号的步骤还包括: 当所述第一帧的镶嵌对象产生的图元计数大于阈值时,侦测所述自适应条件。16.如权利要求11所述的图形处理单元的图形处理方法,其特征在于,所述根据侦测的自适应条件来产生信号的步骤还包括: 当所述渲染引擎的利用率小于阈值时,侦测所述自适应条件。17.如权利要求11所述的图形处理单元的图形处理方法,其特征在于,所述根据侦测的自适应条件来产生信号的步骤还包括: 当所述第一帧以及所述第二帧之间的类似性指标在阈值内,且所述第二帧的至少一部分是被抢占式地刷新时,侦测所述自适应条件。18.如权利要求11所述的图形处理单元的图形处理方法,其特征在于,所述刷新所述第一帧的所述一个或多个区块的步骤还包括: 当镶嵌对象到达分级时,使所述第一帧中的一组区块待刷新,其中,所述的一组区块与所述第二帧的所述镶嵌对象接触。19.如权利要求11所述的图形处理单元的图形处理方法,其特征在于,还包括: 刷新所述一个或多个区块以移除多个迭代的图形对象产生的区块数据,其中,在每个所述多个迭代的所述区块数据的一部分产生于所述图形对象且被刷新,以使所述分级缓冲器的芯片上元件具有充分的容量来储存遍及所述多个迭代的所述区块数据,直到所述图形对象被完全地刷新。20.如权利要求11所述的图形处理单元的图形处理方法,其特征在于,还包括: 当恢复刷新所述第二帧时,恢复对所述第一帧中未分级部分的分级。
【文档编号】G06T1/20GK105825468SQ201510456551
【公开日】2016年8月3日
【申请日】2015年7月30日
【发明人】吕坚平, 廖群峰, 黄锡霖, 赵夏阳
【申请人】联发科技(新加坡)私人有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1