屏幕空间管线中的多通道渲染的制作方法

文档序号:11584592阅读:245来源:国知局
屏幕空间管线中的多通道渲染的制造方法与工艺

本发明的实施例总体地涉及图形处理,并且更具体地,涉及屏幕空间管线中的多通道渲染。



背景技术:

常规的图形处理单元(gpu)包括一个或多个图形管线,其配置为在三维(3d)场景内生成几何图形。给定的图形管线可以相对于场景被最终渲染的观看位置以特定顺序绘制图形场景中的几何图形。例如,图形管线可以相对于观看位置生成与场景的背景相关联的几何图形,然后随后生成与场景的前景相关联的几何图形。在这个示例中,场景几何图形是“从后向前”生成的。生成几何图形的顺序通常由依赖于gpu进行图形处理操作的软件应用控制。该顺序在本领域中被称为应用程序编程接口(api)顺序。该软件应用可以是,例如,在负责渲染3d场景的图像以供显示的计算机系统上执行的视频游戏或3d模拟程序。

在图形管线中,在生成几何图形后,通常执行硬件或软件着色器,以生成基于3d场景中的几何图形的像素值。着色器通常根据最初生成几何图形的api顺序对几何图形进行操作。这样,返回到上述示例,着色器将生成3d场景的背景的像素值,然后生成3d场景的前景的像素值。然而,当前景的元素遮挡背景的部分时,使得这些部分从观看位置不可见,这种方法会产生低效率。特别地,基于几何图形的遮挡部分生成的任何像素值对最终渲染的图像没有贡献,因此浪费了用于生成那些像素值所消耗的工作。

该问题的一个解决方案是通过软件应用对gpu进行编程,以实施被称为“z预通道(zpre-pass)”的操作。当实施z预通道的操作时,图形管线仅渲染与几何图形相关联的位置,然后在所有得到的像素或样本上实施深度测试,以识别被遮挡的像素和被遮挡的样本。然后,当实施随后的着色操作时,图形管线可以忽略被遮挡的像素或样本。尽管该方法避免了实施与被遮挡的几何图形相关的着色操作,但是该方法要求整个3d场景被渲染两次,这导致附加的处理开销。

例如,诸如顶点属性获取、顶点着色和顶点曲面细分的操作必须实施两次,以便为z预通道和随后再一次的着色通道的场景做渲染。这些操作需要附加处理周期并消耗附加功率。特别地,顶点属性获取操作通常需要访问片外动态随机存取存储器(dram),从功率的角度来看这可能是相当昂贵的。还必须从存储器获得图形基元用于每次渲染。实施这样的操作消耗了存储器带宽,并且也增加了中央处理单元(cpu)的负载,这同样增加了功率消耗。

功率考虑在所有类型的计算机系统实现中变得越来越重要,但是在移动实现中已经变得尤其重要,因为移动设备具有有限的功率资源。因此,在可能的情况下,应尽可能避免导致附加处理周期和功率消耗的不必要操作,如上所述的关于被遮挡的几何图形的操作。

如前所述,所需要的是用于渲染包括被遮挡的几何图形的图形场景的更有效的技术。



技术实现要素:

本发明的一个实施例阐述了一种用于处理图形基元的图形子系统,该子系统包括经配置以在多通道中处理图形基元的屏幕空间管线,以及包括缓冲器的多通道单元,所述多通道单元经配置以从所述缓冲器的第一部分提取第一图形基元,以用于在通过所述屏幕空间管线的第一通道中进行处理,以及从所述缓冲器的所述第一部分提取所述第一图形基元,以用于在通过所述屏幕空间管线的第二通道中进行处理。

本文所描述技术的至少一个优势在于,所述屏幕空间管线可以经配置以采用经缓冲的基元实施各种z通道,然后,随后采用相同的经缓冲的基元实施颜色着色通道。因此,可以正确地渲染某些类型的图形场景,而不需要从存储器重新获取图形数据。这些技术可以减少功率消耗,并且因此提高移动设备的电池寿命。

附图说明

因此,可以详细理解本发明的上述特征的方式、对如上面所简要概括的本发明更具体的描述,可通过参考实施例得到,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。

图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;

图2是根据本发明的一个实施例的、包括在图1的并行处理子系统中的并行处理单元的框图;

图3a是根据本发明的一个实施例的、包括在图2的并行处理单元中的通用处理集群的框图;

图3b是根据本发明的一个实施例的、可在图2的并行处理单元内实现的图形处理管线的概念图;

图4是根据本发明的一个实施例的、图3b的图形处理管线可经配置以生成和处理的高速缓存像素块的概念图;

图5是根据本发明的一个实施例的、图3b的图形处理管线的一部分,其经配置以在多通道中处理基元数据;

图6a-6h是根据本发明的一个实施例的、图5的多通道(mp)单元如何产生用于配置图3b的屏幕空间管线的通道数据的示例图;

图7是根据本发明的一个实施例的、用于在图形处理管线内实施多通道的方法步骤的流程图;

图8是根据本发明的一个实施例的、用于跨多通道保持图形处理管线的状态的方法步骤的流程图;

图9是根据本发明的一个实施例的、图5的mp单元如何配置图3b的屏幕空间管线以实施多通道的概念图;

图10是根据本发明的一个实施例的、由图5的mp单元实施的操作如何可以提高渲染的效率和准确度的概念图;

图11是根据本发明的一个实施例的、用于配置图形处理管线以在多个间隔中实施多通道的方法步骤的流程图;

图12示出了根据本发明的一个实施例的、经配置以同时实施涉及不同高速缓存像素块的不同通道的图3b的屏幕空间管线的一部分;

图13是根据本发明的一个实施例的、用于同时处理多个高速缓存像素块的方法步骤的流程图;以及

图14是根据本发明的一个实施例的、用于实施依赖通道的颜色着色的方法步骤的流程图。

具体实施方式

在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。

系统概述

图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。如图所示,计算机系统100包括但不限于中央处理单元(cpu)102和经由存储器桥105和路径通信113耦连到并行处理子系统112的系统存储器104。存储器桥105还经由通信路径106耦连到i/o(输入/输出)桥107,并且i/o桥107又耦连到交换器116。

在操作中,i/o桥107经配置为从输入设备108(诸如键盘或鼠标)接收用户输入信息,并且经由通信路径106和存储器桥105将该输入信息转发到cpu102用于处理。交换器116经配置为提供i/o桥107与计算机系统100的其他部件(例如网络适配器118和各种插卡120和121)之间的连接。

如还示出的,i/o桥107耦连到系统盘114,系统盘114可以经配置为存储内容和应用以及数据以供cpu102和并行处理子系统112使用。作为一般情况,系统盘114为应用和数据提供非易失性存储,并且可以包括固定或可移动硬盘驱动器、闪存设备和cd-rom(光盘只读存储器)、dvd-rom(数字通用光盘-rom)、蓝光、hd-dvd(高清晰度dvd)或其他磁、光或固态存储设备。最后,虽然未明确示出,但是诸如通用串行总线或其它端口连接、光盘驱动器、数字通用光盘驱动器、胶片记录装置等的其它部件也可以连接到i/o桥107。

在各种实施例中,存储器桥105可以是北桥芯片,并且i/o桥107可以是南桥芯片。另外,通信路径106和113以及计算机系统100内的其它通信路径可以使用任何技术上适合的协议实现,包括但不限于agp(加速图形端口)、超传输或者任何本领域已知的其他总线或点到点通信协议。

在一些实施例中,并行处理子系统112包含将像素传递到显示设备110的图形子系统,所述显示设备110可以是任何常规阴极射线管、液晶显示器、发光二极管显示器等。在这样的实施例中,并行处理子系统112包括被优化以用于图形和视频处理的电路,例如,包括视频输出电路。如下面在图2中更详细地描述的,这种电路可以并入跨并行处理子系统112中包括的一个或多个并行处理单元(ppu)。在其他实施例中,并行处理子系统112并入为了通用目的和/或计算处理而优化的电路。同样,这样的电路可以并入跨并行处理子系统112中包括的经配置为实施这种通用和/或计算操作的一个或多个ppu。在其他实施例中,包括在并行处理子系统112内的一个或多个ppu可以经配置为实施图形处理、通用处理和计算处理操作。系统存储器104包括经配置为管理并行处理子系统112内的一个或多个ppu的处理操作的至少一个设备驱动器103。

在各种实施例中,并行处理子系统112可以与图1的一个或多个其他元件集成,以形成单个系统。例如,并行处理子系统112可以与cpu102以及其他连接电路集成在单个芯片上,以形成片上系统(soc)。

应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、cpu102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实施例中,系统存储器104可以直接连接到cpu102而不是通过存储器桥105,并且其他设备将经由存储器桥105和cpu102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112可以连接到i/o桥107或直接连接到cpu102,而不是连接到存储器桥105。而在其他实施例中,i/o桥107和存储器桥105可能被集成到单个芯片上而不是作为一个或多个分立设备存在。最后,在一些实施例中,图1所示的一个或多个部件可以不存在。例如,交换器116可以被去掉,网络适配器118和插卡120、121将直接连接到i/o桥107。

图2是根据本发明的一个实施例的、包括在图1的并行处理子系统112中的并行处理单元(ppu)202的框图。尽管图2描绘了一个ppu202,如上所述的,并行处理子系统112可以包括任何数量的ppus202。如图所示,ppu202耦连到本地并行处理(pp)存储器204。ppu202和pp存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(asic)或存储器设备,或者以任何其他技术可行的方式来实现。

