首页> 中国专利> 使用常驻小中见大贴图(MIPMAP)数据外推非常驻小中见大贴图数据

使用常驻小中见大贴图(MIPMAP)数据外推非常驻小中见大贴图数据

摘要

一种多线程图形处理器经配置以用于外推存储在物理存储器中的低分辨率小中见大贴图,以在从高等待时间存储资源检索高分辨率非常驻小中见大贴图且将其转换成常驻小中见大贴图时产生外推纹理值。所述外推纹理值提供与使用低分辨率小中见大贴图层级纹理数据代替暂时不可用的高分辨率小中见大贴图层级纹理数据相比看上去更锐化的改善图像。使用外推阈值LOD来判定何时使用外推放大或缩小纹理过滤。所述外推阈值LOD可用于在非常驻小中见大贴图转换成常驻小中见大贴图时从使用外推过滤平滑地过渡到使用内插过滤。

著录项

  • 公开/公告号CN101344961A

    专利类型发明专利

  • 公开/公告日2009-01-14

    原文格式PDF

  • 申请/专利权人 辉达公司;

    申请/专利号CN200810111068.1

  • 发明设计人 威廉·P·小纽霍尔;

    申请日2008-06-10

  • 分类号G06T1/60;G06T15/20;

  • 代理机构北京律盟知识产权代理有限责任公司;

  • 代理人王允方

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 21:15:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-06-15

    授权

    授权

  • 2009-03-04

    实质审查的生效

    实质审查的生效

  • 2009-01-14

    公开

    公开

说明书

技术领域

本发明一般来说涉及纹理映射,且更具体来说涉及使用外推来计算不可用的小中见大贴图的纹理贴图值。

背景技术

随着虚拟存储器的使用已变得更普遍,在图形处理期间可存取的纹理贴图数目不再受常规存储纹理贴图的物理存储器容量(本地或系统)所限制。纹理数据可存储在其他存储资源上,例如,磁盘驱动器、CD驱动器、或者甚至具有比物理存储器高的存取等待时间的远程服务器。在处理期间需要纹理数据时,检索纹理数据。然而,不像从物理存储器检索纹理数据,在从其他存储资源检索纹理数据期间,图像质量受到损害。

将纹理的高分辨率小中见大贴图存储在其他存储资源上特别有利,因为这些小中见大贴图较大。纹理的较低分辨率小中见大贴图可存储在物理存储器中且用于在从其他存储资源检索高分辨率小中见大贴图时产生图像。结果为在高分辨率小中见大贴图在物理存储器中变为可用时纹理贴图数据看似模糊且因此锐化。

因此,此项技术中需要用于改善在从高等待时间存储资源检索高分辨率小中见大贴图时使用的低分辨率纹理贴图数据的呈现的系统和方法。另外,需要从使用外推过滤平滑地过渡到使用内插过滤,从而只要从高等待时间存储资源检索高分辨率小中见大贴图就产生经过滤的纹素值。

发明内容

多线程图形处理器经配置以外推存储在物理存储器中的低分辨率小中见大贴图,以在从高等待时间存储资源检索高分辨率小中见大贴图以将高分辨率小中见大贴图从非常驻小中见大贴图转换成常驻小中见大贴图时产生外推纹理值。外推纹理值提供与使用低分辨率小中见大贴图层级纹理数据代替高分辨率小中见大贴图层级纹理数据相比看上去更锐化的改善图像。经过滤的纹理值是使用小中见大贴图过滤器来产生的,所述小中见大贴图过滤器外推两个常驻细节级别小中见大贴图以近似在非常驻细节级别小中见大贴图为常驻时将由过滤产生的增加的对比度和细节。

使用外推阈值LOD来判定何时使用外推放大或缩小纹理过滤。外推阈值LOD可用于在非常驻小中见大贴图转换成常驻小中见大贴图时从使用外推过滤平滑地过渡到使用内插过滤。将增量LOD(细节级别)计算为理想小中见大贴图的LOD与外推阈值LOD(大于或等于最高分辨率常驻小中见大贴图的LOD的值)之间的差异。与存储在高存取等待时间存储资源中的非常驻小中见大贴图相反,常驻小中见大贴图存储在(低存取等待时间)物理存储器中。增量LOD用于判定用于产生用于代替高分辨率小中见大贴图纹理数据的外推纹理值的外推权重值。

用于将纹理贴图的非常驻小中见大贴图层级转换成纹理贴图的常驻小中见大贴图层级的本发明方法的各种实施例包括:接收将非常驻小中见大贴图层级转换成常驻小中见大贴图层级以用于渲染供显示所用的图像的请求、起始非常驻小中见大贴图层级从非常驻存储器存储装置到常驻存储器存储装置的复制,以及在非常驻小中见大贴图层级的复制完成时更新用于产生图像的经过滤纹素值的外推阈值细节级别(LOD)值。

附图说明

因此,通过详细地理解本发明的上述特征的方式,上文简要概括的本发明的更详细描述可通过参考实施例而获得,所述实施例中的一些说明于附图中。然而,请注意,附图仅说明本发明的典型实施例且因此不视为对其范围的限制,因为本发明可准许其他等效实施例。

图1说明根据本发明的一个或一个以上方面的变化细节级别(LOD)的纹理的小中见大贴图的概念图;

图2A为根据本发明的一个或一个以上方面的用于产生非常驻小中见大贴图层级的外推纹理值的方法步骤的流程图;

图2B为根据本发明的一个或一个以上方面的用于判定对应于理想LOD的小中见大贴图是否为常驻的图2A的方法步骤210的流程图;

图2C为根据本发明的一个或一个以上方面的用于判定纹理贴图值是否应从常驻小中见大贴图层级外推的方法步骤的流程图;

图3为说明经配置以实施本发明的一个或一个以上方面的计算机系统的框图;

图4为根据本发明的一个或一个以上方面的图3的计算机系统的并行处理子系统的框图;

图5为根据本发明的一个或一个以上方面的图4的并行处理子系统的并行处理单元的框图;

图6A为根据本发明的一个或一个以上方面的图形处理管线的概念图;

图6B为根据本发明的一个或一个以上方面的图6A的纹理单元的框图;以及

图7为根据本发明的一个或一个以上方面的用于将非常驻小中见大贴图层级转换成常驻小中见大贴图层级的方法步骤的流程图。

具体实施方式

在以下描述中,陈述许多具体细节以提供对本发明的更详尽理解。然而,所属领域技术人员应显而易见可在无这些具体细节中的一者或一者以上的情况下实践本发明。在其他情况下,不描述众所周知的特征以便避免使本发明不清楚。

图1说明根据本发明的一个或一个以上方面的变化LOD的纹理图像的小中见大贴图的概念图。每一小中见大贴图为特定分辨率或细节级别(LOD)的纹理图像的预过滤型式,LOD0小中见大贴图110具有最高分辨率,且LODN小中见大贴图190具有最低分辨率,也就是,随着LOD指数增加,相应小中见大级别的分辨率减小。当使用虚拟存储器映射来表示比物理存储器中可用的地址空间大的地址空间时,并非所有可寻址纹理数据均常驻于物理存储器中。如图1所示,LOD0小中见大贴图110、LOD1小中见大贴图120和LOD2小中见大贴图130不存储于物理存储器中,且因此为非常驻小中见大贴图100。常驻小中见大贴图140(包括LOD3小中见大贴图150、LOD4小中见大贴图160和LODN小中见大贴图190)存储于物理存储器中,因此可在低等待时间下存取存储于这些小中见大贴图中的纹理数据。

当软件应用程序请求在所有所需小中见大贴图皆常驻于存储器中的细节级别下的纹理过滤时,纹理单元从所需小中见大贴图拾取纹素且应用过滤器,所述过滤器产生内插于从常驻小中见大贴图层级拾取的纹素之间(如现有技术所常见的)的值。当软件应用程序试图存取在物理存储器外成页的小中见大贴图层级(也就是,非常驻小中见大贴图)时,本发明的实施例从两个最近常驻小中见大贴图拾取纹素且应用产生由从常驻小中见大贴图层级拾取的纹素外推的值的过滤器。计算外推纹理值且使用其来产生图像,直到将非常驻小中见大贴图在物理存储器中成页而变成常驻小中见大贴图为止。

例如,用于纹理映射的所计算出LOD为LOD2,且LOD2小中见大贴图130为非常驻的,如结合图2A所描述,使用常驻小中见大贴图(LOD3小中见大贴图150及LOD4小中见大贴图160)来计算外推纹理值。使用外推缩小过滤器来计算非常驻LOD(例如,LOD2)的外推纹理值。当纹素与像素的比率小于一时,使用缩小过滤器。一旦LOD2转换成常驻LOD小中见大贴图,就可调整过滤器权重以在许多帧上逐步引入LOD2纹素以产生平滑可视过渡,而非在单个帧中从外推过滤器切换到常规内插过滤器。当所计算出的LOD小于LOD0(也就是,分辨率比LOD0高)时,使用外推放大过滤器来计算外推纹理值。当纹素与像素的比率大于一时,使用放大过滤器。

在常规系统中,使用所属领域技术人员众所周知的的技术“反锐化掩蔽”或“锐化纹理”来在所计算出的LOD小于零(也就是,所要纹理分辨率高于LOD0)时通过在LOD0与LOD1之间进行外推来从LOD0减去低频率分量的影响从而增强纹理外观的锐度。本发明也使用外推(放大外推)来产生小于零的所计算出的LOD的纹素值,但是使用新外推过滤器类型(例如,外推小中见大映射线性和外推小中见大映射最近邻者)。另外,执行缩小外推以计算任何非常驻纹理的纹理值,而非仅计算低于LOD0的LOD值。

图2A为根据本发明的一个或一个以上方面的用于产生非常驻小中见大贴图层级(例如,非常驻小中见大贴图100)的外推纹理值的方法步骤的流程图。在步骤200中,方法使用所属领域技术人员众所周知的的技术来计算理想LOD。理想LOD的整数部分对应于最好地匹配所应用纹理的分辨率的小中见大贴图层级。在步骤210中,方法判定理想LOD小中见大贴图是否为非常驻小中见大贴图,且,如果不是,那么理想LOD小中见大贴图为常驻的,且在步骤225中从精细和粗糙小中见大贴图读取纹素。结合图2B来描述步骤210的详情。

按照惯例,精细小中见大贴图对应于理想LOD小中见大贴图的整数部分,且粗糙小中见大贴图对应于整数部分+1LOD小中见大贴图。在步骤228中,方法计算精细小中见大贴图和粗糙小中见大贴图的双线性过滤纹素值,且接着使用理想LOD的小数部分来内插于双线性过滤纹素值之间以在过滤器类型为外推小中见大映射线性时产生经过滤纹素值。当过滤器类型为外推小中见大映射最近邻者时,从精细小中见大贴图和粗糙小中见大贴图选择最近纹素值以产生两点采样纹素值。接着使用理想LOD的小数部分来双线性地内插所述两点采样纹素值以产生经过滤的纹素值。使用常规纹理贴图过滤技术来执行步骤225和228。

如果在步骤210中方法判定理想LOD小中见大贴图为非常驻小中见大贴图,那么在步骤230中方法告知装置驱动器应将纹理的一个或一个以上小中见大贴图在物理存储器内成页以将这些小中见大贴图从非常驻小中见大贴图转换成常驻小中见大贴图以用于产生图像。在步骤210中,当理想LOD小于零且LOD0小中见大贴图不是常驻时,指示纹素与像素的比率大于一,方法可判定理想LOD小中见大贴图为非常驻的,且应使用外推放大过滤器。当理想LOD大于零且从理想LOD减去的最高常驻小中见大贴图小于零时,指示纹素与像素的比率小于一,应使用外推缩小过滤器。当理想LOD等于LOD0时,可使用外推放大。

在步骤235中,方法将增量LOD计算为理想LOD与外推阈值LOD(大于或等于最高分辨率常驻小中见大贴图的LOD的值)之间的差异,也就是,增量LOD=理想LOD-外推阈值LOD。例如,参看图1,当理想LOD为LOD1(对应于LOD0小中见大贴图120)时,增量LOD为-2,因为外推阈值LOD为LOD3(对应于LOD3小中见大贴图150)。注意,增量LOD也可具有小数分量,因为理想LOD和外推阈值LOD可具有小数分量。

在步骤240中,方法使用增量LOD来判定外推权重。表格存储对应于增量LOD值的外推权重值。在本发明的一些实施例中,可对表格进行编程以指定用于判定外推权重值的函数。本发明的一些实施例允许高达64个(LOD,权重)对按递减LOD次序来载入于表格中。默认情况下,此表格含有六对{(0,0)、(-1,0.25)、(-2,0.5)、(-4,1.125)、(-8,2.0)、(-16,3.0))。

假定增量LOD小于-16(表格(0)中的最后一个条目),那么外推权重将为表格(3.0)中的最后一个条目的权重,也就是,3。如果增量LOD小于零,但是大于由应用程序指定的表格中的第一条目,那么外推权重将为表格中第一条目的权重。假定增量LOD值-5落在表格中的两个LOD值(低值(LOD=-4,权重=1.125)与高值(LOD=-8,权重=2.0))之间,那么线性地内插外推权重:

权重*(LOD-增量LOD)/(LOD-LOD)+

权重*(增量LOD-LOD)/(LOD-LOD)。(方程式1)

在步骤250中使用外推权重来使用从粗糙LOD小中见大贴图和精细LOD小中见大贴图读取的纹素来产生经过滤的纹素。

