用于产生可编程像素包的基本指令光栅级的方法和系统的制作方法

文档序号:6583186阅读:157来源:国知局
专利名称:用于产生可编程像素包的基本指令光栅级的方法和系统的制作方法
技术领域
本发明的实施例涉及图形处理器。更具体地说,本发明的实施例涉及用于产生可 编程像素包的基本指令光栅级的方法和系统。
背景技术
三维图形图像的渲染在多种电子游戏和其它应用中受到关注。渲染是描述从三维 物体的数据库表示转变为所述物体在视图表面上的二维投影的整个多步骤处理的通称。渲染处理包含若干步骤,例如设置含有随后着色/纹理处理所需要的信息的多边 形模型,向所述多边形网格模型施加线性变换,剔除(culling)朝向背面的多边形,相对于 视窗体来裁剪所述多边形,将多边形扫描转换/光栅化为像素坐标系,和使用内插或递增 着色技术来着色/照明各个像素。图形处理单元(GPU)是通常用于图形系统以加速3-D渲染应用程序运行的专用集 成电路装置。GPU通常与中央处理单元(CPU) —起使用以为在计算机系统上执行的一个或 一个以上应用程序产生三维图像。现代GPU通常使用图形管线来处理数据。现有技术图1展示一描绘传统现有技术管线100的各级的图。所述管线100是具 有专用于执行特定功能的若干级的常规“深”管线。变换级105执行基元的几何计算且可 执行裁剪操作。设置/光栅级110将所述基元光栅化。纹理地址115和纹理拾取120级用 于纹理映射。雾化级130实施雾化算法。α测试级135执行α测试。深度测试140执行深度测试以剔除被遮挡的像素。α掺合级145执行α掺合色彩组合算法。存储器写入级150写入管线的输出。图1中所说明的传统GPU管线结构的级通常通过使用广泛实施的图形编程 API (应用程序编程接口)(例如OpenGL 图形语言、Direct3D 和类似物)来为高速渲染 操作(例如纹理、照明、着色等)而最佳化。管线100的结构被配置为多级深管线结构,以 使得管线的整体渲染处理量最大化。一般来说,深管线结构具有足够的数据处理量(例如, 像素填充率等)以实施更加复杂的场景的快速、高质量渲染。在便携式手持装置中使用三维图形越来越受到关注,在这类装置中,成本和功率 消耗是重要的设计要求。此类装置包括(例如)无线电话、个人数字助理(PDA)和类似装 置。然而,传统深管线结构需要相当大的芯片面积,从而导致成本高出期望成本。另外,即 使所述级正执行相对较少的处理,深管线也会消耗相当大的功率。这是因为所述级中有许 多级不论是否正在处理像素都会消耗大致相等量的功率。由于考虑到成本和功率,图1中所说明的常规深管线结构不适于许多图形应用, 例如在无线电话和PDA上实施三维游戏。因此,需要一种适用于图形处理应用但具有降低 的功率和尺寸要求的处理器结构。在图形结构管线的传统开端(例如,光栅化模块)之前,不考虑即将到来的管线所 使用的功率损耗(power draw)和门(gate)的数目。然而,不考虑手持计算装置所使用的 功率和门将不利地影响其整体操作。具体地说,功率和门使用因素将导致手持装置和其上 展示的任何图形的极为不良的操作。对功率损耗和门使用的主要影响因素之一是像素包大 小。亦即穿过管线的每个像素的数据大小,其影响(例如)总线大小,且还影响每个管线级 的电路复杂度。在常规应用中,功率消耗并不重要,且因此像素包可能非常大。此外,当较 大像素包在不同级处被处理时,图形管线的若干部分可保持延长期限的闲置。由于光栅级 110的固定功能,在像素数据处理期间可发生较大功率损耗和门使用。

发明内容
因此,本发明在各种实施例中提供一种用于产生可编程像素包的允许基本指令的 光栅级的方法和系统。此外,本发明提供一种产生可编程像素包的可编程光栅级,其将像素 包的整体大小降低为一个或一个以上更小的像素信息行以由每个时钟处理,从而允许一宽 度降低的管线总线。另外,本发明提供一种产生可编程像素包的光栅级,其允许软件编程其 中在每个时钟上压缩数据的方式。另外,本发明的实施例提供一种在像素包压缩和处理期 间消耗较少功率且使用更少门的光栅级。本发明的实施例涉及用于光栅器模块的方法和系统。在一个实施例中,由图形管 线的光栅化模块执行包括复数个顶点的几何基元的光栅化,其中所述顶点具有一个或一个 以上个别参数(例如,色彩值或纹理坐标)。所述光栅化包括复数个可编程内插器以用于 为一几何基元的像素计算像素参数。所述光栅化模块还包括一用于存储与第一可编程内插 器相关联的第一指令的存储器,所述第一指令用于指示所述第一可编程内插器将对其操作 的第一参数,且另外指示用于存储其结果的像素包的第一部分。所述光栅化模块还包括一 用于存储与第二可编程内插器相关联的第二指令的存储器,所述第二指令用于指示所述第 二可编程内插器将对其操作的第二参数,且还指示用于存储其结果的所述像素包的第二部分。通过使用此方式,像素包的内容和数据的位置在软件控制下是完全可编程的。上述可 重复若干时钟周期以产生一多行像素包,其中每个行中的内容和数据位置是可编程的。在另一实施例中,揭示一种用于在手持计算装置上使用一可编程像素包的设备。 首先,在光栅器处接收一几何基元。接着,图形管线的光栅化模块处理所述基元(例如,三 角形)以形成具有灵活大小和结构的像素包。在一个实施例中,光栅化模块可在指令控制 下针对像素数据包的每个行不同地重新分配以在不同时间处执行不同操作,从而导致来自 光栅化模块的一灵活的且可编程的像素包。可针对每个新基元更新像素包格式。在本发明的多个实施例中,本发明可通过由提供数据压缩和多行像素包来降低总 线宽度从而显著降低手持计算装置上图形结构的带宽要求。另外,本发明降低了手持计算
装置上图形结构的功率消耗。本发明进一步降低了用于手持计算装置上图形结构的门的数 目。


在附图的图式中以实例方式而并非以限制方式来说明本发明,且其中类似参考元 件符号指代相似元件。现有技术图1展示描绘传统现有技术管线的各级的图。图2展示根据本发明一个实施例的计算机系统。图3展示根据本发明第二实施例的计算机系统。图4是说明包含根据本发明一个实施例的可编程图形处理器的组件的方框图。图5展示根据本发明一个实施例在光栅级内实施的复数个高精度和低精度内插 器的示范性图。图6展示描绘根据本发明一个实施例的藉此由光栅化级从设置级处接收图形基 元且将其转换为其构成像素包的处理的示范性流程图。图7是展示根据本发明一个实施例的在一管线中处理像素包的数据流程图。图8是根据本发明一个实施例展示的载入寄存器中的像素数据的方框图。图9展示根据本发明一个实施例的处理的步骤的流程图。图10说明根据本发明一个实施例用于降低色彩值大小的数据流程图。图11是根据本发明一个实施例的色彩值降低的方框图。图12是根据本发明一个实施例用于降低手持计算装置上的图形结构的功率消耗 的示范性处理的流程图。图13是根据本发明一实施例的几何基元的方框图。图14展示描绘根据本发明一个实施例的箝位ζ值内插处理中所使用的多边形和 有界框的图。图15展示根据本发明一个实施例的箝位ζ值内插处理的步骤的流程图。图16展示由本发明实施例使用的示范性纹理映射(例如,“纹理”)的图。图17展示具有根据本发明一个实施例而应用的纹理的包覆版本的多边形。图18展示具有根据本发明一个实施例而应用的纹理的箝位版本的多边形。图19展示根据本发明一个实施例的纹理坐标参数箝位处理的步骤的示范性流程 图。
图20展示根据本发明一个实施例的示范性多小中见大映射(mip mapping)处理的图。图21展示根据本发明一个实施例的LOD参数箝位处理1000的步骤的流程图。
具体实施例方式现将详细参看本发明的优选实施例,其实例在附图中说明。尽管将结合优选实施 例来描述本发明,但应了解不希望其将本发明限于这些实施例。相反,希望本发明涵盖可包 括于如附随权利要求书所限定的本发明精神和范围内的替代物、修改和等效物。此外,在本 发明实施例的以下详细描述中,陈述多个特定细节以提供对本发明的彻底理解。然而,所属 领域的技术人员将认识到可在不存在这些特定细节的情况下实践本发明。另外,未详细描 述众所周知的方法、程序、组件和电路以免不必要地混淆本发明实施例的方面。符号和术语从计算机存储器内对数据位所进行的操作的程序、步骤、逻辑块、处理和其他符号 表示的角度来展现以下详细描述的某些部分。这些描述和表示是数据处理领域的技术人员 用以将其作品实质最有效地传达给所属领域的其他技术人员的方式。程序、计算机执行的 步骤、逻辑块、处理等在此处且一般来说被认为是导致希望结果的自相容步骤或指令序列。 所述步骤是需要对物理量进行物理操作的步骤。通常(尽管不必要),这些量采用能在计算 机系统中存储、传递、组合、比较或以其他方式操作的电信号或磁信号的形式。已多次证实 将这些信号称为位、值、元素、符号、字符、项、数字或类似形式是便利的,主要是因为常见用 法的缘故。然而,应记住所有这些和类似术语与适当物理量相关联且仅仅是应用于这些量的 方便的标记。除非另外特别规定(从以下论述中易见),否则理解为在本发明中,使用例如 “处理”或“存取”或“执行”或“存储”或“渲染”等术语的论述始终指代计算机系统(例如 图2的计算机系统200)或类似电子计算装置的行为和处理,其操作表示为计算机系统的寄 存器和存储器内的物理(电子)量的数据并将其变换为类似地表示为计算机系统存储器或 寄存器或其它此类信息存储、传输或显示装置内的物理量的其它数据。计算机系统平台现参考图2,其展示根据本发明一个实施例的计算机系统200。根据本发明一个实 施例的计算机系统200提供执行平台以实施本发明的某种基于软件的功能性。如图2中描 绘,计算机系统200包括一 CPU 201,其通过主机接口 202耦合到图形处理器205。所述主机 接口 202将在CPU 201与图形处理器205之间传递的数据和命令翻译为其相应格式。CPU 201和图形处理器205均通过存储控制器220耦合到存储器221。在系统200实施例中,存 储器221是共享存储器,这是指存储器221借以存储用于CPU 201和图形处理器205两者 的指令和数据的性质。通过存储控制器220对共享存储器221进行存取。共享存储器221 还存储包含驱动所耦合的显示器225的视频帧缓冲器的数据。如上所述,本发明的某些处理和步骤在一个实施例中实行为常驻于计算机系统 (例如,系统200)的计算机可读存储器(例如,存储器221)内且由系统200的CPU 201和 图形处理器205执行的一系列指令(例如,软件程序)。当执行时,所述指令使得计算机系 统200实施本发明的功能性(如下文所述)。
如图2中所示,系统200展示实施本发明功能性的计算机系统平台的基本组件。相应地,系统200可构建为(例如)若干不同类型的便携式手持电子装置。此类装置可包括 (例如)移动式电话、PDA、手持游戏装置和类似物。在这类实施例中,将包括被设计成添加 外围总线、专用通信组件、用于专用IO装置的支持体和类似物的组件。另外,应了解,虽然组件201到225在图2中描绘为离散组件,但所述组件201到 225中的若干者可构建为单个单片集成电路装置(例如,单个集成电路小片),其经配置以 利用由现代半导体制作工艺提供的高集成度。举例来说,在一个实施例中,CPU 201、主机接 口 202、图形处理器205和存储控制器220被制作成单个集成电路小片。图3展示根据本发明一个替代性实施例的计算机系统300。计算机系统300大体 上类似于图2的计算机系统200。然而,计算机系统300使用具有专用系统存储器321的处 理器201和具有专用图形存储器322的图形处理器205。在系统300实施例中,系统存储器 321存储用于在CPU 201上执行的处理/线程的指令和数据,且图形存储器322存储用于那 些在图形处理器205上执行的处理/线程的指令和数据。图形存储器322存储用于驱动显 示器225的视频帧缓冲器的数据。如同图2的计算机系统200 —样,计算机系统300的组 件201到322中的一者或一者以上可集成到单个集成电路小片上。图4是说明包含根据本发明一个实施例的示范性可编程图形处理器205的组件的 方框图。如图4中描绘,图形处理器205包括一设置级405、一光栅级410、一门监级420、一 数据拾取级430、算术逻辑单元(ALU)管线440和一数据写入级455。在一个实施例中,可 编程图形处理器205包括若干ALU 450,所述ALU 450经配置以执行一着色器程序以实施 3D图形操作,例如纹理组合、雾化、α掺合、α测试或其他着色算法。然而,应了解,在以下 整个论述中,可编程图形处理器205还可经配置以执行其它类型的处理操作。设置级405从主机(例如从在CPU 201上运行的软件应用程式)接收指令和图形 基元。在一个实施例中,设置级405执行坐标(X形式)的几何变换、裁剪和设置的功能。 设置单元从基元中获取顶点信息(例如,x,y,z、色彩和/或纹理属性等),且应用用户定义 的视图变换以为每个几何基元(通常称为三角形,因为基元通常实施为三角形)计算屏幕 空间坐标,所述屏幕空间坐标接着被发送到光栅级410以绘制给定三角形。可包括一顶点 缓冲器408,以提供用于由设置级405使用的顶点数据的缓冲器。在一个实施例中,设置级 405设置重心坐标变换。在一个实施方案中,设置级405是一浮点超大指令字(VLIW)机,其 支持32位IEEE fl、S15. 16定点和压缩· 8格式。光栅级410接收来自设置级405的关于待渲染(例如,转换为像素)的三角形的 数据。光栅级410通过内插法来为给定三角形的每个像素处理参数,且确定需要作为渲染 的一部分而为像素内插的着色器属性,例如计算色彩、纹理和雾化掺合因素。在一个实施例 中,光栅级410计算像素包的重心坐标。在重心坐标系中,相对于三角形的顶点来测量三角 形中的距离。重心坐标的使用降低了所需动态范围,其允许使用与浮点计算相比需要更小 功率的定点计算。光栅级410为待处理的三角形的每个像素产生至少一个像素包。每个像素包包括 用于处理所需的一有效负荷的像素属性(例如,色彩、纹理、深度、雾化、(X,y)位置)以及 边带信息、和待对像素包执行的操作指令序列的字段。光栅级410中的指令区(未图示) 将指令序列号指定给像素包。边带信息还可包括一有效字段和一取消字段。像素包可包括一行或一行以上像素信息。门监级420对下游单元执行数据流控制功能。在一个实施例中,门监级420具有 一用于像素包的排程、负载平衡、资源分配和危害避免的相关记分板425。记分板425追踪 像素的进入和引退。进入门监级420的像素包设定记分板,且当像素包在完成处理或标为 取消之后从图形处理器205排出(例如,引退)时重设记分板。数据拾取级430拾取用于由门监420传递的像素包的数据。此可包括(例如)通 过为像素包的每个行执行恰当色彩、深度或纹理数据读取来拾取色彩、深度和纹理数据。数 据拾取级430可(例如)从帧缓冲器(未图示)拾取像素数据、从纹理映射拾取纹素数据 (texel data),且还可管理一局部纹理/雾化高速缓冲存储器432和一色彩/深度高速缓 冲存储器434。在将像素包发送到下一级之前,将所拾取的数据放置在像素包字段上。所述像素包的行进入一算术逻辑单元(ALU)管线440以用于处理。ALU管线440 具有一序列的ALU。尽管图中说明了四个ALU,但可依据应用而在ALU管线440中使用更多 或更少的ALU。ALU管线440的输出转到数据写入级455。数据写入级455将像素包转换为像素 数据,且将结果(例如,色彩、ζ深度等)存储在写入缓冲器452中,或直接存储到存储器中 的帧缓冲器中。数据写入级455可执行的功能的实例包括色彩和深度回写以及格式转换。图5展示根据本发明一个实施例在光栅级410内实施的复数个可同时操作的内插 器501到508的图。如图5中描绘,展示一组高精度内插器(例如,四个内插器501到504) 和一组低精度内插器(例如,四个低精度内插器505到508)。如上文所述,光栅级410接收来自设置级405的关于待渲染(例如,转换为像素) 的三角形的数据。对于每个所接收的三角形来说,光栅级410将三角形光栅化为其构成像 素中的每一者,其中为每个像素内插若干参数。光栅器通过以确定性顺序方式系统地评估 每个像素(例如,“遍历”三角形)来为三角形的每个像素计算渲染参数。通过内插处理根 据与三角形顶点相关联的数据计算所述参数。光栅级410有利地使用一阵列可编程内插器501到508来并行计算参数。当光栅 级410遍历每个像素时,所述像素的参数被迭代;且所得数据被传递到管线的随后级(例 如,作为一像素包)。内插结果可被放置在像素包中的可编程选择的位置中。如一般所知, 复杂3D场景可通常具有大量多边形且另外具有对于每个多边形的大量渲染参数。这类参 数包括(例如)色彩、纹理坐标、透明度、深度、细节级别(LOD)和类似物。实时3D渲染管 线需要每秒执行几百万次计算以维持每秒绘制真实60到70帧所需的像素处理量(例如填 充率)。光栅级410使用并行阵列的内插器501到508以维持所需像素填充率且同时节约 功率消耗和硅面积。内插器501到508的输出用于构造复数个像素包行(例如,存储器阵列中的数据 结构)。在本实施例中,可编程压缩逻辑模块510(例如,包括纵横开关)通过将内插器501 到508的输出排列成数据包行并格式化随后处理所需的像素参数(例如,色彩、纹理、深度、 雾化等)的行的字段来运行。(例如内插器501到508的)在行中的放置是可编程的。除 了这些参数,压缩逻辑模块510还将(例如用于待对像素包执行的随后操作的)处理指令 排列成像素包行。举例来说,当一像素被迭代时,由内插器501到508产生的所计算的参数 使得图形管线的随后级能拾取完成像素渲染需要的所需表面属性(例如,色彩、纹理等)。对于简单3D场景,可使用单个行(例如,一单行像素包)来描述一给定像素。比较起来,对于更复杂的3D场景来说,一给定像素描述可能需要复数个行(例如,四行像素包)。在本实施例中,内插器501到508为可编程的且可对其灵活地指定内插计算。换 句话说,内插器的参数指定是可编程的。所分配的内插计算可经软件排程,以便尽可能地将 所述八个内插器中的每一者保持繁忙(例如,在每个时钟的基础上)。在一个实施例中,软 件排程器确保将内插器501到508保持繁忙并避免等待/空闲时间。以此方式,可将给定 像素参数计算灵活地分配给内插器501到508中的任一者。当为一三角形进行分配时,内 插器的参数分配对于所述三角形的每个像素而言为固定的。对于下一个三角形,参数分配 可被重新编程或者以其他方式重新配置。以此方式,内插器的参数分配在每个三角形基础 上是可编程的。在本实施例中,所述阵列的内插器501到508被划分成高精度内插器(例如,内插 器501到504)和低精度内插器(例如,内插器505到508)。所述划分经配置以维持内插 计算的可灵活分配能力,且同时节约用于内插器阵列的硅面积。所述划分经配置以利用有 些参数需要以高精度来计算(例如,纹理坐标)而其它参数则不需要的事实。对于此类低 精度参数来说,由高精度计算给予的额外精度对所得图像并无显著作用。因此,可将低精度 参数分配给低精度内插器505到508。实施低精度内插器505到508需要明显更少的硅面 积。另外,低精度内插器505到508每时钟周期消耗更少的功率。对于手持装置来说,这些 是重要的设计考虑。在一个实施例中,内插器501到508对于其参数计算使用重心坐标。如上所述,使 用重心坐标允许使用与浮点计算相比需要更少功率的定点计算。在一个实施例中,高精度 内插器501到504产生复数个14位内插系数,且低精度内插器505到508产生复数个8位 内插系数,尽管可实施任何分辨率范围。一般来说,为内插系数所选择的精确度由对于所得 高和低精度内插值可容忍的最大容许误差规定。另外,在一个实施例中,内插器501到508对于其参数计算使用透视修正重心坐 标。此允许由内插器501到508内插透视修正参数。在一个实施例中,透视修正处理使用 一透视修正像素参数“W”,所述参数“W”以浮点精度而为三角形的每个像素计算一次。图6展示描绘根据本发明一个实施例的藉此由光栅化级410从设置级405处接收 图形基元(例如,多边形630)且将其转换为其构成像素包的处理的流程图。如上文所述,光栅级410接收来自设置级405的关于待渲染(例如,转换为像素) 的三角形(例如,多边形)的数据。此在图6中说明为三角形630从设置级405传播到光 栅级410。三角形630包含一几何基元,其与指示光栅化和渲染三角形的方式的指令(例 如,指令631)和基元数据(例如,诸如色彩、纹理坐标、透明度、xy、深度等)相关联。光栅级410包括一指令单元635,其接收并处理与三角形630相关联的指令631, 且控制由内插器阵列(例如,内插器501到508)载入和处理基元数据632的方式。指令 631包括控制在三角形的每个像素上待内插三角形630的基元数据632的方式的光栅内插 指令。如上所述,从与三角形顶点相关联的基元数据632内插用于三角形的每个像素的参 数。光栅指令631控制(例如,基元数据632的)哪个参数由高精度内插器(例如,内插器 501到504)或低精度内插器(例如,内插器505到508)中的哪个来处理。换句话说,指令 单元实施一可编程的基于软件的排程器,其根据光栅指令631来向内插器501到508排程并分配参数数据内插计算。光栅指令631还控制来自内插器501到508的内插结果将载入所产生的数据包的每一行的位置。指令单元635与压缩逻辑510互相作用,以实施所要行卸载。以此方式,光栅指令631控制三角形630的像素包的建立。举例来说,对于三角形 630的每个像素,光栅指令631确定用于内插器501到508中每一者的参数输入,且还确定 内插参数输出的行位置、用于随后处理所需的像素参数(例如,色彩、纹理、深度、雾化等) 的字段和用于像素包的随后操作的处理指令序列号。在典型操作中,每个时钟周期形成一 像素包的一个行。因此,在两个时钟周期中建立两行像素包,在三个时钟周期中建立三行像 素包,且因此,在η个时钟周期中建立η行像素包。像素包形成(例如,像素包641到642) 后,其传播到管线的随后级。如上所述,应注意到在一个实施例中,将基元数据632分配给内插器阵列636的编 程(例如,将哪些参数分配给内插器501到508中的哪个)在每个多边形基础上是可编程 的。举例来说,当指令单元635分配内插器阵列636来建立三角形630的像素包时,所述配 置对于三角形630的每个构成像素保持恒定。图7展示根据本发明一个实施例说明像素包520的数据流程图。如上文所提及, 像素包一般来说是对图形显示器中一像素的完整的一组描述。在本实施例中,像素包520 包括边带信息710和有效负荷信息720。在一个此类实施例中,有效负荷信息720包括(例 如)用于与像素包520相关联的像素的色彩信息、深度信息和纹理信息。在本实施例中,边带信息710包括一具有一个或一个以上位的“类型”字段711。 可能有不同类型的数据包流经图4的管线400。所述类型字段用于将像素包520识别作为 含有像素数据的像素包的一行。在本实施例中,图7的边带信息710可包括一“偶数/奇数”(e/o)字段712。在 一个实施例中,所述e/o字段712的长度为单个位。另外,图7的边带信息还包括一“取消” 字段713。在一个实施例中,所述取消字段713的长度为单个位。如上文所提及,如果所述 取消位设定在图4管线400的某处,那么像素包将行进穿过管线400的其余部分而不进行 有效处理。在本实施例中,图7的边带信息710包括一“序列”字段714。在一个实施例中,所 述序列字段的长度为三个位。所述序列位将像素包520链接到将在随后级(例如,DF430、 ALU级440和DW 455)中应用到像素包的指令。继续参看图7,在本实施例中,像素包520的有效负荷部分720中的数据在图3的 光栅级310中被分成一个或一个以上“行” 0、1、……、N。也就是说,有效负荷部分720可 由单个数据行组成,或其可由一组行组成。像素包520的边带信息710与从有效负荷部分720形成的每个行或多个行相关 联。在一个实施例中,每个行包括边带信息710和80位的像素数据,如图7中说明。随着每个新的时钟周期,在图4的管线400中连续处理像素包520的每个行。举 例来说,行0在第一时钟处开始沿管线400向下行进,接着在下一个时钟处为行1,等等。一 旦与像素包520相关联的所有行被载入管线400中,那么与下一个像素包相关联的行被载 入管线400中。在一个实施例中,一个像素包的像素数据行与来自下一个像素包的像素数 据行交错。通过以此方式来交错像素包的行,可避免因管线400中功能单元等待而导致的停止。现参看图8,根据本发明一个实施例来展示载入寄存器中的像素数据的方框图。每 个行821中的像素数据的长度为80位。在一个此类实施例中,通过使用四(4)组20位值 (例如,822到825)来表示每个行821中的像素数据。所述20位值的组中的每一者可表示一 个或一个以上像素数据例子。一 20位像素数据组中可包括的像素属性的实例包括但不限 于16位Z深度值835 ;16位(s,t)纹理坐标850和4位细节级别值830 ;—对色彩值840, 其每一者具有十(10)位的精度(例如,10位高精度和10位低精度);或压缩的5555RGBA 845 (红、绿、蓝、α)值,其每者的长度为五(5)位。特定数据布局或压缩格式取决于如何由 光栅指令为基元编程内插器。如本文所述,命令迭代的指令(例如,4个高精度和4个低精度指令)正分配4个 高精度内插器中的一者获取像素设定级405发送的一个参数并对所述参数执行插入。此 夕卜,指令中的目标指示如何压缩行821中的内插的数据。举例来说,光栅级410在整个几何 基元(例如,三角形或类似物)上逐个像素地遍历,内插所有参数且将其压缩成80位值以 沿管线400向下流动。在一个实施例中,光栅级405每个时钟可执行4个高精度和4个低精度迭代值。对 光栅级405进行操作的软件将以像素的时钟长度来编程内插器。举例来说,如果像素包将 仅采用一个具有80位的行821,或如果其具有足够的纹理从而需要复数个行821以含有用 于所述像素的所有数据。此外,像素数据到行821的20位组(例如,822到825)的分配也 随着每个几何基元而变化。也就是说,每个几何基元的分配和指令在光栅级405中是固定 的,但其在几何基元之间是可变的。图9展示根据本发明一个实施例的处理900的步骤的流程图。如图9所描绘,处 理900说明根据本发明一个实施例由光栅级410增建一灵活性像素包所包含的步骤。处理900在步骤901中开始,其中光栅级410从图形管线的设置级405处接收或者 存取一多边形。在步骤902中,所述多边形被光栅化为复数个构成像素。在步骤903中,根 据用于多边形的光栅指令将像素的参数计算分配给一组低精度内插器(例如,内插器505 到508)和一组高精度内插器(例如,内插器501到504)。如上所述,多边形包含构成几何 基元数据和相关联的光栅指令(例如,控制多边形的像素包增建的指令)。光栅级410内的 一指令单元635分配内插器501到508以处理多边形的像素且建立像素包。在步骤904中,并行执行所分配的内插器计算。在步骤905中,根据多边形的光栅 指令将所得内插器输出载入到一像素包的一行中。如上所述,指令单元635分配压缩逻辑 510而以特定方式建立像素包。在步骤906中如果完成像素处理,那么在步骤908中,处理 900将完成后的像素包输出到图形管线的随后级中。否则,处理900前进到步骤907,且为 像素包的下一行并行执行所分配的内插计算。以此方式,建立像素包的逐个行,直到完成像 素的描述为止。如上所述,简单3D场景可通常对于每个像素包具有一个行,而相对复杂的 场景可对于每个像素包具有两个、三个或更多个行。现参看图10,根据本发明一个实施例来展示用于降低色彩值大小的方法的数据流 程图。具体地说,图1000展示进入本发明的光栅模块410中的具有任何大小的几何基元 1005 (例如,三角形)。当几何基元1005进入图形管线的光栅化模块410时,光栅化模块410 通过内插器1010内插几何基元1005以产生一第一色彩值1020。一般来说,内插器1010以逐个像素的方式内插几何基元以将数据从几何基元1005数据变换为像素数据。在一个实 施例中,第一色彩值1020是一高位色彩值(例如,8位或更高)。接着在光栅模块410的截断1025部分处截断所述第一色彩值1020。一般来说,截 断从一组位中移除最低有效位。举例来说,截断1025部分可截断第一色彩值1020 (例如, 8位色彩值)以产生一被截色彩值1030 (例如,5位色彩值)。光栅化模块410接着使用一 抖动台1040以抖动被截色彩值以产生一被截且抖动的色彩值1050。一般来说,抖动用于 降低通常与被截色彩值1030相关联的条带效应。接着被截且抖动的色彩值1050从光栅化 模块410中传播出来,并进入下游管线1055的其余部分。通过这样做,与色彩值的传播和 处理有关的功率使用被最小化。应注意,所述截断和/或抖动的选择可为一可编程属性,以 使得软件应用程序可选择使用色彩值的全部色彩精度还是使用被截/抖动版本,其中假设 管线的其余部分同样为可编程的。这是合乎需要的,因为简单像素(即,仅使用内插色彩值 的像素)可能需要更高的精度以达到视觉合意,而复杂像素(即,涉及许多处理步骤(例如 纹理、雾化等)的像素)受到迭代色彩的总作用较低,且因此较不需要全色彩精度以便维持 较高的整体视觉质量。进一步需要允许抖动选择独立于截断色彩值的选择,因为某些图形 API ( S卩,OpenGL)需要这种灵活性。现参看图11,根据本发明一个实施例来展示通过截断而减小色彩值的方框图。一 般来说,图1100说明具有长度1110的N个位的第一色彩值1020。在减小的文件1120中, 经过变换的色彩值1030的一部分已被截断或移除。所得1120因此比原始N位文件更小且
更容易处理。举例来说,原始文件大小1110可为8位,例如N将为八,色彩值1130可为三位宽 且将导致具有5位的被截色彩值大小1120。接着将通过管线来处理所述5位。注意到,所 述5位仅仅是复数个可能被截大小选项中的一者。此外,众所周知色彩值1110或1120位大 小是每个色彩的。也就是说,1110(或1120)可为一红色彩值、或蓝色彩值、或绿色彩值、或 设计者希望的任一其他参数。然而,其仅为单个色彩值,且以相同方式来处理其他色彩值。 因此,如果在一个实施例中图形管线使用了三色应用程序,那么将有三个1120位部分需要 通过管线来处理。没有一个单个1120位部分涵盖所有色彩。现参看图12,根据本发明一个实施例展示用于降低手持计算装置上的图形结构的 功率消耗的处理的流程图1200,其使用减小的位宽度色彩值。现参看图12的步骤1202,光栅级410从图形管线(例如,图形管线205)的设置 级405处接收三角形基元。如上所述,三角形具有控制手持计算装置的图形管线渲染其构 成像素的方式的若干参数。如本文陈述,手持计算装置可以是移动电话、寻呼机、个人数字 助理或类似物。此外,图形管线可以是与手持计算装置的处理器或逻辑耦合的即插即用组 件。在另一实施例中,图形管线可在制造时与手持计算装置固定耦合。现参看图12的步骤1204和图10,在一个实施例中,通过在图形管线的光栅化模 块410的内插器1010处的内插来产生一色彩值1020。如本文陈述,色彩值1020可具有任 何大小,例如8位、16位、32位或类似大小。在一个实施例中,像素参数的计算包括内插包 括复数个顶点的几何基元1005,其中每个顶点具有一各自的色彩值,且内插由光栅化模块 410的内插器部分1010来执行。举例来说,光栅器最初为几何基元的每个像素内插一各自 的色彩值,其中所述各自的色彩值具有一第一位宽度(例如,8位、16位、32位等)。
现参看图12的步骤1206和图10,在一个实施例中,内插色彩值1020在截断部分 1025处被截断。在一个实施例中,截断可导致减少到一第二位宽度的被截色彩值1030,以 产生一各自的被截色彩值。在一个实施例中,所述第二位宽度可为2到7之间的任何位数。 如所属领域中众所周知,截断仅仅是色彩的可能变化形式数目的减少。举例来说,一色彩块 或文件可作为红色的变化形式而引入截断部分1025。最初色彩参考可为粉色(例如,8位 色彩),在截断部分1025处的截断处理期间,新色彩参考(例如,被截色彩值1030)可为淡 红色(例如,5位色彩)。在此情况下,抛弃最低有效的3个位。因此,如所属领域中众所周 知,色彩值大小和实际参考色彩已被改变。现参看图12的步骤1208和图10,在一个实施例中,所得被截(例如,变换等)色 彩值1030由抖动台1040更改(例如,抖动等)。举例来说,经过变换的色彩值1030可通过 使用一基于屏幕位置的抖动台1040来抖动以产生一被截抖动色彩值1050。另外,各自的被 截抖动色彩值1050可传播到图形管线的下游模块1055。在一个实施例中,所述基于屏幕位 置的抖动台1040基于每个像素的屏幕位置来返回一抖动值,且其中抖动值用于更改每个 像素的各自的色彩值以防止可能由色彩形成引起的视觉假象。如所属领域中众所周知,抖动是用于在不能得到特定图像中全部范围的色彩(例 如,由于截断或调色板大小减小)时改良图像的处理。举例来说,如果将显示一梯度而系 统不具有显示组成“梯度”的所有着色块(shade)的资源,那么便对图像(或色彩)进行抖 动。也就是说,以通过用空间分辨率换取色彩分辨率来重建缺少的色彩的方式来混合剩余 色彩。举例来说,如果所需要的色彩是粉色,那么光栅模块410可在复数个红色像素内散布 一些白色像素。通过这样做,眼睛将所散布的白色与红色掺合,且“看到”粉色。因此,在梯 度实例中,通过引入在整个梯度中散布的较多白色和较少红色,色彩从红色光滑地过渡到 白色。此可基于正抖动的像素的屏幕位置。通过在光栅化模块1025处产生一被截抖动色彩值1050,降低了完成手持计算装 置上图形管线的管线所必需的门的数目和功率。除了色彩值的截断和抖动之外,在一个实施例中,光栅化模块410可截断并抖动 内插的色彩值。此外,光栅化模块410可在截断且抖动文件之后向内插的色彩值应用数学运算。现参看图13,根据本发明的一实施例展示几何基元的方框图。一般来说,在一个实 施例中,几何基元是具有三个顶点1330的三角形。如所属领域中众所周知,所述三个顶点 1330是建立所述三角形所必需的坐标。在几何基元1300的色调变化中展示条带问题1310。 条带由位色彩的降低和调色板的随之降低而造成。抖动部分1320说明导致有限调色板上 较光滑的表观色彩过渡的抖动的一示范性实施例。虽然展示了一种抖动形式,但所属领域 中存在多种众所周知的抖动方法,且本发明可使用这些抖动方法。图14展示一描绘根据本发明一个实施例在ζ值内插处理中所使用的多边形1401 和有界框1402的图。如图14中所描绘,相对于ζ轴1405和χ轴1406来展示多边形1401。 y轴(未图示)与ζ轴1405和χ轴1406正交。在一个实施例中,光栅级410存取包含多边形1401 (例如,三角形)的基元且将三 角形光栅化为其构成像素。所述有界框1411在三角形1401的光栅化处理中由光栅级410 的光栅器模块(例如,光栅器)使用。接着从顶点1411到1413内插每个像素的相关联参数。这些参数包括深度参数Z。在三角形1401的光栅化期间,由光栅级410为三角形1410 的每个像素内插各自的ζ值。每个ζ值在一预定数值范围(例如零的整数部分和从零到一 的小数部分)内表示,所述预定数值范围对应于一近端裁剪平面1408与一远端裁剪平面 1407之间的深度范围,其与视窗体有关。在裁剪平面外部的ζ值不是屏幕可显示位置。如一般所知,近端裁剪平面1408与远端裁剪平面1407之间的ζ值包含视窗体的 内边界和外边界。因此,三角形1401可具有一比远端裁剪平面1407离视点更远的重大部 分(例如,那些大于1的ζ值)和/或比近端裁剪平面1408更近的重大部分(例如,那些 小于零的ζ值)。以此方式,那些作用于场景的像素的标准ζ范围为0. 0到1. 0 (例如,在近 端裁剪平面与远端裁剪平面之间)。因此,有界框1402极大部分地在这个范围外延伸。在一个实施例中,光栅级410利用这样的事实,即ζ值的有效范围是模块化的(从 0. 0到1. 0)且当ζ参数的整数值增加或减小时始终如一地并确定性地重复。举例来说,在 现有技术中,图形管线将需要为在有效范围外延伸的ζ值容纳相当大的范围。相反,在光栅 级410中,在每个像素的ζ值迭代期间,允许ζ值的小数部分在这个模块框架内“翻转”,且 以每个新整数递增或递减的形式重复,且允许所述整数值在有效范围外部递增或递减(例 如,大于1时递增且小于零时递减)。当确定Z值在近端/远端裁剪平面外部时可记录一标
ο因此,举例来说,即使光栅级410的ζ步进器可在-2. Oz值处开始,当光栅级410 步入视窗体(例如0.0与1.0之间的Z值)时,小数部分将正确且始终如一地运转。类以 地,在ζ步进处理在正6. Oz值处开始的情况下,当整数值从6. 0步进到0. 0时,ζ的小数部 分将始终如一地且确定性地翻转。能够利用这个行为,因为其它分别迭代的参数(重心系 数)确定哪些像素在基元的二维x,y投影内。光栅化修正ζ值仅在x,y平面中的基元的此 二维投影内是重要的;在此区域外部,ζ步进器仅需充当一误差项,以使得当光栅器步入三 角形中时产生修正ζ值。ζ步进函数的模块化特征允许整数部分必要时递增和递减,而光栅级410仅需对ζ 的模块化小数部分(例如,从0. 0到1. 0)保持精确跟踪。举例来说,如果Z在视窗体外部 增加,可抛弃正整数。类似地,如果ζ在视窗体外部减小,可抛弃负整数。此允许光栅级410 对于ζ的整数部分(例如,在0.0到1.0范围外部)使用更少的位。在这两种情况下,可保 留若干整数ζ位(例如,三位)作为多位指示符,以指示ζ步进处理何时在视窗体外部的正 或负范围中。这是必要的,因为一般来说,ζ步进器将相对于精确地确定三角形的二维X,y 投影中的像素所属关系的其它系数(例如,重心系数)来说不是完全精确的。以此方式,对 于基元边缘处的过渡像素,由ζ步进处理产生的ζ参数值经箝位以大体上保持在视窗体的 有效范围内。在一个实施例中,对于IK像素屏幕来说,16z位精度(例如,16位宽深度缓冲器) 用于跟踪小数ζ值,且使用10个误差位(例如,为了对于具有最大大小的基元来说具有少 于千分之一的ζ误差)。另外,两个或三个误差位可用于整数部分。这些位将指示ζ值的标 记(例如,当ζ值在近端或远端平面外部时),且变为保护位以指示ζ步进处理何时穿过近 端或远端裁剪平面。所选择的指示符位的数目确定0到Iz范围的容许倍数,其中如果在顶 点处ζ值中有任一者超过所述范围,那么必须对基元执行真实裁剪(例如,对于三个指示符 位来说,可正确光栅化具有在-3. 0与+3. 0之间的ζ值的基元)。注意到,由于ζ小数位的模块化本质,此仅是对于在三角形的二维X,y投影内部的像素的要求(由于Z值将在步入 “内部”像素之前翻转到合法范围中,所以即使当“外部”像素超过ζ范围的倍数时,仍可能 正确迭代“外部”像素)。在一个实施例中,由光栅级410实施的ζ步进处理可用于实施每个像素裁剪处理。 众所周知,传统裁剪是一种在计算方面较为昂贵的处理。整数保护位使得能够进行每个像 素裁剪处理,藉此避免传统裁剪处理中所包含的几何计算。举例来说,那些ζ值大于1. 0的 像素比远端裁剪平面1407更远且在视窗体外部,且可被抛弃或忽略。类似地,那些ζ值小于 0.0的像素在近端裁剪平面内部且可类似地被抛弃或忽略。以此方式,如果像素的迭代的 ζ值在箝位范围外部,所述像素可基本上被裁剪去,从而以像素级别而不是多边形级别来执 行裁剪。与传统的每个多边形裁剪相比,每个像素裁剪在计算方面较不昂贵。应注意到,除 了裁剪,箝位的ζ值步进处理可对于其它类型的渲染操作(例如,镂花阴影)为有利的。因此,光栅级410的ζ步进逻辑可经设计以与典型现有技术实施方案相比更小的 精度来计算ζ值,且将更大的域投入到近端/远端裁剪平面内的ζ值范围。举例来说,传统 Z步进逻辑需要以56位来实施(例如,对于IK像素屏幕)时,而根据本发明一个实施例的 ζ步进逻辑可以29位(例如,3个保护位、16个ζ位和10个误差位)来实施。从所消耗的 硅面积和从功率要求来看,此使得硬件显著更便宜,且同时将极好的分辨率投入近端/远 端裁剪平面之间的范围。图15展示根据本发明一个实施例的示范性处理1500的步骤的流程图。如图15 中描绘,处理1500说明根据本发明一个实施例的箝位的ζ值内插处理中所包含的步骤。处理1500在步骤1501处开始,其中光栅级410存取一包含一多边形的复数个顶 点的几何基元。在步骤1502中,所述基元被光栅化为复数个对应像素。在步骤1503中,光 栅级410为多边形的每个像素计算ζ参数值,其中每个ζ参数值包含整数部分和小数部分。在步骤1504中,ζ参数的整数部分被箝位到一有效范围(位宽)加上一保护指示 符(例如,少量整数位)以指示ζ参数的标记。另外,在步骤1504中,允许所计算的ζ值在 溢出条件下在有效范围内翻转。此设定保护位以指示溢出。在步骤1505中,通过使用ζ参 数的保护指示符来实施每个像素裁剪。如上所述,保护位可指示那些比远端裁剪平面(例 如,远端裁剪平面1407)更远或比近端裁剪平面(例如,近端裁剪平面1408)更近的像素。 接着可在渲染处理中抛弃或忽略这些像素。视情况(例如,在软件控制下),此类像素可箝 位到近端或远端ζ值而并非被裁剪去,这对于一些软件算法可能有用。图16展示由本发明实施例使用的示范性纹理映射(例如,“纹理”)的图。如上所 述,本发明实施例在图形管线的光栅级(例如,光栅级410)中实施箝位到有效范围的参数 箝位。当在光栅化处理期间由光栅级410计算参数时,光栅级410经配置以将参数数据箝位 到可由管线的随后级使用的有效范围。箝位功能性包含抛弃给定像素参数的有效范围外部 的数据,从而仅发送必要的参数数据,这使得需要沿图形管线向下传输的位的数目最小化, 且从而使得功率消耗最小化。在一个实施例中,纹理参数由光栅级410计算,且这些纹理参数被箝位到有效范围。换句话说,当由光栅级410计算纹理坐标(例如,“S”和“t”坐标)时,所计算的纹理 在管线早期(例如在光栅级410中)而不是在管线晚期被箝位到一有效范围。图16说明纹理1600的坐标(s,t)。如一般所知,根据已确立的惯例,纹理坐标(S,t)的范围为从零到一。因此,在纹理1600的左下角处的坐标为“0,0”,而在纹理1600 的右上角处的坐标为“1,1”,等等。因此,小数表示(从零到一)是数据拾取级430存取纹 理1600 (例如在存储器中)且为所计算的坐标检索对应的纹素所需要的信息。一像素可具 有一个或一个以上与其相关联的纹理坐标。箝位指代这样的事实,即即使一确定性公式可 用于计算纹理坐标,且即使此公式可导致整数部分和小数部分,但数据拾取级430仅需要 小数部分。 在一个实施例中,小数部分表示为16位值。在一典型实施方案中,纹理映射的16 位每个s和t坐标用于为掺合操作拾取地址纹素和一个或一个以上邻近纹素。小数部分允 许数据拾取级430为掺合内插拾取正确的邻近纹素。在一个实施例中,光栅级410根据“包覆”纹理映射模式来计算纹理坐标。在包覆 模式中,当所计算的纹理的整数部分递增或递减时,纹理1600重复其本身。在包覆模式中, 在纹理1600的边缘(例如,s或t在1或0处)处,数据拾取级430从纹理映射的下一个 重复版本的邻近边缘处拾取邻近纹素以便进行内插。以此方式,纹理绕回而不存在可见接 缝或假象。在另一实施例中,光栅级410根据“箝位”纹理映射模式来计算纹理坐标。在所述 箝位模式中,小数部分不绕回。在边缘处,纹理被箝位到边缘处的值。在箝位模式中,纹素 色彩被复制或“抹去”且为大于1或小于0的任何值而重复。箝位模式中的操作需要被识别到管线中的随后级。在一个实施例中,沿管线向下 发送一额外位(例如,箝位标志或箝位位)以识别纹理映射的箝位模式。可以上述方式将 每一像素的位作为边带信息来传输。此信息由数据拾取级430在其纹理拾取期间使用,以 将其本身配置成不拾取纹理边缘的“绕回,,邻近纹素来进行内插。箝位模式通常由一应用 程序通过图形API编程。应注意到,在另一实施例中,光栅级410可经配置以根据“镜”模式来计算纹理坐 标,其中纹理坐标以纹理坐标值(例如,那些在零到一范围以外的s和t值)的不同整数版 本形成镜像。如同箝位模式一样,镜像模式被识别到管线的随后级(例如,通过使用标志或 位)。以此方式,光栅级410执行参数箝位,其中所计算的参数被箝位到其有效范围,以 节省需要沿管线下推的位/信息的数目。在此情况下,箝位包含抛弃所计算的纹理坐标的 整数部分且仅发送范围0到1内的小数部分。此工作在光栅级410而不是管线中的其它随 后级中执行。箝位功能性仅发送所必需的参数数据,其使得需要沿图形管线向下传输的位 的数目最小化,且从而使得功率消耗最小化。图17展示应用纹理1600的包覆版本(例如,由箭头1701指示)的多边形1700。 如上所述,当计算坐标时,纹理的包覆版本重复其本身。图18展示应用纹理1600的箝位版本(例如,由箭头1801指示)的多边形1800。 如上所述,纹理的箝位版本仅仅与复制到计算纹理坐标的方向中的纹理1600的外部边缘 具有相同色彩。图19展示根据本发明一个实施例的纹理坐标参数箝位处理1900的步骤的流程 图。如图19中说明,处理1900展示根据本发明一个实施例在光栅级(例如,光栅级410) 中实施的所计算的纹理坐标箝位处理中包含的步骤。
处理1900在步骤1901中开始,其中光栅级存取一包含一多边形(例如,三角形) 的其各自的顶点的几何基元。在步骤1902中,所述几何基元被光栅化为复数个对应像素。 在步骤1903中,光栅级410处理三角形的每个像素且计算将在管线的随后级中使用的纹理 坐标。如上所述,所计算的纹理坐标包含整数部分和小数部分。在步骤1904中,小数部分 向下游传播到数据拾取级430。在步骤1905中,根据来自在计算机系统上执行的应用程序的指令,确定将实施箝 位模式还是包覆模式。在步骤1906中,在箝位模式中,光栅级410根据“箝位”纹理映射模 式来计算纹理坐标且沿管线向下传播箝位标志。如上所述,在纹理1600的边缘处,纹理色 彩被箝位到边缘处的值。在步骤1907中,由数据拾取级430拾取纹理坐标以实施箝位模式 纹理映射(例如,如图18描绘)。在步骤1908中,在包覆模式中,由数据拾取级430拾取纹 理坐标以实施包覆模式纹理映射(例如,如图17描绘)。图20展示根据本发明一个实施例的一示范性小中见大映射处理的图。如图20所 描绘,展示2D纹理映射的五种不同分辨率版本2001到2005。如所属领域的技术人员所知,多纹理映射是一种广泛使用的类型的LOD过滤。LOD 过滤经配置以通过将全分辨率纹理映射2001按比例调整和过滤为多个低分辨率版本2002 到2005来防止波纹干扰图案、混叠和渲染假象。举例来说,全分辨率版本2001含有一物体 的所有表面细节。在距视点的近距离处,全分辨率版本2001以其原始全部细节来渲染。随 着距离增加,使用纹理的依次减小的分辨率版本(例如,版本2002到2005)。通过选择恰当 的纹理分辨率和细节,小中见大映射确保在更远距离处不会丢失像素。改为使用原始纹理 的恰当平分的更小版本。在最远距离处,使用单个纹素2005。这些级中的每一者称为小中 见大映射级别(例如图20中展示的级别0到级别4)。应注意到,虽然图20展示五个级别 2001到2005,但本发明的实施例可由其它数目的版本(例如,3、7、10等)来实施。在一个实施例中,光栅级410实施LOD参数箝位,其中一所计算的LOD参数在图形 管线的光栅级410中被箝位到一有效范围。此情况下箝位功能性包含存取一包含复数个顶 点的几何基元(例如,三角形),其中每个顶点与包括细节级别(LOD)值的复数个参数相关 联。在基元光栅化期间,计算基元的每个像素的各自的LOD值(例如,通过使用内插)。通 过使用一全精度函数来计算此LOD值。因此,每个像素的每个LOD值包含整数部分和小数 部分。所计算的LOD值的整数部分用于选择对应于基元距视点的距离的正确小中见大 映射级别。所计算的LOD值的小数部分用于配置一在邻近小中见大映射级别的邻近纹素上 执行的掺合操作(例如,其中小数部分用于将不同权重分配给不同小中见大映射的纹素)。 此在图20中由箭头2010展示,所述箭头2010根据LOD小数部分指示掺合操作中所使用的 不同小中见大映射级别的邻近纹素。光栅级410经配置以当所计算的LOD值大于预定范围(例如,箝位到最大值)时 将LOD值箝位到最大值。类似地,光栅级410还经配置以当所计算的LOD值小于预定范围 (例如,箝位到最小值)时将LOD值箝位到最小值。换句话说,当所计算的LOD参数指示大 于最粗糙(最小)小中见大映射级别(例如,版本2005)的基元的纹素像素比时,LOD值 可被箝位到此最大值(例如,级别4),且无需计算、存储或沿管线向下传播更高的LOD整数 值。当所计算的LOD参数指示小于最精细(最大)小中见大映射级别(例如,级别0)的纹素像素比时,LOD整数值可被箝位到此最小值且无需计算、存储或传播更低的LOD整数值(例如,负的LOD整数值)。这些经箝位的LOD参数值接着被沿管线向下传播到数据拾取级 430。在一个实施例中,一旦最大或最小值已被箝位,还可箝位小数部分。举例来说,在 已大大超过最大LOD参数值(例如,指示小中见大映射级别10的参数),且已返回最低分辨 率版本(例如,级别4)的情况下,小数部分将相对于任何掺合内插是无关紧要的。在此情 况下,小数部分也可被箝位到其最大值。或者,在一个实施例中,可仅仅抛弃小数部分(例 如,由于对片断色彩没有重要作用)。在一个实施例中,用四位值来表示LOD参数的整数部分,且用四位值来表现LOD参 数的小数部分。图21展示根据本发明一个实施例的LOD参数箝位处理2100的步骤的流程图。如 图21说明,处理2100展示根据本发明一个实施例在光栅级(例如,光栅级410)中实施的 所计算的LOD值箝位处理中包含的步骤。处理2100在步骤2101中开始,其中光栅级存取一包含一多边形(例如,三角形) 的其各自的顶点的几何基元。在步骤2102中,几何基元被光栅化为复数个对应像素。在 步骤2103中,光栅级410处理三角形的每个像素且计算一将在管线的随后级中使用的LOD 值。如上所述,所计算的LOD值包含整数部分和小数部分两者。在步骤2104中,LOD参数的整数部分和小数部分被箝位到有效范围。如上所述, 当所计算的LOD参数超过有效范围时,参数被箝位到其最大值。当所计算的LOD参数小于 有效范围时,参数被箝位到其最小值。在步骤2105中,所箝位的LOD参数向下游传播到管 线的数据拾取级430。以此方式,如同纹理坐标值一样,LOD参数在渲染处理早期由光栅级410箝位到有 效范围,以节约必须被沿管线下推的位的数目,从而使得功率消耗最小化。已出于说明和描述的目的展现了本发明特定实施例的前述描述。不希望其为详尽 的或将本发明限制于所揭示的精确形式,且显然根据以上教示,多种修改和变化是可能的。 选择并描述所述实施例是为了最佳地解释本发明的原理和其实际应用,从而使得所属领域 的其他技术人员能够最佳地使用本发明和适于所希望的特定用途的具有多种修改的多种 实施例。希望本发明的范围由所附权利要求书和其等效物限定。
权利要求
一种用于一产生可编程像素包的基本指令光栅级的方法,其包含在一光栅级处存取一几何基元;将所述几何基元光栅化为复数个像素;可编程地且根据用于所述几何基元的一指令将一组内插计算指定给一内插器阵列;通过并行使用所述内插器来执行所述一组内插计算,其中所述内插器以一逐行格式为所述几何基元的所述像素的每一者执行所述一组内插计算;和将所述一组内插计算的复数个结果存储在一可编程像素包中,其中根据所述指令来格式化所述可编程像素包。
2.根据权利要求1所述的方法,其中所述光栅级是一手持装置上使用的一图形管线的 一部分。
3.根据权利要求2所述的方法,其中所述手持装置选自包含一个人数字助理、一手持 游戏装置和一移动电话的群组。
4.根据权利要求1所述的方法,其中用于所述几何基元的所述指令应用于所述几何基 元的所述像素中的每一者。
5.根据权利要求1所述的方法,其中所述一组指令针对所述几何基元的所述像素中的 每一者控制对所述内插器的一参数分配。
6.根据权利要求1所述的方法,其中所述指令控制所述内插器且指定复数个行位置以 存储所述结果。
7.根据权利要求1所述的方法,其中所述内插器阵列包括复数个低精度内插器和复数 个高精度内插器。
8.根据权利要求1所述的方法,其中可根据在所述光栅级处接受的每个所述几何基元 来变化所述指令。
9.根据权利要求1所述的方法,其中所述可编程像素包由耦合至所述光栅级的一随后 级渲染为在一显示器上的像素。
10.一种光栅器模块,其包含复数个可编程内插器,其用于为一几何基元的像素计算像素参数;用于存储一与一第一可编程内插器相关联的第一指令的存储器,所述第一指令用于指 示所述第一可编程内插器将据以操作的一第一参数,且还用于指示其中存储其结果的一像 素包的一第一部分;和用于存储一与一第二可编程内插器相关联的第二指令的存储器,所述第二指令用于指 示所述第二可编程内插器将据以操作的一第二参数,且还用于指示其中存储其结果的所述 像素包的一第二部分。
11.根据权利要求10所述的光栅器模块,其中所述复数个可编程内插器包含复数个可同时操作的低精度可编程内插器,其用于为所述几何基元的像素计算一第一 组像素参数;和复数个可同时操作的高精度可编程内插器,其用于为所述几何基元的像素计算一第二 组像素参数。
12.根据权利要求11所述的光栅器模块,其中所述复数个可同时操作的低精度可编程 内插器每一者由所述存储器的一各自的指令单独控制,每一各自的指令指示一将内插的参数和所述像素包内用于一内插结果的一目的地。
13.根据权利要求11所述的光栅器模块,其中所述复数个可同时操作的高精度可编程 内插器每一者由所述存储器的一各自的指令单独控制,每一各自的指令指示一将内插的参 数和所述像素包内用于一内插结果的一目的地。
14.根据权利要求10所述的光栅器模块,其中所述复数个可编程内插器需要多个时钟 周期来完成一像素包。
15.根据权利要求10所述的光栅器模块,其中所述像素包由耦合至所述光栅级的一随 后级渲染为在一显示器上的像素。
16.一种光栅器模块,其包含复数个可编程内插器,其用于为一几何基元的像素计算像素参数;且其中所述复数个可编程内插器中的每一者可由一可操作持续一时钟周期的各自的指 令编程,所述各自的指令规定一将插入的参数和一像素包内存储一内插结果的一目的地。
17.根据权利要求16所述的光栅器模块,其中所述复数个可编程内插器需要复数个时 钟周期来完成一像素包,且其中任何可编程内插器可在所述复数个时钟周期中的每个时钟 周期时由一不同指令编程。
18.根据权利要求16所述的光栅器模块,其中所述复数个可编程光栅器包含复数个低精度可编程内插器,其用于为所述几何基元的像素计算一第一组像素参数, 其中所述第一组像素参数具有一第一位宽;和复数个高精度可编程内插器,其用于为所述几何基元的像素计算一第二组像素参数, 其中所述第二组像素参数具有一第二位宽,所述第二位宽大于所述第一位宽。
19.根据权利要求18所述的光栅器模块,其中所述低精度可编程内插器使用重心系数 来进行内插。
20.根据权利要求18所述的光栅器模块,其中所述高精度可编程内插器使用重心系数 来进行内插。
21.根据权利要求18所述的光栅器模块,其中所述第一内插位宽为8位。
22.根据权利要求18所述的光栅器模块,其中所述第二内插位宽为14位。
23.根据权利要求16所述的光栅器模块,其中所述像素包由耦合至所述光栅级的一随 后级渲染为在一显示器上的像素。
全文摘要
本发明揭示一种用于一产生灵活性像素包的具基本指令能力的光栅级的方法和系统。在一个实施例中,由一图形管线的一光栅化模块执行一包含复数个顶点的几何基元的光栅化,其中每个顶点包含一各自的色彩值。
文档编号G06T15/00GK101819676SQ200910211990
公开日2010年9月1日 申请日期2005年5月14日 优先权日2004年5月14日
发明者爱德华·A·哈钦斯, 谢卡尔·诺里 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1