几何处理方法、装置、设备及存储介质转让专利

申请号 : CN202311533612.2

文献号 : CN117252751B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名请求不公布姓名请求不公布姓名请求不公布姓名

申请人 : 摩尔线程智能科技(北京)有限责任公司

摘要 :

本申请公开了一种几何处理方法、装置、设备及存储介质,其中,所述几何处理方法包括:通过图元分发模块获取几何数据流中的图元块数据;所述图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签;通过所述图元分发模块将所述图元块数据进一步划分为图元组数据,并将所述图元组数据分发到几何处理管线;通过所述几何处理管线对所述图元组数据进行处理,得到图元组处理结果,并将所述图元组处理结果输出给所述合并仲裁器;通过所述合并仲裁器,基于所述第二标签对所述图元组处理结果进行合并处理,得到所述图元块数据对应的几何输出数据。通过上述方法,可以提升图形处理器的几何处理性能。

权利要求 :

1.一种几何处理方法,其特征在于,应用于图形处理器中,所述图形处理器包括至少两个图形管线集群,所述图形管线集群包括图元分发模块、至少两个几何处理管线和合并仲裁器,所述几何处理方法包括:通过所述图元分发模块获取几何数据流中的图元块数据;所述图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签;

通过所述图元分发模块将所述图元块数据划分为图元组数据,并将所述图元组数据分发到几何处理管线;所述图元组数据包括用于确定所述图元组数据在所述图元块数据中顺序的第二标签;

通过所述几何处理管线对所述图元组数据进行处理,得到图元组处理结果,并将所述图元组处理结果输出给所述合并仲裁器;

通过所述合并仲裁器,基于所述第二标签对所述图元组处理结果进行合并处理,得到所述图元块数据对应的具有第二顺序的几何输出数据;所述几何输出数据包含对应图元块数据的所述第一标签,用于确定各所述图形管线集群输出的几何输出数据之间的第一顺序。

2.根据权利要求1所述的几何处理方法,其特征在于,所述通过所述图元分发模块获取几何数据流中的图元块数据,包括:通过所述图元分发模块从所述几何数据流中读取所述图形管线集群需要处理的图元块数据。

3.根据权利要求2所述的几何处理方法,其特征在于,所述通过所述图元分发模块从所述几何数据流中读取所述图形管线集群需要处理的图元块数据,包括:通过所述图元分发模块读取所述几何数据流;

基于预设的图元块获取策略,将所述几何数据流中不属于当前图形管线集群处理的数据丢弃,得到所述图形管线集群需要处理的图元块数据。

4.根据权利要求2所述的几何处理方法,其特征在于,所述通过所述图元分发模块从所述几何数据流中读取所述图形管线集群需要处理的图元块数据,包括:基于预设的图元块获取策略,确定所述图形管线集群需要处理的图元块数据的地址段;

基于所述地址段在所述几何数据流中读取所述图形管线集群需要处理的图元块数据。

5.根据权利要求1所述的几何处理方法,其特征在于,所述图形处理器还包括全局分发模块;

所述几何处理方法还包括:通过所述全局分发模块读取所述几何数据流,基于预设的图元块获取策略,从所述几何数据流确定每一所述图形管线集群需要处理的图元块数据,并分发至每一所述图形管线集群;

相应地,所述通过所述图元分发模块获取几何数据流中的图元块数据,包括:通过所述图元分发模块接收所述全局分发模块发送的所述图形管线集群需要处理的图元块数据。

6.根据权利要求1至5任一项所述的几何处理方法,其特征在于,所述图形处理器还包括至少一个像素处理管线,所述几何处理方法还包括:通过所述图形管线集群基于所述第一标签将所述图元块数据对应的几何输出数据缓存至所述图形管线集群对应的缓存单元;

通过所述像素处理管线基于所述第一标签从所述至少两个图形管线集群分别对应的缓存单元中,按照第一顺序依次读取各所述图形管线集群对应的几何输出数据。

7.根据权利要求6所述的几何处理方法,其特征在于,所述图形管线集群还包括分块器,所述通过所述图形管线集群基于所述第一标签将所述图元块数据对应的几何输出数据缓存至所述图形管线集群对应的缓存单元,包括:通过所述分块器基于所述第一标签,依次对每一所述图形管线集群对应的几何输出数据的进行分发,并缓存至所述图形管线集群对应的缓存单元;

其中,对每一所述图形管线集群对应的几何输出数据的进行分发,并缓存至所述图形管线集群对应的缓存单元,包括:通过所述分块器基于所述第二顺序依次确定所述几何输出数据中每一图元数据对应的图块;在所述图形管线集群对应的缓存单元中,将所述几何输出数据中每一所述图元数据写入对应的图块的多边形列表中。

8.根据权利要求7所述的几何处理方法,其特征在于,在所述几何输出数据中存在至少一个目标图元数据属于目标图块的情况下,所述目标图块的多边形列表包括所述几何输出数据的第一标签和所述几何输出数据中属于所述目标图块的每一目标图元数据;

其中,每一所述目标图元数据在所述多边形列表中的顺序与所述第二顺序相同。

9.根据权利要求7所述的几何处理方法,其特征在于,所述通过所述像素处理管线基于所述第一标签从所述至少两个图形管线集群分别对应的缓存单元中,按照第一顺序依次读取各所述图形管线集群对应的几何输出数据,包括:在所述至少两个图形管线集群分别对应的缓存单元中,通过所述像素处理管线遍历目标图块对应的每一所述多边形列表中的第一标签,并从目标第一标签对应的多边形列表中取出所述目标第一标签对应的图元数据,直至各所述多边形列表中不存在所述图元数据;

其中,所述目标第一标签基于各所述多边形列表的表头的第一标签的先后顺序确定的。

10.一种图形处理器,其特征在于,所述图形处理器包括至少两个图形管线集群,所述图形管线集群包括图元分发模块、至少两个几何处理管线和合并仲裁器;其中,所述图元分发模块,用于获取几何数据流中的图元块数据;所述图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签;

所述图元分发模块,还用于将所述图元块数据划分为图元组数据,并将所述图元组数据分发到几何处理管线;所述图元组数据包括用于确定所述图元组数据在所述图元块数据中顺序的第二标签;

所述几何处理管线,用于对所述图元组数据进行处理,得到图元组处理结果,并将所述图元组处理结果输出给所述合并仲裁器;

所述合并仲裁器,用于基于所述第二标签对所述图元组处理结果进行合并处理,得到所述图元块数据对应的具有第二顺序的几何输出数据;所述几何输出数据包含对应图元块数据的所述第一标签,用于确定各所述图形管线集群输出的几何输出数据之间的第一顺序。

11.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至9任一项所述方法中的步骤。

12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9任一项所述方法中的步骤。

说明书 :

几何处理方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及图形处理技术领域,尤其涉及一种几何处理方法、装置、设备及存储介质。

背景技术

[0002] 图形处理器(Graphics Processing Unit,GPU)是用于处理并显示计算机化的图形的专用图形再现装置。以高度并行的结构来建构GPU,所述结构针对一系列复杂算法提供比典型通用中央处理单元(Central Processing Unit,CPU)更有效的处理。举例来说,所述复杂算法可对应于二维或三维计算机化的图形的表示。其中,图形处理器往往包括前端的几何处理管线和后端的像素处理管线,在相关应用场景中对于几何处理管线的性能需求较大,现有技术中的几何处理管线设计难以提供更高几何处理性能,成为整个图形处理的瓶颈。

发明内容

