图像渲染方法及系统与流程

文档序号:22260358发布日期:2020-09-18 14:28阅读:189来源:国知局
图像渲染方法及系统与流程

本发明涉及图像处理领域,具体而言,涉及一种图像渲染方法及系统。



背景技术:

随着计算机图形学的发展,3d应用和图形设计软件日益增多,同时图像的数据计算量越来越大,对图形加速器的性能要求很高。对于某一台电脑,如果有多个应用程序需要大量的图形计算资源,普通显卡就很难满足,即使采用高端显卡,其处理能力也有极限,如果需求大于显卡的处理能力,就需要采用多个显卡协同工作。

目前已经有多个显卡协同工作实现并行运算的方法,采用物理的方法将两个显卡连接在一起。但是,上述方法存在如下缺点:不同厂家的显卡不能连接在一起,而且即使是同一个厂家也有型号限制;性能提升不理想,因为两个高性能显卡混合后,最终性能只能达到单个性能的1.5倍,无法接近2倍的理论值;由于多个显卡需要插入同一个主板,因此,并行的显卡数目受主板接口的限制。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种图像渲染方法及系统,以至少解决相关技术中采用多个显卡进行图像处理的处理性能差、效率低的技术问题。

根据本发明实施例的一个方面,提供了一种图像渲染方法,包括:终端设备获取目标应用程序发送的图像渲染请求,其中,终端设备中安装有多个应用程序;终端设备确定目标应用程序对应的目标显卡,其中,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡;终端设备基于图像渲染请求生成渲染指令,并发送渲染指令至目标显卡所在的目标渲染设备,其中,不同显卡用于执行不同应用程序的渲染指令;目标渲染设备获取渲染后的图像数据,并发送图像数据至终端设备;终端设备输出图像数据。

可选地,终端设备确定目标应用程序对应的目标显卡包括:终端设备判断图像渲染请求是否为目标应用程序发送的第一个图像渲染请求;如果图像渲染请求是目标应用程序发送的第一个图像渲染请求,则终端设备基于多个显卡的显卡状态,确定目标显卡,并将目标显卡与目标应用程序进行绑定;如果图像渲染请求不是目标应用程序发送的第一个图像渲染请求,则终端设备确定与目标应用程序绑定的显卡为目标显卡。

可选地,显卡状态包括:占用率,其中,终端设备基于多个显卡的显卡状态,确定目标显卡包括:终端设备基于多个显卡的占用率,确定占用率最低的第一显卡;终端设备确定第一显卡为目标显卡。

可选地,在第一显卡为多个的情况下,该方法还包括:终端设备获取第一显卡的优先级;终端设备基于第一显卡的优先级,确定优先级最高的第二显卡;终端设备确定第二显卡为目标显卡。

可选地,在终端设备发送渲染指令至目标显卡所在的目标渲染设备之后,该方法包括:目标渲染设备基于渲染指令,确定目标显卡对应的目标渲染子任务,其中,渲染指令至少包括:目标显卡的标识信息;目标渲染设备下发渲染指令至目标显卡,其中,目标显卡用于执行渲染指令;在目标渲染子任务完成一帧图像渲染之后,目标渲染设备获取图像数据。

可选地,渲染指令还包括:目标应用程序的标识信息,其中,目标渲染设备基于渲染指令,确定目标显卡对应的目标渲染子任务包括:目标渲染设备基于目标应用程序的标识信息,判断渲染指令是否为目标应用程序发送的第一个渲染指令;如果渲染指令是目标应用程序发送的第一个渲染指令,则目标渲染设备基于渲染指令,建立目标渲染子任务,并将目标渲染子任务与目标显卡进行绑定;如果渲染指令不是目标应用程序发送的第一个渲染指令,则终端设备确定与目标显卡绑定的渲染子任务为目标渲染子任务。

可选地,在目标应用程序为多个的情况下,目标显卡和图像数据均为多个,其中,终端设备输出图像数据包括:终端设备将接收到的多个图像数据进行合成;终端设备输出合成后的图像数据。

可选地,在终端设备获取目标应用程序发送的图像渲染请求之前,该方法还包括:多个渲染设备发送显卡信息至终端设备,其中,显卡信息至少包括:渲染设备上安装的多个显卡的标识信息,多个显卡的显卡状态,以及渲染设备的标识信息。

根据本发明实施例的另一方面,还提供了一种图像渲染系统,包括:终端设备获取目标应用程序发送的图像渲染请求,其中,终端设备中安装有多个应用程序;终端设备确定目标应用程序对应的目标显卡,其中,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡;终端设备基于图像渲染请求生成渲染指令;终端设备发送渲染指令至目标显卡所在的目标渲染设备,并接收目标渲染设备返回的渲染后的图像数据,其中,不同显卡用于执行不同应用程序的渲染指令;终端设备输出图像数据。

