一种图形渲染管线的控制方法、装置及计算机存储介质与流程

文档序号:18632890发布日期:2019-09-11 21:50阅读:167来源:国知局
一种图形渲染管线的控制方法、装置及计算机存储介质与流程

本发明实施例涉及图形处理器(gpu,graphicsprocessingunit)技术领域,尤其涉及一种图形渲染管线的控制方法、装置及计算机存储介质。



背景技术:

在统一渲染架构中,gpu的运算阵列array中的运算单元,即宏处理核心(mc,macrocore)彼此相互独立,且均包含顶点染色器和片元染色器,但在同一时间,单个mc只能对上述染色器中的一种染色器使能。

在一些统一渲染方案中,为了控制方便,通常会采用“间断式”的渲染方式,即cpu或主机通过命令处理器(cp,commandprocessor)下发一个绘制draw命令,从而驱动array中的一个或多个mc进行顶点染色,染色完毕之后存入gpu中的显存memory,再通过多边形链表构造器(plb,polygonlistbuilder)处理,处理完毕后,cp接受到反馈后向cpu或主机发送中断,随后cpu再下发下一个命令。而若该draw命令需要同时用到多个mc中的顶点染色器,其要等到所有mc都执行完之后才会将所有已染色的顶点存入memory再进行下一命令批次下发操作。

对于上述“间断式”的统一渲染方案,存在着图形渲染管线断流的问题,导致整条图形渲染管线利用率降低,除此之外,当绘制复杂图形命令时,需要动用多个mc进行顶点染色,由于染色复杂程度不均衡的原因,会使得各个mc之间的染色速度出现差异,即会发生染色早已完毕的mc需等待染色速度较慢的mc全部完成后,才将所有完成染色的顶点存入memory的情况,也降低了mc的利用率。



技术实现要素:

有鉴于此,本发明实施例期望提供一种图形渲染管线的控制方法、装置及计算机存储介质;提高mc的利用率,并且提高图形渲染管线的渲染性能。

本发明实施例的技术方案是这样实现的:

第一方面,本发明实施例提供了一种图形渲染管线的控制装置,所述装置包括:命令处理器cp、由多个宏处理核心mc组成的运算阵列array、宏处理核心控制器mcc、多边形链表构造器plb以及显存memory;其中,

所述cp,经配置为:根据针对当前帧的所有绘制命令,确定所述当前帧需要染色的顶点数目并为各个顶点按顺序分配索引标识,并根据按照渲染顺序为所述需要染色的顶点为宏处理核心控制器mcc中的顶点批次表分配数据空间;其中,所述顶点批次表内的每个数据空间均对应于一顶点且初始值为第一数值,所述第一数值标识所述顶点未完成顶点染色;以及,

将所述需要染色的顶点按照绘制命令顺序地分批次分配至array中的各mc进行顶点染色;

所述mc,经配置为:当分配至自身的顶点完成顶点染色处理后,将已完成顶点染色处理的顶点通知mcc,并将所述自身已完成顶点染色处理的顶点写入memory;

所述mcc,经配置为:将所述已完成顶点染色处理的顶点通知cp,并将所述顶点批次表中与所述已完成顶点染色处理的顶点对应数据空间内的数值修改为第二数值;其中,所述第二数值标识所述顶点已完成顶点染色;

所述cp,还经配置为:按照绘制命令向所述mc分配新批次的需要染色的顶点,并向plb发送第一触发指令;

所述plb,经配置为响应于所述第一触发指令,按照顺序对顶点批次表进行遍历;以及,

当被遍历的数据空间内的数值为第二数值时,从memory中提取所述被遍历的数据空间对应的顶点;以及,

当遍历至所述顶点批次表内的最后一个数据空间时,则向所述cp进行第一反馈;所述第一反馈用于cp刷新所述顶点批次表,并等待进入下一帧的绘制命令。

第二方面,本发明实施例提供了一种图形渲染管线的控制方法,所述方法应用于第一方面所述的图形渲染管线的控制装置,所述方法包括:

命令处理器cp根据针对当前帧的所有绘制命令,确定所述当前帧需要染色的顶点数目并为各个顶点按顺序分配索引标识,并根据按照渲染顺序为所述需要染色的顶点为宏处理核心控制器mcc中的顶点批次表分配数据空间;其中,所述顶点批次表内的每个数据空间均对应于一顶点且初始值为第一数值,所述第一数值标识所述顶点未完成顶点染色;

所述cp将所述需要染色的顶点按照绘制命令顺序地分批次分配至array中的各mc进行顶点染色;

若array中出现完成顶点染色处理的mc,则所述mc将自身已完成顶点染色处理的顶点通知mcc,并将自身已完成顶点染色处理的顶点写入显存memory;

所述mcc将所述已完成顶点染色处理的顶点通知cp,并将所述顶点批次表中与所述已完成顶点染色处理的顶点对应数据空间内的数值修改为第二数值;其中,所述第二数值标识所述顶点已完成顶点染色;

所述cp按照绘制命令向所述mc分配新批次的需要染色的顶点,并向多边形链表构造器plb发送第一触发指令;

所述plb响应于所述第一触发指令,按照顺序对顶点批次表进行遍历;

当被遍历的数据空间内的数值为第二数值时,所述plb从memory中提取所述被遍历的数据空间对应的顶点;

当所述plb遍历至所述顶点批次表内的最后一个数据空间时,则向所述cp进行第一反馈;所述第一反馈用于所述cp刷新所述顶点批次表,并等待进入下一帧的绘制命令。

第三方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有图形渲染管线的控制程序,所述图形渲染管线的控制程序被至少一个处理器执行时实现第二方面所述的图形渲染管线的控制方法的步骤。

本发明实施例提供了一种图形渲染管线的控制方法、装置及计算机存储介质;由于增加了mcc,实现了cp对mc的流水化处理,当有mc在处理完当前批次顶点的染色任务后,已染色的顶点将存入memory并且此mc会接受新批次的顶点,并且已染色的顶点可以进入plb进行下一步的处理。从而提高mc的利用率,并且提高图形渲染管线的渲染性能。

附图说明

图1为常规方案中针对顶点染色的图形渲染管线架构示意图;

图2为本发明实施例提供的一种图形渲染管线的控制装置的组成示意图;

图3为本发明实施例提供的一种mcc的组成示意图;

图4为本发明实施例提供的绘制命令示意图;

图5为本发明实施例提供的一种顶点批次表的示意图;

图6为本发明实施例提供的一种mc状态模块写入操作示意图;

图7为本发明实施例提供的一种plb读取顶点示意图;

图8为本发明实施例提供了一种图形渲染管线的控制方法流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

在gpu渲染管线中,着色处理通常会按照一定的顺序执行,参见图1所示的针对顶点染色的图形渲染管线架构示意,cp将主机或cpu的指令转化为针对gpu各模块的消息命令,并驱使它们执行相应的操作;首先,基于统一渲染架构,gpu的array中的mc彼此相互独立,且均包含顶点染色器和片元染色器,但在同一时间,单个mc只能对上述染色器中的一种染色器使能;以顶点染色为例,当mc完成顶点染色之后,将染色完毕的顶点数据存入gpu中的显存memory。随后,plb将mc通过顶点染色器渲染完毕的顶点从memory中读出,并根据cp传输的图元类型进行图元装配,并将装配好的图元进行tile划分,最终将各个tile内的信息以多边形链表(pl,polygonlist)的形式存入memory。接着,在多边形链表构建完成后,将启动光栅化模块(图中未示出)从memory中读取多边形链表,进而对多边形进行光栅化处理,光栅化后产生的离散的片元再交给运算阵列进行最后的片元染色以形成像素。需要说明的是,计算阵列array与plb均需要读取memory中的数据后进行处理,并在处理完毕后写回memory。

对于统一渲染架构来说,针对单个的绘制draw命令,当前的常规方案是需要等到该命令所需使用的所有mc执行完染色后,才会将所有已染色的顶点存入memory,接着再进行下一draw命令批次下发操作。基于该常规方案,当需要绘制一帧复杂图形时,需要多个draw命令才能完成。由于染色复杂程度不均衡的原因,会使得各个mc之间的染色速度出现差异,即会发生染色早已完毕的mc需等待染色速度较慢的mc全部完成后,才将所有完成染色的顶点存入memory,才能进行下一draw命令。因此,常规方案会导致mc的利用率降低。

针对常规方案出现的上述缺陷,基于图1所示的针对顶点染色的图形渲染管线架构,本发明实施例增加了宏处理核心控制器(mcc,mccontroller),在具体实现时,该mcc可以设置于cp中,作为cp的一个组成部分;也可以单独作为一逻辑器件设置在cp与array之间。综上所述,本发明实施例提供了一种针对顶点染色的图形渲染管线的控制装置2,参见图2所示,该装置可以包括命令处理器cp21、由多个宏处理核心mc221组成的运算阵列array22、宏处理核心控制器mcc23、多边形链表构造器plb24以及显存memory25。在上述装置中,

