具有任意块(tile)形状的自适应划分机制以用于基于块的渲染GPU架构的制作方法

文档序号:12142287阅读:443来源:国知局
具有任意块(tile)形状的自适应划分机制以用于基于块的渲染GPU架构的制作方法与工艺

概括地说,本公开内容涉及电子领域。具体地说,本公开内容涉及具有任意块(tile)形状的自适应划分机制以用于基于块的渲染GPU(图形处理单元)架构。



背景技术:

随着集成电路(IC)制造技术提高,制造商能够将另外的功能集成到单个硅片基底上。但是,随着这些功能的数量增加,单个IC芯片上的组件的数量也增加。另外的组件增加另外的信号切换,转而产生更多的热量。这种另外的热量可能由于例如热膨胀而损害IC芯片。此外,这种另外的热量可能限制包括这些芯片的计算设备的使用位置和/或应用。例如,便携式计算设备可能完全地依赖于电池功率。因此,随着将另外的功能集成到便携式计算设备,减少功耗的需求变得日益重要,例如,以便将电池电量维持延长的一段时间。此外,随着非便携式计算系统的IC组件使用更多的功率和产生更多的热量,其还面临着冷却和能量生成问题。

趋向于使用相对大量的功率并对性能具有显著影响的一种类型的组件,是一些集成电路芯片上包括的图形电路。因此,控制图形电路的功耗和/或操作,可以对于整体系统功耗和/或性能具有直接影响。

附图说明

参照附图提供具体实施方式。在这些附图中,附图标记的最左侧数字标识该附图标记第一次出现时的附图。在不同的附图中对于相同附图标记的使用,指示类似或相同的项。

图1、图3A、图3B和图7-9示出了可以用于实现本文所讨论的各种实施例的计算系统的实施例的框图。

图2根据实施例,示出了一种具有块划分的场景。

图4A根据实施例,示出了一种两级块结构。

图4B根据实施例,示出了超级块表的框图。

图4C根据实施例,示出了图元交叉代价缓冲区的框图。

图5A根据实施例,示出了用于样本帧的图元交叉代价结果。

图5B根据实施例,示出了一种基于搜索的超级块生成机制。

图5C根据实施例,示出了图像数据从块缓冲区到帧缓冲区的流动。

图6根据一些实施例,示出了一种用于执行基于块的渲染操作的方法的流程图。

具体实施方式

在下面的描述中,为了提供对于各个实施例的透彻理解,对众多特定细节进行了阐述。但是,可以在不使用这些特定细节的情况下,实现各个实施例。在其它实例中,为了不对特定的实施例造成模糊,没有详细地描述公知的方法、过程、组件和电路。此外,可以使用诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)或者硬件和软件的某种组合之类的各种方式,来执行实施例的各个方面。为了便于本公开内容的说明目的,对于“逻辑”的引用应当意味着硬件、软件、固件或者其某种组合。

一些实施例提供了一种具有任意块(tile)形状的自适应划分机制以用于基于块的渲染图形逻辑。如本文所讨论的,“块(tile)”通常指代进行考虑的场景或图像帧的一部分,以用于由图形逻辑进行处理(例如,用于图形处理、渲染等等)。该图形逻辑可以包括GPU(图形处理单元)或者其它类型的与执行图形任务有关的计算(例如,对图像、帧、场景等等进行操纵的操作)的逻辑,例如,如本文所进一步讨论的。虽然参照图形逻辑讨论了一些实施例,但实施例并不限于与图形有关的逻辑,其还可以应用于其它类型的非图形(例如,通用目的)逻辑。此外,针对诸如桌面型计算机、移动计算机(例如,智能电话、平板设备、UMPC(超级移动个人计算机)、膝上型计算机、UltrabookTM(超级本)计算设备、智能手表、智能眼镜等)、工作站等等之类的任何类型的计算设备,可以执行各种实施例,在一个实施例中,这些计算设备可以在SOC(片上系统)平台上体现。

