发明内容
本申请实施例提供一种双***的图形处理方法、装置及终端,以解决现有技术中双***的图形处理的鲁棒性差的问题。
本申请的第一方面提供一种双***的图形处理方法,所述图形处理方法应用于终端,所述终端包括第一操作***和第二操作***,所述第一操作***与所述第二操作***之间相互独立,所述方法包括:
获取所述第一操作***中的针对第一待显示界面的第一图形处理请求;
基于所述第一图形处理请求调用所述第一操作***中的第一图形库接口;
控制所述第一图形库接口通过适配库调用经过对所述第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库;
通过所述第一图形处理函数库对所述第一待显示界面进行图形化处理。
在一种可选的实施方式中,所述通过所述第一图形处理函数库对所述第一待显示界面进行图形化处理,包括:
通过所述第一图形处理函数库调用所述终端上的GPU驱动程序;
控制所述GPU驱动程序运行所述第一图形处理函数库中的图形处理函数对所述第一待显示界面进行图形化处理。
在一种可选的实施方式中,在所述通过所述第一图形处理函数库对所述第一待显示界面进行图形化处理之后,还包括:
获取对所述第一待显示界面进行图形化处理后得到的第一显示界面数据;
将所述第一显示界面数据发送给所述第一操作***中的所述适配库;
将所述第一显示界面数据通过所述适配库中的第一图形显示接口,在所述终端上显示。
在一种可选的实施方式中,所述方法还包括:
获取所述第二操作***中针对第二待显示界面的第二图形处理请求基于所述第二图形处理请求调用所述第二操作***中的第二图形库接口;
控制所述第二图形库接口调用第二图形处理函数库;
通过所述第二图形处理函数库对所述第二待显示界面进行图形化处理。
在一种可选的实施方式中,所述通过所述第二图形处理函数库对所述第二待显示界面进行图形化处理,包括:
通过所述第二图形处理函数库调用所述终端上的GPU驱动程序,其中,所述第一操作***与所述第二操作***共用所述GPU驱动程序,并且在使用所述GPU驱动程序时,相互独立;
控制所述GPU驱动程序运行所述第二图形处理函数库中的图形处理函数对所述第二待显示界面进行图形化处理。
在一种可选的实施方式中,在所述通过所述第二图形处理函数库对所述第二待显示界面进行图形化处理之后,包括:
获取对所述第二待显示界面进行图形化处理后得到的第二显示界面数据;
将所述第二显示界面数据发送给所述第二操作***中的所述第二图形处理函数库;
将所述第二显示界面数据通过所述第二图形处理函数库中的第二图形显示接口,在所述终端上显示。
在一种可选的实施方式中,所述终端为车机,所述第一操作***为仪表***,所述第二操作***为安卓***,在所述获取所述第一操作***中的第一图形处理请求之前,所述方法还包括:
将所述车机的主操作***通过第一程序启动;
在所述主操作***中启动第一容器和第二容器,所述第一容器中运行所述仪表***,所述第二容器中运行所述安卓***。
本申请的第二方面提供一种双***的图形处理装置,所述图形处理装置应用于终端,所述终端包括第一操作***和第二操作***,所述第一操作***与所述第二操作***之间相互独立,所述图形处理装置包括:
获取模块,用于获取所述第一操作***中的针对第一待显示界面的第一图形处理请求;
调用模块,用于基于所述第一图形处理请求调用所述第一操作***中的第一图形库接口;控制所述第一图形库接口通过适配库调用经过对所述第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库;
处理模块,用于通过所述第一图形处理函数库对所述第一待显示界面进行图形化处理。
在一种可选的实施方式中,所述处理模块,具体用于通过所述第一图形处理函数库调用所述终端上的GPU驱动程序;
控制所述GPU驱动程序运行所述第一图形处理函数库中的图形处理函数对所述第一待显示界面进行图形化处理。
在一种可选的实施方式中,所述获取模块还用于获取对所述第一待显示界面进行图形化处理后得到的第一显示界面数据;
所述处理模块,还用于将所述第一显示界面数据发送给所述第一操作***中的所述适配库;
将所述第一显示界面数据通过所述适配库中的第一图形显示接口,在所述终端上显示。
在一种可选的实施方式中,所述获取模块,还用于获取所述第二操作***中针对第二待显示界面的第二图形处理请求;
所述调用模块,还用于基于所述第二图形处理请求调用所述第二操作***中的第二图形库接口;控制所述第二图形库接口调用第二图形处理函数库;
所述处理模块,还用于通过所述第二图形处理函数库对所述第二待显示界面进行图形化处理。
在一种可选的实施方式中,所述处理模块,具体用于通过所述第二图形处理函数库调用所述终端上的GPU驱动程序,其中,所述第一操作***与所述第二操作***共用所述GPU驱动程序,并且在使用所述GPU驱动程序时,相互独立;
控制所述GPU驱动程序运行所述第二图形处理函数库中的图形处理函数对所述第二待显示界面进行图形化处理。
在一种可选的实施方式中,所述获取模块,还用于获取对所述第二待显示界面进行图形化处理后得到的第二显示界面数据;
所述处理模块,还用于将所述第二显示界面数据发送给所述第二操作***中的所述第二图形处理函数库;将所述第二显示界面数据通过所述第二图形处理函数库中的第二图形显示接口,在所述终端上显示。
在一种可选的实施方式中,所述终端为车机,所述第一操作***为仪表***,所述第二操作***为安卓***,所述处理模块,具体用于将所述车机的主操作***通过第一程序启动;在所述主操作***中启动第一容器和第二容器,所述第一容器中运行所述仪表***,所述第二容器中运行所述安卓***。
本申请的第三方面提供一种终端,所述终端包括第一操作***和第二操作***,所述第一操作***与所述第二操作***之间相互独立;
所述终端还包括:处理器与存储器;
所述存储器用于存储计算机程序;
所述处理器用于调用并运行所述存储器中存储的计算机程序,执行如第一方面所述的方法。
本申请的第四方面提供一种计算机可读存储介质,用于存储计算机程序,所述计算机程序使得计算机执行如第一方面所述的方法。
本申请实施例提供双***的图形处理方法、装置及终端,图形处理方法应用于终端,终端包括第一操作***和第二操作***,第一操作***与第二操作***之间相互独立,图形处理方法包括:获取第一操作***中的针对第一待显示界面的第一图形处理请求;基于第一图形处理请求调用第一操作***中的第一图形库接口;控制第一图形库接口通过适配库调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库;通过第一图形处理函数库对第一待显示界面进行图形化处理。与现有技术相比,本申请在第一操作***通过适配库的接口调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库,实现在第一操作***中使用第一图形处理函数库的目的,以及通过第一图形处理函数库去调用GPU驱动程序,从而克服了由于第一操作***和第二操作***的调用格式不同,造成的双***的图形处理的鲁棒性差的问题,进而提高了双***的图形处理的鲁棒性。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着芯片技术的发展,逐渐出现将两个***集成在同一个芯片上使用的需求,目前市场上出现将仪表***和娱乐***集成在一颗***级芯片(System on Chip,SoC)上的技术。现有的双***的双***的图形处理方法主要包括在应用程序开发框架(QT)中动态的调用安卓(ANDROID)的图形处理器(Graphics Processing Unit,GPU)的硬件接口,去驱动GPU进行相应的图形渲染;以及通过将QT操作***和ANDROID***的硬件隔离的方式,将仪表***和娱乐***的硬件隔离开去实现仪表显示和娱乐的功能。
但是,仪表***的显示效果越来越复杂并且需要有3D渲染效果,所以需要用到硬件GPU去做图形渲染。通过现有的实现双***的方法实现在仪表***通过GPU去做图形渲染时,通过动态的调用GPU硬件接口的方式时,由于QT和GPU的调用格式不同,会导致调用失败的情况;以及通过硬件隔离的方式时,会导致设备的运行效率降低的情况发生。因此,现有的方案中存在双***的图形处理的鲁棒性差的问题。
为解决上述问题,本申请提供了一种双***的图形处理方法、装置及终端,通过在第一操作***通过适配库的接口调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库,实现在第一操作***中使用第一图形处理函数库的目的,以及通过第一图形处理函数库去调用GPU驱动程序,从而克服了由于第一操作***和第二操作***的调用格式不同,造成的双***的图形处理的鲁棒性差的问题,进而提高了双***的图形处理的鲁棒性。
首先对本申请所涉及的名词进行解释:
LCX:是Linux Container缩写,是指Linux容器技术。
Docker:是指一种Linux容器技术。容器有效的将由单个操作***管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求。每个容器内运行一个应用,不同的容器之间相互隔离,容器之间也可以建立通信机制。
虚拟化:是指一种资源管理技术,是将计算机的各种实体资源,如服务器,网络,内存等抽象、转化后呈现出来,使用户以更好的方式来应用这些资源。虚拟化目标往往是为了在同一个主机上运行多个***或者应用,从而提高资源的利用率,降低成本,方便管理及容错容灾。
操作***级的虚拟化:是指内核通过创建多个虚拟的操作***实例,例如内核和库,来隔离不同的进程。Docker以及其他容器技术就属于此范畴。
传统虚拟化方式:是指在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作***层。而Docker容器是在操作***层面上实现虚拟化,直接复用本地主机操作***,更加轻量。Docker容器是在操作***层面上实现虚拟化,直接复用本地主机操作***,更加轻量。
容器:是指一种类似Linux***的环境,用于运行和隔离应用。容器从镜像启动的时候,Docker会在镜像的最上一层创建一个可写层,镜像本身是只读的,保持不变。
下面对本申请的应用场景进行说明。
图1为本申请实施例提供的一种双***的图形处理方法的应用场景示意图。如图1所示,包括:终端设备001和处理设备002,其中,处理设备002设置在终端设备001上,以使终端设备001可以实现上述双***的图形处理方法,示例性的,处理设备002是一种芯片设备。在上述双***的图形处理方法的应用场景中,处理设备002获取终端设备001发送的图形处理请求,处理设备002根据图形处理请求调用图形处理函数库进行图形化处理,获得显示界面数据,在终端设备001上显示。
可选的,终端设备001上配置有显示模块,即终端设备001作为显示设备。处理设备002获取终端设备001发送的图形处理请求,处理设备002根据图形处理请求调用图形处理函数库进行图像化处理,获得显示界面数据,并在终端设备001上显示。
其中,终端设备可以是带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、手机(mobile phone)、平板电脑(pad)、工业控制(industrial control)中的无线终端、远程手术(remote medicalsurgery)中的无线终端、智能电网(smart grid)中的无线终端、智慧家庭(smart home)中的无线终端等。
本申请实施例中,用于实现双***的图形处理功能的装置可以是处理设备,也可以是能够支持实现该功能的装置,例如芯片***,该装置可以被安装在处理设备或者终端设备中。本申请实施例中,芯片***可以由芯片构成,也可以包括芯片和其他分立器件。
需要说明的是,本申请技术方案的应用场景可以是图1中的场景,但并不限于此,还可以应用于其他需要进行双***的图形处理的场景中。
可以理解,上述双***的图形处理方法可以通过本申请实施例提供的双***的图形处理装置实现,双***的图形处理装置可以是某个设备的部分或全部,例如为上述处理设备或者终端设备的芯片。
下面以集成或安装有相关执行代码的双***的图形处理装置为例,以具体地实施例对本申请实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本申请实施例提供的一种双***的图形处理方法的流程示意图,本实施例的执行主体是终端设备,涉及的是双***的图形处理方法的具体过程。如图2所示,该方法包括:
S101、获取第一操作***中的针对第一待显示界面的第一图形处理请求。
其中,第一图形处理请求为用户在终端设备中的第一操作***中触发的,示例性的,处理设备接收用户点击第一操作***中的第一待显示界面上的控件而触发的第一图形处理请求。
其中,第一待显示界面为终端设备上的第一操作***中的一个界面,示例性的,可以为车机中的仪表***中的仪表盘界面。
可选的,第一待显示界面为终端设备上第一操作***中的显示界面,第一待显示界面上设置有多个控件,其中,部分控件用于触发第一图形处理请求。
示例性的,第一图形处理请求可以为显示当前车机***的仪表盘,其中,仪表盘中可以包括显示发动机的转速、车辆的运行速度以及显示转向灯等。
在实际的应用中,第一图形处理请求可以通过终端设备上的应用程序(Application,App)触发。
在本申请实施例中对于第一操作***的类型不做限制,示例性的,第一操作***可以QT***,QT***一种应用程序开发框架,主要用来图形用户界面的***,在实际的应用中可以使用QT***进行仪表***的开发。在具体的应用中第一操作***的类型可以根据实际情况设置。
S102、基于第一图形处理请求调用第一操作***中的第一图形库接口。
其中,在第一操作***中的第一图形处理请求需要使用第一操作***中的第一图形库接口去做图形渲染。
在本申请实施例中第一图形库接口的版本是第一操作***的版本,示例性的,第一操作***是QT***,则第一图形库接口的版本为标准的Linux版本。
在实际的应用中,在获取到第一图形处理请求后,则通过调用第一图形库接口实现图形处理,其中,第一图形库接口可以为开放图形库(Open Graphics Library,OpenGL),OpenGL是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(ApplicationProgramming Interface,API)。OpenGL由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象。
S103、控制第一图形库接口通过适配库调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库。
其中,第二操作***为安卓(ANDROID)***。
本申请实施例中,第二图形处理函数库是在ANDROID***中进行图形处理的函数库,在ANDROID***可以通过相应的接口调用第二图形处理函数库进行图形处理,但是在QT***中,因为调用格式和链接格式的不同,导致QT***不可以调用第二图形处理函数库去进行图形处理。
在本申请实施例中第一图形处理函数库和第二图形处理函数库的源代码相同。可选的,在第一操作***中放置第一图形处理函数库,其中,第一图形处理函数库是经过对第二操作***中的第二图形处理函数库复制得到的。
在本申请实施中适配库的作用是解决QT***和ANDROID***的兼容性的问题,以让QT***可以使用ANDROID***中的图形处理函数库,进行图形处理。
可以理解的是,在第一操作***中设置了独立的第一图形处理函数库,但是,第一图形处理函数库的ANDROID版本的,在QT***中无法直接调用第一图形处理函数库进行图形处理。因此,在本申请实施例中为了在第一操作***中使用第一图形处理函数库进行图形处理,通过适配库去调用第一图形处理函数库进行图形处理。
其中,适配库可以为Linux***中的Libhybris,在Libhybris中封装所有ANDROID的接口。Libhybris是一个三方的开源函数接口,主要功能是为了Linux***环境下调用ANDROID***环境下的库函数,做了一个转接功能,可以在Linux环境下使用ANDROID环境下的函数功能。
具体的,在QT***中,OpenGL通过Libhybris调用存储在QT***中的第一图形处理函数库,从而实现在QT***中使用ANDROID***中的图形处理函数库,以及可以在同一个设备中同时设置QT***和ANDROID***,并且在进行图形处理时,QT***和ANDROID***可以使用相同的ANDROID***环境下的GPU驱动程序,使GPU驱动程序驱动GPU硬件进行图形处理。
需要知道的是,本申请中第一操作***包括第一图形处理函数库,第一图形处理函数库用于在第一操作***中对第一待显示界面进行图形处理。
具体的,在本申请实施例中终端设备中包括QT***和ANDROID***两个***,并且QT***需要使用ANDROID***中的图形处理函数库去进行图形化处理,为了实现QT***使用ANDROID***中的图形处理函数库的目的,本申请中通过是适配库的接口去使用ANDROID***中的图形处理函数库,但是在本申请中,QT***和ANDROID***中独立包括图形处理函数库,两个图形处理函数库的源代码相同,从而QT***和ANDROID***在使用图形处理函数库时不会对对方造成干扰。
具体的,在第一操作***中在适配库中,会把第一操作***调用过来的OpenGL接口,通过第一函数的方式打开,并调用第一图形处理函数库的接口,从而实现具体的函数功能。
在本申请实施例中对于第一函数的形式不做限制,示例性的,可以为dlopen。
其中,第一图形处理函数库和第二图形处理函数库中封装有图形化处理需要的函数,可以为动态链接库(libEGL),其中,EGL是指渲染API和原生窗口***之间的接口;LibEGL是EGL接口打包函数,实现的是EGL的功能。
S104、通过第一图形处理函数库对第一待显示界面进行图形化处理。
其中,对第一待显示界面根据图形数据进行图形化处理,图形数据为进行图形化处理需要的终端设备中的数据,示例性的,若终端设备为车辆,则图形数据可以为用于显示发动机的转速和车辆的速度等的图像或图片数据。
具体的,处理设备调用到第一图形处理函数库后,对第一待显示界面根据图形数据进行图形化处理,图形化处理例如为2D或者3D等图形渲染处理。
示例性的,对显示发动机的转速和车辆的速度等的图形数据通过第一图形处理函数库进行处理后,获得车辆的仪表盘显示需要的显示数据。
可选的,处理设备获得显示数据后,将显示数据在显示设备上显示。本申请实施例中对于显示设备不做限制,示例性的,显示设备可以为终端设备上进行显示的设备,也可以为与处理设备连接的显示设备。
本申请实施例提供双***的图形处理方法、装置及终端,图形处理方法应用于终端,终端包括第一操作***和第二操作***,第一操作***与第二操作***之间相互独立,图形处理方法包括:获取第一操作***中的针对第一待显示界面的第一图形处理请求;基于第一图形处理请求调用第一操作***中的第一图形库接口;控制第一图形库接口通过适配库调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库;通过第一图形处理函数库对第一待显示界面进行图形化处理。与现有技术相比,本申请在第一操作***通过适配库的接口调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库,实现在第一操作***中使用第一图形处理函数库的目的,以及通过第一图形处理函数库去调用GPU驱动程序,从而克服了由于第一操作***和第二操作***的调用格式不同,造成的双***的图形处理的鲁棒性差的问题,进而提高了双***的图形处理的鲁棒性。
在上述实施例的基础上,下面对于本申请中提供的双***的处理设备的双***的图形处理方法进行进一步的说明。图3为本申请实施例提供的另一种双***的图形处理方法的流程示意图,如图3所示,该方法包括:
S201、获取第一操作***中的针对第一待显示界面的第一图形处理请求。
S202、基于第一图形处理请求调用第一操作***中的第一图形库接口。
S203、控制第一图形库接口通过适配库调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库。
S201-S203的技术名词、技术效果、技术特征,以及可选实施方式,可参照图2所示的S101-103理解,对于重复的内容,在此不再累述。
S204、通过第一图形处理函数库对第一待显示界面进行图形化处理。
本申请实施例中对于图形化处理的方式不做限制,示例性的,可以通过终端设备中的GPU驱动程序进行图形化处理。
可选的,终端设备通过第一图形处理函数库调用终端上的GPU驱动程序;控制GPU驱动程序运行第一图形处理函数库中的图形处理函数对第一待显示界面进行图形化处理。
具体的,终端设备可以通过第一图形处理函数库调用GPU的硬件接口,控制GPU驱动程序驱动GPU进行图形化处理。
在本申请实施例中使用实时操作***(Kernel)驱动的方式驱动GPU的硬件进行图形化处理,其中,实时操作***是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理***做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作***。
可以理解的是,因为Kernel驱动对GPU的硬件操作是多线程管理的方式,所以QT***和ANDROID***在使用GPU资源的时候,是相互独立的。具体的,第一操作***与第二操作***共用GPU驱动程序,并且第一操作***与第二操作***在使用GPU驱动程序时,相互独立。
进一步的,在本申请实施例中对第一待显示界面进行图形化处理之后,终端设备获取对第一待显示界面进行图形化处理后得到的第一显示界面数据;将第一显示界面数据发送给第一操作***中的适配库;将第一显示界面数据通过适配库中的第一图形显示接口,在终端上显示。
下面对于将第一显示界面数据通过适配库中的第一图形显示接口,在终端上显示的情况进行说明。
对于第一操作***通过适配库中的图形显示功能将第一显示界面数据在显示设备上进行显示。示例性的,根据第一显示界面数据和第一操作***的适配库中第一图形显示接口生成第一显示请求,第一显示请求用于请求显示设备显示第一显示界面数据。其中,图形显示接口可以为适配库中的Display接口,通过Display接口将第一显示界面数据发送给显示设备进行显示。
本申请实施例中只是对双***中的QT***进行了改进,对于ANDROID***的工作流程并未发生改变。
可选的,终端设备获取第二操作***中针对第二待显示界面的第二图形处理请求;基于第二图形处理请求调用第二操作***中的第二图形库接口;控制第二图形库接口调用第二图形处理函数库;通过第二图形处理函数库对第二待显示界面进行图形化处理。
其中,第二操作***为安卓***。
在本申请实施例中对于通过第二图形处理函数库(libEGL)对第二待显示界面进行图形化处理的方式不做限制,示例性的,通过第二图形处理函数库调用终端上的GPU驱动程序,其中,第一操作***与第二操作***共用GPU驱动程序,并且在使用GPU驱动程序时,相互独立;控制GPU驱动程序运行第二图形处理函数库中的图形处理函数对第二待显示界面进行图形化处理。
进一步的,终端设备在通过第二图形处理函数库对第二待显示界面进行图形化处理后,获取对第二待显示界面进行图形化处理后得到的第二显示界面数据;将第二显示界面数据发送给第二操作***中的第二图形处理函数库;将第二显示界面数据通过第二图形处理函数库中的第二图形显示接口,在终端上显示。
下面对于将第二显示界面数据通过第二图形处理函数库中的第二图形显示接口,在终端上显示的情况进行说明。
在本申请实施例中对于ANDROID***通过ANDROID***的标准流程进行显示,示例性的,根据第二显示界面数据和第二操作***的第二图形处理函数库中的第二图形显示接口生成第二显示请求,第二显示请求用于请求显示设备显示第二显示界面数据。其中,在第二图形处理函数库中有用于图形显示的图形显示接口,示例性的,通过Surfaceflinger的接口将第二显示界面数据在显示设备上进行显示,其中,Surfaceflinger的作用是接收多个来源的图形显示数据,将他们合成,然后发送到显示设备。
在本申请实施例中终端设备可以为车机,第一操作***为仪表***,第二操作***为安卓***,终端设备在获取第一操作***中的第一图形处理请求之前,需要将车机的主操作***通过第一程序(init)启动;在主操作***中启动第一容器和第二容器,第一容器中运行仪表***,第二容器中运行安卓***。
其中,第一程序可以为init程序。
本申请实施例提供双***的图形处理方法、装置及终端,图形处理方法应用于终端,终端包括第一操作***和第二操作***,第一操作***与第二操作***之间相互独立,图形处理方法包括:获取第一操作***中的针对第一待显示界面的第一图形处理请求;基于第一图形处理请求调用第一操作***中的第一图形库接口;控制第一图形库接口通过适配库调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库;通过第一图形处理函数库对第一待显示界面进行图形化处理。与现有技术相比,本申请在第一操作***通过适配库的接口调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库,实现在第一操作***中使用第一图形处理函数库的目的,以及通过第一图形处理函数库去调用GPU驱动程序,从而克服了由于第一操作***和第二操作***的调用格式不同,造成的双***的图形处理的鲁棒性差的问题,进而提高了双***的图形处理的鲁棒性。
在上述实施例的基础上,下面将对申请实施例提供的处理设备中双***的结构进行说明。图4为本申请实施例提供的一种终端设备中双***的结构示意图,如图4所示,在终端设备中包括:主操作***301、驱动设备302、第一操作***303和第二操作***303。在本申请中根据LCX技术在主操作***301中设置第一操作***303和第二操作***303,第一操作***303和第二操作***303相互独立,在第一操作***303和第二操作***303分别存储有图形处理函数库,第一操作***303和第二操作***303通过图形处理函数库去调用驱动设备302中的GPU的硬件设备,通过GPU驱动程序驱动GPU进行图形处理。
具体的,通过终端设备实现双***的图形处理方法中,对于第一操作***303,首先用户通过点击应用程序,触发图形处理请求,然后通过图形处理请求调用开放图形库的接口,之后,适配库通过开放图形库的接口功能去调用图形处理函数库中的接口,进行函数封装成库函数,实现具体的函数功能,然后通过库函数去调用图形处理器的硬件接口,实现图形处理,之后将得到的第一显示界面数据返回到适配库中,通过适配库中图形显示接口生成第一显示请求,第一显示请求用于请求显示设备显示第一显示界面数据。
其中,开放图形库可以为OpenGL;适配库可以为libhybris,图形处理函数库可以为libEGL,库函数可以为libEGL.mail.so。
进一步的,通过终端设备实现双***的图形处理方法中,对于第二操作***304,首先用户通过点击应用程序,触发图形处理请求,然后通过图形处理请求调用开放图形库的接口,之后,开放图形库去调用图形处理函数库中的接口,进行函数封装成库函数,实现具体的函数功能,然后通过库函数去调用图形处理器的硬件接口,实现图形处理,之后将得到的第二显示界面数据返回到图形处理函数库中,通过图形处理函数库中图形显示接口生成第二显示请求,第二显示请求用于请求显示设备显示第二显示界面数据。
可以理解的是,首先,主操作***301的驱动设备302启动完毕后,会先运行主操作***301中的进程程序,也就是用户层的第一个程序,在主操作***301里面启动两个LCX的容器服务,即第一操作***303和第二操作***303对应的容器,一个运行QT***,即仪表***,一个运行ANDROID***,即娱乐***;之后,QT***里会去运行QT的APP,ANDROID***里面,会运行ANDROID的APP;QT***的APP需要使用OpenGL的接口做图形渲染,就需要硬件GPU的支持,在QT***中的APP调用标准的Linux版本OpenGL的接口,这里的OpenGL的接口里面的具体实现是通过libhybris提供的接口功能。在ANDROID***中的应用程序,就常规的调用ANDROID***里面的OpenGL的接口;在libhybris里面,会把QT***调用过来的OpenGL接口打开并调用ANDROID***里面的libEGL的接口,从而实现具体的函数功能。因为ANDROID***里面的OpenGL本身就已经支持硬件,所以不存在这一步操作,通过上述步骤QT***调用过来的OpenGL的接口就可以正常访问ANDROID***里面的libEGL的接口,ANDROID***里面的就是常规的libEGL的接口,QT***和ANDROID***都可以访问libEGL_mali.so库函数。库函数主要做的是关于GPU的一些算法,以及调用GPU的硬件接口,实现具体图形处理,GPU确定程序驱动GPU硬件,进行图形计算,并把处理完的数据返回给QT***,以及ANDROID***。
可选的,架构上述双***集成在芯片上,以使芯片可以实现上述功能。
本申请实施例中对于芯片不做具体的限制,示例性的,可以为E02芯片。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供一种双***的图形处理装置,图5为本申请实施例提供的一种双***的图形处理装置的结构示意图,该双***的图形处理装置可以通过软件、硬件或者两者的结合实现,以执行上述实施例中的双***的图形处理方法。图形处理装置应用于终端,终端包括第一操作***和第二操作***,第一操作***与第二操作***之间相互独立,如图5所示,该双***的图形处理装置400包括:获取模块401、调用模块402和处理模块403。
获取模块401,用于获取第一操作***中的针对第一待显示界面的第一图形处理请求;
调用模块402,用于基于第一图形处理请求调用第一操作***中的第一图形库接口;控制第一图形库接口通过适配库调用经过对第二操作***中的第二图形处理函数库复制得到的第一图形处理函数库;
处理模块403,用于通过第一图形处理函数库对第一待显示界面进行图形化处理。
在一种可选的实施方式中,处理模块403,具体用于通过第一图形处理函数库调用终端上的GPU驱动程序;
控制GPU驱动程序运行第一图形处理函数库中的图形处理函数对第一待显示界面进行图形化处理。
在一种可选的实施方式中,获取模块401还用于获取对第一待显示界面进行图形化处理后得到的第一显示界面数据;
处理模块403,还用于将第一显示界面数据发送给第一操作***中的适配库;
将第一显示界面数据通过适配库中的第一图形显示接口,在终端上显示。
在一种可选的实施方式中,获取模块401,还用于获取第二操作***中针对第二待显示界面的第二图形处理请求;
调用模块402,还用于基于第二图形处理请求调用第二操作***中的第二图形库接口;控制第二图形库接口调用第二图形处理函数库;
处理模块403,还用于通过第二图形处理函数库对第二待显示界面进行图形化处理。
在一种可选的实施方式中,处理模块403,具体用于通过第二图形处理函数库调用终端上的GPU驱动程序,其中,第一操作***与第二操作***共用GPU驱动程序,并且在使用GPU驱动程序时,相互独立;
控制GPU驱动程序运行第二图形处理函数库中的图形处理函数对第二待显示界面进行图形化处理。
在一种可选的实施方式中,获取模块401,还用于获取对第二待显示界面进行图形化处理后得到的第二显示界面数据;
处理模块403,还用于将第二显示界面数据发送给第二操作***中的第二图形处理函数库;将第二显示界面数据通过第二图形处理函数库中的第二图形显示接口,在终端上显示。
在一种可选的实施方式中,终端为车机,第一操作***为仪表***,第二操作***为安卓***,处理模块403,具体用于将车机的主操作***通过第一程序启动;在主操作***中启动第一容器和第二容器,第一容器中运行仪表***,第二容器中运行安卓***。
需要说明的,本申请实施例提供的双***的图形处理装置,可用于执行上述任意实施例所提供的方法,具体实现方式和技术效果类似,这里不再进行赘述。
图6为本申请实施例提供的一种终端的结构示意图。如图6所示,该终端500可以包括:至少一个处理器501和存储器502。图6示出的是以一个处理器为例的终端。
存储器502,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。
存储器502可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器501用于执行存储器502存储的计算机执行指令,以实现上述双***的图形处理方法;
其中,处理器501可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
可选的,在具体实现上,如果通信接口、存储器502和处理器501独立实现,则通信接口、存储器502和处理器501可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口、存储器502和处理器501集成在一块芯片上实现,则通信接口、存储器502和处理器501可以通过内部接口完成通信。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序信息,程序信息用于上述双***的图形处理方法。
本申请实施例还提供一种程序,该程序在被处理器执行时用于执行以上方法实施例提供的双***的图形处理方法。
本申请实施例还提供一种程序产品,例如计算机可读存储介质,该程序产品中存储有指令,当其在计算机上运行时,使得计算机执行上述方法实施例提供的双***的图形处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。