所述cp21,经配置为:根据针对当前帧的所有绘制命令,确定所述当前帧需要染色的顶点数目并为各个顶点按顺序分配索引标识,并根据按照渲染顺序为所述需要染色的顶点为宏处理核心控制器mcc23中的顶点批次表分配数据空间;其中,所述顶点批次表内的每个数据空间均对应于一顶点且初始值为第一数值,所述第一数值标识所述顶点未完成顶点染色;以及,

将所述需要染色的顶点按照绘制命令顺序地分批次分配至array22中的各mc221进行顶点染色;

所述mc221,经配置为:当分配至自身的顶点完成顶点染色处理后,将已完成顶点染色处理的顶点通知mcc23,并将所述自身已完成顶点染色处理的顶点写入memory25;

所述mcc23,经配置为:将所述已完成顶点染色处理的顶点通知cp21,并将所述顶点批次表中与所述已完成顶点染色处理的顶点对应数据空间内的数值修改为第二数值;其中,所述第二数值标识所述顶点已完成顶点染色;

所述cp21,还经配置为:按照绘制命令向所述mc221分配新批次的需要染色的顶点,并向plb24发送第一触发指令;

所述plb24,经配置为响应于所述第一触发指令,按照顺序对顶点批次表进行遍历;以及,

当被遍历的数据空间内的数值为第二数值时,从memory25中提取所述被遍历的数据空间对应的顶点;以及,

当遍历至所述顶点批次表内的最后一个数据空间时,则向所述cp21进行第一反馈;所述第一反馈用于cp21刷新所述顶点批次表,并等待进入下一帧的绘制命令。

通过图2所示的技术方案,由于增加了mcc,实现了cp对mc的流水化处理,mc在处理完当前批次顶点的染色任务后,可以将已完成染色的顶点存入memory,并且接受cp分配的新批次需要染色的顶点。从而提高mc的利用率,并且提高图形渲染管线的渲染性能。

对于本发明实施例,参见图3,mcc23具体可以包括一mc状态模块以及顶点批次表,结合图2所示的技术方案,在mcc23中,mc状态模块,能够实现接收mcc231的通知,并且向cp21进行通知,以及将顶点批次表内的对应数值设置为第二数值。而对于顶点批次表来说,针对图2所示的技术方案,在一种可能的实现方式中,所述cp21,经配置为:

按照渲染顺序为所述需要染色的顶点设置顶点索引;

针对每个所述顶点索引在顶点批次表中对应设置初始值为第一数值的数据空间。

对于上述实现方式,具体来说,cp在根据当前帧所有绘制命令计算所需染色的顶点数目n后,将所有顶点按顺序设置索引标识并为顶点批次表分配相应的层数空间。以图4为例,设定当前帧的所有绘制命令包括第一个绘制命令至第n个绘制命令,cp为需要染色的顶点设置索引的具体实现包括:第一个绘制任务所绘制的第一个三角形的第一个顶点索引标识为0,之后按顺序绘制的顶点其索引标识依次递增1,直至第n个绘制命令的最后一个顶点索引标识为n。可以理解地,顶点的索引标识在本实施例中可以作为顶点属性的一部分被包含于顶点数据当中。在设置完成顶点索引之后,其顶点批次表如图5所示,其层数等于所有顶点个数n,并且从顶向下各层依次对应着各顶点的索引,每一层的数据空间均包含1bit数据,当数据为0时代表着该层顶点索引所对应的顶点还未被染色完毕,当数据为1则代表着该层顶点索引对应的顶点已被染色。也就是说,在本实施例中,优选地,第一数值为0,第二数值为1。

针对图2所示的技术方案,在一种可能的实现方式中,所述mc221,经配置为:

当分配至自身的顶点批次完成顶点染色处理后,将已完成顶点染色处理的顶点批次对应的基地址和偏移量传输至所述mcc23;其中,所述已完成顶点染色处理的顶点批次对应的基地址用于标识所述已完成顶点染色处理的顶点批次中的首个顶点对应的地址,所述已完成顶点染色处理的顶点批次对应的偏移量用于标识所述已完成顶点染色处理的顶点批次中的顶点数目;

相应地,所述mcc23,经配置为:

根据所述已完成顶点染色处理的顶点批次对应的基地址和偏移量,将所述顶点批次表中顶点所对应的数据空间内的数值修改为第二数值。

具体来说,顶点批次表中数据空间内的数据会在两个时机被修改。第一个时机为:当有mc处理完一批顶点之后,会向mc状态模块发送已处理完的这批顶点的索引基地址和偏移量,mc状态模块处理基地址和偏移量后会记录下这些已完成染色处理的顶点索引,并会逐个更改顶点批次表中已完成染色处理的顶点索引相应层的数据,将其写为1。第二个时机为:当顶点批次表每层数据都为1时,则说明当前帧的所有顶点都已被处理完,顶点批次表各层被cp冲刷为0,等待下一帧的绘制命令。

此外,对于mc状态模块来说,其主要功能是监控各个mc的状态,其会在一个mc内的顶点染色完毕时被激活,mc状态模块会接收已完成顶点染色处理的mc所发来的顶点索引基地址与偏移量,基地址即为该mc内的处理的第一个顶点的索引,该基地址以索引k为例;偏移量为该mc所处理的顶点个数,以m为例。随后,mc状态模块根据基地址依次对顶点批次表每层进行写1操作,直到写到基地址+mc所处理顶点数为止,具体过程如图6所示。另一方面,当有mc处理完顶点后,mc状态模块也会通知cp下发新的绘制命令给此已处理完顶点的mc,如此能够将已处理完顶点染色的mc空闲出来以便于下一批次的顶点进行染色处理。

针对图2所示的技术方案,在一种可能的实现方式中,所述plb24,经配置为:

在每个节拍,根据所述顶点批次表指针所指向数据空间内的数值确定所述指针所指向的数据空间对应的顶点是否已经准备好进入plb24:

相应于所述指针所指向的数据空间内数值为第二数值,则确定所述指针所指向的数据空间对应的顶点能够被读取,并从memory25中提取所述指针所指向的数据空间对应的顶点;

相应于所述指针所指向的数据空间内数值为第一数值,则确定所述指针所指向的数据空间对应的顶点不能够被读取。

针对上述实现方式,相应于所述指针所指向的数据空间内数值为第一数值,所述plb24,还经配置为:

向所述cp21进行第二反馈;其中,所述第二反馈用于指示第一数值的数据空间对应的顶点;以及,

接收所述cp21响应于所述第二反馈发送的中断指令;以及,

接收所述cp21在被通知所述第二反馈所指示的顶点已完成染色后所发送的重启触发指令,并根据所述重启触发指令继续在所述顶点批次表中,从所述第二反馈所指示的顶点对应的数据空间进行遍历。

对于上述实现方式,具体来说,cp在有已完成染色处理的顶点写入memory后便可触发plb,plb在每个节拍都会根据顶点批次表的指针(该指针的初始指向顶点索引0)所指向层级的数据来判断此指向层级对应的顶点是否已经准备好进行入plb,若数据为1,则代表此顶点可以被plb读取,plb根据顶点索引从memory中提取该顶点进行多边形链表的建立及后续处理,并且将表指针加一再次进行判断;若数据为0,代表plb暂时不能读取此顶点,并进行等待直到此数据变为1,表指针保持不变。以图7为例,索引0和索引1的顶点对应的层级数据为1,所以其顶点数据可以进入plb,plb就可以从memory25中提取索引0和索引1对应的顶点。而索引2的顶点对应的层级数据空间内的数据为0,plb将表指针停滞并等待其数据变为1。具体来说,plb可以向cp21进行第二反馈,cp会向plb发送中断指令以将表指针停止在索引2,待cp从mcc获知索引2的顶点已完成染色处理后,接收cp发送的重启触发指令继续从索引2的顶点进行判断。

由此可知,尽管顶点索引为200和n的两个顶点已完成染色并存入memory,由于索引2的顶点未完成染色处理,那么plb也不再继续读取顶点。

需要说明的是,虽然顶点是根据索引顺序依次进入到各mc中,即使各mc因顶点复杂度使得处理速度不一致,但先进入mc的顶点还是有极大可能先被染色处理完毕并写回memory,因此不会导致表指针在某一层停留太长时间的情形发生。

对于上述技术方案,通过引入了mcc,实现了cp对mc的流水化处理,可以将先处理完顶点染色的mc直接将顶点数据写入memory中,而不是等到所有mc都处理完顶点染色处理后才统一进行写回,如此就能把已处理完顶点的mc空闲出来以方便下一批次的顶点进入进行染色处理,并且plb会从memory中提取已写入的顶点进行多边形链表的建立及后续处理。