在一些实施例中,ppu202包括图形处理单元(gpu),其可经配置为实现图形渲染管线以实施与基于由cpu102和/或系统存储器104提供的图形数据生成像素数据相关的各种操作。当处理图形数据时,pp存储器204可被用作存储一个或多个常规帧缓冲区(buffer)以及(如果需要)一个或多个其它渲染目标的图形存储器。其中,pp存储器204可以用于存储和更新像素数据,并将最终的像素数据或显示帧传递到显示设备110用于显示。在一些实施例中,ppu202还可以被配置用于通用处理和计算操作。

在操作中,cpu102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,cpu102发出控制ppu202的操作的命令。在一些实施例中,cpu102写入用于ppu202的命令流到数据结构中(在图1或图2中未明确示出),该数据结构可位于系统存储器104、pp存储器204、或cpu102和ppu202都可访问的其他存储位置中。将指向数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理。ppu202从入栈缓冲区读取命令流,然后相对于cpu102的操作异步地执行命令。在生成多个入栈缓冲区的实施例中,可以经由设备驱动器103由应用程序为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度。

还如图所示,ppu202包括经由通信路径113和存储器桥105,与计算机系统100的其余部分通信的i/o(输入/输出)单元205。i/o单元205产生用于在通信路径113上传输的分组(或其他信号),并且还从通信路径113接收所有输入分组(或其它信号),将输入分组引导到ppu202的适当部件。例如,与处理任务相关的命令可以被引导到主机接口206,而与存储器操作(例如,从pp存储器204读取或写入pp存储器204)相关的命令可以被引导到交叉开关单元210。主机接口206读取每个入栈缓冲区并将存储在入栈缓冲区中的命令流传送到前端212。

如上结合图1所述,ppu202到计算机系统100的其余部分的连接可以变化。在一些实施例中,并行处理子系统112包括至少一个ppu202,可实现为可插入到计算机系统100的扩展槽中的插卡。在其他实施例中,ppu202可以和诸如存储器桥105或i/o桥107的总线桥集成在单个芯片上。而在其他实施例中,ppu202的一些或所有元件可以和cpu102集成在单个集成电路或芯片系统(soc)上。

在操作中,前端212将从主机接口206接收的处理任务传送到任务/工作单元207内的工作分布单元(未示出)。工作分布单元接收指向编码为任务元数据(tmd)并存储在存储器中的处理任务的指针。指向tmd的指针包括在存储为入栈缓冲区并由前端单元212从主机接口206接收的命令流中。指向tmd的指针包括在存储为入栈缓冲区并由前端单元212从主机接口206接收的命令流中。可以编码为tmd的处理任务包括与所要处理的数据相关联的索引,以及定义数据将被如何处理的状态参数和命令。例如,状态参数和命令可定义要对数据执行的程序。任务/工作单元207从前端212接收任务并确保在每一个tmd所指定的处理任务发起前,将gpc208配置为有效状态。可以为每个tmd指定用来调度处理任务的执行的优先级。还可从处理集群阵列230接收处理任务。可选地,tmd可包括控制将tmd添加到处理任务列表(或指向处理任务的指针的列表)的头部还是尾部的参数,从而提供除执行优先级以外的另一级别的控制。

有利地,ppu202实现基于处理集群阵列230的高度并行处理架构,该阵列230包括c个通用处理集群(gpc)208,其中c≥1。每个gpc208能够并发执行大量的(例如,几百或几千)线程,其中每个线程是程序的实例(instance)。在各种应用中,可分配不同的gpc208用于处理不同类型的程序或用于实施不同类型的计算。gpc208的分配可以取决于因每种类型的程序或计算所产生的工作量而变化。

存储器接口214包括一组d个分区单元215,其中d≥1。每个分区单元215耦连到驻留在ppm存储器204内的一个或多个动态随机存取存储器(drams)220。在一个实施例中,分区单元215的数目等于dram220的数目,并且每个分区单元215耦连到不同的dram220。在其他实施例中,分区单元215的数目也可以不等于dram220的数目。本领域的普通技术人员应该理解dram220可以用任何其他技术上合适的存储设备来替代。在操作中,诸如纹理映射或帧缓冲区的各种渲染目标可以跨dram220加以存储,这允许分区单元215并行写入每个渲染目标的各部分以有效地使用pp存储器204的可用带宽。

给定的gpc208可以处理要被写到pp存储器204内的任何dram220的数据。交叉开关单元210配置为路由每个gpc208的输出到任何分区单元215的输入或到任何其他gpc208用于进一步处理。gpc208经由交叉开关单元210与存储器接口214通信,以对各种drams220进行读取或写入。在一个实施例中,除了经由存储器接口214连接到pp存储器204外,交叉开关单元210还具有到i/o单元205的连接,从而使得在不同gpc208内的处理内核能够与系统存储器104或对于ppu202而言非本地的其他存储器通信。在图2的实施例中,交叉开关单元210直接与i/o单元205连接。在各种实施例中,交叉开关单元210可使用虚拟信道来分开gpc208与分区单元215之间的业务流。

另外,gpc208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于,线性和非线性数据变换、视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分(tessellation)着色器、顶点着色器、几何着色器、和/或像素/片段着色器程序)、通用计算操作等等。在操作中,ppu202被配置为将数据从系统存储器104和/或pp存储器204转移到一个或多个片上存储器单元中,处理该数据,并且将结果数据写回到系统存储器104和/或pp存储器204。然后,该结果数据可以由其他系统部件访问,所述其他系统部件包括cpu102、并行处理子系统112内的另一个ppu202、或计算机系统100内的另一个并行处理子系统112。

如上所示,在并行处理子系统112中可以包括任何数目的ppu202。例如,可在单个插卡上提供多个ppu202、或可将多个插卡连接到通信路径113、或可将一个或多个ppu202集成到桥式芯片中。在多ppu系统中的ppu202可以彼此同样或不同。例如,不同的ppu202可能具有不同数目的处理内核和/或不同容量(amount)的pp存储器204。在存在多个ppu202的实现方案中,可并行操作那些ppu从而以高于单个ppu202所可能达到的吞吐量来处理数据。包含一个或多个ppu202的系统可以以各种配置和形式因素来实现,包括但不限于台式电脑、笔记本电脑、手持式个人计算机或其他手持设备、服务器、工作站、游戏控制台、嵌入式系统等等。

图3a为根据本发明的一个实施例的图2的ppu202中所包括的gpc208的框图。在操作中,gpc208可以被配置为并行地执行大量线程以实施图形、一般处理和/或计算操作。如本发明所使用的,“线程”是指在特定的一组输入数据上执行的特定程序的实例。在一些实施例中,单指令、多数据(simd)指令发出技术用于在不提供多个独立指令单元的情况下支持大量线程的并行执行。在其他实施例中,单指令、多线程(simt)技术用于使用配置为向gpc208内的处理引擎集发出指令的公共指令单元来支持大量一般来说同步的线程的并行执行。不同于所有处理引擎通常都执行同样指令的simd执行机制,simt执行通过给定程序允许不同线程更容易跟随分散执行路径。本领域普通技术人员应该理解simd处理机制代表simt处理机制的功能子集。

经由将从任务/工作单元207内的工作分布单元(未示出)接收的处理任务分布到一个或多个流多处理器(sm)310的管线管理器305来控制gpc208的操作。管线管理器305还可配置为通过为由sm310所输出的处理数据指定目的地来控制工作分布交叉开关330。

在一个实施例中,gpc208包括一组m个sm310,其中m≥1。另外,每个sm310包括一组功能执行单元(未示出),例如执行单元和加载-存储单元。特定于任何功能执行单元的处理操作可以被管线化,这使得能够在前一个指令已经完成执行之前执行将发出的新指令。可提供给定sm310内的功能执行单元的任何组合。在各种实施例中,功能执行单元可配置为支持各种各样不同的操作,包括整数和浮点运算(例如加法和乘法)、比较操作、布尔操作(and、or、xor)、移位和各种代数函数的计算(例如平面插值和三角函数、指数函数和对数函数等等)。有利地,相同功能执行单元可配置为实施不同的操作。

在操作中,每个sm310配置为处理一个或多个线程组。如本文所使用的,“线程组”或“线程束(warp)”是指对不同输入数据并发执行相同程序的一组线程,所述组的一个线程被指派到sm310内的不同执行单元。线程组可以包括比sm310内的处理执行单元少的线程,在这种情况下一些执行单元可在该线程组正在被处理的周期期间处于闲置状态。线程组还可以包括比sm310内的执行单元数目多的线程,在这种情况下处理可在连续的时钟周期内发生。因为每个sm310可以并发支持多达g个线程组,结果是在任何给定时间在gpc208中可以执行多达g*m个线程组。

此外,多个相关线程组可以在sm310内同时活动(在执行的不同阶段)。该线程组集合在本文中称为“协作线程阵列”(“cta”)或“线程阵列”。特定cta的大小等于m*k,其中k是线程组中并发执行线程的数目,其通常是sm310内的执行单元数目的整数倍,以及m是sm310内同时活动的线程组的数目。

虽然在图3a中未示出,但是每个sm310包含一级(l1)高速缓存或使用sm310外部的相应l1高速缓存中的空间以另外支持由执行单元实施的加载和存储操作。每个sm310都还有权访问在ppu202中的所有gpc208之间共享的二级(l2)高速缓存(未示出)。l2高速缓存可以用于在线程之间传输数据。最后,sm310还有权访问片外“全局”存储器,所述“全局”存储器可以包括pp存储器204和/或系统存储器104。应该理解,ppu202外部的任何存储器可用作全局存储器。此外,如图3a所示,一点五级(l1.5)高速缓存335可以包括在gpc208内,其配置为接收并保持由sm310经由存储器接口214从存储器所请求的数据。这样的数据可以包括但不限于指令、一致(uniform)数据和常数数据。在gpc208中具有多个sm310的实施例中,sm310可有利地共享高速缓存在l1.5高速缓存335中的公共指令和数据。

每个gpc208可以具有配置为将虚拟地址映射到物理地址的相关联的存储器管理单元(mmu)320。在各种实施例中,mmu320可以驻留在gpc208内或存储器接口214内。mmu320包括用于将虚拟地址映射到像素块(tile)或存储页面的物理地址的页表条目(pte)集和可选地包括高速缓存行索引。mmu320可以包括地址转译后备缓冲区(tlb)或可以驻留在sm310或一个或多个l1高速缓存或gpc208内的高速缓存。

在图形和计算应用中,gpc208可配置为使得每个sm310耦连到用于实施纹理映射操作诸如确定纹理样本位置、读取纹理数据以及过滤纹理数据的纹理单元315。

在操作中,为了将所处理的任务提供给另一个gpc208用于进一步处理或为了经由交叉开关单元210将所处理的任务存储在l2高速缓存(未示出)、并行处理存储器204或系统存储器104中,每个sm310将所处理的任务传送到工作分布交叉开关330。另外,预光栅操作(prerop)单元325配置为从sm310接收数据、将数据引导到分区单元215内的一个或多个光栅操作(rop)单元以及针对颜色混合实施优化、组织像素颜色数据和实施地址转译。

应该理解本文所述的内核架构是示例性的并且变化和修改都是可能的。此外,任何数目的处理单元例如sm310、纹理单元315,或prerop325可以包括在gpc208内。进一步地,如上结合图2所述,ppu202可以包括任何数目的gpc208,所述gpc208配置为在功能上彼此相似以使得执行行为不取决于哪个gpc208接收特定处理任务。进一步地,每个gpc208独立于ppu202中的其他gpc208操作以为一个或多个应用程序执行任务。鉴于上述内容,本领域普通技术人员将理解的是,图1-3a中描述的架构绝不限制本发明的范围。

图形管线架构

图3b是根据本发明的一个实施例的、可在图2的ppu202内实现的图形处理管线350的概念图。如图所示,图形处理管线350包括但不限于基元分配器(pd)355;顶点属性获取单元(vaf)360;顶点、曲面细分、几何处理单元(vtg)365;视口缩放、剔除和裁剪单元(vpc)370;分块单元(tilingunit)375、设置单元(设置)380、光栅化器(光栅)385;片段处理单元,也被识别为像素着色单元(ps)390、以及光栅操作单元(rop)395。

pd355从前端212收集与高阶表面、图形基元等相关联的顶点数据,并将顶点数据传送到vaf360。

vaf360从共享存储器检索与每个输入顶点相关联的顶点属性,并将顶点数据连同相关联的顶点属性存储在共享存储器中。

vtg365是被配置为执行顶点着色器程序、曲面细分程序和几何程序的可编程执行单元。这些程序处理从vaf360接收的顶点数据和顶点属性,并且产生图形基元,以及图形基元的每个顶点处的颜色值、表面法线向量和透明度值,用于在图形处理管线350内进一步处理。虽然未明确示出,但是在一些实施例中,vtg365可以包括顶点处理单元、曲面细分初始化处理单元、任务生成单元、任务分布器、拓扑生成单元、曲面细分处理单元和几何处理单元中的一个或多个。

顶点处理单元是可编程执行单元,其配置为执行顶点着色器程序,按顶点着色器程序所指定的来照明和变换顶点数据。例如,顶点处理单元可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到可替代地基于诸如世界空间或规格化设备坐标(ndc)空间的坐标系。顶点处理单元可读取由vaf所存储在共享存储器中的顶点数据和顶点属性,并且可以处理顶点数据和顶点属性。顶点处理单元415将处理后的顶点存储在共享存储器中。

曲面细分初始化处理单元是可编程执行单元,其配置为执行曲面细分初始化着色器程序。曲面细分初始化处理单元处理由顶点处理单元产生的顶点,并生成称为补丁的图形基元。曲面细分初始化处理单元还生成各种补丁属性。然后,曲面细分初始化处理单元将补丁数据和补丁属性存储在共享存储器中。在一些实施例中,曲面细分初始化着色器程序可被称为外壳着色器或曲面细分控制着色器。

任务生成单元从共享存储器检索顶点和补丁的数据和属性。任务生成单元生成用于处理顶点和补丁以便由图形处理管线350中的后续级(stage)进行处理的任务。

任务分布器重新分布由任务生成单元产生的任务。由顶点着色器程序和曲面细分初始化程序的各种实例产生的任务可在一个图形处理管线350与另一个之间显著变化。任务分布器重新分布这些任务,使得每个图形处理管线350在后续的管线级期间具有大致相同的工作负载。

拓扑生成单元检索由任务分布器分布的任务。拓扑生成单元对顶点进行索引,包括与补丁相关联的顶点,并且计算用于曲面细分顶点的(u,v)坐标以及连接曲面细分的顶点的索引,以形成图形基元。拓扑生成单元随后将索引的顶点存储在共享存储器中。

曲面细分处理单元是可编程执行单元,其配置为执行曲面细分着色器程序。曲面细分处理单元从共享存储器读取输入数据并将输出数据写入共享存储器。共享存储器中的该输出数据被传递到下一个着色器级,几何处理单元445作为输入数据。在一些实施例中,曲面细分着色器程序可称为域着色器或曲面细分评估着色器。

几何处理单元是可编程执行单元,其配置为执行几何着色器程序,从而变换图形基元。将顶点分组以构造用于处理的图形基元,图形基元包括三角形、线段、点等等。例如,几何处理单元可被编程以将图形基元细分成一个或多个新图形基元并计算用来将新图形基元光栅化的参数,诸如平面方程系数。

几何处理单元将指定新图形基元的参数和顶点传送到vpc370。几何处理单元可以读取存储在共享存储器中的数据,以用于在处理几何数据中使用。vpc370实施裁剪、剔除、透视校正和视口变换,以确定哪些图形基元在最终渲染图像中是潜在可见的,哪些图形基元不是潜在可见的。然后,vpc370将处理后的图形基元传输到分块单元375。

分块单元375是图形基元分类引擎,其驻留在世界空间管线352和屏幕空间管线354之间,如本发明进一步描述的。图形基元在世界空间管线352中被处理,然后被传送到分块单元375。屏幕空间被划分为高速缓存像素块,其中每个高速缓存像素块与屏幕空间的一部分相关联。对于每一图形基元,分块单元375识别与图形基元相交的高速缓存像素块集合,本文中称为“分块(tiling)”的过程。在分块一定数量的图形基元之后,分块单元375在高速缓存像素块基础上处理图形基元,其中与特定高速缓存像素块相关联的图形基元被传送到设置单元380。分块单元375一次一个高速缓存像素块地将图形基元传输到设置单元380。与多个高速缓存像素块相交的图形基元通常在世界空间管线352中被处理一次,但是随后被多次传送到屏幕空间管线354。

这样的技术改善了在屏幕空间管线354的处理期间高速缓存存储器局部性,其中与第一高速缓存像素块相关联的多个存储器操作访问l2高速缓存的区域或任何其他技术上可行的高速缓存存储器,其在第一高速缓存像素块的屏幕空间处理期间可保持驻留。一旦与第一高速缓存像素块相关联的图形基元由屏幕空间管线354处理,则可以刷新(flush)与第一高速缓存像素块相关联的l2高速缓存的部分,并且分块单元可传送与第二高速缓存像素块相关联的图形基元。然后,与第二高速缓存像素块相关联的多个存储器操作可以访问在第二高速缓存像素块的屏幕空间处理期间可以保持驻留的l2高速缓存的区域。因此,可以减少到l2高速缓存和渲染目标的总体存储器流量。在一些实施例中,对于给定图形基元执行一次世界空间计算,而不管与图形基元相交的屏幕空间中的高速缓存像素块的数量。

设置单元380经由分块单元375从vpc370接收顶点数据,并计算与图形基元相关联的参数,包括但不限于边缘方程、局部平面方程和深度平面方程。然后,设置单元380将经处理的图形基元传送到光栅化器385。

光栅化器385扫描转换新的图形基元并将片段和覆盖数据传送到像素着色单元390。另外,光栅化器385可配置为实施z剔除(z-culling)和其他基于z的优化。

像素着色单元390是可编程执行单元,如片段着色器程序所指定的,其配置为执行片段着色器程序、从光栅化器385接收的变换片段。片段着色器程序可以以像素级粒度着色片段,其中这样的着色器程序可称为像素着色器程序。可替代地,片段着色器程序可以以样本级粒度着色片段,其中每个像素包括多个样本,并且每个样本表示像素的一部分。可替代地,片段着色器程序可以以任何其它技术上可行的粒度来对片段进行着色,这取决于所编程的采样率。

在各种实施例中,片段处理单元460可经编程以实施例如透视校正、纹理映射、阴影、混合等的操作,以产生传送到rop395的经着色的片段。像素着色单元390可以读取存储在共享存储器中的数据。

rop395是处理单元,其实施诸如模板(stencil)、z测试、混合等的光栅操作,并且经由存储器接口214传输像素数据作为经处理的图形数据用以存储在图形存储器中,其中图形存储器通常被构造为一个或多个渲染目标。经处理的图形数据可以存储在图形存储器、并行处理存储器204或系统存储器104中,用于在显示设备110上显示或用于由cpu102或并行处理子系统112进一步处理。在一些实施例中,rop395配置为压缩写入存储器的z或颜色数据以及解压缩存储器读取的z或颜色数据。在各种实施例中,rop395可以位于存储器接口214中、位于gpc208中、位于gpc外部的处理集群阵列230中、或位于ppu202内的单独单元(未示出)中。

图形处理管线可以由ppu202内的任何一个或多个处理元件来实现。例如,图3a的sm310中的一个可配置为实施vtg365和像素着色单元390中的一个或多个功能。pd355、vaf360、vpc450、分块单元375、设置单元380、光栅化器385和rop395的功能也可以结合相应的分区单元215,通过特定gpc208内的处理元件实施。可替代地,可用上文列出功能中的一个或多个专用固定功能处理元件来实施图形处理管线350。在各种实施例中,ppu202可配置为实现一个或多个图形处理管线350。

在一些实施例中,图形处理管线350可以被划分为世界空间管线352和屏幕空间管线354。世界空间管线352处理3d空间中的图形对象,其中每个图形对象的位置相对于其他图形对象和相对于3d坐标系是已知的。屏幕空间管线354处理已经从3d坐标系投影到表示显示设备110表面的2d平面上的图形对象。例如,世界空间管线352可包括从pd355到vpc370的图形处理管线350中的管线级。屏幕空间管线354可包括从设置单元380到rop395的图形处理管线350中的管线级。分块单元375将跟随世界空间管线352的最后级,即vpc370。分块单元375在屏幕空间管线354的第一级,即设置单元380之前。

如下文结合图5-13更详细地描述的,分块单元375可包括多通道单元,其经配置以为通过屏幕空间管线354的多个通道缓冲图形基元数据。图形基元数据可包括标识存储器中的不同图形基元的图形基元或基元索引。多通道单元可以基于由设备驱动器103提供的状态束,不同地为每个通道配置屏幕空间管线354。以这种方式,设备驱动器103和多通道单元交互操作以协调通过屏幕空间管线354的多个通道。如下文结合图5-13更详细地描述的,使用该方法,可以改进某些类型的渲染场景。

在一些实施例中,世界空间管线352可进一步分为α(alpha)阶段管线和β(beta)阶段管线。例如,α阶段管线可包括图形处理管线350中从pd355到任务生成单元的管线级。β阶段管线可包括图形处理管线350中从拓扑生成单元到vpc370的管线级。图形处理管线350在α阶段管线的处理期间实施第一组操作,以及在β阶段管线的处理期间实施第二组操作。如本文所用的,一组操作被定义为由单个线程、线程组或者一致地工作的多个线程组执行的一个或多个指令。

在具有多个图形处理管线350的系统中,可以划分与一组图形对象相关联的顶点数据和顶点属性,使得每个图形处理管线350在α阶段中具有大致相同的工作量。α阶段处理可以显著地扩展顶点数据和顶点属性的量,使得由任务生成单元产生的顶点数据和顶点属性的量显著大于由pd355和vaf360处理的顶点数据和顶点属性的量。此外,即使两个图形处理管线350在α阶段管线的开始时处理相同数量的属性,与一个图形处理管线350相关联的任务生成单元,与和另一图形处理管线350相关联的任务生成单元相比,可产生明显更大量的顶点数据和顶点属性。在这种情况下,任务分布器重新分布由α阶段管线产生的属性,使得每个图形处理管线350在β阶段管线的开始时具有大致相同的工作负荷。

如本文所用的,对共享存储器的引用可包括任何一个或多个技术上可行的存储器,包括但不限于由一个或多个sm310共享的本地存储器,或者可经由存储器接口214访问的存储器,诸如高速缓存存储器、并行处理存储器204或系统存储器104。还如本文所用的,对高速缓存存储器的引用可包括任何一个或多个技术上可行的存储器,包括但不限于l1高速缓存、l1.5高速缓存和l2高速缓存。

分块的高速缓存

图4是根据本发明的一个实施例的、图3b的图形处理管线350可经配置以生成和处理的高速缓存像素块410(0)的概念图。如图所示,高速缓存像素块410(0)表示屏幕空间400的一部分,并且被划分为多个光栅像素块420。

屏幕空间400表示配置为存储经渲染的图像数据和由图形处理管线350内的功能单元传输的其他数据的一个或多个存储缓冲器。在一些实施例中,一个或多个存储器缓冲器可配置为一个或多个渲染目标。屏幕空间表示配置为存储由图形处理管线渲染的图像的存储器缓冲器。屏幕空间400可以与任何数目的渲染目标相关联,其中每个渲染目标可以配置为独立于其他渲染目标以包括任何数量的字段。渲染目标内的每个字段可以配置为独立于其他字段以包括任何数目的位。每个渲染目标可以包括多个图像元素(像素),并且每个像素又可以包括多个样本。在一些实施例中,每个高速缓存像素块的大小可以基于与屏幕空间相关联的渲染目标的大小和配置。在操作中,一旦渲染完成,可以将一个或多个渲染目标中的像素传送到显示设备,以显示渲染的图像。

作为示例,用于屏幕空间400的一组渲染目标可以包括八个渲染目标。第一渲染目标可以包括表示颜色的四个字段,包括红色、绿色和蓝色组成色,以及与相应片段相关联的透明度信息。第二渲染目标可以包括表示与相应片段相关联的深度和模板信息的两个字段。第三渲染目标可以包括表示表面法线向量信息的三个字段,该表面法线向量包括与相应片段相关联的x轴法线向量、y轴法线向量和z轴法线向量。剩余的五个渲染目标可配置为存储与相应片段相关联的附加信息。这样的配置可以包括用于各种信息的存储,所述各种信息包括但不限于3d位置数据、漫射照明信息和镜面照明信息。

每个高速缓存像素块410代表屏幕空间400的一部分。为了清楚起见,在图4中仅示出了五个高速缓存像素块410(0)-410(4)。在一些实施例中,高速缓存像素块可以在x和y屏幕空间中具有任意大小。例如,如果高速缓存像素块将驻留在也用于存储其他数据的高速缓存存储器中,则高速缓存像素块可以被调整大小以仅消耗高速缓存存储器的特定部分。高速缓存像素块的大小可以基于多个因素,包括与屏幕空间400相关联的渲染目标的数目和配置、每个像素的样本数量,以及存储在高速缓存像素块中的数据是否被压缩。作为一般情况,高速缓存像素块的大小被设置为增加高速缓存像素块数据保持驻留在高速缓存存储器中的可能性,直到与高速缓存像素块相关联的所有图形基元被完全处理。

光栅像素块420代表高速缓存像素块410(0)的一部分。如图所示,高速缓存像素块410(0)包括以四个光栅像素块420为宽和四个光栅像素块420为高的阵列布置的十六个光栅像素块420(0)-420(15)。在包括多个gpc208的系统中,与给定高速缓存像素块410(0)相关联的处理可在可用gpc208之间进行划分。在所示的示例中,如果高速缓存像素块410(0)的十六个光栅像素块由四个不同的gpc208处理,则每个gpc208可以被指派以处理高速缓存像素块410(0)的十六个光栅像素块420中的四个。具体地,第一gpc208可以被指派以处理光栅像素块420(0)、420(7)、420(10)和420(13)。第二gpc208可以被指派以处理光栅像素块420(1)、420(4)、420(11)和420(14)。第三gpc208可以被指派以处理光栅像素块420(2)、420(5)、420(8)和420(15)。然后第四gpc208将被指派以处理光栅像素块420(3)、420(6)、420(9)和420(12)。在其它实施例中,给定高速缓存像素块内的不同光栅像素块的处理可以以任何技术上可行的方式分布在gpc208或计算机系统100内包括的任何其它处理实体中。

多通道渲染技术

图5示出根据本发明的一个实施例的、图3b的图形处理管线的一部分,其经配置以在多通道中处理基元数据。如图所示,部分500包括驻留在屏幕空间管线354上部的多通道(mp)单元510。mp单元510可驻留在图3b中所示的分块单元375内。mp单元510耦连到被配置为存储基元数据和状态束的缓冲器520。存储在缓冲器520中的数据通常与一个或多个高速缓存像素块相对应。在一个实施例中,缓冲器520是随机存取存储器(ram)单元。缓冲器520包括基元数据pd0至pdn,如图所示。如下面更详细地描述的,缓冲器520中的每个基元数据包括图形基元或图形基元索引和基元掩码。缓冲器520还包括状态束sb0至sbm,如图所示。缓冲器520中的每个状态束包括一个或多个状态设置和状态掩码,如下所述。

mp单元510经配置以实施缓冲器520的一个或多个遍历,以便在穿过屏幕空间管线354的一个或多个相应通道中处理其中存储的一些或所有基元数据。对于每个这样的通道,mp单元510基于缓冲器520中的特定状态束来配置屏幕空间管线354。因此,屏幕空间管线354可以针对每个不同的通道而不同地配置。另外,对于每一不同通道,mp单元510可将从缓冲器520提取的图形基元的不同子集传送到屏幕空间管线354用于处理。

mp单元510包括通道掩码512,其指示待实施的通道数目和当前的通道号。通道掩码512中的位的数目反映要实施的通道的数目。通道掩码512的每个位相应于不同的通道号。当mp单元510实施具有具体通道号的特定通道时,通道掩码512中的相应位被设置为1。例如,通道掩码512可以是4位掩码,指示将实施的四个通道。4位通道掩码的每个不同位将对应于不同的通道号。因此,0001的通道掩码将指示当前的通道是通道0,或者,可替代地,通道掩码0100将指示当前通道是通道2。当遍历缓冲器520时,mp单元510依赖于通道掩码512以便滤出与当前通道相关的基元数据和状态束。

如上所述,存储在缓冲器520中的每个基元数据,诸如pd0或pd1,包括图形基元或图形基元索引以及基元掩码。基元掩码指示通过屏幕空间管线354的特定通道,在此期间应处理图形基元。基元掩码通常具有与通道掩码512相等的大小。返回到上述示例,当mp单元510配置为实施四通道并且因此依赖于4位通道掩码512时,各种基元数据内的每个基元掩码同样将是4位掩码。基元掩码的每个位将指示相关联的图形基元是否应在相应的通道号期间被处理。例如,基元掩码0011将指示应在通道0和通道1期间而不是在通道2和通道3期间处理图形基元。

如上所述,存储在缓冲器520中的每个状态束,诸如sb0或sb1,包括一个或多个状态设置和状态掩码。每个状态设置通常反映屏幕空间管线354的特定状态的配置。例如,屏幕空间管线354的状态通常可以反映要使用的深度函数,并且该状态的状态设置可以是要由rop395执行的特定深度函数。另一状态可以是深度缓冲器状态,并且相应的状态设置可以反映深度缓冲器被禁用。本领域技术人员将理解的是,“状态”是意在捕获屏幕空间管线354的一般可配置特征的宽泛术语,并且“状态设置”表示该特征的特定配置。

给定状态束内的状态掩码指示基于该状态束内的状态设置应当实施的、通过屏幕空间管线354的特定通道。状态掩码通常具有与通道掩码512相同的大小。返回到上述示例,当mp单元510配置为实施四通道并且因此依赖于4位通道掩码512时,不同状态束内的每个状态掩码将同样是4位掩码。给定状态掩码的每个位指示相关联的状态设置是否应当用于在相应的通道号期间配置屏幕空间管线354。例如,状态掩码0101将指示与该掩码相关联的状态设置应当在通道0和2而不是在通道1和3期间被使用以配置屏幕空间管线354。每个状态束通常包括一个状态掩码和任何数目的不同状态设置。与特定通道相关联的基元和状态设置可被称为驻留在与特定通道相应的“桶(bucket)”内。在操作中,mp单元510可以在处理特定通道时过滤出用于放置到桶中的基元和状态设置。

在一个实施例中,以上述方式,对于每个通道实现的状态设置与通道掩码的每个位不具有一对一的关系。具体地,当设备驱动器103配置通道掩码时,设备驱动器103还可以指派每个通道处理哪个状态桶。例如,当配置为两个通道时,mp单元510可以对于通道0指定桶1,并且对于通道1使用状态桶0。可以应用这种类型的间接,使得可以使用状态桶0建立“稳态”处理,然后可以使用状态桶1建立特殊的“预处理”。然后,mp单元510可以使用状态桶1(预处理状态)、然后是状态桶0(稳态处理)实施两个通道。

在操作中,对于给定通过屏幕空间管线354的通道,mp单元510生成通道数据530,该通道数据530包括将用于针对当前通道配置屏幕空间管线354的状态设置540,以及在当前通道期间进行处理的基元550。然后,mp单元510可以基于状态设置540配置屏幕空间管线354,然后使用经配置的屏幕空间管线354处理基元550。对于随后的通道,mp单元510可以实施类似的操作。然而,由于通道掩码512基于当前通道号而不同,因此,从缓冲器520提取的用于后续通道的特定状态设置540和基元550与前一个通道相比可以不同。使用此方法,图形处理管线350能够多次处理基元数据且采用屏幕空间管线354的不同配置,而不需要多次从存储器获取图形基元。在各种实施例中,图形处理管线350可多次从l2高速缓存获取图形基元,而不需要多次从系统存储器获取那些基元。

图1所示的设备驱动器103通常配置为管理mp单元510的整体操作。这样做时,设备驱动器103可以用基元数据和状态束填充缓冲器520,使得能够实施更有效的渲染类型。此功能可减轻应用程序开发人员的编程负担。例如,设备驱动器103可配置mp单元510以实施缓冲器520的两个通道。在通道0中,设备驱动器103将配置mp单元510以实现仅z(z-only)通道。在该通道期间,mp单元510可实施深度测试并确定哪些图形基元应当被着色。在通道1中,设备驱动器103将配置mp单元510以实现z+颜色(z+color)通道。在该通道期间,如果需要,mp单元510将实施z操作,然后还实施颜色着色。使用这种方法,可以提高渲染效率,特别是在从后到前渲染的情况下。特别地,被前景基元遮挡的背景基元在第二通道中不会被遮蔽。此外,当实施附加通道时,将不需要从存储器获取图形基元,因为那些基元将在缓冲器520内缓冲。下面结合图6a-6h,通过举例的方式,描述到目前为止所描述的技术。

图6a-6h是根据本发明的一个实施例的图5的多通道(mp)单元如何生成用于配置图3b的屏幕空间管线的通道数据的示例性说明。图6a-6h中的每一个示出了与四个示例性通道中的一个相关联的示例性数据,示例性通道是由两个示例性高速缓存像素块中的一个实施的。具体来说,图6a示出在高速缓存像素块0的通道0中处理的数据。图6b示出了在高速缓存像素块0的通道1中处理的数据。图6c示出了在高速缓存像素块0的通道2中处理的数据。图6d示出了在高速缓存像素块0的通道3中处理的数据。图6e示出了在高速缓存像素块1的通道0中处理的数据。图6f示出了在高速缓存像素块1的通道1中处理的数据。图6g示出了在高速缓存像素块1的通道2中处理的数据。图6h示出了在高速缓存像素块1的通道3中处理的数据。

如图6a-6h中的每一个所示,缓冲器520包括根据api顺序设置在缓冲器520内的基元掩码(pm)612、状态掩码(sm)614、各种基元和各种状态设置。同样,如图所示,各种状态设置s0、s1、s2、s3、s4、s5和s6应用于屏幕空间管线354之前。在结合这些图描述的示例中,这些状态设置的修改版本示为诸如s0'、s0”、s0”'。

每个pm612与基元的子集相关联,每个sm614与状态设置的子集相关联。例如,pm612(0)与基元p0相关联。sm614(0)与状态设置s0'和s1'相关联,而状态设置s0'和s1'再次反映状态设置s0和s1的修改版本。每个基元通常与最新的基元掩码相关联。例如,基元p1与pm612(0)相关联。每组状态设置和相关联的状态掩码可形成状态束,例如图5所示的各种sb。例如,sm614(1)和状态设置s2'、s3'和s4'可以形成状态束。

通常,给定状态束的状态掩码指示与相关联状态设置相关的特定通道。同样,与特定基元子集相关联的基元掩码指示期间应当处理该基元子集的通道。例如,sm614(0)指示适用于所有通道的状态设置s1'和s0',因为sm614(0)具有设置为1的所有位。同样,pm612(0)指示应在所有通道中处理的基元p0,因为pm612(0)具有设置为1的所有位。

图6a-6h中的每一个还示出了不同的管线数据600和更改状态(dirtystate)610。特定管线数据600指示对于特定高速缓存像素块的特定通道,传送到屏幕空间管线354的特定基元和状态设置。每个更改状态610示出了在完成当前通道之后发送的状态设置,以便为给定高速缓存像素块的随后通道做准备。现在将各自描述图6a-6h。

如图6a所示,管线数据600(0-0)包括结合实施高速缓存像素块0的通道0而发送到屏幕空间管线354的数据。管线数据600(0-0)还示出了更改位,其被设置以便跟踪哪些状态设置偏离了先前配置的值。在管线数据600(0-0)中,修改的状态设置s0'、s1'、s2'、s3'和s4'被发送,因此这些改变被记录在相应的更改位中。当完成高速缓存像素块0的通道0时,mp单元510传送包括状态设置s0、s1、s2、s3和s4的更改状态610(0-0),以便为高速缓存像素块0的通道1准备屏幕空间管线354。

如图6b所示,管线数据600(0-1)包括结合实施高速缓存像素块0的通道1而发送到屏幕空间管线354的数据。管线数据600(0-1)还示出了更改位,其被设置以便跟踪哪些状态设置偏离了先前配置的值。在管线数据600(0-1)中,状态设置s0、s1、s2、s3和s4被修改为s0'、s1'、s2'、s3'和s4',并且这些改变被记录在相应的更改位中。由于在s2'、s3'和s4'之后没有发送基元,所以该状态不会被发送到屏幕空间管线354。相反,更新的状态保持在存储器中,直到发送下一个基元或者通道结束。当完成高速缓存像素块0的通道1时,mp单元510传送包括状态设置s0、s1、s2、s3和s4的更改状态610(0-1),以便为高速缓存像素块0的通道2准备屏幕空间管线354。

如图6c所示,管线数据600(0-2)包括结合实施高速缓存像素块0的通道2而发送到屏幕空间管线354的数据。管线数据600(0-2)还示出了更改位,其被设置以跟踪哪些状态设置偏离了先前配置的值。在管线数据600(0-2)中,修改的状态设置s0'、s1'、s4”和s5'被发送,因此这些改变被记录在相应的更改位中。状态设置s2被发送,因为更改位仍然被设置;然而,状态设置s2在通道2中没有改变,因此发送的最后值是s2(不是s2')。在一个实施例中,mp单元510实现过滤机制,以在相关联的值没有改变时过滤状态设置。因此,尽管在通道3的准备期间s2被发送出mp单元510,但是过滤机制防止s2再次发送到屏幕空间管线354,因为该值没有改变。当完成高速缓存像素块0的通道2时,mp单元510传送包括状态设置s0、s1、s2、s3、s4和s5的更改状态610(0-2),以便为缓存像素块0的通道3准备屏幕空间管线354。

如图6d所示,管线数据600(0-3)包括结合实施高速缓存像素块0的通道3而发送到屏幕空间管线354的数据。管线数据600(0-3)还示出了更改位,其被设置以便跟踪哪些状态设置偏离了先前配置的值。在管线数据600(0-3)中,修改的状态设置s0'、s1'、s4”、s5'、s6'和s1”被发送,因此这些改变被记录在相应的更改位中。当完成高速缓存像素块0的通道3时,mp单元510传送包括状态设置s0、s1、s2、s3、s4、s5和s6的更改状态610(0-3),以便为高速缓存像素块1的通道0准备屏幕空间管线354。当应用上述过滤机制时,状态设置s2和s3将被过滤并且不会被发送到屏幕空间管线354,因为这些设置没有被更新为先前通道的一部分。

如图6e所示,管线数据600(1-0)包括结合实施高速缓存像素块1的通道0而发送到屏幕空间管线354的数据。管线数据600(1-0)还示出了更改位,其被设置以便跟踪哪些状态设置偏离了先前配置的值。在管线数据600(1-0)中,修改的状态设置s0'、s1'、s2'、s3'和s4'被发送,因此这些改变被记录在相应的更改位中。当完成高速缓存像素块1的通道0时,mp单元510传送包括状态设置s0、s1、s2、s3、s4、s5和s6的更改状态610(1-0),以便为高速缓存像素块1的通道1准备屏幕空间管线354。当应用上述过滤机制时,状态设置s5和s6将被过滤,并且不会被发送到屏幕空间管线354,因为这些设置没有更新为先前通道的一部分。

如图6f所示,管线数据600(1-1)包括结合实施高速缓存像素块1的通道1而发送到屏幕空间管线354的数据。管线数据600(1-1)还示出了更改位,其被设置以便跟踪哪些状态设置偏离了先前配置的值。在管线数据600(1-1)中,修改的状态设置s0'、s1'、s2'、s3'和s4'被发送,因此这些改变被记录在相应的更改位中。当完成高速缓存像素块1的通道1时,mp单元510传送包括状态设置s0、s1、s2、s3、s4、s5和s6的更改状态610(1-1),以便为高速缓存像素块1的通道2准备屏幕空间管线354。当应用上述的过滤机制时,状态设置s5和s6将被过滤并且不会被发送到屏幕空间管线354,因为这些设置没有被更新为先前通道的一部分。

如图6g所示,管线数据600(1-2)包括结合实施高速缓存像素块1的通道2发送到屏幕空间管线354的数据。管线数据600(1-2)还示出了更改位,其被设置以便跟踪哪些状态设置偏离了先前配置的值。在管线数据600(1-2)中,修改的状态设置s0'、s1'、s4”和s5'被发送,因此这些改变被记录在相应的更改位中。当完成高速缓存像素块1的通道2时,mp单元510传送包括状态设置s0、s1、s2、s3、s4、s5和s6的更改状态610(1-2),以便为高速缓存像素块1的通道3准备屏幕空间管线354。当应用上述过滤机制时,状态设置s2、s3和s6将被过滤并且不被发送到屏幕空间管线354,因为这些设置没有被更新为先前通道的一部分。

如图6h所示,管线数据600(1-3)包括结合高速缓存像素块1的通道3发送到屏幕空间管线354的数据。管线数据600(1-3)还示出了更改位,其被设置以便跟踪哪些状态设置偏离了先前配置的值。在管线数据600(1-3)中,修改的状态设置s0'、s1'、s4”、s5'、s6'和s1”被发送,因此这些改变被记录在相应的更改位中。在最后一个高速缓存像素块的最后一个通道结束时,针对具有相关联的状态掩码集的所有位的任何状态设置,更改位可以被清除。在该示例中,在高速缓存像素块1的通道3后,更改位将是0x7e(十六进制),这意味着对于所有四个通道而言,s1、s2、s3、s4、s5和s6不具有相同的值,在随后的重演(replay)中必须设置每个通道的值。四个通道中的每一个的起始值示于图6h中。

以这种方式,mp单元510跟踪哪些状态设置在通道之间改变,然后在需要时仅传送更新的状态设置。这种方法可以增加屏幕空间管线354的吞吐量,因为在通道之间需要更少的配置。至此在图6a-6h中描述的技术也分别结合图7和8以分步方式描述。

图7是根据本发明的一个实施例的用于在图形处理管线内实施多通道的方法步骤的流程图。虽然结合图1-6b的系统描述了方法步骤,但是本领域技术人员将理解的是,经配置以任何次序实施方法步骤的任何系统均在本发明的范围内。

如图所示,方法700开始于步骤702,其中mp单元510发起缓冲器520的处理。这样做时,mp单元510开始遍历存储在缓冲器520中的数据并接收基元数据和状态束。在步骤704中,mp单元510确定是否接收到基元数据。基元数据通常包括与图形基元相关联的数据或索引,以及指示基元应当在哪些通道中被处理的通道的基元掩码。如果在步骤704中没有接收到基元数据,则方法700进行到如下所述的步骤710。否则,方法700进行到步骤706。

在步骤706中,mp单元510将通道掩码512与包括在基元数据中的基元掩码进行比较,以确定是否应当在当前通道中处理相关联的图形基元。如果比较指示不应在当前通道中处理图形基元,则方法700进行到如下所述的步骤710。否则,方法700进行到步骤708。在步骤708中,mp单元510包括与当前通道的通道数据630中的基元数据相关联的基元。然后,方法700进行到步骤710。

在步骤710中,mp单元510确定是否接收到状态束。状态束通常包括一个或多个状态设置和状态掩码,所述状态掩码指示应根据那些一个或多个状态设置来配置哪些通道。如果在步骤710没有接收到状态束,则该方法进行到如下所述的步骤716。如果mp单元510确定在步骤710中接收到状态束,则方法700进行到步骤712。

在步骤712中,mp单元510将通道掩码512与包括在状态束中的状态掩码进行比较,以确定包括在状态束中的一个或多个状态设置是否应当用于为当前通道配置屏幕空间管线354。如果比较指示不应基于那些状态设置来配置屏幕空间管线354,则所述方法进行到如下所述的步骤716。否则,方法700进行到步骤714。在步骤714中,mp单元510包括用于当前通道的通道数据630中的一个或多个状态设置。然后,方法700进行到步骤716。

在步骤716中,mp单元510确定缓冲器520的遍历是否完成。如果遍历完成,则方法700结束。否则,方法700返回到步骤702,并继续处理缓冲器520。

对于通过屏幕空间管线的每个通道,方法700可以被实施一次或多次。结合实施方法700,mp单元510还可实施用于跟踪哪些状态设置需要被重新发送以用于后续通道的其他技术,如下文结合图8更详细地描述的。

图8是根据本发明的一个实施例的、用于跨多通道保持图形处理管线的状态的方法步骤的流程图。虽然结合图1-6b的系统描述了方法步骤,但本领域技术人员将理解的是,经配置以任何次序实施方法步骤的任何系统都在本发明的范围内。

如图所示,方法800开始于步骤802,其中mp单元510开始处理缓冲器520。在步骤804中,mp单元510确定是否从缓冲器520接收到任何状态设置。如果没有接收到状态设置,则方法800进行到步骤816,其中mp单元510确定附加数据是否驻留在缓冲器520中。如果实际上有更多数据包括在缓冲器520中,则方法800返回到步骤802。

如果在步骤804中,从缓冲器520接收到状态设置,则方法800进行到步骤806,其中mp单元510确定分块的高速缓存是否是激活(active)的。如果分块的高速缓存未激活,则方法800跳过步骤808和810,并进行到步骤812。否则,方法800进行到步骤808,其中mp单元510确定是否正在重演最后一个高速缓存像素块。如果最后一个高速缓存像素块没有被重演,则方法800进行到步骤818。否则,方法800进行到步骤810。在步骤810中,mp单元510确定是否正在重演间隔的最后一个通道。如果最后一个通道未被重演,则方法800进行到步骤818。否则,方法800进行到步骤812。在步骤812中,mp单元510确定状态掩码是否针对所有通道使能状态。如果事实上状态掩码确实针对所有通道使能状态,则方法800进行到步骤814。在步骤814中,mp单元510针对受影响状态清除更改位。在步骤812中,如果状态掩码没有针对所有通道使能状态,则方法800进行到步骤818,其中对于受影响的状态设置更改位。然后,该方法进行到步骤816,并如上所述进行。当在缓冲器520中没有发现附加数据时,方法800完成。

mp单元510可实施方法800以便跟踪哪些状态设置在通道之间改变。mp单元510可因此操作,以将屏幕空间管线354的总体状态恢复到每一单独通道所需的初始状态。使用此方法,mp单元510可通过避免重新配置屏幕空间管线354来节省资源,除非需要。至止描述的技术还可以适于对缓冲器520的部分实施多通道,然后对缓冲器520的其他部分实施多通道。该方法对于涉及修改z缓冲器的透明层的某些图形场景可能是有价值的,如下结合图9-11更详细地描述的。

跨多间隔边界的多通道渲染

图9是根据本发明的一个实施例的、图5的mp单元如何配置图3b的屏幕空间管线以实施多通道的概念图。在本文所讨论的示例中,mp单元510配置为实施两个通道。

如图所示,mp单元510配置为处理缓冲器920。缓冲器920通常类似于图5-6b所示的缓冲器520。然而,与缓冲器520相比,缓冲器920被不同地组织,并且包括不同的数据。具体地,缓冲器920被划分为间隔数据900(0)和900(1)。间隔数据900(0)位于间隔边界b0和b1之间。间隔数据900(1)位于间隔边界b1和b2之间。每个间隔数据900包括具有2位基元掩码的基元数据和具有2位状态掩码的状态束,如图所示。