[0003] 有鉴于此,本申请实施例至少提供一种几何处理方法、装置、设备、存储介质。
[0004] 本申请实施例的技术方案是这样实现的:
[0005] 一方面,本申请实施例提供一种几何处理方法,应用于图形处理器中,所述图形处理器包括至少两个图形管线集群,所述图形管线集群包括图元分发模块、至少两个几何处理管线和合并仲裁器,所述方法包括:通过所述图元分发模块获取几何数据流中的图元块数据;所述图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签;通过所述图元分发模块将所述图元块数据划分为图元组数据,并将所述图元组数据分发到几何处理管线;所述图元组数据包括用于确定所述图元组数据在所述图元块数据中顺序的第二标签;通过所述几何处理管线对所述图元组数据进行处理,得到图元组处理结果,并将所述图元组处理结果输出给所述合并仲裁器;通过所述合并仲裁器,基于所述第二标签对所述图元组处理结果进行合并处理,得到所述图元块数据对应的具有第二顺序的几何输出数据;所述几何输出数据包含对应图元块数据的所述第一标签,用于确定各所述图形管线集群输出的几何输出数据之间的第一顺序。
[0006] 在一些实施例中,所述通过所述图元分发模块获取几何数据流中的图元块数据,包括:通过所述图元分发模块从所述几何数据流中读取所述图形管线集群需要处理的图元块数据。
[0007] 在一些实施例中,所述通过所述图元分发模块从所述几何数据流中读取所述图元块数据,包括:通过所述图元分发模块读取所述几何数据流;基于预设的图元块获取策略,将所述几何数据流中不属于当前图形管线集群处理的数据丢弃,得到所述图形管线集群需要处理的图元块数据。
[0008] 在一些实施例中,所述通过所述图元分发模块从所述几何数据流中读取所述图元块数据,包括:基于预设的图元块获取策略,确定所述图形管线集群需要处理的图元块数据的地址段;基于所述地址段在所述几何数据流中读取所述图形管线集群需要处理的图元块数据。
[0009] 在一些实施例中,所述图形处理器还包括全局分发模块;所述方法还包括:通过所述全局分发模块读取所述几何数据流,基于预设的图元块获取策略,从所述几何数据流确定每一所述图形管线集群需要处理的图元块数据,并分发至每一所述图形管线集群;相应地,所述通过所述图元分发模块获取几何数据流中的图元块数据,包括:通过所述图元分发模块接收所述全局分发模块发送的所述图形管线集群需要处理的图元块数据。
[0010] 在一些实施例中,所述图形处理器还包括至少一个像素处理管线,所述方法还包括:通过所述图形管线集群基于所述第一标签将所述图元块数据对应的几何输出数据缓存至所述图形管线集群对应的缓存单元;通过所述像素处理管线基于所述第一标签从所述至少两个图形管线集群分别对应的缓存单元中,按照第一顺序依次读取各所述图形管线集群对应的几何输出数据。
[0011] 在一些实施例中,所述图形管线集群还包括分块器,所述通过所述图形管线集群基于所述第一标签将所述图元块数据对应的几何输出数据缓存至所述图形管线集群对应的缓存单元,包括:通过所述分块器基于所述第一标签,依次对每一所述图形管线集群对应的几何输出数据的进行分发,并缓存至所述图形管线集群对应的缓存单元;其中,所述对每一所述图形管线集群对应的几何输出数据的进行分发,并缓存至所述图形管线集群对应的缓存单元,包括:通过所述分块器基于所述第二顺序依次确定所述几何输出数据中每一图元数据对应的图块;在所述图形管线集群对应的缓存单元中,将所述几何输出数据中每一所述图元数据写入对应的图块的多边形列表中。
[0012] 在一些实施例中,在所述几何输出数据中存在至少一个目标图元数据属于目标图块的情况下,所述目标图块的多边形列表包括所述几何输出数据的第一标签和所述几何输出数据中属于所述目标图块的每一目标图元数据;其中,每一所述目标图元数据在所述多边形列表中的顺序与所述第二顺序相同。
[0013] 在一些实施例中,所述通过所述像素处理管线基于所述第一标签从所述至少两个图形管线集群分别对应的缓存单元中,按照第一顺序依次读取各所述图形管线集群对应的几何输出数据,包括:在所述至少两个图形管线集群分别对应的缓存单元中,通过所述像素处理管线遍历目标图块对应的每一所述多边形列表中的第一标签,并从目标第一标签对应的多边形列表中取出所述目标第一标签对应的图元数据,直至各所述多边形列表中不存在所述图元数据;其中,所述目标第一标签基于各所述多边形列表的表头的第一标签的先后顺序确定的。
[0014] 另一方面,本申请实施例提供一种图形处理器,所述图形处理器包括至少两个图形管线集群,所述图形管线集群包括图元分发模块、至少两个几何处理管线和合并仲裁器;其中,所述图元分发模块,用于获取几何数据流中的图元块数据;所述图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签;所述图元分发模块,还用于将所述图元块数据划分为图元组数据,并将所述图元组数据分发到几何处理管线;所述图元组数据包括用于确定所述图元组数据在所述图元块数据中顺序的第二标签;所述几何处理管线,用于对所述图元组数据进行处理,得到图元组处理结果,并将所述图元组处理结果输出给所述合并仲裁器;所述合并仲裁器,用于基于所述第二标签对所述图元组处理结果进行合并处理,得到所述图元块数据对应的具有第二顺序的几何输出数据;所述几何输出数据包含对应图元块数据的所述第一标签,用于确定各所述图形管线集群输出的几何输出数据之间的第一顺序。
[0015] 再一方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
[0016] 又一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。
[0017] 本申请实施例中,通过至少两个图形管线集群在几何数据流中获取自身需要处理的图元块数据,实现了对几何数据流的第一次拆分,并通过至少两个图形管线集群实现了第一层级的并行处理;同时,在图形管线集群内部,通过图元分发模块对图元块数据进行划分并分发到至少两个几何处理管线,实现了对几何数据流的第二次拆分,并通过至少两个几何处理管线进行第二层级的并行处理。由此,本申请通过两个层级的数据划分和并行处理,可以大幅度提升几何处理阶段的并行程度,提升了图形处理器的几何处理性能;另外,由于图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签,可以便于确定各个图形管线集群输出的几何输出数据之间的第一顺序;由于图元组数据包括用于确定所述图元组数据在所述图元块数据中顺序的第二标签,可以便于对得到的处理后的图元组数据进行重新排序,以恢复处理后的图元组数据在所述图元块数据中顺序。
[0018] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请的技术方案。

附图说明

[0019] 此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
[0020] 图1为本申请实施例提供的一种几何处理方法的实现流程示意图一;
[0021] 图2为本申请实施例提供的一种几何处理方法的实现流程示意图二;
[0022] 图3为本申请实施例提供的一种几何处理方法的实现流程示意图三;
[0023] 图4为本申请实施例提供的一种几何处理方法的实现流程示意图四;
[0024] 图5为本申请实施例提供的一种包括单一几何处理管线对应一个或者多个像素处理管线的系统架构示意图;
[0025] 图6为本申请实施例提供的一种采用并行几何处理管线对应一个或者多个像素处理管线的系统架构示意图;
[0026] 图7为本申请实施例提供的一种几何处理管线的任务分发和合并示意图;
[0027] 图8为本申请实施例提供的一种多层次并行GPU几何处理管线示意图一;
[0028] 图9为本申请实施例提供的一种基于轮流方式的数据分割和分发示意图;
[0029] 图10为本申请实施例提供的一种图形管线集群内基于负载均衡,图形管线集群之间基于轮流方式的数据分割和分发示意图;
[0030] 图11为本申请实施例提供的另一种多层次并行GPU几何处理管线示意图二;
[0031] 图12为本申请实施例提供的一种图形处理器的组成结构示意图;
[0032] 图13为本申请实施例提供的一种计算机设备的硬件实体示意图。

具体实施方式

