专利名称:图形应用的有效剪切的制作方法
技术领域:
本发明大体来说涉及电子学,且更具体来说涉及用于对图形应用执行剪切的技术。
背景技术:
图形处理单元(GPU)是用于渲染用于例如视频游戏、图形、计算机辅助设计(CAD)、 模拟和视觉化工具、成像等各种应用的2维(2-D)和3维(3-D)图像的专用硬件单元。 GPU可执行各种图形操作(例如,着色、混合等)以渲染图或图像。这些图形操作可为 计算密集的。为了减少计算,可将图剪辑到图表面的边界。可进一步将图剪辑到一个或 一个以上剪切区域的内部。每一剪切区域可描述待保留的图表面的特定区。图的经剪辑 的部分可被废弃且因此不加以渲染。可通过省略图的被废弃的部分的计算而实现改进的 性能。
剪切是指剪辑具有一个或一个以上剪切区域的图或图像的过程。GPU可执行剪切以 便节省图的不需要渲染的部分的计算。然而,消耗处理和存储器资源以便执行剪切。用 于剪切的资源的量可随剪切区域的数目而增加。
因此,此项技术中需要用于有效地执行剪切的技术。
发明内容
本文中描述用于有效地执行剪切的技术。在一方面,可通过以下步骤以循序次序执 行任何数目的剪切区域的剪切(a) —次将一个剪切区域绘制到图表面或渲染区上;和 (b)对于每一剪切区域,更新剪切区域内的像素的剪切值。
可以各种方式来更新剪切值。在一种设计中,像素的剪切值指示覆盖所述像素的剪 切区域的数目。如果新增剪切区域,那么可将每一剪切区域内的像素的剪切值递增一, 或如果移除剪切区域,那么可将每一剪切区域内的像素的剪切值递减一。在另一设计中, 像素的剪切值是不同剪切区域的位图,且每一剪切区域与所述位图中的相应位相关联。 对于每一剪切区域,可将剪切区域内的像素的剪切值中的对应位设定为预定值(例如,
一)。在又一设计中,像素的剪切值指示所述像素是否在任何剪切区域内。
在更新所有剪切区域的剪切值之后,使所关注的区域内的像素通过以用于渲染。这可通过将像素的剪切值与参考值进行比较并使具有等于或大于所述参考值的剪切值的 像素通过来实现。对于剪切UNION运算,可将参考值设定为一以使通过所有剪切区域 的联合而形成的区域内的像素通过。对于剪切AND运算,可将参考值设定为大于一以 使通过至少两个(例如,所有)剪切区域的相交而形成的区域内的像素通过。此处,UNION 和AND是指对剪切区域的逻辑运算。
下文更详细地描述本发明的各种方面和特征。
图1说明2-D图形中的剪切区域。 图2说明对于多个剪切区域的剪切。 图3展示用于执行剪切的过程。 图4展示2-D图形管线。 图5展示3-D图形管线。 图6展示执行剪切的GPU。 图7展示无线通信装置的框图。
具体实施例方式
支持2-D图形的图形处理单元(GPU)可支持对于多个剪切区域的剪切。举例来说, GPU可支持公开可用的且在下文中被称作OpenVG的"OpenVG规范,1.0版"(2005 年7月28日)。OpenVG是用于2-D向量图形的新标准且适用于手持式和移动装置(例 如,蜂窝式电话和游戏装置)。OpenVG需要2-DGPU来支持最少32个剪切区域。
图1说明2-D图形中的剪切区域。图表面100可表示渲染区、显示屏幕或用于某一 其它输出装置。图表面100可具有任何宽度和高度(WxH)尺寸(例如,对于VGA, 为640x480像素)且因此可覆盖W'H个像素。在图1中所展示的实例中,界定八个剪 切区域且所述八个剪切区域被称作剪切区域1到8。每一剪切区域可为可由两个坐标(例 如,关于左下角的一个坐标和关于右上角的另一坐标)界定的矩形。 一般来说,剪切区 域可具有任何形状,例如,矩形、三角形、圆形、多边形、复杂或任意形状等。剪切区 域还可具有任何大小且可位于图表面上的任何地方。剪切(scissoring)区域也可被称作 剪切(scissor)区域、剪切窗、剪切矩形等。为了简单起见,以下描述大部分针对矩形 的剪切区域。如图1中所展示,每一剪切区域可与零个、 一个或多个其它剪切区域重叠。 举例来说,剪切区域8不与其它剪切区域重叠,剪切区域4与剪切区域3重叠,且剪切
7区域3与剪切区域1、 2和4重叠。
GPU可通过确定图表面100中的W,H个像素中的每一者是否在剪切区域中的任一 者内来执行剪切。每一像素可与可指示所述像素是否在任何剪切区域内的剪切值相关 联。剪切值也可被称作掩码值等。GPU可使用所述剪切值来确定是否渲染像素。作为一 实例,对于剪切UNION运算来说,GPU可渲染在通过所有剪切区域的联合而界定的区 域内的像素且可废弃/丢弃此区域外部的像素。
如OpenVG所需的32个剪切区域的蛮力实施方案可利用32个寄存器来存储这些剪 切区域的坐标且利用128个比较器来执行逻辑/比较运算。四个比较器可用于每一剪切区 域以将像素与剪切区域的四个角进行比较以确定所述像素是否在所述剪切区域内。对于 无线通信装置、移动装置、游戏装置和其它消费型电子装置来说,许多剪切区域的蛮力 实施方案可为复杂且昂贵的。
在一方面,可通过以下步骤而有效地执行任何数目的剪切区域的剪切(a) —次将 一个剪切区域绘制到图表面或渲染区上;和(b)更新每一剪切区域内的像素的剪切值。 可由支持2-D图形的GPU以及支持2-D与3-D图形两者的GPU来执行剪切。还可使用 经设计以用于其它图形函数的处理和/或存储器资源(例如,共同用于3-D图形的模版缓 冲器和模版测试单元)来执行剪切。
图2说明对于多个剪切区域的剪切。使用剪切缓冲器来存储图表面上的像素的剪切 值。所述剪切缓冲器可为模版缓冲器或某一其它缓冲器。剪切缓冲器可具有与图表面的 尺寸相同的WxH尺寸且可存储图表面上的每一像素的剪切值。还可使用其它剪切缓冲 器大小。为了简单起见,图2展示具有12x9尺寸的图表面。
可由N个位来表示剪切值,其中,N通常可为一或更大。举例来说,N可等于8, 且8位剪切值可在0到255的范围中。依据(例如)由GPU支持的剪切模式,还可将 更少或更多的位用于剪切值。
最初(例如)通过将所有剪切值重设为零而清除剪切缓冲器。接着(例如)通过读 取剪切区域的坐标和将这些坐标应用于图表面而绘制第一剪切区域。如下文所描述,可 以各种方式更新第一剪切区域内的每一像素的剪切值。可通过扫描剪切区域内的像素位 置且对于每一经扫描的像素位置而更新剪切缓冲器中的对应剪切值来实现剪切。以此方 式,仅更新剪切区域内的像素的剪切值,且剪切区域外部的其它像素不受影响。
接着(例如)以与第一剪切区域类似的方式绘制第二剪切区域。可如下文所描述而 更新第二剪切区域内的每一像素的剪切值。可以类似方式绘制每一额外剪切区域,且可 更新剪切区域内的像素的剪切值。在已绘制最后剪切区域且完成剪切值的更新之后,剪切缓冲器中的剪切值可适用于确定是否渲染像素。
在第一设计中,像素的剪切值指示覆盖所述像素的剪切区域的数目。在此设计中, 当绘制每一剪切区域时,将由所述剪切区域覆盖的每一像素的剪切值递增一。在己绘制 所有剪切区域之后,如果每一像素被至少一个剪切区域覆盖,那么所述像素的剪切值将 大于零。给定像素的剪切值&指示所述像素被A个剪切区域覆盖,其中0^:《K,且K为 剪切区域的数目。如果N个位用于每一剪切值,那么支持高达2^1个剪切区域。举例 来说,8位剪切值支持高达255个剪切区域。
在第二设计中,像素的剪切值指示覆盖所述像素的特定剪切区域(如果存在)。在 此设计中,每一像素的N位剪切值为位图。位图中的每一位位置对应于一个剪切区域。 举例来说,剪切值的最低有效位(LSB)可对应于第一剪切区域,下一LSB可对应于第 二剪切区域等等,且最高有效位(MSB)可对应于第N个剪切区域。当绘制第A个剪切 区域时(/te{l,...,K}),可将由所述剪切区域覆盖的每一像素的剪切值的第A个位设定为 一。在己绘制所有剪切区域之后,如果每一像素被至少一个剪切区域覆盖,那么所述像 素的剪切值将大于零。可检查剪切值的位以确定覆盖像素的特定剪切区域(如果存在)。 如果N个位用于每一剪切值,那么支持高达N个剪切区域。
第二设计还可用N位剪切值来支持N个以上剪切区域。如上所述,如果使用8位 模版值,那么可将八个剪切区域映射到八个位,每位一个剪切区域。为了支持八个以上 剪切区域,可使用模版值的每一位来表示一个以上剪切区域。举例来说,可将8位模版 值如下重叠将位0用于区域0、 8、 16等,将位l用于区域l、 9、 17等,例如此类, 且将位7用于区域7、 15、 23等。可通过模-8运算或n=/t mod 8=k% 8来确定对应于给 定剪切区域A的位w,所述运算提供剪切区域A:除以8的余数。在第二设计中,每一位 还可表示剪切区域的集合的联合且可用于指示像素是否在所述集合中的剪切区域中的 任一者内。像素的剪切值的位还可与剪切区域的非重叠集合相关联,以使得每一剪切区 域属于所述集合中的唯一集合。所有位的聚集因而将表示所有剪切区域。这可用于增加 可支持的剪切区域的数目。
在第三设计中,像素的剪切值指示所述像素是否被任何剪切区域覆盖。在此设计中, 1位剪切值可用于每一像素。当绘制每一剪切区域时,可将由所述剪切区域覆盖的每一 像素的1位剪切值设定为一。在己绘制所有剪切区域之后,如果每一像素被至少一个剪 切区域覆盖,那么所述像素的剪切值将等于一。此设计减小用于剪切值的缓冲器要求。
还可以其它方式和用其它设计来更新剪切值。不同设计可具有不同更新能力。举例 来说,无论何时移除现有剪切区域或新增新的剪切区域,第一和第二设计均支持剪切值的有效更新。
对于第一设计,可通过重新绘制现有剪切区域和将所述剪切区域内的每一像素的剪 切值递减一并使剪切值在零处饱和来移除现有剪切区域。可通过绘制剪切区域且将所述 剪切区域内的每一像素的剪切值递增一来新增新的剪切区域。因此,无论何时新增或移 除剪切区域,仅绘制待新增的新的剪切区域,仅重新绘制待移除的剪切区域,且待保留 的其它剪切区域不受影响,这可节省计算。
对于第二设计,可通过重新绘制剪切区域且将所述剪切区域内的每一像素的对应剪 切位值重设为零来移除现有剪切区域。可通过绘制剪切区域且将所述剪切区域内的每一 像素的对应剪切位值设定为一来新增新的剪切区域。
不同的设计还可支持不同的剪切模式。上文所描述的所有三种设计均支持剪切 UNION运算。对于剪切UNION来说,如果像素的剪切值为一或更大,那么所述像素在 通过所有剪切区域的联合而形成的区域内(或在至少一个剪切区域内)。第一和第二设 计还支持剪切AND运算。对于剪切AND来说,如果像素的剪切值大于一,那么所述像 素在通过至少两个(R个)剪切区域的相交而形成的区域内。 一般来说,R可被设定为 大于一且高达剪切区域的数目的任何值。如果R等于剪切区域的数目,那么仅使所有剪 切区域内的像素通过。
对于第一设计,可通过以下方式来实现剪切AND:将像素的剪切值与参考值进行比 较,如果剪切值等于或大于所述参考值,那么使所述像素通过,且否则废弃所述像素。 对于第二设计,可通过以下方式来实现剪切AND:检査在像素的剪切值中设定的位,将 所述设定位与参考值进行比较,且基于所述比较结果来使所述像素通过或丢弃所述像 素。
第二设计还支持选择性UNION运算、选择性AND运算等。对于选择性AND,使 通过K个剪切区域中的选定的剪切区域的相交而形成的区域内的像素通过。对于选择性 UNION,使通过K个剪切区域中的选定的剪切区域的联合而形成的区域内的像素通过。 对于所有设计,像素的参考值可以是用于对于所述像素的剪切值的逐位逻辑测试中的掩 码。举例来说,在第二设计中,可对掩码和像素的剪切值执行AND运算。剪切接着可 能够基于正绘制的像素来辨别特定区域。
第二设计可用于各种目的,例如,用于在图表面上绘制多个图像。图表面的不同区 可用不同图像绘制且可由不同剪切区域来界定。剪切区域和位图可用于确定哪一图像将 绘制于每一图区中。举例来说,可将图像绘制于由第A个剪切区域界定的区中,且可通 过检查对应剪切值的第A:个位而确定此区内的像素。第二设计还可用于掩蔽图标渲染、用于在开窗系统中掩蔽对可绘制的表面的可见像素的渲染、用于在复杂窗口形状的支持 下支持非矩形剪辑等。
图3展示用于执行对于多个剪切区域的剪切的过程300。最初,(例如)通过将用于 存储像素的剪切值的缓冲器中的剪切值重设为零而初始化所述缓冲器(框312)。接着以 循序次序以一次一个剪切区域的方式对多个剪切区域执行剪切(框314)。对于每一剪切 区域,更新所述剪切区域内的像素的剪切值(框316)。
可以各种方式来执行区块316中的更新。对于第一设计,像素的剪切值可指示覆盖 所述像素的剪切区域的数目。可将每一剪切区域内的像素的剪切值递增一。对于第二设 计,像素的剪切值可为不同剪切区域的位图,且每一剪切区域可与所述位图中的相应位 相关联。对于每一剪切区域,可将剪切区域内的像素的剪切值的对应位设定为预定值(例 如, 一)。对于第三设才,像素的剪切值可指示所述像素是否在任何剪切区域内。可将 每一剪切区域内的像素的剪切值设定为预定值(例如, 一)。更新可包括利用多边形变 换和光栅化处理单元来将简单或复杂形状绘制到剪切缓冲器。
可执行剪切以移除多个剪切区域中的一者或一者以上。对于待移除的每一剪切区 域,可更新剪切区域内的像素的剪切值,例如,如果剪切值大于零,那么将剪切值递减 一。还可执行剪切以将一个或一个以上剪切区域新增到多个剪切区域。对于待新增的每 一剪切区域,可更新剪切区域内的像素的剪切值,例如,将剪切值递增一。
在更新所有剪切区域的剪切值之后,使通过渲染码产生的且在所关注的区域内的像 素通过(框31S)。可通过将像素的剪切值与参考值进行比较且使具有等于或超过所述参 考值的剪切值的像素通过来实现此目的。参考值一可用于用于剪切UNION运算的所有 三种设计以使通过多个剪切区域的联合而形成的区域内的像素通过。大于一的参考值可 用于用于剪切AND运算的第一设计以使通过多个剪切区域中的至少两者(例如,所有 者)的相交而形成的区域内的像素通过。对于第二设计,可检查剪切值的个别位以使所 关注的区域中的像素通过。在任何状况下,进一步处理(例如,渲染)所述通过的像素 (框320)。
GPU可支持2-D和/或3-D图形。2-D图形存储用于产生2-D图像的几何数据的2-D 表示。3-D图形存储经处理以产生2-D图像的几何数据的3-D表示。2-D图形可与涂刷 (painting)相比,而3-D图形可与雕刻(sculpting)相比。2-D和3-D图形可对于不同 图形操作利用不同管线来产生输出图像。
图4展示描述于OpenVG中的2-D图形管线400的框图。2-D图形中的图由路径组 成。每一路径界定图表面上的笔(pen)或涂抹刷的持续时间。路径用于界定图中的几何形状。路径可被划线和/或填充。划线是指用线界定路径形状的轮廓。填充是指将颜色、 梯度或纹理应用于形状的内部。
在用于级1的框412中,应用程序界定待绘制的路径且设定待由后续级使用的变换、 划线和涂刷参数(如果存在)。在用于级2的框414中,将路径从用户坐标系统变换到 表面坐标系统。如果将对路径划线,那么在用户坐标系统中应用划线参数以在表面坐标 系统中产生描述划线几何形状的新路径。此新路径被称作当前路径且被管线中的后续级 操作。在用于级3的框416中,对当前路径的几何形状应用路径到表面变换以产生图表 面坐标。在用于级4的框418中,对受当前路径影响的每一像素计算覆盖值。级4将当 前路径映射到图表面上的像素。
在用于级5的框420中,向不在图表面的边界内的和(如果启用了剪切)不在一个 或一个以上剪切区域内的像素指派覆盖值零。对于具有覆盖值零的像素,跳过剩余的处 理。如上所述,级5可执行对于多个剪切区域的剪切。
在用于级6的框422中,基于当前有关涂刷来对图表面上的每一像素界定色值和a 值,当前有关涂刷可取决于路径正被填充还是划线。级6对当前路径上的像素应用涂刷 图像。在用于级7的框424中,如果正绘制图像,那么通过使用图像到表面变换的逆运 算来内插图像值而对每一像素计算图像色值和a值。根据当前图像绘制模式将结果与涂 刷色值和a值组合。在用于级8的框426中,将来自级7的每一像素的源色值和a值转 换到目的地颜色空间且根据选定混合模式将其与对应目的地色值和a值混合。
还可用可以其它方式渲染基元的其它管线来支持2-D图形。基元为几何形状的基本 单位且可为线、区段、点等等。可通过2-D图形管线中的剪辑/掩蔽级来执行对于多个剪 切区域的剪切。
图5展示支持3-D图形且还可支持2-D图形的3-D图形管线500的框图。管线500 可支持3-D软件接口,例如,开放式图形程序库(OpenGL)、 Direct3D等。OpenGL描 述于公开可用的注明日期为2004年10月22日的标题为"TheOpenGL⑧图形系统:规范 (The OpenGL Graphics System: A Specification)", 2.0版的文献中。
2-D或3-D图像可用多边形(通常为三角形)来表示。每一三角形由三个顶点来界 定,且每一顶点与例如空间坐标、色值、纹理坐标等各种属性相关联。每一属性可具有 高达四个分量。举例来说,可由三个分量x、 y和z或四个分量;c、 h z和w来给出空间 坐标,其中x和y为水平和垂直坐标,z为深度,且w为齐次坐标。可由三个分量r、 g 和6或四个分量r、 g、 6和a来给出色值,其中r为红色,g为绿色,6为蓝色,且a为 确定像素的透明性的透明性因子。通常由水平和垂直坐标"和v来给出纹理坐标。顶点还可与其它属性相关联。管线500通过计算待显示的像素的属性分量值而渲染2-D或3-D 图像。
顶点着色器512可对几何形状(例如,三角形)执行各种图形操作。举例来说,顶 点着色器512可将几何形状从一个坐标系统变换到另一坐标系统,计算几何形状的顶点 的光值,对几何形状执行混合等。基元汇编器和处理器514计算用于后续光栅化过程的 参数。举例来说,处理器514可计算每一三角形的三个边的线性等式的系数、像素的深 度内插的深度")梯度等。扫描转换器516将每一三角形或线分解成像素且产生每一 像素的屏幕坐标。
早期深度/模版测试引擎518对像素执行深度和/或模版测试(如果启用)以确定应 渲染像素还是应废弃像素。通常可互换地使用术语"引擎"、"核心"、"机器"、"处理器" 和"处理单元"。模版缓冲器(图5中未图示)存储正渲染的图像中的每一像素位置的 当前模版值。对于模版测试,引擎518将像素的所存储的模版值与参考值进行比较且基 于所述比较的结果而使所述像素通过或废弃所述像素。引擎518可对像素执行深度测试 (其也被称为z测试)(如果适用)以确定应渲染像素还是应废弃像素。z缓冲器(图5 中也未图示)存储正渲染的图像中的每一像素位置的当前z值。对于深度测试,引擎518 将像素的z值(当前z值)与z缓冲器中的对应z值(所存储的z值)进行比较,如果 当前z值比所存储的z值更靠近/接近,那么使所述像素通过且更新z缓冲器并可能更新 模版缓冲器,且如果当前z值比所存储的z值更靠后,那么废弃所述像素。
像素/片段着色器和纹理过滤器520可对像素和片段执行各种图形操作。片段为像素 及其相关联的信息。着色器520可计算像素属性的内插的参数(例如,属性内插的线性 等式的系数)。着色器520接着可基于像素的屏幕坐标且使用内插参数来计算每一三角 形内的每一像素的属性分量值。纹理过滤器520执行纹理映射(如果启用)以对每一三 角形应用纹理。可将纹理图像存储于纹理缓冲器(图5中未图示)中。每一三角形的三 个顶点可与纹理图像中的三个(",v)坐标相关联,且三角形的每一像素接着可与纹理 图像中的特定纹理坐标相关联。通过用由每一像素的纹理坐标指示的位置处的纹理图像 的颜色来修改所述像素的颜色而实现纹理化。
后期深度和像素混合器522可对每一片段执行例如(x测试、雾化混合、a混合、逻 辑运算和抖动操作等图形操作且将结果提供给颜色缓冲器。
3-D图形管线500中的级通常经设计以用于3-D图形。这些级还可用于支持2-D图 形。在一种设计中,在软件或预处理单元中执行图4中的2-D图形管线400的级l和2, 由顶点着色器512执行级3,由基元汇编器和处理器514执行级4,由早期深度/模版测试引擎518执行级5,由像素/片段着色器和纹理过滤器520执行级6和级7,且由后期 深度和像素混合器522执行级8。管线500还可以其它方式支持2-D图形,例如,用管 线400中的级到管线500中的单元的不同映射来支持2-D图形。管线500可包括用于支 持2-D图形操作的扩展和/或修改。
GPU可(例如)通过实施图4中的管线400或某一其它2-D图形管线而仅支持2-D 图形。GPU还可(例如)通过实施图5中的管线500或某一其它图形管线而支持2-D与 3-D图形两者。
对于支持2-D与3-D图形两者的GPU来说,可使用模版单元(例如,模版缓冲器 和模版测试引擎)来对2-D图形执行剪切。所述模版单元通常具有较高吞吐量(例如, 比颜色操作吞吐量快两倍到四倍)且通常与可节省数据总线带宽的高效率模版高速缓冲 存储器相关联。当渲染3-D图形时,模版单元可在早期执行模版测试,使得可在模版测 试失败的情况下避免计算密集的操作。模版单元可用于对2-D图形执行剪切以加快像素 渲染。
模版单元通常对每一传入的像素执行模版测试和模版操作。模版测试基于用于所述 像素的存储于模版缓冲器中的当前模版值来确定是使所述像素通过还是丢弃所述像素。 模版操作可基于深度和/或模版测试的结果来根据模版操作码而更新模版值。
模版单元可如下执行剪切。首先,(例如)使用快速清除而将模版缓冲器清除为零。 模版缓冲器通常存储用于3-D图形的模版值且用于存储用于2-D图形的剪切值。界定在 上面应用剪切区域的渲染缓冲器区。对于上文所描述的第一设计,可将模版单元如下设 定
1 .模版测试函数-ALWAYS,
2. 模版操作4NCREASE—WRAP或INCREASE,且
3. 启用对模版缓冲器的模版写入。
第一设定促使模版单元始终通过对像素的模版测试,此将允许对这些像素的剪切值 的更新。第二设定指示如何更新模版值。可(a)用INCREASE设定使模版值递增且饱 和,或(b)可用INCREASE—WRAP设定使模版值递增且使模版值在到达最大值之后环 绕。当移除剪切区域时,还可将模版操作设定为DECREASE—WRAP或DECREASE。对 于上文所描述的第二设计,可将模版操作设定为用参考模版值{1<< (剪切#%8) }进行 REPLACE,其中"%8"表示模-8运算。第三设定在绘制每一剪切区域之后启用模版缓
冲器中的剪切值的更新。
模版单元可接着通过一次绘制一个剪切区域且如由模版操作所指示而更新模版缓冲器中的剪切值来执行剪切。在绘制所有剪切区域之后,GPU可使用可用的处理和存储 器资源来渲染2-D (例如,OpenVG)基元(例如,路径、掩码、涂刷、图像等)。举例 来说,可如上所述将图4中的2-D图形管线400中的级映射到图5中的3-D图形管线500 中的区块。
在渲染过程期间,可通过从模版缓冲器读取剪切值且将所述剪切值与参考模版值进 行比较而对像素执行模版测试。对于剪切UNION运算,可将模版测试函数设定为 LARGER THAN,且可将参考模版值设定为零。对于剪切AND运算,可将模版测试函 数设定为EQUALTO,且可将参考模版值设定为大于一的值。可将参考模版值设定为R 以使由至少R个剪切区域覆盖的像素通过。可对每一像素仅执行一个比较而不管正应用 的剪切区域的数目如何,这可大大加速渲染过程。通过模版测试的像素在所关注的区域 内且可被转发到管线中的后续级。可丢弃未通过模版测试的像素。
图6展示执行剪切的GPU 600的框图。GPU 600可实施图4中的2-D图形管线400 中的级5和/或图5中的3-D图形管线500中的早期深度/模版测试引擎518。 GPU 600 可包括在图6中为简单起见而未图示的其它处理和控制单元、引擎和存储器。
如上所述,处理单元610接收剪切区域且更新由这些剪切区域覆盖的像素的剪切值。 所述更新取决于是新增剪切区域还是移除剪切区域。缓冲器620存储像素的剪切值。处 理单元610还可基于参考值来执行剪切/模版测试以使所关注的区域中的像素通过。处理 单元610可(例如)从图4中的级4接收传入的像素的(x, y)坐标,基于这些像素的 坐标来确定这些像素的剪切值,且基于每一像素的剪切值和所述参考值来确定是应使所 述像素通过还是应丢弃所述像素。可基于所要的剪切运算(例如,UNION或AND)来 设定参考值。渲染单元630渲染通过剪切/模版测试的像素且可执行任何合适的图形操作 以渲染这些像素。处理单元610可执行图3中的框312到318中所展示的处理。渲染单 元630可执行图3中的框320中所展示的处理。
在一种设计中,多遍执行剪切和渲染。在第一遍中,将剪切区域绘制到剪切缓冲器 上,更新剪切值,且不将像素传递到渲染单元630。在第二遍中,单元610处理传入的 像素以基于每一像素的剪切值来确定使所述像素通过还是抛弃所述像素,且将通过的像 素转发到渲染单元620。对于其它设计,还可以其它方式执行剪切和渲染。
处理单元610可为模版测试引擎,且缓冲器620可为用于3-D图形的模版缓冲器。 模版缓冲器和模版测试引擎可用于有效地对2-D图形执行剪切。处理单元610可对每一 剪切区域执行模版测试(例如,在ALWAYS的设定下)和模版操作(例如,在INCREASE、 INCREASE—WRAP、 DECREASE或DECREASE—WRAP的设定下)以更新剪切区域内的像素的剪切值。
可将图像縮放得较大(例如,当开启超级取样抗混叠时)。在此状况下,剪切值可 表示像素的一部分(或子像素)。举例来说,如果将图像縮放为大两倍,那么可存在每 一像素的四个剪切值,其中每一剪切值对应于四个子像素中的一者。虽然用子像素代替 像素,但可以上文所描述的方式执行剪切。
如上所述,剪切区域可具有任何形状和任何大小。可通过首先将剪切区域镶嵌到三 角形扇(其为具有任何数目的边和形状的多边形)中来实现任意形状的剪切区域的剪切。 可将所述三角形扇分解成若干三角形。可将每一三角形光栅化以确定所述三角形内的像 素。可基于上文所描述的设计中的任一者来更新每一三角形内的每一像素的剪切值。
本文中所描述的剪切技术可用于无线通信装置、手持式装置、游戏装置、计算装置、 消费型电子装置等。下文描述所述技术针对无线通信装置的示范性用途。
图7展示无线通信系统中的无线通信装置700的设计的框图。无线装置700可为蜂 窝式电话、终端、手机、个人数字助理(PDA)或某一其它装置。所述无线通信系统可 为码分多址(CDMA)系统、全球移动通信系统(GSM)系统或某一其它系统。
无线装置700能够经由接收路径和发射路径而提供双向通信。在接收路径上,由基 站发射的信号由天线712接收且被提供给接收器(RCVR) 714。接收器714调节所接收 的信号且使其数字化并将样本提供给数字段720以供进一步处理。在发射路径上,发射 器(TMTR) 716接收待从数字段720发射的数据,处理并调节数据,且产生经调制的 信号,所述经调制的信号经由天线712而发射到基站。
数字段720包括各种处理、接口和存储器单元,例如,调制解调器处理器722、视 频处理器724、控制器/处理器726、显示处理器728、高级RSIC机器/数字信号处理器 (ARM/DSP) 732、 GPU 734、内部存储器736和外部总线接口 (EBI) 738。调制解调器 处理器722执行针对数据发射和接收的处理(例如,编码、调制、解调制和解码)。视 频处理器724对用于例如摄像机、视频重放和视频会议等视频应用的视频内容(例如, 静态图像、移动视频和移动文字)执行处理。控制器/处理器726可指导数字段720内的 各种处理和接口单元的操作。显示处理器728执行处理以促进视频、图形和文字在显示 单元730上的显示。ARM/DSP 732可对无线装置700执行各种类型的处理。GPU 734 执行图形处理且可实施图3中的过程300、图4中的2-D图形管线400的全部或一部分、 图5中的3-D图形管线500的全部或一部分、某一其它图形管线、图6中的GPU 600 等。内部存储器736存储用于数字段720内的各种单元的数据和/或指令。EBI 738促进 数字段720 (例如,内部存储器736)与主存储器740之间的数据的传递。可用一个或一个以上DSP、微处理器、RISC等来实施数字段720。数字段720还可 在一个或一个以上专用集成电路(ASIC)和/或某一其它类型的集成电路(IC)上制造。
可通过各种手段来实施本文中所描述的剪切技术。举例来说,可以硬件、固件、软 件或其组合来实施这些技术。对于硬件实施方案,可在以下各者内实施用于执行剪切的 处理单元(例如,图6中的GPU 600、图7中的GPU 734等) 一个或一个以上ASIC、 DSP、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、场可编程门阵列(FPGA)、 处理器、控制器、微控制器、微处理器、电子装置、经设计以执行本文中所描述的功能 的其它电子单元,或其组合。所述处理单元可能包括或可能不包括整合式/嵌入式存储器。
实施本文中所描述的剪切技术的设备可为独立单元或一装置的一部分。所述装置可 为(i)独立IC (例如,图形IC)、 (ii)可包括用于存储数据和/或指令的存储器IC的一 组一个或一个以上IC、 (iii)具有整合式图形处理功能的ASIC (例如,移动台调制解调 器(MSM))、 (iv)可嵌入其它装置内的模块、(v)蜂窝式电话、无线装置、手机或移 动单元、(vi)等。
提供本发明的先前描述以使所属领域的技术人员能够制造或使用本发明。所属领域 的技术人员将容易了解对本发明的各种修改,且在不脱离本发明的精神或范围的情况 下,本文中所界定的一般原理可应用于其它变型。因此,本发明不希望限于本文中所描 述的实例,而是应被赋予与本文中所揭示的原理和新颖特征一致的最广泛范围。
权利要求
1. 一种装置,其包含缓冲器,其用于存储像素的剪切值;以及处理单元,其用于以循序次序以一次一个剪切区域的方式对多个剪切区域执行剪切,且对于每一剪切区域,更新所述剪切区域内的像素的剪切值。
2. 根据权利要求1所述的装置,其中像素的剪切值指示覆盖所述像素的剪切区域的数 目,且其中对于每一剪切区域,所述处理单元递增所述剪切区域内的所述像素的所 述剪切值。
3. 根据权利要求2所述的装置,其中所述处理单元移除所述多个剪切区域中的至少一 者,且对于待移除的每一剪切区域,如果所述剪切区域内的像素的剪切值大于零, 那么递减所述剪切值。
4. 根据权利要求2所述的装置,其中所述处理单元对新增到所述多个剪切区域的至少 一个剪切区域执行剪切,且对于待新增的每一剪切区域,递增所述剪切区域内的像 素的剪切值。
5. 根据权利要求1所述的装置,其中像素的剪切值是多个剪切区域的位图,且其中所 述多个剪切区域中的每一者与所述位图中的相应位相关联。
6. 根据权利要求5所述的装置,其中对于每一剪切区域,所述处理单元将所述剪切区 域内的所述像素的所述剪切值中的对应位设定为预定值。
7. 根据权利要求1所述的装置,其中像素的剪切值包含多个位,每一位与剪切区域的 相应集合相关联且指示所述像素是否在所述集合中的所述剪切区域中的任一者内。
8. 根据权利要求1所述的装置,其中所述像素的所述剪切值的所述多个位与剪切区域 的多个集合相关联,每一剪切区域属于所述多个集合中的一者。
9. 根据权利要求1所述的装置,其中像素的剪切值指示所述像素是否在任何剪切区域内,且其中对于每一剪切区域,所述处理单元将所述剪切区域内的所述像素的所述 剪切值设定为预定值。
10. 根据权利要求1所述的装置,其中所述缓冲器是在执行剪切之前通过将所述缓冲器 中的所述剪切值重设为零而初始化。
11. 根据权利要求1所述的装置,其中所述处理单元将像素的剪切值与参考值进行比较 且使具有等于或超过所述参考值的剪切值的像素通过。
12. 根据权利要求1所述的装置,其中所述处理单元从图形管线中的先前级接收传入的 像素且基于所述传入的像素中的每一者的剪切值来确定是使所述像素通过还是丢 弃所述像素。
13. 根据权利要求1所述的装置,其中所述处理单元使通过所述多个剪切区域的联合而 形成的区域内的像素通过。
14. 根据权利要求1所述的装置,其中所述处理单元使通过所述多个剪切区域中的至少 两者的相交而形成的区域内的像素通过。
15. 根据权利要求1所述的装置,其中所述处理单元使通过所述多个剪切区域的相交而 形成的区域内的像素通过。
16. 根据权利要求l所述的装置,其进一步包含渲染单元,其用于渲染所关注的区域内的且基于所述缓冲器中的所述剪切值而确定的像素。
17. 根据权利要求1所述的装置,其中所述缓冲器为模版缓冲器,且所述处理单元为用 于3-D图形的模版测试单元,且其中所述模版缓冲器和模版测试单元用于对2-D图 形执行剪切。
18. 根据权利要求17所述的装置,其中对于每一剪切区域,所述处理单元对所述剪切 区域内的像素执行模版测试且执行模版操作以更新所述剪切区域内的所述像素的所述剪切值。
19. 根据权利要求1所述的装置,其中像素与N位剪切值相关联,其中N大于一,且 其中所述处理单元对高达2N-1个剪切区域执行剪切。
20. —种装置,其包含模版缓冲器,其用于存储3-D图形中的像素的模版值且存储2-D图形中的像素的 剪切值;以及模版测试单元,其用于对3-D图形执行模版测试且对2-D图形以循序次序对多个 剪切区域执行剪切。
21. 根据权利要求20所述的装置,其中对于每一剪切区域,所述模版测试单元递增所 述剪切区域内的像素的剪切值。
22. —种无线装置,其包含处理 器,其用于以循序次序以一次一个剪切区域的方式对多个剪切区域执行剪 切,且对于每一剪切区域,更新所述剪切区域内的像素的剪切值;以及 存储器,其用于存储像素的剪切值。
23. —种方法,其包含以循序次序以一次一个剪切区域的方式对多个剪切区域执行剪切;以及 对于每一剪切区域,更新所述剪切区域内的像素的剪切值。
24. 根据权利要求23所述的方法,其中所述更新所述剪切区域内的像素的剪切值包含 递增所述剪切区域内的所述像素的所述剪切值。
25. 根据权利要求23所述的方法,其进一步包含移除所述多个剪切区域中的至少一者;以及对于待移除的每一剪切区域,如果所述剪切区域内的像素的剪切值大于零,那么 递减所述剪切值。
26. 根据权利要求23所述的方法,其进一步包含将像素的剪切值与参考值进行比较;以及 使具有等于或超过所述参考值的剪切值的像素通过。
27. 根据权利要求23所述的方法,其进-一步包含使通过所述多个剪切区域的联合而形成的区域内的像素通过。
28. 根据权利要求23所述的方法,其进一步包含使通过所述多个剪切区域中的至少两者的相交而形成的区域内的像素通过。
29. —种设备,其包含用于以循序次序以一次一个剪切区域的方式对多个剪切区域执行剪切的装置;以及用于更新每一剪切区域内的像素的剪切值的装置。
30. 根据权利要求29所述的设备,其进一步包含用于将像素的剪切值与参考值进行比较的装置;以及 用于使具有等于或超过所述参考值的剪切值的像素通过的装置。
31. 根据权利要求29所述的设备,其进一步包含用于使通过所述多个剪切区域的联合而形成的区域内的像素通过的装置。
32. —种处理器可读媒体,其用于存储可操作以执行以下动作的指令以循序次序以一次一个剪切区域的方式对多个剪切区域执行剪切;以及 更新每一剪切区域内的像素的剪切值。
33. 根据权利要求32所述的处理器可读媒体,且其进一步用于存储可操作以执行以下 动作的指令将像素的剪切值与参考值进行比较;以及 使具有等于或超过所述参考值的剪切值的像素通过。
全文摘要
通过一次将一个剪切区域绘制于图表面上且更新每一剪切区域内的像素的剪切值而以循序执行任何数目的剪切区域的剪切。像素的剪切值可指示覆盖所述像素的剪切区域的数目且可针对覆盖所述像素的每一剪切区域而递增。像素的剪切值也可为位图,且如果所述像素在剪切区域内,那么可将所述剪切区域的位设定为一。使所关注的区域内的像素通过且渲染所述像素,且废弃在所述区域外部的像素。可通过参考值来界定此区域,可将所述参考值设定为(a)针于剪切UNION运算,对于所有剪切区域的联合为一,或(b)针于剪切AND运算,对于多个(例如,所有)剪切区域的相交为大于一。
文档编号G06T15/30GK101548297SQ200780043082
公开日2009年9月30日 申请日期2007年11月20日 优先权日2006年11月21日
发明者安格斯·M·多比耶, 焦国方 申请人:高通股份有限公司