会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 电脑零配件 / 重排序缓冲区 / 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序

采用限缓冲区处理的世界和屏幕空间管线间基元重新排序

阅读:992发布:2020-05-12

IPRDB可以提供采用限缓冲区处理的世界和屏幕空间管线间基元重新排序专利检索,专利查询,专利分析的服务。并且本发明的一个实施例包括用于当渲染图像时处理与高速缓存像素块相关联的图形基元的方法。从图形处理管线的第一部分接收与第一渲染目标配置相关联的图形基元集,并将图形基元集存储在存储器中。检测指示图形基元集准备好用于处理的条件,并选择与图形基元集中的至少一个图形基元相交的高速缓存像素块。与高速缓存像素块相交的、图形基元集中的至少一个图形基元被传送到图形处理管线的第二部分用于处理。所公开的实施例的一个优点是图形基元和相关联的数据在高速缓存像素块渲染期间更可能保持存储在片上,从而减少功耗并改进渲染性能。,下面是采用限缓冲区处理的世界和屏幕空间管线间基元重新排序专利的具体信息内容。

1.一种用于当渲染图像时处理与一个或多个高速缓存像素块相关联的图形基元的方法,所述方法包括:从图形处理管线的第一部分接收与第一渲染目标配置相关联的第一多个图形基元;

将所述第一多个图形基元存储在第一存储器中;

检测指示所述第一多个图形基元准备好用于处理的条件;

选择与所述第一多个图形基元中的至少一个图形基元相交的高速缓存像素块;以及将与所述高速缓存像素块相交的、所述第一多个图形基元中的所述至少一个图形基元传送到所述图形处理管线的第二部分用于处理。

2.一种图形子系统,包括:

世界空间图形处理管线;

屏幕空间图形处理管线;以及

拼接单元,其耦连到所述世界空间图形处理管线和所述屏幕空间图形处理管线并配置为:从图形处理管线的第一部分接收与第一渲染目标配置相关联的第一多个图形基元,其中所述图形处理管线的第一部分是所述世界空间图形处理管线;

将所述第一多个图形基元存储在第一存储器中;

检测指示所述第一多个图形基元准备好用于处理的条件;

选择与所述第一多个图形基元中的至少一个图形基元相交的高速缓存像素块;以及将与所述高速缓存像素块相交的、所述第一多个图形基元中的所述至少一个图形基元传送到所述图形处理管线的第二部分用于处理,其中所述图形处理管线的第二部分是所述屏幕空间图形处理管线。

3.根据权利要求2所述的图形子系统,其中检测所述条件包括检测所述第一存储器已填满到与第一阈值相关联的第一级别。

4.根据权利要求2所述的图形子系统,其中检测所述条件包括检测第二存储器已填满到与第二阈值相关联的第二级别,所述第二存储器包括与所述第一多个图形基元相关联的顶点属性数据。

5.根据权利要求2所述的图形子系统,其中检测所述条件包括检测由软件应用所发出的、与所述第一多个图形基元相关联的转储命令。

6.根据权利要求2所述的图形子系统,其中检测所述条件包括检测与第二渲染目标配置相关联的第二多个图形基元的至少一部分准备好用于由所述图形处理管线的第一部分处理。

7.根据权利要求6所述的图形子系统,其中拼接引擎进一步配置为将高速缓存像素块大小从与所述第一渲染目标配置相关联的第一值改变到与第二渲染目标配置相关联的第二值。

8.根据权利要求2所述的图形子系统,其中拼接引擎进一步配置为将与所述高速缓存像素块相关联的剪切数据传送到所述图形处理管线的所述第二部分。

9.根据权利要求2所述的图形子系统,其中拼接引擎进一步配置为将和与所述高速缓存像素块相交的、所述第一多个图形基元中的所述至少一个图形基元相关联的包围基元传送到所述图形处理管线的所述第二部分。

10.根据权利要求2所述的图形子系统,其中所述第一多个图形基元中的所述至少一个第一图形基元与存储在第二存储器中的高速缓存像素块相关联。

说明书全文

采用限缓冲区处理的世界和屏幕空间管线间基元重新排序

[0001] 相关申请的交叉引用
[0002] 本申请要求于2012年10月26日所提交的序列号为61/719,271的、标题为“An approach for Tiled Caching”的美国临时专利申请的优先权,本文通过援引的方式对该相关申请的主题加以合并。

技术领域

[0003] 本发明的实施例总地涉及图形处理,并且,更具体地,涉及采用限缓冲区(buffer limited)处理的世界空间和屏幕空间管线之间的基元重新排序。

背景技术

[0004] 一些用于渲染图形图像的图形子系统实现拼接架构(tiling architecture),在该情况下诸如帧缓冲区的一个或多个渲染目标被分成称为像素块(tile)的屏幕空间分区。在这类拼接架构中,图形子系统重新布置工作使得与任何特定像素块相关联的工作留在片上高速缓存中的时间比采用未以该方式重新布置工作的架构的更长。该重新布置与非拼接架构相比有助于改进存储器带宽。
[0005] 典型地,随着图像的渲染的进展,渲染目标集随时间改变。例如,第一遍可使用渲染目标的第一配置来部分地渲染图像。第二遍可使用渲染目标的第二配置来进一步渲染图像。第三遍可使用第三渲染目标集来完成图像的最终渲染。在渲染过程期间,计算机图形子系统可使用任何数目的不同渲染目标配置以渲染最终图像。
[0006] 对于每个渲染目标配置,首先在世界空间管线中处理图形对象。世界空间管线创建与图形对象相关联的图形基元。由世界空间管线创建和传送图形基元而不考虑由渲染目标所表示的屏幕表面中的图形基元的位置。图形子系统将图形基元重新布置到像素块次序中,其中每个像素块表示屏幕表面的一部分。经重新布置的图形基元随后由屏幕空间管线所处理,同时维持应用编程接口(API)次序。
[0007] 虽然被分配用于存储像素块的存储器一般设计为针对给定的渲染目标配置来保持所有所需的图形基元,但某些条件可使该像素块存储器耗尽空间。例如,诸如当一个或多个图形对象被细微地曲面细分(tessellate)时,特定像素块可包括大量很小的基元。在这种情况下,在整个图像在世界空间管线中被处理之前拼接存储器可填满图形基元。另外,与图形基元相关联的其他数据,诸如顶点属性数据,可存储在通用高速缓存中。在某些情况下,高速缓存可填满顶点属性数据或与图形基元相关联的其他数据,这使图形基元被从拼接存储器中逐出并且使顶点数据或与图形基元相关联的其他数据被从高速缓存中逐出。这类被逐出的数据可被写到帧缓冲区存储器并在稍后被检索。
[0008] 上文的方法的一个缺点是帧缓冲区存储器一般是片外的;然而,拼接存储器和高速缓存存储器一般是片上的。片外存储器访问典型地消耗更多功率并花费更长时间来完成。这类增加的功耗可导致电池寿命缩短,尤其是针对位于移动设备中的图形子系统。另外,随着对帧缓冲区存储器的片外访问的增加,渲染时间增加,这导致较低的图形性能并且视觉体验变差。
[0009] 如前述内容示出的,本领域所需要的是用于减少在采用拼接架构的图形子系统中所访问的片外存储器的技术。

