使用多图形处理单元的改进的图形去阶梯的制作方法

文档序号:6440992阅读:121来源:国知局
专利名称:使用多图形处理单元的改进的图形去阶梯的制作方法
技术领域
本发明总体上涉及图形处理系统。特别地,本发明涉及在实现多图形处理单元 (GPU)的图形处理系统中用于执行图形去阶梯操作的方法。
背景技术
已知的用于增加图形处理系统的处理能力的方法是并行地操作多图形处理单元 (GPU)或者视频处理单元(VPU),其中每个处理单元与其它的单元在共用总线上进行通信。 在此,词语GPU和VPU可互换使用。多GPU系统的一个优点是它可以补充现有微处理技术以实现增强的性能,因此提供了更便宜的替代方案以投资新的、更快的GPU。多GPU系统通过在多图形元件上并行地执行计算实现增强的性能。使用图形处理系统的一个例子是利用多GPU以提供提高的性能,在共有的、 同时待审的U. S.专利申请No. 11/140, 156(公开号20060267991)中描述,标题是 “Antialiasing Method and System”,发明人为 Preetham 等人,于 2005 年 5 月 27 日提交, 这里引入参考其全部内容。前述的申请部分地描述了一种图形处理系统,其中多GPU被并行地操作以在相同的图形画面上执行图形去阶梯。阶梯是在所显示的画面中由绘制过程的不希望的缺陷的出现所造成的公知效应。 边缘阶梯是一种特定类型的阶梯,其在应当看上去平滑的边缘造成阶梯。现有的用于减轻边缘阶梯效应的图形去阶梯技术是多采样技术。多采样技术通过获得被用于在像素之间生成中间点的像素的多个采样解决了边缘阶梯。采样(或者“子像素”)被平均以确定所显示的像素颜色值。所显示的在多采样图像中的边缘具有柔和化的阶梯效应。前述的U. S.专利申请No. 11/140, 156描述了一种图形处理系统,其中两个GPU分别对相同的画面应用不同的多采样模式。即每个GPU使用不同的采样位置用于在相同的画面中采样和绘制像素。然后这种采样/绘制的结果在总线上(例如PCI-Express总线)从一个GPU被传送到另一个GPU,其结果被混合以生成将被显示的画面。最终结果是将被显示的画面的图形去阶梯采样因子被有效地加倍了。例如,如果每个GPU执行2X多采样,将被显示的画面包括4X多采样。关于上述方法,其中结果在总线上从一个GPU被传送到另一个GPU的步骤可能由于在连接这两个GPU的总线上可获得的带宽量有限而造成瓶颈。例如,在其中总线是PCI Express (PCIE)总线的实施例中,带宽可以被限制于大约I千兆比特每秒(Gb/sec)。然而, 在执行该方法的系统中在总线上传送的数据量是非常大的,特别是当将被显示的画面是由大量像素组成的高解析率画面时。此外,上述方法本身是低效率的,因为尽管基于多采样的图形去阶梯是一种用于边缘增强的技术,但在两个GPU之间传送的大量数据与边缘像素完全无关。那么想要的是一种用于在使用多GPU的图形处理系统中执行图形去阶梯的改进的方法和设备。改进的方法和设备应该减少在多个GPU之间所传送的数据量和/或提高这种数据传送的效率。改进了的方法和设备应该还提供区分与边缘像素相关联的数据和与边缘数据不相关联的数据的手段。

发明内容
本发明提供了一种用于在使用多GPU的图形处理系统中执行图形去阶梯的改进了的方法和设备。改进了的方法和设备减少了在多GPU之间所传送的数据量并且提高了这种数据传送的效率。本发明还提供了一种区分在所绘制的图像中的边缘和非边缘像素的手段。一种根据本发明的特别实施例的方法可以被用于在包括第一 GPU和第二 GPU的系统中执行基于多采样的图形去阶梯。该方法包括在第一 GPU中使用第一多采样模式绘制画面的第一版本,在第二 GPU中使用第二多采样模式绘制该画面的第二版本。然后边缘像素在该画面的第二版本中被识别。然后在该画面的第一版本中的像素仅与那些在该画面的第二版本中的已经被识别为边缘像素的像素相结合以生成结合的画面。一种根据本发明的特别实施例的系统包括被配置为使用第一多采样模式绘制画面的第一版本的第一 GPU、被配置为使用第二多采样模式绘制画面的第二版本的第二 GPU 和连接第一 GPU和第二 GPU的总线。第二 GPU还被配置为识别在该画面的第二版本中的边缘像素并且仅把那些在该画面的第二版本中已经识别为边缘像素的像素通过总线传送到第一 GPU。第一 GPU还被配置为把在画面的第一版本中的像素与从第二 GPU传送的像素结合以生成结合的画面。一种根据本发明的特别实施例的方法可以被用于识别在由多个矩形块组成的绘制图像中的边缘像素,所述多个矩形块中的每个由多个像素组成。该方法包括访问数据以确定在多个矩形块中所选择的矩形块是否被完全压缩,识别所选择的矩形块为仅包括对应于确定所选择的矩形块完全压缩的非边缘像素,和识别所选择的矩形块为包括对应于确定所选择的矩形块未完全压缩的一个或多个非边缘像素。一种根据本发明的特别实施例的方法可以被用于在包括第一 GPU和第二 GPU的系统中执行基于多采样的图形去阶梯。该方法包括在第一 GPU中使用第一多采样模式绘制画面的第一版本和在第二 GPU中使用第二多采样模式绘制与画面的第二版本相关联的边缘像素。然后边缘像素从第二 GPU被传送到第一 GPU。然后从第二 GPU传送的边缘像素与在该画面的第一版本中的像素结合以生成结合的画面。本发明的其它特征和优点以及本发明的各实施例的结构和操作将在以下参考附图详细描述。需要注意的是本发明不限于这里所描述的特定实施例。这里呈现的这些实施例仅是为了说明的目的。对于本领域和相关领域的技术人员来说附加的实施例基于这里包含的指导是清楚的。