可选地,终端设备确定目标应用程序对应的目标显卡包括:终端设备判断图像渲染请求是否为目标应用程序发送的第一个图像渲染请求;如果图像渲染请求是目标应用程序发送的第一个图像渲染请求,则终端设备基于多个显卡的显卡状态,确定目标显卡,并将目标显卡与目标应用程序进行绑定;如果图像渲染请求不是目标应用程序发送的第一个图像渲染请求,则终端设备确定与目标应用程序绑定的显卡为目标显卡。

可选地,显卡状态包括:占用率,其中,终端设备基于多个显卡的显卡状态,确定目标显卡包括:终端设备基于多个显卡的占用率,确定占用率最低的第一显卡;终端设备确定第一显卡为目标显卡。

根据本发明实施例的另一方面,还提供了另一种图像渲染方法,包括:目标渲染设备获取终端设备发送的渲染指令,其中,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡,终端设备中安装有多个应用程序,渲染指令由终端设备基于目标应用程序发送的图像渲染请求生成;目标渲染设备发送渲染指令至目标显卡,其中,不同显卡用于执行不同应用程序的渲染指令,目标显卡与目标应用程序对应;目标渲染设备获取渲染后的图像数据;目标渲染设备发送图像数据至终端设备,其中,终端设备还用于输出图像数据。

可选地,在目标渲染设备获取终端设备发送的渲染指令之后,该方法包括:目标渲染设备基于渲染指令,确定目标显卡对应的目标渲染子任务,其中,渲染指令至少包括:目标显卡的标识信息;目标渲染设备下发渲染指令至目标显卡,其中,目标显卡用于执行渲染指令;在目标渲染子任务完成一帧图像渲染之后,目标渲染设备获取图像数据。

可选地,渲染指令还包括:目标应用程序的标识信息,其中,目标渲染设备基于渲染指令,确定目标显卡对应的目标渲染子任务包括:目标渲染设备基于目标应用程序的标识信息,判断渲染指令是否为目标应用程序发送的第一个渲染指令;如果渲染指令是目标应用程序发送的第一个渲染指令,则目标渲染设备基于渲染指令,建立目标渲染子任务,并将目标渲染子任务与目标显卡进行绑定;如果渲染指令不是目标应用程序发送的第一个渲染指令,则终端设备确定与目标显卡绑定的渲染子任务为目标渲染子任务。

根据本发明实施例的另一方面,还提供了另一种图像渲染系统,包括:终端设备,安装有多个应用程序;多个渲染设备,每个渲染设备上安装有多个显卡;其中,终端设备用于获取目标应用程序发送的图像渲染请求,确定目标应用程序对应的目标显卡,并基于图像渲染请求生成渲染指令;不同显卡用于执行不同应用程序的渲染指令;目标显卡所在的目标渲染设备用于渲染后的图像数据;终端设备还用于输出图像数据。

根据本发明实施例的另一方面,还提供了计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,在序运行时控制计算机可读存储介质所在设备执行上述实施例中任意一项的图像渲染方法。

根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行实施例中任意一项的图像渲染方法。

在本发明实施例中,采用终端设备获取目标应用程序发送的图像渲染请求;终端设备确定目标应用程序对应的目标显卡;终端设备基于图像渲染请求生成渲染指令,并发送渲染指令至目标显卡所在的目标渲染设备;目标渲染设备获取渲染后的图像数据,并发送图像数据至终端设备;终端设备输出图像数据的方式。容易注意到的是,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡,将多个显卡资源连接起来,实现分布式并行工作,提高图像处理性能以及工作效率,从而实现了每个显卡图像渲染全部性能叠加的技术效果,进而解决了相关技术中采用多个显卡进行图像处理的处理性能差、效率低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种图像渲染方法的流程图;

图2是根据本发明实施例的另一种图像渲染方法的流程图;

图3是根据本发明实施例的另一种图像渲染方法的流程图

图4是根据本申请的实施例的一种图像渲染系统的示意图;

图5是根据本申请的实施例的一种可选的图像渲染系统的示意图;

图6是根据本申请的实施例的一种可选的终端设备的软件模块的示意图;

图7是根据本申请的实施例的一种可选的图像渲染单元硬件结构的示意图;

图8是根据本申请的实施例的一种可选的图像渲染单元软件结构的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种图像渲染方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的一种图像渲染方法的流程图,如图1所示,该方法包括如下步骤:

步骤s102,终端设备获取目标应用程序发送的图像渲染请求,其中,终端设备中安装有多个应用程序;