发明内容

[0010] 本发明的一个实施例阐述用于当渲染图像时处理与一个或多个高速缓存像素块相关联的图形基元的方法。方法包括从图形处理管线的第一部分接收与第一渲染目标配置相关联的图形基元集,并将图形基元集存储在第一存储器中。方法进一步包括检测指示图形基元集准备好用于处理的条件,并选择与图形基元集中的至少一个图形基元相交的高速缓存像素块。方法进一步包括将与高速缓存像素块相交的、图形基元集中的至少一个图形基元传送到图形处理管线的第二部分用于处理。
[0011] 其他实施例包括但不限于计算机可读介质,其包括指令,该指令使处理单元能够实现所公开的方法的一个或多个方面。其他实施例包括但不限于包括配置为实现所公开的方法的一个或多个方面的处理单元的子系统以及配置为实现所公开的方法的一个或多个方面的计算设备。
[0012] 所公开的方法的一个优点是在高速缓存像素块渲染期间图形基元和相关联的数据更可能保持存储在片上,从而减少功耗并改进渲染性能。

附图说明

[0013] 因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明的更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
[0014] 图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;
[0015] 图2是根据本发明的一个实施例的、包括在图1的并行处理子系统中的并行处理单元的框图;
[0016] 图3A是根据本发明的一个实施例的、包括在图2的并行处理单元中的通用处理集群的框图;
[0017] 图3B是根据本发明的一个实施例的、可实现在图2的并行处理单元内的图形处理管线的示意图;
[0018] 图4是根据本发明的一个实施例的、可配置图3B的图形处理管线对其进行生成和处理的高速缓存像素块的示意图;
[0019] 图5示出根据本发明的一个实施例的、与限缓冲区拼接相关联的拼接工作流程;
[0020] 图6A-6B阐述根据本发明的一个实施例的、用于当渲染图像时处理与一个或多个高速缓存像素块相关联的基元的方法步骤的流程图。

具体实施方式

[0021] 在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。
[0022] 系统概述
[0023] 图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。如所示,计算机系统100包括但不限于经由存储器桥105和通信路径113耦连到并行处理子系统112的中央处理单元(CPU)102和系统存储器104。存储器桥105经由通信路径106进一步耦连到I/O(输入/输出)桥107,并且I/O桥107转而耦连到交换器116。
[0024] 在操作中,I/O桥107配置为从诸如键盘或鼠标的输入设备108接收用户输入信息,并且经由通信路径106和存储器桥105将该输入信息转发到CPU102用于处理。交换器116配置为提供I/O桥107与计算机系统100的其他部件之间的连接,该其他部件诸如网络适配器118以及各种插卡120和121。
[0025] 还如所示,I/O桥107耦连到可配置为存储内容和应用和数据用于由CPU102和并行处理子系统112使用的系统盘114。一般来说,系统盘114提供用于应用和数据的非易失性存储并可包括固定或可移动硬盘驱动器、闪存设备和CD-ROM(压缩光盘只读存储器)、DVD-ROM(数字通用光盘-ROM)、蓝光、HD-DVD(高清晰度DVD)、或其他磁、光、或固态存储设备。最后,虽然未明确示出,但诸如通用串行总线或其他端口连接、压缩光盘驱动器、数字通用光盘驱动器、胶片录制设备及类似部件的其他部件,也可以连接到I/O桥107。
[0026] 在各种实施例中,存储器桥105可以是北桥芯片,并且I/O桥107可以是南桥芯片。另外,通信路径106和113以及计算机系统100内的其他通信路径可以使用任何技术上合适的协议实现,包括但不限于AGP(加速图形端口)、超传输或者任何其他本领域已知的总线或点到点通信协议。
[0027] 在一些实施例中,并行处理子系统112包括图形子系统,其将像素递送到显示设备110,该显示设备110可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等。在这类实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路。如下文在图2中以更多细节所描述的,可跨包括在并行处理子系统112内的一个或多个并行处理单元(PPU)包含这类电路。在其他实施例中,并行处理子系统112包含经优化用于通用和/或计算处理的电路。再者,可跨包括在并行处理子系统112内的一个或多个PPU包含这类配置为实施这类通用和/或计算操作的电路。在又一些实施例中,包括在并行处理子系统112内的一个或多个PPU可配置为实施图形处理、通用处理和计算处理操作。系统存储器104包括至少一个设备驱动程序103,其配置为管理并行处理子系统112内的一个或多个PPU的处理操作。
[0028] 在各种实施例中,并行处理子系统112可与图1的一个或多个其他元件集成以形成单个系统。例如,并行处理子系统112可与单个芯片上的CPU102和其他连接电路集成以形成片上系统(SoC)。
[0029] 应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、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。
[0030] 图2是根据本发明的一个实施例的、包括在图1的并行处理子系统112中的并行处理单元(PPU)202的框图。虽然图2描绘一个PPU202,但如上文所指示的,并行处理子系统112可包括任何数目的PPU202。如所示,PPU202耦连到本地并行处理(PP)存储器204。PPU202和PP存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其他技术上可行的方式来实现。
[0031] 在一些实施例中,PPU202包括图形处理单元(GPU),其可配置为实现图形渲染管线以实施与基于由CPU102和/或系统存储器104所供应的图形数据来生成像素数据相关的各种操作。当处理图形数据时,PP存储器204可用作图形存储器,其存储一个或多个常规帧缓冲区,并且如果需要的话也存储一个或多个其他渲染目标。此外,PP存储器204可用来存储和更新像素数据并将最终像素数据或显示帧递送到显示设备110用于显示。在一些实施例中,PPU202还可经配置用于通用处理和计算操作。
[0032] 在操作中,CPU102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,CPU102发出控制PPU202的操作的命令。在一些实施例中,CPU102写入用于PPU202的命令流到数据结构中(在图1或图2中未明确示出),该数据结构可位于系统存储器104、PP存储器204、或CPU102和PPU202都可访问的另一存储位置中。将指向数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理。PPU202从入栈缓冲区读取命令流,然后相对于CPU102的操作异步地执行命令。在生成多个帧缓冲区的实施例中,可以经由设备驱动程序103由应用程序为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度。
[0033] 还如所示,PPU202包括经由通信路径113和存储器桥105与计算机系统100的其余部分通信的I/O(输入/输出)单元205。I/O单元205生成用于在通信路径113上传送的包(或其他信号),并且还从通信路径113接收所有传入的包(或其他信号),将传入的包引导到PPU202的适当部件。例如,可将与处理任务相关的命令引导到主机接口206,而可将与存储器操作相关的命令(例如,对PP存储器204的读取或写入)引导到交叉开关单元210。主机接口206读取每个入栈缓冲区,并且将存储在入栈缓冲区中的命令流传送到前端212。
[0034] 如上文结合图1所提及的,PPU202到计算机系统100的其余部分的连接可以变化。在一些实施例中,包括至少一个PPU202的并行处理子系统112实现为可插入到计算机系统
100的扩展槽中的插卡。在其他实施例中,PPU202可采用诸如存储器桥105或I/O桥107的总线桥来集成在单个芯片上。再者,还有在其他实施例中,PPU202的一些或所有元件可与CPU102一起包括在单个集成电路或芯片系统(SoC)中。
[0035] 在操作中,前端212将从主机接口206所接收的处理任务传送到任务/工作单元207内的工作分布单元(未示出)。工作分布单元接收指向编码为任务元数据(TMD)并存储在存储器中的处理任务的指针。指向TMD的指针包括在存储为入栈缓冲区并由前端单元212从主机接口206接收的命令流中。可以编码为TMD的处理任务包括与所要处理的数据相关联的索引,以及定义数据将被如何处理的状态参数和命令。例如,状态参数和命令可定义要在数据上执行的程序。任务/工作单元207从前端212接收任务并确保在由每一个TMD所指定的处理任务发起前,将GPC208配置为有效状态。可以为每个TMD指定用来调度处理任务的执行的优先级。还可从处理集群阵列230接收处理任务。可选地,TMD可包括控制将TMD添加到处理任务列表(或到指向处理任务的指针的列表)的头部还是尾部的参数,从而提供在执行优先级之上的另一级别的控制。
[0036] 有利地,PPU202基于处理集群阵列230实现高度并行处理架构,该阵列230包括一套C个通用处理集群(GPC)208,其中C≥1。每个GPC208能够并发执行大量的(例如,几百或几千)线程,其中每个线程是程序的实例(instance)。在各种应用中,可分配不同的GPC208用于处理不同类型的程序或用于实施不同类型的计算。GPC208的分配可以取决于因每种类型的程序或计算所产生的工作量而变化。
[0037] 存储器接口214包括一套D个分区单元215,其中D≥1。每个分区单元215耦连到驻留在PPM存储器204内的一个或多个动态随机存取存储器(DRAM)220。在一个实施例中,分区单元215的数目等于DRAM220的数目,并且每个分区单元215耦连到不同的DRAM220。在其他实施例中,分区单元215的数目也可以不同于DRAM220的数目。本领域的普通技术人员将理解,DRAM220可以采用任何其他技术上合适的存储设备来替代。在操作中,诸如纹理映射图和帧缓冲区的各种渲染目标可以跨DRAM220而被存储,这允许分区单元215并行写入每个渲染目标的各部分以高效地使用PP存储器204的可用带宽。
[0038] 给定的GPC208可以处理要被写到PP存储器204内的任何DRAM220的数据。交叉开关单元210配置为路由每个GPC208的输出到任何分区单元215的输入或到任何其他GPC208用于进一步处理。GPC208经由交叉开关单元210与存储器接口214通信,以对各种DRAM220进行读取或写入。在一个实施例中,交叉开关单元210具有到I/O单元205的连接,以及经由存储器接口214到PP存储器204的连接,从而使在不同GPC208内的处理核心能够与系统存储器104或对于PPU202而言非本地的其他存储器通信。在图2的实施例中,交叉开关单元210直接与I/O单元205连接。在各种实施例中,交叉开关单元210可使用虚拟信道来分开GPC208与分区单元215之间的业务(traffic)流。
[0039] 再者,GPC208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于,线性和非线性数据变换、视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分(tessellation)着色器、顶点着色器、几何着色器、和/或像素/片段着色器程序)、通用计算操作等等。在操作中,PPU202配置为将数据从系统存储器104和/或PP存储器204转移到一个或多个片上存储器单元中,处理该数据,并且将结果数据写回到系统存储器104和/或PP存储器204。结果数据可以随后由其他系统部件访问,所述其他系统部件包括CPU102、并行处理子系统112内的另一PPU202、或计算机系统100内的另一并行处理子系统112。
[0040] 如上所示,在并行处理子系统112中可以包括任何数目的PPU202。例如,可在单个插卡上提供多个PPU202,或可将多个插卡连接到通信路径113,或可将一个或多个PPU202集成到桥式芯片中。在多PPU系统中的PPU202可以彼此同样或不同。例如,不同的PPU202可能具有不同数目的处理核心和/或不同容量的PP存储器204。在存在多个PPU202的实现方案中,可并行操作那些PPU从而以高于单个PPU202所可能达到的吞吐量来处理数据。包含一个或多个PPU202的系统可以以各种配置和形状因素来实现,包括但不限于台式电脑、笔记本电脑、手持式个人计算机或其他手持式设备、服务器、工作站、游戏控制台、嵌入式系统等等。
[0041] 图3A是根据本发明的一个实施例的、包括在图2的PPU202中的GPC208的框图。在操作中,GPC208可配置为并行执行大量线程以实施图形、一般处理和/或计算操作。如本文所使用的,“线程”是指在特定输入数据集上执行的特定程序的实例。在一些实施例中,单指令、多数据(SIMD)指令发出技术用来在不提供多个独立指令单元的情况下支持大量线程的并行执行。在其他实施例中,单指令、多线程(SIMT)技术用来使用配置为向GPC208内的处理引擎集发出指令的公共指令单元来支持大量一般来说同步的线程的并行执行。不同于所有处理引擎通常都执行同样指令的SIMD执行机制,SIMT执行通过给定程序允许不同线程更容易跟随分散执行路径。本领域普通技术人员将理解SIMD处理机制代表SIMT处理机制的功能子集。
[0042] 经由将从任务/工作单元207内的工作分布单元(未示出)所接收的处理任务分布到一个或多个流多处理器(SM)310的管线管理器305来控制GPC208的操作。管线管理器305还可配置为通过为由SM310所输出的所处理数据指定目的地来控制工作分布交叉开关330。
[0043] 在一个实施例中,GPC208包括一套M个SM310,其中M≥1。并且,每个SM310包括一套功能执行单元(未示出),诸如执行单元和加载-存储单元。针对任何的功能执行单元的处理操作可被管线化,其使新指令能够在前一个指令已完成执行之前被发出用于执行。可提供给定SM310内的功能执行单元的任何组合。在各种实施例中,功能执行单元可配置为支持各种各样的不同操作,包括整数和浮点运算(例如加法和乘法)、比较操作、布尔操作(AND、OR、XOR)、移位和各种代数函数的计算(例如平面插值与三角函数、指数函数和对数函数等等)。有利地,相同的功能执行单元可配置为实施不同的操作。
[0044] 在操作中,每个SM310配置为处理一个或多个线程组。如本文所使用的,“线程组”或“线程束”是指对不同输入数据并发执行相同程序的一组线程,所述组的一个线程被指派到SM310内的不同执行单元。线程组可以包括比SM310内的执行单元数目少的线程,在这种情况下在该线程组正在被处理的周期期间一些执行单元可闲置。线程组还可以包括比SM310内的执行单元数目多的线程,在这种情况下处理可在连续的时钟周期上发生。因为每个SM310可以并发支持多达G个线程组,结果是在任何给定时间在GPC208中可以执行多达G*M个线程组。
[0045] 另外,多个相关线程组可以在SM310内同时活动(在执行的不同阶段)。该线程组的集合在本文中称为“协作线程阵列”(“CTA”)或“线程阵列”。特定CTA的大小等于m*k,其中k是线程组中并发执行线程的数目,其典型地是SM310内的执行单元数目的整数倍,以及m是SM310内同时活动的线程组的数目。
[0046] 虽然在图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中的公共指令和数据。
[0047] 每个GPC208可以具有配置为将虚拟地址映射到物理地址中的相关联的存储器管理单元(MMU)320。在各种实施例中,MMU320可以驻留在GPC208或存储器接口214二者之一内。MMU320包括用来将虚拟地址映射到像素块或存储器页的物理地址的页表条目(PTE)集和可选地包括高速缓存行索引。MMU320可以包括地址转译后备缓冲区(TLB)或包括可以驻留在SM310内、在一个或多个L1高速缓存内、或在GPC208内的高速缓存。
[0048] 在图形和计算应用中,GPC208可经配置使得每个SM310耦连到纹理单元315用于实施纹理映射操作,诸如确定纹理样本位置、读取纹理数据以及过滤纹理数据。
[0049] 在操作中,为了将所处理的任务提供给另一个GPC208用于进一步处理或为了经由交叉开关单元210将所处理的任务存储在L2高速缓存(未示出)、并行处理存储器204或系统存储器104中,每个SM310将所处理的任务传送到工作分布交叉开关330。另外,预光栅操作(preROP)单元325配置为从SM310接收数据、将数据引导到分区单元215内的一个或多个光栅操作(ROP)单元、针对颜色混合实施优化、组织像素颜色数据和实施地址转译。
[0050] 应该理解本文所述的核心架构是示例性的并且变化和修改都是可能的。此外,任何数目的处理单元诸如SM310、纹理单元315、或preROP单元325可以包括在GPC208内。进一步地,如上文结合图2所描述的,PPU202可以包括任何数目的GPC208,所述GPC208配置为在功能上彼此相似以使得执行行为不取决于哪个GPC208接收特定处理任务。进一步地,每个GPC208独立于PPU202中的其他GPC208进行操作以为一个或多个应用程序执行任务。鉴于前述内容,本领域普通技术人员将理解图1-3A所描述的架构决不限制本发明的范围。
[0051] 图形管线架构
[0052] 图3B是根据本发明的一个实施例的、可实现在图2的PPU202内的图形处理管线350的示意图。如所示,图形处理管线350包括但不限于基元分布器(PD)355;顶点属性获取单元(VAF)360;顶点、曲面细分、几何处理单元(VTG)365;视窗缩放、剔除和裁剪单元(VPC)370;拼接单元375、设立单元(设立)380、光栅化器(光栅)385;还被标识为像素着色单元(PS)390的片段处理单元,以及光栅操作单元(ROP)395。
[0053] PD355从前端212收集与高阶表面、图形基元等相关联的顶点数据并将顶点数据传送到VAF360。
[0054] VAF360从共享存储器检索与传入的顶点中的每一个相关联的顶点属性,并将顶点数据与相关联的顶点属性一起存储到共享存储器中。
[0055] VTG365是可编程执行单元,其配置为执行顶点着色器程序、曲面细分程序和几何程序。这些程序处理从VAF360所接收的顶点数据和顶点属性,并产生图形基元以及在用于图形基元的每个顶点处的颜色值、表面法向矢量和透明度值,用于在图形处理管线350内进一步处理。虽然未明确示出,但在一些实施例中,VTG365可包括顶点处理单元、曲面细分初始化处理单元、任务生成单元、任务分布器、拓扑生成单元、曲面细分处理单元以及几何处理单元中的一个或多个。
[0056] 顶点处理单元是可编程执行单元,其配置为执行顶点着色器程序,按顶点着色器程序的指定来照明和变换顶点数据。例如,顶点处理单元可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到诸如世界空间或规格化设备坐标(NDC)空间的可替代的坐标系。顶点处理单元可读取由VAF存储在共享存储器中的顶点数据和顶点属性并可处理顶点数据和顶点属性。顶点处理单元415将所处理的顶点存储在共享存储器中。
[0057] 曲面细分初始化处理单元是可编程执行单元,其配置为执行曲面细分初始化着色器程序。曲面细分初始化处理单元处理由顶点处理单元所产生的顶点并生成称为补丁(patch)的图形基元。曲面细分初始化处理单元还生成各种补丁属性。曲面细分初始化处理单元随后将补丁数据和补丁属性存储在共享存储器中。在一些实施例中,曲面细分初始化着色器程序可称为外壳着色器(hull shader)或曲面细分控制着色器。
[0058] 任务生成单元从共享存储器检索用于顶点和补丁的数据和属性。任务生成单元生成用于处理顶点和补丁的任务以由图形处理管线350中的后续级处理。
[0059] 任务分布器重新分布由任务生成单元所产生的任务。由顶点着色器程序和曲面细分初始化程序的各种示例所产生的任务可在一个图形处理管线350和另一个之间显著变化。任务分布器重新分布这些任务,使得每个图形处理管线350在后续的管线级期间具有近似相同的工作量。
[0060] 拓扑生成单元检索由任务分布器所分布的任务。拓扑生成单元将包括与补丁相关联的顶点的顶点编入索引,并计算用于曲面细分顶点和连接经曲面细分的顶点以形成图形基元的索引的(U,V)坐标。拓扑生成单元随后将被编入索引的顶点存储在共享存储器中。
[0061] 曲面细分处理单元是可编程执行单元,其配置为执行曲面细分着色器程序。曲面细分处理单元从共享存储器读取输入数据并将输出数据写到共享存储器。共享存储器中的该输出数据被传递到下一着色器级、几何处理单元445作为输入数据。在一些实施例中,曲面细分着色器程序可称为域着色器或曲面细分评估着色器。
[0062] 几何处理单元是可编程执行单元,其配置为执行几何着色器程序,从而变换图形基元。顶点被分组以构建图形基元用于处理,其中图形基元包括三角形、线段、点等等。例如,几何处理单元可被编程以将图形基元细分成一个或多个新图形基元并计算用来将新图形基元光栅化的参数,诸如平面方程系数。
[0063] 几何处理单元将指定新图形基元的参数和顶点传送到VPC370。几何处理单元可读取存储在共享存储器中的数据用于在处理几何数据中使用。VPC370实施剪裁、剔除、透视校正和视窗变换以确定在最终所渲染的图像中的那些图形基元是潜在可视的以及哪些图形基元不是潜在可视的。VPC370随后将所处理的图形基元传送到拼接单元375。
[0064] 如本文所进一步描述的,拼接单元375是驻留在世界空间管线352和屏幕空间管线354之间的图形基元排序引擎。图形基元在世界空间管线352中被处理并随后被传送到拼接单元375。屏幕空间分成高速缓存像素块,其中每个高速缓存像素块与屏幕空间的一部分相关联。针对每个图形基元,拼接单元375标识与图形基元相交的高速缓存像素块集,即在本文称为“拼接”的过程。在拼接某数目的图形基元之后,拼接单元375在高速缓存像素块基础上处理图形基元,其中与特定高速缓存像素块相关联的图形基元被传送到设立单元380。拼接单元375一次一个高速缓存像素块地将图形基元传送到设立单元380。与多个高速缓存像素块相交的图形基元典型地在世界空间管线352中被处理一次,但随后被多次传送到屏幕空间管线354。
[0065] 这类技术改进在于屏幕空间管线354中的处理期间的高速缓存存储器局部性,其中与第一高速缓存像素块相关联的多个存储器操作访问L2高速缓存的区域,或在对第一高速缓存像素块的屏幕空间处理期间可保持驻留的任何其他技术上可行的高速缓存存储器的区域。一旦由屏幕空间管线354处理与第一高速缓存像素块相关联的图形基元,则可转储(flush)与第一高速缓存像素块相关联的L2高速缓存的部分,并且拼接单元可传送与第二高速缓存像素块相关联的图形基元。与第二高速缓存像素块相关联的多个存储器操作可随后访问在对第二高速缓存像素块的屏幕空间处理期间可保持驻留的L2高速缓存的区域。因此,到L2高速缓存和到渲染目标的整体存储器业务可减少。在一些实施例中,针对给定的图形基元实施一次世界空间计算,而不论在屏幕空间中与图形基元相交的高速缓存像素块的数目。
[0066] 设立单元380经由拼接单元375从VPC370接收顶点数据,并计算与图形基元相关联的参数,包括但不限于边沿方程、部分平面方程以及深度平面方程。设立单元380随后将所处理的图形基元传送到光栅化器385。
[0067] 光栅化器385扫描转换新图形基元并将片段和覆盖数据传送到像素着色单元390。另外,光栅化器385可配置为实施z剔除(z-culling)和其他基于z的优化。
[0068] 像素着色单元390是可编程执行单元,其配置为执行片段着色器程序,按片段着色器程序的指定来变换从光栅化器385所接收的片段。片段着色器程序可以像素级别粒度对片段着色,其中这类着色器程序可称为像素着色器程序。可替代地,片段着色器程序可以样本级别粒度对片段着色,其中每个像素包括多个样本,并且每个样本表示像素的一部分。可替代地,片段着色器程序可以任何其他技术上可行的粒度对片段着色,这取决于程控采样率。
[0069] 在各种实施例中,片段处理单元460可被编程以实施诸如透视校正、纹理映射、着色、混合等操作,以产生传送到ROP395的经着色的片段。像素着色单元390可读取存储在共享存储器中的数据。
[0070] ROP395是处理单元,其实施诸如模板(stencil)、z测试、混合等的光栅操作,并经由存储器接口214传送像素数据作为所处理的图形数据用于存储在图形存储器中,其中图形存储器典型地被结构化为一个或多个渲染目标。所处理的图形数据可存储在图形存储器、并行处理存储器204、或系统存储器104中用于在显示设备110上显示或用于由CPU102或并行处理子系统112进一步处理。在一些实施例中,ROP395配置为压缩写入到存储器的z或颜色数据以及解压缩从存储器读取的z或颜色数据。在各种实施例中,ROP395可位于存储器接口214中、GPC208中、GPC之外的处理集群阵列230中、或PPU202内的分立单元(未示出)中。
[0071] 可由PPU202内的一个或多个处理元件实现图形处理管线。例如,图3A的SM310中的一个可配置为实施VTG365和像素着色单元390中的一个或多个的功能。PD355、VAF360、VPC450、拼接单元375、设立单元380、光栅化器385和ROP395的功能还可由特定GPC208内的处理元件结合相应分区单元215来实施。可替代地,可使用用于上文所列出的功能中的一个或多个的专用固定功能处理元件来实现图形处理管线350。在各种实施例中,PPU202可配置为实现一个或多个图形处理管线350。
[0072] 在一些实施例中,图形处理管线350可分成世界空间管线352和屏幕空间管线354。世界空间管线352处理3D空间中的图形对象,其中每个图形对象的位置相对于其他图形对象和相对于3D坐标系是已知的。屏幕空间管线354处理已从3D坐标系投影到表示显示设备
110的表面的2D平面表面上的图形对象。例如,世界空间管线352可包括图形处理管线350中的从PD355到VPC370的管线级。屏幕空间管线354可包括图形处理管线350中的从设立单元
380到ROP395的管线级。拼接单元375将跟随在世界空间管线352的最后级也就是VPC370之后。拼接单元375将在屏幕空间管线354的第一级也就是设立单元380之前。
[0073] 在一些实施例中,世界空间管线352可进一步分成alpha阶段管线和beta阶段管线。例如,alpha阶段管线可包括图形处理管线350中的从PD355到任务生成单元的管线级。beta阶段管线可包括图形处理管线350中的从拓扑生成单元到VPC370的管线级。图形处理管线350在于alpha阶段管线中的处理期间实施第一操作集以及在于beta阶段管线中的处理期间实施第二操作集。如本文所使用的,操作集定义为由单个线程、线程组或由一致动作的多个线程组所执行的一个或多个指令。
[0074] 在采用多个图形处理管线350的系统中,可划分与图形对象集相关联的顶点数据和顶点属性,使得每个图形处理管线350具有近似相同的经过alpha阶段的工作量。alpha阶段处理可显著扩展顶点数据和顶点属性的量,使得由任务生成单元所产生的顶点数据和顶点属性的量显著大于由PD355和VAF360所处理的顶点数据和顶点属性的量。进一步地,与一个图形处理管线350相关联的任务生成单元可比与另一图形处理管线350相关联的任务生成单元产生显著更多数量的顶点数据和顶点属性,甚至在两个图形处理管线350在alpha节点管线的开始处处理相同数量的属性的情况下。在这类情况下,任务分布器重新分布由alpha阶段管线所产生的属性,使得每个图形处理管线350在beta阶段管线的开始处具有近似相同的工作量。
[0075] 请注意,如本文所使用的,对共享存储器的引用可包括任何一个或多个技术上可行的存储器,包括但不限于,由一个或多个SM310所共享的本地存储器,或经由存储器接口214可访问的存储器,诸如高速缓存存储器、并行处理存储器204或系统存储器104。还请注意,如本文所使用的,对高速缓存存储器的引用可包括任何一个或多个技术上可行的存储器,包括但不限于,L1高速缓存、L1.5高速缓存以及L2高速缓存。
[0076] 拼接式进行高速缓存
[0077] 图4是根据本发明的一个实施例的、可配置图3B的图形处理管线350以对其进行生成和处理的高速缓存像素块410(0)的示意图。如所示,高速缓存像素块410(0)表示屏幕空间400的一部分并分成多个光栅像素块420。
[0078] 屏幕空间400表示配置为存储由图形处理管线350内的功能单元所传送的所渲染的图像数据和其他数据的一个或多个存储器缓冲区。在一些实施例中,一个或多个存储器缓冲区可配置为一个或多个渲染目标。屏幕空间表示配置为存储由图形处理管线所渲染的图像的存储器缓冲区。屏幕空间400可与任何数目的渲染目标相关联,其中每个渲染目标可独立于其他渲染目标配置为包括任何数目的字段。渲染目标内的每个字段可独立于其他字段配置为包括任何数目的位。每个渲染目标可包括多个像元(像素),并且每个像素可转而包括多个样本。在一些实施例中,每个高速缓存像素块的大小可基于与屏幕空间相关联的渲染目标的大小和配置。在操作中,一旦渲染完成,那么一个或多个渲染目标中的像素可被传送到显示设备以显示所渲染的图像。
[0079] 以示例的方式,用于屏幕空间400的渲染目标集可包括八个渲染目标。第一渲染目标可包括四个字段,其表示与相应片段相关联的包括红、绿和蓝分量颜色的颜色和透明度信息。第二渲染目标可包括两个字段,其表示与相应片段相关联的深度和模板信息。第三渲染目标可包括三个字段,其表示与相应片段相关联的表面法向矢量信息,包括x轴法向矢量、y轴法向矢量和z轴法向矢量。剩余五个渲染目标可配置为存储与相应片段相关联的附加信息。这类配置可包括用于各种信息的存储,各种信息包括但不限于3D位置数据、漫射照明信息和高光照明信息。
[0080] 每个高速缓存像素块410表示屏幕空间400的一部分。为了清楚起见,图4仅示出五个高速缓存像素块410(0)-410(4)。在一些实施例中,高速缓存像素块在X和Y屏幕空间中可具有任意大小。例如,如果高速缓存像素块驻留在还用来存储其他数据的高速缓存存储器中,那么可定制高速缓存像素块大小以仅消耗高速缓存存储器的特定部分。高速缓存像素块的大小可基于若干因素,包括与屏幕空间400相关联的渲染目标的数量和配置、每像素的样本数量以及存储在高速缓存像素块中的数据是否被压缩。一般来说,高速缓存像素块被定制大小以增加高速缓存像素块数据保持驻留在高速缓存存储器中直到与高速缓存像素块相关联的所有图形基元被完全处理为止的可能性。
[0081] 光栅像素块420表示高速缓存像素块410(0)的一部分。如所示,高速缓存像素块410(0)包括以四个光栅像素块420宽和四个光栅像素块420高的阵列布置的十六个光栅像素块420(0)-420(15)。在包括多个GPC208的系统中,可在可用的GPC208中划分与给定高速缓存像素块410(0)相关联的处理。在示出的示例中,如果高速缓存像素块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内的任何其他处理实体中对给定的高速缓存像素块内的不同光栅像素块的处理加以分布。
[0082] 限缓冲区拼接
[0083] 在图像渲染期间,图形对象经过世界空间管线352被处理一次,这产生一个或多个与每个图形对象相关联的图形基元。针对每个图形基元或图形基元组计算包围框。虽然被描述为包围“框”,但可计算任何技术上可行的包围基元,包括但不限于正方形、矩形、不规则八边形、或任何其他规则或不规则的包围形状。每个图形基元随后被拼接,也就是说,图形基元与一个或多个屏幕空间像素块相关联,并且图形基元数据存储在拼接单元375中。每个图形基元随后由屏幕空间管线354处理一次或多次,基于图形基元所相交的像素块的数目。因此,针对每个图形对象实施一次世界空间计算而不考虑图形与多少屏幕高速缓存像素块相交。因为实施一次世界空间计算,所以设备驱动程序103可将图形处理管线350作为单遍管线来访问。这样,即使图形对象可被屏幕空间管线354处理多次,设备驱动程序103也不需要对图形对象和相关联的顶点属性以及其他状态属性遍历(loop over)超过一次。拼接单元375中的拼接存储器被定制大小以存储由世界空间管线352所产生的图形基元数据。然而对于某些图像来说,由世界空间管线352所产生的数据比可存储在拼接存储器和相关联的高速缓存存储器中的更多。在这类情况中,拼接单元375采用限缓冲区处理。下文进一步描述限缓冲区的处理。
[0084] 图5示出根据本发明的一个实施例的、与限缓冲区拼接相关联的拼接工作流程500。如所示,拼接工作流程500包括世界空间管线352、交叉开关505、拼接基础结构510以及屏幕空间管线354。除非下文另有描述,否则世界空间管线352和屏幕空间管线354与上文结合图3B的描述大致相同地起作用。
[0085] 世界空间管线352处理与正在图形处理管线350中被渲染的图像相关联的图形对象,并创建与图形对象相关联的图形基元。世界空间管线352随后将图形基元传送到交叉开关505。
[0086] 交叉开关505从世界空间管线352接收图形基元并将图形基元传送到拼接基础结构510。在包括多个图形处理管线350的GPC208中,GPC208可具有多个世界空间管线352、拼接基础结构510以及屏幕空间管线354。在这类情况中,交叉开关505酌情将从世界空间管线352中的一个所接收的图形基元传送到一个、若干或全部拼接基础结构。
[0087] 拼接基础结构510从交叉开关505接收图形基元并将图形基元拼接到屏幕空间像素块中。如所示,拼接基础结构510包括拼接单元375和L2高速缓存550。除非下文进一步描述,否则拼接单元375和L2高速缓存550与上文结合图3A-3B的描述大致相同地起作用。
[0088] 拼接单元375从交叉开关505接收图形基元并对数据进行拼接用于屏幕空间处理。如所示,拼接单元375包括拼接引擎515和拼接存储器520。
[0089] 拼接引擎515是处理单元,其处理从交叉开关505所接收的图形基元并将经处理的数据存储在拼接存储器520中。具体来讲,拼接引擎515为每个图形基元存储图形基元数据530,其中图形基元数据530包括但不限于,标识诸如点、线段或三角形的图形基元类型的基元描述符;以及指向图形基元的每个顶点的指针。图形基元以图形基元由世界空间管线352处理的次序被从交叉开关505接收。与图形基元相关联的数据以所接收的次序被存储而不考虑图形基元的屏幕空间位置。
[0090] 指向图形基元的每个顶点的指针可以以任何技术上可行的方式被指定,包括但不限于,直接存储器地址、从特定基地址的偏移地址、或数字索引。在一个实施例中,每个顶点指针在拼接存储器520中消耗存储器的四个字节。每个指向图形基元顶点的指针指向L2高速缓存550中的位置,其指定与顶点相关联的顶点属性数据560。拼接引擎515还存储包围框数据540,其中包围框数据540中的每个条目定义矩形包围框在屏幕空间中的位置和大小,该矩形包围框围绕(circumscribe)一个或多个相关联的图形基元。从包围框数据540,拼接引擎515可确定与每个图形基元相交的屏幕像素块集。
[0091] 拼接存储器520是专用片上存储器,其为拼接引擎515存储数据,包括但不限于图形基元数据530和包围框数据540。拼接存储器520操作为高速缓存存储器,其中不适合在拼接存储器520中的数据可被写入到以及读取自片外存储器,诸如较高级别高速缓存或帧缓冲区存储器。如所示,拼接存储器520包括图形基元数据530和包围框数据540。
[0092] 如结合图3A所描述的,L2高速缓存550是统一2级高速缓存。如所示,L2高速缓存550包括顶点属性数据560、状态信息数据570、一个或多个高速缓存像素块580以及常量数据590。
[0093] 顶点属性数据560是L2高速缓存550中的循环缓冲区,其包括与由世界空间管线352所处理的图形基元的顶点相关联的各种属性。顶点属性数据560采用EVICT_LAST逐出策略来存储,以增加顶点属性数据560更长时期地保持驻留在L2高速缓存550中的可能性。在一个实施例中,顶点属性数据560中的每个条目在L2高速缓存550中消耗存储器的六十四字节。存储在拼接存储器520的图形基元数据530中的顶点指针指向顶点属性数据560中的条目。
[0094] 状态信息数据570包括屏幕空间管线354所需的附加状态信息。在一些实施例中,状态信息数据570可包括与一个或多个顶点关联的数据,该一个或多个顶点如存储在顶点属性数据560中的。在一些实施例中,状态信息数据570可包括与存储在顶点属性数据560中的任何顶点均不关联的数据。
[0095] L2高速缓存550的高速缓存像素块580部分存储如结合图4所描述的一个或多个高速缓存像素块。随着屏幕空间管线354处理从拼接基础结构510所接收的图形基元,屏幕空间管线354访问L2高速缓存550的高速缓存像素块580部分中的相关联的数据。
[0096] L2高速缓存550的常量数据590部分存储未被存储在寄存器或其他存储器中的数据常量。
[0097] L2高速缓存550还存储与并行处理子系统112相关联的各种数据(未示出)。L2高速缓存550操作为高速缓存存储器,其中不适合在L2高速缓存550中的数据可写入到和读取自片外存储器,诸如帧缓冲区存储器。
[0098] 在包括多个图形处理管线350的GPC208中,每个GPC208可具有与每个拼接基础结构510相对应的屏幕空间管线354。在这类情况中,每个拼接基础结构510将所拼接的图形基元传送到相应屏幕空间管线354。
[0099] 屏幕空间管线354从相应拼接基础结构510接收所拼接的图形基元用于屏幕空间处理。具体地,屏幕空间管线354中的设立单元380从拼接单元375接收图形基元数据530和包围框数据540,并从L2高速缓存550接收顶点属性数据560、状态信息数据570和高速缓存像素块580。屏幕空间管线354随后以从拼接基础结构510所接收的像素块次序来处理所接收的数据。
[0100] 应理解的是,本文所示的系统是示例性的并且变形和修改是可能的。在一个示例中,拼接基础结构510被描述为具有拼接存储器520和L2高速缓存550,该拼接存储器520和L2高速缓存550中的每一个包括各种段(section)。然而,拼接存储器520和L2高速缓存550的各种段可存储在任何技术上可行的、片上或片外存储器中,不论这类存储器是否是高速缓存存储器。在另一示例中,拼接存储器520和L2高速缓存550的各部分可根据各种处理元件的需要来存储其他数据(未示出),各种元件包括但不限于,拼接单元375、GPC208以及CPU102。在又一示例中,顶点属性数据560被描述为采用EVICT_LAST逐出策略而被存储。然而,顶点属性数据560可服从任何技术上可行的高速缓存逐出策略。可替代地,诸如当顶点属性数据560存储在不是高速缓存存储器的存储器中时,顶点属性数据560可根本不服从高速缓存策略。
[0101] 图形基元数据530、包围框数据540、顶点属性数据560和其他数据中的每一个可被单独选择用于各种缓冲级别,包括但不限于,单缓冲、双重缓冲、三重缓冲和四重缓冲。例如,图形基元数据530和包围框数据540可被双重缓冲而顶点属性数据560可被三重缓冲并且常量数据可被单缓冲。可基于任何合适的标准来选择缓冲级别,包括但不限于,所存储数据的大小、数据的临界性、以及数据被期望保持驻留在片上存储器的持续时间。这类方法可增加与所处理的图形基元相关的数据在片上停留更长时期的可能性。另外,该方法可减少附加的存储器业务量,否则写入并随后从帧缓冲区存储器读回由世界空间管线352所生成的顶点属性数据560将引发该附加的存储器业务量。
[0102] 随着拼接单元375在逐像素块的基础上将图形基元重新排序,拼接单元375监视用于与拼接相关联的各种数据段的阈值级别,各种数据段包括但不限于,图形基元数据530、包围框数据540、顶点属性数据560和常量数据590。为这些数据段中的每一个单独设置阈值,以指示在使诸如拼接存储器520和L2高速缓存550的片上存储器中的一个满溢之前应何时处理当前在拼接存储器520中的数据。当在一个或多个数据段中达到阈值时,拼接单元375发起“转储”操作,其中存储在拼接存储器520中的图形基元在逐像素块的基础上被处理和发送到屏幕空间管线354。拼接存储器520中的相应条目随后被清空,这释放相关联的拼接存储器用于接收附加的图形基元。
[0103] 用于所处理的几何的存储器带宽可能是大量的,尤其是在几何扩张的情况中,诸如在曲面细分和几何着色期间。此外,当渲染包括许多小图形基元的图像时生成显著数量的图形基元数据530和顶点属性数据560。本文所描述的方法在拼接式渲染期间有利地减少存储器带宽。
[0104] 在一些实施例中,专用于在L2高速缓存550中存储顶点属性数据560的存储器可以是经由软件应用可编程的。这样,顶点属性数据560可被定制大小以允许溢出到帧缓冲区存储器中。在写入到和读取自帧缓冲区存储器的性能代价小于与转储拼接存储器520相关联的代价的情况中这类方法可以是有利的。
[0105] 图6A-6B阐述根据本发明的一个实施例的、用于当渲染图像时处理与一个或多个高速缓存像素块相关联的基元的方法步骤的流程图。虽然结合图1-5的系统描述方法步骤,但本领域普通技术人员应理解的是,配置为以任何次序实施方法步骤的任何系统在本发明的范围内。
[0106] 如所示,方法600开始于步骤602,其中拼接单元375接收与新渲染目标配置相对应的新高速缓存像素块大小。在步骤604,拼接单元375确定是否检测到转储条件。转储条件出于多种原因而发生,包括但不限于,一个或多个缓冲区已到达填满阈值、从应用程序接收转储命令、或检测到新渲染目标配置。如果未检测到转储条件,那么方法600前进到步骤606,其中拼接单元375确定是否已从世界空间管线352接收新图形基元。如果已从世界空间管线352接收新图形基元,那么方法600前进到步骤608,其中拼接单元375将所接收的图形基元存储在拼接存储器520中。方法600随后返回步骤604,如上文所描述的。然而如果在步骤
606,尚未从世界空间管线352接收新图形基元,那么方法600前进到步骤604,如上文所述。
[0107] 返回到步骤604,如果检测到转储条件,那么方法600前进到步骤610,其中拼接单元375确定拼接存储器520是否包括非空的像素块用于处理。如果拼接存储器520包括非空的像素块用于处理,那么方法600前进到步骤612,其中拼接单元375选择像素块用于处理。在步骤614,拼接单元375解析在拼接存储器520中的图形基元数据530以找到与所选择的像素块相交的图形基元。在步骤616,拼接单元375将与所选择的像素块的位置和大小相关联的剪切(scissor)数据传送到屏幕空间管线354,其中剪切数据定义相交图形基元位于所选择的像素块内的部分。在步骤618,拼接单元375将与相交图形基元相关联的图形基元数据
530传送到屏幕空间管线354。拼接单元375还可传送包围框数据540,诸如与所传送的图形基元中的一个或多个相关联的包围框的位置和大小。方法600随后返回步骤610,如上文所描述的。
[0108] 返回到步骤610,如果拼接存储器520不包括非空像素块用于处理,那么方法600前进到步骤620,其中拼接单元375确定步骤608的转储条件是否是由于新渲染目标配置。如果转储条件不是由于新渲染目标配置,那么方法600返回步骤604,如上文描述的。然而如果在步骤620,转储条件是由于新渲染目标配置,那么方法600返回步骤602,如上文所描述的。
[0109] 以此方式,拼接单元375持续地从世界空间管线352接收图形基元并将所拼接图形基元传送到屏幕空间管线354。如果拼接存储器520是双重缓冲的,那么拼接单元375将从世界空间管线352所接收的图形基元存储到一个缓冲区中并从其他缓冲区将所拼接的图形基元传送到屏幕空间管线354。如果拼接存储器520是三重缓冲的,那么拼接单元375将从世界空间管线352所接收的图形基元存储到两个缓冲区中并从第三缓冲区将所拼接的图形基元传送到屏幕空间管线354。可替代地,拼接单元375将从世界空间管线352所接收的图形基元存储到一个缓冲区中并从其他两个缓冲区将所拼接的图形基元传送到屏幕空间管线354。
[0110] 总而言之,图形对象经过世界空间管线被处理一次并存储在世界空间管线的末尾和屏幕空间管线的起始之间的拼接存储器中。几何基元数据存储在片上拼接存储器中,而相关联的数据诸如顶点属性数据存储在片上高速缓存存储器中。各种阈值级别针对拼接存储器、高速缓存存储器和其他相关联的片上存储区域限制填满级别。如果片上存储器填满到相应阈值级别,那么拼接存储器被转储,借以停止拼接,并处理拼接存储器中的图形基元。随后关于未被处理的图形基元恢复拼接。另一特征是高速缓存存储器中的顶点属性数据采用EVICT_LAST策略来存储,这增加顶点属性数据随着拼接恢复和处理附加的图形基元而保持驻留的可能性。在一些实施例中,在用于写入和读取帧缓冲区存储器的代价被确定小于用于转储拼接存储器中的图形基元的代价的情况下,拼接存储器中的图形基元或高速缓存存储器中的顶点属性数据可被允许“溢出”到帧缓冲区存储器中。
[0111] 所公开的方法的一个优点是图形基元和相关联的数据在高速缓存像素块渲染期间更可能保持存储在片上,从而减少功耗并改进渲染性能。所公开的方法的另一优点是实施一次世界空间处理而不管几何落在屏幕上的多少高速缓存像素块中。因此,应用程序和设备驱动程序不需要对图形对象和相关联的数据实施多遍处理。结果,应用程序和设备驱动程序可具有更简化的结构,带来更少的编程错误和进一步的性能改进。
[0112] 本发明的一个实施例可被实施为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(i)不可写的存储介质(例如,计算机内的只读存储器设备,诸如可由光盘只读存储器(CD-ROM)驱动器读取的CD-ROM盘、闪存存储器、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息;和(ii)可写的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
[0113] 以上已参照具体实施例对本发明进行了描述。然而,本领域普通技术人员将理解的是,可对此做出各种修改和改变而不脱离如随附权利要求书中所阐述的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为是例示性而非限制性的意义。
[0114] 因此,本发明的实施例的范围在下面的权利要求中阐述。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用