这里引入并作为说明书的一部分的附图和描述了本发明,还用于解释本发明的主旨并使本领域的技术人员能够实现和使用本发明。图I是在包括多GPU的图形处理系统中用于执行图形去阶梯的方法的流程图。图2是根据本发明的实施例的执行图形去阶梯的图形处理系统的框图。图3是根据本发明的实施例的在包括多GPU的图形处理系统中用于执行图形去阶梯的方法的流程图。图4是根据本发明的实施例的第一多采样模式的例子。图5是根据本发明的实施例的第二多采样模式的例子。图6是根据本发明的实施例的结合的第一和第二多采样模式的例子。图7是根据本发明的实施例的用于压缩多采样的图形去阶梯的颜色数据的示例性处理器和存储器配置。图8是根据本发明的实施例的用于部分压缩多采样的图形去阶梯颜色数据的指针格式的例子。图9是根据本发明的实施例的用于确定一个矩形块是否仅包含非边缘像素或者包含至少一个边缘像素的方法的流程图。图IOA和IOB分别是根据本发明的实施例对在2_采样边缘检测图形去阶梯缓冲器中像素的矩形块进行解析操作的应用。图11描述了可以被用于实现本发明的示例计算机系统。本发明的特征和优点从以下阐明的详细具体实施方式
并与附图结合将变得更加明显,其中相似的附图标记表示通篇中对应的元件。在附图中,相似的附图标记总体上表示相同、功能相似的和/或结构相似的元件。其中元件第一次出现的附图由在对应的附图标记中最左边的数字表示。
具体实施例方式A. 一种用于在包括多GPU的图形处理系统中执行图形去阶梯的方法图I的流程图100表示在包括多GPU的图形处理系统中执行图形去阶梯的方法。 在图I中,流程图的左手边代表由第一GPU执行的处理步骤,由“GPU O”表示,而右手边代表由第二 GPU执行的处理步骤,由“GPU I”表示。为了该例子的目的,假设每个GPU都具有到它自己的本地存储器的访问入口,用于缓冲诸如在绘制过程期间使用的采样数据的数据。现在将描述由GPU O执行的头三个步骤。首先,在步骤102,GPU O建立用于在所要绘制的画面中堆每个像素进行多采样的第一模式,其中该模式由“多采样模式A”表示。其次,在步骤106,GPU O绘制画面,其中绘制画面包括在GPU O的本地多采样图形去阶梯(AA) 缓冲器中存储对应于每个像素的多个采样。如在此所使用的,词组“存储采样”是指存储如颜色值等与每个采样相关联的数据。基于多采样模式A选择每个像素的多个采样位置。第三,在步骤110,GPU O把在AA缓冲器中存储的多个采样的每个集合解析为存储在GPU O的由“绘图缓冲器A”表示的本地绘图缓冲器中的单个采样。一种把多个采样解析成单个采样的方法需要在线性空间中平均多个样品点。除了使用由“多采样模式B”表示的多采样模式来绘制画面外,由GPUl执行的头三个处理步骤(步骤104、108和112)与由GPU O执行的头三个处理步骤并行地执行并且基本上相同,多个采样的集合被存储在位于GPU I的本地存储器中的AA缓冲器中,并且该画面被解析到由“绘图缓冲器B”表示的也位于GPU I的本地存储器中的绘图缓冲器中。在步骤114,GPU I把绘图缓冲器B的内容复制到由“临时缓冲器A”表示的GPU 0 的本地临时缓冲器。在步骤116,和GPU 0位于相同的图形卡上的合成器执行把在绘图缓冲器A中呈现的每个像素与在临时缓冲器A中呈现的对应像素线性混合以生成将被显示的画面。作为替代,这种线性混合可以由没有位于图像卡上但是GPU 0和GPUl都与之相通信的独立部件的合成器来执行。在步骤118,将被显示的画面被输出到显示装置。画面有效地把由每个单个GPU应用的多采样的数量加倍。关于上述的方法,步骤114(其中绘图缓冲器B的内容被复制到临时缓冲器A)可能由于在把GPU 0连接到GPU I的总线上可获得的带宽的数量有限而造成瓶颈。例如,在其中总线是PIC Express(PCIE)总线的实施例中,带宽可以被限制在大约I兆比特每秒(Gb/ sec)。然而,在执行流程图100的方法的系统中在总线上传送的数据的量是非常大的,特别是当将被显示的画面是由大量的像素组成的高解析率画面时。此外,上述的流程图100的方法本身是低效率的,因为尽管基于多采样的图形去阶梯是一种用于边缘增强的技术,在两个GPU之间传送的大量数据与边缘像素完全无关。以下描述一种用于在使用多GPU的图形处理系统中执行图形去阶梯的改进的方法和设备。改进的方法和设备减少了在多个GPU之间所传送的数据量和/或改进了这种数据传送的效率。改进了的方法和设备还提供了区别与边缘像素相关联的数据和与边缘数据不相关联的数据的手段。B.根据本发明的实施例的图形处理系统图2是根据本发明的实施例的使用多GPU执行图形去阶梯的示例图形处理系统 200的框图。图形处理系统200包括各种在主机计算机系统上执行并且与图形硬件单元、 如第一 GPU A208和第二 GPUB210交互以绘制用于输出到显示器230的画面的软件单元,如应用程序202、应用程序编程接口(API) 204和驱动程序206。图形硬件单元位于安装在主机计算机系统上的一个或多个图形卡上,尽管本发明不仅局限与此。现在将详细描述系统 200的各个单元。如在图2中所示,系统200包括应用程序202。应用程序202是需要图形处理能力的终端用户应用程序,如视频游戏应用程序。应用程序202使用API 204通信。在图形处理环境中多个API是可用的。API作为应用程序软件、如应用程序202和其上运行应用程序软件的图形硬件之间的中介而被开发。使用新的芯片集和甚至以增长的速度显现的全新的硬件技术,对于应用程序开发者来说考虑并且利用最新的硬件特征是困难的。特别是为每个可预知的硬件的集合编写应用程序变得不可能。API避免了应用程序变得太过对于硬件特定。应用程序可以把图形数据和命令以标准化的格式输出到API,而不是直接输出到硬件。可用的APl的例子包括Direetx 或者OpenGL aAPl204可以是用于运行图形应用程序的可用的API中的任意一种。API 204与驱动程序206相通信。驱动程序206通常由图形硬件的制造商编写的, 并且把从API接收的标准代码翻译成可被图形硬件理解的本机格式。驱动程序还接收输入以指导图形硬件的性能设置。例如,用户可以通过用户接口(UI)、如和驱动程序206—起被提供给用户的图形用户接口(GUI)提供输入。与这里描述的实施例特别相关的一个性能设置是图形硬件使用用于执行图形去阶梯的多采样因子。
图形硬件包括两个图形处理单元,GPU A 208和GPU B 210。在该实施例中,GPU A 208和GUP B 210是分别包括一个图形处理器和其它相关联硬件的图形卡,尽管本发明不仅局限于此。而是,如在此所使用的,词语GPU泛指任何装置、装置的集合或者被配置为执行图形处理任务的装置的子集(例如在集成电路芯片中的处理内核)。驱动器206发布命令和数据到GPU A 208和GPU B 210。GPU A208和GPU B 210 从驱动器206通过各自的环形缓冲器A 222和B 224接收命令和数据。这些命令指示GPU A 208和GPU B 210执行各种对数据的操作,从而最终产生用于输出到显示器230的绘制画面。如在图2中所示,GPU A 208和GPU B 210均具有到各自的本地图形存储器A 226和B 228的访问入口,用于执行这种操作。此外,驱动程序206、GPU A 208和GPU B 210均具有到共享存储器205的访问入口。GUP和共享存储器205之间的通信在PCI Express(PCIE) 总线234上被执行。此外,GPU A 208和GPU B 210彼此间可以使用点到点协议在PCIE总线234上直接通信。这里将更加详细地进行描述,由GPU A 208和GPU B 210在驱动程序206的指令下执行地操作包括基于多采样图形去阶梯地操作。根据这个操作,GPU A 208和GPU B 210 中的每个并行地处理将要显示的相同画面。特别地,GPU A 208和GPU B 210中的每个通过不同的多采样模式的各个应用程序绘制相同画面的不同版本,其中由驱动器206选择不同的多采样模式。在该实施例中,驱动器206可编程为指导GPU A 208和GPU B 210通过可选择的加倍因子执行多采样。还根据该基于多采样的图形去阶梯操作,由GPU B 210所执行的绘制过程得到的画面数据通过PCIE总线234被传送到GPU A 208。作为位于GPU A 208上的互连模块 (頂)212的部件的合成器操作用于经由线性混合把从GPU B 210传送的画面数据与由GUP A 208生成的画面数据相结合,以获得将要显示的最终画面。在将要被显示的画面中,多采样因子由GPU的数目有效地相乘。例如,如果每个GPU执行2X多采样,将被显示的画面包括4X多采样。这里将更加详细地进行描述,在PCIE总线234上传送由绘制过程产生的画面数据之前,GPU B 210首先在绘制画面中执行识别边缘像素和非边缘(或者“内部”)像素的操作。当画面数据被从GPU B210传送到GPU A 208时,与边缘像素相关联的采样数据被传送但是与非边缘像素相关联的采样数据不被传送。与非边缘像素相关联的采样数据可以被排除,因为这里描述的多采样操作被用于边缘增强,这样仅影响边缘像素的呈现。因此,在由 GPU B 210所绘制的画面中的非边缘像素将与在由GPU A 208所绘制的画面中的非边缘像素相同。因此,没有必要传送和结合与这些像素相关联的数据。上述把与边缘像素相关联的采样数据从GPU B 210传送到GPU A 208、但是排除了与非边缘像素相关联的采样数据的技术将在以下更加详细地描述。该技术是有益的,因为它可操作用于减少将要在PCIE总线234上传送的数据量,从而增加了传送操作的速度,使得该操作不会变成处理瓶颈。另外,通过减少将要在PCIE总线234上传送的数据量,其它共用相同总线的部件可使用更多带宽。需要注意的是,示例图形处理系统200已经通过例子的方式进行了描述,并且不试图限制本发明。基于这里提供的指导,本领域的技术人员应理解本发明可以在任何多GPU 彼此通信并且被用于执行图形去阶梯的系统中实现。该类型的各种系统详细地在共有的、同时待审的U. S.专利申请No. 11/140, 156中描述,其标题是“Antialiasing System and Method”,发明人为Preetham等,申请日为2005年5月27日,这里引入参考其全部内容。基于这里提供的指导,本领域的技术人员可以修改在该申请中描述的每个系统以执行这里描述的图形去阶梯技术。C.根据本发明的实施例的图形去阶梯方法图3是根据本发明的实施例的在使用多GPU的图形处理系统中用于执行图形去阶梯的方法300的流程图。将参考以上参考图2 描述的示例图形处理系统200描述方法300,尽管本发明不仅局限于此。在图3中,流程图的左手边表示由GPU A 208执行的处理步骤,而右手边表示由GPU B 210执行的处理步骤。现在将描述由GPU A 208执行的头四个处理步骤。在步骤302中,GPU A 208建立在将要绘制的画面中对每个像素进行多采样的第一模式,其中该模式由“多采样模式A”表示。图4表示可以用作多采样模式A的多采样模式400。多采样模式400用于对由12X12 个采样位置组成的像素进行2X多采样。在图4中,像素的中心被表示为固体黑框,而为2X 采样所选择的采样位置用斜线填充。本领域的技术人员应理解可以使用其它多种像素尺寸和采样位置。在步骤306,GPU A绘制画面,其中绘制画面包括把针对多采样图形去阶梯(AA)缓冲器中的每个像素所选择的采样存储到本地图形存储器A中。如在此所使用的,词组“存储采样”包括存储诸如与采样相关联的颜色数据等的数据。在步骤310,GPU A 208把存储在AA缓冲器中的多个采样的每个集合解析成由“绘图缓冲器A”表示的位于本地图形存储器A 226内的绘图缓冲器中的单个采样。一种用于把多个采样解析成单个采样的方法需要在线性空间中平均多个采样,尽管本发明不仅局限于此。该操作的更多细节在共有的、同时待审的U.S.专利申请No. 11/140,156中提供,标题是 “Antialiasing Method and System”,发明人为 Preetham,申请日为 2005 年 5 月 27 日,这里引入参考其全部内容。在步骤314,GPU A 208执行识别在绘图缓冲器A中所呈现的像素中哪些是边缘像素的操作。下面将参考图7-9,IOA和IOB详细描述用于执行这种操作的一种特定方法,尽管本发明不仅局限于该特定方法。该操作的输出是一个数据集合,这里称为“边缘数据掩码”,其被存储在本地图形存储器A 226中并且识别在绘图缓冲器A中存储的画面中哪些像素是边缘像素。如在此所使用的,词组“识别边缘像素”可以包括在一个像素接一个像素的基础上识别边缘像素或者识别包括至少一个边缘像素的像素的矩形方块或者“矩形块”。现在将描述由GPU B 210执行的头四个处理步骤。优选地,这头四个步骤基本上与由GPU A 208执行的头四个处理步骤并行地被执行。尽管本发明不仅局限于此。由GPU B 210执行的头三个处理步骤(步骤304、308和312)与由GPU A 208执行的头三个处理步骤(步骤302、306和310)基本上相同,除了使用由“采样模式B”表示的不同的多采样模式来绘制画面,对每个像素所选择的采样被存储在位于本地图形存储器 B 228内的AA缓冲器中,并且画面被解析到由“绘图缓冲器B”表示的绘图缓冲器其位于本地图形存储器B 228内。图5表示可以被用作多采样模式B的示例多采样模式500。多采样模式500用于对由12X 12个采样位置组成的像素进行2X多采样。在图5中,像素的中心被表示为实心的黑框,而为2X多采样所选择的采样位置用棋盘形图案填充。在步骤316,GPU B 210执行识别在绘图缓冲器B中呈现的哪些像素是边缘像素的操作。下面将参考图7-9,IOA和IOB详细描述用于执行这种操作的一种特别方法,尽管本发明不仅局限于该特别方法。该操作的输出是存储在本地图形存储器B 228中的边缘数据掩码并且识别存储在绘图缓冲器B中的画面中哪些像素是边缘像素。在此处,GPU A 208已经生成识别存储在绘图缓冲器A中的画面中哪些像素是边缘像素的边缘像素掩码,并且GPU B 210已经生成识别存储在绘图缓冲器B中的画面中哪些像素是边缘像素的边缘像素掩码。在步骤318,GPU A 208把它的边缘像素掩码传送到 GPU B 210,以及在步骤320,来自GPU A 208的边缘像素掩码与来自GPU B 210的边缘掩码在本地存储器中结合,以生成结合的边缘像素掩码。该结合的边缘像素掩码是单个边缘像素掩码的合并(与相交相反),因为它把一个像素识别为边缘像素,如果该像素已经由GPU A 208或者GPU B 210识别为边缘像素。在优选实施例中,这种结合通过把从GPUA 208传送的边缘像素掩码直接叠加到由GPU B 210存储在本地存储器中的边缘像素上来实现,使得步骤318和320实际上结合成一个步骤。在步骤322,GPU A 208在位于本地图形存储器A 226内的临时缓冲器(由“临时缓冲器A”表示)中存储绘图缓冲器A的内容的拷贝。在步骤324,GPU B 210仅经由PCIE 总线234传送在绘图缓冲器B中由结合的边缘像素掩码识别为边缘像素的那些像素的拷贝以叠加到存储在临时缓冲器A中的数据上。实际上,GPU B 210从对应于由结合的边缘像素掩码所指定的非边缘像素的该传送数据排除或者“屏蔽”。该处理步骤的最终结果是临时缓冲器A保持由GPU B 210绘制的画面的完整表示。这是因为由GPU A 208绘制的非边缘像素,其拷贝位于临时缓冲器A并且在步骤318期间不被重叠,这些非边缘像素与由GPU B 210绘制的非边缘像素相同,因为多采样/解析操作仅改变边缘像素的颜色。现在将描述由GPU A 210执行的最后两个步骤。在步骤326,位于与GPU A 208相同的图形卡上的IM 212的合成器部分执行在绘图缓冲器A中呈现的每个像素与在临时缓冲器A中呈现的对应像素的线性混合以生成将被显示的画面。在步骤328,将被显示的画面被输出到显示装置230。画面有效地把由每个GPU应用的多采样的数目加倍。这在图6中被示出,其示出了从把使用2X多采样模式400的像素与使用2X多采样模式500的结合得到的4X多采样模式600。因为方法300不把与非边缘像素相关联的采样数据从GPU B 210传送到GPU A 208,它有益地减少了在PCIE总线234上传送的数据量。因此,传送操作的速度被加快了, 使得操作不会变成处理的瓶颈。此外,该方法使其它共用相同总线的部件可使用更多带宽。 D.根据本发明的实施例识别边缘像素的方法如上述参考图3的流程图所讨论的,在步骤314,GPU A 208执行识别存储在绘图缓冲器A中的画面中的边缘像素的操作,以及在步骤316,GPU B 210执行识别存储在绘图缓冲器B中的画面中的边缘像素的操作。在一个实施例中,GPU A 208和GPU B 210均使用图形处理器内部的存储器、这里被称为矩形块格式表(TFT)执行该操作,其跟踪在与将被显示的画面中的每个像素相关联的采样颜色数据是被完全压缩、部分压缩还是未压缩。该压缩方案的完整描述和TFT的使用在共有的、同时待审的U. S.专利申请No. 10/672,707中阐述,标题是“Method and Apparatus for Compression of Multi-Sample Anti-Aliasing Color Data”,申请日为2003年9月26日,这里引入参考其全部内容。I.根据本发明的实施例的采样颜色数据压缩
10
图7示出了根据U. S.专利申请No. 10/672,707的指导的示例性处理器和存储器配置700。在本发明的一个实施例中,该配置未由多GPU系统中的至少一个GPU使用并且被补充以通过将在下面更加详细描述的方式把边缘像素从非边缘像素区分出来。如在图7中所示,图形处理器703可通信地被连接到高速缓冲存储器702,其接着可通信地被连接到主存储器701。在绘制用于显示的画面的过程期间,像素数据被从主存储器701传送到高速缓冲存储器702供图形处理器703使用。如U. S.专利申请No. 10/672,707 中所阐述的,像素数据被作为多个相邻像素的矩形方块或者“矩形块”传送。在图7中所示的例子中,像素以相邻像素的2X2矩形块传送,其中像素由A、B、C和D表示。然而,对于本领域的技术人员来说,明显可以使用其它尺寸的矩形块。在矩形块中的每个像素都已经被多采样了,这样与每个像素相关联的数据包括对应于在像素中的每个采样的颜色值。在u. S.专利申请No. 10/672,707中阐述的一个例子中,每个像素包括四个采样,并且每个采样与一个颜色值相关联。颜色值的长度可以是一个字。在从主存储器701到高度缓冲存储器702的传送期间,每个矩形块被分析, 并且基于分析的结果,在矩形块中与每个像素相关联的颜色值可以被压缩。根据申请 No. 10/672,707中所描述的实施例,所分析的矩形块可以以三种方式之一处理它可以是 “完全压缩”、“部分压缩”或者它可以保持未压缩。如果在每个多采样的像素中的所有采样颜色相同,选择完全压缩。例如,这可能是当矩形块被单个三角形完全覆盖时发生。当矩形块被完全压缩时,为矩形块中的每个像素仅存储一个颜色值。如果在每个多采样的像素中的所有采样是仅有的两种颜色之一,选择部分压缩。 例如,这可能是当矩形块由不多于两个三角形覆盖时发生。当矩形块被部分压缩时,由矩形块中的每个像素存储两个颜色值,并且使用指针对压缩进行编码。图8示出了 4X多采样像素A、B、C和D的部分压缩2X2的矩形块的示例指针的比特位。在指针中的每个比特或者是“0”,其意味对于那个像素使用第一颜色(称为“原始颜色”),或者是“ I ”,其意味对于那个像素使用第二颜色(称为“替代颜色”)。例如在像素A中,对于像素A所有四个采样都是原始颜色。因此所有四个比特位被编码为“O”。在像素C中,对于像素C头三个采样都是原始颜色。这样头三个比特位被编码为“O”。最后一位被编码为“1”,以表示像素C的第四个采样使用替代颜色。同样的逻辑对于像素B和C适用。使用该指针,每个像素仅需存储两个颜色值,其中一个颜色值针对原始颜色和另一个针对替代颜色。如果在多采样的像素的任何一个中的子像素可以多于两种颜色,颜色数据保持未压缩。例如,如果矩形块由超过两种颜色覆盖这可能会发生。在该例子中,为矩形块中的每个像素中的每个采样存储单个颜色值。根据申请No. 10/672,707的指导,图形处理器703包括称作矩形块格式表 (TFT) 704的片上存储器,以跟踪存储在高速缓冲存储器702中的矩形块数据的格式。存储在高速缓冲存储器702中的矩形块当需要处理时被传送到图形处理器703。在图形处理器 703中矩形块不需要解压缩,因为图形处理器703使用TFT 704跟踪到来的矩形块的格式。 图形处理器703可以对矩形块以它的压缩格式操作,从而加速整个操作。在一个实施例中,对于给定画面中的每个矩形块存在TFT 704中的条目。每个条目具有两位比特压缩编码,以表明特定矩形块的格式。在一个实施例中,两位比特对以下四个状态进行编码I.清零2.完全压缩3.部分压缩4.未压缩。在TFT中的两位比特压缩编码提醒处理器来自高速缓冲存储器的矩形块数据的格式。第一状态表明其中高速缓冲存储器被置于对应于缺省空数据状态的“清零值”的状态。TFT条目的第二、第三和第四状态描述矩形块的前述三种压缩级别完全压缩、部分压缩和未压缩。通过两比特编码,图形处理器703可以适当地处理从高速缓冲存储器702接收到的数据。如上所述,在图2中所示的实施例种的GPU A 208和GPU B 210执行解析操作以把多个采样结合在一起以得到代表给定像素的单个采样(例如参见图3中的步骤310和312 和相关的文本)。换句话说,在解析操作期间,数据从本地存储器被拉出,然后把每个像素仅剩余的像素数据写回本地存储器(即没有子像素或者采样数据剩余)使用上述的压缩方案,解析操作更加有效地被执行。其中解析操作被执行的方式取决于矩形块的压缩级别。第一,如果矩形块被完全压缩,即每个像素仅有一种颜色,不需要作什么,并且在矩形块中的每个像素被简单地写回到存储器中。第二,如果矩形块被部分地压缩或者未压缩,即在每个像素中存在不同的颜色采样,那么采样被结合以解析成最终像素颜色。在一个实施例中,具有相同颜色的采样对被处理一次。例如,对于由图8的指针所表示的矩形块,像素C具有一种颜色的三个采样和另一种颜色的另一个采样。解析操作将把与头三个采样相关联的单个颜色值乘以三,并且把它与剩余采样的颜色值结合一次。 然后,把所结合的值除以四,以获得最终像素颜色值。这节省了不得不读取相同的颜色值多次的过程。对于未压缩的矩形块,与每个采样相关联的颜色值被加在一起并且结果以常规的方式被采样的数目除。2.根据本发明的实施例的矩形块格式表(TFT)的使用和区分边缘和非边缘像素的解析操作在本发明的一个实施例中,在多GPU系统中的至少一个GPU补充TFT和解析在上述部分中讨论的用于区分在将被显示的画面中的边缘和非边缘像素的解析操作。该区分允许GPU的避免当执行如这里其它部分所描述的基于多GPU图形去阶梯操作时把与非边缘像素相关联的数据发送到另一个GPU。TFT 704包括关于将在将被显示的画面中的矩形块是完全压缩、部分压缩或者未压缩的信息。当矩形块被完全压缩时,保证在那个矩形块中的所有像素是内部的或者非边缘像素。相反,当矩形块仅是部分压缩或者未压缩时,这意味在那个矩形块中的至少一些像素是边缘像素。因此,存储在TFT中的信息可以辅助确定矩形块是否仅包含非边缘像素或者包含一个或多个边缘像素。然而,因为TFT 704作为图形处理器703的片上存储器被实现,不容易直接读取。图9示出了用于使用前述的解析命令从TFT 704获取用于确定矩形块是否仅包含非边缘像素或者包含至少一个边缘像素的信息的方法的流程图900。流程图900的方法可以由图2的GPU A 208使用,以执行流程图300的步骤314,和/或由图2的GPU A 210使用,以执行流程图300的步骤316。在步骤902,“边缘检测”图形去阶梯(AA)缓冲器被置入到本地图形存储器中。边缘检测AA缓冲器不被置入表示要显示的实际画面的数据(其被存储在绘图缓冲器A或者绘图缓冲器B中)。而是,边缘检测AA缓冲器被置入预定的多采样的像素数据,其当根据存储在TFT 704中数据解析时,如果在TFT 704中的矩形块条目表明矩形块被完全压缩,则将导致某种特定的颜色值,以及如果在TFT 704中的矩形块条目表明矩形块被部分压缩,则或者未压缩将导致不同的颜色值。因为边缘检测AA缓冲器不包含代表要显示的实际画面的数据,它还可以被认为是“伪(du_y)”缓冲器。根据本发明的一个实施例,2-采样边缘检测AA缓冲器被用作与将被显示的画面具有相同的尺寸和深度。对于在2-采样边缘检测AA缓冲器中的每个像素,“0”被存储在第一采样位置“ I ”被存储在第二采样位置。2-采样边缘检测AA缓冲器可以被使用,不管其中将被显示的画面被存储的绘图缓冲器B的采样深度。尽管这里2-采样边缘检测AA缓冲器已经通过例子被描述了,这种描述不试图局限本发明,并且本领域的技术人员应理解也可以使用具有不同采样深度的边缘缓冲器(例如4-采样边缘检测缓冲器)。在步骤904,GPU B 210使用存储在TFT 704中的数据把边缘检测AA缓冲器解析到位于本地图形存储器中的临时缓冲器。为了更好地解释该步骤,图IOA示出了在上述的 2-采样边缘检测AA缓冲器中的像素1002的2X2矩形块的解析操作的应用,其中在TFT 704中的条目表明在将被显示的画面中的相应矩形块被完全压缩。如在图IOA中所示,其中两个采样位置中的第一个具有分配的颜色值“0”,两个采样位置中的第二个具有分配的颜色值“I”。在解析操作的应用之后,每对采样被解析成在临时缓冲器内的所解析的2X2矩形块1004中的对应的代表性采样。因为TFT 704表明将被显示的画面中的对应的矩形块被压缩,图形处理器703通过假设与第一采样位置相关联的颜色值也是第二采样位置的颜色值而应用解析命令,这样每个像素的所解析的采样颜色是零。相反,图IOB示出了在上述的2-采样边缘检测AA缓冲器中的像素1006的2X2 矩形块的解析操作的应用,其中在TFT 704中的相关条目表明在将被显示的画面中的对应的矩形块被部分压缩或者未压缩。就像图IOA的矩形块1002,在矩形块1006中的每个像素 A、B、C和D具有2个采样位置,其中两个采样位置中的第一个具有分配的颜色值“0”,两个采样位置中的第二个具有分配的颜色值“I”。在解析操作应用之后,每对采样被解析成在临时缓冲器内的所解析的2X 2矩形块1008中的对应的代表性采样。因为TFT 704表明在将被显示的画面中对应的矩形块被部分压缩或者未压缩,由图形处理器702对解析命令的应用包括把与第二采样位置相关联的颜色值与第一采样位置的颜色值平均。结果,在所解析的矩形块1008中的每个像素的至少一个所得到的颜色将为非零。图IOB表示其中在将被显示的画面中的对应的矩形块中的每个像素是边缘像素。结果,在所解析的矩形块1008中的每个像素的每个颜色值是非零。在步骤906,存储在临时缓冲器中的数据被用作边缘像素掩码。如上参考图3所述,GPU A 208和GPU B 210中的每个生成一个这样的边缘像素掩码。通过把由GPU A 208 所生成的边缘像素掩码叠加到由GPU B 210生成的边缘像素掩码上从而将前一个边缘像素掩码与后一个边缘像素掩码结合起来。然后所结合的边缘像素掩码被用于把矩形块从存储在绘图缓冲器B中的画面复制到位于本地图形存储A 226中的临时缓冲器A。如果在所结合的边缘像素掩码中的矩形块具有全零的颜色值,那么在绘图缓冲器B中对应的矩形块从从绘图缓冲器B到临时缓冲器A的复制中被“屏蔽”或者被排除。相反,如果在所结合的边缘像素掩码中的矩形块具有至少一个非零颜色值,那么在绘图缓冲器B中的对应的矩形块被从绘图缓冲器B “传递”或复制到临时缓冲器A。这一步骤的最终结果是只有在包含一个或多个边缘像素的绘图缓冲器B中的矩形块或者对应于包含一个或多个边缘像素的绘图缓冲器A的矩形块的矩形块被从绘图缓冲器B复制到临时缓冲器A上。需要注意的是,在其中TFT 704不包含在将被显示的画面中的每个矩形块的条目的实施例中,没有条目的矩形块应该被当作它们包括边缘像素来对待,并且应该整体地从绘图缓冲器B被传送到临时缓冲器A上。如上所述,本发明的实施例分配具有绘制目标的尺寸和深度的2-采样边缘检测 AA缓冲器。然而,这种实施例可能消耗大量的存储资源。据此,替代实施例使用具有小于绘制目标的尺寸的2-采样边缘检测AA缓冲器。例如,2-采样边缘检测AA缓冲器可能只有 128X128像素。根据这种实施例,步骤904被重复多次,有效地滑动解析“窗口”以生成临时缓冲器的每个128X 128部分。另一个替代实施例使用小的2-采样边缘检测AA缓冲器并且使用存储器映射硬件把该缓冲器映射到较大的解析缓冲器上(即临时缓冲器)。在本发明的一个特别的实施例中,为了减少在图3的流程图的步骤318中种GPU A 208和GPU B 210之间发送的数据量,由GPU A208和GPU B 210所生成的边缘像素掩码被置于高压缩数据格式中。例如,假设为GPU A 208存储边缘像素掩码的临时缓冲器是32比特每像素(bpp)。根据使用2X2矩形块的示例性实施例,以及其中图形硬件不能够简单地辨别在每个2X2矩形块中的哪些像素是边缘像素,这种缓冲器被下采样,使得每个2 X 2矩形块由单个像素代表。然后黑色的像素将对应于不包含边缘像素的2X2矩形块。当下采样时,还进行从32bpp到Sbpp的格式转换,以在后续保留带宽。然后第二下采样被执行,使得现在单个像素对应于在原始像素掩码中的4X4矩形块。在一个实施例中,希望其中压缩在4 X 4矩形块上进行并且在单个矩形块中的像素以一种与原始AA缓冲器中相似的方式被编码。然后这种双下采样和所转换的缓冲器被用作在步骤318中从GPU A 208传送到GPU B 210的边缘像素掩码。当然,只传送非零的像素,因为这种非零像素代表具有边缘的4X4 矩形块。这种传送的目标是包括GPU B 210自己的双下采样和所转换的边缘像素掩码的临时缓冲器,使得GPU A 208的边缘被加到GPU B 210的边缘。这种重叠导致在图3的流程图300的步骤324中被用于从GPU A 208到GPU B 210传送颜色数据的结合的边缘像素掩码。需要注意的是,把边缘像素从非边缘像素中区别开来的上述方法的有效性不局限于在多GPU系统中执行基于多抽样的图形去阶梯。例如,该方法可以被有益地用在任何试图在所绘制的图像中有效地辨别和增强边缘的图形处理系统中。此外,该方法可以被用于收集关于在给定画面中边缘的数量的统计。这些例子不试图限制,对于本领域的技术人员来说前述方法的其它应用应该是明显的。E.示例计算机系统实施例图11描述了可以被利用以实现本发明的示例计算机系统1100。示例计算机系统 1100可以包括例如基于标准个人计算机(PC)的系统或者如笔记本或者手提计算机装置的移动装置。然而,仅通过例子但不局限于此,提供计算机系统1100的以下描述。如在图11中所示,示例计算机系统1100包括用于执行软件例程的处理器1104。 尽管为了清楚起见示出单个处理器,但计算机系统1100也可以包括多处理器系统。处理器 1104被连接到通信基础设施1106,用于与计算机系统1100的其它部件通信。通信基础设施1106可以例如包括通信总线、交叉开关(cross bar)或者网络。计算机系统100还包括主存储器1108,如随机访问存储器(RAM)和辅助存储器 1110。辅助存储器1110例如可以包括硬盘驱动器1112和/或可移动存储器驱动器1114, 其可以包括软盘驱动器、磁带驱动器、光盘驱动器或类似设备。可移动存储器驱动器1114 以一种公知的方式从可移动存储单元1118读取和/或写入其中。可移动存储单元1118可以包括软盘、磁带、光盘或者类似的被从可移动存储器驱动器1114读取或者写入其中的介质。本领域的技术人员应该理解可移动存储单元1118包括计算机可用存储介质,其中存储计算机软件和/或数据。在替代实施例中,辅助存储器1110可以包括其它类似的用于允许计算机程序或者其它指令被载入计算机系统1100的装置。这种装置例如可以包括可移动存储单元1122 和接口 1120。可移动存储单元1122和接口 1120的例子包括程序盒和盒式接口(如在视频游戏控制台装置中所使用的),可移动存储芯片(如EPROM或者PR0M),以及相关联的插槽和其它可移动存储单元1122和允许软件和数据从可移动存储单元1122被传送到计算机系统 1100 的接口 1120。计算机系统1100还包括至少一个通信接口 1124。通信接口 1124允许软件和数据在计算机系统1100和外部装置之间经由通信路径1126传送。特别地,通信接口 1124允许数据在计算机系统1100和如公共数据或私有数据通信网络的数据通信网络之间被传送。 通信接口 1124的例子可以包括调制解调器、网络接口(如以太网卡)、通信端口等。经由通信接口 1124传送的软件和数据以可以是电子的、电磁的、光的或能够由通信接口 1124接收的其它信号的信号形式。这些信号经由通信路径1126被提供给通信接口。如在图11中所示,计算机系统1100包括音频接口 1132,用于执行用于经由相关联的扬声器1134播放音频内容的操作。计算机系统1100还包括图形处理系统1102,其执行用于把图像绘制到相关联的显示器1130上的操作。图形处理系统1102可以包括上述参考图2描述的图形硬件单元, 如第一 GPU A 208和第二 GPU B210,尽管本发明不仅局限于此。在一个实施例中,图形处理系统1102被配置为执行本发明的特征,如图3的流程图300的步骤和/或图9的流程图 900的步骤。图形处理系统1102可以在由处理器1104执行的计算机程序的指导下和/或在由图形处理系统1102中的一个或者多个图形处理器执行的计算机程序的指导下执行这些步骤。如在此使用的,术语“计算机程序产品”可以部分指可移动存储单元1118、可移动存储单元1122、在硬盘驱动器1112中安装的硬盘或者在通信路径1126(无线链接或者电缆)上有把软件加载到通信接口 1124的载波。计算机可用介质可以包括磁介质、光介质或者其它可读介质或发送载波或者其它信号的介质。这些计算机产品是用于给计算机1100 提供软件的装置。计算机程序(也被称作计算机控制逻辑)可以被存储在主存储器1108、辅助存储器1110或者在图形处理系统1102内的存储器中。计算机程序还可以经由通信接口 1124 被接收。当执行这种计算机程序时能够使计算机系统1100、特别是图形处理系统1102执行这里讨论的本发明的一个或多个特征。特别地,当执行计算机程序时能够使计算机系统 1100、特别是图形处理系统1102执行本发明的特征。因此,这种计算机程序代表计算机系统1100的控制器。用于实现本发明的软件可以使用可移动存储驱动器1114、硬盘驱动器1112或者接口 1120被存储在计算机产品中并且被载入到计算机系统1100中。作为替代,计算机程序产品可以在通信路径1126上被下载到计算机系统1100。当由处理器1104和/或在图形处理系统1102中的部件执行软件时,使得那些部件执行在此描述的本发明的功能。F.结论已经描述了本发明的各种实施例,应该理解它们仅通过例子的方式被呈现,而不局限于此。相关领域的技术人员应该理解这里可以进行各种形式和细节的改变而不偏离如在附加的权利要求中所限定的本发明的实质或者范围。因此,本发明的外延和范围应该不由任何上述的示例性实施例限制,但是仅应该根据以下的权利要求和它们的等价被定义。
1权利要求
1.一种用于在所绘制的图像中识别边缘像素的方法,所绘制的图像由多个矩形块组成,其中所述多个矩形块中的每个由多个像素组成,所述方法包括通过使用处理器访问数据以确定在所述多个矩形块中所选择的矩形块是否被完全压缩;响应于确定所选择的矩形块被完全压缩,使用所述处理器把所选择的矩形块识别为仅包含非边缘像素,或者,响应于确定所选择的矩形块未被完全压缩,使用所述处理器把所选择的矩形块识别为包含一个或多个边缘像素。
2.如权利要求I中所述的方法,其中通过使用处理器访问数据以确定所选择的矩形块是否被完全压缩包括访问对应于所选择的矩形块的表中的条目,其中所述条目表明所述选择的矩形块是被完全压缩、部分压缩还是未压缩。
3.如权利要求2中所述的方法,其中通过使用处理器访问数据以确定是否所选择的像素块被完全压缩还包括根据在所述表中的所述条目解析预定的多采样像素数据以生成经过解析的矩形块;和基于与在经过解析的矩形块中的像素相关联的一个或多个颜色值确定选择的矩形块是否被完全压缩。
4.如权利要求I中所述的方法,其中所述识别基于经过解析的矩形块中的像素的颜色值,并且其中基于所选择的矩形块确定经过解析的矩形块的颜色值。
5.如权利要求I中所述的方法,还包括响应于识别所选择的矩形块包括一个或多个边缘像素,从第一图形处理单元向第二图形处理单元拷贝基于所选择的矩形块的经过解析的矩形块。
6.如权利要求3中所述的方法,其中所述解析包括响应于确定所选择的矩形块被完全压缩,将经过解析的矩形块的像素设置为基于两个或更多个相应像素样本中的一个的颜色值的颜色值。
7.如权利要求3中所述的方法,其中所述解析包括响应于确定所选择的矩形块未被完全压缩,将经过解析的选择的矩形块的像素设置为基于两个或更多个样本的颜色值的组合的颜色值。
8.一种用于在所绘制的图像中识别边缘像素的设备,所绘制的图像由多个矩形块组成,其中所述多个矩形块中的每个由多个像素组成,所述设备包括用于通过使用处理器访问数据以确定在所述多个矩形块中所选择的矩形块是否被完全压缩的装置;用于响应于确定所选择的矩形块被完全压缩,使用所述处理器把所选择的矩形块识别为仅包含非边缘像素,或者,响应于确定所选择的矩形块未被完全压缩,使用所述处理器把所选择的矩形块识别为包含一个或多个边缘像素的装置。
9.如权利要求8中所述的设备,其中用于通过使用处理器访问数据以确定所选择的矩形块是否被完全压缩的装置包括用于访问对应于所选择的矩形块的表中的条目的装置,其中所述条目表明所述选择的矩形块是被完全压缩、部分压缩还是未压缩。
10.如权利要求9中所述的设备,其中用于通过使用处理器访问数据以确定是否所选择的像素块被完全压缩的装置还包括用于根据在所述表中的所述条目解析预定的多采样像素数据以生成经过解析的矩形块的装置;和用于基于与在经过解析的矩形块中的像素相关联的一个或多个颜色值确定选择的矩形块是否被完全压缩的装置。
11.如权利要求8中所述的设备,其中所述识别基于经过解析的矩形块中的像素的颜色值,并且其中基于所选择的矩形块确定经过解析的矩形块的颜色值。
12.如权利要求8中所述的设备,还包括用于响应于识别所选择的矩形块包括一个或多个边缘像素,从第一图形处理单元向第二图形处理单元拷贝基于所选择的矩形块的经过解析的矩形块的装置。
13.如权利要求10中所述的设备,其中所述解析包括响应于确定所选择的矩形块被完全压缩,将经过解析的矩形块的像素设置为基于两个或更多个相应像素样本中的一个的颜色值的颜色值。
14.如权利要求10中所述的设备,其中解析包括响应于确定所选择的矩形块未被完全压缩,将经过解析的选择的矩形块的像素设置为基于两个或更多个样本的颜色值的组合的颜色值。
15.一种用于在所绘制的图像中识别边缘像素的系统,所绘制的图像由多个矩形块组成,其中所述多个矩形块中的每个由多个像素组成,所述系统包括至少一个图形处理器;存储器,所述存储器耦合到所述图形处理器并且被配置为具有对应于所述多个矩形块中所选择的矩形块的表中的条目,其中所述条目表明所述选择的矩形块是被完全压缩、部分压缩还是未压缩;第一逻辑模块,所述第一逻辑模块被配置为访问数据以确定在所述多个矩形块中所选择的矩形块是否被完全压缩;以及响应于确定所选择的矩形块被完全压缩,把所选择的矩形块识别为仅包含非边缘像素,或者,响应于确定所选择的矩形块未被完全压缩,把所选择的矩形块识别为包含一个或多个边缘像素。
16.如权利要求15中所述的系统,其中所述第一逻辑模块还被配置为访问对应于所选择的矩形块的表中的条目。
17.如权利要求16中所述的系统,其中所述第一逻辑模块还被配置为根据在所述表中的所述条目解析预定的多采样像素数据以生成经过解析的矩形块;和基于与在经过解析的矩形块中的像素相关联的一个或多个颜色值确定选择的矩形块是否被完全压缩。
全文摘要
一种用于在系统中执行基于多采样图形去阶梯的方法和设备,所述系统包括第一和第二图形处理单元(GPU),其减少在GPU之间所传送的数据量并且提高了这种数据传送的效率。所述第一GPU使用第一多采样模式绘制画面的第一版本,所述第二GPU使用第二多采样模式绘制第二GPU中的画面的第二版本。所述第二GPU在所述画面的所述第二版本中识别非边缘像素。然后在所述画面的所述第一版本中的所述像素与那些仅在所述画面的所述第二版本中已经被识别为边缘像素的像素结合起来以生成结合的画面。
文档编号G06F3/14GK102609975SQ20111041407
公开日2012年7月25日 申请日期2007年5月1日 优先权日2006年5月8日
发明者G·艾尔德, J·高尔德斯, R·柯杜里 申请人:Ati技术无限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1