具体的,上述终端设备可以是直接面向用户的设备,例如:计算机、笔记本、平板电脑,或者专门用于图像处理的设备等,但不仅限于此。上述应用程序可以是预先安装在终端设备中的3d应用和图形设计软件,但不仅限于此,目标应用程序可以是当前运行在终端设备中,需要进行图像数据计算的应用程序,目标应用程序的数量可以是一个,也可以是多个。

图像渲染请求可以是目标应用程序向终端设备下发的用于图像渲染的请求,该请求中可以携带有目标应用程序的标识信息,例如,可以携带目标应用程序的编号、名称等,但不仅限于此。

步骤s104,终端设备确定目标应用程序对应的目标显卡,其中,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡;

具体的,上述渲染设备可以是安装有多个显卡的计算机,渲染设备可以直接通过数据线与终端设备连接,作为一个本地设备,也可以通过网络与终端设备连接,作为远程设备。由于终端设备上安装的应用程序的数量可以根据用户使用需要进行随意增加,为了满足不同用户的使用需求,在本发明实施例中,以终端设备通过网络与渲染设备连接为例进行说明,此时,可以根据不同用户的使用需求,增加渲染设备的数量。

上述的显卡可以是不同厂家的各种型号的显卡,本发明对此不作具体限定。对于每个应用程序,可以为其分配一个显卡执行图像渲染任务,因此,上述目标显卡可以是为目标应用程序分配的显卡。

步骤s106,终端设备基于图像渲染请求生成渲染指令,并发送渲染指令至目标显卡所在的目标渲染设备,其中,不同显卡用于执行不同应用程序的渲染指令;

由于目标渲染设备上安装有多个显卡,为了确保目标渲染设备可以确定执行渲染指令的目标显卡,渲染指令可以携带目标显卡的标识信息,以及下发渲染指令的应用程序的标识信息。

需要说明的是,不同显卡的图像性能不同,对于性能较强的显卡,可以执行多个应用程序的渲染指令,而对于性能较差的显卡,可以执行一个应用程序的渲染指令。

步骤s108,目标渲染设备获取渲染后的图像数据,并发送图像数据至终端设备;

在一种可选的实施例中,目标渲染设备在获取到终端设备发送的渲染指令之后,可以将渲染指令下发给目标显卡,由目标显卡执行渲染指令,完成图像渲染,并将渲染完成的图像数据存储在数据库中,目标渲染设备在目标显卡完成图像渲染之后,可以从数据库中获取到渲染后的图像数据,并发送给终端设备。

步骤s110,终端设备输出图像数据。

其中,最终合成的图像可以是通过本地显示设备显示,如显示屏等,也可以是发送给用户的移动端进行显示。用户的操作可以为用户通过键盘、鼠标事件,或者触摸事件等操作事件,对终端设备上运行的各应用程序的操作。

由于传统多显卡系统工作进行图像渲染采用的连接方式是物理连接,容易产生以下几个问题:不同厂家或同厂家不同型号的显卡不能物理连接;在同一设备上采用多个显卡进行图像渲染的效果并不能成倍增加;由于多个显卡需要插入同一个主板,并行的显卡数目受主板接口的限制。为了解决上述问题,在本发明实施例中,可以通过安装有多个显卡的多个渲染设备,增加显卡的数目,使得显卡的数量不受限制,而且根据不同应用程序发送的图像渲染请求并行工作进行图像渲染,从而提高图像处理性能以及工作效率。

根据上述发明实施例,采用终端设备获取目标应用程序发送的图像渲染请求,终端设备中安装有多个应用程序;终端设备确定目标应用程序对应的目标显卡,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡;终端设备基于图像渲染请求生成渲染指令,并发送渲染指令至目标显卡所在的目标渲染设备,不同显卡用于执行不同应用程序的渲染指令;目标渲染设备获取渲染后的图像数据,并发送图像数据至终端设备;终端设备输出图像数据的方式。容易注意到的是,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡是将多个显卡资源连接起来,实现分布式并行工作,提高图像处理性能以及工作效率的目的,从而实现了每个显卡图像渲染全部性能叠加的技术效果,进而解决了相关技术中采用多个显卡进行图像处理的处理性能差、效率低的技术问题。

可选地,在本发明上述实施例中,终端设备确定目标应用程序对应的目标显卡包括:终端设备判断图像渲染请求是否为目标应用程序发送的第一个图像渲染请求;如果图像渲染请求是目标应用程序发送的第一个图像渲染请求,则终端设备基于多个显卡的显卡状态,确定目标显卡,并将目标显卡与目标应用程序进行绑定;如果图像渲染请求不是目标应用程序发送的第一个图像渲染请求,则终端设备确定与目标应用程序绑定的显卡为目标显卡。