对于每组间隔数据900,mp单元510利用一个或多个通道处理所包括的基元数据和状态设置,以生成通道数据930。通道数据930包括源自缓冲器520的基元和状态设置。每个不同的通道数据组930与不同的间隔和不同的通道相关联。对于给定的间隔和给定的通道,屏幕空间管线354以与上面结合图6a-6h所描述的相同的方式、基于相应的状态设置处理相关联的通道数据中的基元。对于每个间隔,由mp单元510实施的通道的每一个会在下面描述。

对于间隔0、通道0,mp单元510生成包括基元p0和p1以及状态设置s0的通道数据930(00)。这样做时,mp单元510解析来自边界b0和b1之间的、适用于通道0的基元和状态设置。然后,mp单元510可以基于所提取的状态设置来配置屏幕空间管线354,并使配置的屏幕空间管线354处理所提取的基元。

对于间隔0、通道1,mp单元510生成包括基元p0和p1以及状态设置s1的通道数据930(01)。这样做时,mp单元510解析来自边界b0和b1之间的、适用于通道1的基元和状态设置。然后,mp单元510可以基于所提取的状态设置配置屏幕空间管线354,并使配置的屏幕空间管线354处理提取的基元。

当完成间隔0的通道1时,mp单元510可接着进行到间隔1并处理间隔数据900(1)。然而,这样做之前,mp单元510将屏幕空间管线354的状态设置恢复为通道0所需的状态设置。mp单元510可依赖于上文结合图6a-6h所述的类似方法来恢复那些设置。一旦屏幕空间管线354为通道0被配置,mp单元510可接着进行到间隔1。

对于间隔1、通道0,mp单元510生成包括基元p2和状态设置s0的通道数据930(10)。这样做时,mp单元510解析边界b1和b2之间的、适用于通道0的基元和状态设置。然后,mp单元510可以基于所提取的状态设置来配置屏幕空间管线354,并使配置的屏幕空间管线354处理提取的基元。

对于间隔1、通道1,mp单元510生成包括基元p2和状态设置s1的通道数据930(11)。这样做时,mp单元510解析边界b1和b2之间的、适用于通道1的基元和状态设置。然后,mp单元510可以基于所提取的状态设置来配置屏幕空间管线354,并使配置的屏幕空间管线354处理提取的基元。

当完成间隔1的通道1时,mp单元510可接着移动到后续的像素块,且因此处理缓冲器920内的不同基元数据和状态设置。然而,这样做之前,mp单元510在像素块的开始处将屏幕空间管线354的状态设置恢复到通道0所需的状态设置。mp单元510可依赖于与上文结合图6a到图6h所描述的方法类似的方法来恢复那些设置。具体来说,mp单元510可维持更改位,所述更改位指示在准备新像素块时需要重新发送哪些状态设置。一旦屏幕空间管线354被配置用于下一个像素块,则mp单元510可接着进行到该像素块的间隔0、通道0。

本文描述的方法可适用于涉及复杂透明度层的图形场景,以便在移动到其它层的处理之前使某些层的处理完成。下面结合图10更详细地描述可有效应用本文所描述技术的示例性图形场景。

图10是根据本发明的一个实施例的、由图5的mp单元实施的操作如何可以提高渲染的效率和准确度的概念图。具体来说,mp单元510经配置以将特定基元集的渲染分离为不同间隔,以便支持那些基元的适当渲染。该功能可以在各种不同的渲染情况下实现。下面描述一个这样的示例性情况。在该示例中,当多个不透明和透明层被一起渲染时,mp单元510将基元的渲染分离。

如图所示,图形场景1000包括几何图形的层1010、1020和1030。层1010是不透明层,其包括由p1表示的一组不透明基元,层1020是透明层,其包括由p2表示的一组透明基元,层1030是不透明层,其包括由p3表示的一组不透明基元。图形场景1000的层内的基元以应用编程接口(api)顺序从观看位置1040被渲染。首先层1010的基元p1被渲染,再次层1020的基元p2被渲染,最后层1030的基元p3被渲染。在本文讨论的示例性场景中,层1020内的基元p2的渲染涉及更新z。

如果层1020的基元p2将与层1010的基元p1在相同间隔中一起被渲染,则基元p2可能被不正确地渲染。具体地,因为基元p2的渲染涉及更新z,并且那些基元从位置1040的视角遮挡一些基元p1,所以层1010中被遮挡的基元不会被渲染。因此,基元p2将不会混合在层1010的被遮挡的基元内。因此,尽管层1020是透明的,并且应当显示与层1010混合的一定程度,但是这种混合将不存在。

然而,为了避免诸如这样的问题,设备驱动器103配置mp单元510以将层1010、1020和1030的渲染分离成三个不同的间隔。因此,基元p1、p2和p3将受制于(subjectto)与那些不同间隔相关联的不同z通道,并且层1010内的被遮挡的基元不会为了层1020的基元而被舍弃。层1010中的基元p1将在第一间隔中被渲染,层1020中的基元p2将在第二间隔中被渲染,层1030中的基元p3将在第三间隔中被渲染。因此,当在第二间隔中处理基元p2时,屏幕空间管线354将渲染层1020内的基元p2以示出与层1010内的基元p1的适当混合,因为基元p1已在先前间隔中被渲染。

作为一般情况,设备驱动器103可以检测需要间隔的情况,然后相应地配置mp单元510。这样做时,设备驱动器103可以跟踪由创建基元层的应用所使用的状态,然后确定在涉及写入z的透明层和不透明层之间那些层何时交替。然后,设备驱动器103可以配置mp单元510以将透明层和不透明层分离成不同的间隔。在检测透明层中,设备驱动器103可检查α混合透明度、确定片段着色器是否丢弃像素、识别z通道像素计数何时启用,以及识别各种其它条件以确定可能需要的一个或多个间隔。

通过示例的方式在此描述的技术的优势是mp单元510不需要在不透明层和透明层之间清除缓冲器520以便保持适当的渲染。因此,图形场景内的基元可被深度分箱(bin),从而提高性能。本领域技术人员将理解的是,本文所讨论的示例仅意味着传达一种示例性情形,其中跨间隔分离基元的处理可能是有利的。作为一般情况,上面结合图9描述的技术可以应用于各种各样的不同场景中以改善渲染。下面结合图11以分步方式描述该技术。

图11是根据本发明的一个实施例的、用于配置图形处理管线以在多个间隔中实施多通道的方法步骤的流程图。虽然结合图1-6b及9-10的系统描述了方法步骤,但本领域技术人员将理解的是,经配置以任何次序实施方法步骤的任何系统均在本发明的范围内。

如图所示,方法1100开始于步骤1102,其中mp单元510发起缓冲器920的处理。缓冲器920包括基元数据和状态束,类似于图5的缓冲器520。如上结合图9所述,缓冲器920还包括间隔边界。在步骤1104中,mp单元510接收间隔边界。在步骤1106中,基于间隔边界,mp单元510确定通过屏幕空间管线354的、要实施的通道的数目。在步骤1108中,mp单元510为间隔中的每一个通道配置屏幕空间管线354,以处理所述间隔内的图形基元。在实施多通道时,mp单元510依赖于结合图6a-6h所描述的类似技术。

在步骤1110中,mp单元510确定是否完成当前间隔。如果未完成该间隔,则方法1100返回到步骤1108。如果完成该间隔,意味着间隔中的所有基元已跨过所指示的通道数目而被处理,然后,所述方法继续到步骤1112。

在步骤1112中,mp单元510将屏幕空间管线354返回到与最近的所完成的间隔的第一通道相关联的初始状态。这样做为随后的间隔做好管线准备。在实施步骤1112时,mp单元510可依赖更改位寄存器660。在步骤1114中,mp单元510确定是否完成当前像素块。如果尚未完成该像素块,则方法1100返回到步骤1102,并继续下一个间隔。否则,方法1100进行到步骤1116。在步骤1116中,mp单元510将屏幕空间管线354返回到处理像素块所需的初始状态。当实施步骤1114时,mp单元510可依赖更改位寄存器660或用于跟踪像素块的初始状态的另一组更改位。

本领域技术人员将认识到的是,方法1100可以分别结合上面结合图7和8描述的方法700和800来实现。例如,可以应用方法700中实施的技术来实施方法1100的步骤1108。同样,可以应用方法800中实施的技术来实施方法1100的步骤1112和/或1116。

上述多通道技术可在屏幕空间管线354内的一些或全部硬件上实施。此外,一些通道可仅需要屏幕空间管线254的一部分,而其他通道可仅需要不同的部分。例如,可以在sm310上实施像素着色操作,而在rop395内发生各种rop操作。为了实现这样的并行处理,可以以下面结合图12-13描述的类似方式来配置图形处理管线350。

通道的并行执行

图12示出了根据本发明的一个实施例的、经配置以同时实施涉及不同高速缓存像素块的不同通道的图3b的屏幕空间管线的一部分。如图所示,屏幕空间管线354包括设置380、光栅385、prop1205、zrop1210、先进先出(fifo)1225和sm310。pro1205和zrop1210可以包括在图3b的rop395内。sm310配置为执行像素着色器程序,并且因此可以实现也在图3b中示出的ps390。prop1205经由数据通路1215耦连到zrop1210。prop1205还经由数据通路1220耦连到sm310。fifo1225驻留在数据通路1220内。

屏幕空间管线354实现上文结合图5-11所讨论的多通道技术,以对高速缓存像素块实施不同的通道。某些类型的通道依赖于数据路径1215,而其他类型的通道依赖于数据路径1220。例如,对于涉及早期z工作的类型的通道,prop1205经由数据路径1215将像素块数据发送到zrop1210用于处理。然而,对于涉及颜色着色的类型的通道,prop1205经由数据通路1220将像素块数据发送到sm310用于处理。