在步骤245中,当所指定过滤器类型为外推小中见大映射线性时,方法从粗糙LOD小中见大贴图读取四个纹素且从精细LOD小中见大贴图读取四个纹素。当所指定过滤器类型为外推小中见大映射最近邻者时,方法从精细LOD小中见大贴图读取单个纹素且从粗糙LOD小中见大贴图读取单个纹素。精细LOD小中见大贴图为细节级别等于经截断外推阈值LOD(外推阈值LOD的整数部分)的小中见大贴图,且粗糙LOD小中见大贴图为具有等于精细LOD加1的LOD的较低分辨率常驻小中见大贴图。

在步骤250中,当过滤器类型为外推小中见大映射线性时,方法使用纹理贴图坐标的小数部分来双线性地内插从粗糙LOD小中见大贴图和精细LOD小中见大贴图读取的纹素以产生纹素值T精细粗糙。当过滤器类型为外推小中见大映射最近邻者时,方法提供从精细LOD小中见大贴图读取的纹素作为T精细和从粗糙LOD小中见大贴图读取的纹素作为T粗糙。在步骤250中,方法接着使用T精细、T粗糙和外推权重W,使用以下方程式来计算外推纹素值:

T精细*(1.0+W)-T粗糙*W    (方程式2)

外推纹素值可与额外外推纹素值组合以产生各向异性纹理映射或其他经过滤纹理函数的经过滤纹素值。外推纹素值接着用于产生供存储及/或显示的经渲染图像。

图2B为根据本发明的一个或一个以上方面的用于判定对应于理想LOD的小中见大贴图是否为常驻的图2A的方法步骤210的流程图。在步骤212中,方法判定理想LOD是否小于零,也就是,低于LOD0,且,如果是,那么在步骤214中,方法判定LOD0小中见大贴图是否为常驻小中见大贴图。如果在步骤214中方法判定LOD0小中见大贴图为常驻的,那么在步骤216中使用在步骤228中指定为放大纹理过滤器的过滤器类型。如果在步骤214中方法判定LOD0小中见大贴图不是常驻的,那么在步骤217中使用在步骤250中指定为外推放大纹理过滤器的过滤器类型。

如果在步骤212中方法判定理想LOD不小于零,那么在步骤218中方法判定理想LOD是大于还是等于外推阈值LOD。如果在步骤218中方法判定理想LOD小中见大贴图大于或等于外推阈值LOD,那么在步骤220中使用指定为缩小纹理过滤器的过滤器类型来在步骤228中使用内插来计算经过滤的纹理值。否则,在步骤221中,使用指定为外推缩小纹理过滤器的过滤器类型来在步骤250中使用外推来计算经过滤的纹素值。

图2C为根据本发明的一个或一个以上方面的用于判定纹素值是否应由常驻小中见大贴图外推的方法步骤的流程图。可使用断言或条件码来配置用于处理图形数据的着色器程序以判定像素着色器程序中的后续分支行为。断言或条件指令可用于包括条件执行路径,其中当由指令指定的着色器程序断言或条件码具有第一值时执行一个路径,且当着色器程序断言或条件码具有不同值时执行另一路径。如结合图2A所描述,完成步骤200、210及230。在步骤265中,方法设定着色器程序条件值(断言或条件码)以指示对应于理想LOD的小中见大贴图为非常驻小中见大贴图。在本发明的其他实施例中,方法还计算增量LOD且将其当作着色器程序条件值而存储。在步骤270中,执行着色器程序指令,且计算内插或外推纹素值。具体来说,当使用默认条件值时,着色器程序执行第一组指令以用于执行常规内插以产生内插纹素值。当着色器程序条件值指示理想小中见大贴图为非常驻小中见大贴图时,执行一组不同指令以产生外推纹素值。

系统概述

图3为说明经配置以实施本发明的一个或一个以上方面的计算机系统的框图。图3为根据本发明的实施例的计算机系统300的框图。计算机系统300包括经由包括存储器桥305的总线路径通信的中央处理单元(CPU)302和系统存储器304。在本发明的一些实施例中,存储于系统存储器304中的纹理数据(例如,常驻小中见大贴图325)被视为“常驻的”,因为所述数据可在确定性等待时间下提供至并行处理子系统312。在本发明的其他实施例中,存储于系统存储器304中的纹理数据被视为“非常驻的”,因为所述数据不可在合理等待时间下提供至并行处理子系统312。需要合理等待时间来支持交互帧速率。

系统存储器304还包括装置驱动器322,装置驱动器322经配置以将指定数据(例如,小中见大贴图)的位置的指令流和程序指令提供至并行处理子系统312。所述程序指令和数据由软件应用程序产生且可存储于系统存储器304或系统300的其他装置内的存储器中。装置驱动器322由CPU 302执行以基于并行处理子系统312的特定能力来转译供并行处理子系统312执行的指令。指令可由应用程序接口(API)指定,所述应用程序接口可为常规图形API,例如,Direct3D或OpenGL。

存储器桥305(其可为(例如)北桥芯片)经由总线或其他通信路径306(例如,超传输链路(HyperTransport link))而连接至I/O(输入/输出)桥307。I/O桥307(其可为(例如)南桥芯片)从一个或一个以上用户输入装置308(例如,键盘、鼠标)接收用户输入,且经由路径306和存储器桥305将输入转发至CPU 302。并行处理子系统312经由总线或其他通信路径313(例如,PCI Express、加速图形端口或超传输链路)而耦合至存储器桥305;在一个实施例中,并行处理子系统312为将像素传递至显示装置310(例如,基于常规CRT或LCD的监视器)的图形子系统。系统盘314也连接至I/O桥307。一些小中见大贴图(尤其是需要更多存储空间的高分辨率级别)存储于高等待时间存储装置中,诸如,系统盘314或一个远程服务器、CD驱动器、DVD驱动器,或其类似者。在需要时将这些小中见大贴图(例如,非常驻小中见大贴图335)载入于较低等待时间存储器存储装置中以使其变成在交互渲染期间可由并行处理子系统312存取的常驻小中见大贴图。

开关316在I/O桥307与其他组件(例如,网络适配器318和各种附加卡320和321)之间提供连接。其他组件(未明确展示)(包括USB或其他端口连接、CD驱动器、DVD驱动器、胶片记录装置,和其类似者)也可连接至I/O桥307。将图3中的各种组件互连的通信路径可使用任何合适协议(例如,PCI(外围组件互连)、PCI Express(PCI-E)、AGP(加速图形端口)、超传输,或任何其他总线或点对点通信协议)来实施,且不同装置之间的连接可使用此项技术中已知的不同协议。

并行处理子系统312的实施例展示于图4中。并行处理子系统312包括一个或一个以上并行处理单元(PPU)402,其每一者耦合至本地并行处理(PP)存储器404。一般来说,并行处理子系统包括U个PPU,其中U≥1。(此处,相似对象的多个实例是用识别对象的参考数字和在需要时用识别实例的括弧中的数字来表示。)PPU 402和PP存储器404可(例如)使用一个或一个以上集成电路装置(例如,可编程处理器、专用集成电路(ASIC)和存储器装置)来实施。

如针对PPU 402(0)所详细展示,每一PPU 402包括经由通信路径313与系统300的剩余部分通信的主机接口406,通信路径313连接至存储器桥305(或,在一个替代实施例中,直接连接至CPU 302)。在一个实施例中,通信路径313为PCI-E链路,其中如此项技术已知,将专用传输巷分配给每一PPU 402。也可使用其他通信路径。主机接口406产生供在通信路径313上传输的包(或其他信号),且也从通信路径313接收所有传入包(或其他信号)且将其引导至PPU 402的适当组件。例如,与处理任务有关的命令可被引导至前端单元412,而与存储器操作(例如,从PP存储器404读取数据或将数据写入至PP存储器404)有关的命令可被引导至存储器接口414。主机接口406、前端单元412和存储器接口414可为一般常规设计,且省略详细描述,因为其对本发明而言并非关键的。

每一PPU 402有利地实施高度并行处理器。如针对PPU 402(0)所详细展示,PPU 402包括C个核心408,其中C≥1。每一处理核心408能够同时执行大量(例如,几十或几百)线程,其中每一线程为程序的实例;在下文描述多线程处理核心408的一个实施例。核心408经由工作分配单元410接收待执行的处理任务,工作分配单元410从前端单元412接收界定处理任务的命令。工作分配单元410可实施用于分配工作的各种算法。例如,在一个实施例中,工作分配单元410从每一核心408接收“就绪”信号,指示所述核心是否具有足够的资源来接受新的处理任务。当新的处理任务到达时,工作分配单元410将任务指派给宣告就绪信号的核心408;如果没有核心408宣告就绪信号,那么工作分配单元410保留新的处理任务,直到就绪信号由核心408宣告为止。所属领域的技术人员将认识到,也可使用其他算法,且工作分配单元410分配传入的处理任务的特定方式对于本发明而言并非关键的。

核心408与存储器接口414通信以从各种外部存储器装置读取数据或将数据写入至各种外部存储器装置。在一个实施例中,存储器接口414包括适合于与本地PP存储器404通信的接口和至主机接口406的连接,藉此使核心能够与系统存储器304或不在PPU402本地的其他存储器(包括系统盘314)通信。存储器接口414可为一般常规设计,且省略详细描述。

可对核心408进行编程以执行与各种应用有关的处理任务,包括但不限于线性和非线性数据变换、视频及/或音频数据的过滤、建模操作(例如,应用物理定律来判定物体的位置、速度和其他属性)、图形渲染操作(例如,顶点着色器、几何着色器及/或像素着色器程序),等等。PPU 402可将数据(例如,常驻小中见大贴图425)从系统存储器304及/或本地PP存储器404转移至内部(芯片上)存储器中、处理所述数据,和将结果数据写回至系统存储器304及/或本地PP存储器404,其中此数据可由其他系统组件(包括(例如)CPU 302或另一并行处理子系统312)存取。

再次参看图3,在一些实施例中,并行处理子系统312中的一些或所有PPU 402为具有渲染管线的图形处理器,所述图形处理器可经配置以执行与以下各者有关的各种任务:从经由存储器桥305和总线313由CPU 302及/或系统存储器304供应的图形数据产生像素数据、与本地PP存储器404(其可用作图形存储器,包括(例如)常规帧缓冲器和小中见大贴图)交互以存储和更新像素数据、将像素数据传递至显示装置310,和其类似者。在一些实施例中,PP子系统312可包括当作图形处理器操作的一个或一个以上PPU 402和用于通用计算的一个或一个以上其他PPU 402。PPU可为相同或不同的,且每一PPU可具有其自身专用PP存储器装置或没有专用PP存储器装置。

在操作中,CPU 302为系统300的主处理器,控制和协调其他系统组件的操作。尤其是,CPU 302发出控制PPU 402的操作的命令。在一些实施例中,CPU 302将每一PPU402的命令流写入至推式缓冲器(未明确展示于图3中),推式缓冲器可位于系统存储器304、PP存储器404或CPU 302和PPU 402均可存取的另一存储位置中。PPU 402从推式缓冲器读取命令流且与CUP 302的操作异步地执行命令。

应了解,本文所展示的系统为说明性的,且变化和修改为可能的。可按需要修改连接拓扑(包括桥的数目和配置)。例如,在一些实施例中,系统存储器304直接而非经由桥而连接至CPU 302,且其他装置经由存储器桥305和CUP 302与系统存储器304通信。在其他替代拓扑中,并行处理子系统312连接至I/O桥307或直接连接至CPU 302,而非连接至存储器桥305。在又一些实施例中,I/O桥307和存储器桥305可集成至单个芯片中。本文所展示的特定组件为可选的;例如,可支持任何数目的附加卡或外围装置。在一些实施例中,除去开关316,且网络适配器318和附加卡320、321直接连接至I/O桥307。

也可改变PPU 402至系统300的剩余部分的连接。在一些实施例中,将PP系统312实施为可插入于系统300的扩充插槽中的附加卡。在其他实施例中,PPU 402可与总线桥(例如,存储器桥305或I/O桥307)集成在单个芯片上。在又一些实施例中,PPU 402的一些或所有元件可与CPU 302集成在单个芯片上。

PPU可具备任何数量的本地PP存储器,包括无本地存储器,且可以任何组合来使用本地存储器和系统存储器。例如,在统一存储器架构(UMA)实施例中,PPU 402可为图形处理器;在这些实施例中,提供很少专用图形(PP)存储器或不提供专用图形(PP)存储器,且PPU 402将独占地或几乎独占地使用系统存储器来存储常驻小中见大贴图325。在UMA实施例中,PPU可集成至桥芯片或处理器芯片中或提供为具有(例如)经由桥芯片将PPU连接至系统存储器的高速链路(例如,PCI-E)的离散芯片。

如上文所述,并行处理子系统中可包括任何数目的PPU。例如,多个PPU可提供于单个附加卡上,或多个附加卡可连接至通信路径313,或所述PPU中的一者或一者以上可集成至桥芯片中。多PPU系统中的PPU可彼此相同或不同;例如,不同PPU可具有不同数目的核心、不同数量的本地PP存储器,等等。在存在多个PPU的情况下,其可并行地操作以处理数据,其处理量高于单个PPU情况下所可能具有的处理量。

并入有一个或一个以上PPU的系统可以各种配置和形状因数来实施,包括桌上型、膝上型或掌上型个人计算机、服务器、工作站、游戏控制台、嵌入式系统,等等。

核心概述