此外,本文所讨论的场景、图像或者帧(例如,在各个实施例中,其可以由图形逻辑来处理)可以由图像捕捉设备(例如,数码相机(其可以嵌入在诸如智能电话、平板设备、膝上型计算机、独立照相机等等之类的另一设备中)或模拟设备(其捕捉的图像随后被转换成数字形式))进行捕捉。此外,本文讨论的场景、图像或者帧可以由艺术设计、游戏设计或者任何类型的3D/2D(二维/三维)工业设计来生成。例如,场景可以指代一组几何结构和相关的纹理图、照明效果等等。此外,在一个实施例中,图像捕捉设备能够捕捉多个帧。此外,在一些实施例中,在计算机上设计/生成场景的帧中的一个或多个。此外,可以经由显示器(例如,参照图7和/或图8所讨论的显示器,其包括例如平板显示设备等等)来呈现场景的帧中的一个或多个。

此外,一些基于块的SOC GPU架构可以使用参数缓冲区自由设计,这种设计可以通过避免针对参数数据的读操作和写操作,来提高性能和减少功耗。相应地,可以使用两遍顶点着色机制来获得用于块映射(例如,以发现图元所属于的块)和属性计算的参数位置。如本文所讨论的,“图元”通常指代图形逻辑能够进行处理(例如,绘制、存储等等)的(例如,几何)形状(比如点、线、三角等等)。由于重复的读操作和顶点数据的计算,因此跨越几个块的图元的顶点渲染将耗费更多的代价(例如,就功率和/或性能损失而言)。

为此,一些实施例提供了一种自适应块划分方式,以缓解参数缓冲区自由设计中的冗余顶点数据读操作和计算操作。因此,这些实施例减少了功耗和/或增加了性能,并且其还可以减少缓冲区大小要求和半导体凸块代价。

一些实施例可以应用于包括一个或多个处理器(例如,具有一个或多个处理器核)的计算系统,比如参照图1-9所讨论的那些,例如,其包括诸如智能电话、平板设备、UMPC(超级移动个人计算机)、膝上型计算机、UltrabookTM(超级本)计算设备、智能手表、智能眼镜等等等之类的移动计算设备。具体而言,图1根据一个实施例,示出了一种计算系统100的框图。系统100可以包括一个或多个处理器102-1到102-N(本文通常称为“处理器(多个)102”或“处理器102”)。在各个实施例中,处理器102可以是通用CPU和/或GPU。处理器102可以经由互连或总线104来进行通信。每一个处理器可以包括各种组件,为了清楚说明起见,仅仅参照处理器102-1来讨论这些组件中的一些。因此,剩余的处理器102-2到102-N中的每一个可以包括参照处理102-1所讨论的相同或者类似组件。

在实施例中,处理器102-1可以包括一个或多个处理器核106-1到106-M(本文称为“核106(多个)”或“核106”)、高速缓存108和/或路由器110。可以将处理器核106实现在单个集成电路(IC)芯片上。此外,该芯片可以包括一个或多个共享的和/或专用的高速缓存(例如,高速缓存108)、总线或者互连(例如,总线或者互连112)、图形和/或存储器控制器(例如,参照图7-9所讨论的那些)或者其它组件。

在一个实施例中,路由器110可以用于处理器102-1的各个组件和/或系统100之间的通信。此外,处理器102-1可以包括一个以上的路由器110。此外,众多的路由器110可以进行通信,以使数据在位于处理器102-1之内或者之外的各个组件之间进行路由。

高速缓存108可以存储由处理器102-1的一个或多个组件(例如,核106)使用的数据(例如,其包括指令)。例如,高速缓存108可以对存储器114中存储的数据进行本地高速缓存,以便处理器102的组件进行更快速地访问(例如,核106进行更快速地访问)。如图1中所示,存储器114可以经由互连104,与处理器102进行通信。在一个实施例中,(可以进行共享的)高速缓存108可以是中级高速缓存(MLC)、最后一级高速缓存(LLC)等等。此外,核106中的每一个都可以包括一级(L1)高速缓存(116-1)(本文通常称为“L1高速缓存116”)或者其它级的高速缓存(如,二级(L2)高速缓存)。此外,处理器102-1的各个组件可以直接通过总线(例如,总线112)和/或存储器控制器或集线器,与高速缓存108进行通信。

如图1中所示,处理器102还可以包括图形逻辑140,以执行诸如本文所讨论的与各种图形有关的操作。逻辑140可以访问本文所讨论的一个或多个存储设备(例如,高速缓存108、L1高速缓存116、存储器114、寄存器或者系统100中的另一个存储器),以存储与逻辑140的操作有关的信息,比如,利用系统100的各个组件进行传输的信息(如本文所讨论的)。此外,虽然将逻辑140示出为位于处理器102之内,但在各个实施例中,其可以位于系统100中的任意位置。例如,逻辑140可以替换核106中的一个,可以直接耦合到互连112和/或互连104等等。