在一种可选的方案中,终端设备在获取到图像渲染请求之后,对图像渲染请求进行判断,即判断该图像渲染请求是否是目标应用程序的发送的第一个图像渲染请求,如果是目标应用程序的发送的第一个图像渲染请求,则终端设备根据渲染设备上的各个显卡的状态,选择一个目标显卡,一个目标应用程序的图像渲染所有任务均由这一个固定的目标显卡来实现,即,将目标显卡与该应用程序进行绑定。例如,终端设备上安装有应用程序1、应用程序2……应用程序n,多个渲染设备上安装有显卡a、显卡b……显卡n。终端设备获取到应用程序1发送的图像渲染请求后,判断该图像渲染请求为应用程序1发送的第一个图像请求,并且根据渲染设备上各个显卡的状态确定了一个目标显卡为显卡a,则应用程序1的所有渲染渲染任务均由显卡a执行,实现应用程序1与显卡a的绑定。

如果不是目标应用程序的发送的第一个图像渲染请求,说明在之前该目标应用程序已经跟多个显卡中的某个显卡进行绑定。则终端设备确定跟目标程序已经绑定的显卡为目标显卡。例如,终端设备安装有目标应用程序1、目标应用程序2……目标应用程序n,多个渲染设备上安装有显卡a、显卡b……显卡n。终端设备在获取到应用程序1发送的图像渲染请求之后,对图像渲染请求进行判断,判断该图像渲染请求为目标应用程序1发送的第二个图像渲染请求,也即目标应用程序1在发送第二个图像渲染请求之前已经跟一个显卡a绑定,则确定已经与目标程序1绑定过的显卡a为目标显卡,即,目标应用程序1发送的第二个图像渲染请求还是由显卡a执行。

可选地,在本发明上述实施例中,显卡状态包括:占用率,其中,终端设备基于多个显卡的显卡状态,确定目标显卡包括:终端设备基于多个显卡的占用率,确定占用率最低的第一显卡;终端设备确定第一显卡为目标显卡。

具体的,终端设备在获取图像渲染请求之后,要根据显卡的状态确定目标显卡,显卡的状态可以是显存也可以是占用率。显卡的显存越大,占用率越小则说明这个显卡目前的任务负担小,还可以承担更多的任务。特别是占用率,在多个显卡中,占用率最低的可以选择为第一显卡,即确定为目标显卡。

在一种可选的方案中,以占用率为例,如果一个显卡此刻的占用率最低,甚至处于空闲状态,在多个显卡中选择该显卡为第一显卡,也即确定为目标显卡。这样可以使得图像渲染任务分配比较平均不会出现部分显卡负担过重,导致工作效率低的问题。

可选地,在本发明上述实施例中,在第一显卡为多个的情况下,该方法还包括:终端设备获取第一显卡的优先级;终端设备基于第一显卡的优先级,确定优先级最高的第二显卡;终端设备确定第二显卡为目标显卡。

具体的,当终端设备获取第一显卡为多个的情况下,也就是有多个显卡的占用率一样且最低,此时应该根据显卡的优先级进一步进行筛选出优先级最高的第二显卡,并确定为目标显卡。

在一种可选的方案中,根据实际情况,设置显卡的优先级,例如,有a、b、c、d四个显卡,为其设置的优先级如下:显卡a的优先级大于b的优先级,显卡b的优先级大于c的优先级,显卡c的优先级大于d的优先级,此时显卡a和显卡c的占用率最低,但是由于显卡a的优先级高于显卡c的优先级,因此优先选择优先级别高的显卡a作为第二显卡,并确定为目标显卡。例如,显卡a的占用率为10%、显卡b的占用率为15%、显卡c的占用率均为10%,显卡d的占用率为20%。其中,因为显卡a和显卡c的占用率最低,可以将显卡a和显卡c选为第一显卡,在占用率的基础上结合优先级,显卡a的优先级高于显卡c的优先级,因此选择显卡a为第二显卡,则终端设备确定显卡a为目标显卡。

可选地,在本发明上述实施例中,在终端设备发送渲染指令至目标显卡所在的目标渲染设备之后,该方法包括:目标渲染设备基于渲染指令,确定目标显卡对应的目标渲染子任务,其中,渲染指令至少包括:目标显卡的标识信息;目标渲染设备下发渲染指令至目标显卡,其中,目标显卡用于执行渲染指令;在目标渲染子任务完成一帧图像渲染之后,目标渲染设备获取图像数据。