图5为根据本发明的一个或一个以上方面的图4的并行处理子系统312的并行处理单元420的框图。PPU 402包括经配置以并行地执行大量线程的核心408(或多个核心408),其中术语“线程”指代对一组特定输入数据执行的特定程序的实例。在一些实施例中,使用单指令多数据(SIMD)指令发出技术来支持大量线程的并行执行,而未提供多个独立指令单元。

在一个实施例中,每一核心408包括P(例如,8、16等等)个并行处理引擎502的阵列,所述并行处理引擎502经配置以从单个指令单元512接收SIMD指令。每一处理引擎502有利地包括一组相同的功能单元(例如,算术逻辑单元,等等)。功能单元可经管线化,如此项技术所知,从而允许在已完成前一指令之前发出新的指令。可提供功能单元的任何组合。在一个实施例中,功能单元支持多种运算,包括整数和浮点数算术(例如,加法和乘法)、比较运算、布尔逻辑运算(AND、OR、XOR)、移位,和各种代数函数(例如,平面内插、三角函数、指数函数和对数函数,等等)的计算;且可使用相同功能单元硬件来执行不同操作。

每一处理引擎502使用本地寄存器文件(LRF)504中的空间来存储其本地输入数据、中间结果,和其类似者。在一个实施例中,将本地寄存器文件504物理上或逻辑上分成P个传输巷,每一传输巷具有某数目的条目(其中每一条目可存储(例如)32-位字)。向每一处理引擎502指派一个传输巷,且不同传输巷中的相应条目可填充有执行相同程序的不同线程的数据以促进SIMD执行。在一些实施例中,每一处理引擎502可仅存取向其指派的传输巷中的LRF条目。本地寄存器文件504中条目的总数有利地足够大以支持每处理引擎502多个同时发生的线程。

每一处理引擎502也可以存取在核心408中所有处理引擎502之间共享的芯片上共享存储器506。共享存储器506可如所要般大,且在一些实施例中,任何处理引擎502可以同样低的等待时间(例如,与存取本地寄存器文件504相当)来从共享存储器506中的任何位置读取数据或将数据写入至共享存储器506中的任何位置。在一些实施例中,共享存储器506实施为共享寄存器文件;在其他实施例中,可使用共享高速缓冲存储器来实施共享存储器506。

除共享存储器506外,一些实施例也提供额外芯片上参数存储器及/或高速缓冲存储器508,其可实施(例如)为常规RAM或高速缓冲存储器。参数存储器/高速缓冲存储器508可用于(例如)保留多个线程可能需要的状态参数及/或其他数据(例如,各种常数)。处理引擎502也可以经由存储器接口414存取芯片外“全局”存储器520,其可包括(例如)PP存储器404及/或系统存储器304,其中系统存储器304可经由上述主机接口406通过存储器接口414存取。

应理解,可将在PPU 402外部的任何存储器用作全局存储器520。如图5所示,全局存储器520包括PP存储器404、系统存储器304和系统盘314。如先前所描述,存储于全局存储器520中的纹理数据(例如,常驻小中见大贴图325和425)被视为常驻纹理数据,且存储于全局存储器520中的其他纹理数据(例如,非常驻小中见人贴图335)被视为非常驻纹理数据。在将非常驻纹理数据从系统盘314复制到系统存储器304或PP存储器404时,纹理数据变成常驻纹理数据。在图3的CPU 302上执行的驱动程序可用于指定哪些小中见大贴图为常驻小中见大贴图且哪些小中见大贴图为非常驻的。在本发明的其他实施例中,小中见大贴图是常驻还是非常驻是基于纹素地址的至少一部分来判定的。处理引擎502可经由允许任何处理引擎502存取全局存储器520的互连(未明确展示)而耦合至存储器接口414。

在一个实施例中,每一处理引擎502为多线程的且可同时执行高达某数目G(例如,24)的线程,例如,通过将与每一线程相关联的当前状态信息维持在本地寄存器文件504中其被指派的传输巷的不同部分中。处理引擎502有利地设计成从一个线程快速地切换至另一个线程,使得可以任何顺序来发出来自不同线程的指令,而无效率损失。

指令单元512经配置以使得在任何给定处理循环内将相同指令(INSTR)发出至所有P个处理引擎502。因此,在单个时钟循环的级别下,核心408实施P-路SIMD微架构。由于每一处理引擎502也为多线程的,同时支持高达G个线程,所以在此实施例中,核心408可具有同时执行的高达P*G个线程。例如,如果P=16且G=24,那么核心408支持高达584个同时发生的线程。

因为指令单元512将相同指令并行地发出至所有P个处理引擎502,所以核心408有利地用于处理在“SIMD线程群组”里的线程。如本文所使用,“SIMD线程群组”指代对不同输入数据执行相同程序的高达P个线程的群组,其中向每一处理引擎502指派所述群组中的一个线程。SIMD线程群组可包括少于P个的线程,在此种情况下,在处理所述SIMD线程群组的循环期间,处理引擎502中的一些将为闲置的。SIMD线程群组也可包括多于P个的线程,在此种情况下,处理将在连续的时钟循环内发生。由于每一处理引擎502可同时支持高达G个线程,所以允许在任何给定时间时在核心408中可执行高达G个SIMD线程群组。

在每一时钟循环内,将一个指令发出至构成G个SIMD线程群组中的所选一者的所有P个线程。为了指示哪一线程当前为活动的,可随同指令而包括相关联线程的“活动掩码(active mask)”。处理引擎502将活动掩码用作上下文识别符(例如)以判定在执行指令时应使用本地寄存器文件504中其被指定的传输巷的哪部分。因此,在给定循环中,核心408中的所有处理引擎502在名义上针对相同SIMD线程群组中的不同线程执行相同指令。(在一些情况下,SIMD线程群组中的一些线程可能暂时闲置,(例如)归因于条件或断言指令、程序中的分支处的分歧,或其类似者。)

经由核心接口503来有利地控制核心408的操作。在一些实施例中,核心接口503从工作分配单元410接收待处理的数据(例如,图元数据、顶点数据,及/或像素数据)和界定将如何处理数据(例如,将执行哪个程序)的状态参数和命令。线程或SIMD线程群组可由其他线程或由固定功能单元(例如,三角光栅化器)来运行。核心接口503可将待处理的数据载入至共享存储器506中且将参数载入至参数存储器508中。核心接口503还初始化指令单元512中的每一新线程或SIMD线程群组,接着发信号通知指令单元512开始执行线程。当线程或SIMD线程群组的执行完成时,核心408有利地通知核心接口503。核心接口503可接着起始其他处理,例如,从共享存储器506检索输出数据及/或使核心408准备好执行额外线程或SIMD线程群组。

应了解,本文所描述的核心架构为说明性的,且变化和修改为可能的。可包括任何数目的处理引擎。在一些实施例中,每一处理引擎具有其自身本地寄存器文件,且每线程本地寄存器文件条目的分配可为固定或可按需要配置。另外,虽然仅展示了一个核心408,但是PPU 402可包括任何数目的核心408,所述核心408有利地具有彼此相同的设计使得执行行为并不取决于哪一核心408接收特定处理任务。每一核心408有利地独立于其他核心408来操作且具有其自身的处理引擎、共享存储器,等等。

线程阵列和协作线程阵列

在一些实施例中,图5的多线程处理核心408可使用线程阵列来执行通用计算。如本文所使用,“线程阵列”为由对输入数据集同时执行相同程序以产生输出数据集的许多(n0)线程组成的群组。向线程阵列中的每一线程指派在线程执行期间线程可存取的唯一线程识别符(“线程ID”)。线程ID控制线程处理行为的各个方面。例如,线程ID可用于判定线程将处理输入数据集的哪部分及/或判定线程将产生或写入输出数据集的哪部分。

在一些实施例中,线程阵列为“协作”线程阵列或CTA。在其他类型的线程阵列下,CTA为对输入数据集同时执行相同程序(本文称作“CTA程序”)以产生输出数据集的多个线程的群组。在CTA中,线程可通过以取决于线程ID的方式彼此共享数据而协作。例如,在CTA中,数据可由一个线程产生,且由另一个线程消费。在一些实施例中,可在将共享数据时将同步指令插入至CTA程序码中,以确保在消费线程试图存取数据之前产生线程实际上已产生所述数据。CTA的线程之间的数据共享(如果有)的程度由CTA程序判定;因此,应理解,在使用CTA的特定应用中,CTA的线程实际上可能或可能不彼此共享数据,这取决于CTA程序。

在一些实施例中,CTA中的线程与相同CTA中的其他线程使用图5的共享存储器506来共享输入数据及/或中间结果。例如,CTA程序可能包括计算特定数据将写入至共享存储器506中的地址的指令,所述地址为线程ID的函数。每一线程使用其自身线程ID来计算所述函数且写入至相应位置。有利地界定地址函数,使得不同线程写入至不同位置;只要函数为确定性的,任何线程所写入至的位置就为可预测的。CTA程序也可包括计算数据将读取自的共享存储器506中的地址的指令,所述地址为线程ID的函数。通过界定适合函数和提供同步技术,可以可预测方式由CTA的一个线程将数据写入至共享存储器506中的给定位置和由相同CTA的不同线程从所述位置读取数据。因此,可支持线程之间的任何所要型式的数据共享,且CTA中的任何线程可与相同CTA中的任何其他线程共享数据。

CTA(或其他类型的线程阵列)可有利地用于执行将其自身提供给数据并行分解的计算。如本文所使用,“数据并行分解”包括通过对输入数据并行地执行相同算法多次以产生输出数据来解决计算问题的任何情形;例如,数据并行分解的一个普通实例涉及将相同处理算法应用于输入数据集的不同部分以便产生输出数据集的不同部分。受数据并行分解作用的问题的实例包括矩阵代数、在任何数目的维度上的线性及/或非线性变换(例如,快速傅立叶变换)和各种过滤算法(包括在任何数目的维度上的卷积过滤、在多个维度上的可分过滤,等等)。待应用于输入数据集的每一部分的处理算法是在CTA程序中指定,且CTA中的每一线程对输入数据集的一个部分执行相同CTA程序。CTA程序可使用各种数学和逻辑运算来实施算法,且程序可包括条件或分支执行路径和直接及/或间接存储器存取。如先前结合图2B所描述,可使用断言或条件指令来配置用于处理图形数据的着色器程序以包括条件执行路径。例如,基于所计算出的增量LOD值,判定断言或条件码,其促使着色器程序执行用于执行外推以产生经过滤纹素值的指令。对于断言或条件码的另一值而言,着色器程序执行用于执行常规内插以产生经过滤纹素值的指令。

在一个实施例中,在图3的CPU 302上执行的驱动程序将界定CTA的命令写入至存储器(例如,系统存储器304)中的推式缓冲器,PPU 402从所述推式缓冲器读取命令。命令有利地与状态参数相关联,诸如,CTA中线程的数目、待使用CTA来处理的输入数据集在全局存储器520中的位置、对于纹素而言哪些小中见大贴图为常驻的、待执行的CTA程序在全局存储器520中的位置,以及输出数据将写入至的全局存储器520中的位置。状态参数可与命令一起写入至推式缓冲器。响应于命令,核心接口503将状态参数载入至核心408中(例如,至参数存储器508中),接着开始运行线程,直到已运行完在CTA参数中指定的数目的线程为止。在一个实施例中,在运行线程时,核心接口503将线程ID顺序地指派给线程。更一般地说,由于CTA中的所有线程是在相同核心408中执行相同程序,所以可向任何线程指派任何线程ID,只要每一有效线程ID仅指派给一个线程。可将任何唯一识别符(包括但不限于数字识别符)用作线程ID。在一个实施例中,如果CTA包括某数目(n0)的线程,那么线程ID为从0到n0-1的简单顺序(一维)指数值。在其他实施例中,可使用多维标定指数方案。请注意,只要数据共享是参考线程ID来控制的,那么线程向处理引擎的特定指派将不影响CTA执行的结果。因此,CTA程序可独立于其将在其上执行的特定硬件。

图形管线架构

图6A为根据本发明的一个或一个以上方面的图形处理管线600的概念图。图4的PPU 402可经配置以形成图形处理管线600。例如,核心408可经配置以执行顶点处理单元644、几何处理单元648和片段处理单元660的功能。数据组装器642、图元组装器646、光栅化器655和光栅操作单元665的功能也可由核心408执行或可由主机接口406执行。

数据组装器642收集高阶表面、图元和其类似者的顶点数据,且将顶点数据输出至顶点处理单元644。顶点处理单元644为经配置以执行顶点着色器程序以如顶点着色器程序所指定般地变换顶点数据的可编程执行单元。例如,可对顶点处理单元644进行编程以将顶点数据从基于物体的坐标表示(物体空间)变换到交替基础的坐标系统(例如,自然空间或正规化装置坐标(NDC)空间)。顶点处理单元644可经由存储器接口414读取存储于PP存储器404中的数据以用于处理顶点数据。

图元组装器646从顶点处理单元644接收经处理的顶点数据且构造图形图元(例如,点、线、三角形,或其类似者)以供几何处理单元648进行处理。几何处理单元648为经配置以执行几何着色器程序以如几何着色器程序所指定般地变换从图元组装器646接收到的图形图元的可编程执行单元。例如,可对几何处理单元648进行编程以将图形图元细分成一个或一个以上新图形图元且计算用于光栅化新图形图元的参数,例如,平面方程式系数。几何处理单元648将所述参数和新图形图元输出至光栅化器655。几何处理单元648可经由存储器接口414读取存储于PP存储器404中的数据以用于处理几何数据。

