CN113051032A - 应用画面处理方法、装置和系统 - Google Patents
应用画面处理方法、装置和系统 Download PDFInfo
- Publication number
- CN113051032A CN113051032A CN202110310858.8A CN202110310858A CN113051032A CN 113051032 A CN113051032 A CN 113051032A CN 202110310858 A CN202110310858 A CN 202110310858A CN 113051032 A CN113051032 A CN 113051032A
- Authority
- CN
- China
- Prior art keywords
- rendering
- application
- session
- screen
- instruction stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Abstract
本发明公开了一种应用画面处理方法、装置和系统。其中,该应用画面处理系统包括:预定义图像处理器和终端会话管理模块,预定义图像处理器包括前端和后端,其中,预定义图像处理器的前端,用于发送的封装后的渲染指令流;预定义图像处理器的后端,用于接收封装后的渲染指令流,依据封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;终端会话管理模块,用于从离屏渲染会话对应的离屏渲染缓冲区采集完成离屏渲染的应用画面,并分发至终端。本发明解决了相关技术中虚拟机的应用画面分发容易造成浪费服务器的物理资源或者成本较高的技术问题。
Description
技术领域
本发明涉及虚拟机技术领域,具体而言,涉及一种应用画面处理方法、装置和系统。
背景技术
基于服务器+零终端的云桌面应用越来越广泛。如图1所示,一般在用户端需要多少路输出,就需要在服务器端启动多少路虚拟机,即一一对应的关系。
每一路虚拟机都要占用相应的服务器配置。比如日常桌面办公,配置4核CPU+4GB内存。在有些特定场合,主要用于输出展示,比如一路播放视频,一路展示幻灯片,一路循环播放静态图片。如果采用如图1所示的架构,就需要配置三路虚拟机,服务器的CPU和内存配置需求也对应增加,对服务器的物理资源造成比较大的浪费。
针对上述问题,也有采用另一种方案,如图2所示。在客户机操作系统中,以应用为单位进行分发。这种方案只需要一路虚拟机,就可以对应多路显示端,节省了服务器资源。
但这种场景,只适用于轻量级应用。如果目标应用需要使用显卡做3D渲染,则服务器端就需要配置物理显卡。不管是显卡直通,还是类似Nvidia/AMD vGPU的专用显卡虚拟化方案,成本都较为高昂。
针对上述相关技术中虚拟机的应用画面分发容易造成浪费服务器的物理资源或者成本较高的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种应用画面处理方法、装置和系统,以至少解决相关技术中虚拟机的应用画面分发容易造成浪费服务器的物理资源或者成本较高的技术问题。
根据本发明实施例的另一方面,提供了一种应用画面处理系统,包括:预定义图像处理器和终端会话管理模块,所述预定义图像处理器包括前端和后端,其中,所述预定义图像处理器的前端,用于发送的封装后的渲染指令流;所述预定义图像处理器的后端,用于接收所述封装后的渲染指令流,依据所述封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;所述终端会话管理模块,用于从所述离屏渲染会话对应的离屏渲染缓冲区采集完成离屏渲染的应用画面,并分发至终端。
可选地,所述预定义图像处理器的前端还包括:发起模块,用于虚拟机的应用调用渲染应用程序接口,发起渲染请求;创建模块,用于根据所述渲染请求为所述应用创建渲染会话;得到模块,用于按照预设封装格式封装渲染指令流以及所述渲染指令流所从属的应用和渲染会话,得到所述封装后的渲染指令流。
可选地,所述得到模块包括:标记单元,用于标记渲染指令流所从属的应用和渲染会话,其中,应用ID用于标识应用,渲染会话ID用于标识渲染会话;封装单元,用于依据所述渲染指令流所从属的应用关联的应用ID、所述渲染指令流所从属的渲染会话关联的渲染会话ID和所述渲染指令流进行封装,得到所述封装后的渲染指令流。
可选地,所述预定义图像处理器的后端包括:解封模块,用于所述预定义图像处理器的后端解封所述封装后的渲染指令流,获取应用ID、渲染会话ID、渲染指令流;判断模块,用于判断应用的渲染会话是否已经创建对应的离屏渲染会话;新建模块,用于在确定没有创建对应的离屏渲染会话的情况下,新建所述应用的渲染会话对应的离屏渲染会话。
可选地,所述系统还包括:生成模块,用于接收终端发送的接入请求,根据所述接入请求识别所述终端要启动的应用,并基于对所述应用的操作生成渲染请求。
根据本发明实施例的一个方面,还提供了一种应用画面处理方法,包括:接收封装后的渲染指令流,其中,所述封装后的渲染指令流是预定义图像处理器的前端生成的;依据所述封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;将所述离屏渲染会话对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至终端。
可选地,在依据所述封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染之前,还包括:解封所述封装后的渲染指令流,获取应用ID、渲染会话ID、渲染指令流,其中,所述应用ID用于标识应用,所述渲染会话ID用于标识渲染会话;判断应用的渲染会话是否已经创建对应的离屏渲染会话;在确定没有创建对应的离屏渲染会话的情况下,新建所述应用的渲染会话对应的离屏渲染会话。
根据本发明实施例的另一方面,还提供了一种应用画面处理装置,包括:接收模块,用于接收封装后的渲染指令流,其中,所述封装后的渲染指令流是预定义图像处理器的前端生成的;处理模块,用于依据所述封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;分发模块,用于将所述离屏渲染会话对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至终端。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行上述中任意一项所述的应用画面处理方法。
根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的应用画面处理方法。
在本发明实施例中,该应用画面处理系统包括预定义图像处理器和终端会话管理模块,预定义图像处理器包括前端和后端,其中,预定义图像处理器的前端,用于发送的封装后的渲染指令流;预定义图像处理器的后端,用于接收封装后的渲染指令流,依据封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;终端会话管理模块,用于从离屏渲染会话对应的离屏渲染缓冲区采集完成离屏渲染的应用画面,并分发至终端,利用该应用画面处理系统可以达到在一路虚拟机上可以同时运行多个应用,且一个应用的所有渲染任务在一个物理图像处理器上进行离屏渲染,并将离屏渲染缓冲区中终端所需的应用画面发送给终端的目的,从而实现了节省虚拟机的应用画面分发服务器的物理资源、降低相关成本的技术效果,进而解决了相关技术中虚拟机的应用画面分发容易造成浪费服务器的物理资源或者成本较高的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种服务器端启动多路虚拟机的架构图;
图2是根据现有技术的一种服务器端启动一路虚拟机的架构图;
图3是根据本发明实施例的应用画面处理系统的示意图;
图4是根据本发明可选实施例的应用画面处理系统的整体框图;
图5是根据本发明可选实施例的应用画面处理方法的流程图;
图6是根据本发明实施例的应用画面处理方法的流程图;
图7是根据本发明实施例的应用画面处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例的另一方面,提供了一种应用画面处理系统,图3是根据本发明实施例的应用画面处理系统的示意图,如图3所示,该应用画面处理系统包括:预定义图像处理器30和终端会话管理模块32,预定义图像处理器30包括前端301和后端303,其中,预定义图像处理器30的前端301,用于发送的封装后的渲染指令流;预定义图像处理器30的后端303,连接至上述预定义图像处理器30的前端301,用于接收封装后的渲染指令流,依据封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;终端会话管理模块32,连接至上述预定义图像处理器30的后端303,用于从离屏渲染会话对应的离屏渲染缓冲区采集完成离屏渲染的应用画面,并分发至终端。
上述预定义图像处理器的前端运行在虚拟机Guest OS中,上述预定义图像处理器的后端和终端会话管理模块运行在宿主机Host OS中。其中,终端会话管理模块可以用于对终端的会话管理,包括接入请求、完成所请求应用的画面采集、编码、传输等操作。
在上述实施方式中,该应用画面处理系统可以通过封装后的渲染指令流确定离屏渲染会话,并利用物理图像处理器执行离屏渲染,进而将离屏渲染会话对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至终端,达到在一路虚拟机上可以同时运行多个应用,且一个应用的所有渲染任务在一个物理图像处理器上进行离屏渲染,并将离屏渲染缓冲区中终端所需的应用画面发送给终端的目的,从而实现了节省虚拟机的应用画面分发服务器的物理资源、降低相关成本的技术效果,进而解决了相关技术中虚拟机的应用画面分发容易造成浪费服务器的物理资源或者成本较高的技术问题。
可选地,上述预定义图像处理器30的前端301还包括:发起模块,用于虚拟机的应用调用渲染应用程序接口,发起渲染请求;创建模块,用于根据渲染请求为应用创建渲染会话;得到模块,用于按照预设封装格式封装渲染指令流以及渲染指令流所从属的应用和渲染会话,得到封装后的渲染指令流。
其中,一个应用可以创建至少一个渲染会话。上述预定义图像处理器的前端可以通过应用ID+渲染会话ID的方式,记录应用与渲染会话之间的从属关系。
在一种可选的实施方式中,虚拟机的应用可以调用渲染应用程序接口,发起渲染请求,然后再根据渲染请求为应用创建渲染会话,进而按照预设封装格式封装渲染指令流以及渲染指令流所从属的应用和渲染会话,以得到封装后的渲染指令流。需要说明的是,上述预设封装格式包括但不限于应用ID+渲染会话ID+原始渲染指令流。
可选地,得到模块包括:标记单元,用于标记渲染指令流所从属的应用和渲染会话,其中,应用ID用于标识应用,渲染会话ID用于标识渲染会话;封装单元,用于依据渲染指令流所从属的应用关联的应用ID、渲染指令流所从属的渲染会话关联的渲染会话ID和渲染指令流进行封装,得到封装后的渲染指令流。
在一种可选的实施方式中,在按照预设封装格式封装渲染指令流以及渲染指令流所从属的应用和渲染会话过程中,需要标记渲染指令流所从属的应用和渲染会话,其中,应用ID用于标识应用,渲染会话ID用于标识渲染会话,然后依据渲染指令流所从属的应用关联的应用ID、渲染指令流所从属的渲染会话关联的渲染会话ID和渲染指令流进行封装,得到封装后的渲染指令流。
可选地,预定义图像处理器30的后端303包括:解封模块,用于预定义图像处理器的后端解封封装后的渲染指令流,获取应用ID、渲染会话ID、渲染指令流;判断模块,用于判断应用的渲染会话是否已经创建对应的离屏渲染会话;新建模块,用于在确定没有创建对应的离屏渲染会话的情况下,新建应用的渲染会话对应的离屏渲染会话。
在一种可选的实施方式中,可以解封封装后的渲染指令流,得到应用的渲染会话,进而再判断该应用的渲染会话是否已经创建对应的离屏渲染会话,在确定没有创建对应的离屏渲染会话的情况下,则新建该应用的渲染会话对应的离屏渲染会话;在确定已经创建对应的离屏渲染会话的情况下,则直接使用该离屏渲染会话。在确定离屏渲染会话之后,可以基于物理图像处理器执行离屏渲染,并将完成离屏渲染的应用画面存储至对应的离屏渲染缓冲区。
可选地,上述系统还包括:生成模块,用于接收终端发送的接入请求,根据接入请求识别终端要启动的应用,并基于对应用的操作生成渲染请求。
在具体实施过程中,在接收终端发送的接入请求以后,可以根据接入请求识别终端要启动的应用,并基于对应用的操作生成渲染请求。
下面对本发明一种可选的实施方式进行详细说明。
图4是根据本发明可选实施例的应用画面处理系统的整体框图,如图4所示,软件定义GPU(Software defined GPU)(相当于上述预定义图像处理器)分为前端和后端。前端运行在虚拟机Guest OS中,在虚拟机Guest OS启动时,枚举成一张3D显卡。虚拟机的应用将其当成物理显卡正常使用。前端负责所有应用的渲染会话管理,并以应用ID+渲染会话ID+渲染指令流的组合发送给后端。后端运行在宿主机Host OS。后端在收到并解封渲染指令后,为每一路应用创建各自对应的离屏渲染缓冲区,并基于物理GPU完成渲染。终端会话管理模块运行在宿主机Host OS中,负责对终端的会话管理,包括接入请求、完成所请求应用的画面采集、编码、传输等操作。本发明中,宿主机中还包括终端会话管理模块,该管理模块存储有终端会话管理表。
图5是根据本发明可选实施例的应用画面处理方法的流程图,如图5所示,具体实施步骤如下:
步骤501,虚拟机应用调用渲染应用程序接口(Application ProgrammingInterface,简称为API),发起渲染请求。
步骤502,软件定义GPU前端模块为应用创建渲染会话,即渲染上下文。
一个应用可能创建一个渲染会话,也可能创建多个渲染会话。这由应用本身实现所决定。软件定义GPU前端模块通过应用ID+渲染会话ID的方式,记录应用与渲染会话之间的从属关系。
以OpenGL为例,渲染会话也即渲染上下文Context。Context记录了OpenGL渲染需要的所有信息,可以把它理解成一个大的结构体,它里面记录了当前绘制使用的颜色、是否有光照计算以及开启的光源等非常多使用OpenGL函数调用设置的状态和状态属性。
步骤503,软件定义GPU前端模块封装渲染指令流。
在封装时,标记渲染指令流所从属的应用和渲染会话。
比如封装格式:应用ID+渲染会话ID+原始渲染指令流;
其中,应用ID指的是和应用一一对应的,用于唯一标识该应用。比如,应用1对应ID1,应用2对应ID2。该对应关系存储在渲染会话管理表。
渲染会话ID用于标识不同的渲染会话,渲染会话和渲染会话ID的对应关系也提前存储到渲染会话管理表中。
原始渲染指令流:
如果是多个渲染指令流,则封装格式如下:
应用ID1+渲染会话ID1+原始渲染指令流1;
应用ID1+渲染会话ID2+原始渲染指令流2;
应用ID1对应的多个渲染会话中的每个渲染会话都会被封装成独立的指令流。
步骤504,软件定义GPU前端模块将封装后的渲染指令流发送至软件定义GPU的后端。
步骤505,软件定义GPU后端模块接收到渲染指令流。
步骤506,软件定义GPU后端模块解封渲染指令流,依次获得应用ID、渲染会话ID、原始渲染指令流。
步骤507,软件定义GPU后端模块判断该应用的渲染会话是否已经创建对应的离屏渲染会话,没有则新建。
需要说明的是,上述创建离屏渲染会话,一是为了在宿主机中省去前台窗口的管理过程;二是因为一般在实际运行环境中,宿主机提供的是无窗口系统环境。因此,离屏渲染可以很好地解决渲染时无窗口系统的问题。
步骤508,软件定义GPU后端模块基于物理GPU,执行渲染。
步骤509,终端会话管理模块处理终端接入请求。
步骤510,终端会话管理模块,根据终端所请求的应用,从对应的离屏渲染缓冲区采集出画面。
步骤511,终端会话管理模块对原始画面进行编码并发送。
如果多个显示装置请求同一个应用实例的画面,则虚拟机只启动一个应用实例。终端会话管理模块在完成画面编码处理后,分别发送至多个显示装置。
如果多个显示装置请求不同应用的画面,则虚拟机启动多个应用,比如应用1,应用2和应用3。软件定义GPU后端分别为应用1、应用2、应用3创建离屏渲染缓冲区并完成离屏渲染。终端会话管理模块分别从不同离屏渲染缓冲区中采集画面、编码,并发送至对应的显示装置。
如果是同一个应用分别独立显示,视为多个应用的场景。比如,显示器1和显示器2独立显示应用1的不同界面,启动两个应用1,创建两个离屏渲染缓冲区。
在上述实施方式中,虚拟机通过加载软件定义GPU,获得3D渲染支持。虚拟机运行3D应用时,软件定义GPU将渲染指令封装后,下沉至宿主机,交给物理GPU进行离屏渲染。软件定义GPU将虚拟机的每个应用渲染会话隔离管理,保证一个应用的所有渲染任务在一张物理GPU上进行离屏渲染,然后从离屏渲染缓冲区中,采集应用画面,分发至客户端。另外,通过采用软件定义GPU,虚拟机可以运行要求3D渲染的应用;在一路虚拟机上可以同时运行多个3D应用,并通过不同的离屏渲染缓冲区,采集各自的应用画面。
实施例2
根据本发明实施例,还提供了一种应用画面处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图6是根据本发明实施例的应用画面处理方法的流程图,如图6所示,该应用画面处理方法包括如下步骤:
步骤S602,接收封装后的渲染指令流,其中,封装后的渲染指令流是预定义图像处理器的前端生成的;
上述预定义图像处理器包括但不限于软件定义图像处理器。需要说明的是,上述预定义图像处理器包括前端和后端,其中,前端运行在虚拟机Guest OS中,后端运行在宿主机Host OS中。
在一种可选的实施方式中,预定义图像处理器的前端可以生成封装后的渲染指令流,其中,该封装后的渲染指令流的封装格式采用应用ID+渲染会话ID+渲染指令流;预定义图像处理器的后端与预定义图像处理器的前端通信连接,后端可用于接收封装后的渲染指令流。
需要说明的是,预定义图像处理器的前端和后端一般运行在同一个主机上,通信过程可以通过内存地址映射完成,从而可以避免实际拷贝。
步骤S604,依据封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;
上述离屏渲染会话是为了在宿主机中省去前台窗口的管理过程,而且一般在实际运行环境中,宿主机提供的是无窗口系统环境。
步骤S606,将离屏渲染会话对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至终端。
在一种可选的实施方式中,可以根据终端所请求的应用,将对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至对应的终端。
通过上述步骤,可以实现通过封装后的渲染指令流确定离屏渲染会话,并利用物理图像处理器执行离屏渲染,进而将离屏渲染会话对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至终端,达到了在一路虚拟机上可以同时运行多个应用,且一个应用的所有渲染任务在一个物理图像处理器上进行离屏渲染,并将离屏渲染缓冲区中终端所需的应用画面发送给终端的目的,从而实现了节省虚拟机的应用画面分发服务器的物理资源、降低相关成本的技术效果,进而解决了相关技术中虚拟机的应用画面分发容易造成浪费服务器的物理资源或者成本较高的技术问题。
可选地,在依据封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染之前,还包括:解封封装后的渲染指令流,获取应用ID、渲染会话ID、渲染指令流,其中,应用ID用于标识应用,渲染会话ID用于标识渲染会话;判断应用的渲染会话是否已经创建对应的离屏渲染会话;在确定没有创建对应的离屏渲染会话的情况下,新建应用的渲染会话对应的离屏渲染会话。
在一种可选的实施方式中,可以解封封装后的渲染指令流,得到应用的渲染会话,进而再判断该应用的渲染会话是否已经创建对应的离屏渲染会话,在确定没有创建对应的离屏渲染会话的情况下,则新建该应用的渲染会话对应的离屏渲染会话;在确定已经创建对应的离屏渲染会话的情况下,则直接使用该离屏渲染会话。在确定离屏渲染会话之后,可以基于物理图像处理器执行离屏渲染,并将完成离屏渲染的应用画面存储至对应的离屏渲染缓冲区。
实施例3
根据本发明实施例的另一方面,还提供了一种应用画面处理装置,图7是根据本发明实施例的应用画面处理装置的示意图,如图7所示,该应用画面处理装置包括:接收模块72、处理模块74和分发模块76。下面对该应用画面处理装置进行详细说明。
接收模块72,用于接收封装后的渲染指令流,其中,封装后的渲染指令流是预定义图像处理器的前端生成的;处理模块74,连接至上述接收模块72,用于依据封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;分发模块76,连接至上述处理模块74,用于将离屏渲染会话对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至终端。
上述预定义图像处理器包括但不限于软件定义图像处理器。需要说明的是,上述预定义图像处理器包括前端和后端,其中,前端运行在虚拟机Guest OS中,后端运行在宿主机Host OS中。
在一种可选的实施方式中,预定义图像处理器的前端可以生成封装后的渲染指令流,其中,该封装后的渲染指令流的封装格式采用应用ID+渲染会话ID+渲染指令流;预定义图像处理器的后端与预定义图像处理器的前端通信连接,后端可用于接收封装后的渲染指令流。
在上述实施方式中,该应用画面处理装置可以通过封装后的渲染指令流确定离屏渲染会话,并利用物理图像处理器执行离屏渲染,进而将离屏渲染会话对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至终端,达到了在一路虚拟机上可以同时运行多个应用,且一个应用的所有渲染任务在一个物理图像处理器上进行离屏渲染,并将离屏渲染缓冲区中终端所需的应用画面发送给终端的目的,从而实现了节省虚拟机的应用画面分发服务器的物理资源、降低相关成本的技术效果,进而解决了相关技术中虚拟机的应用画面分发容易造成浪费服务器的物理资源或者成本较高的技术问题。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。
此处需要说明的是,上述接收模块72、处理模块74和分发模块76对应于实施例2中的步骤S602至S606,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例2所公开的内容。
可选地,上述装置还用于在依据封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染之前,解封封装后的渲染指令流,获取应用ID、渲染会话ID、渲染指令流,其中,应用ID用于标识应用,渲染会话ID用于标识渲染会话;判断应用的渲染会话是否已经创建对应的离屏渲染会话;在确定没有创建对应的离屏渲染会话的情况下,新建应用的渲染会话对应的离屏渲染会话。
实施例4
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行上述中任意一项的应用画面处理方法。
实施例5
根据本发明实施例的另一方面,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行上述中任意一项的应用画面处理方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要基于其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种应用画面处理系统,其特征在于,包括:预定义图像处理器和终端会话管理模块,所述预定义图像处理器包括前端和后端,其中,
所述预定义图像处理器的前端,用于发送的封装后的渲染指令流;
所述预定义图像处理器的后端,用于接收所述封装后的渲染指令流,依据所述封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;
所述终端会话管理模块,用于从所述离屏渲染会话对应的离屏渲染缓冲区采集完成离屏渲染的应用画面,并分发至终端。
2.根据权利要求1所述的系统,其特征在于,所述预定义图像处理器的前端还包括:
发起模块,用于虚拟机的应用调用渲染应用程序接口,发起渲染请求;
创建模块,用于根据所述渲染请求为所述应用创建渲染会话;
得到模块,用于按照预设封装格式封装渲染指令流以及所述渲染指令流所从属的应用和渲染会话,得到所述封装后的渲染指令流。
3.根据权利要求2所述的系统,其特征在于,所述得到模块包括:
标记单元,用于标记渲染指令流所从属的应用和渲染会话,其中,应用ID用于标识应用,渲染会话ID用于标识渲染会话;
封装单元,用于依据所述渲染指令流所从属的应用关联的应用ID、所述渲染指令流所从属的渲染会话关联的渲染会话ID和所述渲染指令流进行封装,得到所述封装后的渲染指令流。
4.根据权利要求3所述的系统,其特征在于,所述预定义图像处理器的后端包括:
解封模块,用于所述预定义图像处理器的后端解封所述封装后的渲染指令流,获取应用ID、渲染会话ID、渲染指令流;
判断模块,用于判断应用的渲染会话是否已经创建对应的离屏渲染会话;
新建模块,用于在确定没有创建对应的离屏渲染会话的情况下,新建所述应用的渲染会话对应的离屏渲染会话。
5.根据权利要求2至4中任意一项所述的系统,其特征在于,所述系统还包括:生成模块,用于接收终端发送的接入请求,根据所述接入请求识别所述终端要启动的应用,并基于对所述应用的操作生成渲染请求。
6.一种应用画面处理方法,其特征在于,包括:
接收封装后的渲染指令流,其中,所述封装后的渲染指令流是预定义图像处理器的前端生成的;
依据所述封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;
将所述离屏渲染会话对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至终端。
7.根据权利要求6所述的方法,其特征在于,在依据所述封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染之前,还包括:
解封所述封装后的渲染指令流,获取应用ID、渲染会话ID、渲染指令流,其中,所述应用ID用于标识应用,所述渲染会话ID用于标识渲染会话;
判断应用的渲染会话是否已经创建对应的离屏渲染会话;
在确定没有创建对应的离屏渲染会话的情况下,新建所述应用的渲染会话对应的离屏渲染会话。
8.一种应用画面处理装置,其特征在于,包括:
接收模块,用于接收封装后的渲染指令流,其中,所述封装后的渲染指令流是预定义图像处理器的前端生成的;
处理模块,用于依据所述封装后的渲染指令流,确定离屏渲染会话,并基于物理图像处理器执行离屏渲染;
分发模块,用于将所述离屏渲染会话对应的离屏渲染缓冲区中完成离屏渲染的应用画面发送至终端。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求6至7中任意一项所述的应用画面处理方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求6至7中任意一项所述的应用画面处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110310858.8A CN113051032A (zh) | 2021-03-23 | 2021-03-23 | 应用画面处理方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110310858.8A CN113051032A (zh) | 2021-03-23 | 2021-03-23 | 应用画面处理方法、装置和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113051032A true CN113051032A (zh) | 2021-06-29 |
Family
ID=76515013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110310858.8A Pending CN113051032A (zh) | 2021-03-23 | 2021-03-23 | 应用画面处理方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113051032A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115082583A (zh) * | 2022-06-14 | 2022-09-20 | 维塔科技(北京)有限公司 | 图像渲染方法、装置、存储介质及电子设备 |
-
2021
- 2021-03-23 CN CN202110310858.8A patent/CN113051032A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115082583A (zh) * | 2022-06-14 | 2022-09-20 | 维塔科技(北京)有限公司 | 图像渲染方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10354430B2 (en) | Image update method, system, and apparatus | |
CN106797388B (zh) | 跨系统多媒体数据编解码方法、装置、电子设备和计算机程序产品 | |
US8463980B2 (en) | Shared memory between child and parent partitions | |
CN111488196B (zh) | 渲染方法及装置、存储介质、处理器 | |
JP7475610B2 (ja) | クラウドネイティブによる3d場面のゲーム方法及びシステム | |
WO2019114185A1 (zh) | 一种app远程控制方法及相关设备 | |
CN103631634A (zh) | 实现图形处理器虚拟化的方法与装置 | |
CN112073758B (zh) | 一种云桌面投屏方法、装置、计算机设备、计算机可读存储介质及云桌面投屏交互系统 | |
CN111240631A (zh) | 基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及系统 | |
CN112073754B (zh) | 一种云游戏投屏方法、装置、计算机设备、计算机可读存储介质及云游戏投屏交互系统 | |
US10698705B2 (en) | Method and device for managing virtual desktops virtualized by a host server and allocated to terminal users, and virtual desktop server | |
CN108762934B (zh) | 远程图形传输系统、方法及云服务器 | |
CN110458748A (zh) | 数据传输方法、服务器及客户端 | |
CN113240571A (zh) | 图像处理系统、方法 | |
CN111870948A (zh) | 一种云游戏单主机多用户环境下的窗口管理方法及系统 | |
CN112102457A (zh) | 3d渲染方法及系统 | |
CN115981845A (zh) | 一种云端多人协同及ar实时协同方法、装置、介质及设备 | |
CN113778593B (zh) | 云桌面控制方法、装置、电子设备、存储介质及程序产品 | |
CN113051032A (zh) | 应用画面处理方法、装置和系统 | |
CN113254129A (zh) | 一种云桌面gpu直通虚拟化重定向管理系统及方法 | |
US10616559B1 (en) | Virtual stereo device redirection for virtual desktops | |
CN113326093A (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN114398018B (zh) | 画面显示方法、装置、存储介质及电子设备 | |
CN114675914B (zh) | 虚拟桌面的图像传输方法、装置、电子设备及存储介质 | |
CN114327790A (zh) | 基于Linux系统Android容器的渲染方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |