在中排序架构中利用帧间相干性的制作方法

文档序号:13765812阅读:132来源:国知局
在中排序架构中利用帧间相干性的制作方法

本申请涉及图形处理。



背景技术:

通常针对移动设备使用中排序(sort-middle)架构。如在任意图形应用中,减少电量使用是非常重要的。

在某种意义上,通过向每个处理器分配基元(primitive)的子集,可以使几何处理并行。通过向每个处理器分配一部分必要的像素计算,可以使光栅化并行。渲染涉及计算在每个像素上的每个基元的效果。基元可以落到实际查看平面上或外的任何位置。渲染将基元排序到屏幕。排序可以发生于几何处理期间,这称作先排序(sort-first);发生于几何处理和光栅化之间,这称作中排序;或发生于光栅化期间,这称作后排序(sort-last)。先排序表示在已知原始基元的屏幕空间参数之前,重新分布原始基元,中排序表示重新分布屏幕空间基元,而后排序表示重新分布像素、样本或像素片段。

附图说明

相对后续附图描述一些实施例:

图1是一个实施例的示意性描绘;

图2是一个实施例的流程图;

图3是一个实施例的系统描绘;以及

图4是一个实施例的前视图。

具体实施方式

在中排序架构中操作时,在先前帧中计算出的像素值可以重新用于当前帧。针对每个瓦片(tile)计算和存储对在瓦片中使用的所有数据的散列或一些其它紧凑表示,包括所有的三角形、均匀、纹理、着色器等。当渲染下一帧时,针对每个瓦片再次计算紧凑表示。在中排序架构中,在光栅化之前存在自然断裂点。在该断裂点处,可以比较紧凑表示和在同一瓦片的先前帧内计算出的紧凑表示。如果这些紧凑表示相同,则没有必要针对该瓦片渲染任何事物。相反,可以将瓦片的先前帧的颜色缓冲器或其它缓冲器的内容移动、或另外重新用于当前帧的瓦片的同一缓冲器。

该技术在光栅化和像素着色(shade)之前工作,并且除了颜色缓冲器外还可以应用于其它缓冲器。

在中排序架构中,有时也称作铺瓦片架构,将屏幕划分为多个瓦片,其是不重叠的矩形区域,并一起覆盖整个屏幕。在第一阶段,将所有的基元(例如,将渲染的三角形)排序到瓦片中,从而对于基元重叠的所有瓦片,将对基元的参考存储于每瓦片的基元列表中。当所有的排序完成时,可以串行或并行对每个瓦片进行光栅化。

该技术利用图像的较大部分通常从一个图像到下一图像是相同的这一事实。该效果通常称作帧间相干性。在此利用帧间相干性来使得图形处理器在功率和性能方面更有效。

在一个实施例中,当创建每瓦片的基元列表时,为每瓦片累积紧凑表示(例如,散列)。紧凑表示可以基于所有的几何结构、输入数据和相对状态,包括所有的基元、均匀、纹理、着色器、混合模式等。当渲染当前帧时,将来自先前帧的紧凑表示存储于存储器中。然后,就在每瓦片光栅化开始之前,确定当前帧的当前瓦片的紧凑表示是否与先前帧的同一瓦片的紧凑表示相同。如果紧凑表示相同,则假设渲染的内容也相同,并因此不需要进行渲染。反而,从先前帧重新使用瓦片中所有像素的颜色。如果压缩表示不相同,则照常进行光栅化、深度测试、像素着色和混合。

除了颜色缓冲器外,该技术还可以用于所有的渲染目标,以及用于深度和模板(stencil)。然而,对于当前渲染目标,例如将在屏幕上显示的颜色缓冲器,一些其它的优化是可以的。当例如使用嵌入显示端口(eDP)规范版本1.4/1.5(以及更高)时,这些技术可以结合局部帧更新使用,同时处于面板软刷新(PSR)模式。基本上,算法检测当前帧的特定瓦片与先前帧的对应瓦片相同,因此不需要光栅化和所有后续步骤。因此,当将数据转移到显示器时,可以针对与先前帧相同的那些瓦片避免发送数据。最后,当帧结束时,当前帧的紧凑表示必需移动到先前帧紧凑表示表格,并被清除以供将来使用。替代地,可以只交换当前帧与先前帧的指针。为了避免存储器突发(burst),可以考虑懒惰置换(lazy replacement),添加单个位来识别当前帧。

所选的紧凑表示可以遵守一个或多个下列标准:(1)允许循序处理块,以便累积每瓦片的全部散列值;(2)最小化误报,因为它们可能生成可见伪像;以及(3)生成适度大小的散列值,以减小散列表格的存储开销。