光栅化器655扫描转换新图形图元且将片段和覆盖数据输出至片段处理单元660。片段处理单元660为经配置以执行片段着色器程序以如片段着色器程序所指定般地变换从光栅化器655接收到的片段的可编程执行单元。例如,可对片段处理单元660和纹理单元610进行编程以执行例如透视修正、纹理映射、小中见大贴图外推、着色、混和及其类似者的操作以产生输出至光栅操作单元665的经着色片段。也可对片段处理单元660和纹理单元610进行编程以执行纹理过滤操作,例如,双线性、三线性、各向异性和其类似者。

片段处理单元660可经由存储器接口414读取存储于PP存储器404中的数据以用于处理片段数据。存储器接口414产生对存储于图形存储器中的数据的读取请求且解压缩任何经压缩数据。光栅操作单元665为固定功能单元,其视情况地执行近平面和远平面裁剪和光栅操作(诸如,模板、z测试和其类似者),且将像素数据输出为存储于图形存储器中的经处理的图形数据。经处理的图形数据可存储于图形存储器中以供显示于显示装置310上。

纹理单元

图6B为根据本发明的一个或一个以上方面的图6A的纹理单元610的框图。纹理单元610包括LOD单元615、纹理采样器单元620、地址产生单元625和过滤器单元630。纹理单元610接收用于处理的片段数据,包括纹理贴图识别符和纹理贴图坐标,例如,s、t或其类似者。纹理贴图坐标由LOD单元615使用所属领域技术人员众所周知的的技术来处理以判定理想LOD(图2A和图2C的步骤200)。

应用程序将纹理过滤器中每一者的过滤器类型指定为纹理图像状态数据结构的成员。纹理过滤器包括现有技术所常见的纹理过滤器(放大和缩小)和两种新的纹理过滤器:外推放大和外推缩小。过滤器类型包括现有技术所常见的过滤器类型(最近邻者、线性、具有最近小中见大过滤的小中见大映射最近邻者、具有线性小中见大过滤的小中见大映射最近邻者、具有最近小中见大过滤的小中见大映射线性、具有线性小中见大过滤的小中见大映射线性,和透明黑色)。透明黑色过滤器类型不进行过滤且仅返回R=G=B=A=0,其在断言值或条件码促使着色器程序采取替代动作时为有用的。在OpenGL图形API(应用程序接口)中,这些过滤器类型称作GL_NEAREST、GL_LINEAR、GL_NEAREST_MIPMAP_NEAREST、GL_NEAREST_MIPMAP_LINEAR、GL_LINEAR_MIPMAP_NEAREST、GL_LINEAR_MIPMAP_LINEAR。可经指定以改善外推放大和外推缩小过滤器的图像质量的额外新过滤器类型为:外推小中见大映射最近邻者和外推小中见大映射线性。

装置驱动器322向LOD单元615提供判定LOD是对应于常驻小中见大贴图还是非常驻小中见大贴图所需的信息。此信息为存储于纹理图像数据结构中且提供至LOD单元615的外推阈值LOD。在本发明的优选实施例中,外推阈值LOD为存储于纹理图像数据结构中的实数,其表示细节级别(包括小数位),其中在所述细节级别以下选择外推放大或外推缩小过滤。外推阈值LOD允许驱动器322在新小中见大贴图层级从非常驻小中见大贴图转换到常驻小中见大贴图时从外推过滤平滑地过渡到内插过滤而非突变到新的常驻小中见大贴图分辨率。在本发明的替代实施例中,外推阈值LOD为表示存储于纹理图像数据结构中的最低LOD常驻小中见大贴图层级的整数值。

LOD单元615通过将理想LOD与外推阈值LOD比较以选择哪个纹理过滤器(例如,放大、缩小、外推放大,或外推缩小)将由纹理采样器单元620用于采样和过滤纹理图像来执行(图2A、图2B和图2C的)步骤210。LOD单元615将纹理过滤器、所选纹理过滤器类型、理想LOD、纹理贴图坐标和现有技术所常见的其他采样参数传递至纹理采样器单元620。另外,LOD单元615将纹理过滤器类型和纹理贴图识别符输出至地址产生单元625。

如果LOD单元615选择为外推缩小或外推放大纹理过滤器指定的纹理过滤器类型,那么LOD单元615经由(图4的)主机接口406通知(图3的)装置驱动器322应用程序已请求对来自非常驻小中见大贴图层级的纹素的过滤并指定所请求的小中见大贴图层级。如结合图7所描述,装置驱动器322起始非常驻小中见大贴图至常驻小中见大贴图的转换。

如果所选纹理过滤器为外推放大或外推缩小,那么纹理采样器单元620通过计算理想LOD与外推阈值LOD之间的差异来计算增量LOD(图2A和图2C的步骤235)。纹理采样器单元620接着根据增量LOD来计算外推权重。

在本发明的一个实施例中,纹理采样器单元620包括含有按递减LOD次序(正至负)存储的(LOD,权重)对的权重表627。如果增量LOD小于权重表627中的最低LOD值,那么将来自所述表中具有最低LOD的条目的权重值选作外推权重。如果增量LOD大于权重表627中的最大LOD值,那么将来自所述表中具有最高LOD的条目的权重值选作外推权重。如果增量LOD等于权重表627中一条目的LOD值,那么将所述条目的权重值选作外推权重。在本发明的一些实施例中,如果增量LOD是在权重表627的两个条目之间,那么使用所述两个最近权重值经由线性内插来计算外推权重。在本发明的其他实施例中,如果增量LOD是在权重表627中的两个相邻条目的LOD值之间,那么使用Catmull-Rom三次样条或所属领域技术人员已知的任何其他内插样条来计算外推权重。

在本发明的一些实施例中,权重表627的内容为静态的。在本发明的其他实施例中,装置驱动器322根据由应用程序指定的外推过滤器而载入权重表627。在本发明的其他实施例中,装置驱动器322将权重表627(或关于外推放大和外推缩小的单独权重表)载入至纹理采样器数据结构中。纹理采样器数据结构可存储于PPU 402内的寄存器中,或纹理采样数据结构可存储于PP存储器404中且高速缓存于PPU 402内。

如果理想LOD对应于常驻小中见大贴图层级,那么纹理采样器单元620选择精细(且必要时,粗糙)小中见大贴图层级,且使用所选纹理过滤器类型、使用所属领域技术人员已知的技术来对所选小中见大贴图层级上的像素覆盖区采样以产生内插纹素值。LOD权重对应于理想LOD的小数部分。如果理想LOD对应于非常驻小中见大贴图层级,那么纹理采样器单元620截断外推阈值(其通常为最低LOD常驻小中见大贴图层级和最高分辨率常驻小中见大贴图层级)以产生外推阈值的整数部分。所述整数部分为精细小中见大贴图层级LOD(LOD精细),且精细小中见大贴图层级+1(其通常为次低LOD常驻小中见大贴图层级和次高分辨率常驻小中见大贴图层级)为粗糙小中见大贴图层级LOD(LOD粗糙)。