基于图元的屏幕位置信息,图形逻辑(例如,逻辑140)自适应地划分具有任意形状的块(例如,但不必需是矩形),以减少跨不同的块的图元的数量;因此,减少了冗余计算和存储器读操作。这种块划分机制自适应地设置块形状来匹配高代价图元的形状,并自动地避免块边界穿过密集的图元区域。

图2根据实施例,示出了具有传统的块划分(A)和自适应块划分(B)的场景。该场景具有三个drawcall(绘制调用):drawcall#1渲染月亮和星星,drawcall#2渲染云彩,以及drawcall#3渲染建筑物。假定云彩的网格包含针对每一个顶点的非常复杂的属性列表,并且需要进行某种凹凸纹理映射来给出从模型空间到屏幕空间的最终位置,则如果将云彩网格中的图元分隔到几个块之中,其将耗费更多的代价(例如,就计算量、处理功率和/或功耗而言)。在屏幕上存在四个块T1、T2、T3和T4,线示出了块的边界。

如图2中所可以观察到的,传统的块划分方法(A)产生图元和块之间的很多交叉,而自适应块划分机制(B)通过改变块的形状,可以避免高代价交叉。此外,传统的块划分解决方案(B)采用较大的块,例如,以便减少冗余计算和其参数缓冲区自由设计的存储器访问。但是,其至少需要考虑下面两个问题:(a)其需要较大的块缓冲区,这产生较大的芯片面积和高代价(例如,该解决方案下的块由几百像素乘以几百像素构成,故硬件需要提供一MB的块缓冲区来进行容纳);(b)较大的块可以减少“图元和块之间的交叉”的概率(但是,当前实现方式并不足够智能,例如,由于图元通常随机地跨不同的块,并且对于某些基准而言,可以平均观察到大约10%-20%的冗余计算)。

相比而言,一些实施例使用能够避免高代价图元的冗余处理的自适应块划分机制。

图3A根据实现,示出了具有参数缓冲区的图形处理计算系统的组件的框图。在实施例中,图3A的核侧示出了可以在逻辑140中提供的相同逻辑。在存贮器件/存储器侧(例如,其可以与参照图1或图7-9所讨论的存贮器件/存储器设备相同或者类似),给出了VBO(顶点缓冲对象)存贮器件302和参数缓冲区304,以便分别存储顶点对象和中间顶点着色数据。通常,基于块的渲染架构以图元方式来执行顶点着色,但以块方式来执行像素着色。为了支持这种类型的方式转换,使用称为参数缓冲区304的存储器缓冲区来存储顶点着色(VS)逻辑306所产生的中间结果。如图3A中所示,将VBO数据(例如,其存储在VOB存贮器件302中)传送到逻辑VS 306(以执行顶点着色操作),接着传送到剔除(culling)逻辑308(例如,以删除位于检视区之外的图元),并随后存储在参数缓冲区304中,以便栅格逻辑310进行后续处理(例如,对帧中的图元进行栅格化)。

结果,参数缓冲区304造成了使用另外的存储器业务,这是由于图元数据可能位于一个以上的块之中(这称为图元和块的交叉)。参数缓冲区304需要存储器的相对较大部分来记录顶点着色逻辑306所生成的属性和每一块的数据结构。对于某些基准来说,参数缓冲区的大小可以是10MB到100MB。此外,对于参数缓冲区304的每一次访问将耗费额外的带宽。

图3B示出了可以在一些实施例中使用的,不具有参数缓冲区的图形处理计算系统的组件的框图。在实施例中,图3B的核侧示出了可以在逻辑140中提供的样本逻辑。具体而言,一些实现可以使用两遍顶点着色(例如,如图3B中的VS逻辑306-1和306-2所示出的),以便能够省略图3A的参数缓冲区304。对于这种参数缓冲区自由设计而言,顶点着色逻辑没有位置来存储顶点着色结果。具体而言,将顶点着色流程划分成两遍:(1)第一遍(例如,在逻辑306-1处)计算绘制调用(例如,逻辑312,其转而决定图元所落入到的块)的每一次顶点绘制调用的屏幕空间位置;以及(2)第二遍(例如,在逻辑306-2处)是例如针对于每一个块,以块方式进行操作,VS逻辑306-2遍历所有相关的图元,并且执行完整的顶点着色操作。在该设计方案中,由于顶点数据的重复的读操作和计算操作,跨几个块的图元的顶点渲染将耗费更多的代价。使用更大的块大小(例如,几百像素乘以几百像素)可以将这种交叉缓解到某种程度。

