三维图形管线的自动负载平衡的制作方法

文档序号:6476107阅读:369来源:国知局
专利名称:三维图形管线的自动负载平衡的制作方法
技术领域
本发明大体上涉及图像处理,且更具体地说,涉及用于使三维(3D)图形管线负载 平衡以用于由交错多线程处理器处理的快速像素渲染处理的技术。
背景技术
将关于3D对象的信息转换成可被显示的位图被称为像素渲染,且需要相当大的存 储器和处理能力。在过去,3D图形仅在强大的工作站上可用,但现在3D图形加速器在 个人计算机(PC)中是常见的。硬件图形加速器含有存储器(例如,指令随机存取存储 器(IRAM))和专用微处理器以处理3D渲染操作中的许多操作。用于桌上型计算机的 OpenGL (开放性图形库)定义用于写入产生3D和2D计算机图形的应用程序的应用 编程接口 (API)。所述API包含用于从图元(primitive)绘制复杂的三维场景的数百个 函数。
OpenGL ES为桌上型计算机OpenGL②的子集,其形成软件与图形之间的接口 。将 3D图形引擎(OpenGL ES)实施成大体上两个部分。第一部分包含处理顶点的那些函 数,且通常在数字信号处理(DSP)固件中实施。第二部分包含用于像素渲染的那些函 数,且在专用硬件图形加速器中实施。执行像素渲染的第二部分是常规3D图形引擎的 最后一个管线级。所述最后一个管线级处理输入三角形集合以产生图形图像的像素表 示。然而,最后一个管线级通常是引擎中整个3D图形管线的性能瓶颈。因此,改进用 于像素渲染的最后一个管线级的性能(以像素每秒来计)是非常重要的。
通常,在像素渲染操作期间,需要以与三角形被输入的次序相同的次序依序处理每 一输入三角形。因此,防止具有多个线程的处理器利用交错并行处理来处理输入三角形。
此外,硬件图形加速器通常并不灵活或不容易缩放。因此,硬件图形加速器无法容 易地添加新特征,支持3D图形标准的较高版本(例如,OpenGL ES 1.0、 1.1...),支持 不同应用程序配置和定制要求。此外,硬件图形加速器不容易縮放以用于不同的性能要 求(帧速率、屏幕大小、像素速率、三角形速率等...),从而优化硅成本和系统功率消 耗。
7如可容易看到,专用硬件图形加速器占用小型手持式计算装置(例如,移动或蜂窝 式电话)中的硅面积。因此,由于包含所使用的专用硬件图形加速器和IRAM,专用硬 件图形加速器增加手持式计算装置的总成本。使用专用硬件图形加速器还产生与DSP 的数据业务,这增加开销且消耗功率。
因此此项技术中需要用于使三维(3D)图形管线负载平衡以提供较快像素渲染处理 的技术。

发明内容
本文中描述用于三维(3D)图形管线的技术,其在没有专用硬件图形加速器的情况 下提供较快的像素渲染处理。在一方面中,实施包括多个处理线程的处理器。每一处理 线程确定用于像素渲染操作的子屏幕任务在任务列表中是否可用。如果子屏幕任务可 用,那么每一处理线程进一步对子屏幕任务执行像素渲染操作。然而,如果子屏幕任务 不可用,那么每一处理线程执行顶点处理操作,以平衡三维(3D)图形管线的工作负载。
在另一方面中,实施包括具有多个处理线程的处理器的无线装置。当数据可用于像 素渲染操作时,每一处理线程将三维图形管线的像素渲染操作列为优先于顶点处理操 作。所述处理器耦合到存储器。
在下文中进一步详细地描述本发明的各个方面和实施例。