[0033] 为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0034] 在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
[0035] 除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请的目的,不是旨在限制本申请。
[0036] (1)基于图块渲染(Tile Based Rendering,TBR),该方案会将画面拆分为图像块(Tile,也可称为图块、瓦片),使得每个Tile均能够适应片上缓存。举例来说,如果片上缓存能够存储512kB的数据,那么画面可划分为Tile使得每个Tile中包含的像素数据小于或等于512kB。以此方式,可通过将画面划分为可渲染到片上缓存中的Tile且将场景的每个Tile个别地渲染到片上缓存中,将来自片上缓存的经渲染Tile存储到帧缓冲器,以及针对画面的每个Tile重复所述渲染和存储,来渲染所述场景。因此,可以逐Tile地渲染画面以渲染所述场景的每个Tile。可以理解地,TBR方案属于一种延迟再现图形的模式,由于其功耗低的特点,被广泛地应用于移动装置中,但在桌面和服务器级图形处理器中也有一定应用。
[0037] (2)分块器,为TBR中前端的最后一个模块,用于完成屏幕的切分、记录覆盖到图块(Tile)的图形数据,将图块信息(Primitive List)和顶点信息(Vertex Data)等生成信息写入到系统内存中,其中,Primitive List为长度为Tile的固定长度数组,该数组中,每个元素是一个链表(linked list),存的是和当前Tile相交的所有三角形的指针,指针指向Vertex Data;Vertex Data存放顶点和顶点属性数据。
[0038] 在现代GPU渲染过程中,GPU需要先从软件配置好的顶点缓存中读取顶点信息,经过前端(顶点着色器,曲面细分,几何着色器,以及诸多固定功能(fixed‑function)几何处理和分块功能)即几何处理管线和后端即像素处理管线等完成输出。数据经过几何处理管线处理的输出将作为像素处理管线的输入。
[0039] 在实际应用中,一些应用或者游戏会有非常繁重几何处理管线工作量,例如图元数量非常多,开启了曲面细分,复杂的顶点着色器、几何着色器,这些都需要很大几何流水线的处理吞吐量。由此,相关技术中采用单一几何处理管线的图形处理管线无法满足整个图形处理任务的性能需求,几何处理管线成为性能瓶颈。
[0040] 本申请实施例提供一种几何处理方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。
[0041] 图1为本申请实施例提供的一种几何处理方法的实现流程示意图一,如图1所示,该方法包括如下步骤S101至步骤S104:
[0042] 步骤S101、通过所述图元分发模块获取几何数据流中的图元块数据;所述图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签。
[0043] 在一些实施例中,当前图形处理器包括至少两个图形管线集群。这里,所述图形管线集群包括图元分发模块、至少两个几何处理管线和合并仲裁器。从物理上讲,同一个图形管线集群内的各个模块在物理上是位于芯片中的同一个区域内。也就是说,不同的图形管线集群可以分布在芯片中的不同位置。
[0044] 在一些实施例中,上述图形处理器中包括的至少两个图形管线集群可以采用相同的集群配置,也可以采用不同的集群配置。这里的集群配置至少用于确定该图形管线集群包括的几何处理管线的数量,示例性地,在采用相同的集群配置的情况下,不同的图形管线集群均包括相同数量的几何处理管线,且该几何处理管线的数量为至少两个。在采用不同的集群配置的情况下,不同的图形管线集群可以包括不同数量的几何处理管线;其中,图形处理器中至少存在一个图形管线集群,该图形管线集群中存在至少两个几何处理管线。在一些情况下,图形处理器还可以包括存在一个几何处理管线的图形管线集群。
[0045] 在本申请实施例中,上述几何数据流为图形处理器的原始输入数据。对于该几何数据流,由于图形处理器包括并行的至少两个图形管线集群,因此,位于各个图形管线集群内的图元分发模块可以获取自身图形管线集群需要处理的几何数据,即该几何数据流中的图元块数据。这里,上述图元块数据的获取方式可以是图形管线集群中图元分发模块主动从该几何数据流中读取的,也可以是被动接收的,当前实施例对此不做限定。
[0046] 可以理解的是,不同的图形管线集群中图元分发模块获取的图元块数据不同/不重叠,且,各个图形管线集群中图元分发模块获取的图元块数据的结合可以恢复该原始的几何数据流。
[0047] 在一些实施例中,该图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签。示例性地,原始的几何数据流可以包括依次排列的图元块数据1至N,其中,图元块数据1对应的第一标签可以设置为“1”,…,图元块数据N应的第一标签可以设置为“N”。由此,在图形管线集群获取自身需要处理的图元块数据之后,可以基于当前图元块数据中的第一标签,确定当前需要处理的图元块数据在原始的几何数据流中的位置。上述对第一标签的示例性说明仅是为了便于对当前实施流程的理解,并未对具体实施方式的限定。
[0048] 需要说明的是,这里的图元分发模块是以图形处理器中的至少两个图形管线集群中的任意一个图形管线集群的角度说明的。
[0049] 上述步骤S101中,图形处理器的至少两个图形管线集群通过在几何数据流中获取自身需要处理的图元块数据,实际上是对几何数据流的第一次拆分,并通过至少两个图形管线集群进行第一层级的并行处理,并行处理的对象是各图形管线集群需要处理的图元块数据。
[0050] 步骤S102、通过所述图元分发模块将所述图元块数据划分为图元组数据,并将所述图元组数据分发到几何处理管线;所述图元组数据包括用于确定所述图元组数据在所述图元块数据中顺序的第二标签。
[0051] 在一些实施例中,在图形管线集群中的图元分发模块得到当前图形管线集群需要处理的图元块数据后,需要进行进一步拆分,将该图元块数据划分为图元组数据。在图形管线集群内部,也包括并行的至少两个几何处理管线,该图元分发模块与每一个几何处理管线连接,在图元分发模块将图元块数据划分为图元组数据之后,向后续的至少两个几何处理管线分发得到的图元组数据。可以理解的是,不同的几何处理管线收到的图元组数据并不重叠,不会造成资源的浪费。
[0052] 在一些实施例中,该图元组数据包括用于确定所述图元组数据在所述图元块数据中顺序的第二标签。示例性地,图形管线集群中的图元分发模块得到的图元块数据可以被划分为依次排列的图元组数据1至N,其中,图元组数据1对应的第二标签可以设置为“1”,…,图元组数据N应的第二标签可以设置为“N”。由此,在几何处理管线在对收到的图元组数据进行处理后,可以基于当前图元组数据中的第二标签,确定处理后的图元组数据在原始的图元块数据中的位置,进而便于后续对各几何处理管线输出的图元块数据的顺序的恢复。上述对第二标签的示例性说明仅是为了便于对当前实施流程的理解,并未对具体实施方式的限定。
[0053] 在一些实施例中,图元分发模块在将图元块数据划分得到图元组数据之后,可以将得到的图元组数据以轮流发送的方式依次发送到后续的几何处理管线中。示例性地,在得到N个图元组数据之后,若存在3个几何处理管线,可以将第1+3n个图元组数据分发到第一个几何处理管线,将第2+3n个图元组数据分发到第二个几何处理管线,将第3(1+n)个图元组数据分发到第三个几何处理管线,n为0,1,2…。
[0054] 在另一些实施例中,图元分发模块在将图元块数据划分得到图元组数据之后,可以先获取后续各个几何处理管线的负载信息,并基于各个几何处理管线对应的负载信息,将图元组数据分发到负载较低的几何处理管线,以实现并行的至少两个几何处理管线的负载均衡。
[0055] 上述步骤S102实际上是对几何数据流的第二次拆分,并通过至少两个几何处理管线进行第二层级的并行处理,并行处理的对象是各几何处理管线接收到的图元组数据。
[0056] 步骤S103、通过所述几何处理管线对所述图元组数据进行处理,得到图元组处理结果,并将所述图元组处理结果输出给所述合并仲裁器。
[0057] 这里,各个图形管线集群中并行的至少两个几何处理管线,对各自接收到的图元组数据进行并行处理,得到该图元组处理结果。可以理解的是,该图元组处理结果包括各几何处理管线对应的处理后的图元组数据。这里,处理后的图元组数据也包括第二标签。
[0058] 在本申请实施例中,该合并仲裁器与每一个几何处理管线连接,用于接收该图元组处理结果,即接收每一个几何处理管线输出的处理后的图元组数据。
[0059] 步骤S104、通过所述合并仲裁器基于所述第二标签对所述图元组处理结果进行合并处理,得到所述图元块数据对应的具有第二顺序的几何输出数据;所述几何输出数据包含对应图元块数据的所述第一标签,用于确定各所述图形管线集群输出的几何输出数据之间的第一顺序。
[0060] 在一些实施例中,由于至少两个几何处理管线是并行处理的,考虑到不同几何处理管线的处理性能的差异,和不同图元组数据的处理时间的差异,各个几何处理管线在输出处理后的图元组数据给合并仲裁器的过程中,无法保证输出顺序与图元组数据在原始图元块数据的顺序相同。基于此,该合并仲裁器对于至少两个几何处理管线输出的处理后的图元组数据,可以基于各处理后的图元组数据中分别包括的第二标签,对得到的处理后的图元组数据进行重新排序,以恢复处理后的图元组数据在所述图元块数据中顺序。
[0061] 这里,上述具有第二顺序的几何输出数据为已经恢复顺序的处理后的图元组数据。
[0062] 示例性地,在当前图形管线集群需要处理的图元块数据被划分为第1至第7个图元组数据之后,将第1、3、4个图元组数据分发到第一个几何处理管线处理,得到处理后的第1、3、4个图元组数据;将第2、5、6、7个图元组数据分发到第二个几何处理管线处理,得到处理后的第2、5、6、7个图元组数据。合并仲裁器根据各处理后的图元组数据携带的第二标签,对各处理后的图元组数据进行顺序恢复,得到的具有第二顺序的几何输出数据包括处理后的第1至第7个图元组数据。可以理解的是,上述具有第二顺序的几何输出数据实际上是当前图形管线集群针对图元块数据的处理后的输出数据。
[0063] 在本申请实施例中,该图元块数据对应的具有第二顺序的几何输出数据,也包括该图元块数据对应的第一标签。由此,针对图形处理器中的至少两个图形管线集群中每一图形管线集群输出的具有第二顺序的几何输出数据,可以基于第一标签确定各个图形管线集群输出的几何输出数据之间的第一顺序。
[0064] 本申请实施例中,通过至少两个图形管线集群在几何数据流中获取自身需要处理的图元块数据,实现了对几何数据流的第一次拆分,并通过至少两个图形管线集群实现了第一层级的并行处理;同时,在图形管线集群内部,通过图元分发模块对图元块数据进行划分并分发到至少两个几何处理管线,实现了对几何数据流的第二次拆分,并通过至少两个几何处理管线进行第二层级的并行处理。由此,本申请通过两个层级的数据划分和并行处理,可以大幅度提升几何处理阶段的并行程度,提升了图形处理器的几何处理性能;另外,由于图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签,可以便于确定各个图形管线集群输出的几何输出数据之间的第一顺序;由于图元组数据包括用于确定所述图元组数据在所述图元块数据中顺序的第二标签,可以便于对得到的处理后的图元组数据进行重新排序,以恢复处理后的图元组数据在所述图元块数据中顺序。
[0065] 图2为本申请实施例提供的一种几何处理方法的实现流程示意图二,该方法可以由计算机设备的处理器执行。基于图1,图1中的S101可以更新为S201,将结合图2示出的步骤进行说明。
[0066] 步骤S201、通过所述图元分发模块从所述几何数据流中读取所述图形管线集群需要处理的图元块数据。
[0067] 在当前实施例中,图元分发模块可以主动的从几何数据流中获取当前所属的图形管线集群需要处理的图元块数据。其中,对于位于不同图形管线集群中的图元分发模块,这至少两个图元分发模块可以通过预先约定的获取规则(即后续的图元块获取策略),分别在几何数据流中获取当前所属的图形管线集群需要处理的图元块数据,且各图形管线集群对应的图元块数据并不重叠。
[0068] 在一些实施例中,图元分发模块可以先获取全部几何数据流,并将所属图形管线集群不需要处理的数据丢弃,进而可以得到当前图形管线集群需要处理的图元块数据。即,可以通过步骤S2011和步骤S2012实现上述通过所述图元分发模块从所述几何数据流中读取所述图形管线集群需要处理的图元块数据。
[0069] 步骤S2011、通过所述图元分发模块读取所述几何数据流。
[0070] 在本申请实施例中,该几何数据流包括多个待划分的几何数据,各待划分的几何数据以索引的形式被所有图形管线集群的图元分发模块读取。在后续几何处理的过程中,可以通过索引读取对应的几何数据以进行后续处理。
[0071] 步骤S2012、基于预设的图元块获取策略,将所述几何数据流中不属于当前图形管线集群处理的数据丢弃,得到所述图形管线集群需要处理的图元块数据。
[0072] 在一些实施例中,该图元块获取策略可以为:基于当前图形管线集群对应的集群标识和预设的图元块数据的尺寸,以轮流分发的方式确定所述图形管线集群需要处理的图元块数据的数据范围,将基于每一数据范围获取到的数据作为图形管线集群需要处理的图元块数据。在实施过程中,在获取几何数据流中各待划分的几何数据的索引之后,可以判断几何数据的索引是否属于当前图形管线集群对应的数据范围,将属于当前图形管线集群对应的图元块数据的数据范围的待划分的几何数据作为图形管线集群需要处理的图元块数据;并将不属于当前图形管线集群对应的图元块数据的数据范围的待划分的几何数据丢弃。
[0073] 示例性地,在几何数据流包括1至1000(索引)个几何数据,存在2个图形管线集群,且预设的图元块数据的尺寸为200的情况下,第一个图形管线集群对应的图元块数据的数据范围可以是1至200、401至600和801至1000;第二个图形管线集群对应的图元块数据的数据范围可以是201至400、601至800。由此,对于第一个图形管线集群,在获取到这1000个几何数据之后,可以确定第1至200个几何数据属于自身对应的图元块数据的数据范围,将这第1至200个几何数据作为第一个图形管线集群需要处理的第一个图元块数据;对于第201至400个几何数据,由于不属于自身对应的图元块数据的数据范围,将第201至400个几何数据丢弃,以此类推,直至将第801至100个几何数据作为第一个图形管线集群需要处理的第三个图元块数据。
[0074] 在当前实施例中,通过图元分发模块读取全部的几何数据流,并将不属于当前图形管线集群处理的数据丢弃,进而得到图形管线集群需要处理的图元块数据,该方法由于从获取的全部几何数据中进行筛选,可以在图元块数据分发过程中减少数据的遗漏的问题。
[0075] 在一些实施例中,图元分发模块还可以先确定当前图形管线集群需要处理的图元块数据的数据范围,进而只从几何数据流读取所述图形管线集群需要处理的图元块数据。即,还可以通过步骤S2013和步骤S2014实现上述通过所述图元分发模块从所述几何数据流中读取所述图形管线集群需要处理的图元块数据。
[0076] 步骤S2013、基于预设的图元块获取策略,确定所述图形管线集群需要处理的图元块数据的地址段。
[0077] 在一些实施例中,该图元块获取策略可以为:基于当前图形管线集群对应的集群标识和预设的图元块数据的尺寸,以轮流分发的方式确定所述图形管线集群需要处理的图元块数据的地址段,将基于每一地址段获取到的数据作为图形管线集群需要处理的图元块数据。
[0078] 步骤S2014、基于所述地址段在所述几何数据流中读取所述图形管线集群需要处理的图元块数据。
[0079] 这里,在得到该图形管线集群需要处理的每一图元块数据的地址段之后,可以基于该图元块数据的地址段在存储器中读取对应的图元块数据。
[0080] 示例性地,在存在2个图形管线集群的情况下,对于第一个图形管线集群,可以基于该几何数据流的起始地址和预设的图元块数据的尺寸对应的单位地址偏移量,确定该第一个图形管线集群对应图元块数据的地址段包括(起始地址,起止地址+单位地址偏移量‑1)、(起止地址+2×单位地址偏移量、起止地址+3×单位地址偏移量‑1),以此类推;该第二个图形管线集群对应图元块数据的地址段包括(起止地址+单位地址偏移量、起止地址+2×单位地址偏移量‑1)、(起止地址+3×单位地址偏移量、起止地址+4×单位地址偏移量‑1),以此类推。之后,各图形管线集群基于对应的图元块数据的地址段从存储器中读取需要处理的图元块数据。
[0081] 在当前实施例中,图元分发模块不需要读取全部的几何数据流,通过计算图形管线集群需要处理的图元块数据的地址段,进而可以读取所述图形管线集群需要处理的图元块数据,减少了对存储器的访问需求,同时也降低了图元分发模块自身的工作负载。
[0082] 图3为本申请实施例提供的一种几何处理方法的实现流程示意图三,该方法可以由计算机设备的处理器执行。基于图1,所述图形处理器还包括全局分发模块;图1中的方法还包括步骤S301,相应地,步骤S101可以更新为步骤S302,将结合图3示出的步骤进行说明。
[0083] 步骤S301、通过所述全局分发模块读取所述几何数据流,基于预设的图元块获取策略,从所述几何数据流确定每一所述图形管线集群需要处理的图元块数据,并分发至每一所述图形管线集群。
[0084] 在本申请实施例中,该全局分发模块与每一个图形管线集群连接,用于读取所述几何数据流,基于预设的图元块获取策略,从所述几何数据流确定每一所述图形管线集群需要处理的图元块数据;同时,该全局分发模块还用于将每一所述图形管线集群需要处理的图元块数据分发到对应的图形管线集群。
[0085] 在本申请实施例中,该几何数据流包括多个待划分的几何数据,各待划分的几何数据以索引的形式被全局分发模块读取。在后续几何处理的过程中,可以通过索引读取对应的几何数据以进行后续处理。
[0086] 在一些实施例中,该图元块获取策略可以为:基于各当前图形管线集群对应的集群标识和预设的图元块数据的尺寸,以轮流分发的方式确定每一所述图形管线集群需要处理的图元块数据的数据范围/地址段。之后,将每一所述图形管线集群需要处理的图元块数据的数据范围/地址段发送到对应的图形管线集群。这里,对于以轮流分发的方式确定每一所述图形管线集群需要处理的图元块数据的数据范围/地址段的具体实施方式,可以参阅图2实施例,这里不进一步说明。
[0087] 在另一些实施例中,该图元块获取策略可以为:基于各当前图形管线集群对应的集群标识和预设的图元块数据的尺寸,先对几何数据流进行划分,确定划分后点的每一个图元块数据的数据范围/地址段,在进行图元块数据的分发过程中,获取每一个图形管线集群的负载信息,将图元块数据分发到负载最小的图形管线集群,以实现图形管线集群之间的负载均衡。
[0088] 步骤S302、通过所述图元分发模块接收所述全局分发模块发送的所述图形管线集群需要处理的图元块数据。
[0089] 在一些实施例中,全局分发模块可以向各图形管线集群的图元分发模块发送各图形管线集群需要处理的图元块数据的数据范围,也可以发送图元块数据的地址段。可以理解的是,相较于图2提供实施例中图元分发模块需要从原始几何数据流中读取所属图形管线集群需要处理的图元块数据的方案,当前实施例中的各个集群内的图元分发模块无需预先约定的获取规则(即图元块获取策略),而通过全局分发模块存储该获取规则,以实现从几何数据流到各图形管线集群的图元块数据的分发。
[0090] 在当前实施例中,各图元分发模块不需要预先约定的图元块获取策略,通过全局分发模块实现几何数据流到各图形管线集群的图元块数据的分发,这样,在对该图元块获取策略进行变更的过程中,仅需要对全局分发模块进行配置,不需要为每一个图形管线集群中的图元分发模块进行配置,提高了系统的灵活性。
[0091] 图4为本申请实施例提供的一种几何处理方法的实现流程示意图四,该方法可以由计算机设备的处理器执行。所述图形处理器还包括至少一个像素处理管线;基于图1,所述方法还可以包括步骤S401和步骤S402,将结合图4示出的步骤进行说明。
[0092] 步骤S401、通过所述图形管线集群基于所述第一标签将所述图元块数据对应的几何输出数据缓存至所述图形管线集群对应的缓存单元。
[0093] 在本申请实施例中,该图形管线集群在完成针对图元块数据的几何处理之后,会生成该图元块数据对应的具有第二顺序的几何输出数据。相应地,该图元块数据对应的具有第二顺序的几何输出数据也包括第一标签。
[0094] 在一些实施例中,不同的图形管线集群对应的不同的缓存单元,不同的图形管线集群的缓存单元是相互独立的,其中,相互独立的缓存单元可以是全局存储器独立的地址空间或地址段,也可以是每个图形管线集群分配的存储器。
[0095] 其中,该图形管线集群在缓存图元块数据对应的具有第二顺序的几何输出数据的过程中,会基于图元块数据的第一标签,将图元块数据对应的几何输出数据存储于当前图形管线集群对应的缓存单元中。
[0096] 示例性地,以原始的几何数据流包括依次排列的图元块数据1至N为例,其中,图元块数据1对应的第一标签可以设置为“1”,…,图元块数据N应的第一标签可以设置为“N”。针对第一个图形管线集群,若将第n+1个图元块数据依次分发到该第一个图形管线集群,n为大于等于0的整数。则在第一个图形管线集群依次处理完各个图元块数据,得到对应的几何输出数据之后,会将这n+1个图元块数据分别对应的几何输出数据,按照第一标签的顺序依次缓存至所述图形管线集群对应的缓存单元。
[0097] 步骤S402、通过所述像素处理管线基于所述第一标签从所述至少两个图形管线集群分别对应的缓存单元中,按照第一顺序依次读取各所述图形管线集群对应的几何输出数据。
[0098] 在一些实施例中,由于不同图形管线集群对应不同的缓存单元,也就是说,原始几何数据流对应的所有图元块数据在处理完之后,所有处理后的几何输出数据分散到各个缓存单元中(当然,可能存在一些缓存单元,由于该缓存单元对应的图形管线集群没有需要处理的图元块数据,因此没有处理后的几何输出数据)。由此,像素处理管线可以基于各个几何输出数据对应的第一标签,对各缓存单元内的几何输出数据的相对顺序进行恢复,按照第一顺序依次读取各所述图形管线集群对应的几何输出数据。
[0099] 示例性地,以原始的几何数据流包括依次排列的图元块数据1至5为例,若存在两个图形管线集群,其中,第1、2和5个图元块数据被分发到第一个图形管线集群;第3和4个图元块数据被分发到第二个图形管线集群;相应地,第一个图形管线集群对应的缓存单元存储了第1、2和5个图元块数据分别对应的几何输出数据,第二个图形管线集群对应的缓存单元存储了第3和4个图元块数据分别对应的几何输出数据,此时,像素处理管线可以基于各个几何输出数据分别对应的第一标签,按照几何输出数据对应的图元块数据的相对顺序,即第一顺序,依次读取这5个几何输出数据。
[0100] 在当前实施例中,由于图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签,同时,该第一标签随着图元块数据被图形管线集群处理生成对应的几何输出数据的过程,被透传到像素处理管线,由此,像素处理管线可以基于该第一标签确定各个图形管线集群输出的几何输出数据之间的第一顺序。
[0101] 以上实施例提高了几何处理过程的并行度,相应地,还可以通过TBR架构提升后端像素处理过程的并行度。由此,在一些实施例中,所述图形管线集群还包括分块器。该分块器位于该合并仲裁器与缓存单元之间。上述通过所述图形管线集群基于所述第一标签将所述图元块数据对应的几何输出数据缓存至所述图形管线集群对应的缓存单元,可以通过步骤S4011实现。
[0102] 步骤S4011、通过所述分块器基于所述第一标签,依次对每一所述图形管线集群对应的几何输出数据的进行分发,并缓存至所述图形管线集群对应的缓存单元。
[0103] 其中,所述对每一所述图形管线集群对应的几何输出数据的进行分发,并缓存至所述图形管线集群对应的缓存单元,包括:通过所述分块器基于所述第二顺序依次确定所述几何输出数据中每一图元数据对应的图块;在所述图形管线集群对应的缓存单元中,将所述几何输出数据中每一所述图元数据写入对应的图块的多边形列表中。
[0104] 在一些实施例中,由于该第一标签可以表征几何输出数据之间的先有顺序,因此,该分块器需要基于各几何输出数据对应的第一标签,依次处理各所述几何输出数据的分发过程。其中,在几何输出数据的内部,分块器可以基于第二顺序依次确定所述几何输出数据中每一图元数据对应的图块。由此,从整体上看,通过该第一标签和第二标签,分块器可以按照各个图元数据在原始的几何数据流中的顺序依次确定所属的图块,并依次存储于图块对应的多边形列表中。
[0105] 在当前实施例中,由于通过所述分块器基于所述第一标签依次确定几何输出数据中每一所述图元数据对应的图块;将几何输出数据中每一所述图元数据写入对应的图块的多边形列表中,这样,在多边形列表中属于一个几何输出数据的至少两个图元数据之间的相对顺序与其在几何数据流中的顺序相同。
[0106] 在一些实施例中,每一所述多边形列表以结束符为表尾;在像素处理管线从多边形列表中取出图元块数据的过程中,所述结束符用于指示所述多边形列表中的图元块数据是否完全取出。
[0107] 在一些实施例中,在所述几何输出数据中存在至少一个目标图元数据属于目标图块的情况下,所述目标图块的多边形列表包括所述几何输出数据的第一标签和所述几何输出数据中属于所述目标图块的每一目标图元数据。
[0108] 其中,每一所述目标图元数据在所述多边形列表中的顺序与所述第二顺序相同。
[0109] 在一些实施例中,所述目标图元组数据的第一标签位于所述目标图元数据之前。由此,像素处理管线可以先读取到图元数据对应的第一标签,进而确定是否读取该第一标签对应的图元数据。在另一些实施例中,该目标图元组数据的第一标签还可以位于各所述目标图元数据之后。
[0110] 在一些实施例中,上述通过所述像素处理管线基于所述第一标签从所述至少两个图形管线集群分别对应的缓存单元中,按照第一顺序依次读取各所述图形管线集群对应的几何输出数据,可以通过步骤S4021实现。
[0111] 步骤S4021、在所述至少两个图形管线集群分别对应的缓存单元中,通过所述像素处理管线遍历目标图块对应的每一所述多边形列表中的第一标签,并从目标第一标签对应的多边形列表中取出所述目标第一标签对应的图元数据,直至各所述多边形列表中不存在所述图元数据。
[0112] 在一些实施例中,可以获取所有多边形列表中的所有第一标签,并基于所有第一标签之间的先后顺序,确定该目标第一标签。在当前实施例中,该第一标签在多边形列表中的存储位置可以基于实际场景自适应调整。
[0113] 在另一些实施例中,在目标图元组数据的第一标签位于所述目标图元数据之前的情况下,可以仅获取位于每一个多边形列表的表头的第一标签,并按照先后顺序确定该目标第一标签。也就是说,在目标图元组数据的第一标签位于所述目标图元数据之前的情况下,通过所述像素处理管线遍历位于目标图块对应的每一所述多边形列表的表头的第一标签,所述目标第一标签基于各所述多边形列表的表头的第一标签的先后顺序确定的。
[0114] 在一些实施例中,可以通过以下流程实现上述步骤S4021:通过所述像素处理管线获取位于所述图块对应的每一所述多边形列表的表头的第一标签。在各所述多边形列表中存在至少一个第一标签的情况下,基于获取的各第一标签的先后顺序确定所述目标第一标签,在所述目标第一标签所在的多边形列表中依次取出所述目标第一标签和所述目标第一标签对应的图元数据,并返回执行所述通过所述像素处理管线获取位于所述图块对应的每一所述多边形列表的表头的第一标签。在各所述多边形列表中不存在第一标签和图元数据的情况下,表征已完成各所述图元数据的分发过程。
[0115] 在当前实施例中,通过在多边形列表中的图元数据之前,设置各个图元数据对应的图元组的第一标签,这样,在像素处理管线合并当前图块对应的多边形列表的过程中,可以明确各个图元数据之间的先后顺序,进而有效的对原始输入顺序进行还原。
[0116] 下面说明本申请实施例提供的几何处理方法在实际场景中的应用,主要涉及TBR架构下的几何处理方法。
[0117] 在现代GPU渲染过程中,GPU需要先从软件配置好的顶点缓存中读取顶点信息,经过前端(顶点着色器,曲面细分,几何着色器,以及诸多固定功能(fixed‑function)几何处理和分块功能)即几何处理管线和后端即像素处理管线等完成输出。数据经过几何处理管线处理的输出将作为像素处理管线的输入。为了并行渲染,GPU架构普遍采用多个像素处理管线进行分区块渲染,即将整个屏幕坐标分割成多个区块,前端模块在处理完顶点坐标后将结果输出至特定的数据结构,每个区块都有独立的一个特定的数据结构,表征了覆盖当前区块的图元信息,每个区块在片段着色器中可以相互独立渲染,而几何处理管线则是对全屏幕的图元信息进行处理,因此,请参阅图5,其示出了一种包括单一几何处理管线对应一个或者多个像素处理管线的系统架构示意图。
[0118] 如图5所示,该图形处理器管线包括一条几何处理管线110,该几何处理管线110的输入数据为几何数据流,在完成对几何数据流的处理过程后,将处理后的几何数据流发送至分块器120,分块器120按照预设分块策略,将处理后的几何数据流划分为不同区块的处理后的几何数据,并缓存到缓存单元130中;之后,通过并行的至少一个像素处理管线140从缓存单元130中分别读取对应区块的处理后的几何数据,以完成像素处理过程,进而得到最后的输出数据。
[0119] 经过研究发现,单一几何处理管线的处理能力不足,因此,在图5的图形处理管线的基础上,本申请提供了一种包括并行几何处理管线的方案。请参阅图6,其示出了一种采用并行几何处理管线对应一个或者多个像素处理管线的系统架构示意图。
[0120] 如图6所示,该图形处理器管线相较于图5提供的管线,图5中的几何处理管线110和分块器120被更新为图形管线集群20。该图形管线集群20包括图元分发模块210、至少一条几何处理管线220、合并仲裁器230和分块器240。其中,图元分发模块210用于将输入的几何数据流划分为多份,并分别发送到至少一条几何处理管线220中,在至少一条几何处理管线220处理完成之后,至少一条几何处理管线220的输出数据由合并仲裁器230按原始顺序合并之后进入分块器240处理。分块器240按照预设分块策略,将处理后的几何数据流划分为不同区块的处理后的几何数据,并缓存到缓存单元130中;之后,通过并行的至少一个像素处理管线140从缓存单元130中分别读取对应区块的处理后的几何数据,以完成像素处理过程,进而得到最后的输出数据。
[0121] 可以理解的是,上述图形管线集群是一个逻辑的概念,也是一个芯片物理设计上的一个概念。从物理上讲,同一个图形管线集群内的几何处理管线和模块在芯片die(指的是一个单独的晶圆区域,它包含了该芯片的一个完整功能单元或一组相关功能单元)上是物理上处在同一区域的。从逻辑上讲,图形管线集群里的图元分发模块和合并仲裁器将多条几何处理管线的输入、输出端合并,从而让至少一条几何处理管线拥有和原有一条几何处理管线一样的输入、输出接口,可以直接替换原有单一几何处理管线达到增加吞吐能力的目的。
[0122] 目前并行几何处理管线的设计主要是通过将输入几何数据流按照较小的粒度(如数百个三角形一组)拆分成为多个图元组(Primitive Group,PG),然后将每一图元组送给一个几何处理管线,处理完之后再通过合并仲裁器中按照原始输入顺序将各个几何处理管线的输出结果合并送出。在一些实施例中,合并仲裁器恢复原始输入顺序的方式是通过图元分发模块给每个图元组附带上的标签序号。这个标签序号通过几何处理管线透传到合并仲裁器,使得合并仲裁器可以识别每个几何处理管线输出的处理过的图元组数据的相互顺序。可以理解的是,上述通过标签序号恢复顺序的机制仅为示例性的说明,本申请还可以通过其他机制恢复各个图元组之间的顺序。
[0123] 在一些实施例中,将输入几何数据流拆分成多个图元组之后,分发给几何处理管线的分发机制也可以有多种。示例性地,可以采用round robin方式顺序分发,除此之外也可以采用动态负载平衡的方式做分发,即图元分发模块每产生一个图元组时,会选择发给n个几何处理管线里未完成任务量最小的一个,使得多个几个处理管线的处理负载能够平衡。
[0124] 请参阅图7,图7为本申请实施例提供的一种几何处理管线的任务分发和合并示意图。图元分发模块310用于将输入的图元数据拆分为多个图元组,如图7中的图元组1至图元组3n;之后将分割好的图元组分发到不同的几何处理管线中,如图7中的图元组1、图元组n+1、图元组2n+1等被分发到几何处理管线321中,图元组2、图元组n+2、图元组2n+2等被分发到几何处理管线322中,…,图元组n、图元组2n、图元组3n等被分发到几何处理管线32n中。
各个几何处理管线将处理后的数据发送到合并仲裁器330中,合并仲裁器330对处理后的数据进行合并仲裁,恢复到图元组最初的顺序,并发送到分块器340。可以理解的是,上述过程需要保证输出顺序和输入顺序完全一致,即通常所说的图形处理器API Order保序要求。
[0125] 在实际应用中,一些应用或者游戏会有非常繁重几何处理管线工作量,例如图元数量非常多,开启了曲面细分,复杂的顶点着色器、几何着色器,这些都需要很大几何流水线的处理吞吐量。相关技术方案中几何处理管线的扩展能力受限,既便是存在多几何处理管线的设计,也受限于图元分发模块和合并仲裁器这两个拆分、合并模块的吞吐量,想要继续扩展几何处理管线比较困难。另外几何处理管线数量增多之后通常是分布在多个图形管线集群中的(由于架构设计或芯片物理设计的需要),物理上分隔较远。将分布在多个集群中的几何处理管线的输入输出用一个分发器和一个分块器连接起来,要保证大带宽的同时又要处理多个管线间的任务不均衡性,也有一定的难度(合并仲裁需要的缓冲区大小的要求急剧增加)。
[0126] 基于上述原因,本申请实施例提出一种方法/装置,可以实现多个图形管线集群并行处理几何处理工作,提高整个GPU的几何处理性能。每个图形管线集群内有多条并行的几何处理管线(Geometry Processing Pipe,GPP),保证每个图形管线集群内有较好的吞吐和计算能力。同时,多个图形管线集群的并行进一步提高了整体几何处理吞吐能力,解决了一个层级内并行的几何处理管线吞吐能力提升不够的问题。这样也达到在整个GPU分割的两个层级都有可配置的Geometry吞吐量和算力的效果。
[0127] 请参阅图8,图8为本申请实施例提供的一种多层次并行GPU几何处理管线示意图一。其中,第一层为图形管线集群层(Graphics Pipelines Cluster,GPC,在某些厂家也称为GPU core或GPU),该图形管线集群层包括图形管线集群41至图形管线集群4n共n个图形管线集群,其中,第1个图形管线集群包括图元分发模块411、至少两个几何处理管线412、合并仲裁器413和分块器414,…,第n个图形管线集群包括图元分发模块4n1、至少两个几何处理管线4n2、合并仲裁器4n3和分块器4n4,同时,每一个图形管线集群的输出数据可以存储至对应的缓存单元中,如第1个图形管线集群对应缓存单元415,第n个图形管线集群对应缓存单元4n5;第二层是几何处理管线层(Geometry Processing Pipeline,GPP),该几何处理管线层可以包括多个像素处理管线(集群)46。每一个GPC内都可以有多个GPP,在所有的GPC前级都有一个图元分发模块,它负责从内存中抓取顶点信息,以一个固定的算法(例如round‑robin)切分数据流进行两层数据划分和分发。
[0128] 为了便于理解上述方案,以下将以架构包括m个图形管线集群且图形管线集群包括n个几何处理管线为例进行说明。输入的图元数据流先按照某种规则均匀分成固定大小的图元块(Primitive Cluster,PC),每个图元块按照round‑robin的顺序划分给一个图形管线集群。针对读取过程,有两种读取方式,一种是每个图形管线集群都读取全部的输入几何数据流,然后丢弃不属于本图形管线集群所需要处理的数据;另一种是每个图形管线集群通过计算得出属于本图形管线集群所需要处理的数据的范围,并只读取这个范围内的输入几何数据流。
[0129] 在图形管线集群内部,一个图元块会进一步分成n个图元组,分别分配给每个几何处理管线。处理完成之后,再通过合并仲裁器合并和恢复顺序,并送给分块器。这里分发和合并仲裁的机制和前述现有技术完全一致(可用round‑robin方式分发,也可用动态负载平衡的方式分发),这里不再赘述。
[0130] 最后每个分块器输出多边形列表到每个图形管线集群独有的缓存空间中,后续像素处理管线(又称光栅化处理管线、片段处理管线),无论是单路、多路或者多路集群的形式,会将每个图形管线集群输出的多边形列表归并、恢复顺序做光栅化处理。
[0131] 请参阅图9,图9为本申请实施例提供的一种基于轮流方式的数据分割和分发示意图。
[0132] 其中,图形管线集群51至图形管线集群5m共m个图形管线集群,各个图形管线集群中的图元分发模块会从输入的几何数据流中读取自身图形管线集群所需要处理的图元块。如图9所示,当前对于图元块的划分/读取是采用round‑robin的顺序的,即,对于图形管线集群51,其需要处理的图元块为第1个图元块、第m+1个图元块,依次类推;对于图形管线集群5m,其需要处理的图元块为第m个图元块、第2m个图元块,依次类推。此时,一个图形管线集群中的图元分发模块用于从几何数据流中获取自身图形管线集群所需要处理的图元块。
[0133] 在图形管线集群内部,以图形管线集群51为例,该图形管线集群51内部的图元分发模块511会对得到的第1个图元块、第m+1个图元块和第2m+1个图元块等,分别进行划分,进而分发到内部的n个几何处理管线中(几何处理管线5121至几何处理管线512n),示例性地,对于第1个图元块,图元分发模块511将该第1个图元块划分为n个图元组,将第1个图元块的图元组1分发到几何处理管线5121,将第1个图元块的图元组2分发到几何处理管线5122,将第1个图元块的图元组n分发到几何处理管线512n。
[0134] 合并仲裁器513用于将几何处理管线输出的图元组按照输入顺序重排,并输出至分块器。示例性地,对于第1和m+1个图元块,几何处理管线5121至几何处理管线512n分别将处理后的第1个图元块的图元组1至图元组n、和处理后的第m+1个图元块的图元组1至图元组n发送到合并仲裁器513;合并仲裁器513按照顺序,对这2n个图元组进行重排,得到:处理后的第1个图元块的图元组1、第1个图元块的图元组2、…、第1个图元块的图元组n、处理后的第m+1个图元块的图元组1、第m+1个图元块的图元组2、…、第m+1个图元块的图元组n。(并进一步合并为第1个图元块、第m+1个图元块)。
[0135] 分块器514用于基于上述顺序对各图元组中的多个待分发数据进行分发,在缓存单元515中生成每一图块的多边形列表。其中,所述多边形列表中包括所述图块对应的已分发数据。之后,像素处理管线可以针对每一所述图块,从所述图块对应的每一所述多边形列表中获取所述图块对应的已分发数据,以进行所述图块的光栅化处理。可以理解的是,针对不同的分块器(实际上也是针对不同的图形管线集群)设置有不同的缓存单元,不同分块器(图形管线集群)对应的缓存单元相互独立。这里相互独立的缓存单元可以是全局存储器独立的地址空间或地址段,也可以是每个集群分配的。
[0136] 相应地,图形管线集群5m也会在缓存单元5m5中生成每一图块的多边形列表。其中,所述多边形列表中包括所述图块对应的已分发数据。
[0137] 请参阅图10,图10为本申请实施例提供的一种图形管线集群内基于负载均衡,图形管线集群之间基于轮流方式的数据分割和分发示意图,图形管线集群之间基于轮流方式的数据分割和分发示意图。可以看出,与图9不同的是,图形管线集群51内部的几何处理管线的输入数据不再是按照轮流方式进行分发得到的,而是基于几何处理管线的负载进行分发的,图元分发模块511会基于几何处理管线5121至512n分别对应的负载,对划分后得到的图元组进行分发,由于负载存在不同,因此,图元块对应的各个图元组会按照负载高低(而不是轮流分发)分发到后续负载较低的几何处理管线中,如第1个图元块的图元组1分发到几何处理管线5122,第1个图元块的图元组3分发到几何处理管线5121,第1个图元块的图元组5分发到几何处理管线512n,对于第一个图元块的其他图元组,如第1个图元块的图元组2分发到图10中未显示的其他几何处理管线(可以是几何处理管线5123,图10中未示出);同理,其他图元组也是按照负载分发到后续负载较低的几何处理管线中,这里不再赘述。可以理解的是,图10中是基于负载情况的一种示例。因此,看起来各个几何处理管线的输入数据并不存在规律。
[0138] 上述实施例是由各个图形管线集群内的图元分发模块分别独立去读取输入几何数据流,并选择自己要处理的部分。
[0139] 在另一些实施例中,可以使用两级图元分发模块,图元一级分发模块负责读取输入几何数据流,并拆分为图元块,分发到各图形管线集群。图形管线集群内的图元二级分发模块再将输入的图元块继续拆分为图元组,并分发到几何处理管线。后续的合并等操作和上述实施例方案一致。
[0140] 请参阅图11,其示出了另一种多层次并行GPU几何处理管线示意图二。可以看出,相较于图8,原先的图元分发模块411至图元分发模块4n1更新为现在的图元一级分发模块71、图元二级分发模块721至图元二级分发模块72n。其中,图元一级分发模块71用于读取全部的输入几何数据流,然后确定每个图形管线集群所需要处理的数据,并将各图形管线集群需要处理的数据分发到各个图形管线集群;图元二级分发模块用于接收本图形管线集群所需要处理的数据,并进一步分成n个图元组,分别分配给本图形管线集群内每个几何处理管线。此时,图形管线集群层包括图形管线集群41至图形管线集群4n共n个图形管线集群,其中,第1个图形管线集群包括图元二级分发模块721、至少两个几何处理管线412、合并仲裁器413和分块器414,…,第n个图形管线集群包括图元二级分发模块72n、至少两个几何处理管线4n2、合并仲裁器4n3和分块器4n4,同时,每一个图形管线集群的输出数据可以存储至对应的缓存单元中,如第1个图形管线集群对应缓存单元415,第n个图形管线集群对应缓存单元4n5;几何处理管线层没有改变,包括多个像素处理管线(集群)46。
[0141] 通过上述实施例实现了两级并行处理几何管线,既可以灵活配置图形管线集群数量,又可以提高几何管线处理效率,相比相关技术中的几何处理管线的并行方式,可以进一步提高几何处理管线并行度。同时,采用了两级并行的几何处理管线,相比于通过合并仲裁的方式的一级并行,分块器和合并仲裁器不会需要处理太多几何处理管线的输出,不会成为性能瓶颈(太多管线输出合并会造成管线断流和序列化效应);另外,相比通过像素处理管线前端合并多个多边形列表的一级并行,像素处理器阶段不需合并太多份几何处理管线输出的数据,不会成为性能瓶颈。本申请实施例可以增强整个系统几何处理能力的可配置性,方便和像素处理管线一起做集群的配置。
[0142] 基于前述的实施例,本申请实施例提供一种几何处理装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central Processing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(Field Programmable Gate Array,FPGA)等。
[0143] 图12为本申请实施例提供的一种图形处理器的组成结构示意图,如图12所示,图形处理器1200包括至少两个图形管线集群1210,所述图形管线集群1210包括图元分发模块1211、至少两个几何处理管线1212和合并仲裁器1213;其中,
[0144] 所述图元分发模块1211,用于获取几何数据流中的图元块数据;所述图元块数据包括用于确定所述图元块数据在所述几何数据流中顺序的第一标签;
[0145] 所述图元分发模块1211,还用于将所述图元块数据划分为图元组数据,并将所述图元组数据分发到几何处理管线;所述图元组数据包括用于确定所述图元组数据在所述图元块数据中顺序的第二标签;
[0146] 所述几何处理管线1212,用于对所述图元组数据进行处理,得到图元组处理结果,并将所述图元组处理结果输出给所述合并仲裁器;
[0147] 所述合并仲裁器1213,用于基于所述第二标签对所述图元组处理结果进行合并处理,得到所述图元块数据对应的具有第二顺序的几何输出数据;所述几何输出数据包含对应图元块数据的所述第一标签,用于确定各所述图形管线集群输出的几何输出数据之间的第一顺序。
[0148] 在一些实施例中,所述图元分发模块,还用于从所述几何数据流中读取所述图形管线集群需要处理的图元块数据。
[0149] 在一些实施例中,所述图元分发模块,还用于读取所述几何数据流;基于预设的图元块获取策略,将所述几何数据流中不属于当前图形管线集群处理的数据丢弃,得到所述图形管线集群需要处理的图元块数据。
[0150] 在一些实施例中,所述图元分发模块,还用于基于预设的图元块获取策略,确定所述图形管线集群需要处理的图元块数据的地址段;基于所述地址段在所述几何数据流中读取所述图形管线集群需要处理的图元块数据。
[0151] 在一些实施例中,所述图形处理器还包括全局分发模块;所述全局分发模块,用于读取所述几何数据流,基于预设的图元块获取策略,从所述几何数据流确定每一所述图形管线集群需要处理的图元块数据,并分发至每一所述图形管线集群;相应地,所述图元分发模块,还用于接收所述全局分发模块发送的所述图形管线集群需要处理的图元块数据。
[0152] 在一些实施例中,所述图形处理器还包括至少一个像素处理管线,所述图形管线集群,还用于基于所述第一标签将所述图元块数据对应的几何输出数据缓存至所述图形管线集群对应的缓存单元;所述像素处理管线,用于基于所述第一标签从所述至少两个图形管线集群分别对应的缓存单元中,按照第一顺序依次读取各所述图形管线集群对应的几何输出数据。
[0153] 在一些实施例中,所述图形管线集群还包括分块器,所述分块器,用于基于所述第一标签,依次对每一所述图形管线集群对应的几何输出数据的进行分发,并缓存至所述图形管线集群对应的缓存单元;其中,所述分块器,还用于基于所述第二顺序依次确定所述几何输出数据中每一图元数据对应的图块;在所述图形管线集群对应的缓存单元中,将所述几何输出数据中每一所述图元数据写入对应的图块的多边形列表中。
[0154] 在一些实施例中,在所述几何输出数据中存在至少一个目标图元数据属于目标图块的情况下,所述目标图块的多边形列表包括所述几何输出数据的第一标签和所述几何输出数据中属于所述目标图块的每一目标图元数据;其中,每一所述目标图元数据在所述多边形列表中的顺序与所述第二顺序相同。
[0155] 在一些实施例中,所述像素处理管线,还用于在所述至少两个图形管线集群分别对应的缓存单元中,遍历位于目标图块对应的每一所述多边形列表的表头的第一标签,并从目标第一标签对应的多边形列表中取出所述目标第一标签对应的图元数据,直至各所述多边形列表中不存在所述图元数据;其中,所述目标第一标签基于各所述多边形列表的表头的第一标签的先后顺序确定的。
[0156] 以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本申请实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
[0157] 需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的几何处理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
[0158] 本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
[0159] 本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
[0160] 本申请实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
[0161] 本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
[0162] 这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
[0163] 图13为本申请实施例提供的一种计算机设备的硬件实体示意图,如图13所示,该计算机设备1300的硬件实体包括:处理器1301和存储器1302,其中,存储器1302存储有可在处理器1301上运行的计算机程序,处理器1301执行程序时实现上述任一实施例的方法中的步骤。
[0164] 存储器1302存储有可在处理器上运行的计算机程序,存储器1302配置为存储由处理器1301可执行的指令和应用,还可以缓存待处理器1301以及计算机设备1300中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
[0165] 处理器1301执行程序时实现上述任一项的几何处理方法的步骤。处理器1301通常控制计算机设备1300的总体操作。
[0166] 本申请实施例提供一种计算机存储介质,计算机存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一实施例的几何处理方法的步骤。
[0167] 这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
[0168] 上述处理器可以为目标用途集成电路(Application Specific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(CentralProcessing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
[0169] 上述计算机存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read‑Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read‑Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read‑OnlyMemory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read‑Only Memory,CD‑ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
[0170] 应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0171] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0172] 在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0173] 上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0174] 另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0175] 或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
[0176] 以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。