CN100442353C - 用于浮点纹理数据的过滤单元 - Google Patents

用于浮点纹理数据的过滤单元 Download PDF

Info

Publication number
CN100442353C
CN100442353C CNB2005800261814A CN200580026181A CN100442353C CN 100442353 C CN100442353 C CN 100442353C CN B2005800261814 A CNB2005800261814 A CN B2005800261814A CN 200580026181 A CN200580026181 A CN 200580026181A CN 100442353 C CN100442353 C CN 100442353C
Authority
CN
China
Prior art keywords
point
floating
circuit
texture
fixed point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CNB2005800261814A
Other languages
English (en)
Other versions
CN1993728A (zh
Inventor
沃尔特·E·多诺万
安德斯·M·库格勒
克里斯托弗·D·S·多纳姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN1993728A publication Critical patent/CN1993728A/zh
Application granted granted Critical
Publication of CN100442353C publication Critical patent/CN100442353C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Abstract

浮点纹理过滤单元利用现有的定点过滤器电路。将若干组浮点纹理值转换成一定点尾数与一缩放因数的乘积,所述缩放因数对于组中的每个纹理值是相同的。使用一定点过滤器电路来过滤所述定点尾数,且将所述经过滤的尾数与所述缩放因数组合以确定一浮点过滤值。可在一浮点累加器电路中组合多个浮点过滤结果。也可使用同一定点过滤器电路来通过提供绕过格式转换的定点输入路径和一定点累加器来过滤定点纹理数据。

Description

用于浮点纹理数据的过滤单元
技术领域
本发明大体上涉及具有纹理过滤的图形处理装置,且具体地说,涉及一种用于浮点纹理数据的过滤单元。
背景技术
纹理掺合是一种用于在计算机产生的图像中实现各种效果的常用技术,例如用于对粗糙表面(例如砖墙或石墙)、纺织图案等进行真实建模。纹理掺合大体上包含定义纹理映射,通常将其定义为“纹素”阵列。每一纹素具有唯一的坐标(例如,在两维或三维中)、颜色,且在某些情况下具有其它属性,例如曲面法线。为了将纹理应用到物体表面(例如,墙或衣物),向物体表面上的定点分配纹理坐标。在确定了经过渲染的图像的给定片段(或像素)含有物体表面上的特定点之后,用纹理坐标来从纹理映射中拾取一个或一个以上纹素,且在着色所述片段的过程中使用所拾取的纹素的颜色和/或其它属性。
典型的纹理映射被定义为使得包含在给定片段内的物体表面部分覆盖若干纹素的部分。举例来说,以多个细节级别(LOD)映射同一纹理,以使得无论物体表面的哪个部分包括在片段内,均可通过选择具有恰当LOD的纹理映射来控制片段所映射的纹素数目。
在片段覆盖多个纹素的情况下,组合(过滤)这些纹素的各自属性以确定可应用于所述片段的纹理属性。例如,图1说明由纹理坐标(s,t)定义的2D空间中的常规纹理映射100。纹理映射100包括纹素101、102、103、104,其针对某属性(例如颜色)具有各自值a、b、c、d。将片段110(虚线方块)以覆盖纹素101、102、103、104中的每一者的一部分的方式映射到纹理映射100上(例如通过向像素110的每个角落分配纹理坐标)。可使用众所周知的双线性过滤公式来计算像素110的纹理属性F:
F(a,b,c,d)=wt*[ws*a+(1-ws)*b]+(1-wt)*[ws*c+(1-ws)*d],(等式1)
其中ws和wt是权重参数(范围为[0,1]),其可根据图1所示的st平面中的距离来确定。
其它类型的纹理过滤也受到普遍使用。例如,时常结合以不同细节级别(LOD)代表同一纹理的像素映射来使用三线性过滤。选择给定片段的两个最接近的LOD(通常基于从视点到正被渲染的物体表面的距离),且在所述两个LOD中的每一者处应用双线性过滤以根据等式1而获得两个过滤值F1和F2。最终结果F是F1与F2的加权平均值,其中向所述两个LOD分配各自权重p和1-p(例如,基于从视点到物体表面的距离)。还已知各向异性纹理过滤,其中在2D或3D纹理空间中在不同方向上考虑不同数目的纹素。与三线性过滤一样,各向异性过滤可经常实施为多个双线性过滤操作的结果的加权平均值。
此类过滤可能是计算密集的,且图形处理器通常包括专用的纹理过滤单元,其可快速地根据一组输入纹理值和权重来计算经过滤的纹理值。典型的纹理过滤单元包括双线性内插(“Bilerp”)电路和累加器电路。Bilerp电路接收四个纹理值(a、b、c、d)和两个权重(ws、wt),并应用双线性过滤(例如,公式1)。累加器电路使用每次通过权重wf来计算穿过所述Bilerp电路的不同通过的结果的加权和,其中可为每个通过供应不同的纹理值(a、b、c、d)和权重(ws、wt、wf)。因此,可通过指示累加器电路累加穿过Bilerp电路的两次通过(每次通过权重为p和1-p)的结果来实施三线性过滤。各向异性过滤可包含累加较大数目的(例如,多达24个)通过,所述通过具有恰当的每次通过权重。
为了减少芯片面积和成本,通常使用定点算法电路来实施纹理过滤电路。然而,定点纹理数据限制了可在纹理映射中捕获的细节程度(例如,细微的颜色变化);原则上,可通过使用浮点纹理数据来实现更大的真实性。为了支持浮点数据,常规纹理过滤单元需要修改。
用标准浮点算法电路来替代常规纹理过滤单元的定点算法电路(例如,在Bilerp和累加器电路中)显著增加了芯片面积和成本。此外,现有的图形应用程序一般使用定点纹理数据,因此也需要支持定点纹理数据的快速过滤。支持定点纹理数据会需要将纹理数据转换成浮点格式和将过滤结果转换回定点格式(这会使定点纹理数据的处理变慢)或提供单独的定点过滤电路(这会进一步增加芯片面积和复杂性)。
因此,需要提供一种高效的纹理过滤单元,其能够处理浮点纹理数据和定点纹理数据两者。
发明内容
本发明的实施例提供用于图形处理器的浮点纹理过滤单元,其利用现有的定点过滤器电路。将若干组待过滤的浮点纹理值转换成定点尾数与缩放因数(例如,块指数)的乘积,其中所述缩放因数对于每个纹理值均是相同的。使用定点过滤器电路来过滤定点尾数,且将经过滤的尾数与缩放因数组合以确定浮点过滤值。可在累加器电路中组合多个浮点过滤结果(例如,以加权平均值)。也可使用同一定点过滤器电路和累加器电路来经由绕过初始格式转换的定点输入路径来过滤定点纹理数据。
根据本发明的一个方面,用于在图形处理器中过滤浮点纹理数据的装置包括预缩放电路、定点过滤电路和累加器电路。所述预缩放电路经配置以将一组浮点输入纹理值中的每一者转换成定点尾数与缩放因数的乘积,其中所述缩放因数对于该组浮点输入纹理值中的每一者均是相同的。所述定点过滤电路经配置以根据复数个定点过滤输入值来计算定点过滤输出值,且定点过滤电路经耦合以接收针对该组浮点输入纹理值的定点尾数作为定点过滤输入值。所述累加器电路经耦合以从预缩放电路接收缩放因数且从定点过滤电路接收过滤输出值,且经配置以使用所述缩放因数的倒数来缩放过滤输出值,借此产生浮点过滤结果。在某些实施例中,累加器电路也可经配置以累加若干浮点过滤结果的加权和,所述浮点过滤结果中的每一者可通过经由预缩放电路和定点过滤电路处理一组纹理值来获得。
在某些实施例中,所述装置还包括定点输入路径。所述定点输入路径经配置以将一组定点输入纹理值作为过滤输入提供到定点过滤电路,且定点输入路径经由绕过预缩放电路的定点输入路径而耦合到定点过滤电路。在此实施例中,所述装置可经配置以用于使用定点纹理值或浮点纹理值作为输入的操作。累加器电路可经配置以可在定点模式和浮点模式任一者下操作;例如,在定点模式下,累加器可使用等于1的缩放因数来操作。
根据本发明的另一方面,图形处理器具有用于计算片段颜色的着色器模块。所述着色器模块包括纹理拾取单元和纹理过滤单元。所述纹理拾取单元经配置以拾取对应于一片段的若干个纹理值,且确定所拾取的纹理值具有定点格式还是具有浮点格式。纹理过滤单元经耦合以从纹理拾取单元接收所拾取的纹理值,且经配置以向所拾取的纹理值应用过滤,从而产生过滤结果。纹理过滤单元可在定点模式和浮点模式任一者下操作,且在所拾取的纹理值具有定点格式的情况下其在定点模式下操作,而在所拾取的纹理值具有浮点格式的情况下其在浮点模式下操作。
根据本发明的又一方面,提供一种用于在图形处理器中过滤纹理数据的方法。接收一组浮点纹理值。为该组接收到的纹理值确定缩放因数。使用所述缩放因数来缩放所接收到的纹理值中的每一者,并将经缩放的纹理值中的每一者转换成定点格式。将经转换的纹理值作为过滤输入提供给定点纹理过滤电路,所述定点纹理过滤电路经配置以根据复数个经过滤的输入来计算定点过滤输出,且从纹理过滤电路接收具有定点格式的过滤输出。使用缩放因数的倒数来缩放过滤输出值,借此产生浮点过滤结果。在某些实施例中,可累加复数个浮点过滤结果的加权和,所述浮点过滤结果的每一者均通过相同步骤获得。在其它实施例中,也可接收一组定点纹理值并将其作为过滤输入而提供给定点纹理过滤电路。随后,从纹理过滤电路接收具有定点格式的过滤输出。也可累加若干定点过滤输出的加权和,所述定点过滤输出的每一者均通过这些步骤获得。
以下详细描述连同附图一起将提供对本发明的本质和优点的更好理解。
附图说明
图1说明2D纹理坐标空间中的常规纹理映射;
图2是根据本发明实施例的计算机系统的简化方框图;
图3是根据本发明实施例的渲染管线的简化方框图;
图4是根据本发明实施例的纹理过滤单元的简化方框图;
图5是根据本发明实施例的预处理块的实施方案的方框图;
图6是根据本发明实施例的浮点累加器电路的简化方框图;和
图7是根据本发明实施例的输出电路的方框图。
具体实施方式
本发明实施例提供用于图形处理器的浮点纹理过滤单元,其利用现有的定点过滤器电路。将若干组待过滤的浮点纹理值转换为定点尾数与缩放因数(例如,块指数)的乘积,所述缩放因数对于每个纹理值都是相同的。使用定点过滤器电路来过滤所述定点尾数,且将经过滤的尾数与缩放因数组合以确定浮点过滤值。可在浮点累加器电路中组合多个浮点过滤结果(例如,以加权平均值)。相同定点过滤器电路也可用于经由定点输入路径和定点累加器来过滤定点纹理数据,所述定点输入路径绕过格式转换。
可在多种计算机系统中包括并入有本发明实施例的图形处理器。图2是根据本发明一实施例的计算机系统200的简化方框图。计算机系统200包括中央处理单元(CPU)202和系统存储器204,二者经由总线206通信。从一个或一个以上用户输入装置208(例如键盘、鼠标)来接收用户输入,所述用户输入装置208耦合到总线206。在基于像素的显示装置210(例如,常规的基于CRT或LCD的监视器)上提供视觉输出,所述显示装置在耦合到系统总线206的图形处理子系统212的控制下操作。系统盘228和其它组件(例如一个或一个以上可移除存储装置229(例如软盘驱动器、光盘(CD)驱动器和/或DVD驱动器))也可耦合到系统总线206。可使用各种总线协议中的一者或一者以上来构建系统总线206,所述总线协议包括PCI(外围组件互连)、AGP(高级图形处理)和/或PCI Express(PCI-E);可提供恰当的“桥”芯片(例如北桥和南桥)(未图示)来互连各种组件和/或总线。
图形处理子系统212包括图形处理单元(GPU)214和图形存储器216,所述图形处理单元(GPU)214和图形存储器216可(例如)使用一个或一个以上集成电路装置(例如可编程处理器、专用集成电路(ASIC)和存储器装置)来构建。GPU 214包括渲染管线220、存储器接口模块222和扫描输出模块224。渲染管线220可经配置以执行与从经由系统总线206供应的图形数据中产生像素数据(例如,实施各种2D和/或3D渲染算法)、与图形存储器216互动以存储并更新像素数据等有关的各种任务。渲染管线220经有利配置以从2D或3D场景数据中产生像素数据,所述2D或3D场景数据由在CPU 202上执行的各种程序提供。下文进一步描述渲染管线220的一个实施例。
存储器接口模块222与渲染管线220和扫描输出控制逻辑224通信,且管理与图形存储器216的所有互动。存储器接口模块222还可包括用于将从系统总线206接收的像素数据写入到图形存储器216而不由渲染管线220处理的路径。可根据需要改变存储器接口模块222的特定配置,且由于对于理解本发明不是重要的,因而省略了详细描述。
图形存储器216可使用一个或一个以上具有普通常规设计的集成电路存储器装置来实施,且可含有各种物理或逻辑子部分,例如像素缓冲器226。像素缓冲器226为图像(或为图像的一部分)存储像素数据,所述像素数据由扫描输出模块224读取并处理且被传输到显示装置210以供显示。可(例如)从2D或3D场景数据产生此像素数据,所述2D或3D场景数据经由系统总线206而提供到GPU 214的渲染管线220,或此像素数据可由在CPU 202上执行的各种处理产生并经由系统总线206而提供到像素缓冲器226。在某些实施例中,像素缓冲器226可为双缓冲的,以使得从“前”缓冲器读取第一图像的数据以供显示的同时,可将第二图像的数据写入到“后”缓冲器而不会影响当前显示的图像。图形存储器216的其它部分可用于存储GPU 214所需的数据(例如纹理数据、颜色查找表等)、GPU 214的可执行程序码等。
扫描输出模块224可与GPU 214集成在单个芯片中或在单独芯片中实施,且从像素缓冲器226读取像素颜色数据,并将所述数据传送到显示装置210以被显示。在一个实施例中,扫描输出模块224同步操作,以指定的屏幕刷新速率(例如80Hz)来扫描输出像素数据的帧而不管可能在GPU 214中或系统200中的其它地方发生的任何其它活动。在某些实施例中,屏幕刷新速率可以是用户可选参数,且可根据显示格式来变化扫描输出次序(例如隔行或逐行扫描)。扫描输出模块224还可执行其它操作,例如针对特定显示硬件而调整颜色值且/或通过将来自像素缓冲器226的像素数据与用于视频或光标覆盖图形等的数据组合来产生合成屏幕图像,所述用于视频或光标覆盖图形等的数据可(例如)从图形存储器216、系统存储器204或另一数据源(未图示)中得到。在某些实施例中,扫描输出模块224也可通过内插来自像素缓冲器226的像素数据来重新调节图像比例(例如放大或缩小)。
在系统200的操作期间,CPU 202执行(暂时)驻存在系统存储器204中的各种程序。在一个实施例中,这些程序包括一个或一个以上操作系统(OS)程序232、一个或一个以上应用程序234和一个或一个以上用于图形处理子系统212的驱动程序236。应理解,虽然这些程序被展示为驻存在系统存储器204中,但本发明不限于用于供应程序指令以供CPU 202执行的任何特定机制。举例来说,在任何给定时间,用于这些程序中任意一者的程序指令中的一些或所有可存在于CPU 202内(例如在芯片内指令缓存和/或各种缓冲器和寄存器中),在系统盘228上的页面文件或存储器映射文件中,和/或在其它存储空间中。
操作系统程序232和/或应用程序234可具有常规设计。应用程序234可为(例如)视频游戏程序,其产生图形数据并调用GPU 214的恰当渲染功能(例如渲染管线220)以将图形数据变换为像素数据。另一应用程序234可产生像素数据且将像素数据提供到图形处理子系统212以供显示。应了解,可在CPU 202上同时执行任何数目的产生像素和/或图形数据的应用程序。操作系统程序232(例如,Microsoft Windows操作系统的图形装置接口(GDI)组件)也可产生像素和/或图形数据以由图形处理子系统212处理。
驱动程序236实现与图形处理子系统212(包括渲染管线220和扫描输出模块224两者)的通信。驱动程序236有利地实施一个或一个以上标准应用程序接口(API)(例如Open GL、Microsoft DirectX或D3D)以与图形处理子系统212通信;可支持任何数目或组合的API,且在某些实施例中,提供各别的驱动程序236以实施不同的API。通过调用恰当的API功能呼叫,操作系统程序232和/或应用程序234能够指示驱动程序236将几何数据或像素数据经由系统总线206传送到图形处理子系统212、控制渲染管线220的操作、修改扫描输出模块224的状态参数等。响应于API功能呼叫而由驱动程序236传输到图形处理子系统212的特定命令和/或数据可根据GPU 214的实施方案而变化,且驱动程序236也可传输实施额外功能性(例如特殊视觉效应)的命令和/或数据,所述额外功能性不由操作系统程序232或应用程序234控制。用于管理驱动程序236与图形处理子系统212之间的通信的各种技术在此项技术中已知并可被使用,包括异步技术。
将了解到,本文所述的系统是说明性的,且变化和修改是可能的。可使用任何适合的技术来将GPU实施(例如)为一个或一个以上集成电路装置。可将GPU安装在可包括一个或一个以上此类处理器的扩充插件板上,直接安装在系统母板上,或集成到系统芯片集组件中(例如,集成到一个常用PC系统结构的北桥芯片中)。图形处理子系统可包括任何数量的专用图形存储器(某些实施方案可能没有专用图形存储器),且可使用系统存储器和专用图形存储器的任何组合。具体地说,可根据需要而在专用图形存储器或系统存储器中实施像素缓冲器。扫描输出电路可与GPU集成或提供在单独芯片上,且可(例如)使用一个或一个以上ASIC、可编程处理器元件、其它集成电路技术或其任何组合来实施。另外,可将GPU并入到多种装置中,所述装置包括通用计算机系统、视频游戏控制台和其它专用计算机系统、DVD播放机等。
图3是根据本发明一实施例的渲染管线220的简化方框图。在此实施例中,渲染管线220包括几何模块302、设置模块304、光栅化器306、着色器308和光栅操作模块310。几何模块302(其可具有普通常规设计)接收描述待渲染的3D场景的数据。在一个实施例中,所述场景数据包括定义可存在于所述场景中的若干物体(例如桌子、椅子、人或动物)的数据。有利地将每个物体表示为一基元(例如三角形、线)或一组基元,在物体坐标系统中为所述基元指定了顶点位置。除位置之外,每个顶点还具有与其相关联的各种属性。一般来说,顶点的属性可包括在每个顶点的基础上指定的任何属性。在一个实施例中,属性包括红、绿和蓝颜色分量;透明性参数;和将顶点位置与纹理映射相联系的纹理坐标。
由于每个物体均具有其自己的坐标系统,因而有利地提供额外数据或命令以相对于彼此来定位物体,此例如通过为每个物体指定从物体坐标到共用“世界”坐标系统的变换矩阵来达成。将物体的变换矩阵应用到其顶点的每一者。可进一步将世界坐标变换成观测坐标,其中原点在视点处且z(深度)轴由观测方向界定,且可将观测坐标进一步变换成屏幕空间,其中(x,y)坐标对应于像素(或片段)阵列。几何模块302也可执行其它功能,例如剔除看不见的几何图形、修剪部分看不见的几何图形等。顶点操作的多个实例在此项技术中已知,且可在几何模块302中实施。
几何模块302将经变换的基元提供到设置模块304。对于其接收到的每个基元,设置模块304计算边缘等式以供光栅化器306使用,并提供顶点以用于为由所述基元覆盖的任何片段计算属性值。
光栅化器306对所接收的基元执行扫描转换(例如,使用边缘等式)。扫描转换一般涉及界定对应于屏幕位置的片段(例如,像素)阵列、为每个片段确定哪个(或哪些)基元是可见的,和将针对所述基元的有序顶点列表提供到着色器308以用于确定片段的颜色。光栅化器306可实施常规扫描转换算法以用于确定可见性,且可经配置以允许应用编程器在不同算法中进行选择。应了解,针对光栅化器306界定的片段不需要对应于特定显示装置的像素阵列。举例来说,为了支持此项技术中已知的各种反走样算法,可能需要光栅化器306以高于给定显示装置所支持的分辨率的分辨率对图像进行采样。
着色器308使用由光栅化器306提供的每个片段的顶点信息来为片段确定颜色(且在某些实施例中,确定其它属性(例如深度))。可使用用于确定颜色(或其它属性)的各种技术,其实例在此项技术中已知。在某些实施例中,将着色器308实施为可编程着色器,其接收待用于处理片段的程序(某操作序列)并为每个片段执行所述程序。着色器程序可包括用于多种片段处理操作(包括纹理掺合)的指令。纹理掺合程序一般包括用于选择纹理以应用到片段、在各种纹理过滤算法(例如双线性、三线性或各向异性过滤)中进行选择和计算过滤权重的指令。
着色器308有利地包括纹理拾取单元312和纹理过滤单元314以执行纹理掺合指令。纹理拾取单元312(其可具有普通常规设计)经有利配置以为片段拾取定点或浮点纹理数据。纹理映射可以定点或浮点格式而存储在本地或远程存储器中。在着色器308的片段处理期间,纹理拾取单元312为片段确定纹理坐标,且从存储器内纹理映射中拾取一个或一个以上相应纹素。纹理拾取单元312也可使用常规技术来向每个纹素分配权重。
纹理拾取单元312还有利地确定以定点还是浮点格式来存储纹理映射。在一个实施例中,格式旗标(或其它适合的数据结构)存储在与纹理映射相关联的存储器中,且纹理拾取单元312可一起读取格式旗标以及纹素。或者,可为浮点和定点纹理映射保留不同的存储器区域,且纹理拾取单元312可基于纹素或映射的存储器地址而为给定纹理映射确定数值格式。也可实施用于区别浮点和定点纹理映射的其它技术。
根据本发明一实施例,纹理过滤单元314向检索到的纹素应用适合的过滤。在一个实施例中,纹理过滤单元314从纹理拾取单元312接收纹理值和权重,且包括运算电路以对所接收的值执行过滤操作。纹理过滤单元314经有利配置以对浮点和定点纹理两者进行操作,且纹理拾取单元312有利地向纹理过滤单元314提供格式旗标(或另一格式指示符)。在过滤之后,纹理过滤单元314将结果返回到着色器308以供进一步处理,例如与底层片段颜色或曲面法线掺合。
除了纹理掺合之外,着色器308也可应用其它效应(包括此项技术中已知的各种灯光和/或雾化效应),以计算最终片段颜色,且着色器308可包括与此类计算有关的组件(未图示)。最后,着色器308为每个片段产生颜色值(例如,以RGBα格式)。可将这些颜色值存储在(例如)图形存储器216中或其它地方。
光栅操作模块310对由着色器308产生的片段颜色值阵列执行各种操作。举例来说,在光栅化器306产生过采样片段阵列的情况下时,光栅操作模块310可向下过滤片段数据,以匹配显示装置的像素分辨率。将由光栅操作模块310产生的最终像素颜色值存储在像素缓冲器226中以供扫描输出模块224随后扫描输出。
将了解到,本文所描述的渲染管线是说明性的,且变化和修改是可能的。出于描述目的来进行本文所述的在各种功能块间的渲染功能划分,且应了解到可进行不同划分(例如划分成更多或更少的功能块)且管线的不同组件可共享某电路。可有利地实施渲染管线,以使得不同组件可同时对不同数据进行操作。另外,渲染管线内的每个模块也可以管线式方式进行操作。渲染管线可包括本文所述的任何或所有模块的多个执行个体(例如,对不同片段进行并行操作的多个着色器模块),从而推进整体渲染速度。另外,可在单个图形处理器中实施整个渲染管线的多个执行个体。
现将描述根据本发明一实施例的纹理过滤单元。出于说明目的,本文使用实数二进制编码的特定定点和浮点格式。本文中由符号(sM.N)或(uM.N)来标识定点格式,其中“s”指示带符号的格式,“u”指示无符号的格式,M是小数点之前的位数目,且N是小数点之后的位数目。例如,(s2.14)使用总共16个位来编码范围(-4,4)内的数字。在一个实施例中,纹理过滤单元使用具有正偏置的内部无符号格式;举例来说,如果通过将4.0(表示为位字段0x8000)相加到16位字段而将数字向上偏置,那么(u2.14)可用于表示与(s2.14)相同的范围;此项技术中已知此类偏置。
本文中所使用的浮点格式包括具有若干位(其可包括符号位)的尾数和具有若干位的指数(其位数一般比尾数少,虽然此并不是必需的)。浮点数字的值V是其尾数(m)乘以2的指数(x)的幂;即V=m*2x。尾数可以任何便利的定点格式来表达,且不局限于任何特定格式或范围。举例来说,本文所使用的块浮点格式具有以(s2.14)或(s2.22)格式的尾数和5位指数。作为另一实例,“fp 16”格式(如本文使用)是基于IEEE 754编码标准的16位浮点格式。在fp 16格式中,由一符号位、五个指数位和十个尾数位来表示数字。所述五个指数位被偏置+15,且所述十个尾数位表示尾数的小数部分,其中在小数点前面具有隐含的“1”。保留特定值(基于IEEE 754标准)以指示特殊数字,包括下溢(“Denorms”)、零、正和负无穷大(INF)和未定义(“不是数字”或NaN)值。应了解,可用其它格式来替代本文中用作为实例的任何特定格式。
图4是根据本发明一实施例的纹理过滤单元400的简化方框图。纹理过滤单元400在常规定点双线性内插电路周围提供浮点包装,且可经配置以用于过滤定点或浮点纹理数据。纹理过滤单元400包括浮点预处理块402、输入选择电路404、定点双线性内插(Bilerp)电路406、累加器电路408、定点(s2.14)格式化电路410、浮点(fp 16)格式转换电路412和输出选择电路414,所述累加器电路408执行定点和浮点累加两者。
纹理过滤单元400有利地与其它组件(未图示)进行通信,所述其它组件供应包括片段的纹理值(a、b、c、d)和权重(ws、wt、wf)的输入数据以在过滤期间使用。输入数据还有利地包括格式信号(FMT),所述格式信号指示纹理值具有定点还是浮点格式。在一个实施例中,纹理过滤单元400实施着色器308的纹理过滤单元314(图3)并从着色器308中的纹理拾取单元312和/或其它控制电路(未图示)接收输入数据。适合的控制电路的实例在此项技术中已知,且由于对于理解本发明不是重要的,因而省略了详细描述。
由定点Bilerp电路406和累加器电路408来提供定点纹理过滤,所述定点Bilerp电路406可具有普通常规设计且所述累加器电路408有利地处理定点和浮点格式两者(如下文所述)。在一个实施例中,定点Bilerp电路406接收四个定点纹理值(a、b、c、d)和两个权重(ws、wt)作为输入。使用这些输入来实施常规双线性过滤(例如,等式1),其产生过滤值λf
可通过将多个组的纹理值和相关权重传递到Bilerp电路406并在累加器电路408中累加来自每个通过的结果λf的加权平均值来实施更复杂的过滤(例如三线性过滤或各向异性过滤)。累加器电路408经有利配置以将每个接收的过滤结果λf与相应权重wf相乘并将所述乘积相加到累计总数(λA)。在所要过滤只需要一个双线性过滤通过的情况下,可指示累加器电路408将一个结果λf与权重wf=1累加。对于更复杂的过滤(例如三线性或各向异性过滤),任何数目的双线性过滤通过可与权重wf累加,其中根据特定过滤算法来确定所述权重wf。待累加的通过数目和用于每个通过的权重wf可作为输入参数而提供到累加器电路408(例如通过上文所提及的着色器308的控制电路);当已达到指定的通过数目时,累加器电路408将其输出λA提供到定点格式化电路410。
Bilerp电路406和累加器电路408可支持任何所要的定点格式,例如(s2.14)。在一个实施例中,Bilerp电路406接收(s2.14)纹理值、将每个值向上偏置32K(将所述值有效地转换为无符号表示)、应用双线性过滤,且将结果向下偏置4.0以确定λf。权重ws、wt和wf可具有不同格式,例如对于在范围[0,1]内的权重为(u1.9)。在某些实施例中,累加器电路408有利地比Bilerp电路406保存更多的位,以便减少或消除当过滤结果与小于1的权重相乘时可能发生的舍入误差。举例来说,定点过滤电路406可使用(s2.14)格式而累加器电路408使用(s2.22)。提供定点格式化电路410以在使用不同格式的情况下将累加器电路408的内部格式转换为最终定点格式;举例来说,可通过简单地删掉LSB或通过舍入来执行从(s2.22)到(s2.14)的转换。
由定点Bilerp电路406协同预处理块402、累加器电路408和浮点格式转换电路412来提供浮点纹理过滤。此实施例采用过滤算法的线性以使用定点算法电路来实施浮点过滤。一般来说,如此项技术中已知,线性过滤F(a、b、c、d)(例如等式1的双线性过滤)对于任何非零标量q具有以下性质:
F(qa,qb,qc,qd)=q*F(a,b,c,d).       等式2
纹理过滤器400的预处理块402使用因数q=2-k来预缩放输入的浮点纹理值(a、b、c、d),其中基于浮点值(a、b、c、d)的各自指数字段来选择块指数k。通过恰当选择块指数k,预缩放的浮点值:
a′=a*2-k,b′=b*2-k,c′=c*2-k,d′=d*2-k    等式3
在针对转换成定点格式(例如(s2.14))的适合范围内。
将预缩放的纹理值(a′、b′、c′、d′)(以定点格式)提供到定点Bilerp电路406,所述定点Bilerp电路406产生经过滤的尾数值:
λf′=F(a′,b′,c′,d′)=2-k*F(a,b,c,d),    (等式4)
其中只要Bilerp电路406实施线性过滤,就可保持右边等式。
对于浮点过滤,累加器电路408除接收经过滤的尾数值λf′之外还接收预缩放因数(块指数k),并获得所要的浮点结果:
λf=F(a,b,c,d)=λf′*2k.        (等式5)
如上所述,累加器电路408可经有利配置以在多个通过上累加Bilerp结果λf′′和块指数k,其中每个结果由各自权重wf′加权,可针对定点纹理数据执行的任何过滤算法也可针对浮点纹理数据执行。
当累加完成时,累加器电路408将累加结果(尾数λA和块指数kA)提供到格式转换电路412。格式转换电路412将由尾数λA和块指数kA表示的浮点数字转换为标准浮点格式(例如,fp 16)。
纹理过滤单元400可经有利配置以便可动态选择定点或浮点过滤。为了支持动态格式选择,提供输入选择电路404和输出选择电路414。选择电路404、414由格式选择(FMT)信号控制,所述格式选择(FMT)信号指示输入的纹理数据具有定点格式还是浮点格式。可(例如)使用常规多路复用器来实施这些电路。
在操作中,将纹理数据值(a、b、c、d)以定点或浮点格式提供到纹理过滤单元400。这些纹理数据值可对应于需要过滤的纹理的任何属性,包括颜色(或个别颜色分量)、曲面法线或任何其它属性。格式信号FMT可(例如)由上述纹理拾取单元产生,且其也可以恰当状态提供,以指示纹理数据具有定点还是浮点格式。对于定点数据,输入选择电路404将定点值(a、b、c、d)直接提供到Bilerp电路406,忽略预处理块402的输出,且输出选择电路414选择定点数据路径的输出(由定点格式化电路410提供)作为最终输出λ0,忽略浮点数据路径的输出(由格式转换电路412提供)。对于浮点数据,输入选择电路404选择预缩放输出(a′、b′、c′、d′)作为对Bilerp电路406的定点输入,且输出选择电路414选择浮点数据路径的输出作为最终输出λ0,忽略定点数据路径的输出。
在某些实施例中,格式信号FMT也可用于禁用过滤器400的在给定时间不活动的组件。举例来说,可在输入数据为浮点时禁用定点格式化电路410;对于定点数据,可禁用预处理块402和浮点格式转换电路412。在某些实施例中,对于定点输入数据,可将由预处理块402提供的块指数k设定为零或另一适宜的值。
现将描述纹理过滤单元400的浮点电路的特定实施方案。图5是根据本发明一实施例的预处理块402的实施方案的方框图。预处理块402通过使用块指数k预缩放输入来将具有fp 16格式的浮点纹理值(a、b、c、d)转换为具有(s2.14)格式的定点值(a′、b′、c′、d′)。预处理块402包括特殊数字电路504和预缩放块506。
特殊数字电路504接收浮点纹理值(a、b、c、d)和相关权重(ws、wt);检测任何特殊数字(例如INF、NaN);且在恰当情况下,在信号路径522上产生特殊数字输出λs且在信号路径524上产生旁路信号,所述信号在随后电路中使用以使得特殊数字输出λs覆盖Bilerp电路406的结果。如下文所述,这些信号有利于模仿浮点纹理过滤器的特殊数字算法。
在一个实施例中,实施用于处理fp 16特殊数字的以下规则:首先,与零权重相乘的任何NaN或INF纹理值由零代替且以正常方式来处理。第二,如果NaN纹理值将与非零权重相乘,将特殊数字输出λs设定为规范NaN且断言旁路信号。第四,如果+INF和-INF将被相加在一起,将特殊数字输出λS设定为NaN且断言旁路信号。第三,如果正(负)INF纹理值将与非零权重相乘,将特殊数字输出λs设定为正(负)INF且断言旁路信号。在所有其它情况下,可使纹理值通过而不被改变,且解除断言旁路信号;可将λS设定为任何适宜的值(例如,零)。如下文可见,这些特殊数字规则导致浮点双线性过滤的正确建模。将了解到,用于检测特殊数字的常规逻辑电路可用于实施这些规则,且也可实施用于处理特殊数字的不同规则。
预缩放块506(其确定块指数k)包括指数提取电路508、四路比较电路510、指数减法(ESUB)电路512和(s2.14)格式转换电路514。指数提取电路508从输入(a、b、c、d)的每一者中提取指数位,且将指数(由a.e、b.e、c.e、d.e表示)提供到四路比较电路510。四路比较电路510选出所述四个指数中的最大者作为块指数k。在一个实施例中,四路比较电路510可在输入对(a.e、b.e)和(c.e、d.e)之间执行二路比较,以选出每对中的较大者,接着对前两个比较的结果执行二路比较;可使用任何常规比较电路。
为了使用2-k对输入(a、b、c、d)进行预缩放,ESUB电路512将每个输入的指数部分减去值k,得到预缩放的输入(a′、b′、c′、d′)。ESUB电路512经有利配置以正确处理任何指数下溢(例如,根据需要,通过右移尾数位或将输入清洗为零)。在选择所述四个指数中的最大者作为块指数k的情况下,最大预缩放输入(a′、b′、c′、d′)的绝对值在范围[1,2)中,而其它预缩放输入的绝对值在范围[0,2)中。
格式转换电路514将预缩放fp 16值转换为定点(s2.14)表示。由于预缩放值的绝对值小于2,因而定点表示不会溢出;任何下溢均被清洗为零。常规格式转换电路和技术可用于构建格式转换电路514,且电路514可将数字转换为适合Bilerp电路406的输入的任何格式。
将预缩放因数(指数k)提供到累加器电路408。在输入具有定点格式的情况下,选择电路516可用于将块指数k设定为零,从而为所有定点输入建立缩放因数,所述选择电路516可为(例如)由格式选择信号FMT控制的常规多路复用器。
将了解到,本文所描述的预处理电路是说明性的,且变化和修改是可能的。举例来说,代替选择最大指数作为用于预缩放的块指数,可选择不同的数字。对于给定实施例,块指数的最佳选择可部分取决于由Bilerp电路406所使用的特定定点格式。
再次参看图4,对于浮点纹理输入,由输入选择电路404将来自预处理电路402的预缩放纹理值(a′、b′、c′、d′)提供到定点Bilerp电路406(如上所述)。Bilerp电路406应用双线性过滤且将(定点)结果λf′′提供到累加器电路408。应注意到,Bilerp电路406的操作可有利地独立于经由定点还是浮点输入路径来接收输入;因此,可使用常规定点Bilerp电路而不作修改。
图6是根据本发明一实施例的累加器电路408的简化方框图。如上所述,向累加器电路408提供权重wf,以用于计算多个穿过Bilerp电路406的通过的结果的加权和。在浮点数据的情况下,累加器电路408再引入与每个通过相关联的块指数k。(因为上述预缩放块506有利地为每个通过独立地选择块指数k,所以k一般对于不同通过是不同的)。
另外,累加器电路408有利地以模拟浮点双线性过滤器电路的行为的方式实施用于处理浮点输入纹理数据包括特殊数字(例如NaN或INF)的情况的规则。举例来说,在fp 16浮点过滤中,会预期如果输入的纹理值中的一者是NaN(或INF),那么结果也应为NaN(或IF)。可通过使用由特殊数字电路504(图5)提供的特殊值λS(线522)和旁路信号(线524)来覆盖Bilerp电路406的结果而实施此行为。
将首先描述正常情况下(即,当不断言旁路信号时)的浮点累加。如图6所示,累加器电路408包括寄存器602以用于存储累加的尾数值λA且包括寄存器604以用于存储累加的块指数kA。有利地将累加的尾数λA存储为定点(s2.22)格式,且将块指数kA存储为整数(例如,具有+15偏置的无符号5位整数以用于覆盖可能的fp 16指数的整个范围)。寄存器602和604在接收到每个过滤通过的结果时被更新,并在完成累加时被读出到输出级412。
累加器电路408接收当前过滤结果λf′′、应用到当前结果的加权因数wf和当前块指数k作为输入。乘法器606将λf′′与wf相乘,从而提供结果作为当前尾数λfw。浮点加法模块608将当前尾数λfw和块指数k解译为块浮点结果λfw*2k且将此结果相加到累加的块浮点结果λA*2kA。具体地说,浮点加法模块608确定当前块指数k和累加的块指数kA中哪个较大,将尾数λA和λfw中的一者移位,以使得使用较大块指数来表示两个浮点值,接着将尾数相加,将总和作为λA存储在寄存器602中且将较大的块指数作为kA存储在寄存器604中。
更具体地说,浮点加法模块608包括最大化器电路610,其选出k和kA中的较大者作为新累加的块指数(kA0)。减法电路612从kA0中减去k,且移位电路614将当前尾数λfw右移(kA0-k)位。类似地,减法电路616从kA0中减去kA,且移位电路618将累加的尾数λA右移(kA0-kA)位。(一般来说,电路610、612、614、616和618的操作导致一个尾数被移位零个位且另一尾数被移位非负数数目的位。)移位电路614和618有利地以(s2.22)格式来提供其输出,以避免损失数值精度。
定点加法电路620将由移位电路614和618提供的移位尾数值相加,以产生具有(s2.22)格式的新累加尾数λA0。在某些实施例中,定点加法电路620中的溢出可导致kA0被递增1且λA0被右移1。在其它实施例中,可选择kA0以使得不发生此类溢出。应注意,只要权重wf实施加权平均值且所有权重的总和等于1.0(对于过滤而言情况通常如此),且所有纹理输入值是有限的(此是当不断言旁路信号时的情况),浮点过滤结果保持为有限的。因此,加法模块608不必检测溢出情形,在溢出情形中两个有限浮点数字的总和导致特殊数字(例如NaN或INF),正如通用浮点加法电路中通常所进行的。
当不断言旁路信号时,新累加的尾数λA0和新累加的块指数kA0由选择电路624选中并分别写入到寄存器602和604。
当断言旁路信号时,正常情况结果λA0和kA0被特殊值覆盖,如现将描述的。在格式电路622处接收线522上由特殊数字电路504(图5)提供的特殊值λS,所述格式电路622将fp 16值重新格式化为具有(s2.22)格式的块指数kS0和尾数λA0。在一个实施例中,kS0可为零,且λS0可包括λS的fp 16表示的所有位,将其余位设定为零。响应于线524上的旁路信号的被断言状态,选择电路624选择特殊数字结果(λS0、kS0),且分别将这些结果写入到寄存器602和604中。
当将特殊数字写入到寄存器602中,优选地在特殊旗标寄存器626中设定旗标。特殊旗标寄存器626可由各种电路使用以确定寄存器602中的值是正常尾数还是特殊值,以使得可实施针对特殊数字的正确行为。举例来说,加法电路620可经配置以读取特殊旗标寄存器626且针对特殊数字实施恰当的算法规则,例如将NaN相加到任何数字导致NaN等。在某些实施例中,每当INF或NaN值发生为λS时,累加的结果也将为INF或NaN;因此,加法电路620可经配置以在寄存器626中设定特殊数字旗标的情况下仅通过特殊值λA
当累加完成时,可响应于控制信号(未图示)将寄存器602和604读出到格式转换级412(图4),所述控制信号可使用常规技术来产生。可提供额外控制信号(未图示)以用于重设寄存器602和604中的存储值(例如重设为零)且重设特殊旗标寄存器626以初始化累加器电路408。
在定点纹理数据的情况下,也可使用相同的累加器电路408。举例来说,如上所述,预缩放块506(图5)可经配置以为每组定点输入提供块指数k=0,以使得不移位“尾数”(在此情况下所述尾数为定点值)。在一个实施例中,不将特殊数字定义为定点格式,且在定点累加期间不断言旁路信号;在其它实施例中,可界定并检测特殊定点数字。
将了解到,本文所描述的累加器电路是说明性的,且变化和修改是可能的。在某些实施例中,累加电路可包括通用浮点加法电路,其中在相加之前将每个接收到的(λfw,k)对转换为适合的浮点格式。特殊数字的处理也可为不同的。举例来说,特殊数字旁路信号可用于在选中特殊值λS时禁用加法器电路的各种元件,或可实施用于处理特殊数字的不同规则。在其它实施例中,可实施单独的定点和浮点累加器电路。
图7是根据本发明一实施例的浮点格式转换电路412的方框图。在累加完成之后,格式转换电路412从累加电路408的寄存器602和604接收最终输出值λA和kA(图6)和来自特殊旗标寄存器626的特殊旗标值。正常转换电路704和特殊转换电路706分别以所要的输出格式(例如,fp 16)产生最终输出值λA和kA的“正常”和特殊解译。由选择电路708基于特殊旗标值来选择正确解译。
更具体地说,在一个实施例中,正常转换电路704产生对应于λA*2kA的fp 16值。可使用常规的格式转换技术。特殊转换电路706将λA转换为fp 16格式(例如通过删掉由上述格式电路622添加的任何多余位)。选择电路708基于是否断言(来自寄存器626的)特殊旗标而在由正常转换电路704提供的正常值与由特殊转换电路706提供的特殊值之间进行选择。将此选择提供到输出选择电路414(图4)以作为浮点过滤纹理值λ0。在特定实施例中,也可实施其它格式转换电路,以与内部和外部浮点格式一致。在某些实施例中,累加器电路将累加结果维持为所要的输出格式,且可省略单独格式转换级。
因此,纹理过滤单元400利用定点Bilerp电路以过滤浮点纹理数据,且对于任何浮点输入,可产生与使用浮点Bilerp电路会获得的结果相同的过滤结果。如上所述,可为特殊数字输入以及正常输入来模拟浮点Bilerp电路的行为。所属领域的技术人员将认识到,由上述电路固有地恰当处理下溢(例如,fp 16 Denorms)。因此,使用定点Bilerp电路来过滤浮点数据无需导致损失数值精度。本文所述的定点和浮点格式可包括任何数目的位;具体地说,可在内部使用额外位以便降低或消除舍入误差并在输出级处截断。
将了解到,如本文所述利用定点过滤器电路以过滤浮点数据允许纹理过滤单元比具有专用浮点过滤器电路的对比单元更为紧凑。另外,本文所述的纹理过滤单元能够以相同速率处理定点或浮点纹理数据。(速率取决于实施方案细节,例如输入纹素带宽;举例来说,在一个实施例中,支持每时钟两个Bilerp操作的速率。)为了匹配此性能,具有浮点过滤器电路的设计会需要包括单独、并行定点过滤路径,其会进一步增加芯片面积。
尽管已相对于特定实施例来描述了本发明,但所属领域的技术人员将认识到各种修改是可能的。举例来说,可代替本文所述的Bilerp电路而使用实施线性过滤算法的任何定点过滤器电路。定点过滤器电路可经配置以过滤任何数目的输入值,且还可用于(例如)通过将任何未使用的输入的值设定为零来实施涉及较少输入值的过滤。在一些实施例中,累加器电路可经配置以累加从多个并行操作的定点过滤器电路接收到的过滤结果,以代替或补充累加来自一个定点过滤器电路的多个结果。
提供到纹理过滤单元的纹理值可包括任何纹素属性,其中包括(但不限于)颜色或颜色分量、曲面法线(或其分量)等。在某些实施例中,纹理过滤单元可经配置以并行过滤多个属性。
可以任何所要格式来表达定点和浮点数字,所述格式不限于本文所述的特定实例。纹理过滤单元或其任何组件可使用定点和/或浮点数字的内部表示,其与外部表示相同或不同。在某些实施例中,可支持多个替代浮点(或定点)格式,且可包括恰当的格式信号和/或重格式化单元以控制且/或执行恰当的格式转换。
可使用常规技术来实施本文所述的各种电路,且所述电路可包括(例如)ASIC、配置有适当的程序码的可编程电路和其它装置;可根据需要使用电子、光学和/或机械电路技术。应了解,尽管本说明书参考各种功能块,但仅出于描述目的来使用这些块,且不希望这些块将本发明限制于特定物理配置;可根据需要在块之间共享或复制实施各种操作的电路。
本文所述的并入有纹理过滤单元的图形处理器可适合于各种计算机系统,包括通用计算机系统(桌上型计算机、膝上型计算机等)和专用计算机系统(视频游戏控制台、个人数字助理、蜂窝电话等)。
因此,虽然已相对于特定实施例描述了本发明,但应了解希望本发明涵盖属于所附权利要求书范围的所有修改和等效物。

Claims (22)

1.一种在一图形处理器中用于过滤浮点纹理数据的装置,所述装置包含:
一预缩放电路,其经配置以将一组浮点输入纹理值中的每一者转换成一定点尾数与一缩放因数的一乘积,其中所述缩放因数对于所述组浮点输入纹理值中的每一者均是相同的;
一定点过滤电路,其经配置以根据复数个定点过滤输入值来计算一定点过滤输出值,所述定点过滤电路经耦合以接收所述组浮点输入纹理值的所述定点尾数作为所述定点过滤输入值;和
一累加器电路,其经耦合以从所述预缩放电路接收所述缩放因数并从所述定点过滤电路接收所述过滤输出值,所述累加器电路经配置以通过所述缩放因数的一倒数来缩放所述过滤输出值,借此产生一浮点过滤结果。
2.根据权利要求1所述的装置,其中所述累加器电路经进一步配置以累加复数个浮点过滤结果的一加权和。
3.根据权利要求2所述的装置,其中通过经由所述预缩放电路和所述定点过滤电路来处理一组纹理值而获得所述复数个浮点过滤结果中的每一者。
4.根据权利要求2所述的装置,其中所述浮点输入纹理值中的每一者均包括一指数,且其中所述预缩放电路经进一步配置以使得所述缩放因数对应于所述指数中的一最大指数。
5.根据权利要求4所述的装置,其中所述累加器电路包括:
一存储电路,其经配置以存储一经累加的浮点过滤结果;
一定点乘法器电路,其经配置以将从所述定点过滤电路接收的一当前定点过滤输出值与一当前权重相乘,借此计算一当前尾数;和
一浮点加法电路,其经配置以将由所述当前尾数代表的一当前浮点值和从所述预缩放电路接收的一当前缩放因数相加到所述经累加的浮点过滤结果。
6.根据权利要求2所述的装置,其中所述定点过滤电路经配置以实施一使用四个过滤输入的双线性过滤。
7.根据权利要求6所述的装置,其中所述累加器电路经进一步配置以计算通过两个过滤器的浮点过滤结果的一加权平均值,借此计算一三线性过滤纹理值。
8.根据权利要求6所述的装置,其中所述累加器电路经进一步配置以使得所述加权平均值对应于一经各向异性过滤的纹理值。
9.根据权利要求1所述的装置,其进一步包含:
一定点输入路径,其经配置以将一组定点输入纹理值作为所述过滤输入提供给所述定点过滤电路,所述定点输入路径经由一绕过所述预缩放电路的定点输入路径而耦合到所述定点过滤电路,
其中所述装置可经配置以用于使用定点纹理值或浮点纹理值作为输入来操作。
10.根据权利要求9所述的装置,其中所述累加器电路经进一步配置以可在一定点模式和一浮点模式中的任一模式下操作。
11.根据权利要求10所述的装置,其中在所述定点模式下,所述累加器电路使用等于1的所述缩放因数来操作。
12.根据权利要求1所述的装置,其进一步包含:
一特殊数字的逻辑电路,其经耦合以接收所述输入浮点纹理值,且经配置以在所述输入浮点纹理值中的一者对应于一预定特殊数字的情况下断言一特殊值信号,
其中所述累加器电路经进一步配置以接收所述特殊值信号,且在所述特殊值信号被断言的情况下提供一相应特殊数字作为所述浮点过滤结果。
13.一种图形处理器,其具有一用于计算一片段颜色的着色器模块,所述着色器模块包含:
一纹理拾取单元,其经配置以拾取复数个对应于一片段的纹理值,且确定所述拾取的纹理值具有一定点格式还是具有一浮点格式;
一纹理过滤单元,其经耦合以从所述纹理拾取电路接收所述拾取的纹理值,且经配置以对所述拾取的纹理值应用一过滤,借此产生一过滤结果,所述纹理过滤单元可在一定点模式和一浮点模式中的任一模式下操作,
其中所述纹理过滤单元在所述拾取的纹理值具有所述定点格式的情况下在所述定点模式下操作,且在所述拾取的纹理值具有所述浮点格式的情况下在所述浮点模式下操作;
其中所述纹理过滤单元包括:
一预缩放电路,其经配置以将一组浮点输入纹理值中的每一者转换成一定点尾数与一缩放因数的一乘积,其中所述缩放因数对于所述组浮点输入纹理值中的每一者均是相同的;
一定点过滤电路,其经配置以根据复数个定点过滤输入值计算一定点过滤输出值,所述定点过滤电路经耦合以接收所述组浮点输入纹理值的所述定点尾数作为所述定点过滤输入值;和
一累加器电路,其经耦合以从所述预缩放电路接收所述缩放因数并从所述定点过滤电路接收所述过滤输出值,所述累加器电路经配置以使用所述缩放因数的一倒数来缩放所述过滤输出值,借此产生一浮点过滤结果。
14.根据权利要求13所述的图形处理器,其中所述纹理过滤单元进一步包括一定点输入路径,其经配置以将一组定点输入纹理值作为所述过滤输入提供给所述定点纹理过滤电路,所述定点输入路径经耦合以绕过所述预缩放电路。
15.根据权利要求14所述的图形处理器,其中所述累加器电路经进一步配置以可在一定点模式和一浮点模式中的任一模式下操作。
16.根据权利要求14所述的图形处理器,其中所述纹理拾取单元进一步包括:
一输入选择电路,其经配置以选择所述预缩放电路和所述定点输入路径中的一者作为输入到所述定点过滤电路的所述过滤输入的一来源;和
一输出选择电路,其经配置以选择来自所述累加器电路的所述浮点过滤结果和来自所述累加器电路的所述定点过滤结果中的一者作为一最终结果,
其中在所述输入选择电路选择所述预缩放电路的情况下所述输出选择电路选择所述浮点过滤结果,且在所述输入选择电路选择所述定点输入路径的情况下所述输出电路选择所述定点过滤结果。
17.根据权利要求16所述的图形处理器,其中所述输入选择电路和所述输出选择电路由一格式信号来控制,且其中所述纹理拾取单元经配置以基于所述拾取的纹理值具有所述定点格式还是具有所述浮点格式的确定来产生所述格式信号。
18.一种用于在一图形处理器中过滤纹理数据的方法,所述方法包含以下行为:
(a)接收一组浮点纹理值;
(b)为所述组接收到的纹理值确定一缩放因数;
(c)使用所述缩放因数来缩放所述接收到的纹理值中的每一者;
(d)将所述经缩放的纹理值中的每一者转换成一定点格式;
(e)将所述经转换的纹理值作为过滤输入提供给一定点纹理过滤电路,所述定点纹理过滤电路经配置以根据复数个经过滤的输入来计算一定点过滤输出;
(f)从所述纹理过滤电路接收一具有一定点格式的过滤输出;和
(g)使用所述缩放因数的一倒数来缩放所述过滤输出值,借此产生一浮点过滤结果。
19.根据权利要求18所述的方法,其进一步包含以下行为:
(h)确定所述接收到的纹理值中的任一者是否对应于一预定的特殊数字;和
(i)在所述接收到的纹理值中的一者或一者以上对应于一预定的特殊数字的情况下,提供一特殊数字作为所述浮点过滤结果。
20.根据权利要求18所述的方法,其进一步包含以下行为:
(h)在一浮点累加器电路中累加复数个过滤结果的一加权和,其中所述复数个过滤结果中的每一者均通过行为(a)到(g)而获得。
21.根据权利要求18所述的方法,其进一步包含以下行为:
(h)接收一组定点纹理值;
(i)将所述定点纹理值作为过滤输入提供给所述定点纹理过滤电路;和
(j)从所述纹理过滤电路接收一具有一定点格式的过滤输出。
22.根据权利要求21所述的方法,其进一步包含:
(k)在一定点累加器电路中累加复数个过滤输出的一加权和,其中所述复数个过滤输出中的每一者均通过行为(h)到(j)而获得。
CNB2005800261814A 2004-08-04 2005-07-28 用于浮点纹理数据的过滤单元 Active CN100442353C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/912,419 US7355603B2 (en) 2004-08-04 2004-08-04 Filtering unit for floating-point texture data
US10/912,419 2004-08-04

Publications (2)

Publication Number Publication Date
CN1993728A CN1993728A (zh) 2007-07-04
CN100442353C true CN100442353C (zh) 2008-12-10

Family

ID=35756954

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800261814A Active CN100442353C (zh) 2004-08-04 2005-07-28 用于浮点纹理数据的过滤单元

Country Status (3)

Country Link
US (2) US7355603B2 (zh)
CN (1) CN100442353C (zh)
WO (1) WO2006017410A2 (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7903892B2 (en) * 2002-10-29 2011-03-08 Ati Technologies Ulc Image analysis for image compression suitability and real-time selection
US8111928B2 (en) * 2003-02-13 2012-02-07 Ati Technologies Ulc Method and apparatus for compression of multi-sampled anti-aliasing color data
US7643679B2 (en) 2003-02-13 2010-01-05 Ati Technologies Ulc Method and apparatus for block based image compression with multiple non-uniform block encodings
US7764833B2 (en) * 2003-02-13 2010-07-27 Ati Technologies Ulc Method and apparatus for anti-aliasing using floating point subpixel color values and compression of same
US7432925B2 (en) * 2003-11-21 2008-10-07 International Business Machines Corporation Techniques for representing 3D scenes using fixed point data
US7355603B2 (en) * 2004-08-04 2008-04-08 Nvidia Corporation Filtering unit for floating-point texture data
US7606429B2 (en) * 2005-03-25 2009-10-20 Ati Technologies Ulc Block-based image compression method and apparatus
US20070008333A1 (en) * 2005-07-07 2007-01-11 Via Technologies, Inc. Texture filter using parallel processing to improve multiple mode filter performance in a computer graphics environment
US7936359B2 (en) * 2006-03-13 2011-05-03 Intel Corporation Reconfigurable floating point filter
US8766995B2 (en) * 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US8884972B2 (en) * 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) * 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US20080001961A1 (en) * 2006-06-30 2008-01-03 Nokia Corporation High Dynamic Range Texture Filtering
US7649538B1 (en) * 2006-11-03 2010-01-19 Nvidia Corporation Reconfigurable high performance texture pipeline with advanced filtering
US7999821B1 (en) 2006-12-19 2011-08-16 Nvidia Corporation Reconfigurable dual texture pipeline with shared texture cache
US8443027B2 (en) * 2007-09-26 2013-05-14 International Business Machines Corporation Implementing a floating point weighted average function
US8502832B2 (en) * 2008-05-30 2013-08-06 Advanced Micro Devices, Inc. Floating point texture filtering using unsigned linear interpolators and block normalizations
US8195882B2 (en) 2008-05-30 2012-06-05 Advanced Micro Devices, Inc. Shader complex with distributed level one cache system and centralized level two cache
US8001422B1 (en) * 2008-06-30 2011-08-16 Amazon Technologies, Inc. Shadow testing services
US8352241B2 (en) * 2009-02-26 2013-01-08 Microsoft Corporation Emulating legacy hardware using IEEE 754 compliant hardware
US8516578B1 (en) 2010-12-22 2013-08-20 Google Inc. Vertex array access bounds checking
US8711166B1 (en) 2011-02-25 2014-04-29 Google Inc. Simulating non power of two texture behavior
US9508185B2 (en) 2011-05-02 2016-11-29 Sony Interactive Entertainment Inc. Texturing in graphics hardware
US8416250B1 (en) * 2011-05-13 2013-04-09 Google Inc. Simulating vertex attribute zero
US9305368B2 (en) * 2013-06-21 2016-04-05 Intel Corporation Compression and decompression of graphics data using pixel region bit values
US9946331B2 (en) 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. System and method to process signals having a common component
US20170052762A1 (en) * 2015-08-20 2017-02-23 Futurewei Technologies, Inc. System and method for representing complex numbers in fused floating point
US10089708B2 (en) * 2016-04-28 2018-10-02 Qualcomm Incorporated Constant multiplication with texture unit of graphics processing unit
US10387991B2 (en) 2016-07-01 2019-08-20 Intel Corporation Method and apparatus for frame buffer compression
KR20180048081A (ko) 2016-11-02 2018-05-10 삼성전자주식회사 텍스쳐 처리 방법 및 장치
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
CN112148371B (zh) * 2019-06-27 2023-10-24 北京地平线机器人技术研发有限公司 基于单指令多数据流的数据运算方法、装置、介质和设备
US11455368B2 (en) * 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
US11693625B2 (en) 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US11442881B2 (en) 2020-04-18 2022-09-13 Flex Logix Technologies, Inc. MAC processing pipelines, circuitry to control and configure same, and methods of operating same
US11604645B2 (en) 2020-07-22 2023-03-14 Flex Logix Technologies, Inc. MAC processing pipelines having programmable granularity, and methods of operating same
WO2023227064A1 (zh) * 2022-05-26 2023-11-30 吕仁硕 一种浮点数压缩方法、运算装置及计算器可读取存储媒介

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951629A (en) * 1997-09-15 1999-09-14 Motorola, Inc. Method and apparatus for log conversion with scaling
JPH11328438A (ja) * 1998-03-18 1999-11-30 Sun Microsyst Inc 高効率浮動小数点zバッファリングの方法および装置
US6606097B1 (en) * 2000-08-03 2003-08-12 International Business Machines Corporation Circuit for generating frame buffer values

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745125A (en) * 1996-07-02 1998-04-28 Sun Microsystems, Inc. Floating point processor for a three-dimensional graphics accelerator which includes floating point, lighting and set-up cores for improved performance
US6650327B1 (en) 1998-06-16 2003-11-18 Silicon Graphics, Inc. Display system having floating point rasterization and floating point framebuffering
US6518974B2 (en) * 1999-07-16 2003-02-11 Intel Corporation Pixel engine
US7139005B2 (en) * 2003-09-13 2006-11-21 Microsoft Corporation Optimized fixed-point mathematical library and graphics functions for a software-implemented graphics rendering system and method using a normalized homogenous coordinate system
US7355603B2 (en) * 2004-08-04 2008-04-08 Nvidia Corporation Filtering unit for floating-point texture data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951629A (en) * 1997-09-15 1999-09-14 Motorola, Inc. Method and apparatus for log conversion with scaling
JPH11328438A (ja) * 1998-03-18 1999-11-30 Sun Microsyst Inc 高効率浮動小数点zバッファリングの方法および装置
US6606097B1 (en) * 2000-08-03 2003-08-12 International Business Machines Corporation Circuit for generating frame buffer values

Also Published As

Publication number Publication date
US20080211827A1 (en) 2008-09-04
CN1993728A (zh) 2007-07-04
US20060028482A1 (en) 2006-02-09
WO2006017410A2 (en) 2006-02-16
US8098257B2 (en) 2012-01-17
US7355603B2 (en) 2008-04-08
WO2006017410A3 (en) 2006-04-27

Similar Documents

Publication Publication Date Title
CN100442353C (zh) 用于浮点纹理数据的过滤单元
US6275235B1 (en) High precision texture wrapping method and device
CN101344961B (zh) 使用常驻小中见大贴图(mipmap)数据外推非常驻小中见大贴图数据
US6664962B1 (en) Shadow mapping in a low cost graphics system
US7307638B2 (en) Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US7176919B2 (en) Recirculating shade tree blender for a graphics system
JP4846120B2 (ja) スケルトンアニメーションのステッチングハードウェアを有するグラフィクス装置
CN108874744A (zh) 矩阵乘积累加运算的广义加速
JP4643271B2 (ja) 区間解析を使用するコンピュータ・グラフィックスの際の可視面決定システムおよび方法
US6392655B1 (en) Fine grain multi-pass for multiple texture rendering
US10049486B2 (en) Sparse rasterization
KR20140139553A (ko) 그래픽 프로세싱 유닛들에서 가시성 기반 상태 업데이트들
JP2002537614A (ja) 並列のサンプル・ピクセル計算を実行するように構成されたグラフィックス・システム
US8072456B2 (en) System and method for image-based rendering with object proxies
CN103810669A (zh) 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块
CN107209951B (zh) 单遍表面溅射
CN103679776A (zh) 图像处理设备
US6778188B2 (en) Reconfigurable hardware filter for texture mapping and image processing
CN117292039A (zh) 顶点坐标生成方法、装置、电子设备及计算机存储介质
CN114399421A (zh) 三维模型可见度数据的存储方法、装置、设备及存储介质
JP4740490B2 (ja) グラフィックスレンダリングシステムにおいて視覚的に重要なz成分の精度を最大化しz近傍クリッピングを回避するためのz近傍範囲におけるz値のクランピング
Leach A GPU-Based level of detail system for the real-time simulation and rendering of large-scale granular terrain
KR19990078036A (ko) 유효한부동점제트버퍼링을구현하기위한방법및장치
JPWO2008032603A1 (ja) 画像処理装置、画像処理用集積回路、画像処理システム、インプットアセンブラ装置、インプットアセンブル用集積回路
JP2001175455A (ja) ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant