计算;推算;计数设备的制造及其应用技术通过在渲染前针对交错的屏幕区域进行预测试来进行几何图形的高效多gpu渲染的系统和方法技术领域1.本公开涉及图形处理,并且更具体地涉及在为应用渲染图像时的多gpu协作。背景技术:2.近年来,在线服务不断推动,允许在云游戏服务器和通过网络连接的客户端之间以流式传输格式进行在线游戏或云游戏。由于按需提供游戏名称、执行更复杂游戏的能力、玩家之间联网以进行多玩家游戏的能力、玩家之间的资产共享、玩家和/或观众之间的即时体验共享、允许朋友观看朋友玩视频游戏、让朋友加入朋友正在进行的游戏进行等,流式传输格式越来越受欢迎。3.云游戏服务器可以被配置为向一个或多个客户端和/或应用提供资源。也就是说,云游戏服务器可以配置有能够高吞吐量的资源。例如,单个图形处理单元(gpu)可以达到的性能是有限的。为了在生成场景时渲染更复杂的场景或使用更复杂的算法(例如材质、照明等),可能需要使用多个gpu来渲染单个图像。然而,这些图形处理单元的同等使用是难以实现的。此外,即使有多个gpu使用传统技术为应用处理图像,也无法支持对应增加的屏幕像素计数和几何图形密度(例如,四个gpu不能写入四倍的像素和/或处理图像的四倍顶点或图元)。4.正是在这种背景下,出现了本公开的实施方案。技术实现要素:5.本公开的实施方案涉及使用多个gpu协作来渲染单个图像,诸如通过在渲染之前针对可能交错的屏幕区域进行预测试来为应用进行几何图形的多gpu渲染。6.本公开的实施方案公开了一种用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分。屏幕区域是交错的。该方法包括将图像帧的多个几何图形分配给多个gpu以用于几何图形测试。该方法包括将由应用生成的图像帧的几何图形分配给gpu以用于几何图形测试。该方法包括在gpu处执行几何图形测试以生成关于该几何图形及其与多个屏幕区域中的每一个的关系的信息。该方法包括在多个gpu中的每一个处使用该信息来渲染该几何图形,其中使用该信息可以包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。7.在另一实施方案中,公开了一种用于执行方法的非暂时性计算机可读介质。该计算机可读介质包括用于使用多个图形处理单元(gpu)为应用渲染图形的程序指令。该计算机可读介质包括用于基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任的程序指令,每个gpu具有多个gpu已知的对应责任划分,其中所述多个屏幕区域中的屏幕区域是交错的。该计算机可读介质包括用于将由应用生成的图像帧的几何图形分配给gpu以用于几何图形预测试的程序指令。该计算机可读介质包括用于在gpu处执行几何图形预测试以生成关于该几何图形及其与多个屏幕区域中的每一个的关系的信息的程序指令。该计算机可读介质包括用于在渲染图像帧时在多个gpu中的每一个处使用该信息的程序指令。8.在另一实施方案中,公开了一种计算机系统,包括处理器和存储器,所述存储器耦合到处理器并且其中存储有指令,所述指令如果由计算机系统执行,则致使计算机系统执行用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分,其中所述多个屏幕区域中的屏幕区域是交错的。该方法包括将由应用生成的图像帧的几何图形分配给gpu以用于几何图形预测试。该方法包括在gpu处执行几何图形预测试以生成关于该几何图形及其与多个屏幕区域中的每一个的关系的信息。该方法包括在渲染图像帧时在多个gpu中的每一个处使用该信息。9.本公开的实施方案公开了一种用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分。该方法包括在预测试gpu处对由应用生成的图像帧的多个几何图形执行几何图形测试,以生成关于每个几何图形及其与多个屏幕区域中的每一个的关系的信息。该方法包括在多个gpu中的每一个处使用为多个几何图形中的每一个生成的信息来渲染所述多个几何图形,其中使用该信息包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。10.在另一实施方案中,公开了一种用于执行方法的非暂时性计算机可读介质。该计算机可读介质包括用于使用多个图形处理单元(gpu)为应用渲染图形的程序指令。该计算机可读介质包括用于基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任的程序指令,每个gpu具有多个gpu已知的对应责任划分。该计算机可读介质包括用于在预测试gpu处对由应用生成的图像帧的多个几何图形执行几何图形测试,以生成关于每个几何图形及其与多个屏幕区域中的每一个的关系的信息的程序指令。该计算机可读介质包括用于在多个gpu中的每一个处使用为多个几何图形中的每一个生成的信息来渲染所述多个几何图形的程序指令,其中使用该信息包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。11.在另一实施方案中,公开了一种计算机系统,包括处理器和存储器,所述存储器耦合到处理器并且其中存储有指令,所述指令如果由计算机系统执行,则致使计算机系统执行用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分。该方法包括在预测试gpu处对由应用生成的图像帧的多个几何图形执行几何图形测试,以生成关于每个几何图形及其与多个屏幕区域中的每一个的关系的信息。该方法包括在多个gpu中的每一个处使用为多个几何图形中的每一个生成的信息来渲染所述多个几何图形,其中使用该信息包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。12.本公开的实施方案公开了一种用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分。该方法包括在由应用生成的前一图像帧的渲染阶段期间在多个gpu处渲染第一多个几何图形。该方法包括为前一图像帧的渲染生成统计数据。该方法包括基于统计数据将由应用生成的当前图像帧的第二多个几何图形分配给多个gpu用于几何图形测试。该方法包括在当前图像帧上对第二多个几何图形执行几何图形测试,以生成关于第二多个几何图形中的每一个及其与多个屏幕区域中的每一个的关系的信息,其中几何图形测试是基于分配在多个gpu中的每一个处执行。该方法包括在多个gpu中的每一个处使用为第二多个几何图形中的每一个生成的信息来渲染所述第二多个几何图形,其中使用该信息可以包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。13.在另一实施方案中,公开了一种用于执行方法的非暂时性计算机可读介质。该计算机可读介质包括用于使用多个图形处理单元(gpu)为应用渲染图形的程序指令。该计算机可读介质包括用于基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任的程序指令,每个gpu具有多个gpu已知的对应责任划分。该计算机可读介质包括用于在由应用生成的前一图像帧的渲染阶段期间在多个gpu处渲染第一多个几何图形的程序指令。该计算机可读介质包括用于为渲染前一图像帧生成统计数据的程序指令。该计算机可读介质包括用于基于统计数据将由应用生成的当前图像帧的第二多个几何图形分配给多个gpu用于几何图形测试的程序指令。该计算机可读介质包括用于在当前图像帧上对第二多个几何图形执行几何图形测试,以生成关于第二多个几何图形中的每一个及其与多个屏幕区域中的每一个的关系的信息的程序指令,其中几何图形测试是基于分配在多个gpu中的每一个处执行。该计算机可读介质包括用于在多个gpu中的每一个处使用为第二多个几何图形中的每一个生成的信息来渲染所述第二多个几何图形的程序指令,其中使用该信息可以包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。14.在另一实施方案中,公开了一种计算机系统,包括处理器和存储器,所述存储器耦合到处理器并且其中存储有指令,所述指令如果由计算机系统执行,则致使计算机系统执行用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分。该方法包括在由应用生成的前一图像帧的渲染阶段期间在多个gpu处渲染第一多个几何图形。该方法包括为前一图像帧的渲染生成统计数据。该方法包括基于统计数据将由应用生成的当前图像帧的第二多个几何图形分配给多个gpu用于几何图形测试。该方法包括在当前图像帧上对第二多个几何图形执行几何图形测试,以生成关于第二多个几何图形中的每一个及其与多个屏幕区域中的每一个的关系的信息,其中几何图形测试是基于分配在多个gpu中的每一个处执行。该方法包括在多个gpu中的每一个处使用为第二多个几何图形中的每一个生成的信息来渲染所述第二多个几何图形,其中使用该信息可以包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。15.本公开的实施方案公开了一种用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分。该方法包括将图像帧的多个几何图形分配给多个gpu以用于几何图形测试。该方法包括设置配置一个或多个着色器以执行几何图形测试的第一状态。该方法包括在多个gpu处对多个几何图形执行几何图形测试,以生成关于每个几何图形及其与多个屏幕区域中的每一个的关系的信息。该方法包括设置配置一个或多个着色器以执行渲染的第二状态。该方法包括在多个gpu中的每一个处使用为多个几何图形中的每一个生成的信息来渲染所述多个几何图形,其中使用该信息包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。16.在另一实施方案中,公开了一种用于执行方法的非暂时性计算机可读介质。该计算机可读介质包括用于使用多个图形处理单元(gpu)为应用渲染图形的程序指令。该计算机可读介质包括用于基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任的程序指令,每个gpu具有多个gpu已知的对应责任划分。该计算机可读介质包括用于将图像帧的多个几何图形分配给多个gpu以用于几何图形测试的程序指令。该计算机可读介质包括用于设置配置一个或多个着色器以执行几何图形测试的第一状态的程序指令。该计算机可读介质包括用于在多个gpu处对多个几何图形执行几何图形测试,以生成关于每个几何图形及其与多个屏幕区域中的每一个的关系的信息的程序指令。该计算机可读介质包括用于设置配置一个或多个着色器以执行渲染的第二状态的程序指令。该计算机可读介质包括用于在多个gpu中的每一个处使用为多个几何图形中的每一个生成的信息来渲染所述多个几何图形的程序指令,其中使用该信息包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。17.在另一实施方案中,公开了一种计算机系统,包括处理器和存储器,所述存储器耦合到处理器并且其中存储有指令,所述指令如果由计算机系统执行,则致使计算机系统执行用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分。该方法包括将图像帧的多个几何图形分配给多个gpu以用于几何图形测试。该方法包括设置配置一个或多个着色器以执行几何图形测试的第一状态。该方法包括在多个gpu处对多个几何图形执行几何图形测试,以生成关于每个几何图形及其与多个屏幕区域中的每一个的关系的信息。该方法包括设置配置一个或多个着色器以执行渲染的第二状态。该方法包括在多个gpu中的每一个处使用为多个几何图形中的每一个生成的信息来渲染所述多个几何图形,其中使用该信息包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。18.本公开的实施方案公开了一种用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分。该方法包括将图像帧的多个几何图形分配给多个gpu以用于几何图形测试。该方法包括将第一组着色器对第一组几何图形执行几何图形测试和渲染与第二组着色器对第二组几何图形执行几何图形测试和渲染交错。几何图形测试生成关于第一组或第二组中的每个几何图形及其与多个屏幕区域中的每一个的关系的对应信息。多个gpu使用对应的信息来渲染第一组或第二组中的每一个几何图形,其中使用该信息包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。19.在另一实施方案中,公开了一种用于执行方法的非暂时性计算机可读介质。该计算机可读介质包括用于使用多个图形处理单元(gpu)为应用渲染图形的程序指令。该计算机可读介质包括用于基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任的程序指令,每个gpu具有多个gpu已知的对应责任划分。该计算机可读介质包括用于将图像帧的多个几何图形分配给多个gpu以用于几何图形测试的程序指令。该计算机可读介质包括用于将第一组着色器对第一组几何图形执行几何图形测试和渲染与第二组着色器对第二组几何图形执行几何图形测试和渲染交错的程序指令。几何图形测试生成关于第一组或第二组中的每个几何图形及其与多个屏幕区域中的每一个的关系的对应信息。多个gpu使用对应的信息来渲染第一组或第二组中的每一个几何图形,其中使用该信息包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。20.在另一实施方案中,公开了一种计算机系统,包括处理器和存储器,所述存储器耦合到处理器并且其中存储有指令,所述指令如果由计算机系统执行,则致使计算机系统执行用于图形处理的方法。该方法包括使用多个图形处理单元(gpu)为应用渲染图形。该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,每个gpu具有多个gpu已知的对应责任划分。该方法包括将图像帧的多个几何图形分配给多个gpu以用于几何图形测试。该方法包括将第一组着色器对第一组几何图形执行几何图形测试和渲染与第二组着色器对第二组几何图形执行几何图形测试和渲染交错。几何图形测试生成关于第一组或第二组中的每个几何图形及其与多个屏幕区域中的每一个的关系的对应信息。多个gpu使用对应的信息来渲染第一组或第二组中的每一个几何图形,其中使用该信息包括例如如果已经确定该几何图形不与分配到给定gpu的任何屏幕区域重叠,则完全跳过渲染。21.根据以下结合附图理解的具体实施方式,本公开的其他方面将变得显而易见,所述附图以示例的方式示出了本公开的原理。附图说明22.通过参考结合附图的以下描述,可以最好地理解本公开,在附图中:23.图1是根据本公开的实施方案的用于通过网络在一个或多个云游戏服务器之间提供游戏的系统的示意图,该云游戏服务器被配置为实现多个gpu协作以渲染单个图像,包括通过针对可能交错的屏幕区域预测试几何图形来为应用进行几何图形的多gpu(图形处理单元)渲染。24.图2是根据本公开的一个实施方案的其中多个gpu协作以渲染单个图像的多gpu架构的示意图。25.图3是根据本公开的一个实施方案的多个图形处理单元资源的示意图,所述资源被配置用于通过针对可能交错的屏幕区域预测试几何图形来为应用进行几何图形的多gpu渲染。26.图4是根据本公开的一个实施方案的实现被配置用于多gpu处理以使得多个gpu协作以渲染单个图像的图形流水线的渲染架构的示意图。27.图5是图示了根据本公开的一个实施方案的用于图形处理的方法的流程图,该方法包括通过在渲染之前针对交错的屏幕区域进行预测试来为应用进行几何图形的多gpu渲染。28.图6a是根据本公开的一个实施方案的在执行多gpu渲染时被细分为象限的屏幕的示意图。29.图6b是根据本公开的一个实施方案的在执行多gpu渲染时被细分为多个交错区域的屏幕的示意图。30.图7a是根据本公开的一个实施方案的由协作以渲染单个图像帧的多个gpu共享的渲染命令缓冲区的示意图,渲染包括几何图形部分的预测试和渲染部分。31.图7b-1图示了根据本公开的一个实施方案的包括由多个gpu渲染的四个对象的图像,并且示出了在渲染图像的对象时每个gpu的屏幕区域责任。32.图7b-2是图示了根据本公开的一个实施方案的当渲染图7b-1的四个对象时由每个gpu执行的渲染的表格。33.图7c是图示了根据本公开的一个实施方案的在通过多个gpu的协作渲染图像帧(例如,图7b-1的图像)时由一个或多个gpu执行的几何图形预测试和几何图形渲染的执行的示意图。34.图8a图示了根据本公开的一个实施方案的当多个gpu协作渲染单个图像时针对屏幕区域的对象测试。35.图8b图示了根据本公开的一个实施方案的当多个gpu协作渲染单个图像时针对屏幕区域的对象的部分的测试。36.图9a-图9c图示了根据本公开的一个实施方案的当多个gpu协作渲染单个图像时用于将屏幕区域分配给对应gpu的各种策略。37.图10是图示了根据本公开的实施方案的用于对多个几何图形执行几何图形预测试的gpu分配的各种分布的示意图。38.图11a是图示了根据本公开的一个实施方案的由多个gpu对前一图像帧进行几何图形预测试和渲染,以及在当前图像帧中使用在渲染期间收集的统计数据来影响将当前图像帧的几何图形的预测试分配给多个gpu的示意图。39.图11b是图示了根据本公开的一个实施方案的图形处理方法的流程图,包括由多个gpu对前一图像帧进行几何图形预测试和渲染,以及在当前图像帧中使用在渲染期间收集的统计数据来影响将当前图像帧的几何图形的预测试分配给多个gpu。40.图12a是图示了根据本公开的一个实施方案的被配置为通过命令缓冲区的一部分在两次通过中执行图像帧的几何图形的预测试和渲染两者的着色器的使用的示意图。41.图12b是图示了根据本公开的一个实施方案的图形处理方法的流程图,包括通过命令缓冲区的一部分在两次通过中使用相同的一组着色器来执行图像帧的几何图形的预测试和渲染两者。42.图13a是图示了根据本公开的一个实施方案的被配置为执行几何图形测试和渲染两者的着色器的使用的示意图,其中针对不同组几何图形执行的几何图形测试和渲染是使用对应命令缓冲区的单独部分交错的。43.图13b是图示了根据本公开的一个实施方案的图形处理方法的流程图,包括使用对应命令缓冲区的单独部分来针对不同组几何图形使图像帧的几何图形的预测试和渲染交错。44.图14图示了可用于执行本公开的各种实施方案的各方面的示例装置的部件。具体实施方式45.虽然出于说明目的,以下详细说明包含许多具体细节,但是本领域的普通技术人员将会了解,以下细节的许多变化和更改在本公开的范围内。因此,阐明以下所描述的本公开的各个方面,而本说明书的随附权利要求书的概括性没有任何损失,并且不对此权利要求书施加任何限制。46.一般来说,单个gpu可以达到的性能是有限的,例如从gpu可以有多大的限制中得出。在本公开的实施方案中,为了渲染更加复杂的场景或使用更加复杂的算法(例如,材质、照明等),希望使用多个gpu来渲染单个图像。特别地,本公开的各种实施方案描述了被配置用于通过针对可能交错的屏幕区域预测试几何图形来为应用执行几何图形的多gpu渲染的方法和系统。多个gpu协作生成图像。基于屏幕区域在多个gpu之间划分渲染责任。在渲染几何图形之前,gpu会生成关于几何图形及其与屏幕区域的关系的信息。这允许gpu更高效地渲染几何图形或完全避免渲染它。作为一个优势,例如,这允许多个gpu在相同时间量内渲染更复杂的场景和/或图像。47.借助对各种实施方案的上述一般理解,现在将参考各种附图来描述实施方案的示例细节。48.贯穿本说明书,对“应用”或“游戏”或“视频游戏”或“游戏应用”的引用意在表示通过执行输入命令来引导的任何类型的交互式应用。仅出于说明目的,交互式应用包括用于游戏、文字处理、视频处理、视频游戏处理等的应用。此外,上面介绍的术语是可互换的。49.在整个说明书中,针对使用具有四个gpu的示例性架构为应用进行几何图形的多gpu处理或渲染来描述本公开的各种实施方案。然而,应当理解,在为应用渲染几何图形时,任何数量的gpu(例如,两个或更多个gpu)可以协作。50.图1是根据本公开的一个实施方案的用于在为应用渲染图像(例如图像帧)时执行多gpu处理的系统的示意图。根据本公开的实施方案,该系统被配置为通过网络在一个或多个云游戏服务器之间提供游戏,并且更具体地被配置用于多个gpu的协作以渲染应用的单个图像。云游戏包括在服务器上执行视频游戏以生成游戏渲染的视频帧,然后将其发送到客户端进行显示。特别地,系统100被配置用于通过在渲染之前针对可能交错的屏幕区域进行预测试来为应用进行几何图形的高效的多gpu渲染。51.虽然图1图示了在云游戏系统的一个或多个云游戏服务器之间实现几何图形的多gpu渲染,但是本公开的其他实施方案通过在渲染时在独立系统(诸如,包括具有多个gpu的高端显卡的个人计算机或游戏控制台)内执行区域测试为应用提供几何图形的高效多gpu渲染。52.还应理解,在各种实施方案中(例如,在云游戏环境中或在独立系统中),几何图形的多gpu渲染可以使用物理gpu或虚拟gpu或两者的组合来执行。例如,虚拟机(例如实例)可以使用利用硬件层的一个或多个部件(诸如多个cpu、存储器模块、gpu、网络接口、通信部件等)的主机硬件(例如位于数据中心)的管理程序创建。这些物理资源可以布置在机架中,诸如cpu机架、gpu机架、存储器机架等,其中机架中的物理资源可以使用架顶交换机访问,该架顶交换机促进用于组装和访问用于实例的部件的结构(例如,在构建实例的虚拟化部件时)。通常,管理程序可以呈现配置有虚拟资源的多个实例的多个客户操作系统。即,每个操作系统可以配置有由一个或多个硬件资源(例如,位于对应的数据中心)支持的对应的一组虚拟化资源。例如,每个操作系统可以由一个虚拟cpu、多个虚拟gpu、虚拟存储器、虚拟化通信部件等支持。此外,一个实例的配置可以从一个数据中心转移到另一个数据中心中心以减少延时。为用户或游戏定义的gpu利用率可以在保存用户的游戏会话时使用。gpu利用率可以包括本文所述的任何数量的配置,以优化游戏会话的视频帧的快速渲染。在一个实施方案中,为游戏或用户定义的gpu利用率可以作为可配置设置在数据中心之间传输。传输gpu利用率设置的能力可以在用户连接到不同地理位置玩游戏的情况下,有效地将游戏进行从数据中心迁移到数据中心。53.根据本公开的一个实施方案,系统100经由云游戏网络190提供游戏,其中远离正在玩游戏的对应用户的客户端装置110(例如,瘦客户端)执行游戏。系统100可以经由网络150以单玩家或多玩家模式通过云游戏网络190向玩一个或多个游戏的一个或多个用户提供游戏控制。在一些实施方案中,云游戏网络190可以包括在主机的管理程序上运行的多个虚拟机(vm),其中一个或多个虚拟机被配置为利用对主机的管理程序可用的硬件资源来执行游戏处理器模块。网络150可包括一种或多种通信技术。在一些实施方案中,网络150可以包括具有先进无线通信系统的第五代(5g)网络技术。54.在一些实施方案中,可使用无线技术来促进通信。此类技术可以包括例如5g无线通信技术。5g是第五代蜂窝网络技术。5g网络是数字蜂窝网络,其中提供商覆盖的服务区域被划分为称为小区的小地理区域。代表声音和图像的模拟信号在电话中被数字化、由模数转换器转换并作为比特流传输。通过从其他小区中重复使用的频率池中由收发器分配的频率信道,小区中的所有5g无线装置通过无线电波与小区中的本地天线阵列和小功率自动收发器(发射器和接收器)通信。本地天线通过高带宽光纤或无线回程连接与电话网络和互联网连接。与在其他小区网络中一样,从一个小区跨到另一小区的移动装置会自动转到新的小区。应当理解,5g网络只是通信网络的示例类型,并且本公开的实施方案可以利用更早一代的无线或有线通信,以及5g之后的更新一代的有线或无线技术。55.如图所示,云游戏网络190包括提供对多个视频游戏的访问的游戏服务器160。游戏服务器160可以是云中可用的任何类型的服务器计算装置,并且可以被配置为在一个或多个主机上执行的一个或多个虚拟机。例如,游戏服务器160可管理支持为用户实例化游戏实例的游戏处理器的虚拟机。这样,与多个虚拟机相关联的游戏服务器160的多个游戏处理器被配置为执行与多个用户的游戏进行相关联的一个或多个游戏的多个实例。以这种方式,后端服务器支持向多个对应用户提供多个游戏应用的游戏进行的媒体(例如,视频、音频等)的流式传输。也就是说,游戏服务器160被配置为通过网络150将数据(例如,对应游戏进行的渲染图像和/或帧)流式传输回对应客户端装置110。以该方式,计算上复杂的游戏应用可响应于由客户端装置110接收和转发的控制器输入而在后端服务器处执行。每个服务器能够渲染图像和/或帧,然后将其编码(例如,压缩)并流式传输到对应的客户端装置以供显示。56.例如,多个用户可使用被配置用于接收流式传输媒体的对应客户端装置110经由通信网络150访问云游戏网络190。在一个实施方案中,客户端装置110可被配置为瘦客户端,所述瘦客户端提供与被配置用于提供计算功能性(例如,包括游戏名称处理引擎111)的后端服务器(例如,云游戏网络190)的介接。在另一实施方案中,客户端装置110可配置有用于视频游戏的至少一些本地处理的游戏名称处理引擎和游戏逻辑,并且还可被利用来接收由在后端服务器处执行的视频游戏生成的流式传输内容,或由后端服务器支持提供的其他内容。对于本地处理,游戏名称处理引擎包括用于执行视频游戏和与视频游戏相关联的服务的基于基本处理器的功能。在这种情况下,游戏逻辑可以存储在本地客户端装置110上并用于执行视频游戏。57.每个客户端装置110可以请求访问来自云游戏网络的不同游戏。例如,云游戏网络190可以执行一个或多个游戏逻辑,这些逻辑建立在游戏名称处理引擎111上,如使用游戏服务器160的cpu资源163和gpu资源365执行的。例如,与游戏名称处理引擎111合作的游戏逻辑115a可以在用于一个客户端的游戏服务器160上执行,与游戏名称处理引擎111合作的游戏逻辑115b可以在用于第二客户端的游戏服务器160上执行,……并且与游戏名称处理引擎111合作的游戏逻辑115n可以在用于第n客户端的游戏服务器160上执行。58.特别地,对应用户(未示出)的客户端装置110被配置用于通过诸如互联网的通信网络150请求访问游戏,并且用于渲染由游戏服务器160执行的视频游戏生成的显示图像(例如,图像帧),其中编码图像被传送到客户端装置110以与对应的用户相关联地显示。例如,用户可以通过客户端装置110与在游戏服务器160的游戏处理器上执行的视频游戏的实例进行交互。更具体地,视频游戏的实例由游戏名称处理引擎111执行。实现视频游戏的对应游戏逻辑(例如,可执行代码)115被存储并可通过数据存储区(未示出)访问,并用于执行视频游戏。游戏名称处理引擎111能够使用多个游戏逻辑(例如游戏应用)来支持多个视频游戏,每个游戏逻辑都可由用户选择。59.例如,客户端装置110被配置为与和对应用户的游戏进行相关联的游戏名称处理引擎111交互,诸如通过用于驱动游戏进行的输入命令。特别地,客户端装置110可以接收来自各种类型的输入装置的输入,诸如游戏控制器、平板计算机、键盘、由摄像机捕获的手势、鼠标、触摸板等。客户端装置110可以是任何类型的至少具有存储器和能够通过网络150连接到游戏服务器160的处理器模块的计算装置。后端游戏名称处理引擎111被配置用于生成渲染图像,该渲染图像通过网络150传送以在与客户端装置110相关联的对应显示器处显示。例如,通过基于云的服务,游戏渲染图像可以由在游戏服务器160的游戏执行引擎111上执行的对应游戏(例如游戏逻辑)的实例来传送。也就是说,客户端装置110被配置用于接收编码图像(例如,从通过执行视频游戏生成的游戏渲染图像编码),并且用于在显示器11上显示渲染的图像。在一个实施方案中,显示器11包括hmd(例如,显示vr内容)。在一些实施方案中,渲染图像可以以无线或有线方式、直接从基于云的服务或经由客户端装置110(例如remote play)流式传输到智能手机或平板电脑。60.在一个实施方案中,游戏服务器160和/或游戏名称处理引擎111包括用于执行游戏和与游戏应用相关联的服务的基于基本处理器的功能。例如,游戏服务器160包括中央处理单元(cpu)资源163和图形处理单元(gpu)资源365,它们被配置用于执行基于处理器的功能,包括2d或3d渲染、物理模拟、脚本化、音频、动画、图形处理、照明、着色、光栅化、光线追踪、阴影、剔除、变换、人工智能等。另外,cpu和gpu组可以实现用于游戏应用的服务,部分地包括存储器管理、多线程管理、服务质量(qos)、带宽测试、社交网络、社交好友管理、与朋友的社交网络通信、通信渠道、发短信、即时消息、聊天支持等。在一个实施方案中,一个或多个应用共享特定的gpu资源。在一个实施方案中,可以组合多个gpu装置来为在对应cpu上执行的单个应用执行图形处理。61.在一个实施方案中,云游戏网络190是分布式游戏服务器系统和/或架构。特别地,执行游戏逻辑的分布式游戏引擎被配置为对应游戏的对应实例。通常,分布式游戏引擎采用游戏引擎的每个功能并将这些功能分布以供多个处理实体执行。单独的功能可以进一步分布在一个或多个处理实体上。处理实体可以被配置为不同的配置,包括物理硬件,和/或作为虚拟部件或虚拟机,和/或作为虚拟容器,其中容器不同于虚拟机,因为它虚拟化正在虚拟化操作系统上运行的游戏应用的实例。处理实体可以利用和/或依赖云游戏网络190的一个或多个服务器(计算节点)上的服务器及其底层硬件,其中服务器可以位于一个或多个机架上。对各种处理实体执行这些功能的协调、分配和管理由分布同步层执行。以这种方式,这些功能的执行由分布同步层控制,以响应于玩家的控制器输入为游戏应用生成媒体(例如,视频帧、音频等)。分布同步层能够跨分布式处理实体有效地执行(例如,通过载荷平衡)这些功能,以使得关键的游戏引擎部件/功能被分布和重新组装以进行更有效的处理。62.图2是根据本公开的一个实施方案的其中多个gpu协作以渲染对应的应用的单个图像的示例性多gpu架构200的示意图。应当理解,在本公开的各种实施方案中,许多架构是可能的,其中多个gpu协作以渲染单个图像,尽管没有明确地描述或示出。例如,在渲染时通过执行区域测试来为应用进行几何图形的多gpu渲染可以在云游戏系统的一个或多个云游戏服务器之间实现,或者可以在独立系统(诸如包括具有多个gpu的高端显卡的个人计算机或游戏控制台)内实现,等等。63.多gpu架构200包括cpu 163和多个gpu,其被配置用于为应用的单个图像和/或应用的图像序列中的每个图像进行多gpu渲染。特别地,cpu 163和gpu资源365被配置用于执行基于处理器的功能,包括2d或3d渲染、物理模拟、脚本化、音频、动画、图形处理、照明、着色、光栅化、光线追踪、阴影、剔除、变换、人工智能等,如前所述。64.例如,在多gpu架构200的gpu资源365中示出了四个gpu,尽管在为应用渲染图像时可以使用任意数量的gpu。每个gpu经由高速总线220连接到对应的专用存储器,诸如随机存取存储器(ram)。特别地,gpu-a经由总线220连接到存储器210a(例如,ram),gpu-b经由总线220连接到存储器210b(例如,ram),gpu-c经由总线220连接到存储器210c(例如,ram),和gpu-d经由总线220连接到存储器210d(例如,ram)。65.此外,每个gpu经由总线240彼此连接,取决于架构,总线240在速度上可能大约等于或慢于用于对应gpu与其对应存储器之间的通信的总线220。例如,gpu-a经由总线240连接到gpu-b、gpu-c和gpu-d中的每一个。同样,gpu-b经由总线240连接到gpu-a、gpu-c和gpu-d中的每一个。此外,gpu-c经由总线240连接到gpu-a、gpu-b和gpu-d中的每一个。进一步,gpu-d经由总线240连接到gpu-a、gpu-b和gpu-c中的每一个。66.cpu 163经由较低速度的总线230连接到每个gpu(例如,总线230比用于对应gpu与其对应存储器之间的通信的总线220慢)。具体地,cpu 163连接到gpu-a、gpu-b、gpu-c和gpu-d中的每一个。67.图3是根据本公开的一个实施方案的图形处理单元资源365的示意图,所述资源被配置用于通过在渲染前针对可能交错的屏幕区域进行预测试来对应用生成的图像帧进行几何图形的多gpu渲染。例如,游戏服务器160可以被配置为包括图1的云游戏网络190中的gpu资源365。如图所示,gpu资源365包括多个gpu,诸如gpu 365a、gpu 365b……gpu 365n。如前所述,各种架构可以包括多个gpu协作以通过在渲染时通过区域测试为应用执行几何图形的多gpu渲染来渲染单个图像,诸如在云游戏系统的一个或多个云游戏服务器之间实现几何图形的多gpu渲染,或在独立系统(诸如包括具有多个gpu的高端显卡的个人计算机或游戏控制台)内实现几何图形的多gpu渲染,等等。68.特别地,在一个实施方案中,游戏服务器160被配置为在渲染应用的单个图像时执行多gpu处理,使得多个gpu协作以渲染单个图像,和/或在执行应用时渲染图像序列的一个或多个图像中的每一个。例如,在一个实施方案中,游戏服务器160可以包括cpu和gpu组,其被配置为对应用的图像序列中的一个或多个图像中的每一个执行多gpu渲染,其中一个cpu和gpu组可以实现应用的图形和/或渲染流水线。cpu和gpu组可以被配置为一个或多个处理装置。如前所述,gpu和gpu组可以包括cpu 163和gpu资源365,其被配置用于执行基于处理器的功能,包括2d或3d渲染、物理模拟、脚本化、音频、动画、图形处理、照明、着色、光栅化、光线追踪、阴影、剔除、变换、人工智能等。69.gpu资源365负责和/或配置用于渲染对象(例如,将对象像素的颜色或法线向量值写入多渲染目标-mrt)和执行同步计算内核(例如,对产生的mrt的全屏效果);要执行的同步计算和要渲染的对象由包含在gpu将执行的渲染命令缓冲区325中的命令指定。特别地,gpu资源365被配置为在执行来自渲染命令缓冲区325的命令时渲染对象并执行同步计算(例如,在同步计算内核的执行期间),其中命令和/或操作可以依赖于其他操作,使得它们依次执行。70.例如,gpu资源365被配置为使用一个或多个渲染命令缓冲区325(例如渲染命令缓冲区325a、渲染缓冲区325b……渲染命令缓冲区325n)来执行同步计算和/或对象的渲染。在一个实施方案中,gpu资源365中的每个gpu可以具有它们自己的命令缓冲区。替代地,当每个gpu正在渲染基本上相同的一组对象时(例如,由于区域的小尺寸),gpu资源365中的gpu可以使用相同的命令缓冲区或相同的一组命令缓冲区。此外,gpu资源365中的每个gpu可以支持命令由一个gpu执行而不是由另一个gpu执行的能力。例如,绘制命令上的标志或渲染命令缓冲区中的预测允许单个gpu执行对应命令缓冲区中的一个或多个命令,而其他gpu将忽略这些命令。例如,渲染命令缓冲区325a可以支持标志330a,渲染命令缓冲区325b可以支持标志330b……渲染命令缓冲区325n可以支持标志330n。71.同步计算的性能(例如同步计算内核的执行)和对象的渲染是整体渲染的一部分。例如,如果视频游戏以60hz(例如每秒60帧)运行,则图像帧的所有对象渲染和同步计算内核的执行通常必须在大约16.67毫秒(例如,60hz的一帧)内完成。如前所述,渲染对象和/或执行同步计算内核时执行的操作是有序的,使得操作可能依赖于其他操作(例如,渲染命令缓冲区中的命令可能需要在该渲染命令缓冲区中的其他命令可以执行之前完成执行)。72.特别地,每个渲染命令缓冲区325包含各种类型的命令,包括影响对应gpu配置的命令(例如,指定渲染目标的位置和格式的命令),以及渲染对象和/或执行同步计算内核的命令。为了说明的目的,执行同步计算内核时执行的同步计算可以包括当对象全部被渲染到一个或多个对应的多渲染目标(mrt)时执行全屏效果。73.此外,当gpu资源365为图像帧渲染对象,和/或在生成图像帧时执行同步计算内核时,gpu资源365经由每个gpu 365a、365b……365n的寄存器进行配置。例如,gpu 365a经由其寄存器340(例如寄存器340a、寄存器340b……寄存器340n)配置为以某种方式执行该渲染或计算内核执行。也就是说,当执行渲染命令缓冲区325中的命令用于为图像帧渲染对象和/或执行同步计算内核时,存储在寄存器340中的值定义用于gpu 365a的硬件背景(例如gpu配置或gpu状态)。gpu资源365中的每个gpu可以被类似地配置,使得gpu 365b经由其寄存器350(例如,寄存器350a、寄存器350b……寄存器350n)被配置为以某种方式执行该渲染或计算内核执行;……并且gpu 365n经由其寄存器370(例如,寄存器370a、寄存器370b……寄存器370n)被配置为以某种方式执行该渲染或计算内核执行。74.gpu配置的一些示例包括渲染目标(例如mrt)的位置和格式。此外,gpu配置的其他示例包括操作程序。例如,在渲染对象时,可以通过各种方式将对象的每个像素的z值与z缓冲区进行比较。例如,仅当对象z值与z缓冲区中的值匹配时才写入对象像素。替代地,仅当对象z值等于或小于z缓冲区中的值时才可以写入对象像素。正在执行的测试类型在gpu配置中定义。75.图4是根据本公开的一个实施方案的实现被配置用于多gpu处理以使得多个gpu协作以渲染单个图像的图形流水线400的渲染架构的简化示意图。图形流水线400说明了使用3d(三维)多边形渲染过程来渲染图像的一般过程。用于渲染图像的图形流水线400为显示器中的每个像素输出对应的颜色信息,其中颜色信息可以表示纹理和着色(例如,颜色、阴影等)。图形流水线400可以在图1和图3的客户端装置110、游戏服务器160、游戏名称处理引擎111和/或gpu资源365内实现。也就是说,各种架构可能包括多个gpu协作以通过在渲染时通过区域测试为应用执行几何图形的多gpu渲染来渲染单个图像,诸如在云游戏系统的一个或多个云游戏服务器之间实现几何图形的多gpu渲染,或在独立系统(诸如包括具有多个gpu的高端显卡的个人计算机或游戏控制台)内实现几何图形的多gpu渲染,等等。76.如图所示,图形流水线接收输入几何图形405。例如,几何图形处理级410接收输入几何图形405。例如,输入几何图形405可以包括3d游戏世界内的顶点,以及对应于每个顶点的信息。游戏世界中的给定对象可以使用由顶点定义的多边形(例如三角形)来表示,其中对应多边形的表面然后通过图形流水线400进行处理以实现最终效果(例如颜色、纹理等)。顶点属性可以包括法线(例如,哪个方向垂直于那个位置的几何图形)、颜色(例如,rgb-红色、绿色和蓝色三元组等),以及纹理坐标/映射信息。77.几何图形处理级410负责(并且能够进行)顶点处理(例如,经由顶点着色器)和图元处理两者。特别地,几何图形处理级410可以输出定义图元的顶点集合并将它们传递到图形流水线400的下一级,以及输出这些顶点的位置(准确地说,齐次坐标)和各种其他参数。这些位置被放置在位置高速缓存450中以供后面的着色器级访问。其他参数被放置在参数高速缓存460中,再次供后面的着色器级访问。78.几何图形处理级410可以执行各种操作,诸如对图元和/或多边形执行光照和阴影计算。在一个实施方案中,由于几何图形级能够处理图元,它可以执行背面剔除和/或剪裁(例如,针对视锥体进行测试),从而减少下游级(例如,光栅化级420等)的负载。在另一实施方案中,几何图形级可以生成图元(例如,具有与传统几何图形着色器等效的功能)。79.几何图形处理级410输出的图元被馈送到光栅化级420,光栅化级420将图元转换成由像素组成的光栅图像。特别地,光栅化级420被配置为将场景中的对象投影到由3d游戏世界中的观看位置(例如,相机位置、用户眼睛位置等)定义的二维(2d)图像平面。在简单的级别上,光栅化级420查看每个图元并确定哪些像素受到对应图元的影响。特别地,光栅化器420将图元分割成像素大小的片段,其中每个片段对应于显示器中的一个像素。重要的是要注意,在显示图像时,一个或多个片段可能会影响对应像素的颜色。80.如前所述,光栅化级420还可以执行附加操作,诸如针对观看位置裁剪(识别并忽略在视锥体之外的片段)和剔除(忽略被更近的对象遮挡的片段)。关于裁剪,几何图形处理级410和/或光栅化级420可以被配置为识别和忽略在由游戏世界中的观看位置定义的视锥体之外的图元。81.像素处理级430使用由几何图形处理级创建的参数以及其他数据来生成诸如像素的得到的颜色之类的值。特别地,处理级430在其核心的像素对片段执行着色操作以确定图元的颜色和亮度如何随可用照明而变化。例如,像素处理级430可以确定每个片段的深度、颜色、法线和纹理坐标(例如,纹理细节),并且可以进一步确定片段的适当的明度、暗度和颜色水平。特别地,像素处理级430计算每个片段的特征,包括颜色和其他属性(例如,z深度表示距观看位置的距离,以及α值表示透明度)。此外,像素处理级430基于影响对应片段的可用照明将照明效果应用到片段。此外,像素处理级430可以为每个片段应用阴影效果。82.像素处理级430的输出包括处理后的片段(例如,纹理和着色信息)并被传递到图形流水线400的下一个级中的输出合并级440。输出合并级440使用像素处理级430的输出以及诸如已经在存储器中的值等其他数据为像素生成最终颜色。例如,输出合并级440可以对从像素处理级430确定的片段和/或像素之间的值与已经写入该像素的mrt的值进行可选的混合。83.显示器中每个像素的颜色值可以存储在帧缓冲区(未示出)中。当显示场景的对应图像时,这些值被扫描到对应的像素。特别是,显示器逐行地从左到右或从右到左、从上到下或从下到上、或以任何其他模式从每个像素的帧缓冲区中读取颜色值,并在显示图像时使用这些像素值照亮像素。84.利用图1-图3的云游戏网络190(例如在游戏服务器160中)和gpu资源365的详细描述,图5的流程图500图示了根据本公开的一个实施方案的当通过在渲染前针对交错的屏幕区域预测试几何图形来为应用生成的图像帧实现几何图形的多gpu渲染时的图形处理方法。以这种方式,多个gpu资源用于在执行应用时高效地执行对象的渲染。如前所述,各种架构可以包括多个gpu协作以通过在渲染时通过区域测试为应用执行几何图形的多gpu渲染来渲染单个图像,诸如在云游戏系统的一个或多个云游戏服务器内,或在独立系统(诸如包括具有多个gpu的高端显卡的个人计算机或游戏控制台)内,等等。85.在510,该方法包括使用协作生成图像的多个图形处理单元(gpu)为应用渲染图形。特别地,在渲染用于实时应用的单个图像帧和/或图像帧序列中的一个或多个图像帧中的每一个时执行多gpu处理。86.在520,该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任。也就是说,每个gpu都有所有gpu已知的对应的责任划分(例如,对应的屏幕区域)。更具体地,每个gpu负责在多个屏幕区域的对应的一组屏幕区域中渲染几何图形,其中对应的一组屏幕区域包括一个或多个屏幕区域。例如,第一gpu具有在第一组屏幕区域中渲染对象的第一责任划分。同样,第二gpu具有在第二组屏幕区域中渲染对象的第二责任划分。这对于剩余的gpu是可重复的。87.在530,该方法包括将在执行应用用于几何图形测试期间生成的图像帧的第一几何图形分配给第一gpu。例如,图像帧可以包括一个或多个对象,其中每个对象可以由一个或多个几何图形定义。也就是说,在一个实施方案中,对作为整个对象的一个几何图形执行几何图形预测试和渲染。在其他实施方案中,对作为整个对象的一部分的一个几何图形执行几何图形预测试和渲染。88.例如,多个gpu中的每一个被分配给与图像帧相关联的几何图形的对应部分。特别地,几何图形的每个部分都分配给对应的gpu以用于几何图形预测试。在一个实施方案中,可以在多个gpu之间均匀地分配几何图形。例如,如果多个gpu中有四个gpu,则每个gpu可以处理图像帧中几何图形的四分之一。在其他实施方案中,可以在多个gpu之间不均匀地分配几何图形。例如,在使用四个gpu进行图像帧的多gpu渲染的示例中,一个gpu可以比另一个gpu处理图像帧的更多几何图形。89.在540,该方法包括在第一gpu处执行几何图形预测试以生成关于该几何图形如何与多个屏幕区域相关的信息。特别地,第一gpu生成几何图形以及它如何与多个屏幕区域中的每一个相关的信息。例如,由第一gpu进行的几何图形预测试可以确定该几何图形是否与分配给对应gpu用于对象渲染的特定屏幕区域重叠。第一几何图形可以与其他gpu负责对象渲染的屏幕区域重叠,和/或可以与第一gpu负责对象渲染的屏幕区域重叠。在一个实施方案中,在由多个gpu中的任何一个执行几何图形的渲染之前,由第一gpu执行的对应命令缓冲区中的着色器执行几何图形测试。在其他实施方案中,几何图形测试由硬件执行,例如在图形流水线400的光栅化级420中。90.几何图形预测试通常在实施方案中由多个gpu针对对应图像帧的所有几何图形同时执行。也就是说,每个gpu针对对应图像帧的几何图形的其部分执行几何图形预测试。以这种方式,gpu的几何图形预测试允许每个gpu知道要渲染哪些几何图形,以及要跳过哪些几何图形。特别地,当对应的gpu执行几何图形预测试时,它针对用于渲染图像帧的多个gpu中的每一个的屏幕区域测试其几何图形部分。例如,如果有四个gpu,那么每个gpu可以对图像帧几何图形的四分之一执行几何图形测试,特别是如果几何图形被均匀地分配给gpu以进行几何图形测试。因此,虽然每个gpu仅针对对应图像帧的其几何图形部分执行几何图形预测试,但是因为几何图形预测试通常在实施方案中跨多个gpu针对图像帧的所有几何图形同时执行,所以生成的信息指示图像帧中的所有几何图形(例如几何图形)如何与所有gpu的屏幕区域相关,其中屏幕区域每个都分配给对应的gpu用于对象渲染,和/或其中渲染可以对几何图形(例如整个对象或对象的一部分)执行。91.在550,该方法包括在渲染几何图形时在多个gpu中的每一个处使用信息(例如,包括完全渲染几何图形或跳过该几何图形的渲染)。也就是说,在多个gpu中的每一个处使用该信息来渲染该几何图形,其中几何图形的测试结果(例如信息)被发送到其他gpu,使得该信息对于每个gpu都是已知的。例如,图像帧中的几何图形(例如多个几何图形)通常在实施方案中由多个gpu同时渲染。特别地,当一个几何图形与分配给对应gpu以进行对象渲染的任何屏幕区域重叠时,该gpu将基于该信息渲染该几何图形。另一方面,当该几何图形不与分配给对应gpu以进行对象渲染的任何屏幕区域重叠时,该gpu可以基于该信息跳过该几何图形的渲染。因此,这信息允许所有gpu更高效地渲染图像帧中的几何图形,和/或完全避免渲染该几何图形。例如,渲染可以由多个gpu执行的对应命令缓冲区中的着色器执行。如将在下文图7a、图12a和图13a更全面地描述的那样,着色器可以被配置为基于对应的gpu配置执行几何图形测试和/或渲染中的一个或两个。92.根据本公开的一个实施方案,在一些架构中,如果对应的渲染gpu及时接收到对应的信息以使用它,则该gpu将在决定渲染对应的图像内的哪个几何图形时使用该信息。也就是说,该信息可以作为提示。否则,渲染gpu将像往常一样处理该几何图形。使用其中信息可以指示几何图形是否与分配给渲染gpu(例如第二gpu)的任何屏幕区域重叠的示例,如果信息指示几何图形没有重叠,则渲染gpu可以完全跳过渲染该几何图形。此外,如果只有几何图形中的多个不重叠,则第二gpu可以跳过几何图形中的不与分配给第二gpu用于对象渲染的任何屏幕区域重叠的至少那些的渲染。另一方面,该信息可以指示几何图形存在重叠,在这种情况下,第二gpu或渲染gpu将渲染该几何图形。同样,该信息可以指示某些几何图形与分配给第二gpu或渲染gpu以用于对象渲染的任何屏幕区域重叠。在这种情况下,第二gpu或渲染gpu将只渲染那些重叠的几何图形。在又一个实施方案中,如果没有信息,或者如果没有及时生成或接收信息,则第二gpu将正常执行渲染(例如,渲染几何图形)。因此,作为提示提供的信息如果被及时接收可以提高图形处理系统的整体效率。如果没有及时收到信息,图形处理系统在没有这些信息的情况下仍然正常运行。93.在一个实施方案中,一个gpu(例如预测试gpu)专用于执行几何图形预测试以生成信息。也就是说,专用gpu不用于渲染对应的图像帧中的对象(例如几何图形)。具体而言,如前所述,使用多个gpu来渲染应用的图形。基于可以交错的多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任,其中每个gpu具有多个gpu已知的对应责任划分。在预测试gpu处对由应用生成的图像帧的多个几何图形执行几何图形测试,以生成关于每个几何图形及其与多个屏幕区域中的每一个的关系的信息。使用为多个几何图形中的每一个生成的信息在多个gpu中的每一个处渲染所述多个几何图形。也就是说,当由用于渲染图像帧的gpu中的对应渲染gpu渲染几何图形中的每一个时使用该信息。94.图6a-图6b示出了对被细分为区域和子区域的屏幕的渲染,纯粹是为了说明的目的。可以理解,细分的区域和/或子区域的数量可以选择以对图像和/或图像序列中的一个或多个图像中的每一个进行高效多gpu处理。也就是说,屏幕可以细分为两个或更多个区域,其中每个区域可以进一步划分为子区域。在本公开的一个实施方案中,屏幕被细分为四个象限,如图6a所示。在本公开的另一个实施方案中,屏幕被细分为更大数量的交错区域,如图6b所示。下面的图6a-图6b的讨论旨在说明在对分配有多个gpu的多个屏幕区域执行多gpu渲染时出现的低效率;图7a-图7c和图8a-图8b示出了根据本发明的一些实施方案的更高效的渲染。95.特别地,图6a是在执行多gpu渲染时被细分为象限(例如四个区域)的屏幕610a的示意图。如图所示,屏幕610a被细分为四个象限(例如a、b、c和d)。每个象限以一对一的关系被分配给四个gpu[gpu-a、gpu-b、gpu-c和gpu-d]之一。例如,gpu-a分配给象限a,gpu-b分配给象限b,gpu-c分配给象限c,和gpu-d分配给象限d。[0096]几何图形可以被剔除。例如,cpu 163可以检查每个象限的平截头体的边界框,并请求每个gpu仅渲染与其对应平截头体重叠的对象。结果是每个gpu只负责渲染几何图形的一部分。出于说明的目的,屏幕610示出几何图形,其中每个都是对应的对象,其中屏幕610示出对象611-617(例如几何图形)。gpu-a将不渲染任何对象,因为没有对象与象限a重叠。gpu-b将渲染对象615和616(由于对象615的一部分存在于象限b中,cpu的剔除测试将正确得出结论:gpu-b必须渲染它)。gpu-c将渲染对象611和612。gpu-d将渲染对象612、613、614、615和617。[0097]在图6a中,当屏幕610a被划分为象限a-d时,每个gpu必须执行的工作量可能非常不同,因为在某些情况下,不成比例的几何图形量可能在一个象限中。例如,象限a没有任何几何图形,而象限d具有五个几何图形,或至少五个几何图形的至少一部分。因此,分配给象限a的gpu-a将处于空闲状态,而分配给象限d的gpu-d在渲染对应图像中的对象时会异常繁忙。[0098]图6b图示了将屏幕细分为区域时的另一种技术。特别地,屏幕610b不是细分为象限,而是在对单个图像或图像序列中的一个或多个图像中的每一个执行多gpu渲染时细分为多个交错区域。在那种情况下,屏幕610b被细分为更大数量的交错区域(例如大于四个象限),同时使用相同量的gpu进行渲染(例如四个)。屏幕610a中所示的对象(611-617)也显示在屏幕610b中相同的对应位置。[0099]特别地,四个gpu(例如gpu-a、gpu-b、gpu-c和gpu-d)用于为对应的应用渲染图像。每个gpu负责渲染与对应区域重叠的几何图形。也就是说,每个gpu都被分配到一组对应的区域。例如,gpu-a负责对应组中标记为a的每个区域,gpu-b负责对应组中标记为b的每个区域,gpu-c负责对应组中标记为c的每个区域,和gpu-d负责对应组中标记为d的每个区域。[0100]此外,这些区域以特定模式交错。由于区域的交错(和更多数量的区域),每个gpu必须执行的工作量可能会更加平衡。例如,屏幕610b的交错模式包括交替行,包括区域a-b-a-b等,以及区域c-d-c-d等。在本公开的实施方案中支持使区域交错的其他模式。例如,模式可以包括重复的区域序列、均匀分布的区域、不均匀分布的区域、可重复的区域序列行、随机区域序列、随机区域序列行等。[0101]选择区域的数量很重要。例如,如果区域的分布太细(例如,区域的数量太大而无法优化),则每个gpu仍必须处理几何图形的大部分或所有。例如,可能很难针对gpu负责的所有区域检查对象边界框。此外,即使可以及时检查边界框,由于区域大小较小,结果将是每个gpu可能必须处理几何图形的大部分,因为图像中的每个对象都与每个gpu的至少一个区域重叠(例如,gpu处理整个对象,即使对象的只有一部分与分配给该gpu的一组区域中的至少一个区域重叠)。[0102]因此,选择区域数量、交错模式等很重要。选择太少或太多的区域、或者用于交错的太少区域或太多区域、或者选择用于交错的低效模式可能导致在执行gpu处理时效率低下(例如,每个gpu处理几何图形的大部分或全部)。在这些情况下,虽然有多个gpu用于渲染图像,但是由于gpu效率低下,也无法支持对应增加的屏幕像素计数和几何图形密度(即四个gpu不能写入四倍的像素并处理四倍的顶点或图元)。以下实施方案针对剔除策略(图7a-图7c)和剔除粒度(图8a-图8b)的改进以及其他进步。[0103]图7a-图7c是图示了本公开的实施方案中的使用多个gpu来渲染单个图像和/或图像序列中的至少一个或多个图像中的每一个的示意图。选择四个gpu纯粹是为了便于说明在执行应用时渲染图像时的多gpu渲染,并且可以理解,在各种实施方案中,任何数量的gpu都可以用于多gpu渲染。[0104]特别地,图7a是根据本公开的一个实施方案的由协作以渲染单个图像帧的多个gpu共享的渲染命令缓冲区700a的示意图。也就是说,在本示例中,多个gpu各自使用相同的渲染命令缓冲区(例如,缓冲区700a),并且每个gpu执行渲染命令缓冲区中的所有命令。多个命令(完整的集合)被加载到渲染命令缓冲区700a中,且用于渲染对应的图像帧。可以理解,一个或多个渲染命令缓冲区可用于生成对应的图像帧。在一个示例中,cpu为图像帧生成一个或多个绘制调用,其中绘制调用包括放置在一个或多个渲染命令缓冲区中以供图3的gpu资源365的一个或多个gpu在执行对应图像的多gpu渲染时执行的命令。在一些实施方式中,cpu 163可以请求一个或多个gpu来生成用于渲染对应图像的绘制调用的所有或一些。此外,包含在渲染命令缓冲区700a中的整个命令集可以在图7a中示出,或图7a可以示出包含在渲染命令缓冲区700a内的整个命令集的一部分。[0105]当执行图像或图像序列中的一个或多个图像中的每一个的多gpu渲染时,gpu通常在实施方案中同时进行渲染。图像的渲染可以分为多个阶段。在每个阶段中,gpu都需要同步,因此较快的gpu必须等到较慢的gpu完成。图7a所示的用于渲染命令缓冲区700a的命令示出了一个阶段。尽管在图7a中示出了用于仅一个阶段的命令,但渲染命令缓冲区700a可以包括用于渲染图像时的一个或多个阶段的命令,图7a仅示出了所有命令的一部分,因此未示出用于其他阶段的命令。在图7a所示的图示了一个阶段的渲染命令缓冲区700a中,有四个要被渲染的对象(例如,对象0、对象1、对象2和对象3),如图7b-1所示。[0106]如图所示,图7a中所示的渲染命令缓冲区700a包括用于几何图形测试、对象(例如几何图形)渲染的命令和用于配置正在执行来自渲染命令缓冲区700a的命令的一个或多个渲染gpu的状态的命令。仅出于说明的目的,图7a中所示的渲染命令缓冲区700a包括用于几何图形预测试、渲染对象和/或在为对应的应用渲染对应的图像时执行同步计算内核的命令(710-728)。在一些实施方式中,几何图形预测试和该图像的对象渲染和/或同步计算内核的执行必须在一个帧周期内执行。在渲染命令缓冲区700a中示出了两个处理分段。特别地,处理分段1包括预测试或几何图形测试701,和分段2包括渲染702。[0107]分段1包括对图像帧中的对象执行几何图形测试701,其中每个对象可以由一个或多个几何图形定义。可以由一个或多个着色器执行预测试或几何图形测试701。例如,在一个实施方案中,为对应图像帧的多gpu渲染中使用的每个gpu分配图像帧的几何图形的一部分以执行几何图形测试,其中每个部分可以被分配用于预测试。分配的部分可以包括一个或多个几何图形,其中每个几何图形可以包括整个对象,或者可以包括对象的一部分(例如,顶点、图元等)。特别地,对一个几何图形进行几何图形测试以生成关于该几何图形如何与多个屏幕区域中的每一个相关的信息。例如,几何图形测试可以确定一个几何图形是否与分配给对应gpu用于对象渲染的特定屏幕区域重叠。[0108]如图7a所示,分段1的几何图形测试701(例如,几何图形的预测试)包括用于配置执行来自渲染命令缓冲区700a的命令的一个或多个gpu的状态的命令,以及用于执行几何图形测试的命令。特别地,每个gpu的gpu状态是在gpu对对应对象执行几何图形测试之前配置的。例如,命令710、713和715各自用于配置一个或多个gpu的gpu状态,以用于执行用于几何图形测试的命令。如图所示,命令710配置gpu状态,以便可以正确执行几何图形测试命令711-712,其中命令711对对象0执行几何图形测试,和命令712对对象1执行几何图形测试。类似地,命令713配置gpu状态,以便几何图形测试命令714可以对对象2执行几何图形测试。同样,命令715配置gpu状态,以便几何图形测试命令716可以对对象3执行几何图形测试。可以理解,gpu状态可以被配置用于一个或多个几何图形测试命令(例如,测试命令711和712)。[0109]如前所述,当执行渲染命令缓冲区700a中的命令用于为对应的图像进行几何图形测试和/或渲染对象和/或执行同步计算内核时,存储在寄存器中的值定义了用于对应gpu的硬件背景(例如gpu配置)。如图所示,gpu状态可以在渲染命令缓冲区700a中的命令处理的整个过程中被修改,命令的每个后续分段可以用于配置gpu状态。如应用于图7a,以及在整个说明书中提及设置gpu状态时,可以以多种方式设置gpu状态。例如,cpu或gpu可以设置随机存取存储器(ram)中的一个值,其中gpu将检查ram中的该值。在另一个示例中,状态可以在gpu内部,诸如当命令缓冲区作为子例程被调用两次时,内部gpu状态在两个子例程调用之间是不同的。[0110]分段2包括对图像帧中的对象执行渲染702,其中几何图形被渲染)。渲染702可由命令缓冲区700a中的一个或多个着色器执行。如图7a所示,分段2的渲染702包括用于配置执行来自渲染命令缓冲区700a的命令的一个或多个gpu的状态的命令,以及用于执行渲染的命令。特别地,每个gpu的gpu状态在gpu渲染对应的对象(例如几何图形)之前配置。例如,命令721、723、725和727各自用于配置一个或多个gpu的gpu状态,以用于执行用于渲染的命令。如图所示,命令721配置gpu状态,以便渲染命令722可以渲染对象0;命令723配置gpu状态,以便渲染命令724可以渲染对象1;命令725配置gpu状态,以便渲染命令726可以渲染对象2;并且命令727配置gpu状态,以便渲染命令728可以渲染对象3。虽然图7a示出了为每个渲染命令(例如,渲染对象0等)配置gpu状态,但是应当理解,可以为一个或多个渲染命令配置gpu状态。[0111]如前所述,在对应图像帧的多gpu渲染中使用的每个gpu基于在几何图形预测试期间生成的信息来渲染对应的几何图形。具体来说,每个gpu已知的信息提供了对象和屏幕区域之间的关系。在渲染对应几何图形时,如果及时接收到该信息,gpu可以使用该信息来高效地渲染这些几何图形。具体而言,如信息所指示,当一个几何图形与分配给对应gpu用于对象渲染的任何一个或多个屏幕区域重叠时,该gpu执行该几何图形的渲染。另一方面,该信息可以指示第一gpu应该完全跳过渲染几何图形(例如,几何图形不与第一gpu被分配负责对象渲染的任何屏幕区域重叠)。以这种方式,每个gpu只渲染与它负责对象渲染的一个或多个屏幕区域重叠的几何图形。这样,该信息作为提示提供给每个gpu,使得如果在渲染开始之前接收到该信息,则该信息被正在执行渲染几何图形的每个gpu考虑。在一个实施方案中,如果没有及时接收到信息,则渲染正常进行,诸如对应的几何图形由对应的gpu完全渲染,而不管该几何图形是否与分配给gpu用于对象渲染的任何屏幕区域重叠。[0112]仅出于说明目的,四个gpu将对应的屏幕划分为它们之间的区域。如前所述,每个gpu负责在对应的一组区域中渲染对象,其中对应的一组包括一个或多个区域。在一个实施方案中,渲染命令缓冲区700a由协作渲染单个图像的多个gpu共享。也就是说,用于单个图像或图像序列中的一个或多个图像中的每一个的多gpu渲染的gpu共享一个公共命令缓冲区。在另一个实施方案中,每个gpu可能具有其自己的命令缓冲区。[0113]替代地,在又一个实施方案中,每个gpu可能正在渲染稍微不同的几组对象。当可以确定特定gpu不需要渲染特定对象时,可能会出现这种情况,因为它不重叠其对应的屏幕区域,诸如在对应的一组中。多个gpu仍然可以使用相同的命令缓冲区(例如,共享一个命令缓冲区),只要命令缓冲区支持命令由一个gpu而不是另一个gpu执行的能力,如前所述。例如,共享渲染命令缓冲区700a中的命令的执行可以限于渲染gpu之一。这可以通过多种方式实现。在另一个示例中,可以在对应的命令上使用标志来指示哪些gpu应该执行它。同样,可以在渲染命令缓冲区中使用位来实现预测,以说明哪个gpu在什么条件下做什么。预测的示例包括——“如果这是gpu-a,则跳过以下x命令”。[0114]在又一个实施方案中,由于每个gpu正在渲染基本上相同的一组对象,因此多个gpu仍可以使用相同的命令缓冲区。例如,当区域相对较小时,每个gpu仍可以渲染所有对象,如前所述。[0115]图7b-1图示了根据本公开的一个实施方案的屏幕700b,其示出了包括由多个gpu使用图7a的渲染命令缓冲区700a渲染的四个对象的图像。根据本公开的一个实施方案,在渲染与图像帧中的对象相对应的几何图形之前,通过针对可能交错的屏幕区域预测试几何图形来为应用执行几何图形的多gpu渲染。[0116]特别地,几何图形的渲染责任在多个gpu之间通过屏幕区域划分,其中多个屏幕区域被配置为减少多个gpu之间的渲染时间不平衡。例如,屏幕700b示出了在渲染图像的对象时每个gpu的屏幕区域责任。四个gpu(gpu-a、gpu-b、gpu-c和gpu-d)用于渲染屏幕700b所示图像中的对象。屏幕700b比如图6a所示通过象限更精细地划分,努力平衡gpu之间的像素和顶点负载。此外,屏幕700b被划分为可能交错的区域。例如,交错包括多行区域。行731和733中的每一行包括与区域b交替的区域a。行732和734中的每一行包括与区域d交替的区域c。更具体地,在一个模式中,包括区域a和b的行与包括区域c和区域d的行交替。[0117]如前所述,为了实现gpu处理效率,可以在将屏幕划分为区域时使用各种技术,诸如增加或减少区域的数量(例如,选择正确的区域数量)、交错区域、增加或减少用于交错的区域的数量、在交错区域和/或子区域时选择特定模式等。在一个实施方案中,多个屏幕区域中的每个屏幕区域的大小是统一的。在一个实施方案中,多个屏幕区域中的每一个在大小上是不统一的。在又一个实施方案中,多个屏幕区域的数量和大小动态地改变。[0118]gpu中的每一个负责在对应的一组区域中渲染对象,其中每组可以包括一个或多个区域。因此,gpu-a负责在对应组中每个a区域中渲染对象,gpu-b负责在对应组中每个b区域中渲染对象,gpu-c负责在对应组中每个c区域中渲染对象,和gpu-d负责在对应组中每个d区域中渲染对象。也可能有具有其他责任的gpu,使得它们可能不执行渲染(例如,执行在多个帧周期上执行的异步计算内核,执行用于渲染gpu的剔除等)。[0119]对于每个gpu,要执行的渲染量是不同的。图7b-2图示了根据本公开的一个实施方案的示出当渲染图7b-1的四个对象时由每个gpu执行的渲染的表格。如表格所示,经过几何图形预测试,可以确定对象0是由gpu-b渲染的;对象1是由gpu-c和gpu-d渲染的;对象2是由gpu-a、gpu-b和gpu-d渲染的;且对象3是由gpu-b、gpu-c和gpu-d渲染的。可能仍然存在某一不平衡的渲染,因为gpu a只需要渲染对象2,而gpu d需要渲染对象1、2和3。然而,整体上,利用屏幕区域的交错,图像内对象的渲染在用于图像的多gpu渲染或图像序列中的一个或多个图像中的每一个的渲染的多个gpu之间得到合理平衡。[0120]图7c是根据本公开的一个实施方案的图示了当多个gpu协作渲染单个图像帧(诸如图7b-1所示的图像帧700b)时由每个gpu执行的每个对象的渲染的示意图。特别地,图7c示出了由四个gpu(例如,gpu-a、gpu-b、gpu-c和gpu-d)中的每一个使用图7a的共享渲染命令缓冲区700a执行的对象0-3的渲染过程。[0121]特别地,相对于时间线740示出了两个渲染时序图。渲染时序图700c-1示出了在一个渲染阶段中对应图像的对象0-3的多gpu渲染,其中每个gpu在没有关于对象0-3和屏幕区域之间的重叠的任何信息的情况下执行渲染。渲染时序图700c-2示出了在同一渲染阶段中对应图像的对象0-3的多gpu渲染,其中在屏幕区域的几何图形测试期间(例如在渲染之前执行)生成的信息与用于通过对应的gpu流水线渲染对象0-3的每个gpu共享。渲染时序图700c-1和700c-2中的每一个示出了每个gpu处理每个几何图形(例如,执行几何图形测试和渲染)所花费的时间。在一个实施方案中,一个几何图形是一个完整的对象。在另一个实施方案中,一个几何图形可以是对象的一部分。为了说明的目的,图7c的示例示出了几何图形的渲染,其中每个几何图形对应于一个对象(例如其整体)。在渲染时序图700c-1和700c-2中的每一个中,不具有与对应gpu的至少一个屏幕区域(例如,在对应的一组区域中)重叠的几何图形(例如对象的图元)的对象(例如几何图形)由用虚线绘制的框表示。另一方面,具有与对应gpu的至少一个屏幕区域(例如,在对应的一组区域中)重叠的几何图形的对象由用实线绘制的框表示。[0122]渲染时序图700c-1示出了使用四个gpu(例如gpu-a、gpu-b、gpu-c和gpu-d)渲染对象0-3。竖直线755a指示对象的渲染阶段的开始,而竖直线755b示出渲染时序图700c-1中对象的渲染阶段的结束。所示的渲染阶段的沿时间线740的开始点和结束点表示同步点,其中四个gpu中的每一个在执行对应的gpu流水线时被同步。例如,在指示渲染阶段结束的竖直线755b处,所有gpu必须等待最慢的gpu(例如gpu-b)通过对应的图形流水线完成对象0-3的渲染,然后才能进入下一个渲染阶段。[0123]在渲染时序图700c-1中不执行几何图形预测试。因此,每个gpu必须通过对应的图形流水线处理每个对象。如果在分配给对应gpu用于对象渲染的任何区域(例如,在对应组中)没有要为对象绘制的像素,则gpu可能无法通过图形流水线完全渲染对象。例如,当对象不重叠时,只执行图形流水线的几何图形处理级。但是,这仍然需要一些时间来处理。[0124]特别地,gpu-a不会完全渲染对象0、1和3,因为它们不与分配给gpu-a用于对象渲染的任何屏幕区域(例如,在对应组中)重叠。这三个对象的渲染显示在虚线框中,指示至少执行了几何图形处理级,但没有完全执行图形流水线。gpu-a完全渲染对象2,因为该对象与分配给gpu-a用于渲染的至少一个屏幕区域重叠。对象2的渲染显示在实线框中,指示对应图形流水线的所有级都执行。类似地,gpu-b不会完全渲染对象1(用虚线框示出)(即至少执行几何图形处理级),但会完全渲染对象0、2和3(用实线框示出),因为那些对象与分配给gpu-b用于渲染的至少一个屏幕区域(例如,在对应组中)重叠。同样,gpu-c不会完全渲染对象0和2(用虚线框示出)(即至少执行几何图形处理级),但会完全渲染对象(用实线框示出),因为那些对象与分配给gpu-c用于渲染的至少一个屏幕区域(例如,在对应组中)重叠。进一步,gpu-d不会完全渲染对象0(用虚线框示出)(即至少执行几何图形处理级),但会完全渲染对象1、2和3(用实线框示出),因为那些对象与分配给gpu-d用于渲染的至少一个屏幕区域(例如,在对应组中)重叠。[0125]渲染时序图700c-2示出了使用多个gpu对对象0-3进行几何图形预测试701'和渲染702'。竖直线750a指示对象的渲染阶段(例如,包括几何图形预测试和渲染)的开始,而竖直线750b示出渲染时序图700c-2中的对象的渲染阶段的结束。时序图700c-2中所示的渲染阶段的沿时间线740的开始点和结束点表示同步点,其中四个gpu中的每一个在执行对应的gpu流水线时被同步,如前所述。例如,在指示渲染阶段结束的竖直线750b处,所有gpu必须等待最慢的gpu(例如gpu-b)通过对应的图形流水线完成对象0-3的渲染,然后才能进入下一个渲染阶段。[0126]首先,几何图形预测试701'由gpu执行,其中每个gpu针对所有屏幕区域为图像帧的几何图形子集执行几何图形预测试,其中每个屏幕区域被分配给对应的gpu用于对象渲染。如前所述,每个gpu被分配给与图像帧相关联的几何图形的对应部分。几何图形预测试生成关于特定几何图形如何与每个屏幕区域相关的信息,诸如几何图形是否与分配给对应gpu用于对象渲染的任何屏幕区域(例如,在对应组中)重叠。该信息与用于渲染图像帧的每个gpu共享。例如,图7c中所示的几何图形预测试701'包括让gpu-a对对象0执行几何图形预测试,让gpu-b对对象1执行几何图形预测试,让gpu-c对对象2执行几何图形预测试,以及让gpu-d对对象3执行几何图形预测试。根据被测对象,执行几何图形预测试的时间可能会有所不同。例如,对象0的几何图形预测试比对对象1执行几何图形预测试花费的时间更少。这可能是由于对象大小、重叠的屏幕区域数量等原因。[0127]在几何图形预测试之后,每个gpu对与其屏幕区域相交的所有对象或几何图形执行渲染。在一个实施方案中,一旦几何图形测试完成,每个gpu就开始渲染其几何图形。也就是说,几何图形测试和渲染之间没有同步点。这是可能的,因为正在生成的几何图形测试信息被视为提示而不是硬依赖。例如,gpu-a在gpu-b完成对象1的几何图形预测试之前且因此在gpu-b开始渲染对象0、2和3之前开始渲染对象2。[0128]竖直线750a与竖直线755a对齐,使得渲染时序图700c-1和700c-2中的每一个同时开始渲染对象0-1。然而,渲染时序图700c-2中所示的对象0-3的渲染在比渲染时序图700c-1中所示的渲染更短的时间内执行。也就是说,指示下部时序图700c-2的渲染阶段结束的竖直线750b出现早于如竖直线755b所指示的上部时序图700c-1的渲染阶段结束。具体地,当为应用执行图像的几何图形的多gpu渲染(包括在渲染之前针对屏幕区域预测试几何图形,并提供几何图形预测试的结果作为信息(例如提示))时实现渲染对象0-3时的速度增加745。如图所示,速度增加745是时序图700c-2的竖直线750b和时序图700c-1的竖直线755b之间的时间差。[0129]速度增加是通过几何图形预测试期间生成的信息的生成和共享来实现的。例如,在几何图形预测试期间,gpu-a生成指示对象0只需要由gpu-b渲染的信息。因此,gpu-b被告知它应该渲染对象0,而其他gpu(例如gpu-a、gpu-c和gpu-d)可以完全跳过对象0的渲染,因为对象0不与分配给这些gpu用于对象渲染的任何区域(例如在对应组中)重叠。例如,这些gpu不需要执行几何图形处理级,而在没有几何图形预测试的情况下,即使这些gpu不会完全渲染对象0,也会处理该级,如时序图700c-1所示。同样,在几何图形预测试期间,gpu-b生成指示对象1应由gpu-c和gpu-d渲染并且gpu-a和gpu-b可以完全跳过对象1的渲染的信息,因为对象1不与分配给gpu-a或gpu-b用于对象渲染的任何区域(例如,在各自对应组中)重叠。同样,在几何图形预测试期间,gpu-c生成指示对象2应由gpu-a、gpu-b和gpu-d渲染并且gpu-c可以完全跳过对象2的渲染的信息,因为对象2不与分配给gpu-c用于对象渲染的任何区域(例如,在对应组中)重叠。进一步,在几何图形预测试期间,gpu-d生成指示对象3应由gpu-b、gpu-c和gpu-d渲染并且gpu-a可以完全跳过对象3的渲染的信息,因为对象3不与分配给gpu-a用于对象渲染的任何区域(例如,在对应组中)重叠。[0130]由于几何图形预测试生成的信息在gpu之间共享,因此每个gpu都可以确定要渲染哪些对象。因此,在执行几何图形预测试并将测试结果与所有gpu共享之后,每个gpu都具有关于哪些对象或几何图形需要由对应gpu渲染的信息。例如,gpu-a渲染对象2;gpu-b渲染对象0、2和3;gpu-c渲染对象1和3;和gpu-d渲染对象1、2和3。[0131]特别地,gpu a对对象1执行几何图形处理,并确定对象1可以被gpu-b跳过,因为对象1不与分配给gpu-b用于对象渲染的任何区域(例如,在对应组中)重叠。此外,对象1没有完全由gpu-a渲染,因为它不与分配给gpu-a用于对象渲染的任何区域(例如,在对应组中)重叠。由于在gpu-b开始对对象1进行几何图形处理之前确定对象1没有与分配给gpu-b的任何区域重叠,因此gpu-b跳过对象1的渲染。[0132]图8a-图8b示出了针对屏幕区域820a和820b的对象测试,其中屏幕区域可以是交错的(例如,屏幕区域820a和820b示出了显示器的一部分)。特别地,通过在屏幕中渲染对象之前执行几何图形测试,对单个图像帧或图像帧序列中的一个或多个图像帧中的每一个执行对象的多gpu渲染。如图所示,gpu-a被分配负责在屏幕区域820a中渲染对象。gpu-b被分配负责在屏幕区域820b中渲染对象。为“几何图形”生成信息,其中几何图形可以是整个对象或对象的一部分。例如,一个几何图形可以是对象810,或对象810的部分。[0133]图8a图示了根据本公开的一个实施方案的当多个gpu协作渲染单个图像时针对屏幕区域的对象测试。如前所述,几何图形可以是对象,使得几何图形对应于由对应的绘制调用使用或生成的几何图形。在几何图形预测试期间,可以确定对象810与区域820a重叠。也就是说,对象810的部分810a与区域820a重叠。在这种情况下,gpu-a的任务是渲染对象810。同样,在几何图形预测试期间,可以确定对象810与区域820b重叠。也就是说,对象810的部分810b与区域820b重叠。在这种情况下,gpu-b的任务也是渲染对象810。[0134]图8b图示了根据本公开的一个实施方案的当多个gpu协作渲染单个图像帧时针对屏幕区域和/或屏幕子区域的对象的部分的测试。也就是说,几何图形可以是对象的一部分。例如,对象810可以被分割成多个,使得由绘制调用使用或生成的几何图形被细分成更小的几何图形。在一个实施方案中,几何图形的每一个大致是分配的位置高速缓存和/或参数高速缓存的大小。在那种情况下,在几何图形测试期间为那些较小的几何图形生成信息(例如一个或多个提示),其中该信息由渲染gpu使用,如前所述。[0135]例如,对象810被分割成更小的对象,使得用于区域测试的几何图形对应于这些更小的对象。如图所示,对象810被分割成几何图形“a”、“b”、“c”、“d”、“e”和“f”。在几何图形预测试之后,gpu-a只渲染几何图形“a”、“b”、“c”、“d”和“e”。也就是说,gpu-a可以跳过渲染几何图形“f”。此外,在几何图形预测试之后,gpu-b仅渲染几何图形“d”、“e”和“f”。也就是说,gpu-b可以跳过渲染几何图形“a”、“b”和“c”。[0136]在一个实施方案中,由于几何图形处理级被配置为执行顶点处理和图元处理两者,因此可能在几何图形处理级中使用着色器对一个几何图形执行几何图形预测试。例如,几何图形处理级生成信息(例如提示),诸如通过针对gpu屏幕区域测试几何图形的边界平截头体,这可以由软件着色器操作执行。在一个实施方案中,该测试通过使用专用指令或通过硬件实现的指令来加速,从而实现软件/硬件解决方案。也就是说,一个或多个专用指令用于加速关于几何图形及其与屏幕区域的关系的信息的生成。例如,一个几何图形的图元的顶点的齐次坐标作为输入提供给几何图形处理级的几何图形预测试指令。该测试可以为每个gpu生成布尔返回值,该布尔返回值指示图元是否与分配给该gpu用于对象渲染的任何屏幕区域(例如,在对应组中)重叠。这样,在几何图形预测试期间生成的关于对应几何图形及其与屏幕区域的关系的信息(例如提示)在几何图形处理级中由着色器生成。[0137]在另一个实施方案中,可以在硬件光栅化级执行对一个几何图形的几何图形预测试。例如,硬件扫描转换器可以被配置为执行几何图形预测试,使得扫描转换器生成关于分配给多个gpu用于对应图像帧的对象渲染的所有屏幕区域的信息。[0138]在又一个实施方案中,几何图形可以是图元。也就是说,用于几何图形预测试的对象的部分可以是图元。因此,一个gpu在几何图形预测试期间生成的信息(例如提示)指示是否需要由另一个渲染gpu渲染各个三角形(例如表示图元)。[0139]在一个实施方案中,在几何图形预测试期间生成并由用于渲染的gpu共享的信息包括与分配给对应gpu用于对象渲染的任何屏幕区域(例如,在对应组中)重叠的图元数(例如,幸存图元计数)。该信息还可以包括用于构建或定义这些图元的顶点数量。也就是说,该信息包括幸存顶点计数。因此,在渲染时,对应的渲染gpu可以使用提供的顶点计数来分配位置高速缓存和参数高速缓存中的空间。例如,在一个实施方案中,不需要的顶点没有任何分配的空间,这可以提高渲染效率。[0140]在其他实施方案中,在几何图形预测试期间生成的信息(例如提示)包括与分配给对应gpu用于对象渲染的任何屏幕区域(例如在对应组中)重叠的特定图元(例如作为精确匹配的幸存图元)。也就是说,为渲染gpu生成的信息包括一组特定的用于渲染的图元。该信息还可以包括用于构建或定义这些图元的特定顶点。也就是说,为渲染gpu生成的信息包括一组特定的用于渲染的顶点。例如,此信息可以在渲染几何图形时在其几何图形处理级期间节省其他渲染gpu时间。[0141]在其他实施方案中,可能存在与在几何图形测试期间生成信息相关联的处理开销(软件或硬件)。在这种情况下,跳过为某些几何图形生成信息可能是有益的。也就是说,作为提示提供的信息是为某些对象生成的,而不是为其他对象生成的。例如,表示天空盒或大片地形的几何图形(例如,对象或对象的一部分)可以包括大的三角形。在这种情况下,用于图像帧或图像帧序列中的一个或多个图像帧中的每一个的多gpu渲染的每个gpu都可能需要渲染这些几何图形。也就是说,可以根据对应的几何图形的性质来生成或不生成信息。[0142]图9a-图9c图示了根据本公开的一个实施方案的当多个gpu协作渲染单个图像时用于将屏幕区域分配给对应gpu的各种策略。为了实现gpu处理效率,在将屏幕划分为区域时可以使用各种技术,诸如增加或减少区域数量(例如,选择正确的区域量)、交错区域、增加或减少用于交错的区域的数量、在交错区域时选择特定模式等。例如,多个gpu被配置为通过在渲染对应图像中的对象之前针对交错的屏幕区域预测试几何图形来为应用生成的图像帧执行几何图形的多gpu渲染。图9a-图9c中的屏幕区域的配置被设计用于减少多个gpu之间的任何渲染时间不平衡。测试的复杂性(例如重叠对应的屏幕区域)取决于屏幕区域如何分配给gpu来变化。如图9a-图9c中示出的示意图所示,粗体框910是在渲染图像时使用的对应屏幕或显示器的轮廓。[0143]在一个实施方案中,多个屏幕区域或多个区域中的每一个都具有统一的大小。在一个实施方案中,多个屏幕区域中的每一个在大小上是不统一的。在又一个实施方案中,多个屏幕区域中的屏幕区域的数量和大小动态地改变。[0144]特别地,图9a图示了屏幕910的简单模式900a。每个屏幕区域的大小都是统一的。例如,每个区域的大小可以是尺寸为2像素的幂的矩形。例如,每个区域的大小可能为256x256像素。如图所示,区域分配是一个棋盘模式,其中一行a和b区域与另一行b和c区域交替。在几何图形预测试期间可以容易地测试模式900a。但是,可能存在一些渲染效率低下。例如,分配给每个gpu的屏幕面积基本上不同(即,屏幕910中屏幕区域c和区域d的覆盖范围较小),这可能导致每个gpu的渲染时间不平衡。[0145]图9b图示了屏幕910的屏幕区域的模式900b。每个屏幕或子区域的大小都是统一的。屏幕区域被分配和分布,以减少gpu之间渲染时间的不平衡。例如,以模式900b将gpu分配给屏幕区域会导致跨屏幕910分配给每个gpu的屏幕像素量几乎相等。也就是说,屏幕区域被分配给gpu以使屏幕910中的屏幕面积或覆盖范围均等。例如,如果每个区域的大小可能是256x256像素,则每个区域在屏幕910中具有大致相同的覆盖范围。特别地,一组屏幕区域a覆盖了6x256x256像素大小的面积,一组屏幕区域b覆盖了5.75x256x256像素大小的面积,一组屏幕区域c覆盖了5.5x256x256像素大小的面积,和一组屏幕区域d覆盖了5.5x256x256像素大小的面积。[0146]图9c图示了屏幕910的屏幕区域的模式900c。每个屏幕区域的大小都不统一。也就是说,分配给gpu的用于负责渲染对象的屏幕区域的大小可能不统一。特别地,屏幕910被划分使得每个gpu被分配给相同数量的像素。例如,如果将4k显示器(3840x2160)竖直均分为四个区域,则每个区域的高度为520个像素。但是,通常gpu在32x32像素块中执行许多操作,并且520个像素不是32个像素的倍数。因此,在一个实施方案中,模式900c可以包括高度为512个像素(32的倍数)的块,以及高度为544个像素(也是32的倍数)的其他块。其他实施方案可以使用不同大小的块。模式900c通过使用非统一屏幕区域示出分配给每个gpu的等量屏幕像素。[0147]在又一个实施方案中,应用在执行图像渲染时的需求随时间变化,并且屏幕区域是动态选择的。例如,如果已知大部分渲染时间都花在屏幕的下半部分,那么以这样一种方式分配区域是有利的,即显示器下半部分的几乎等量的屏幕像素被分配给用于渲染对应图像的每个gpu。也就是说,分配给用于渲染对应图像的每个gpu的区域可以动态地改变。例如,可以基于游戏模式、不同的游戏、屏幕大小、为区域选择的模式等应用改变。[0148]图10是图示了根据本公开的一个实施方案的用于执行几何图形预测试的gpu到几何图形的分配的各种分布的示意图。也就是说,图10示出了在多个gpu之间的几何图形预测试期间生成信息的责任分布。如前所述,每个gpu被分配给图像帧几何图形的对应部分,其中该部分可以进一步划分为对象、对象的部分、几何图形、多个几何图形等。几何图形预测试包括确定特定几何图形是否与分配给对应gpu以进行对象渲染的任何一个或多个屏幕区域重叠。几何图形预测试通常在实施方案中由gpu同时针对对应图像帧的所有几何图形(例如所有几何图形)执行。以这种方式,几何图形测试由gpu协作执行,允许每个gpu知道要渲染哪些几何图形,以及要跳过哪些几何图形的渲染,如前所述。[0149]如图10所示,每个几何图形可以是对象、对象的一部分等。例如,几何图形可以是对象的部分,诸如几何图形的大小大致是被分配的位置高速缓存和/或参数高速缓存的大小,如前所述。纯粹为了说明,对象0(例如,由渲染命令缓冲区700a中的命令722指定渲染)被分割成几何图形“a”、“b”、“c”、“d”、“e”和“f”,诸如图8b中的对象810。同样,对象1(例如,由渲染命令缓冲区700a中的命令724指定渲染)被分割成几何图形“g”、“h”和“i”。此外,对象2(例如,由渲染命令缓冲区700a中的命令724指定渲染)被分割成几何图形“j”、“k”、“l”、“m”、“n”和“o”。为了将几何图形测试的责任分布给gpu,可以对这些几何图形进行排序(例如,a-o)。[0150]分布1010(例如abcdabcdabcd...行)示出了在多个gpu之间执行几何图形测试的责任的均匀分布。特别地,不是让一个gpu占用几何图形的前四分之一(例如,在一个块中,诸如gpu a占用大约16个中的前四个,包括“a”、“b”、“c”和“d”用于几何图形测试),和第二gpu占用第二个四分之一,依此类推,到gpu的分配是交错的。也就是说,连续的几何图形被分配给不同的gpu。例如,几何图形“a”分配给gpu-a,几何图形“b”分配给gpu-b,几何图形“c”分配给gpu-c,几何图形“d”分配给gpu-d,几何图形“e”分配给gpu-a,几何图形“f”分配给gpu-b,几何图形“g”分配给gpu-c,等等。结果,几何图形测试的处理在gpu(例如,gpu-a、gpu-b、gpu-c和gpu-d)之间大致平衡。[0151]分布1020(例如abbcdabbcdabbcd...行)示出了在多个gpu之间执行几何图形测试的责任的非对称分布。当某些gpu在渲染对应图像帧时比其他gpu有更多时间来执行几何图形测试时,非对称分布可能是有利的。例如,一个gpu可能比其他gpu更早地完成了场景的前一帧或多帧的对象渲染,因此(因为预计它也会更早地完成这一帧)它可以被分配更多的几何图形用于执行几何图形测试。同样,对gpu的分配是交错的。如图所示,gpu-b被分配了比其他gpu更多的几何图形用于几何图形预测试。举例来说,几何图形“a”分配给gpu-a,几何图形“b”分配给gpu-b,几何图形“c”也分配给gpu-b,几何图形“d”分配给gpu-c,几何图形“e”分配给gpu-d,几何图形“f”分配给gpu-a,几何图形“g”分配给gpu-b,几何图形“h”也分配给gpu-b,几何图形“i”分配给gpu-c等。尽管几何图形测试到gpu的分配可能不平衡,但是完整阶段(例如,几何图形预测试和几何图形渲染)的组合处理可能最后是大致平衡的(例如,每个gpu花费大约相同量的时间来执行几何图形预测试和几何图形渲染)。[0152]图11a-图11b图示了在分配在多个gpu之间执行几何图形测试的责任时对一个或多个图像帧的统计数据的使用。例如,基于统计数据,一些gpu可以在几何图形测试期间处理更多或更少的几何图形,以生成在渲染时有用的信息。[0153]特别地,图11a是图示了根据本公开的一个实施方案的由多个gpu对前一图像帧进行几何图形预测试和渲染,以及在当前图像帧使用在渲染期间收集的统计数据来影响将当前图像帧的几何图形的预测试分配给多个gpu的示意图。纯粹为了说明,在图11a的第二帧1100b中,gpu-b处理的几何图形(例如在预测试期间)是其他gpu(例如gpu-a、gpu-c和gpu-d)的两倍。更多几何图形的分布和分配给gpu-b以在当前图像帧中执行几何图形预测试是基于在渲染前一个图像帧或前几个图像帧期间收集的统计数据。[0154]例如,时序图1100a示出了针对前一图像帧的几何图形预测试701a和渲染702a,其中四个gpu(例如gpu-a、gpu-b、gpu-c和gpu-d)用于两个过程。前一图像帧的几何图形(例如多个几何图形)的分配均匀分布在gpu之间。每个gpu对几何图形预测试701a的大致平衡性能表明了这一点。[0155]从一个或多个图像帧收集的渲染统计数据可用于确定如何执行当前图像帧的几何图形测试和渲染。也就是说,可以提供统计数据作为在执行后续图像帧(例如,当前图像帧)的几何图形测试和渲染时使用的信息。例如,在前一图像帧的对象(例如几何图形)的渲染期间收集的统计数据可以指示gpu-b比其他gpu更早地完成了渲染。特别地,gpu-b在渲染与分配给gpu-b用于对象渲染的任何屏幕区域(例如,在对应组中)重叠的几何图形的其部分之后具有空闲时间1130a。其他gpu-a、gpu-c和gpu-d中的每一个执行渲染大约直到前一图像帧的对应帧周期的结束710。[0156]当执行应用时,可以为特定场景生成前一图像帧和当前图像帧。因此,从一个场景到另一个场景的对象在数量和位置上可能大致相似。在这种情况下,在图像帧序列中的多个图像帧之间,对于gpu执行几何图形预测试和渲染的时间将是相似的。也就是说,基于统计数据合理推测,gpu-b在执行当前图像帧中的几何图形测试和渲染时也会有空闲时间。因此,gpu-b可以被分配更多的几何图形用于当前帧中的几何图形预测试。例如,通过在几何图形预测试期间让gpu-b处理更多几何图形,结果是gpu-b在渲染当前图像帧中的对象后与其他gpu以大致相同的时间完成。也就是说,gpu-a、gpu-b、gpu-c和gpu-d中的每一个执行渲染大约直到当前图像帧的对应帧周期的结束711。在一个实施方案中,减少了渲染当前图像帧的总时间,使得在使用渲染统计数据时渲染当前图像帧花费更少的时间。因此,前一帧和/或前多帧的渲染的统计数据可用于调整几何图形预测试,诸如在当前图像帧中在gpu之间分配几何图形(例如多个几何图形)的分布。[0157]图11b是图示了根据本公开的一个实施方案的图形处理方法的流程图1100b,包括由多个gpu对前一图像帧进行几何图形预测试和渲染,以及在当前图像帧中使用在渲染期间收集的统计数据来影响将当前图像帧的几何图形的预测试分配给多个gpu。图11a的示意图图示了在流程图1100b的方法中使用统计数据来确定用于图像帧的gpu之间的几何图形(例如多个几何图形)分配的分布。如前所述,各种架构可以包括多个gpu协作以通过为应用执行几何图形的多gpu渲染来渲染单个图像,诸如在云游戏系统的一个或多个云游戏服务器内,或在独立系统(诸如包括具有多个gpu的高端显卡的个人计算机或游戏控制台)内,等等。[0158]特别地,在1110,该方法包括使用多个gpu为应用渲染图形,如前所述。在1120,该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任。每个gpu具有多个gpu已知的对应责任划分。更具体地,每个gpu负责在多个屏幕区域的对应的一组屏幕区域中渲染几何图形,其中对应的一组屏幕区域包括一个或多个屏幕区域,如前所述。在一个实施方案中,屏幕区域是交错的(例如,当显示器被划分为几组屏幕区域用于几何图形预测试和渲染时)。[0159]在1130,该方法包括在多个gpu处渲染由应用生成的前一图像帧的第一多个几何图形。例如,时序图1100a图示了执行前一图像帧中的几何图形的几何图形测试和对象(例如几何图形)的渲染的时序。在1140,该方法包括为前一图像帧的渲染生成统计数据。也就是说,可以在渲染前一图像帧时收集统计数据。[0160]在1150,该方法包括基于统计数据将由应用生成的当前图像帧的第二多个几何图形分配给多个gpu用于几何图形测试。也就是说,当渲染下一个或当前图像帧时,这些统计数据可用于将用于几何图形测试的相同、更少或更多几何图形分配给特定gpu。在一些情况下,统计数据可以指示在执行几何图形测试时第二多个几何图形中的几何图形应该被均匀地分配给多个gpu。[0161]在其他情况下,统计数据可以指示在执行几何图形测试时第二多个几何图形中的几何图形应该被非均匀地分配给多个gpu。例如,如时间线1100a中所示,统计数据可以指示gpu-b在前一图像帧中在任何其他gpu之前完成渲染。特别地,可以确定第一gpu(例如gpu-b)在第二gpu(例如gpu-a)完成渲染第一多个几何图形(例如几何图形的一部分)之前完成渲染第一多个几何图形。如前所述,第一gpu(例如gpu-b)渲染与分配给第一gpu用于对象渲染的任何屏幕区域重叠的第一多个几何图形中的一个或多个几何图形,并且第二gpu(例如gpu-a)渲染与分配给第二gpu用于对象渲染的任何屏幕区域重叠的第一多个几何图形中的一个或多个几何图形。因此,因为基于统计数据预期第一gpu(例如gpu-b)将比第二gpu(例如gpu-a)需要更少的时间来渲染第二多个几何图形,所以更多的几何图形可以在渲染当前图像帧时分配给第一gpu进行几何图形预测试。例如,可以将第一数量的第二多个几何图形分配给第一gpu(例如gpu-b)用于几何图形测试,并且可以将第二数量的第二多个几何图形分配给第二gpu(例如,gpu-a)用于几何图形测试,其中第一数量高于第二数量(如果时间不平衡足够大,则gpu-a可能根本不分配有任何几何图形)。以这种方式,gpu-b在几何图形测试期间比gpu-a处理更多的几何图形。例如,时序图1100b示出gpu-b已经被分配了更多的几何图形,并且比其他gpu花费更多的时间来执行几何图形测试。[0162]在1160,该方法包括在当前图像帧处对第二多个几何图形执行几何图形预测试,以生成关于第二多个几何图形中的每一个及其与多个屏幕区域中的每一个的关系的信息。基于分配在多个gpu中的每一个处执行几何图形预测试。在预测试gpu处对由应用生成的图像帧的多个几何图形执行几何图形预测试,以生成关于每个几何图形及其与多个屏幕区域中的每一个的关系的信息。[0163]在1170,该方法包括在渲染阶段期间使用为第二多个几何图形中的每一个生成的信息来渲染多个几何图形(例如,包括在对应gpu处完全渲染几何图形或跳过该几何图形的渲染)。在实施方案中,渲染通常在每个gpu处同时执行。特别地,当前图像帧的多个几何图形在多个gpu中的每一个处使用为几何图形中的每一个生成的信息来渲染。[0164]在其他实施方案中,分布几何图形到gpu用于生成信息是动态调整的。也就是说,用于执行几何图形预测试的当前图像帧的几何图形的分配可以在当前图像帧的渲染期间动态调整。例如,在时序图1100b的示例中,可以确定gpu-a正在以比预期慢的速率对其分配的几何图形执行几何图形预测试。因此,分配给gpu-a以进行几何图形预测试的几何图形可以即时重新分配,诸如将一个几何图形从gpu-a重新分配给gpu-b,这样gpu-b现在的任务就是在用于渲染当前图像帧的帧周期期间对该几何图形执行几何图形预测试。[0165]图12a-图12b图示了用于处理渲染命令缓冲区的另一种策略。先前,参考图7a-图7c描述了一种策略,其中命令缓冲区包含用于对对象(例如几何图形)进行几何图形预测试的命令,随后是用于渲染对象(例如几何图形)的命令。图12a-图12b示出了使用能够根据gpu配置执行任一操作的着色器的几何图形预测试和渲染策略。[0166]特别地,图12a是图示了根据本公开的一个实施方案的被配置为在通过命令缓冲区1200a的一部分的两次通过中执行图像帧的几何图形的预测试和渲染两者的着色器的使用的示意图。也就是说,用于执行命令缓冲区1200a中的命令的着色器可以被配置为在正确配置时执行几何图形预测试,或者在正确配置时执行渲染。[0167]如图所示,图12a中所示的命令缓冲区1200a的一部分被执行两次,每次执行产生不同的动作;第一次执行导致执行几何图形预测试,而第二次执行导致执行几何图形渲染。这可以通过多种方式实现,例如,1200a中描述的命令缓冲区的部分可以作为子例程被显式调用两次,不同的状态(例如,寄存器设置或ram中的值)在每次调用之前显式设置为不同的值。替代地,1200a中描述的命令缓冲区的部分可以被隐式执行两次,例如通过使用特殊命令来标记该部分的开始和结束以执行两次,并为命令缓冲区的部分的第一次和第二次执行隐式设置不同的配置(例如寄存器设置)。当命令缓冲区1200a的部分中的命令被执行时(例如,设置状态的命令或执行着色器的命令),基于gpu状态,命令的结果是不同的(例如,导致执行几何图形预测试与执行渲染)。也就是说,命令缓冲区1200a中的命令可以被配置用于几何图形预测试或渲染。特别地,命令缓冲区1200a的部分包括用于配置执行来自渲染命令缓冲区1200a的命令的一个或多个gpu的状态的命令,以及用于执行取决于状态执行几何图形预测试或渲染的着色器的命令。例如,命令1210、1212、1214和1216中的每一个都用于配置一个或多个gpu的状态,以便执行取决于状态执行几何图形预测试或渲染的着色器。如图所示,命令1210配置gpu状态,以便着色器0可以经由命令1211执行并执行几何图形预测试或渲染。同样,命令1212配置gpu状态,以便着色器1可以经由命令1213执行以执行几何图形预测试或渲染。此外,命令1214配置gpu状态,以便着色器2可以经由命令1215执行以执行几何图形预测试或渲染。最后,命令1216配置gpu状态,以便着色器3可以经由命令1217执行以执行几何图形预测试或渲染。[0168]在通过命令缓冲区1200a的第一次遍历1291上,基于如上所述显式或隐式设置的gpu状态以及由命令1210、1212、1214和1216配置的gpu状态,对应的着色器执行几何图形预测试。例如,着色器0被配置为对对象0(例如,一个几何图形)执行几何图形预测试(例如,基于图7b-1中所示的对象),着色器1被配置为对对象1执行几何图形预测试,着色器2被配置为对对象2执行几何图形预测试,和着色器3被配置为对对象3执行几何图形预测试。[0169]在一个实施方案中,基于gpu状态,可以跳过或不同地解释命令。例如,设置状态的某些命令(1210、1212、1214和1216的部分)可以基于如上所述显式或隐式设置的gpu状态而被跳过;例如,如果配置经由命令1210执行的着色器0需要为几何图形预测试配置的gpu状态比配置用于几何图形渲染时需要的gpu状态更少,那么由于gpu状态设置会产生开销,所以跳过设置gpu状态的不必要部分可能是有益的。再举一个例子,设置状态的某些命令(1210、1212、1214和1216的部分)可以基于如上所述显式或隐式设置的gpu状态而被不同地解释;例如,如果经由命令1210执行的着色器0需要为几何图形预测试配置的gpu状态不同于为几何图形渲染配置时的,或者如果经由命令1210执行的着色器0需要针对几何图形预测试和针对几何图形渲染不同的输入。[0170]在一个实施方案中,为几何图形预测试配置的着色器不分配位置高速缓存和参数高速缓存中的空间,如前所述。在另一个实施方案中,使用单个着色器来执行预测试或渲染。这可以通过多种方式完成,诸如经由着色器可以检查的外部硬件状态(例如,如上所述显式或隐式设置的),或经由着色器的输入(例如,由通过命令缓冲区在第一次和第二次通过中不同地解释的命令设置的)。[0171]在通过命令缓冲区1200a的第二次遍历1292中,基于如上所述显式或隐式设置的gpu状态,以及由命令1210、1212、1214和1216配置的gpu状态,对应的着色器执行对应图像帧的几何图形的渲染。例如,着色器0被配置为执行对象0(例如,一个几何图形)的渲染(例如,基于图7b-1中所示的对象)。同样,着色器1被配置为执行对象1的渲染,着色器2被配置为执行对象2的渲染,并且着色器3被配置为执行对象3的渲染。[0172]图12b是图示了根据本公开的一个实施方案的图形处理方法的流程图1200b,包括在通过命令缓冲区的一部分在两次通过中使用相同的一组着色器来执行图像帧的几何图形的预测试和渲染两者。如前所述,各种架构可以包括多个gpu协作以通过为应用执行几何图形的多gpu渲染来渲染单个图像,诸如在云游戏系统的一个或多个云游戏服务器内,或在独立系统(诸如包括具有多个gpu的高端显卡的个人计算机或游戏控制台)内,等等。[0173]特别地,在1210,该方法包括使用多个gpu为应用渲染图形,如前所述。在1220,该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任。每个gpu具有多个gpu已知的对应责任划分。更具体地,每个gpu负责在多个屏幕区域的对应的一组屏幕区域中渲染几何图形,其中对应的一组屏幕区域包括一个或多个屏幕区域,如前所述。在一个实施方案中,屏幕区域是交错的(例如,当显示器被划分为几组屏幕区域用于几何图形预测试和渲染时)。[0174]在1230,该方法包括将图像帧的多个几何图形分配给多个gpu以用于几何图形测试。特别地,多个gpu中的每一个被分配给与图像帧相关联的几何图形的对应部分,以用于几何图形测试。如前所述,在实施方案中,几何图形的分配可以是均匀或不均匀分布的,其中每个部分包括一个或多个几何图形,或者可能根本没有几何图形。[0175]在1240,该方法包括加载配置一个或多个着色器以执行几何图形预测试的第一gpu状态。例如,根据gpu状态,可以配置对应的着色器来执行不同的操作。因此,第一gpu状态配置对应的着色器以执行几何图形预测试。在图12a的示例中,这可以以多种方式设置,例如通过在1200a中描绘的命令缓冲区的部分外部显式或隐式设置状态,如上所述。特别地,可以以多种方式设置gpu状态。例如,cpu或gpu可以设置随机存取存储器(ram)中的一个值,其中gpu将检查ram中的该值。在另一个示例中,状态可以在gpu内部,诸如当命令缓冲区作为子例程被调用两次时,内部gpu状态在两个子例程调用之间是不同的。替代地,图12a中的命令1210可以基于如上所述显式或隐式设置的状态来不同地解释或跳过。基于此第一gpu状态,由命令1211执行的着色器0被配置为执行几何图形预测试。[0176]在1250,该方法包括在多个gpu处对多个几何图形执行几何图形预测试,以生成关于每个几何图形及其与多个屏幕区域中的每一个的关系的信息。如前所述,几何图形预测试可以确定一个几何图形是否与分配给对应gpu用于对象渲染的任何屏幕区域(例如,在对应组中)重叠。因为几何图形预测试通常在实施方案中由gpu同时针对对应图像帧的所有几何图形执行,所以每个gpu能够知道要渲染哪些几何图形以及跳过哪些几何图形。这结束了通过命令缓冲区的第一次遍历,其中着色器可以被配置为根据gpu状态执行几何图形预测试和/或渲染中的每一者。[0177]在1260,该方法包括加载配置一个或多个着色器以执行渲染的第二gpu状态。如前所述,根据gpu状态,可以配置对应的着色器来执行不同的操作。因此,第二gpu状态配置对应的着色器(之前用于执行几何图形预测试的相同着色器)来执行渲染。在图12a的示例中,基于该第二gpu状态,由命令1211执行的着色器0被配置为执行渲染。[0178]在1270,该方法包括在渲染多个几何图形(例如,包括在对应gpu处完全渲染几何图形或跳过该几何图形的渲染)时在多个gpu的每一个处使用为多个几何图形中的每一个生成的信息。如前所述,该信息可以指示一个几何图形是否与分配给对应gpu用于对象渲染的任何屏幕区域(例如,在对应组中)重叠。该信息可以用于在多个gpu中的每一个处渲染多个几何图形中的每一个,使得每个gpu可以仅高效地渲染与分配给该对应gpu用于对象渲染的至少一个屏幕(例如,在对应组中)重叠的几何图形。这结束了通过命令缓冲区的第二次遍历,其中着色器可以被配置为根据gpu状态执行几何图形预测试和/或渲染中的每一者。[0179]图13a-图13b图示了用于处理渲染命令缓冲区的另一种策略。先前,参考图7a-图7c描述了一种策略,其中命令缓冲区包含用于对对象(例如几何图形)进行几何图形预测试的命令,随后是用于渲染对象(例如几何图形)的命令,且图12a-图12b中描述了使用能够根据gpu配置执行任一操作的着色器的另一种策略。图13a-图13b示出了根据本公开的实施方案的使用能够执行几何图形预测试或渲染的着色器的几何图形测试和渲染策略,并且其中几何图形预测试和渲染的过程对于不同组的几何图形是交错的。[0180]特别地,图13a是图示了根据本公开的一个实施方案的被配置为执行几何图形预测试和渲染两者的着色器的使用的示意图,其中针对不同组几何图形执行的几何图形预测试和渲染是使用对应命令缓冲区1300a的单独部分交错的。也就是说,不是从开始到结束执行命令缓冲区1300a的一部分,命令缓冲区1300a被动态地配置和执行,使得几何图形预测试和渲染对于不同组的几何图形交错。例如,在命令缓冲区中,一些着色器(例如,经由命令1311和1313执行的)被配置为对第一组几何图形执行几何图形预测试,其中在执行几何图形测试之后,那些相同的着色器(例如,由命令1311和1313执行的)然后被配置为执行渲染。在对第一组几何图形执行渲染之后,命令缓冲区中的其他着色器(例如,经由命令1315和1317执行的)被配置用于对第二组几何图形执行几何图形预测试,其中在执行几何图形预测试之后,那些相同的着色器(例如经由命令1315和1317执行的)然后被配置用于执行渲染,并且渲染是对第二组几何图形使用那些命令执行的。这种策略的好处是可以动态解决gpu之间的不平衡,诸如通过在整个渲染过程中使用几何图形测试的非对称交错。先前在图10的分布102中介绍了几何图形测试的非对称交错的示例。[0181]由于几何图形预测试和渲染的交错动态发生,gpu的配置(例如,经由寄存器设置或ram中的值)隐式发生,也就是说,gpu配置的一个方面发生在命令缓冲区的外部。例如,gpu寄存器可以设置为0(指示应该发生几何图形预测试)或1(指示应该发生渲染);命令缓冲区的交错遍历和该寄存器的设置可以由gpu基于处理的对象数量、处理的图元、gpu之间的不平衡等来控制。替代地,可以使用ram中的值。作为该外部配置(意味着在命令缓冲区外部设置)的结果,当命令缓冲区1300a的部分中的命令被执行时(例如,设置状态的命令或执行着色器的命令),基于gpu状态,命令的结果是不同的(例如,导致执行几何图形预测试与执行渲染)。也就是说,命令缓冲区1300a中的命令可以被配置用于几何图形预测试1391或渲染1392。特别地,命令缓冲区1300a的部分包括用于配置执行来自渲染命令缓冲区1300a的命令的一个或多个gpu的状态的命令,以及用于执行取决于状态执行几何图形预测试或渲染的着色器的命令。例如,命令1310、1312、1314和1316中的每一个都用于配置gpu的状态,以便执行取决于状态执行几何图形预测试或渲染的着色器。如图所示,命令缓冲区1310配置gpu状态,以便可以经由命令1311执行着色器0,以执行对象0的几何图形预测试或渲染。同样,命令缓冲区1312配置gpu状态,以便可以经由命令1313执行着色器1,以执行对象1的几何图形预测试或渲染。同样,命令缓冲区1314配置gpu状态,以便可以经由命令1315执行着色器2,以执行对象2的几何图形预测试或渲染。进一步,命令缓冲区1316配置gpu状态,以便可以经由命令1317执行着色器3,以执行对象3的几何图形预测试或渲染。[0182]几何图形预测试和渲染可以针对不同组的几何图形交错。仅出于说明目的,命令缓冲区1300a可以被配置为首先执行对象0和1的几何图形预测试和渲染,然后命令缓冲区1300a被配置为第二次执行对象2和3的几何图形预测试和渲染。可以理解,不同数量的几何图形可以在不同的分段中交错。例如,分段1示出了通过命令缓冲区1300a的第一次遍历。基于如上所述隐式设置的gpu状态以及由命令1310和1312配置的gpu状态,对应的着色器执行几何图形预测试。例如,着色器0被配置为对对象0(例如,一个几何图形)执行几何图形预测试(例如,基于图7b-1中所示的对象),并且着色器1被配置为对对象1执行几何图形预测试。分段2示出了通过命令缓冲区1300a的第二次遍历。基于如上所述隐式设置的gpu状态以及由命令1310和1312配置的gpu状态,对应的着色器执行渲染。例如,着色器0配置为现在执行对象0的渲染,且着色器1配置为现在执行对象1的渲染。[0183]几何图形预测试和渲染在不同组的几何图形上的性能的交错显示在图13a中。特别地,分段3示出了通过命令缓冲区1300a的第三部分遍历。基于如上所述隐式设置的gpu状态以及由命令1314和1316配置的gpu状态,对应的着色器执行几何图形预测试。例如,着色器2(经由命令1315执行)对对象2(例如一个几何图形)执行几何图形测试(例如基于图7b-1中所示的对象),并且着色器3(经由命令1317执行)对对象3执行几何图形测试。分段4示出了通过命令缓冲区1300a的第四部分遍历。基于如上所述隐式设置的gpu状态以及由命令1314和1316配置的gpu状态,对应的着色器执行渲染。例如,着色器2(经由命令1315执行)执行对象2的渲染,并且着色器3(经由命令1317执行)执行对象3的渲染。[0184]请注意,硬件背景被保留,或者被保存和恢复。例如,分段1结束时的几何图形预测试gpu背景需要在分段3的开始用于执行几何图形预测试。同样,分段2结束时的渲染gpu背景需要在分段4的开始执行渲染。[0185]在一个实施方案中,基于gpu状态,可以跳过或不同地解释命令。例如,设置状态的某些命令(1310、1312、1314和1316的部分)可以基于如上所述隐式设置的gpu状态而被跳过;例如,如果配置经由命令1310执行的着色器0需要为几何图形测试配置的gpu状态比配置用于几何图形渲染时需要的gpu状态更少,那么由于gpu状态设置会产生开销,所以跳过设置gpu状态的不必要部分可能是有益的。再举一个例子,设置状态的某些命令(1310、1312、1314和1316的部分)可以基于如上所述隐式设置的gpu状态而被不同地解释;例如,如果经由命令1310执行的着色器0需要为几何图形测试配置的gpu状态不同于为几何图形渲染配置时,或者如果经由命令1310执行的着色器0需要针对几何图形测试和针对几何图形渲染不同的输入。[0186]在一个实施方案中,为几何图形预测试配置的着色器不分配位置高速缓存和参数高速缓存中的空间,如前所述。在另一个实施方案中,使用单个着色器来执行预测试或渲染。这可以通过多种方式完成,诸如经由着色器可以检查的外部硬件状态(例如,如上所述隐式设置的),或经由着色器的输入(例如,由通过命令缓冲区在第一次和第二次通过中不同地解释的命令设置的)。[0187]图13b是图示了根据本公开的一个实施方案的图形处理方法的流程图,包括使用对应命令缓冲区的单独部分来针对不同组几何图形使图像帧的几何图形的预测试和渲染交错。如前所述,各种架构可以包括多个gpu协作以通过为应用执行几何图形的多gpu渲染来渲染单个图像,诸如在云游戏系统的一个或多个云游戏服务器内,或在独立系统(诸如包括具有多个gpu的高端显卡的个人计算机或游戏控制台)内,等等。[0188]特别地,在1310,该方法包括使用多个gpu为应用渲染图形,如前所述。在1320,该方法包括基于多个屏幕区域在多个gpu之间划分用于渲染图形的几何图形的责任。每个gpu具有多个gpu已知的对应责任划分。更具体地,每个gpu负责在多个屏幕区域的对应的一组屏幕区域中渲染几何图形,其中对应的一组屏幕区域包括一个或多个屏幕区域,如前所述。在一个实施方案中,屏幕区域是交错的(例如,当显示器被划分为几组屏幕区域用于几何图形预测试和渲染时)。[0189]在1330,该方法包括将图像帧的多个几何图形分配给多个gpu以用于几何图形测试。特别地,多个gpu中的每一个被分配给与图像帧相关联的几何图形的对应部分,以用于几何图形测试。如前所述,几何图形的分配可以是均匀或不均匀分布的,其中每个部分包括一个或多个几何图形,或者可能根本没有几何图形。[0190]在1340,该方法包括将命令缓冲区中的第一组着色器与第二组着色器交错,其中所述着色器被配置为执行几何图形预测试和渲染两者。特别地,第一组着色器被配置为对第一组几何图形执行几何图形预测试和渲染。此后,第二组着色器被配置为对第二组几何图形执行几何图形预测试和渲染。如前所述,几何图形预测试生成关于第一组或第二组中的每个几何图形及其与多个屏幕区域中的每一个的关系的对应信息。多个gpu使用对应的信息来渲染第一组或第二组中的每个几何图形。如前所述,可以以多种方式设置gpu状态,以便执行几何图形预测试或渲染。例如,cpu或gpu可以设置随机存取存储器(ram)中的一个值,其中gpu将检查ram中的该值。在另一个示例中,状态可以在gpu内部,诸如当命令缓冲区作为子例程被调用两次时,内部gpu状态在两个子例程调用之间是不同的。[0191]进一步描述交错过程。特别地,命令缓冲区的第一组着色器被配置为对第一组几何图形执行几何图形预测试,如前所述。在多个gpu处对第一组几何图形执行几何图形预测试以生成关于第一组中的每个几何图形及其与多个屏幕区域中的每一个的关系的第一信息。然后,第一组着色器被配置为执行第一组几何图形的渲染,如前所述。此后,当在多个gpu中的每一个处渲染多个几何图形(例如,包括在对应的gpu处完全渲染第一组几何图形或跳过第一组几何图形的渲染)时使用第一信息。如前所述,该信息指示哪些几何图形与分配给对应gpu用于对象渲染的屏幕区域重叠。例如,当该信息指示几何图形确实与分配给gpu以用于对象渲染的任何屏幕区域(例如,在对应组中)重叠时,该信息可用于跳过在gpu处渲染几何图形。[0192]然后将第二组着色器用于第二组几何图形的几何图形测试和渲染。特别地,命令缓冲区的第二组着色器被配置为对第二组几何图形执行几何图形预测试,如前所述。然后,在多个gpu处对第二组几何图形执行几何图形测试以生成关于第二组中的每个几何图形及其与多个屏幕区域中的每一个的关系的第二信息。然后,第二组着色器被配置为执行第二组几何图形的渲染,如前所述。此后,使用第二信息在多个gpu中的每一个处执行第二组几何图形的渲染。如前所述,该信息指示哪些几何图形与分配给对应gpu用于对象渲染的屏幕区域(例如,对应组的)重叠。[0193]尽管以上将多个gpu描述为前后紧接处理几何图形(即,多个gpu执行几何图形预测试,然后多个gpu执行渲染),但在一些实施方案中,gpu没有明确地彼此同步,例如,一个gpu可以正在渲染第一组几何图形,而第二gpu正在对第二组几何图形执行几何图形预测试。[0194]图14图示了可用于执行本公开的各种实施方案的各方面的示例装置1400的部件。例如,图14图示了根据本公开的实施方案的示例性硬件系统,该系统适用于通过在渲染图像帧的对象之前针对可能交错的屏幕区域预测试几何图形来为应用进行几何图形的多gpu渲染。该框图示出了装置1400,所述装置可并入或可能是个人计算机、服务器计算机、游戏控制台、移动装置或其他数字装置,它们中的每个适合于实践本发明的实施方案。装置1400包括用于运行软件应用和可选地操作系统的中央处理单元(cpu)1402。cpu 1402可以由一个或多个同构或异构处理核心构成。[0195]根据各种实施方案中,cpu 1402是具有一个或多个处理核心的一个或多个通用微处理器。另外的实施方案可使用一个或多个cpu来实现,所述一个或多个cpu具有特别适用于诸如媒体和交互式娱乐应用等高度平行和计算密集的应用的微处理器架构,所述应用被配置用于游戏的执行期间的图形处理。[0196]存储器1404存储应用和数据供cpu 1402和gpu 1416使用。存储装置1406为应用和数据提供非易失性存储装置和其他计算机可读介质并且可以包括固定磁盘驱动器、可移除磁盘驱动器、快闪存储器装置和cd-rom、dvd-rom、蓝光光碟、hd-dvd或其他光学存储装置,以及信号传输和存储介质。用户输入装置1408将用户输入从一个或多个用户传达到装置1400,所述装置的示例可包括键盘、鼠标、操纵杆、触摸板、触摸屏、静态或视频记录器/相机和/或传声器。网络接口1409允许装置1400经由电子通信网络与其他计算机系统通信,并且可以包括在局域网和诸如互联网的广域网上的有线或无线通信。音频处理器1412适于从由cpu 1402、存储器1404和/或存储装置1406提供的指令和/或数据生成模拟或数字音频输出。装置1400的部件,包括cpu 1402、包括gpu 1416的图形子系统、存储器1404、数据存储装置1406、用户输入装置1408、网络接口1409和音频处理器1412,经由一根或多根数据总线1422连接。[0197]图形子系统1414进一步与数据总线1422和装置1400的部件连接。图形子系统1414包括至少一个图形处理单元(gpu)1416和图形存储器1418。图形存储器1418包括显示存储器(例如帧缓冲区),所述显示存储器用于存储输出图像的每个像素的像素数据。图形存储器1418可以集成在与gpu 1416相同的装置中、作为单独的装置与gpu 1416连接和/或实现在存储器1404内。像素数据可以直接从cpu 1402提供到图形存储器1418。替代地,cpu 1402可向gpu 1416提供定义期望输出图像的数据和/或指令,gpu 1416根据所述数据和/或指令生成一个或多个输出图像的像素数据。定义期望输出图像的数据和/或指令可以存储在存储器1404和/或图形存储器1418中。在实施方案中,gpu 1416包括3d渲染能力,所述3d渲染能力用于根据指令和数据生成输出图像的像素数据,所述指令和数据定义场景的几何图形、照明、着色、纹理化、动作和/或相机参数。gpu 1416还可以包括能够执行着色器程序的一个或多个可编程执行单元。[0198]图形子系统1414周期性地从图形存储器1418输出图像的像素数据,以在显示装置1410上显示或由投影系统(未示出)进行投影。显示装置1410可以是能够响应于来自装置1400的信号来显示视觉信息的任何装置,包括crt、lcd、等离子体和oled显示器。装置1400可以向显示装置1410提供例如模拟或数字信号。[0199]用于优化图形子系统1414的其他实施方案可以包括通过在渲染图像帧的对象之前针对可能交错的屏幕区域预测试几何图形来为应用进行几何图形的多gpu渲染。图形子系统1414可被配置为一个或多个处理装置。[0200]例如,在一个实施方案中,图形子系统1414可被配置成为应用执行几何图形的多gpu渲染,其中多个图形子系统可为单个应用实现图形和/或渲染流水线。也就是说,图形子系统1414包括多个gpu,用于在执行应用时渲染图像或图像序列中的一个或多个图像中的每一个。[0201]在其他实施方案中,图形子系统1414包括多个gpu装置,它们被组合以为在对应的cpu上执行的单个应用执行图形处理。例如,多个gpu可以通过在渲染图像帧的对象之前针对可能交错的屏幕区域预测试几何图形来为应用执行几何图形的多gpu渲染。在其他示例中,多个gpu可执行交替形式的帧渲染,其中以顺序的帧周期,gpu 1渲染第一帧,并且gpu 2渲染第二帧,依此类推,直到到达最后一个gpu为止,于是初始gpu渲染下一个视频帧(例如,如果只有两个gpu,则gpu 1渲染第三帧)。那就是渲染帧时gpu旋转。渲染操作可重叠,其中gpu 2可在gpu 1完成渲染第一帧之前开始渲染第二帧。在另一个实施方式中,可以在渲染和/或图形流水线中为多个gpu装置分配不同的着色器操作。主gpu正在执行主渲染和合成。例如,在包括三个gpu的组中,主gpu 1可以执行主渲染(例如,第一着色器操作)和合成来自从属gpu 2和从属gpu 3的输出,其中从属gpu 2可以执行第二着色器(例如流体效果,诸如河流)操作,从属gpu 3可以执行第三着色器(例如粒子烟雾)操作,其中主gpu 1合成来自gpu 1、gpu 2和gpu 3中的每一个的结果。这样,可以分配不同的gpu来执行不同的着色器操作(例如挥旗、风、烟雾生成、火等)以渲染视频帧。在又一个实施方案中,三个gpu中的每一个都可以分配给对应于视频帧的不同的对象和/或场景部分。在以上实施方案和实施方式中,可在同一帧周期(同时并行)或在不同帧周期(顺序并行)中执行这些操作。[0202]因此,本公开描述了被配置为通过在执行应用时在渲染图像帧或图像帧序列中的一个或多个图像帧中的每一个的对象之前针对可能交错的屏幕区域预测试几何图形来为应用进行几何图形的多gpu渲染的方法和系统。[0203]应理解,可使用本文公开的各种特征将本文定义的各种实施方案组合或组装成具体的实施方式。因此,所提供的示例只是一些可能的示例,而不限于通过组合各种元素来定义更多的实施方式而可能的各种实施方式。在一些示例中,一些实施方式可以包括更少的元素,而不背离所公开的或等效实施方式的精神。[0204]本公开的实施方案可以用包括手持式装置、微处理器系统、基于微处理器的或可编程的消费电子产品、小型计算机、大型计算机等的各种计算机系统配置来实践。还可以在分布式计算环境中实践本公开的实施方案,在所述分布式计算环境中,通过基于有线或无线网络链接的远程处理装置执行任务。[0205]考虑到以上实施方案,应理解,本公开的实施方案可以采用涉及存储在计算机系统中的数据的各种计算机实现的操作。这些操作是需要对物理量的物理操纵的那些操作。本文描述的形成本公开的实施方案的一部分的任何操作都是有用的机器操作。本公开的实施方案还涉及用于执行这些操作的装置或设备。可以针对所需目的专门构造所述设备,或者所述设备可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。具体地,各种通用机器可以与根据本文的教导编写的计算机程序一起使用,或者构造更专门的设备来执行所需的操作可能更方便。[0206]本公开还可以实施为计算机可读介质上的计算机可读代码。计算机可读介质是可以存储数据的任何数据存储装置,该数据随后可以由计算机系统读取。计算机可读介质的示例包括硬盘驱动器、网络附接存储装置(nas)、只读存储器、随机存取存储器、cd-rom、cd-r、cd-rw、磁带以及其他光学和非光学数据存储装置。所述计算机可读介质可以包括分布在网络耦合的计算机系统上的计算机可读有形介质,使得以分布式方式存储和执行计算机可读代码。[0207]尽管以具体的顺序描述了方法操作,但应理解,可在操作之间执行其他内务操作,或者可以调整操作,使得它们在略微不同的时间发生,或者可以分布在允许以与处理相关联的各种间隔发生处理操作的系统中,只要覆盖操作的处理以期望的方式执行即可。[0208]虽然出于清楚理解的目的相当详细地描述了前述公开内容,但显而易见的是,可在所附权利要求的范围内实践某些改变和修改。因此,本发明的实施方案被认为是说明性的而非限制性的,并且本公开的实施方案不限于本文给出的细节,而可以在所附权利要求的范围和等效物内进行修改。
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
通过在渲染前针对交错的屏幕区域进行预测试来进行几何图形的高效多GPU渲染的系统和方法与流程
作者:admin
2022-11-05 09:26:32
721
关键词:
计算;推算;计数设备的制造及其应用技术
专利技术
- 下一篇: 一种冷热风交替干燥的胶囊干燥机的制作方法
- 上一篇: 一种多功能铒激光治疗仪的制作方法