具体的,上述显卡的标识信息可以是显卡编号,用来区别不同的显卡,但不仅限于此,也可以是显卡的型号等。显卡编号可以是阿拉伯数字0、1、2…n,也可以是英文字母a、b、c…z等,在本发明实施例中不做限制。对于渲染设备上每个显卡,渲染设备可以建立一个渲染子任务与其进行绑定,渲染设备通过渲染子任务可以确定显卡执行渲染指令的状态,也即,显卡在执行渲染指令的过程中,渲染设备可以通过渲染子任务确定是否完成一帧图像渲染。

在一种可选的实施例中,在终端设备发送渲染指令给目标显卡所在的目标渲染设备之后,目标渲染设备可以根据渲染指令中的目标显卡标识信息确定目标显卡,先确定目标显卡对应的目标渲染子任务,再将渲染指令下发至目标显卡进行执行,当渲染设备确定目标渲染子任务完成一帧图像渲染时,目标渲染设备可以从存储有图像数据的数据库中获取该帧图像数据。

可选地,在本发明上述实施例中,渲染指令还包括:目标应用程序的标识信息,其中,目标渲染设备基于渲染指令,确定目标显卡对应的目标渲染子任务包括:目标渲染设备基于目标应用程序的标识信息,判断渲染指令是否为目标应用程序发送的第一个渲染指令;如果渲染指令是目标应用程序发送的第一个渲染指令,则目标渲染设备基于渲染指令,建立目标渲染子任务,并将目标渲染子任务与目标显卡进行绑定;如果渲染指令不是目标应用程序发送的第一个渲染指令,则终端设备确定与目标显卡绑定的渲染子任务为目标渲染子任务。

具体的,上述目标应用程序的标识信息同样可以是一个编号,例如阿拉伯数字0、1、2…n,用于区别终端设备上安装的不同应用程序软件,但不仅限于此,也可以是应用程序名称、存储路径等。

在一种可选的实施例中,目标渲染设备在每次接收到终端设备发送的渲染指令之后,可以根据目标应用程序的标识信息,将其记录在目标渲染设备的存储单元,其中,存储单元可以存储目标应用程序的编号,也可以是整个渲染指令。在此基础上,当目标渲染设备接收到一个新的渲染指令时,可以根据渲染指令中的目标应用程序的标识信息首先判断该渲染指令是否是目标应用程序的第一个渲染指令,也即,可以提取目标应用程序的标识信息与存储单元记载的信息进行比较,如果存储单元未存储有相关记录,则判断该渲染指令是目标应用程序发送的第一个渲染指令,此时,渲染设备先建立一个目标渲染子任务,并将目标显卡与目标渲染子任务进行绑定。如果存储单元存储有相关记录,则判断该判渲染指令不是目标应用程序的第一个渲染指令,则终端设备确定与目标显卡之前已经绑定过的渲染子任务为目标渲染子任务。

可选地,在本发明上述实施例中,在目标应用程序为多个的情况下,目标显卡和图像数据均为多个,其中,终端设备输出图像数据包括:终端设备将接收到的多个图像数据进行合成;终端设备输出合成后的图像数据。

由于终端设备上安装有多个不同图像处理功能的应用程序软件,当多个应用程序软件需要进行图像渲染时,多个应用程序均会发送图像渲染请求至终端设备,从而终端设备可以获取到多个图像渲染请求,由于每个应用程序需要与一个显卡绑定,因此终端设备可以确定多个目标显卡,此时多个显卡执行图像渲染指令后会生成多个图像数据输出给终端设备,终端设备最终会将多个目标显卡生成的多个图像数据进行合成显示给用户。

需要说明的是,本申请采用的图像渲染可选的方式为轻量渲染,指普通的窗口合成,可以理解为2d渲染,没有大量的数学计算,利用集成显卡或者cpu就可以完成。

例如,聊天应用程序a在前台运行,视频播放应用程序b在后台运行,待显示的桌面图像中包括聊天应用程序a的聊天窗口,以及作为背景的视频播放应用程序b的视频窗口,可以理解的,两个应用程序的图像需要同时显示;那么,可以终端设备可以根据两个图像的层次信息和位置信息,将两个应用程序的帧图像数据进行合成,将合成后的桌面图像发送给显示器进行显示。

可选地,在本发明上述实施例中,在终端设备和多个渲染设备上电启动之后,该方法还包括:多个渲染设备发送显卡信息至终端设备,其中,显卡信息至少包括:渲染设备上安装的多个显卡的标识信息,多个显卡的显卡状态,以及渲染设备的标识信息。