鉴于生成每瓦片的输出散列值仅用于比较的目的这一事实,在一些实施例中,任意简单的循环冗余校验或校验和函数是足够的。如果期望散列碰撞的较小可能性,则可以以较重的计算要求为代价使用甚至利用Merkle-Damguard结构的密码散列函数(例如,MD5)。

另外,取代存储散列,识别符可以是针对完全覆盖帧结束处的瓦片的绘制调用所存储的全体。如果绘制调用是静态的,因为所有的均匀、纹理和着色器等保持相同直到下一帧,并且发现相同的绘制调用将再次完全覆盖瓦片,则可以避免对该瓦片的所有处理并且重新使用来自先前帧的内容。要出现这种情况,例如可以测试是否存在单个三角形完全重叠瓦片,并且测试瓦片基元列表中的所有其它三角形是否被所述三角形挡住。另一方法是确定瓦片是否被当前帧中的绘制调用中的三角形的子集完全覆盖,并且在后一帧中,如果相同的绘制调用是完全相同并且在所述瓦片中的所有其它几何结构被挡住,则针对所述瓦片不需要绘制任何事物。

在另一实施例中,可以使用布隆过滤器取代散列。对所述实现方式,可以使用最少两个布隆过滤器,即使还可以考虑两个N较小的布隆过滤器。每对布隆过滤器包括用于不同种类信息的元素。例如,一对可以用于几何结构,另一对可以用于纹理地址,而第三队可以用于着色器。在这些对之外,一对包含用于先前帧的元素,而第二对包含当前帧的对应元素。

在一个实施例中,布隆过滤器算法如具有散列一样工作。当创建三角形列表时,若干散列函数应用于信息上以进行比较。这些散列函数的结果用于对两个布隆过滤器进行索引。对于与当前帧相关的,设置所有索引的位。在另一方面,对于先前帧的布隆过滤器,读取索引的位并且检查确定是否它们全都是一。如果是,则假设渲染的内容是相同的,并重新使用先前帧的颜色。如果否,则序列正常进行。一旦帧结束,则交换布隆过滤器的使用。指向当前帧的一个变成先前帧,并且清除之前的先前帧。

与散列相比使用布隆过滤器的一个优点在于:通常,布隆过滤器需要较少的存储空间来保持所有的信息,尽管它们可能针对多个散列函数要求额外的逻辑。传统上,为得到大约0.5%的误报率所要求的位的数量在布隆过滤器中每元素11-12位的范围内,并且对于该误报率的散列函数的最优数量在6-8个函数的范围内。

参考图1,铺瓦片引擎10可以耦合到光栅流水线12上。铺瓦片引擎10在散列或布隆过滤器计算单元13中接收几何结构、状态信息、着色器信息和纹理地址。将任意状态信息提供给组合流水线结果和任意状态信息的瓦片列表生成器14。该组合的数据存储于瓦片高速缓存22中。

在帧改变处,先前帧散列或布隆过滤器存储设备16倒入到当前帧散列/布隆过滤器存储设备18。瓦片取得器20从光栅流水线12取得瓦片并将它们提供给瓦片高速缓存22。瓦片高速缓存22将数据转移到统一的高速缓存24。

光栅流水线12包括光栅化器26,其耦合到瓦片取得器20和深度测试单元28。多个着色器可以耦合到深度测试单元28。着色器30耦合到颜色缓冲器32、纹理采样器34和深度缓冲器36,这几者反过来耦合到统一的高速缓存24。

如图2所示,序列40可以实现在软件、固件和/或硬件中。在软件和固件实施例中,可以通过存储于一个或多个非瞬态计算机可读介质(例如,磁、光或半导体存储设备)中的计算机执行的指令实现。

所述序列在瓦片列表生成器14中开始,其执行瓦片装箱(tile binning),并还确定针对输入数据受到影响的瓦片标识符,如在框42中所示。然后,在框44中,针对输入数据计算散列或布隆过滤器。对于所有受影响的瓦片,读取当前散列或布隆过滤器,并且累积计算出的散列或过滤器,如框46所示。然后,在菱形48中的检查确定瓦片装箱过程是否完成。如果否,则流程迭代回框42。如果是,则流程进行到瓦片取得器20。