屏幕空间管线354可跨数据路径1215和1220传送不同的像素块数据,以分别由zrop1210和sm310同时处理,从而并行化某些类型的通道。例如,假设屏幕空间管线354经配置以在高速缓存像素块上实施两个通道,仅z通道,随后是颜色通道。prop1205可以接收像素块1230,并且经由路径1215将该像素块发送到zrop1210用于早期z通道。当针对像素块1230完成早期z处理时,然后,prop1205将经所处理的像素块推送到fifo1225中。然后,prop1205可以接收像素块1240,并且经由路径1215将该像素块传送到zrop1210,用于早期z通道。在zrop1210在像素块1240上实施早期z通道的同时,sm310可以使fifo1225流出(drain)并且对像素块1230实施颜色通道。该功能可以通过同时利用多个数据路径以提高屏幕空间管线354可以实施通道的速度,从而隐藏每个这样的途径潜在产生的延时。

一般来说,fifo1225经调整大小以容纳与整个高速缓存像素块相关联的所有数据包。因此,prop1205可以在fifo1225内存储所有像素块1230,然后重新获取足够的存储器资源以将像素块1240的一些或全部传送到zrop1210。如果缺少fifo1225,在随后的像素块由prop1205接收到之前,sm310可能不能接收给定像素块的所有包。在上面讨论的示例中,如果没有fifo1225,prop1205可能不能将用于颜色通道的所有像素块1230传送到sm310。这可以背压(backpressure)prop1205,并且因此像素块1240的早期z处理将被中止,潜在地串行化屏幕空间管线254。然而,以所描述的方式实现fifo1225避免了这个问题,并且允许对不同的像素块并行化不同的通道。本领域技术人员将理解的是,除了涉及以上文所述的示例方式所描述的特定硬件的方式之外,可以以本文所述的方式并行化各种其他类型的通道。

屏幕空间管线354还配置为与设备驱动器103交互操作以基于每个通道配置sm310。具体地,设备驱动器103可以配置在sm310上执行的像素着色器,以根据当前通道实施不同类型的着色操作。该功能可以提高多通道配置的效率,其中,在一个通道期间激活后期z,接着在随后的通道中进行颜色着色。在常规配置中,在执行后期z操作时,像素着色器时将实施颜色着色以计算可见性。然而,在多通道配置中,不需要实施颜色着色,直到实际的颜色着色通道。

因此,设备驱动器103可以配置sm310以在后期z通道期间执行仅计算可见性并且不实施全色着色的轻量级(lightweight)着色器程序。后期z通道可能只影响z剔除单元。然后,在随后的颜色着色通道期间,设备驱动器103可以使sm310实施全径(full-bore)颜色着色。该方法通常可以应用于使用z预通道和z剔除的组合来减少颜色着色。

设备驱动器103将sm310配置为使用状态束实施依赖通道的着色。设备驱动器103可以向sm310传送状态束,其指示一个或多个通道以及与那些通道相关的配置数据。然后,sm310可以基于所包括的配置数据对所指示的通道实施某些操作。例如,设备驱动器103可以传送状态束,其指示在第一通道期间,sm310应当仅计算可见性并避免实施重的颜色着色工作。然后,随后的状态束可指示sm310应在第二通道期间执行的特定的着色器程序。sm310经配置以读取所接收的状态束内的数据,然后实施相关操作。在一个实施例中,设备驱动器103向sm310传送状态束,其包括类似于上面结合图5-11描述的状态掩码的状态掩码。所包括的状态掩码以先前描述的方式指示配置数据与哪些通路相关。

图13是根据本发明的一个实施例的、用于同时处理多个高速缓存像素块的方法步骤的流程图。虽然结合图1-6h,9-10和12的系统描述了方法步骤,但是本领域技术人员将理解的是,经配置以任何次序序实施方法步骤的任何系统均在本发明的范围内。

如图所示,方法1300开始于步骤1302,其中屏幕空间管线354接收为着色通道做好准备的第一像素块。屏幕空间管线354已经使用zrop1210对第一像素块实施之前的仅z通道。在步骤1304中,fifo1225缓冲第一像素块。fifo1225通常被调整大小以容纳整个高速缓存像素块,从而消除了从prop1205存储该像素块的部分的负担。在步骤1306中,prop1205接收为仅z通道做好准备的第二像素块。然后,prop1205可将第二像素块传送到zrop1210用于处理。在步骤1308中,sm310用第一像素块执行着色通道,同时,zrop1210用第二像素块执行仅z通道。随后方法1300结束。

屏幕空间管线1300可以实现方法1300,以并行化两个另外的串行任务,从而隐藏延时并加速像素块的处理。上述技术也可以在其他情况中实现。作为一般情况,将屏幕空间管线354中的不同通道并行化的任何方法均落在本发明的范围内。

图14是根据本发明的一个实施例的、用于实施依赖通道的颜色着色的方法步骤的流程图。虽然结合图1-6h、9-10和12的系统描述了方法步骤,但是本领域技术人员将理解的是,经配置以任何次序实施方法步骤的任何系统均在本发明的范围内。

如图所示,方法1400开始于步骤1402,其中sm310从设备驱动器103接收第一状态束,其包括用于第一通道的第一配置数据。第一状态束可以包括状态掩码,其指示应当将第一配置数据应用于第一通道。第一配置数据可以是诸如特殊值或程序代码等等。第一通道可以包括与后期z模式相关联的可见性计算。在步骤1404中,sm310基于用于第一通道的第一配置来用高速缓存像素块执行着色器程序。这样做时,sm310可以在不实施颜色着色的情况下针对高速缓存图块计算可见性数据。

在步骤1406中,sm310从设备驱动器103接收第二状态束,其包括用于第二通道的第二配置数据。第二状态束可以包括状态掩码,其指示应当将第二配置数据应用于第二通道。第二配置数据可以是诸如特殊值或程序代码等等。第二通道可以包括与后期z模式相关联的颜色着色操作。在步骤1408中,sm310基于第二通道的第二配置,用高速缓存像素块执行着色器程序。这样做时,sm310可以用高速缓存像素块实施颜色着色操作。

上述技术可以被应用,以在处理高速缓存像素块时,减少所需的颜色着色的量。具体地,方法1400可以被实现,以在不需要显著颜色着色的通道期间减少颜色着色操作,以及仅对涉及重的颜色着色操作的通道实施显著的颜色着色操作。本领域技术人员将认识到的是,分别结合图13和图14分别描述的方法1300和1400可以彼此结合实施,以进一步提高屏幕空间管线354的效率。例如,方法1300可以被实现,以提高第一和第二像素块在跨那些涉及早期z工作的像素块的第一和第二通道期间被处理的效率。然后,方法1400可以被应用以提高第一和第二像素块在涉及后期z工作的那些像素块的第三和第四通道期间被处理的效率。

总而言之,多通道单元与设备驱动器交互操作以配置屏幕空间管线,以用缓冲的图形基元实施多个处理通道。多通道单元从设备驱动器接收基元数据和状态束。基元数据包括图形基元和基元掩码。基元掩码指示特定的通道,在所述特定的通道期间图形基元应当被处理。状态束包括一个或多个状态设置和状态掩码。状态掩码指示状态设置应当被应用的特定通道。对于给定的通道,多通道单元提取用于该通道的状态设置,然后根据那些状态设置来配置屏幕空间管线。多通道单元还提取在该通道中要处理的图形基元。然后,多通道单元使配置的屏幕空间管线处理所提取的图形基元。

本文所描述的技术的至少一个优势在于,屏幕空间管线可经配置以采用经缓冲的基元实施各种z通道,并且随后采用那些相同的经缓冲的基元实施颜色着色通道。因此,可以正确地渲染某些类型的图形场景,而不需要从存储器重新获取图形数据。这些技术可以减少功率消耗,并因此提高移动设备的电池寿命。

已经出于说明的目的给出了各种实施例的描述,但是这些描述并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。

本实施例的各方面可以具体化为系统、方法或计算机程序产品。因此,本发明的各方面可以采取如下形式:完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者结合软件和硬件方面实施例,其在本文中可以全部统称为“电路”、“模块”或“系统”。进一步,本发明的各方面可以采取计算机程序产品的形式,具体化在一个或多个计算机可读介质中,其上具有计算机可读程序代码。

可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是但不限于诸如电、磁、光、电磁、红外或半导体系统、装置或设备或前述的任何合适的组合。计算机可读存储介质的更具体的示例(非穷举列表)将包括以下:具有一个或多个线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光存储设备、磁存储设备或前述的任何适当组合。在本文的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储程序,用于由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用。

以上参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述了本发明的各方面。应当理解的是,流程图说明和/或框图的每个块以及流程图说明和/或框图中的块的组合可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机的处理器或其他可编程数据处理装置以产生机器,这样,经由计算机的处理器或其他可编程数据处理装置执行的指令,使得在流程图和/或框图中指定的功能/动作能够实现。这种处理器可以是但不限于是,通用处理器、专用处理器、应用程序指定的处理器,或现场可编程。

附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个块可以代表代码的模块、片段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应注意的是,在一些替代实施方式中,框中标注的功能可以不按照附图中所示的顺序发生。例如,实际上,连续示出的两个块可以基本同时执行,或者这些块有时可以以相反的顺序执行,这取决于其所涉及的功能。还将注意到的是,框图和/或流程图图示中的每个框以及框图和/或流程图中的框的组合可以由实施指定功能或动作的、基于专用硬件系统或者专用硬件和计算机指令的组合来实现。

虽然前述内容针对本公开的实施例,但是在不脱离本公开的基本范围的情况下,可以设计本公开的其他和进一步的实施例,并且本公开的范围由随附权利要求确定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1