在一种可选的实施例中,终端设备和渲染设备上电启动后,由于每个渲染设备上安装多个显卡,同时有多个渲染设备会主动给终端设备发送显卡信息,主要包括多个显卡的标识信息,可以是显卡的编号;多个显卡状态,例如:显卡的显存大小、显卡的占比率;多个渲染设备的标识信息,可以是渲染设备的标号。例如,终端设备与渲染设备1和渲染设备2连接,其中,渲染设备1安装显卡a和显卡b;渲染设备2上安装显卡c和显卡d。终端设备和渲染设备上电启动后,渲染设备1和渲染设备2分别向终端设备发送显卡a、b、c、d的信息,例如,显卡信息可以采用如下格式:渲染设备标识_显卡标识_显卡状态,渲染设备1_显卡a_占比率10%;渲染设备1_显卡b_占比率12%;渲染设备1_显卡c_占比率10%;渲染设备1_显卡d_占比率0。

实施例2

根据本发明实施例,提供了另一种图像渲染方法的实施例,本实施例中具体实施方式与优选实施例与上述实施中相同或相似,在此不做赘述。

图2是根据本发明实施例的另一种图像渲染方法的流程图,如图2所示,该方法包括如下步骤:

步骤s202,终端设备获取目标应用程序发送的图像渲染请求,其中,终端设备中安装有多个应用程序;

步骤s204,终端设备确定目标应用程序对应的目标显卡,其中,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡;

步骤s206,终端设备基于图像渲染请求生成渲染指令;

步骤s208,终端设备发送渲染指令至目标显卡所在的目标渲染设备,并接收目标渲染设备返回的渲染后的图像数据,其中,不同显卡用于执行不同应用程序的渲染指令;

步骤s210,终端设备输出图像数据。

根据上述发明实施例,采用终端设备获取目标应用程序发送的图像渲染请求,终端设备中安装有多个应用程序;终端设备确定目标应用程序对应的目标显卡,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡;终端设备基于图像渲染请求生成渲染指令,终端设备发送渲染指令至目标显卡所在的目标渲染设备,并接收目标渲染设备返回的渲染后的图像数据,其中,不同显卡用于执行不同应用程序的渲染指令。容易注意到的是终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡是将多个显卡资源连接起来,实现分布式并行工作,提高图像处理性能以及工作效率的目的,从而实现了每个显卡图像渲染全部性能叠加的技术效果,进而解决了由于现有技术中多个显卡进行图像处理,导致图像处理性能不理想、效率低的技术问题。

可选地,在本发明上述实施例中,终端设备确定目标应用程序对应的目标显卡包括:终端设备判断图像渲染请求是否为目标应用程序发送的第一个图像渲染请求;如果图像渲染请求是目标应用程序发送的第一个图像渲染请求,则终端设备基于多个显卡的显卡状态,确定目标显卡,并将目标显卡与目标应用程序进行绑定;如果图像渲染请求不是目标应用程序发送的第一个图像渲染请求,则终端设备确定与目标应用程序绑定的显卡为目标显卡。

可选地,在本发明上述实施例中,显卡状态包括:占用率,其中,终端设备基于多个显卡的显卡状态,确定目标显卡包括:终端设备基于多个显卡的占用率,确定占用率最低的第一显卡;终端设备确定第一显卡为目标显卡。

可选地,在本发明上述实施例中,在第一显卡为多个的情况下,该方法还包括:终端设备获取第一显卡的优先级;终端设备基于第一显卡的优先级,确定优先级最高的第二显卡;终端设备确定第二显卡为目标显卡。

可选地,在本发明上述实施例中,在目标应用程序为多个的情况下,目标显卡和图像数据均为多个,其中,终端设备输出图像数据包括:终端设备将接收到的多个图像数据进行合成;终端设备输出合成后的图像数据。

可选地,在本发明上述实施例中,在终端设备和多个渲染设备上电启动之后,该方法还包括:多个渲染设备发送显卡信息至终端设备,其中,显卡信息至少包括:渲染设备上安装的多个显卡的标识信息,多个显卡的显卡状态,以及渲染设备的标识信息。

实施例3

根据本发明实施例,提供了另一种图像渲染方法的实施例,本实施例中具体实施方式与优选实施例与上述实施中相同或相似,在此不做赘述。

图3是根据本发明实施例的另一种图像渲染方法的流程图,如图3所示,该方法包括如下步骤:

步骤s302,目标渲染设备获取终端设备发送的渲染指令,其中,终端设备与多个渲染设备连接,每个渲染设备上安装有多个显卡,终端设备中安装有多个应用程序,渲染指令由终端设备基于目标应用程序发送的图像渲染请求生成;

步骤s304,目标渲染设备发送渲染指令至目标显卡,其中,不同显卡用于执行不同应用程序的渲染指令,目标显卡与目标应用程序对应;

步骤s306,目标渲染设备获取渲染后的图像数据;