此外,更大的块大小可能不能有效地避免所述交叉。对于现有的大块解决方案来说,关于某些基准而言,其可能产生大约10%-20%的冗余顶点着色计算。由这些计算进行的冗余存储器访问可能甚至更大。此外,较大的块大小设计方案需要装备相对较大大小的片上块缓冲区(例如,一些情况下的一MB),这显著地增加芯片面积和代价。

在一些实施例中,减少图元和块的交叉,其转而减少或者避免另外的存储器业务和计算所产生的浪费。

图4A根据实施例,示出了一种两级块结构。如图4A中所示,使用两层的块。将上级的层规定成超级块,即,由402和403所形成的结构。将下级块结构规定成原子块401,其是不可划分的矩形像素块,如本文所讨论的。转而,超级块由一组原子块构成。在一些实施例中,超级块不需要是矩形的。其可以是任何形状。但是,超级块的大小不能超过块缓冲区大小。

在图4A中,原子块具有16x16像素。矩形的超级块402可以是256x256像素。所以,超级块402包含256个原子块。可以向每一个原子块401分配二维标识符(ID),其直接映射到其屏幕位置。可以使用图4B(其中,图4B根据实施例,示出了超级块表的框图)中所示出的超级块表(“STT”),来管理超级块。如图4B中所示,每一个STT可以包含超级块ID和原子块ID(二维屏幕位置)的列表。

图4C根据实施例,示出了图元交叉代价缓冲区的框图。可以将图元交叉代价(PIC)值规定成用于该代价的度量,其中图元跨多个块。该度量可以与顶点属性数字和顶点着色复杂度成比例。在实施例中,根据下面的公式来计算PIC值:

PIC=(αS+βL)*V

在上面的公式中,“S”指代顶点元素的字节大小,“L”是顶点着色长度(其对应于着色逻辑中的指令的数量),α和β分别是PIC中的S和L的权重,α+β=1.0(它们可以进行调整),“V”是图元的顶点的数量。此外,属于相同的绘制调用的图元具有相同的PIC值。

可以将“原子块的PIC”(PICT)规定成:跨当前原子块的图元的PIC值的总和。较高的PICT意味着在相应的原子块中的这些图元的较高渲染代价。这些类型的原子块没有资格被用作超级块的边界。此外,可以将每一个原子块的PICT值存储在图元交叉代价缓冲区(PICB)中,例如,如图4C中所示。将这种缓冲区索引成二维数据结构,例如,其每一个元素映射到屏幕的原子块中(例如,如图4C中所示)。

在实施例中,通过下面的伪代码来创建PICB:

将PICB初始化成零;

For each primitive(对于每一个图元)

For each atomic-Tile[X,Y]intersect with primitive(对于与图元交叉的每一个原子块[X,Y])

PICB[X,Y]+=PIC;

图5A根据实施例,示出了用于样本帧的图元交叉代价结果。在该例子中,屏幕大小是1920x1080像素,其被划分成120x68个大小为16x16像素的原子块。图5A的部分A是PICB的视觉图像,明亮意味着较高的图元交叉代价,灰暗意味着较低的图元交叉代价。图5A的部分B是相应的最终渲染图像。因此,PICB可以仅仅记录用于16x16原子块的一个数字,其采用16比特。与全HD屏幕的16KB片上缓冲区相比,其耗费更少的代价。

在实施例中,使用超级块生成算法(例如,其由逻辑140执行)来获得超级块划分机制。在超级块的边界中,将多个高代价图元组织成彼此之间不跨越的超级块。在实施例中,该超级块生成是基于PICB的扩展过程。其以使用较小的矩形超级块来覆盖最高代价原子块开始。随后,该算法使用基于搜索的第三部分算法(例如,诸如Knapsack问题解算器),对该超级块从其(例如,四个)边界的种子进行增长。该超级块的大小不超过片上可用的块缓冲区大小。图5B根据实施例,示出了基于搜索的超级块生成机制。下一个超级块的生成,将遵循相同的处理,直到生成所有的超级块为止。