在框50中,获得待取得的下一瓦片标识符。在框52中,对所述瓦片,获得当前散列或过滤器,并且获得来自先前帧的散列或过滤器。在54处检查确定当前和先前散列或过滤器是否匹配。如果是,则在56处,省略瓦片取得,并且避免针对当前瓦片的光栅化。如果否,则在58处,处理瓦片取得并将数据引导到光栅流水线以进行处理。然后,在60处,确定是否存在待取得的任何其它瓦片标识符。如果是,则流程迭代回框50。否则,在62处,当前散列或过滤器值变为先前的散列或过滤器值。

图3示出了系统700的实施例。在实施例中,系统700可以是介质系统,但是系统700不限于该上下文。例如,系统700可以并入到个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传送设备、数据通信设备等。

在实施例中,系统700包括耦合到显示器720上的平台702。平台702可以从内容设备接收内容,所述内容设备例如是内容服务设备730或内容输送设备740或其它类似内容源。包括一个或多个导航特征的导航控制器750可以用于例如与平台702和/或显示器720交互。这些部件中的每个将在下文更详细描述。

在实施例中,平台702可以包括以下的任意组合:芯片组705、处理器710、存储器712、存储设备714、图形子系统715、应用716和/或无线电设备718。芯片组705可以在处理器710、存储器712、存储设备714、图形子系统715、应用716和/或无线电设备718之间提供相互通信。例如,芯片组705可以包括存储适配器(未绘出),其能够提供与存储设备714的相互通信。

处理器710可以实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核、或任意其它微处理器或中央处理单元(CPU)。在实施例中,处理器710可以包括双核处理器、双核移动处理器等。处理器可以与存储器712一起实现图2的序列。

存储器712可以实现为易失性存储器设备,例如但不限于,随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。

存储设备714可以实现为非易失性存储设备,例如但不限于,磁盘驱动、光盘驱动、磁带驱动、内部存储设备、附接存储设备、闪存、电池备份SDRAM(同步DRAM)和/或网络可访问存储设备。在实施例中,存储设备714可以包括当例如包含多个硬驱动时,增加存储性能增强的对有价值的数字介质保护的技术。

图形子系统715可以执行例如,静态的图像或视频的处理以进行显示。例如,图形子系统715可以是图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以用于通信地耦合图形子系统715和显示器720。例如,所述接口可以是以下中的任一个:High-Definition Multimedia Interface、DisplayPort、无线HDMI和/或无线HD兼容技术。图形子系统715可以是集成至处理器710或芯片组705。图形子系统715可以是通信耦合到芯片组705上的独立卡。

本文描述的图形和/或视频处理技术可以实现在各种硬件架构中。例如,图形和/或视频功能可以集成到芯片组中。替代地,可以使用离散图形和/或视频处理器。作为另一实施例,可以由通用处理器(包括多核处理器)实现图形和/或视频功能。在另一实施例中,可以在消费者电子设备中实现所述功能。

无线电设备718可以包括一个或多个无线电设备,其能够利用各种适当的无线通信技术发送和接收信号。这种技术可以涉及跨一个或多个无线网络进行通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络和卫星网络。在跨这些网络通信时,无线电设备718可以根据任意版本的一个或多个可应用标准操作。

在实施例中,显示器720可以包括任意电视机类型的监视器或显示器。显示器720可以例如包括计算机显示屏、触摸屏显示器、视频监视器、电视机状的设备和/或电视机。显示器720可以是数字和/或模拟的。在实施例中,显示器720可以是全息显示器。并且,显示器720可以是接收视觉投影的透明表面。这种投影可以传达各种形式的信息、图像和/或对象。例如,这种投影可以是用于移动增强显示(MAR)应用的视觉覆盖。在一个或多个软件应用716的控制下,平台702可以在显示器720上显示用户界面722。

在实施例中,内容服务设备730可以由任意国家、国际和/或独立服务托管,并因此例如经由互联网对于平台702是可访问的。内容服务设备730可以耦合到平台702和/或显示器720上。平台702和/或内容服务设备730可以耦合到网络760,以向并从网络760通信(例如,发送和/或接收)媒体信息。内容输送设备740也可以耦合到平台702和/或显示器720。

在实施例中,内容服务设备730可以包括有线电视盒、个人计算机、网络、电话、互联网支持设备或能够输送数字信息和/或内容的电器,以及能够经由网络760或直接地在内容提供商和平台702和/或显示器720之间单向或双向通信内容的任意其它类型设备。可以理解的是,可以经由网络760向并从系统700和内容提供商中的任一个部件单向和/或双向通信内容。内容的例子可以包括任意媒体信息,例如包括视频、音乐、医疗和游戏信息等。

内容服务设备730接收例如有线电视节目的内容,包括媒体信息、数字信息和/或其它内容。内容提供商的例子可以包括任意有线或卫星电视或无线电设备或互联网内容提供商。所提供的例子并不打算限制可应用的实施例。

在实施例中,平台702可以从具有一个或多个导航特征件的导航控制器750接收控制信号。例如,控制器750的导航特征件可以用于与用户界面722交互。在实施例中,导航控制件750可以是指点设备,其可以是计算机硬件部件(具体的人机界面设备),其允许用户将空间(例如,连续和多维的)数据输入到计算机。例如图形用户界面(GUI)以及电视机和监视器的许多系统允许用户利用身体姿势控制并提供数据到计算机或电视机。

控制器750的导航特征的移动可以通过指针、光标、聚焦环或其它显示在显示器上的视觉指示符的移动反射到显示器(例如,显示器720)。例如,在软件应用716的控制下,位于导航控制器750上的导航特征件可以例如映射到在用户界面722上显示的虚拟导航特征。在实施例中,控制器750可能不是单独的部件,而是集成到平台702和/或显示器720上。然而,实施例并不局限于本文示出或描述的元素或上下文中。

在实施例中,驱动器(未示出)可以包括如下技术:使得用户能够在初始启动之后,例如在启用时,立即打开和关闭平台702,像按钮触摸情况下的电视机。程序逻辑可以允许平台702在平台被“关闭”时将内容流送到媒体适配器或其它内容服务设备730或内容输送设备740。另外,芯片组705例如可以包括硬件和/或软件支持5.1环绕立体声音频和/或高清晰度7.1环绕立体声音频。驱动器可以包括用于集成图形平台的图形驱动器。在实施例中,图形驱动器可以包括快速外围部件互连(PCI)图形卡。

在各个实施例中,可以集成在系统700中示出的任意一个或多个部件。例如,平台702和内容服务设备730可以是集成的,或者平台702和内容输送设备740可以是集成的,或者平台702、内容服务设备730和内容输送设备740可以是集成的。在各个实施例中,平台702和显示器720可以是集成单元。例如,显示器720和内容服务设备730可以是集成的,或者显示器720和内容输送设备740可以是集成的。这些例子并不打算限制范围。

在各个实施例中,系统700可以实现为无线系统、有线系统或两者的组合。当实现为无线系统时,系统700可以包括适于通过无线共享介质进行通信的部件和接口,例如,一个或多个天线、发送器、接收器、收发器、放大器、过滤器、控制逻辑等。无线共享介质的例子可以包括无线频谱的一部分,例如RF频谱等。当实现为有线系统时,系统700可以包括适于通过有线通信介质进行通信的部件和接口,例如,输入/输出(I/O)适配器、连接I/O适配器和对应的有线通信介质的物理连接器、网络接口卡(NIC)、磁盘控制器、视频控制器、音频控制器等。有线通信介质的例子可以包括电线、电缆、金属导线、印刷电路板(PCB)、背板、交换结构、半导体材料、双绞线、同轴电缆、光纤等。

平台702可以建立一个或多个逻辑或物理通道以通信信息。信息可以包括媒体信息和控制信息。媒体信息可以指的是表示针对用户的内容的任意数据。内容的例子可以例如包括:来自语音会话的数据、视频会议、流送视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等。来自语音会话的数据可以例如是讲话信息、静默时间、背景噪声、舒适噪声、音调等。控制信息可以指的是表示专用于自动系统的命令、指令或控制词语的任何数据。例如,控制信息可以用于路由媒体信息通过系统,或者指示节点以预定方式处理媒体信息。然而,实施例并不局限于图3所示或描述的元素或上下文中。

如上所述,系统700可以实现于变化的物理风格或形状因子。图4示出了可以实现系统700的小形状因子设备800的实施例。在实施例中,例如,设备800可以实现为具有无线能力的移动计算设备。移动计算设备可以指的是具有处理系统和移动电源或供应(例如,一个或多个电池)的任意设备。

如上所述,移动计算设备的例子可以包括个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合的蜂窝电话/PDA、电视机、智能设备(例如,智能电话、智能平板或智能电视机)、移动互联网设备(MID)、消息传送设备、数据通信设备,等等。

移动计算设备的例子还可以包括布置为由人穿戴的计算机,例如,手腕计算机、手指计算机、指环计算机、眼镜计算机、皮带夹计算机、臂带计算机、鞋子计算机、衣服计算机和其它可穿戴计算机。在实施例中,例如,移动计算设备可以实现为智能电话,其能够执行计算机应用以及语音通信和/或数据通信。虽然通过例子的方式通过实现为智能电话的移动计算设备描述了一些实施例,但是可以理解的是,还可以使用其它无线移动计算设备来实现其它实施例。实施例并不局限于该上下文。