步骤s308,目标渲染设备发送图像数据至终端设备,其中,终端设备还用于输出图像数据。

可选地,在本发明上述实施例中,在目标渲染设备获取终端设备发送的渲染指令之后,所该方法包括:目标渲染设备基于渲染指令,确定目标显卡对应的目标渲染子任务,其中,渲染指令至少包括:目标显卡的标识信息;目标渲染设备下发渲染指令至目标显卡,其中,目标显卡用于执行渲染指令;在目标渲染子任务完成一帧图像渲染之后,目标渲染设备获取图像数据。

可选地,在本发明上述实施例中,渲染指令还包括:目标应用程序的标识信息,其中,目标渲染设备基于渲染指令,确定目标显卡对应的目标渲染子任务包括:目标渲染设备基于目标应用程序的标识信息,判断渲染指令是否为目标应用程序发送的第一个渲染指令;如果渲染指令是目标应用程序发送的第一个渲染指令,则目标渲染设备基于渲染指令,建立目标渲染子任务,并将目标渲染子任务与目标显卡进行绑定;如果渲染指令不是目标应用程序发送的第一个渲染指令,则终端设备确定与目标显卡绑定的渲染子任务为目标渲染子任务。

实施例4

根据本发明实施例,提供了一种图像渲染系统,图4是根据本申请的实施例的一种图像渲染系统的示意图,本实施例中具体实施方式与优选实施例与上述实施中相同或相似,在此不做赘述。结合图4所示,该图像渲染系统包括:

终端设备420,安装有多个应用程序;

多个渲染设备440,每个渲染设备上安装有多个显卡;

其中终端设备可以是如图5所示的工作计算机,例如,可以是pc机、平板电脑、移动终端等,其上面安装多个应用程序,用于发送不同的图像渲染指令。渲染设备可以是如图5所示的渲染单元,每个渲染单元上安装多个显卡,用来执行多个不同的图像渲染指令。当然,如果显卡的工作能力强,还可以一个显卡处理多个不同渲染指令。

终端设备与多个渲染设备可以通过有线直接连接、也可以通过无线进行连接。例如,如图5所示,以终端设备为工作计算机为例,工作计算机可以通过万兆交换机与渲染单元1、渲染单元2和渲染单元3连接。

在一种可选的实施例中,各渲染单元向工作机上报显卡信息,显卡信息包括显卡数量和显卡状态;其中,显卡信息包括渲染单元编号,显卡状态包括显卡编号。

图6是根据本申请的实施例的一种可选的终端设备的软件模块的示意图,图7是根据本申请的实施例的一种可选的图像渲染单元硬件结构的示意图,图8是根据本申请的实施例的一种可选的图像渲染单元软件结构的示意图。下面结合如图5至图8对本发明一种优选的实施例进行详细说明。

如图6所示,运行在工作计算机上的软件模块包括:应用程序a、应用程序b、openglapihook模块、任务分发模块、网络数据收发模块、渲染管理模块、操作系统窗口管理模块、本地轻量渲染模块、图像输出模块。如图7所示,渲染单元可以包括:多个显卡(显卡1、2和3),cpu,内存和万兆网卡。如图8所示,运行在渲染单元中的软件模块可以包括:网络数据收发模块,渲染服务模块,openglapi模块,显卡驱动等模块。

对于上述工作计算机和渲染单元,其图像渲染处理流程如下:

步骤1,各渲染单元向工作计算机上报显卡信息,显卡信息包括显卡数量和显卡状态;其中,显卡信息包括渲染单元编号,显卡状态包括显卡编号。

在本步骤中,首先,工作计算机和渲染单元上电启动,各渲染单元的渲染服务模块和工作机的渲染管理模块建立链接。

然后,各渲染单元的渲染服务模块,向工作计算机的渲染管理模块上报各自的显卡数量以及显卡状态,并将检测到的显卡状态上报给工作计算机的渲染管理模块。

需要说明的是,渲染单元的渲染服务模块通过显卡驱动模块,实时监测每块显卡的显卡状态,显卡状态包括显存,以及显卡运算单元的占用率。

为了区分渲染单元以及渲染单元中的各显卡,每个渲染单元均有编号,可以用数字0、1、2…n表示,此外,每个显卡也均设置有编号,用一连串数字来标识,比如,0-1,0-2,0-3,其中前面的数字是渲染单元的编号,后面的数字代表显卡在本渲染单元内部的编号。

步骤2,工作计算机中的应用程序a向openglapihook模块下发图像渲染请求;openglapihook模块根据接收到图像渲染请求,生成渲染指令,并将渲染指令提交给任务分发模块。