从下文结合图式而陈述的详细描述将更明白本发明的方面和实施例,在图式中,相
同参考符号始终对应地标识。
图1说明3D成像设备的通用框图。
图2说明与共享存储器介接的交错多线程处理器。
图3说明交错多线程处理器的细节,其中展示每一线程的细节。
图4说明由具有六个线程的多线程处理器处理的交错指令的执行时间对核心管线的图表。
图5说明由两个线程处理的两个并行指令集。
图6说明示范性3D成像设备中的3D图形管线的通用流程图。
图7说明3D图形管线的处理的通用框图。
图8A说明被细分成MXN网格的显示空间,其中M>1且NM。 图8B说明用于处理图8A的经细分显示空间的任务(TASK)列表。图9说明被细分成MXN网格的显示空间,其中M=l且NM。 图IO说明被细分成MXN网格的显示空间,其中M>1且N4。 图11说明由具有多个像素的顶点坐标界定的三角形。
图12说明用于处理被细分成一组四个经细分区域的区域中的三角形的指令操作的 图形表示。
图13说明使用多线程处理器的3D图形管线方法的流程图。 图14说明共享存储器中的管线队列的通用框图。
图15说明用于在每线程基础上使3D图形管线负载平衡的方法的流程图。
具体实施例方式
本文使用词语"示范性"来表示"充当实例、例子或说明"。本文描述为"示范 性"的任何实施例或设计均不一定被解释为比其它实施例或设计优选或有利。
许多游戏应用程序需要在二维(2D)空间(例如,显示屏幕)中显示三维(3D) 对象的3D图形应用程序。2D图形中的像素具有位置、色彩和亮度的特性,而3D像素 添加了深度特性,所述深度特性指示点位于虚Z轴上的哪一位置。当每一者具有其本身 的深度值的3D像素被组合时,形成纹理。
现在参看图1,展示以IO概括表示的3D成像设备的实施例。3D成像设备10包含 通信单元12、数字信号处理器(DSP) 20、具有显示区域18的屏幕16、存储器24和输 入/输出(I/O)单元45。共享存储器24可在用户需要时存储游戏应用程序或其它应用程 序(即,用于与有线或无线网络以及其它软件应用程序的双向通信),或用以支持设备 IO的特征集合。1/0单元45可包含小键盘、键盘或数据通信端口。屏幕16可操作以在 显示区域18中显示2D信息以及3D图形。
3D成像设备IO可包含个人数字助理(PDA)以及移动、蜂窝式或卫星电话、膝上 型计算机、笔记本型计算机、平板(Tablet) PC、掌上电脑(Palm Pilot)、无线通信装 置或其类似物中的一者。
现在参看图2到图5,在示范性实施例中,DSP20包含交错多线程处理器22。所述 交错多线程处理器22具有多个处理线程(PT) PT1、 PT2、 ...PTX。每一处理线程(PT) PT1、 PT2、 ...PTX共享被表示为共享存储器24的同一存储器。每一处理线程PT1、 PT2、 ...PTX包含相应的一组指令26!…26x、核心27,...27x (处理单元)和寄存器堆 28l.,28x。每一核心27卜.27x的输出与共享存储器24通信。指令26。..26x包含用于实 行下文所定义的操作以及用于实行特征集合(例如,3D成像设备IO的多媒体)的其它
9操作的编程代码。核心27^..27x执行指令26,...26x。
寄存器堆28L,.28x是一组通用寄存器,且是DSP 20或微处理器的中心级。这些寄 存器堆28卜.28x保存所有操作数(通常从存储器加载),S卩,在将结果存储到共享存储 器24中之前,保存来自所有运算(例如,算术运算、逻辑运算等)的所有结果。
一些DSP结构具有四个线程。尽管如此,DSP20仍可具有四个以上线程,例如(但 不限于)具有并行运行的六个处理线程。在示范性实施例中,每一线程(PT) PT1、 PT2、…PTX并行提供IOO百万个指令包每秒(MIPS)。每一指令包可为四(4)个指令、 两(2)个指令(次标量)或仅一个指令。然而,为了效率起见,不推荐一个指令,因 为DSP 20的结构消除由于指令间数据相依性而造成的低效率。
术语"线程"或"多线程"用于描述同时发生的任务执行。代替单个执行路径,可 将程序(操作)分成同时执行的多个执行线程。在示范性实施例中,存在起始线程,其 需要函数调用(或指令),且通常需要至少两个自变量(1)起始指令的地址;和(2) 上下文自变量(context argument)。虽然线程正在操作且/或退出,但所述线程需要能够 进行与其它处理线程有关的两项基本工作(1)获取共享资源并阻止其它线程使用所述 资源;以及(2)将消息(例如,已完成、准备好等)安全地发送到其它线程。
现在参看图4,展示交错多线程并行处理的图表。在此实例中,存在六(6)个处理 线程PT1、 PT2、 PT3、 PT4、 PT5和PT6。第一处理线程PT1处理第一指令集l。这由 用于核心管线的执行时间线的第一 (顶部)行表示。核心管线由核心27!、 ...27x表示。 虽然第一指令集1由第一处理线程PT1处理,但第二处理线程PT2处理其第一指令集1。 这由执行时间线的第二行表示。因此,第一指令集l被并行处理。
当第一处理线程PT1和第二处理线程PT2处理其第一指令集1时,第三处理线程 PT3处理其第一指令集1。这由用于核心管线的执行时间线的第三行表示。第四处理线 程PT4处理其第一指令集1。与此同时,第一、第二和第三处理线程PT1、 PT2和PT3 继续处理其相关联的第一指令集1。这由用于核心管线的执行时间线的第四行表示。
当第一、第二、第三和第四处理线程PT1、 PT2、 PT3和PT4继续处理其第一指令 集1时,第五处理线程PT5处理其第一指令集1。这由用于核心管线的执行时间线的第 五行表示。当第一、第二、第三、第四和第五处理线程PT1、 PT2、 PT3、 PT4和PT5 继续处理其第一指令集1时,第六处理线程PT6处理其第一指令集1。这由用于核心管 线的执行时间线的第六行表示。因此,处理线程对指令的处理是交错的。
现在参看图4的第七(底部)行,假定第一处理线程PT1已完成其第一指令集l, 当第二、第三、第四、第五和第六处理线程PT2、 PT3、 PT4、 PT5和PT6继续处理其第
10一指令集1时,第一处理线程PT1开始处理第二指令集2。因此,处理线程PT1、 PT2、 ...PTX中的每一者的处理是并行且交错的。
描述所有处理线程的交错处理是令人望而却步的。因此,出于说明性目的,图5中 展示使用指令26!和262的交错处理,因为其涉及互斥(mutex)。互斥是一次仅由一个 处理线程"拥有"的工具。当处理线程试图获取互斥时,其锁定(LOCK)所述互斥。 然而,如果互斥已被锁定(LOCKED),那么所述处理线程暂停。当拥有线程解锁 (UNLOCK)所述互斥时,被暂停的线程被重新起始,且获取所述互斥的拥有权。图5 中展示此过程。
以第一处理线程PT1起始,指令26i以步骤S22A开始,在步骤S22A中执行非关 键代码。继步骤S22A之后是步骤S24A,在步骤S24A中,第一处理线程PT1执行锁定 互斥1指令(假定互斥1为未锁定的)。因此,第一处理线程PT1现在拥有互斥1。继 步骤S24A之后是步骤S26A,在步骤S26A中执行关键代码。继步骤S26A之后是步骤 S28A,在步骤S28A中,在完成关键代码之后,第一处理线程PT1执行解锁互斥1指令。 此后,在步骤S30A处,第一处理线程PT1重新开始执行非关键代码。
与第一处理线程PT1并行,第二处理线程PT2在步骤S22B处开始指令262,在步 骤S22B中执行非关键代码。继步骤S22B之后是步骤S24B,其中第二处理线程PT2想 要在步骤S24B处锁定互斥1。然而,互斥1正处于锁定状态中。因此,第二处理线程 PT2的操作被暂停,直到第一处理线程PT1在步骤S28A处解锁互斥1为止。接着步骤 S26B开始,在步骤S26B中执行关键代码。继步骤S26B之后是步骤S28B,在步骤S28B 中,在完成关键代码之后,第二处理线程PT2执行解锁互斥1指令。其它指令可在此之 后继续。
使用互斥工具或另一令牌工具来仅在需要时保证不同处理线程中的关键区段的串 行执行。这也是串行化执行,其意味着当某一代码可能与其它线程的代码执行冲突时, 不能并行地执行所述代码。互斥工具是有帮助的,因为使用共享存储器24 (共享资源)。
现在参看图6和图7,展示以100概括表示的3D图形管线的通用流程图和框图的 实施例。3D图形管线100将屏幕16的显示区域18中的3D表示的整个任务划分成通常 三(3)个管线级顶点处理(VP)级110、屏幕细分(SSD)级130和像素渲染(PR) 级140。在操作中,顶点处理(VP)级110包含所有函数或者OpenGL⑧或OpenGL⑧ES 中当前所实施的函数的子集,且由数字信号处理器(DSP) 20来处理。因为屏幕16并 非3D图形管线100的部分,所以图中以幻影来展示到达屏幕16的线。
VP级110包含模型视图变换操作112、投影操作114、剔除(culling)操作116、照明与着色操作118、图元组合操作120、裁剪(clipping)(即,用户定义的裁剪)操作 122,以及透视除法(perspective division)与视口 (viewport)操作124。 VP级110的 这些操作中的每一者在OpenGL⑧或OpenGL ES中充分定义。
一般来说,模型视图变换操作112使用数学运算来将对象模型放置在所要位置和定 向中。投影操作114使用数学运算,其使较近的事物较大且较远的事物较小。掩蔽 (occlusion)将较近对象拖曳到较远对象前面。剔除操作116和裁剪操作122废弃不在视 野中的事物。照明操作118计算光在表面上的效应。
在示范性实施例中,可用一个处理线程来实施VP级110 (图2和图3)。顶点输出 信息包含用于定义三角形及其在显示区域16中的位置的顶点信息。顶点输出信息叠加 在显示区域16上,因为显示区域16的像素包含用于根据OpenGL 、 OpenGL ES或其 它图形库而定义三角形的顶点输出信息。
屏幕细分(SSD)级130包含将显示区域18划分成M * N个子屏幕的屏幕细分操 作132。显示区域18由叠加有顶点输出信息的多个像素P(图11)构成。来自VP级110 的顶点信息提供界定三角形(例如,图8A的T1和T2)以重叠在显示区域18中的顶点 信息(例如,图11的VI、 V2和V3)。顶点信息可包含顶点坐标和边缘信息。 一般来说, 用于每个三角形的顶点输出信息只是用于界定一闭合区域的一组数学描述。这组数学描 述存储在共享存储器24中,使得每一处理线程(PT1、 PT2、 ...PTX)可在其自己的子 屏幕任务内使用所述组数学描述来计算每一像素P (图11),且判定所述像素是否在三 角形内部。
图8A说明叠加在显示区域18上的顶点输出信息。在屏幕细分(SSD)级130期间, 通过将构成显示区域18的像素划分或分组成MxN个子屏幕任务来对显示区域18进行 细分,如最佳见于图8B中。所述MxN个子屏幕任务存储在任务列表135(图6和图8B) 中。所述MxN个子屏幕任务是存储在共享存储器24中的MxN个独立任务。可使用与 VP级110期间所使用的处理线程分开的处理线程来实施SSD级130的操作。或者,SSD 级130的操作可在同一处理线程上与VP级110的操作组合。
在图8A所示的实施例中,将显示区域18划分成MxN个子屏幕以创建网格,其中 MM且N〉1。出于说明性目的,图9展示被划分成MxN个子屏幕的显示区域18',其中 M=l且NM。箭头说明扫描或工作流程方向。参看图10,显示区域18"被划分成MxN 个子屏幕,其中MW且N-1。因此,显示区域18"的子屏幕形成一系列的列。
像素渲染(PR)级140包含光栅化、混合和纹理应用操作142以及隐藏表面移除操 作144。尽管如此,像素渲染级140仍可包含由OpenGL㊣或OpenGL ES定义的其它操
12作。PR级140将来自VP级110的关于3D对象的信息转换成可在屏幕16的显示区域 18中显示的位图。PR级140处理输入三角形集合以产生3D图形图像的像素表示。
典型的像素渲染(PR)级可首先从顶点输出信息的列表中取出三角形。接下来,PR 级将从显示区域中取出像素,且对照所述三角形计算所述像素,看所述像素是否在所述 三角形内部。如果所评估像素在所述三角形内部,那么PR级可用来自所述三角形的对 应色彩来执行所述像素的着色。如果所评估像素不在所述三角形内部,那么跳过所述像 素。PR级将接着拾取显示区域18中的下一像素。PR级对显示区域18中的其它像素重 复上述过程,直到已针对一个三角形评估或处理了所有像素为止。因此, 一次一个地对 像素进行处理。
接着,典型PR级将移到顶点输出信息列表中的下一个三角形,且对当前三角形重 复像素的评估。
PR级140以与多个子屏幕或子屏幕任务类似的方式工作。差别在于子屏幕具有 较小数目的像素待评估或处理,且多个子屏幕可由处理线程(PT1、 PT2、 ...PTX)独立 且并行地处理。因此,用于PR级140的处理时间比典型PR级的处理时间快得多,因 为每一子屏幕中存在较少像素,且可并行处理多个子屏幕(其中每一处理线程独立地争 取处理相应一个子屏幕中的像素)。
在示范性实施例中,使用交错多线程处理器22的多个处理线程PR1、 PR2、 ...PRX 中的一组处理线程来处理PR级140。用于PR级140的所述组处理线程中线程的数目可 为2个或2个以上,最多为X个线程。
在操作中,指派给像素渲染级140的每一处理线程PR1、 PR2、 ...PRX从任务列表 135中抓取可用子屏幕任务,并将其从任务列表135中移除。所述组处理线程PR1、 PR2、 ...PRX在交错并行操作中处理输入三角形,以在子屏幕中渲染所述像素(将输入 三角形信息转换成供子屏幕中显示的位图)。之后,相应一个处理线程已完成用于所抓 取的子屏幕任务的像素渲染操作,所述处理线程移到任务列表135中的下一可用子屏幕 任务。重复此操作,直到已处理所有子屏幕且像素渲染级140完成为止。
参看图l、图2和图12,交错多线程处理器22允许多线程处理为可缩放且均匀的。 运算。可由以下等式定义
6(爿+ £)=6(爿)+6(5)以及
13在图12中,展示用于像素渲染的具有单个三角形T的具四个子屏幕的块。运算。
处理被表示为四(i)个子屏幕的子屏幕任务Su、 S12、 Su和S22,每一子屏幕具有三角
形T的一细分部分(i)。运算。因此等于子屏幕S 的运算A加上子屏幕SI2的运算。2
加上子屏幕Su的运算。3加上子屏幕S22的运算。4。如果所有运算^、 。2、 ()3和。4被
并行处理,那么用于处理像素渲染级140的总峰值性能因此为一处理线程的峰值性能乘 以所使用的处理线程的数目。子屏幕Su具有用于三角形T的像素的细分部分T!。子屏 幕S^具有用于三角形T的像素的细分部分T2。子屏幕S21具有用于三角形T的像素的
细分部分T3。子屏幕S22具有用于三角形T的像素的细分部分T4。出于说明性目的,线
程的数目为四(4)。因此,在此实例中,性能将为一个处理线程的性能乘以处理线程的 数目。因此,PR级140由于其并行处理来自多个子屏幕的像素的能力而为快速像素渲 染级。
此外,可在以真实应用仿形之后配置数目M和N,使得可对不同情形进一步优化性 能。配置M和N提供具有较大灵活性和可縮放性的另一尺寸。仿形包含识别处理线程 的加载(滴答数(tick count))或操作任务的大小或复杂性。仿形还可包含评估其它分 量,例如与数据的传送和来自共享存储器24的存储器容量相关联的参数。在仿形和调 整的情况下,可使用帧速率、屏幕大小、像素速率、三角形速率等来改变或变更M和N 且/或变更供PR级140中使用的处理线程PR1、 PR2、 ...PRX的数目。在仿形和调整的 情况下,可平衡3D管线级110、 130和140以优化整个性能。剩余处理线程PR1、PR2…PRX 用于同时运行的其它应用程序(例如,游戏音频)。
现在参看图13,展示供3D图形管线100使用的3D图形管线方法200的流程图。 方法200以步骤S202开始,在步骤S202中,执行顶点处理以创建顶点输出信息。继步 骤S202之后是步骤S204,在步骤S204中,将其中叠加有顶点输出信息的显示区域18 细分成MxN个子屏幕。举例来说,如最佳见于图8A中,三角形Tl在子屏幕Su、 S21 和S22上展开,且被细分成图8B中所示的其相应细分部分Tl!、 Tl2、 Tl3。因此,图8B 中的任务列表135说明三角形T1和T2的细分部分(出于说明性目的,仅展示两个三角 形)。如可了解,任务列表135中来自不与三角形相关联或具有三角形的较小细分部分 的顶点输出信息的那些条目可得到较快处理。因此,在像素渲染级140在显示区域18 上显示代表所述三角形的3D图像之前,应完成对所述三角形的所有细分部分的处理。继步骤S204之后是步骤S206,在步骤S206中,创建具有或不具有三角形的子部 分的子屏幕任务,并将其放置在任务列表135中。继步骤S206之后是步骤S208卜2082 和208y,其中Y是用于像素渲染级140的所述组处理线程中的处理线程的数目(2个或 2个以上)。在步骤S208i处,第一处理线程(在下文中被称作"线程l")获得(第一) 可用子屏幕任务(图8B),且在步骤S210,处,处理所述子屏幕任务中的每一像素,尤 其是被确定为在三角形或与所述任务相关联的三角形部分内或内部的那些像素。继步骤 S21(h之后是步骤S212p在步骤S212,中,确定其是否为任务列表135的末尾。如果所 述确定为"是",那么结束线程l的处理。否则,如果所述确定为"否",那么步骤S212! 返回到步骤S208卜第二处理线程(在下文中被称作"线程2")的操作基本上相同。 线程2获得或抓取任务列表135中的下一个可用子屏幕任务。继步骤S2082之后是步骤 S2102,在步骤S2102中,处理所述子屏幕任务。继步骤S20 82之后是步骤S2102。继步 骤S21(h之后是步骤S2122。在步骤S2122处,确定任务列表135中是否还存在任务。如 果步骤S2122处的确定为"否",那么所述方法结束。否则,如果所述确定为"是", 那么步骤S2122返回到步骤S2082。
步骤S208Y通过线程Y获得或抓取第Y个可用子屏幕任务。继步骤S208y之后是歩 骤S210y,在步骤S210Y中,处理所述子屏幕任务。继步骤S210y之后是歩驟S212Y, 在歩驟S212y中,确定任务列表135中是否还存在任务。如果所述确定为"否",那么 所述方法结束。否则,如果所述确定为"是",那么步骤S212Y返回到步骤S208Y。
步骤S210" S2102和S210Y期间所实行的处理执行光栅化、混合、纹理应用操作 142以及隐藏表面移除操作144。具体参看图11,具有中心圆点的正方形表示像素P。 所述像素P中的一些像素在三角形Tll的内部,而一些像素在三角形Tll的外部。每一 顶点V1、 V2和V3具有一以平滑明暗处理(smooth shading)附加的色彩值。使用线性 内插来计算每一像素P处的色彩值。顶点V1、 V2和V3用于形成三角形Tll,且将所 述三角形定位在显示区域18内。计算由正方形的中心中的黑色圆点表示的每一像素中 心处的色彩。内插包含Z深度、a、雾和纹理的各种参数。
再次参看图2到图4,在此实例中,存在六(6)个线程PT1、 PT2、 PT3、 PT4、 PT5 和PT6。第一线程PT1可用于处理VP级110。第二线程PT2可用于处理SSD级130。 剩余的四个线程PT3、 PT4、 PT5和PT6将用于并行地处理来自任务列表135的子屏幕 任务。在此,处理线程PT3将获得第一可用子屏幕任务1,1,且处理所抓取的第一子屏 幕任务l,l中的像素。处理线程PT4将获得下一 (第2)个可用子屏幕任务1,2,且处理 所抓取的子屏幕任务1,2中的像素。处理线程PT5将获得下一 (第3)个可用子屏幕任
15务1,3,且处理所抓取的子屏幕任务1,3中的像素(假定M大于3)。
假定M为4,处理线程PT6将获得下一 (第4)个可用子屏幕任务1,M,且处理所 抓取的子屏幕任务l,M中的像素。当处理线程PT3、 PT4、 PT5和PT6完成其各自的子 屏幕任务时,将并行地抓取和处理额外子屏幕任务,直到任务列表135为空为止。
在图13中所描述的实施例中,为了使3D图形管线100的操作负载平衡,可使用 3D图形管线100所使用的处理线程中的至少一者来处理所有三个3D管线级110、 130 和140。仅出于说明性目的,可使用线程1来执行步骤S202、S204、S206以及步骤S208,、 S210!和S212"
如果一个处理线程执行3M像素/秒(MIPS)渲染,那么其将采用大致30个指令包 来处理一个像素。此平均为每像素约100个指令。保留所述六个线程中的两个线程用于 VP级110和SSD级130且剩余的四个处理线程用于PR级140将支持是专用硬件图形 加速器的性能(12M像素/秒)的四倍的VGA分辨率。
因为所有处理线程共享同一存储器24,所以所述处理线程可全部使用互斥工具来非 常高效(无重复)地处理同一组输入三角形数据(子屏幕任务)。
像素渲染级140是3D图形管线100的最后一个管线级。PR级140处理输入三角形 列表以产生3D图形图像的像素表示。上文所述的3D图形管线100改进PR级140的性 能(以每秒像素来计)。交错多线程处理器22使性能增加并行运行以处理任务列表135 的处理线程的数目的倍数。
3D图形管线结构的优点是其在允许调整数目M和N中的灵活性。通过增加数目M 和N,减少了对像素渲染级140的MIPS要求。因为每一子屏幕变得较小,所以渲染任 务变得较简单。这有助于增加多个处理线程的性能。所述处理线程还可用于其它同时发 生的应用程序(例如,音频)。
如可容易看到,本文中所描述的用于渲染3D图形图像的软件实施方案具有比专用 图形加速器的硬件实施方案的性能高的性能。与图形加速器的硬件实施方案相比,本文 中所描述的实施例灵活且可縮放。因为所述实施例是灵活的,所以容易扩展软件代码以 用于添加新特征,支持3D图形标准(例如,OpenGLESl.O、 l丄..)的较高版本,且支 持不同的应用程序配置和定制要求。所述实施例的可縮放特征顾及不同的性能要求(帧 速率、屏幕大小、像素速率、三角形速率等...),以优化硅成本和系统功率消耗。
此实施例还使软件实施方案能够与低成本且低功率处理器一起使用,代替使用具有 多GHz时钟速度的高端处理器来达到同一性能。
现在参看图14,共享存储器24包含用于3D图形管线100的多种队列。所述队列
16包含顶点阵列25、图元队列26和任务队列27。尽管如此,仍可为VP级140的阶层(tier) 或层(layer)提供额外队列或缓冲区。如先前关于图7所描述,VP级110包含模型视 图变换操作112、投影操作114、剔除操作116、照明与着色操作118、图元组合操作120、 裁剪(即,用户定义的裁剪)操作122以及透视除法与视口操作124。将VP级110中 的操作分阶层或分层,使得较低层或阶层(例如,图元组合操作120和裁剪操作122) 依赖于较高阶层或层(例如,模型视图变换操作112)。
顶点阵列25包含来自模型视图变换操作112的顶点坐标。顶点阵列25含有每一顶 点的属性,例如,在模型坐标中的顶点位置、每一顶点的色彩以及纹理坐标。图元队列 26由图元组合操作120填充。任务队列27以来自SSD级130的任务列表135填充。然 而,VP级IIO的在图元组合操作120以下的阶层或层依赖于图元队列26中所填充的数 据而创建SSD级130所需的顶点输出信息。SSD级130创建供PR级140使用的必要任 务列表135。然而,同时,图元组合操作120依赖于来自较高阶层或层(例如,模型视 图变换操作112)的数据。上文与图元组合操作120和模型视图变换操作112有关的描 述只是出于说明性目的,且适用于VP级IIO中的其它阶层或层。
现在参看图15,展示用于在每处理线程基础上使3D图形管线100负载平衡的方法 300的流程图。在此实施例中,将处理线程PT1、 PT2、 ...PTX中的一者或一者以上对 PR级140的处理列为优先于3D图形管线IOO中的VP级110和SSD级130。处理线程 PT1、 PT2、 ...PTX或处理线程PT1、 PT2、 ...PTX的被指派以处理3D图形管线100的操 作的子集可操作以并行且独立地处理3D图形管线100的操作。方法300将由处理线程 PT1、 PT2、 ...PTX中的一者或一者以上或处理线程的被指派给3D图形管线100的操作 的子集个别且独立地执行。
方法300以步骤S302开始,在步骤S302中,处理线程PT1、 PT2、 ...PTX中的一 者最初检查共享存储器24的任务队列27中的在SSD级130期间创建的任务列表135 中的子屏幕任务的数目。SSD级130的操作对应于图13的步骤S204和S206。继步骤 S302之后是步骤S304,在步骤S304中,确定任务队列27是否为空或任务列表135中 的所有剩余子屏幕任务是否被其它处理线程锁定。如果在步骤S304处,所述确定为 "否",那么继步骤S304之后是步骤S306,在步骤S306中,处理线程执行PR级140 的操作(例如,步骤S208!、 S210!及S212,),以消耗或处理一个子屏幕任务。此后,步 骤S306循环回到步骤S302。
然而,如果在步骤S304处,所述确定为"是",那么继步骤S304之后是步骤S308, 在步骤S308中,确定是否还存在3D图形操作。如果步骤S308处的确定为"否",且任务队列27为空或正由最后一个管线级(PR级140)排空(步骤S304),那么3D图形 管线100的操作基本上完成。因此,方法300结束。步骤S308只是用于结束方法300 的准则的一个实例。因此,可使用其它准则,且相应地将所述准则放置在方法300中。
如果步骤S308处的确定为"是",那么继步骤S308之后是步骤S310,在步骤S310 中,执行VP级110中的顶点处理,以产生表示至少一个三角形的顶点输出信息。继步 骤S310之后是步骤S312,在步骤S312中,将步骤S310处所创建的顶点信息发送到SSD 级130,以供添加到任务队列27中的任务列表135。步骤S312接着循环回到步骤S302, 在步骤S302中,处理线程再次检查任务队列27。通常,在步骤S310处,处理线程将调 用VP级110的函数。
作为另一注意事项,可变更步骤S304处的评估准则。举例来说,开始时,步骤S304 处的评估准则可将子屏幕任务的数目与指示任务队列27中供PR级140使用的子屏幕任 务的数目的水印(图6)或阈值进行比较。如果子屏幕任务的数目低于所述水印或在所 述水印以下(即,指示任务队列中用于像素渲染的子屏幕任务不多),那么继步骤S304 之后是步骤S308。然而,如果子屏幕任务的数目大于所述水印或在所述水印以上,那么 处理线程将在步骤S306处执行PR级140的操作。
然而,当在预定数目的循环之后任务队列27中的子屏幕任务的数目仍在水印等级 以下时,可改变(降低)评估准则。举例来说,可将评估准则设置为空且/或锁定所有子 屏幕任务。因此,可来回变更S304的评估准则以平衡PR级140与VP级IIO之间的负 载,其中偏好是朝向PR级140的。
关于VP级IIO的阶层或层,或者在图15的步骤S310处,可评估对各种队列中的 数据的阶层检査。作为实例,处理线程在步骤S310期间可在检査VP级110中的其它较 高阶层或层中的任一者之前,首先检查图元队列26或其它中间阶层或层。如果中间阶 层或层中的数据在对应队列中,那么处理线程可处理来自所述阶层或层的数据,以供较 低阶层或层使用以产生顶点输出信息。
对于VP级平衡,处理线程将以与上述关于图13所描述的方式类似的方式抓取和锁 定所述队列的任一者中的数据。
方法300允许将每个处理线程PT1、 PT2、 ...PTX创建为相等的,且运行较容易维 护且添加特征的相同程序代码。方法300还可避免处理线程之间的切换开销。
方法300自动平衡3D图形管线100的级之间的工作负载,其中将优先权给予PR 级140。此外,负载平衡在无管理者线程的情况下自动平衡管线级110、 130和140中的 每一者之间的工作负载。负载平衡可通过添加线程或从3D图形管线100的处理操作移
18除线程来縮放。负载平衡需要处理线程中的每一者之间具有最小开销的极少通信。
在示范性实施例中,方法300可以包括一个或一个以上计算机可执行指令的计算机 程序产品的形式在硬件、软件、固件或其任一组合中实施。当在软件中实施时,所述计 算机程序产品可存储在计算机可读媒体上或使用计算机可读媒体来传输,所述计算机可 读媒体包含计算机存储媒体和计算机通信媒体。
术语"计算机存储媒体"在本文中指代适合于存储致使计算机执行所述方法的指 令的任何媒体。作为实例而非限制,计算机存储媒体可包括固态存储器装置,包含电子 存储器装置(例如,RAM、 ROM、 EEPROM及其类似物)、光学存储器装置(例如,小 型光盘(CD)、数字多用途光盘(DVD)及其类似物),或磁性存储器装置(例如,硬 盘驱动器、快闪驱动器、磁带驱动器及其类似物),或适合于存储计算机程序产品的其 它存储器装置,或此些存储器装置的组合。
术语"计算机通信媒体"在本文中指代适合于使用(例如)经调制的载波、光学信 号、DC或AC电流及其类似途径将计算机程序产品从一个地方传输到另一地方的任何 物理接口。作为实例而非限制,计算机通信媒体可包括绞合线对、印刷电缆或扁平电缆、 同轴电缆、光纤电缆、数字订户线(DSL),或其它有线、无线或光学串行或并行接口, 或其组合。
提供所揭示实施例的先前描述是为了使所属领域的技术人员能够制作或使用本发 明。对这些实施例的各种修改对于所属领域的技术人员来说将是显而易见的,且本文中 所定义的一般原理在不脱离本发明的精神或范围的情况下可应用于其它实施例。因此, 本发明无意限于本文中所展示的实施例,而应被赋予与本文中所揭示的原理和新颖特征 一致的最宽范围。
权利要求
1.一种处理器,其包括多个处理线程,当数据可用于三维图形管线的像素渲染操作时,每一处理线程将所述像素渲染操作列为优先于顶点处理操作。
2. 根据权利要求1所述的处理器,其中所述多个处理线程并行且独立地操作。
3. 根据权利要求1所述的处理器,其中当每一处理线程执行所述顶点处理操作时,所 述处理线程创建用于3D图形图像的顶点输出信息。
4. 根据权利要求3所述的处理器,其中每一处理线程将用于显示区域的所述顶点输出 信息划分成多个子屏幕,且从所述子屏幕创建子屏幕任务并将所述子屏幕任务存储 在任务列表中,所述子屏幕任务为所述数据。
5. 根据权利要求4所述的处理器,其中每一处理线程在执行所述像素渲染操作时,执 行对所述子屏幕任务的像素的光栅化、所述像素的混合以及所述像素的纹理化。
6. —种处理器,其包括多个处理线程,每一处理线程确定用于像素渲染操作的子屏 幕任务在任务列表中是否可用,如果所述子屏幕任务可用,那么对所述子屏幕任务 执行所述像素渲染操作,且如果所述子屏幕任务不可用,那么执行顶点处理操作, 从而平衡三维(3D)图形管线的工作负载。
7. 根据权利要求6所述的处理器,其中所述多个处理线程并行且独立地操作。
8. 根据权利要求6所述的处理器,其中每一处理线程在执行所述顶点处理操作时检查 队列是否有所述顶点处理操作的中间阶层的数据,且如果所述队列具有所述数据, 那么处理所述中间阶层的所述数据。
9. 根据权利要求8所述的处理器,其中如果所述中间阶层的所述队列为空,那么所述 处理线程在执行所述顶点处理操作时处理来自所述顶点处理操作的较高阶层的队 列的数据。
10. 根据权利要求8所述的处理器,其中当所述处理线程执行所述顶点处理操作时,所 述处理线程创建用于3D图形图像的顶点输出信息。
11. 根据权利要求IO所述的处理器,其中所述处理线程将用于显示区域的所述顶点输 出信息划分成多个子屏幕,且创建所述子屏幕任务并将所述子屏幕任务存储在所述 任务列表中。
12. 根据权利要求11所述的处理器,其中所述处理线程在执行所述像素渲染操作时, 执行对所述子屏幕任务的像素的光栅化、所述像素的混合以及所述像素的纹理化。
13. 根据权利要求12所述的处理器,其中并行且独立操作的所述多个处理线程将所述 像素渲染操作列为优先于所述顶点操作。
14. 根据权利要求6所述的处理器,其中所述处理器嵌入在个人数字助理(PDA)、掌 上电脑、移动电话、蜂窝式电话、卫星电话、膝上型计算机、笔记本型计算机、平 板PC和无线通信装置中的一者中。
15. —种无线装置,其包括处理器,其具有多个处理线程,每一处理线程确定用于像素渲染操作的子屏幕任 务在任务列表中是否可用,如果所述子屏幕任务可用,那么对所述子屏幕任务执行 所述像素渲染操作,且如果所述子屏幕任务不可用,那么执行顶点处理操作,从而 平衡三维(3D)图形管线的工作负载;以及存储器,其耦合到所述处理器以用于存储所述任务列表。
16. 根据权利要求15所述的装置,其中所述多个处理线程并行且独立地操作。
17. 根据权利要求15所述的装置,其中当每一处理线程执行所述顶点处理操作时,所 述处理线程创建用于3D图形图像的顶点输出信息。
18. 根据权利要求17所述的装置,其中每一处理线程将用于显示区域的所述顶点输出 信息划分成多个子屏幕,且从所述子屏幕创建所述子屏幕任务并将所述子屏幕任务 存储在所述任务列表中。
19. 根据权利要求18所述的装置,其中每一处理线程在执行所述像素渲染操作时,执 行对所述子屏幕任务的像素的光栅化、所述像素的混合以及所述像素的纹理化。
20. —种无线装置,其包括-处理器,其具有多个处理线程,当数据可用于三维图形管线的像素渲染操作时, 每一处理线程将所述像素渲染操作列为优先于顶点处理操作;以及 存储器,其耦合到所述处理器。
21. 根据权利要求20所述的装置,其中所述多个处理线程并行且独立地操作。
22. 根据权利要求20所述的装置,其中当每一处理线程执行所述顶点处理操作时,所 述处理线程创建用于3D图形图像的顶点输出信息。
23. 根据权利要求22所述的装置,其中每一处理线程将用于显示区域的所述顶点输出 信息划分成多个子屏幕,且从所述子屏幕创建子屏幕任务并将所述子屏幕任务存储 在任务列表中,所述子屏幕任务为所述数据。
24. 根据权利要求22所述的装置,其中每一处理线程在执行所述像素渲染操作时,执 行对所述子屏幕任务的像素的光栅化、所述像素的混合以及所述像素的纹理化。
25. —种计算机程序产品,其包含具有用于致使计算机执行以下各项的指令的计算机可 读媒体第一指令序列,其用于确定用于像素渲染操作的子屏幕任务在任务列表中是否可 用;第二指令序列,其用于在所述子屏幕任务可用的情况下,对所述子屏幕任务执行 所述像素渲染操作;以及第三指令序列,其用于在所述子屏幕任务不可用的情况下,执行顶点处理操作, 以用于平衡三维(3D)图形管线的工作负载。
26. 根据权利要求25所述的计算机程序产品,其中所述第三指令序列创建用于3D图 形图像的顶点输出信息。
27. 根据权利要求26所述的计算机程序产品,其进一步包括第四指令序列,其用于将叠加在显示区域中的所述顶点输出信息划分成多个子屏 幕,且创建代表所述子屏幕的子屏幕任务并将所述子屏幕任务存储在所述任务列表 中。
28. 根据权利要求25所述的计算机程序产品,其中所述第二指令序列执行所述子屏幕 任务中的像素的光栅化、所述像素的混合以及所述像素的纹理化。
29. —种方法,其包括通过处理线程确定用于像素渲染操作的子屏幕任务在任务列表中是否可用; 如果所述子虏幕任务可用,那么通过所述处理线程来对所述子屏幕任务执行所述像素渲染操作;以及如果所述子屏幕任务不可用,那么通过所述处理线程来执行顶点处理操作,从而平衡三维(3D)图形管线的工作负载。
30. 根据权利要求29所述的方法,其进一步包括通过所述3D图形管线所使用的处 理器的一组处理线程来并行地重复所述像素渲染操作和所述顶点处理操作或其置 换的所述确定和所述执行,同时将所述像素渲染操作的所述确定和所述执行列为优 先。
31. 根据权利要求29所述的方法,其中所述顶点处理操作的所述执行包含检查队列 是否有来自执行所述顶点处理操作的中间阶层的数据;以及在用于所述中间阶层的 所述队列具有所述数据的情况下,处理用于所述中间阶层的数据。
32. 根据权利要求31所述的方法,其中所述顶点处理操作的所述执行进一步包含在 用于所述中间阶层的所述队列为空的情况下,处理来自 一来自执行所述顶点处理操 作的较高阶层的队列的数据。
33. 根据权利要求29所述的方法,其中所述顶点处理操作的所述执行包含创建用于3D 图形图像的顶点输出信息。
34. 根据权利要求33所述的方法,其进一步包括将用于显示区域的所述顶点输出信息 划分成多个子屏幕,且创建所述子屏幕的子屏幕任务并将所述子屏幕任务存储在所 述任务列表中。
35. 根据权利要求34所述的方法,其中所述像素渲染操作包含使所述子屏幕任务的 像素光栅化、混合所述像素以及使所述像素纹理化。
36. 根据权利要求35所述的方法,其进一步包括通过所述3D图形所使用的处理器的 一组处理线程来并行地重复所述像素渲染操作和所述顶点处理操作或其置换的所 述确定和所述执行。
全文摘要
一种装置具有用于处理三维(3D)图形管线的顶点处理级、子屏幕划分级和像素渲染级的处理器。所述处理器包含处理线程,所述处理线程通过将用于所述像素渲染级的处理列为优先于其它级而平衡所述3D图形管线的工作负载。并行且独立操作的每一处理线程检查子屏幕任务的任务列表中的任务等级。如果所述等级低于阈值、是空的或所述子屏幕任务均被锁定,那么所述处理线程循环至所述顶点处理级。否则,所述处理线程在所述像素渲染级期间处理子屏幕任务。
文档编号G06T15/00GK101578629SQ200880001769
公开日2009年11月11日 申请日期2008年1月9日 优先权日2007年1月10日
发明者吴车辉, 詹姆斯·M·布朗, 建 魏 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1