当过滤器类型为外推小中见大映射最近邻者时,纹理采样器单元620对纹理空间中的像素覆盖区进行采样,将在小中见大层级LOD精细和LOD粗糙(对应于最低常驻小中见大贴图和最低常驻小中见大贴图+1)上的最近邻者样本输出至地址产生单元625。当过滤器类型为外推小中见大映射线性时,纹理采样器单元620对纹理空间中的像素覆盖区进行采样,将在小中见大层级LOD精细和LOD粗糙(对应于最低常驻小中见大贴图和最低常驻小中见大贴图+1)上的样本输出至地址产生单元625。当过滤器类型为外推小中见大映射线性或外推小中见大映射最近邻者时,纹理采样器单元620将1+外推权重用作用于采样LOD精细小中见大层级的LOD权重且将负外推权重用作用于采样LOD粗糙小中见大层级的LOD权重。

所选过滤器类型、LOD权重、各向异性权重、精细小中见大贴图LOD层级(LOD精细)、粗糙小中见大贴图LOD层级(LOD粗糙)和样本(对应于纹理贴图坐标和所选过滤器类型)由纹理采样器单元620输出至地址产生单元625。地址产生单元625根据所选过滤器类型使用所属领域技术人员已知的技术来为每一纹素产生uv权重(双线性或最近邻者)。如果样本的过滤器类型为外推小中见大映射线性,那么地址产生单元625为每一样本内的纹素计算双线性(u,v)权重。如果样本的过滤器类型为外推小中见大映射最近邻者,那么地址产生单元625为每一样本内的纹素计算最近邻者权重。地址产生单元625使用样本、纹理贴图识别符、LOD精细和LOD粗糙来判定用以从常驻小中见大贴图读取纹素的地址。当使用虚拟存储器寻址时,可由存储器接口414执行额外地址转换以判定读取纹素所需的物理地址。

在本发明的一个实施例中,用于缩放从小中见大贴图读取的纹素的每一纹素权重为纹素的小中见大层级的LOD权重、覆盖区的各向异性过滤器权重(各向异性权重)和uv权重的组合。地址产生单元625通过将LOD权重乘以各向异性权重乘以纹素uv权重来计算纹素权重,且将结果向下传递至纹理过滤器单元630。将纹素传回至过滤器单元630且使用由地址产生单元625计算的纹素权重来对其缩放。

在本发明的过滤器权重总和为1的实施例中,过滤器单元630将经缩放纹素值累积至纹理色彩累积器寄存器中。当最后一个像素的最后一个纹素已经加权和累积时,纹理单元610将纹理色彩累积器寄存器的内容返回至片段处理单元660。在本发明的过滤器权重总和不为1的实施例中,过滤器单元630将经缩放纹素值累积至纹理色彩累积器寄存器中且将纹素权重累积至纹理权重累积寄存器中。当最后一个纹素已经加权和累积时,过滤器单元630用权重累积器寄存器的内容除色彩累积器寄存器的内容,且将所得经过滤纹理值返回至片段处理单元660。

纹理单元610可经配置以用可由像素着色器程序有利地存取以选择条件执行路径的方式来返回每像素状态信息。本发明的一个实施例中,纹理单元610可以每像素为基础地传达将像素纹理化的动作是否要求纹理单元610使用外推过滤,且所得值设定可用于判定像素着色器程序中的后续分支行为的断言或条件码。着色器程序可有条件地处理具有来自相同纹理的额外纹理读取的非常驻小中见大贴图的纹素以执行三次方过滤,或发出来自其他纹理的纹理读取以增加综合细节,或执行其他操作。

图7为根据本发明的一个或一个以上方面的用于将非常驻小中见大贴图层级转换成常驻小中见大贴图层级的方法步骤的流程图。在步骤700中,装置驱动器322接收将非常驻小中见大贴图转换成常驻小中见大贴图的请求。在步骤710中,装置驱动器322起始非常驻小中见大贴图到可由纹理单元610存取的常驻存储器(诸如,PP存储器404)的复制。在步骤720中,装置驱动器322判定转换是否完成,也就是,小中见大贴图是否经复制,且如果不是,那么重复步骤720。在本发明的一些实施例中,资源管理器可指示最高分辨率常驻小中见大贴图层级何时已改变以确认非常驻小中见大贴图的复制完成。

一旦已复制小中见大贴图,那么在步骤730中,装置驱动器322更新外推阈值LOD。在本发明的一些实施例中,更新外推阈值使其等于最低常驻小中见大贴图层级的值。在本发明的其他实施例中,当非常驻小中见大贴图层级转换到常驻小中见大贴图层级时,外推阈值LOD在若干个帧中减小以从外推过滤平滑地过渡到内插过滤而非突变到新的常驻小中见大贴图分辨率。例如,为3.0的外推阈值LOD可连续减小0.1,直到达到等于最低常驻小中见大贴图层级的值2.0为止。在步骤740中,装置驱动器322判定外推阈值LOD的最终值是否已达到,且如果不是,那么重复步骤730。否则,在步骤750中,非常驻小中见大贴图层级到常驻小中见大贴图层级的转换完成。

当启用外推过滤且过滤所需的纹素来自非常驻小中见大贴图层级时,使用外推过滤产生的纹素提供看上去和理想小中见大层级与常驻小中见大层级之间的差异成比例地更锐化的改善图像。这传达与使用低分辨率小中见大贴图纹理数据代替高分辨率小中见大贴图纹理数据相比更适当的细节程度。并行处理子系统312经配置以当从非常驻存储器(例如,系统盘314、系统存储器304和其类似者)检索高分辨率小中见大贴图(例如,非常驻小中见大贴图325和335)时,并行地从常驻小中见大贴图外推细节以处理多个线程而产生外推纹理值。

本发明的一个实施例可实施为与计算机系统一起使用的程序产品。所述程序产品的程序界定实施例的功能(包括本文所述的方法)且可包含于多种计算机可读存储媒体上。说明性计算机可读存储媒体包括(但不限于):(i)非可写存储媒体(例如,计算机内的只读存储器装置(例如,可由CD-ROM驱动器读取的CD-ROM盘、快闪存储器、ROM芯片或任何类型的固态非易失性半导体存储器)),在其上可永久地存储信息;和(ii)可写存储媒体(例如,软盘驱动器内的软盘或硬盘驱动器或任何类型的固态随机存取半导体存储器),在其上存储可修改的信息。

在上文已参考特定实施例来描述本发明。然而,所属领域技术人员将理解,在不脱离所附权利要求书中所陈述的本发明的较广精神和范围的情况下可对其进行各种修改和改变。因此,以说明性而非限制性的意义来看待前面的描述和图式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号