图6根据一些实施例,示出了用于执行基于块的渲染操作的方法600的流程图。可以使用本文参照图1-5C和图7-9所讨论的一个或多个组件(例如,其包括图形逻辑140),来执行参照图6所讨论的一个或多个操作。

参见图1-6,响应于在操作602处确定有更多的绘制调用要进行处理,在操作604处,图3B的VS逻辑306-1装载顶点数据(例如,诸如顶点位置、顶点法线和纹理坐标),并以图元方式来执行屏幕位置计算。在操作606处,(例如,逻辑140的)图元交叉代价计算模块计算每一个原子块的PICT。在实施例中,操作604和操作606可以是流水线执行的,或者并行地执行(例如,操作604完成drawcall#1,并且将结果传送到操作606,而操作606对drawcall#1进行处理,同时操作604开始处理drawcall#2)。

一旦没有更多的绘制调用要在操作602处进行处理,则操作608判断是否需要生成更多的超级块。在操作610处,(例如,逻辑410的)超级块生成模块决定超级块的形状和布局。在实施例中,针对操作610的输入来自于(例如,图4C的)PICB。此外,在各个实施例中,可以根据需求,在专用硬件或者统一着色器上执行方法600。在生成一个超级块之后,将超级块表发送给VS逻辑(例如,图3B的VS逻辑306-2),以便在操作612处进行处理。在操作614处,以块方式来执行后续处理(例如,由图3B的栅格逻辑310、像素着色(PS))。在实施例中,操作610可以是流水线工作的,或者与操作612和操作614进行并发地工作。

参见图5C,该图根据实施例,示出了图像数据从块缓冲区到帧缓冲区的流动。如图5C所示,当渲染超级块时,按照一个原子块接一个原子块的方式,将深度和颜色结果高速缓存在片上块缓冲区中。当完全地渲染与该超级块有关的所有绘制调用时,将最终的结果从片上块缓冲区存储在帧缓冲区中,以便在显示设备(例如,本文所讨论的显示设备)上进行后续呈现。

图7根据实施例,示出了计算系统700的框图。计算系统700可以包括经由互连网络(或总线)704进行通信的一个或多个中央处理单元(CPU)702或者处理器。处理器702可以包括通用处理器、网络处理器(其对于在计算机网络703上传输的数据进行处理)、或者其它类型的处理器(其包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。

此外,处理器702可以具有单个或者多个核设计。具有多核设计的处理器702可以将不同类型的处理器核集成在同一集成电路(IC)芯片上。此外,可以将具有多核设计的处理器702实现成对称或者非对称多处理器。在实施例中,处理器702中的一个或多个可以与图1的处理器102相同或者类似。例如,系统700的一个或多个组件可以包括参照图1-6所讨论的逻辑140。此外,参照图1-6所讨论的操作可以由系统700中的一个或多个组件来执行。

芯片集706还可以与互连网络704进行通信。芯片集706可以包括图形存储器控制集线器(GMCH)708,后者可以位于系统700的各个组件中(例如,如图7中所示出的那些)。GMCH 708可以包括与存储器712(其可以与图1的存储器114相同或者类似)进行通信的存储器控制器710。存储器712可以存储数据(其包括指令序列),其中该数据可以由CPU 702或者计算系统700中包括的任何其它设备来执行。在一个实施例中,存储器712可以包括诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或者其它类型的存贮器件之类的一个或多个易失性存贮(或者存储器)器件。此外,还可以使用诸如硬盘之类的非易失性存储器。另外的设备可以经由互连网络704进行通信,例如,多个CPU和/或多个系统存储器。

GMCH 708还可以包括与显示设备716进行通信的图形接口714。在一个实施例中,图形接口714可以经由加速图形端口(AGP)或者外围组件互连(PCI)(或者PCI快速(PCIe)接口),与显示设备716进行通信。在实施例中,显示器716(例如,平板显示器)可以通过例如信号转换器,与图形接口714进行通信,其中该信号转换器将诸如视频存储器或系统存储器之类的存贮器件中存储的图像的数字表示,转换成由显示器716进行解释和显示的显示信号。在显示设备所产生的显示信号被解释并在显示器716上进行后续显示之前,可以传送通过各种控制设备。

集线器接口718可以允许GMCH 708和输入/输出控制集线器(ICH)720进行通信。ICH 720可以提供针对与计算系统700进行通信的I/O设备的接口。ICH 720可以通过诸如外围组件互连(PCI)桥、通用串行总线(USB)控制器或者其它类型的外围桥或控制器之类的外围桥(或控制器)724,与总线722进行通信。桥724可以提供CPU 702和外围设备之间的数据路径。可以使用其它类型的拓扑。此外,多个总线可以例如通过多个桥或控制器,与ICH 720进行通信。此外,在各个实施例中,与ICH 720进行通信的其它外围设备可以包括电子集成驱动器(IDE)或者小型计算机系统接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持(例如,数字视频接口(DVI))或者其它设备。

总线722可以与音频设备726、一个或多个盘驱动器728和网络接口设备730(其与计算机网络703进行通信)进行通信。其它设备可以经由总线722进行通信。此外,在一些实施例中,各个组件(例如,网络接口设备730)可以与GMCH 708进行通信。此外,可以对处理器702和GMCH 708进行组合以形成单个芯片。此外,在其它实施例中,可以将图形加速器包括在GMCH 708中。

此外,计算系统700可以包括易失性和/或非易失性存储器(或存贮器件)。例如,非易失性存储器可以包括下面中的一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电子EPROM(EEPROM)、磁盘驱动器(例如,728)、软盘、压缩盘ROM(CD-ROM)、数字多用途光碟(DVD)、闪存、磁光碟或者能够存储电数据(例如,其包括指令)的其它类型的非易失性机器可读介质。

图8根据实施例,示出了以点对点(PtP)配置来布置的计算系统800。具体而言,图8示出了在其中通过多个点对点接口来进行互连的处理器、存储器和输入/输出设备的系统。参照图1-7所讨论的操作可以由系统800的一个或多个组件来执行。

如图8中所示,系统800可以包括几个处理器,为了清楚说明起见,只示出了两个,处理器802和处理器804。处理器802和处理器804中的每一个可以包括本地存储器控制器集线器(MCH)806和MCH 808,以实现与存储器810和存储器812的通信。存储器810和/或存储器812可以存储诸如参照图7的存储器712所讨论的那些数据之类的各种数据。

在实施例中,处理器802和处理器804可以是参照图7所讨论的处理器702中的一个。处理器802和处理器804可以分别使用点对点(PtP)接口电路816和818,经由PtP接口814来交换数据。此外,处理器802和804中的每一个可以使用点对点接口电路826、828、830和832,经由单独的PtP接口822和824与芯片集820交换数据。此外,芯片集820还可以经由图形接口836(例如,使用PtP接口电路837),与图形电路834交换数据。

可以在处理器802和处理器804中提供至少一个实施例。例如,系统800的一个或多个组件可以包括图1-7的逻辑140,后者包括位于处理器802和处理器804之内。但是,其它实施例可以位于图8的系统800中的其它电路、逻辑单元或者设备之内。此外,其它实施例可以分布在图8中所示出的几个电路、逻辑单元或者设备之中。

芯片集820可以使用PtP接口电路841,与总线840进行通信。总线840可以与一个或多个设备(例如,总线桥842和I/O设备843)进行通信。经由总线844,总线桥842可以与诸如键盘/鼠标845、通信设备846(例如,调制解调器、网络接口设备或者与计算机网络703进行通信的其它通信设备)、音频I/O设备847和/或数据存储设备848之类的其它设备进行通信。数据存储设备848可以存储能由处理器802和/或处理器804进行执行的代码849。

在一些实施例中,本文所讨论的组件中的一个或多个可以体现成片上系统(SOC)设备。图9根据实施例,示出了SOC封装的框图。如图9中所示,SOC 902包括一个或多个中央处理单元(CPU)核920、一个或多个图形处理器单元(GPU)核930、输入/输出(I/O)接口940和存储器控制器942。SOC封装902的各个组件可以耦合到诸如本文参照其它附图所讨论的互连或者总线。此外,SOC封装902可以包括更多或者更少的组件,例如,本文参照其它附图所讨论的那些组件。此外,SOC封装920的每一个组件可以包括一个或多个其它组件,例如,如参照本文的其它附图所讨论的。在实施例中,在一个或多个集成电路(IC)芯片(例如,其封装在单个半导体器件中)上提供SOC封装902(以及其组件)。

如图9中所示,SOC封装902经由存储器控制器942,耦合到存储器960(其可以与本文参照其它附图所讨论的存储器相似或者相同)。在实施例中,可以将存储器960(或者其一部分)集成在SOC封装902上。

I/O接口940可以例如经由诸如本文参照其它附图所讨论的互连和/或总线,耦合到一个或多个I/O设备970。I/O设备970可以包括下面中的一个或多个:键盘、鼠标、触摸板、显示器、图像/视频捕捉设备(例如,照相机或者便携式摄像机/视频记录仪)、触摸屏、扬声器等等。此外,在实施例中,SOC封装902可以包括/集成逻辑140。替代地,可以在SOC封装902之外,提供逻辑140(即,作为分立逻辑)。

下面的例子与另外的实施例有关。示例1包括一种装置,该装置包括逻辑,其中该逻辑至少部分地包括硬件逻辑,用于至少部分地基于图像的图元的顶点元素大小、顶点着色器长度和顶点的数量,来确定该图像的每一个原子块的图元交叉代价值。示例2包括示例1所述的装置,其中,所述原子块包括不可划分的矩形像素块。示例3包括示例1所述的装置,其中,所述逻辑进一步基于每一个原子块值的图元交叉代价值,来生成超级块。示例4包括示例3所述的装置,其中,所述逻辑进一步针对所述超级块来执行一个或多个顶点着色操作。示例5包括示例3所述的装置,其中,所述逻辑进一步针对所述超级块来执行一个或多个栅格化操作。示例6包括示例1所述的装置,其中,所述逻辑进一步装载顶点数据并且执行屏幕位置计算,其中所述顶点数据包括顶点位置、顶点法线和纹理坐标。示例7包括示例1所述的装置,其中,所述逻辑用于至少部分地基于所述顶点元素大小、所述顶点着色器长度、所述顶点的数量、所述顶点元素大小的权重和所述顶点着色器长度的权重,来确定所述图元交叉代价值。示例8包括示例1所述的装置,其中,处理器包括所述逻辑。示例9包括示例1所述的装置,其中,具有一个或多个处理器核的处理器、所述逻辑或者存储器,位于单个集成电路芯片上。

示例10包括一种方法,该方法包括:至少部分地基于图像的图元顶点元素大小、顶点着色器长度和的顶点的数量,来确定该图像的每一个原子块的图元交叉代价值。示例11包括示例10所述的方法,其还包括基于每一个原子块值的图元交叉代价值,来生成超级块。示例12包括示例11所述的方法,其还包括针对所述超级块来执行一个或多个顶点着色操作。示例13包括示例11所述的方法,其还包括针对所述超级块来执行一个或多个栅格化操作。示例14包括示例10所述的方法,其还包括装载顶点数据并且执行屏幕位置计算,其中所述顶点数据包括顶点位置、顶点法线和纹理坐标。示例15包括示例10所述的方法,其还包括至少部分地基于所述顶点元素大小、所述顶点着色器长度、所述顶点的数量、所述顶点元素大小的权重和所述顶点着色器长度的权重,来确定所述图元交叉代价值。

示例16包括一种包含一个或多个指令的计算机可读介质,其中当所述一个或多个指令在处理器上执行时,配置该处理器执行示例10到15中的任何一个方面的一个或多个操作。

示例17包括一种系统,该系统包括:具有一个或多个处理器核的处理器;存储器,其用于存储与场景的至少一个帧相对应的数据,以便由所述一个或多个处理器核中的至少一个进行访问;显示设备,其用于呈现所述场景的所述至少一个帧;用于至少部分地基于所述帧的图元的顶点元素大小、顶点着色器长度和顶点的数量,来确定所述帧的每一个原子块的图元交叉代价值的逻辑。示例18包括示例17所述的系统,其中,所述原子块包括不可划分的矩形像素块。示例19包括示例17所述的系统,其中,所述逻辑进一步基于每一个原子块值的图元交叉代价值,来生成超级块。示例20包括示例19所述的系统,其中,所述逻辑进一步针对所述超级块执行一个或多个顶点着色操作。示例21包括示例19所述的系统,其中,所述逻辑进一步针对所述超级块执行一个或多个栅格化操作。示例22包括示例17所述的系统,其中,所述逻辑进一步装载顶点数据并且执行屏幕位置计算,其中所述顶点数据包括顶点位置、顶点法线和纹理坐标。示例23包括示例17所述的系统,其中,所述逻辑用于至少部分地基于所述顶点元素大小、所述顶点着色器长度、所述顶点的数量、所述顶点元素大小的权重和所述顶点着色器长度的权重,来确定所述图元交叉代价值。示例24包括示例17所述的系统,其中,所述处理器包括所述逻辑。示例25包括示例17所述的系统,其中,所述处理器核中的一个或多个、所述逻辑或者所述存储器,位于单个集成电路芯片上。

示例26包括一种包含一个或多个指令的计算机可读介质,其中当所述一个或多个指令在处理器上执行时,配置该处理器执行一个或多个操作,以用于:至少部分地基于图像的图元的顶点元素大小、顶点着色器长度和顶点的数量,来确定该图像的每一个原子块的图元交叉代价值。示例27包括示例26所述的计算机可读介质,其还包括一个或多个指令,当所述一个或多个指令在处理器上执行时,配置该处理器执行一个或多个操作,以使超级块的生成基于每一个原子块值的图元交叉代价值。示例28包括示例27所述的计算机可读介质,其还包括一个或多个指令,当所述一个或多个指令在处理器上执行时,配置该处理器执行一个或多个操作,以引起针对所述超级块执行一个或多个顶点着色操作。示例29包括示例27所述的计算机可读介质,其还包括一个或多个指令,当所述一个或多个指令在处理器上执行时,配置该处理器执行一个或多个操作,以引起针对所述超级块执行一个或多个栅格化操作。示例30包括示例26所述的计算机可读介质,其还包括一个或多个指令,当所述一个或多个指令在处理器上执行时,配置该处理器执行一个或多个操作,以使得装载顶点数据和执行屏幕位置计算,其中所述顶点数据包括顶点位置、顶点法线和纹理坐标。示例31包括示例26所述的计算机可读介质,其还包括一个或多个指令,当所述一个或多个指令在处理器上执行时,配置该处理器执行一个或多个操作,以至少部分地基于所述顶点元素大小、所述顶点着色器长度、所述顶点的数量、所述顶点元素大小的权重和所述顶点着色器长度的权重,来确定所述图元交叉代价值。

示例32包括一种装置,该装置包括:用于执行如任何前述示例中所阐述的方法的单元。

示例33包括一种包含机器可读指令的机器可读存储器件,当所述机器可读指令被执行时,实现如任何前述示例中所阐述的方法或者意识到如任何前述示例中所阐述的装置。

在各个实施例中,本文例如参照图1-9所讨论的操作可以实现成硬件(例如,逻辑电路)、软件、固件或者其组合,它们可以提供成计算机程序产品,例如,该计算机程序产品包括其上存储有指令(或者软件过程)的有形(如,非临时性)机器可读介质或者计算机可读介质,其中这些指令用于对计算机进行编程以执行本文所讨论的处理。该机器可读介质可以包括诸如参照图1-9所讨论的那些之类的存贮器件。

另外,可以将该计算机可读介质下载作为计算机程序产品,其中,可以通过在载波波形或者其它传播介质中提供的数据信号的方式,经由通信链路(例如,总线、调制解调器或者网络连接),将该程序从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。

说明书中对于“一个实施例”或者“某个实施例”的引用,意味着结合该实施例所描述的特征、结构和/或特性可以包括在至少一个实现中。说明书中各个地方出现的短语“在一个实施例中”,可以全部指代同一实施例,也可以不是指代同一实施例。

此外,在说明书和权利要求书中,可以使用术语“耦合”和“连接”以及它们的派生词。在一些实施例中,可以使用“连接”来指示两个或更多元件彼此之间直接地物理接触或者电接触。“耦合”可以意味着两个或更多元件处于直接地物理接触或者电接触。但是,“耦合”还可以意味着两个或更多元素不是处于彼此之间的直接接触,但仍然可以彼此之间协作或者相互作用。

因此,虽然利用特定于结构特征和/或方法动作的语言来描述实施例,但应当理解的是,所主张的主题并不限于所描述的特定特征或者动作。相反,只是将这些特定的特征和动作公开成实现所主张的主题的示例性形式。

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