步骤3,工作计算机中的任务分发模块,向渲染管理模块发送获取请求,获取请求用于获取显卡运算单元的占用率最低的显卡的显卡编号。

可以理解的,为了使渲染任务分配的较为平均,避免出现部分显卡的负担过重,部分显卡处于空闲状态,因此,任务分发模块期望将渲染任务发送给占用率最低的显卡来执行。

步骤4,渲染管理模块在接收到获取请求之后,根据接收到的各渲染单元的显卡信息,确定显卡运算单元的占用率最低的一个显卡的显卡编号,以及该显卡所在的渲染单元的渲染单元编号;将显卡编号和渲染单元编号发送给任务分发模块。

在本步骤中,由于渲染管理模块在步骤1中获取了各渲染单元中的各显卡的显卡信息,可以根据显卡信息中的显卡状态,确定多个显卡中占用率最低的一个显卡,并将该显卡的显卡编号,以及该显卡所在的渲染单元的渲染单元编号发送给任务分发模块,以便任务分发模块能够将渲染指令发送给该显卡。

在具体实施中,还可以根据实际情况,设置显卡的优先级,具体的,显卡a和显卡b的优先级较高,显卡c和显卡d的优先级较低,显卡a和显卡c的占用率均为10%,那么,可以在占用率的基础上结合优先级,将显卡a的显卡编号和显卡a所在的渲染单元的渲染单元编号发送给任务分发模块。

步骤5,任务分发模块在接收到显卡编号和渲染单元编号之后,将渲染指令发送给渲染单元编号对应的渲染单元n,渲染指令中包括显卡编号和下发渲染指令的应用程序的标识符。

在本步骤中,任务分发模块可以通过网络数据收发模块将渲染指令发送给渲染单元编号对应的渲染单元,为了使渲染单元确定待执行该渲染指令的显卡,以及判断是否需要新建渲染子任务,渲染指令中包括显卡编号和下发渲染指令的应用程序的标识符。

步骤6,渲染单元n的渲染服务模块在通过网络数据收发模块接收到渲染指令之后,判断该渲染指令是否为应用程序的标识符对应的应用程序下发的第一条渲染指令,若为是,则执行步骤7,若为否,则确定与该应用程序的标识符对应的应用程序所绑定的渲染子任务r,执行步骤8。

可以理解的,若生成该渲染指令的应用程序,在当前渲染指令之前,从未向渲染单元n下发过渲染指令,那么,在执行渲染指令之前,可以先建立一个渲染子任务,渲染子任务可以基于显卡编号对应的显卡,执行渲染指令。

需要说明的是,在本发明中,一个应用程序的渲染指令可以由一个显卡来执行,因此,可以建立一个渲染子任务与一个应用程序的对应关系,进而将一个渲染子任务与一个显卡进行绑定。

可以理解的,通过渲染子任务,应用程序与显卡建立了绑定关系。性能较强的显卡可以绑定多个应用程序,性能较差的显卡可以只绑定一个应用程序。

步骤7,渲染单元n的渲染服务模块建立该渲染指令对应的渲染子任务r;将显卡编号对应的显卡m与该渲染子任务r绑定;通过调用openglapi,将渲染指令下发给显卡m,以使渲染子任务r基于显卡m,执行该渲染指令。

需要说明的是,后续应用程序a所有的渲染指令均由显卡m完成。

步骤8,当渲染子任务r完成一帧渲染后,通过显卡驱动模块将该帧图像数据取出;经过无损压缩后,通过网络数据收发模块发送给工作计算机的渲染管理模块。

步骤9,工作计算机的渲染管理模块通过网络数据收发模块收到该帧图像数据之后,将该帧图像数据发送给操作系统窗口管理模块。

需要说明的是,通常显示器的桌面图像中,可能包括多个应用程序的显示窗口,因此,需要由操作系统窗口管理模块,将多个应用程序的显示窗口进行合成,生成桌面图像。

步骤10,操作系统窗口管理模块根据用户的操作,基于本地轻量渲染模块,将所有的应用程序的帧图像数据进行合成并发送给图像输出模块;由图像输出模块进行显示。

其中,图像输出模块可以是显示器。用户的操作可以理解为用户通过键鼠事件,或者触摸事件等操作事件,对工作机上运行的各应用程序的操作。

需要说明的是,轻量渲染是指普通的窗口合成,可以理解为2d渲染,没有大量的数学计算,利用集成显卡或者cpu就可以完成。

根据本发明实施例,提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行上述实施例中的所有图像渲染的方法。

根据本发明实施例,提供了一种处理器,其特征在于,处理器用于运行程序,其中,程序运行时执行上述所有实施例中的图像渲染的方法。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

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

以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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