后续条款和/或例子属于其它实施例:

一个示例性实施例可以是一种方法,包括:当创建三角形列表时,累积对瓦片的几何结构、输入数据和状态的精简表示;在每瓦片光栅化之前,确定在当前帧中的当前瓦片的表示是否与先前帧和对应瓦片的表示相同;以及如果在先前帧和当前帧中的瓦片的表示相同,则在渲染当前瓦片时重新使用早先瓦片的像素作为当前瓦片的像素。所述方法可以包括:使用散列函数来产生精简表示。所述方法可以包括:使用布隆过滤器来产生精简表示。所述方法可以包括:使用两个布隆过滤器,一个用于当前瓦片,一个用于先前瓦片。所述方法可以包括:针对几何结构、纹理地址和着色器中的每一个使用一对布隆过滤器。所述方法可以包括:在中排序架构中累积。所述方法可以包括:其中,重新使用包括重新使用颜色值。所述方法可以包括:其中,重新使用包括重新使用深度或模板缓冲器。所述方法可以包括:将当前紧凑表示改变为先前紧凑表示。所述方法可以包括:确定针对在连续帧中的相同瓦片是否使用相同的绘制调用,以确定表示是否相同。

另一示例性实施例可以是一种或多种非瞬态计算机可读介质,其存储指令用于实现包括以下的序列:当创建三角形列表时,累积针对瓦片的几何结构、输入数据和状态的精简表示;在每瓦片光栅化之前,确定在当前帧中的当前瓦片的表示是否与先前帧和对应瓦片的表示相同;以及如果在先前帧和当前帧中的瓦片的表示相同,则在渲染当前瓦片时重新使用早先瓦片的像素作为当前瓦片的像素。所述介质可以包括:所述序列包括使用散列函数来产生精简表示。所述介质可以包括:所述序列包括使用布隆过滤器来产生精简表示。所述介质可以包括:所述序列包括使用两个布隆过滤器,一个用于当前瓦片,一个用于先前瓦片。所述介质可以包括:所述序列包括针对几何结构、纹理地址和着色器中的每一个使用一对布隆过滤器。所述介质可以包括:所述序列包括在中排序架构中累积。所述介质可以包括:其中,重新使用包括重新使用颜色值。所述介质可以包括:其中,重新使用包括重新使用深度或模板缓冲器。所述介质可以包括:所述序列包括确定针对在连续帧中的相同瓦片是否使用相同的绘制调用,以确定表示是否相同。

在另一示例性实施例中,可以是一种装置,包括:处理器,用于当创建三角形列表时,累积针对瓦片的几何结构、输入数据和状态的精简表示;在每瓦片光栅化之前,确定在当前帧中的当前瓦片的表示是否与先前帧和对应瓦片的表示相同;以及如果在先前帧和当前帧中的瓦片的表示相同,则在渲染当前瓦片时重新使用早先瓦片的像素作为当前瓦片的像素;以及与所述处理器耦合的存储设备。所述装置可以包括:所述处理器用于使用散列函数来产生精简表示。所述装置可以包括:布隆过滤器,用于产生精简表示。所述装置可以包括:两个布隆过滤器,一个用于当前瓦片,一个用于先前瓦片。所述装置可以包括:一对布隆过滤器,用于几何结构、纹理地址和着色器中的每一个。所述装置可以包括:所述处理器用于在中排序架构中累积。所述装置可以包括:所述处理器用于当紧凑表示相同时,避免发送数据用于显示。所述装置可以包括:所述处理器用于确定针对在连续帧中的相同瓦片是否使用相同的绘制调用,以确定表示是否相同。所述装置可以包括电池。所述装置可以包括:固件和用于更新所述固件的模块。

本文描述的图形处理技术可以实现于各种硬件架构中。例如,图形功能可以集成到芯片组中。替代地,可以使用离散图形处理器。作为另一实施例,可以通过通用处理器(包括多核处理器)实现图形功能。

贯穿该说明书提及“一个实施例”或“实施例”表示结合实施例描述的特定特征、结构或特性包含于在本公开内涵盖的至少一个实现方式中。因此,出现短语“一个实施例”或“在实施例中”不必指代同一实施例。此外,可以以不同于图示的特定实施例的其它适当形式设置特定的特征、结构或特性,并且所有这种形式可以包含于本申请的权利要求中。

虽然已经描述了有限数量的实施例,但是本领域技术人员可以理解对其的多种修改和变型。随附权利要求意图覆盖落入本公开的真实精神和范围内的所有这些修改和变型。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1