结合前述技术方案相同的技术构思,参见图8,其示出了本发明实施例提供了一种图形渲染管线的控制方法,该方法可以应用于前述技术方案所示的图形渲染管线的控制装置,该方法可以包括:

s801:cp根据针对当前帧的所有绘制命令,确定所述当前帧需要染色的顶点数目并为各个顶点按顺序分配索引标识,并根据按照渲染顺序为所述需要染色的顶点为宏处理核心控制器mcc中的顶点批次表分配数据空间;其中,所述顶点批次表内的每个数据空间均对应于一顶点且初始值为第一数值,所述第一数值标识所述顶点未完成顶点染色;

s802:所述cp将所述需要染色的顶点按照绘制命令顺序地分批次分配至array中的各mc进行顶点染色;

s803:若array中出现完成顶点染色处理的mc,则所述mc将自身已完成顶点染色处理的顶点通知mcc,并将自身已完成顶点染色处理的顶点写入显存memory;

s804:所述mcc将所述已完成顶点染色处理的顶点通知cp,并将所述顶点批次表中与所述已完成顶点染色处理的顶点对应数据空间内的数值修改为第二数值;其中,所述第二数值标识所述顶点已完成顶点染色;

s805:所述cp按照绘制命令向所述mc分配新批次的需要染色的顶点,并向多边形链表构造器plb发送第一触发指令;

s806:所述plb响应于所述第一触发指令,按照顺序对顶点批次表进行遍历;

s807:当被遍历的数据空间内的数值为第二数值时,所述plb从memory中提取所述被遍历的数据空间对应的顶点;

s808:当所述plb遍历至所述顶点批次表内的最后一个数据空间时,则向所述cp进行第一反馈;所述第一反馈用于所述cp刷新所述顶点批次表,并等待进入下一帧的绘制命令。

对于图8所示的技术方案,在一种可能的实现方式中,s801中所述cp根据按照渲染顺序为所述需要染色的顶点在宏处理核心控制器mcc中建立顶点批次表,包括:

所述cp按照渲染顺序为所述需要染色的顶点设置顶点索引;

所述cp针对每个所述顶点索引在顶点批次表中对应设置初始值为第一数值的数据空间。

对于图8所示的技术方案,在一种可能的实现方式中,s803中所述mc将自身已完成顶点染色处理的顶点通知mcc,包括:

当分配至自身的顶点批次完成顶点染色处理后,所述mc将已完成顶点染色处理的顶点批次对应的基地址和偏移量传输至所述mcc;其中,所述已完成顶点染色处理的顶点批次对应的基地址用于标识所述已完成顶点染色处理的顶点批次中的首个顶点对应的地址,所述已完成顶点染色处理的顶点批次对应的偏移量用于标识所述已完成顶点染色处理的顶点批次中的顶点数目;

相应地,s804中所述mcc将所述顶点批次表中与所述已完成顶点染色处理的顶点对应数据空间内的数值修改为第二数值,包括:

所述mcc根据所述已完成顶点染色处理的顶点批次对应的基地址和偏移量,将所述顶点批次表中顶点所对应的数据空间内的数值修改为第二数值。

对于图8所示的技术方案,在一种可能的实现方式中,所述方法还包括:

当被遍历的数据空间内的数值为第一数值时,所述plb向所述cp进行第二反馈;其中,所述第二反馈用于指示所述第一数值的数据空间对应的顶点;

所述plb接收所述cp响应于所述第二反馈发送的中断指令;以及,

当所述cp被通知所述第二反馈所指示的顶点已完成染色后,向所述plb发送重启触发指令;

所述plb根据所述重启触发指令继续在所述顶点批次表中,从所述第二反馈所指示的顶点对应的数据空间进行遍历。

需要说明的是,对于图8所示的技术方案,各步骤以及各步骤的实现方式,可由前述图形渲染管线的控制装置2中的各部件的配置阐述进行具体说明,在此不再赘述。

可以理解地,上述技术方案中图形渲染管线的控制装置2中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

因此,本实施例提供了一种计算机存储介质,所述计算机存储介质存储有图形渲染管线的控制程序,所述图形渲染管线的控制程序被至少一个处理器执行时实现图8所示的图形渲染管线的控制方法的步骤。

需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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