CN117850721A - 一种多虚拟机系统的渲染与显示方法、装置和电子设备 - Google Patents

一种多虚拟机系统的渲染与显示方法、装置和电子设备 Download PDF

Info

Publication number
CN117850721A
CN117850721A CN202311848163.0A CN202311848163A CN117850721A CN 117850721 A CN117850721 A CN 117850721A CN 202311848163 A CN202311848163 A CN 202311848163A CN 117850721 A CN117850721 A CN 117850721A
Authority
CN
China
Prior art keywords
rendering
virtual machine
virtual
gpu
hardware
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
Application number
CN202311848163.0A
Other languages
English (en)
Inventor
丁磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guoke Chushi Chongqing Software Co ltd
Original Assignee
Guoke Chushi Chongqing Software Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guoke Chushi Chongqing Software Co ltd filed Critical Guoke Chushi Chongqing Software Co ltd
Priority to CN202311848163.0A priority Critical patent/CN117850721A/zh
Publication of CN117850721A publication Critical patent/CN117850721A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Image Generation (AREA)

Abstract

本公开涉及一种多虚拟机系统的渲染与显示方法、装置和电子设备。其中,多虚拟机系统的渲染与显示方法包括:虚拟化层,响应于接收到来自第一虚拟机的virtio‑gpu驱动的内存映射I/O请求,利用在虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息;虚拟图形库服务,响应于接收到渲染指令到达信息,利用ioctl机制,获取virtio‑gpu驱动存放于第一虚拟机和第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据;以及根据第一渲染指令数据,利用第二虚拟机的硬件GPU设备,得到第一渲染指令数据对应的渲染结果;利用运行于第二虚拟机的显卡驱动,将根据渲染结果得到的待显示图像数据发送到第二虚拟机的硬件显卡。

Description

一种多虚拟机系统的渲染与显示方法、装置和电子设备
技术领域
本公开涉及虚拟机技术领域,尤其涉及一种多虚拟机系统的渲染与显示方法、装置和电子设备。
背景技术
虚拟化技术是计算机领域中的一项重要技术,它允许在物理计算机上运行多个虚拟机,来提高计算机硬件的利用率。在虚拟机管理器中,GPU(图形处理单元)与显示虚拟化技术起着举足轻重的作用,它能够显著提高虚拟机的渲染性能,提升虚拟机管理器的可用性,满足虚拟机管理器在渲染与显示应用场景的需求。
相关技术中,在QEMU虚拟机管理器中,可以借助KVM(Kernel-based VirtualMachine)的virtio-gpu协议,在hos主机实现来自虚拟机的图形的后端渲染,并通过SDL、GTK等图形UI框架在host主机上创建窗口用以完成显示任务。由于QEMU是II型虚拟机,II型虚拟机与I型虚拟机拥有不同的系统架构,上述QEMU的窗口显示虚拟化方法,无法运用在I型虚拟机管理器领域。并且,在上述QEMU的窗口显示虚拟化方法中,需要在host主机的图形层再次对来自虚拟机的渲染后的图像进行合成,以实现在主机的窗口显示虚拟机的图像,因此,需要的处理的数据量较大,显示性能较低。而且,在嵌入式应用领域(例如,车载领域),显示虚拟化通常需要多个屏幕分别全屏显示画面,而上述QEMU的窗口显示虚拟化方法只支持单屏显示且在全屏支持上效效果不佳。
因此,如何在I型虚拟机上,高效地实现硬件GPU的计算资源和显卡资源在多个虚拟环境中共享,且可以得到较好的全屏支持效果,是亟待解决的技术问题。
发明内容
为克服相关技术中存在的问题,本公开提供一种多虚拟机系统的渲染与显示方法、装置和电子设备。
根据本公开实施例的第一方面,提供一种多虚拟机系统的渲染与显示方法,包括:所述虚拟化层,响应于接收到来自第一虚拟机的virtio-gpu驱动的内存映射I/O请求,利用在所述虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息;其中,所述第二虚拟机为拥有硬件GPU设备以及硬件显卡的虚拟机,所述第一虚拟机为所述多虚拟机系统中不拥有硬件GPU设备以及硬件显卡的虚拟机;所述虚拟图形库服务,响应于接收到所述渲染指令到达信息,利用ioctl机制,获取所述virtio-gpu驱动存放于所述第一虚拟机和所述第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据;以及根据所述第一渲染指令数据,利用所述第二虚拟机的硬件GPU设备,得到所述第一渲染指令数据对应的渲染结果;利用运行于所述第二虚拟机的显卡驱动,将根据所述渲染结果得到的待显示图像数据发送到所述第二虚拟机的硬件显卡,以使所述硬件显卡,将所述渲染结果显示于与所述硬件显卡连接的目标显示设备。
在一些实施例中,所述virtio设备包括virtio代理设备和virtio桩设备;所述利用在所述虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息,包括:所述virtio代理设备,响应于监听到所述virtio-gpu驱动的内存映射I/O请求,指示所述virtio桩设备向所述虚拟图形库服务发送所述渲染指令到达信息。
在一些实施例中,所述virtio桩设备通过以下方式向所述虚拟图形库服务发送所述渲染指令到达信息:所述virtio桩设备,触发预设类型的中断;运行于所述第一虚拟机中的内核态的virtio桩设备的驱动程序,响应于接收到所述预设类型的中断,向所述虚拟图形库服务发送所述渲染指令到达信息。
在一些实施例中,所述利用ioctl机制,获取所述virtio-gpu驱动存放于所述第一虚拟机和所述第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据,包括:所述虚拟图形库服务,利用所述virtio桩设备的驱动程序提供的ioctl接口函数,从所述virtio桩设备的驱动程序获取其从所述共享内存区域读取的所述第一渲染指令数据。
在一些实施例中,根据所述第一渲染指令数据,利用所述第二虚拟机的硬件GPU设备,得到所述第一渲染指令数据对应的渲染结果,包括:利用预设算法,根据所述第一渲染指令数据,生成与所述硬件GPU适配的第二渲染指令数据;利用运行于内核态的GPU驱动,将所述第二渲染指令数据发送到所述硬件GPU设备,以使所述硬件GPU设备根据所述第二渲染指令数据,生成所述目标渲染任务的渲染结果;从所述内核态的GPU驱动,获取其从所述硬件GPU设备读取的所述渲染结果。
在一些实施例中,所述第一渲染指令数据为TGSI指令数据,所述第二渲染指令数据为GLSL指令数据;所述利用预设算法,根据所述第一渲染指令数据,生成与所述硬件GPU适配的第二渲染指令数据,包括:所述虚拟图形库服务,利用virglrenderer,将所述TGSI指令数据解析为GLSL指令数据;所述利用运行于内核态的GPU驱动,将所述第二渲染指令数据发送到所述硬件GPU设备,包括:利用与所述硬件GPU设备适配的libGLES,将所述GLSL指令数据解析为与所述GPU驱动适配的控制指令;调用所述GPU驱动提供的接口函数,执行所述控制指令,以将所述GLSL指令数据写入到所述硬件GPU设备;所述从所述内核态的GPU驱动,获取其从所述硬件GPU设备读取的所述渲染结果,包括:利用绑定在virglrenderer上的EGLContext,通过与所述硬件GPU设备适配的libGLES,从所述GPU驱动读取其从所述硬件GPU设备获取的渲染结果。
根据本公开实施例的第二方面,提供一种多虚拟机系统的渲染与显示装置,包括:发送模块,用于使所述虚拟化层,响应于接收到来自第一虚拟机的virtio-gpu驱动的内存映射I/O请求,利用在所述虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息;其中,所述第二虚拟机为拥有硬件GPU设备以及硬件显卡资源的虚拟机,所述第一虚拟机为所述多虚拟机系统中不拥有硬件GPU设备以及硬件显卡资源的虚拟机;第一获取模块,用于使所述虚拟图形库服务,响应于接收到所述渲染指令到达信息,利用ioctl机制,获取所述virtio-gpu驱动存放于所述第一虚拟机和所述第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据;第二获取模块,用于根据所述第一渲染指令数据,利用所述第二虚拟机的硬件GPU设备,得到所述第一渲染指令数据对应的渲染结果;显示模块,用于利用运行于所述第二虚拟机的显卡驱动,将根据所述渲染结果得到的待显示图像数据发送到所述第二虚拟机的硬件显卡,以使所述硬件显卡,将所述渲染结果显示于与所述硬件显卡连接的目标显示设备。
根据本公开实施例的第三方面,提供一种车辆,存储有一组指令集,所述指令集被所述车辆执行,以实现本公开第一方面所提供的多虚拟机系统的渲染与显示方法。
根据本公开实施例的第四方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本公开第一方面所提供的多虚拟机系统的渲染与显示方法。
根据本公开实施例的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的多虚拟机系统的渲染与显示方法的步骤。
本公开的实施例提供的技术方案可以包括以下有益效果:虚拟化层,响应于接收到来自第一虚拟机的virtio-gpu驱动的内存映射I/O请求,利用在虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息;虚拟图形库服务,响应于接收到渲染指令到达信息,利用ioctl机制,获取virtio-gpu驱动存放于第一虚拟机和第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据;以及根据第一渲染指令数据,利用第二虚拟机的硬件GPU设备,得到第一渲染指令数据对应的渲染结果;利用运行于第二虚拟机的显卡驱动,将根据渲染结果得到的待显示图像数据发送到第二虚拟机的硬件显卡。从而可以在I型虚拟机上,高效地实现硬件GPU的计算资源和显卡资源在多个虚拟环境中共享,且可以得到较好的全屏支持效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种多虚拟机系统的渲染与显示方法的流程图。
图2是根据一示例性实施例示出的一种虚拟图形库服务接收第一渲染指令数据的方法的流程图。
图3是根据一示例性实施例示出的一种虚拟图形库服务获取渲染结果的方法的流程图。
图4是根据一示例性实施例示出的多虚拟机系统的框图。
图5是根据一示例性实施例示出的一种多虚拟机系统的渲染与显示方法的示意图。
图6是根据一示例性实施例示出的一种多虚拟机系统的渲染与显示装置的框图。
图7是根据一示例性实施例示出的一种车辆的框图。
图8是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
下面将结合附图详细地对示例性实施例进行描述说明。
应当指出,相关实施例及附图仅为描述说明本公开所提供的示例性实施例,而非本公开的全部实施例,也不应理解本公开受相关示例性实施例的限制。
应当指出,本公开中所用术语“第一”、“第二”等仅用于区别不同步骤、设备或模块等。相关术语既不代表任何特定技术含义,也不表示它们之间的顺序或者相互依存关系。
应当指出,本公开中所用术语“一个”、“多个”、“至少一个”的修饰是示意性而非限制性的。除非在上下文另有明确指出,否则应该理解为“一个或多个”。
应当指出,本公开中所用术语“和/或”,用于描述关联对象之间的关联关系,一般表示至少存在三种关联关系。例如,A和/或B,至少可以表示:单独存在A,同时存在A和B,单独存在B这三种关联关系。
应当指出,本公开的方法实施例中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。除非特别说明,本公开的范围不受相关实施例中步骤的描述顺序限制。
需要说明的是,本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
示例性方法
图1是根据一示例性实施例示出的一种多虚拟机系统的渲染与显示方法的流程图。该多虚拟机系统的渲染与显示方法应用于如图4所示的多虚拟机系统中,该多虚拟机系统中的多个虚拟机通过虚拟化层共享包括硬件GPU设备以及硬件显卡的片上系统。在具体实施过程中,智能服务机器人,以及车载系统中的智能仪表、中控娱乐等多虚拟机系统可以使用本公开提供的方式实现GPU的虚拟化与显示虚拟化。
如图1所示,多虚拟机系统的渲染与显示方法包括如下步骤:
在步骤S110中,虚拟化层,响应于接收到来自虚拟机第一虚拟机的virtio-gpu驱动的内存映射I/O请求,利用在虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息。
第二虚拟机为拥有硬件GPU设备以及硬件显卡资源的虚拟机,如图5所示的dom0,第二虚拟机可以直接访问和使用GPU设备以及硬件显卡资源,对于需要使用GPU进行图形处理或计算任务的多虚拟机系统中的其他虚拟机,可以通过第二虚拟机为其提供GPU资源。
第一虚拟机为多虚拟机系统中不拥有硬件GPU设备以及硬件显卡资源的虚拟机,例如图5中的dom1。
virtio-gpu驱动是一种适用于虚拟化环境的GPU的驱动程序。virtio-gpu驱动基于virtio虚拟化技术,提供了一种通用的虚拟设备接口,使得虚拟机能够像访问普通硬件设备一样访问GPU设备。
在具体实施过程中,第一虚拟机上运行的应用程序,可以通过virtio-gpu驱动,将渲染任务的指令数据,发送到后端GPU设备。在一些实施例中,virtio-gpu驱动利用内存映射的方式发送渲染任务的指令数据,在该过程中产生内存映射I/O请求。
virtio设备是利用虚拟化技术模拟的硬件设备,它可以在虚拟机中模拟一个或多个物理设备,使得虚拟机能够像访问普通硬件设备一样访问这些虚拟设备。在具体实施过程中,可以基于virtio规范在虚拟化层实现virtio设备。关于virtio设备的详细描述参见图2中的相关内容,这里不再赘述。
虚拟图形库服务(例如,图5中的virgl-service)为虚拟机提供图形处理和渲染服务,其支持多种虚拟化技术,如KVM、VMware等。如图5所示,虚拟图形库服务以用户态的运行在第二虚拟机中。
在具体实施过程中,可以通过多种方式,利用在虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息。关于利用在虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息的具体实施例,参见图2中的相关内容,这里不再赘述。
在步骤S120中,虚拟图形库服务,响应于接收到渲染指令到达信息,利用ioctl机制,获取virtio-gpu驱动存放于第二虚拟机和第一虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据。
目标渲染任务为需要使用图形渲染技术来完成的任务。例如,目标渲染任务可以为场景渲染、角色动画、灯光渲染、特效合成等任务。
在具体实施过程中,虚拟化层可以在内存中开辟一块环形缓冲区,作为第一虚拟机与第二虚拟机之间的共享内存区域,当第一虚拟机上运行的应用程序调用virtio-gpu驱动,向GPU后端设备发送用于执行目标渲染任务的第一渲染指令数据时,virtio-gpu驱动可以将第一渲染指令数据存放于该共享内存区域。虚拟图形库服务,在接收到渲染指令到达信息之后,利用ioctl机制,从virtio-gpu驱动读取数据,virtio-gpu驱动从该共享内存区域读取第一渲染指令数据之后,返回给虚拟图形库服务。关于利用ioctl机制,获取virtio-gpu驱动存放于第二虚拟机和第一虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据的详细描述参见图2中的相关内容,这里不再赘述。
仅作为示例,如图5所示,在第一虚拟机上,配置用户态渲染栈为MESA,利用MESA的virtio-gpu dri模块,将opengl接口与指令转换为TGSI指令;MESA利用运行于第一虚拟机的内核态的virtio-gpu驱动将TGSI指令封装成符合virtio-gpu协议定义的指令流,并将该指令流写入共享内存区域。
在步骤S130中,根据第一渲染指令数据,利用第二虚拟机的硬件GPU设备,得到第一渲染指令数据对应的渲染结果。
在具体实施过程中,可以通过多种方式,根据第一渲染指令数据,得到硬件GPU设备可以执行的渲染指令数据,将该渲染指令数据写入硬件GPU设备,硬件GPU设备利用其强大的计算处理功能,计算得到第一渲染指令数据对应的渲染结果(例如,光照数据、材质数据等)。
关于根据第一渲染指令数据,利用第二虚拟机的硬件GPU设备,得到第一渲染指令数据对应的渲染结果的具体实施例,参见图3中的相关内容,这里不再赘述。
在步骤S140中,利用运行于第二虚拟机的显卡驱动,将根据渲染结果得到的待显示图像数据发送到第二虚拟机的硬件显卡,以使硬件显卡,将渲染结果显示于与硬件显卡连接的目标显示设备。
在具体实施过程中,待显示图像数据可以包括显示设备上显示的图像的所有信息,例如,图像尺寸信息、像素数据等信息。
在具体实施过程中,虚拟图形库服务可以利用显示框架提供的API,将待显示图像数据,发送到硬件显卡,并选择目标显示设备。例如,可以使用图5所示的DRM(DirectRendering Manager)模块提供的libDRM(用户空间的DRM库),将待显示图像数据发送到与目标显卡适配的内核态的显卡驱动(例如,图5所示),然后由内核态的显卡驱动将待显示图像数据发送到硬件显卡。DRM是Linux目前主流的图形显示框架。
目标显示设备为与多虚拟机系统中的硬件显卡连接的显示设备,例如,液晶显示器、OLED显示器等。硬件显卡可以通过多种接口与目标显示设备连接,例如图5所示的MIPI、HDMI等。
本公开提供的实施例中,利用虚拟化层,监听来自第一虚拟机的virtio-gpu驱动的内存映射I/O请求,利用在虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息;虚拟图形库服务,响应于接收到渲染指令到达信息,利用ioctl机制,获取virtio-gpu驱动存放于第一虚拟机和第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据,从而将渲染指令数据从不拥有硬件GPU资源的第一虚拟机传输到拥有硬件GPU资源的第二虚拟机;在第二虚拟机上,根据第一渲染指令数据,利用第二虚拟机的硬件GPU设备,得到第一渲染指令数据对应的渲染结果,利用运行于第二虚拟机的显卡驱动,将根据渲染结果得到的待显示图像数据发送到第二虚拟机的硬件显卡,以使硬件显卡,将渲染结果显示于与硬件显卡连接的目标显示设备。由于本公开提供的实施例是直接将渲染结果借助硬件GPU进行显示,相比相关技术,有效提高了数据处理的效率,且可以拥有更高的显示性能,满足了I型虚拟机管理所需要的全屏显示效果。
图2是根据一示例性实施例示出的一种虚拟图形库服务接收第一渲染指令数据的方法的流程图。
在本实施例中,virtio设备包括virtio代理设备和virtio桩设备,如图2所示,虚拟图形库服务可以利用如下步骤接收第一渲染指令数据:
在步骤S210中,virtio代理设备,响应于监听到virtio-gpu驱动的内存映射I/O请求,指示virtio桩设备向虚拟图形库服务发送渲染指令到达信息。
virtio代理设备是利用virtio协议实现的在虚拟化环境中使用的设备,其用于代理第一虚拟机的GPU后端设备。
virtio桩设备是利用virtio协议实现的在虚拟化环境中使用的设备,其用于与第二虚拟机中的操作系统进行通信。
在具体实施过程中,可以利用注册函数或接口,将创建的第一虚拟机与第二虚拟机之间的共享内存区域与virtio代理设备关联;可以利用虚拟机上运行的操作系统提供的监听函数或接口,实现virtio代理设备对virtio-gpu驱动的内存映射I/O请求的监听。
在具体实施过程中,可以依照virtio协议,实现virtio代理设备和virtio桩设备之间的通信。仅作为示例,virtio代理设备在监听到virtio-gpu驱动发出的内存映射I/O请求后,根据virtio协议的规定,将该请求封装为一个virtio消息,然后发送给virtio桩设备;virtio桩设备接收到该virtio消息后,根据virtio协议的规定解析消息后,向虚拟图形库服务发送渲染指令到达信息。
在一些实施例中,第一虚拟机中运行的操作系统为linux,virtio桩设备可以通过以下步骤向虚拟图形库服务发送渲染指令到达信息:
在步骤S220中,virtio桩设备,触发预设类型的中断;运行于第一虚拟机中的内核态的virtio桩设备的驱动程序,响应于接收到预设类型的中断,向虚拟图形库服务发送渲染指令到达信息。
在具体实施过程中,第一虚拟机中运行的操作系统可以包括:Linux、安卓或者其他支持virtio-gpu协议的操作系统。virtio桩设备的驱动程序可以为在第一虚拟机中运行的操作系统的内核的驱动程序。
仅作为示例,预设类型的中断可以是vq中断,其中断号可以是预定义的中断号。virtio桩设备的驱动程序,在接收到预设类型的中断之后,可以利用多种方式,向虚拟图形库服务发送渲染指令到达信息,例如,通过消息通知的方式。
在步骤S230中,虚拟图形库服务,利用virtio桩设备的驱动程序提供的ioctl接口函数,从virtio桩设备的驱动程序获取其从共享内存区域读取的第一渲染指令数据。
虚拟图形库服务,在接收到virtio桩设备的驱动程发送的渲染指令到达信息之后,可以利用virtio桩设备提供的ioctl接口函数,向virtio桩设备的驱动程序发送读数据指令,virtio桩设备的驱动程序从共享缓存区域获取第一渲染指令数据之后,将其按照预设的接口方式返回给虚拟图形库服务。上述过程在不同的操作系统中有不同的实现方式,不受本说明书的表述所限。
本公开提供的实施例中,利用在虚拟化层实现的virtio代理设备,监听virtio-gpu驱动的内存映射I/O请求,利用virtio桩设备向虚拟图形库服务发送渲染指令到达信息;虚拟图形库服务,利用virtio桩设备的驱动程序提供的ioctl接口函数,从virtio桩设备的驱动程序获取其从共享内存区域读取的第一渲染指令数据。从而实现了在第二虚拟机上运行的用户态的应用程序从运行在第一虚拟机的内核态的GPU驱动读取渲染指令数据的过程,由于该过程借助了Linux生态实现的通用协议virtio,可以避免在驱动层面进行虚拟化时不同的硬件GPU型号都需要适配的问题,有效地提高了方案的通用性。
图3是根据一示例性实施例示出的一种虚拟图形库服务获取渲染结果的方法的流程图。
在步骤S310中,利用预设算法,根据第一渲染指令数据,生成与硬件GPU适配的第二渲染指令数据。
在一些实施例中,如图5所示,第一渲染指令数据为TGSI(Tessellation andGeometry Shading Infrastructure)指令数据,第二渲染指令数据为GLSL(OpenGLShading Language)指令数据,虚拟图形库服务,可以利用virglrenderer,将TGSI指令数据解析为GLSL指令数据。
virglrenderer是一个用于在虚拟化环境中实现GPU加速的框架,它通过将OpenGL指令传递给宿主机上的实际GPU来实现渲染加速。
在步骤S320中,利用运行于内核态的GPU驱动,将第二渲染指令数据发送到硬件GPU设备,以使硬件GPU设备根据第二渲染指令数据,生成目标渲染任务的渲染结果。
在一些实施例中,如图5所示,可以利用与硬件GPU设备适配的libGLES,将GLSL指令数据解析为与GPU驱动适配的控制指令;调用GPU驱动提供的接口函数,执行控制指令,以将GLSL指令数据写入到硬件GPU设备。在具体实施过程中,控制指令可以为GPU IOCTL执行流,libGLES可以根据待执行的GLSL指令数据,确定需要调用的GPU驱动的接口函数。
在步骤S330中,从内核态的GPU驱动,获取其从硬件GPU设备读取的渲染结果。
在具体实施过程中,如图5所示,可以利用绑定在virglrenderer上的EGLContext,通过与硬件GPU设备适配的libGLES,从GPU驱动读取其从硬件GPU设备获取的渲染结果。
本公开提供的实施例中,利用预设算法,根据第一渲染指令数据,生成与硬件GPU适配的第二渲染指令数据;利用运行于内核态的GPU驱动,将第二渲染指令数据发送到硬件GPU设备;从内核态的GPU驱动,获取其从硬件GPU设备读取的渲染结果。从而实现了使用第二虚拟机的GPU硬件资源完成第一虚拟机的渲染指令数据的计算过程。
示例性装置
图6是根据一示例性实施例示出的一种多虚拟机系统的渲染与显示装置框图。参照图6,该装置600包括发送模块610,第一获取模块620、第二获取模块630以及显示模块640。
发送模块610,用于使所述虚拟化层,响应于接收到来自第一虚拟机的virtio-gpu驱动的内存映射I/O请求,利用在所述虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息;其中,所述第二虚拟机为拥有硬件GPU设备以及硬件显卡资源的虚拟机,所述第一虚拟机为所述多虚拟机系统中不拥有硬件GPU设备以及硬件显卡资源的虚拟机。
第一获取模块620,用于使所述虚拟图形库服务,响应于接收到所述渲染指令到达信息,利用ioctl机制,获取所述virtio-gpu驱动存放于所述第一虚拟机和所述第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据。
第二获取模块630,用于根据所述第一渲染指令数据,利用所述第二虚拟机的硬件GPU设备,得到所述第一渲染指令数据对应的渲染结果。
显示模块640,用于利用运行于所述第二虚拟机的显卡驱动,将根据所述渲染结果得到的待显示图像数据发送到所述第二虚拟机的硬件显卡,以使所述硬件显卡,将所述渲染结果显示于与所述硬件显卡连接的目标显示设备。
在一些实施例中,所述virtio设备包括virtio代理设备和virtio桩设备;所述利用在所述虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息,包括:所述virtio代理设备,响应于监听到所述virtio-gpu驱动的内存映射I/O请求,指示所述virtio桩设备向所述虚拟图形库服务发送所述渲染指令到达信息。
在一些实施例中,所述virtio桩设备通过以下方式向所述虚拟图形库服务发送所述渲染指令到达信息:所述virtio桩设备,触发预设类型的中断;运行于所述第一虚拟机中的内核态的virtio桩设备的驱动程序,响应于接收到所述预设类型的中断,向所述虚拟图形库服务发送所述渲染指令到达信息。
在一些实施例中,所述利用ioctl机制,获取所述virtio-gpu驱动存放于所述第一虚拟机和所述第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据,包括:所述虚拟图形库服务,利用所述virtio桩设备的驱动程序提供的ioctl接口函数,从所述virtio桩设备的驱动程序获取其从所述共享内存区域读取的所述第一渲染指令数据。
在一些实施例中,根据所述第一渲染指令数据,利用所述第二虚拟机的硬件GPU设备,得到所述第一渲染指令数据对应的渲染结果,包括:利用预设算法,根据所述第一渲染指令数据,生成与所述硬件GPU适配的第二渲染指令数据;利用运行于内核态的GPU驱动,将所述第二渲染指令数据发送到所述硬件GPU设备,以使所述硬件GPU设备根据所述第二渲染指令数据,生成所述目标渲染任务的渲染结果;从所述内核态的GPU驱动,获取其从所述硬件GPU设备读取的所述渲染结果。
在一些实施例中,所述第一渲染指令数据为TGSI指令数据,所述第二渲染指令数据为GLSL指令数据;所述利用预设算法,根据所述第一渲染指令数据,生成与所述硬件GPU适配的第二渲染指令数据,包括:所述虚拟图形库服务,利用virglrenderer,将所述TGSI指令数据解析为GLSL指令数据;所述利用运行于内核态的GPU驱动,将所述第二渲染指令数据发送到所述硬件GPU设备,包括:利用与所述硬件GPU设备适配的libGLES,将所述GLSL指令数据解析为与所述GPU驱动适配的控制指令;调用所述GPU驱动提供的接口函数,执行所述控制指令,以将所述GLSL指令数据写入到所述硬件GPU设备;所述从所述内核态的GPU驱动,获取其从所述硬件GPU设备读取的所述渲染结果,包括:利用绑定在virglrenderer上的EGLContext,通过与所述硬件GPU设备适配的libGLES,从所述GPU驱动读取其从所述硬件GPU设备获取的渲染结果。
上述多虚拟机系统的渲染与显示装置的实施例中,各模块的具体处理及其带来的技术效果可分别参考对应方法实施例中的相关说明,在此不再赘述。
示例性车辆
图7是根据一示例性实施例示出的一种车辆700的框图。该车辆700可以是燃油车辆、混合动力车辆、电动车辆、燃料电池车辆或者其他类型的车辆。
参照图7,车辆700可包括多个子系统,例如,驱动系统710、控制系统720、感知系统730、通信系统740、信息显示系统750以及计算处理系统760。车辆700还可以包括更多或更少的子系统,且各个子系统还可以包括多个部件,在此不一一赘述。
该驱动系统710,包括为车辆700提供动力运动的组件。例如,发动机、能量源、传动装置等。
该控制系统720,包括为车辆700提供控制的组件。例如,车辆控制、座舱设备控制、驾驶辅助控制等。
该感知系统730,包括为车辆700提供周边环境感知的组件。例如,车辆定位系统、激光传感器、语音传感器、超声波传感器、摄像设备等。
该通信系统740,包括为车辆700提供通信连接的组件。例如,移动通信网络(如,3G、4G、5G网络等)、WiFi、蓝牙、车联网等。
该信息显示系统750,包括为车辆700提供各种信息显示的组件。例如,车辆信息显示、导航信息显示、娱乐信息显示等。
该计算处理系统760,包括为车辆700提供数据计算和处理能力的组件。计算处理系统760可包括至少一个处理器761和存储器762。处理器761可以执行存储在存储器762中的指令。
处理器761可以是任何常规的处理器,诸如商业可获得的CPU。处理器还可以包括诸如图像处理器(Graphic Process Unit,GPU),现场可编程门阵列(Field ProgrammableGate Array,FPGA)、片上系统(System on Chip,SOC)、专用集成芯片(ApplicationSpecific Integrated Circuit,ASIC)或它们的组合。
存储器762可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本公开实施例中,存储器762中存储有一组指令集,处理器761可以执行该指令集,以实现上述示例性实施例中任一所述的多虚拟机系统的渲染与显示方法的全部或部分步骤。
示例性电子设备
图8是根据一示例性实施例示出的一种电子设备800的框图。该电子设备800可以是车辆控制器、车载终端、车载计算机或者其他类型的电子设备。
参照图8,电子设备800,可包括至少一个处理器810和存储器820。处理器810可以执行存储在存储器820中的指令。处理器810通过数据总线与存储器820通信连接。除存储器820外,处理器810还可通过数据总线与输入设备830、输出设备840、通信设备850通信连接。
处理器810可以是任何常规的处理器,诸如商业可获得的CPU。处理器还可以包括诸如图像处理器(Graphic Process Unit,GPU),现场可编程门阵列(Field ProgrammableGate Array,FPGA)、片上系统(System on Chip,SOC)、专用集成芯片(ApplicationSpecific Integrated Circuit,ASIC)或它们的组合。
存储器820可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本公开实施例中,存储器820中存储有可执行指令,处理器810可以从所述存储器820中读取所述可执行指令,并执行所述指令以实现上述示例性实施例中任一所述的多虚拟机系统的渲染与显示方法的全部或部分步骤。
示例性计算机可读存储介质
除了上述方法和装置以外,本公开的示例性实施例还可以是计算机程序产品或存储有该计算机程序产品的计算机可读存储介质。该计算机产品中包括计算机程序指令,该计算机程序指令可被处理器执行,以实现上述示例性实施例中任一方法中描述的的全部或部分步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言以及脚本语言(例如Python)。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子包括:具有一个或多个导线电连接的静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘,或者上述的任意合适的组合。
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种多虚拟机系统的渲染与显示方法,其特征在于,对所述多虚拟机系统中的多个虚拟机通过虚拟化层共享包括硬件GPU设备以及硬件显卡的片上系统,所述方法包括:
所述虚拟化层,响应于接收到来自第一虚拟机的virtio-gpu驱动的内存映射I/O请求,利用在所述虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息;其中,所述第二虚拟机为拥有硬件GPU设备以及硬件显卡的虚拟机,所述第一虚拟机为所述多虚拟机系统中不拥有硬件GPU设备以及硬件显卡的虚拟机;
所述虚拟图形库服务,响应于接收到所述渲染指令到达信息,利用ioctl机制,获取所述virtio-gpu驱动存放于所述第一虚拟机和所述第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据;以及
根据所述第一渲染指令数据,利用所述第二虚拟机的硬件GPU设备,得到所述第一渲染指令数据对应的渲染结果;
利用运行于所述第二虚拟机的显卡驱动,将根据所述渲染结果得到的待显示图像数据发送到所述第二虚拟机的硬件显卡,以使所述硬件显卡,将所述渲染结果显示于与所述硬件显卡连接的目标显示设备。
2.根据权利要求1所述的方法,其特征在于,所述virtio设备包括virtio代理设备和virtio桩设备;
所述利用在所述虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息,包括:
所述virtio代理设备,响应于监听到所述virtio-gpu驱动的内存映射I/O请求,指示所述virtio桩设备向所述虚拟图形库服务发送所述渲染指令到达信息。
3.根据权利要求2所述的方法,其特征在于,所述virtio桩设备通过以下方式向所述虚拟图形库服务发送所述渲染指令到达信息:
所述virtio桩设备,触发预设类型的中断;
运行于所述第一虚拟机中的内核态的virtio桩设备的驱动程序,响应于接收到所述预设类型的中断,向所述虚拟图形库服务发送所述渲染指令到达信息。
4.根据权利要求3所述的方法,其特征在于,所述利用ioctl机制,获取所述virtio-gpu驱动存放于所述第一虚拟机和所述第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据,包括:
所述虚拟图形库服务,利用所述virtio桩设备的驱动程序提供的ioctl接口函数,从所述virtio桩设备的驱动程序获取其从所述共享内存区域读取的所述第一渲染指令数据。
5.根据权利要求4所述的方法,其特征在于,根据所述第一渲染指令数据,利用所述第二虚拟机的硬件GPU设备,得到所述第一渲染指令数据对应的渲染结果,包括:
利用预设算法,根据所述第一渲染指令数据,生成与所述硬件GPU适配的第二渲染指令数据;
利用运行于内核态的GPU驱动,将所述第二渲染指令数据发送到所述硬件GPU设备,以使所述硬件GPU设备根据所述第二渲染指令数据,生成所述目标渲染任务的渲染结果;
从所述内核态的GPU驱动,获取其从所述硬件GPU设备读取的所述渲染结果。
6.根据权利要求5所述的方法,其特征在于,所述第一渲染指令数据为TGSI指令数据,所述第二渲染指令数据为GLSL指令数据;
所述利用预设算法,根据所述第一渲染指令数据,生成与所述硬件GPU适配的第二渲染指令数据,包括:
所述虚拟图形库服务,利用virglrenderer,将所述TGSI指令数据解析为GLSL指令数据;
所述利用运行于内核态的GPU驱动,将所述第二渲染指令数据发送到所述硬件GPU设备,包括:
利用与所述硬件GPU设备适配的libGLES,将所述GLSL指令数据解析为与所述GPU驱动适配的控制指令;
调用所述GPU驱动提供的接口函数,执行所述控制指令,以将所述GLSL指令数据写入到所述硬件GPU设备;
所述从所述内核态的GPU驱动,获取其从所述硬件GPU设备读取的所述渲染结果,包括:
利用绑定在virglrenderer上的EGLContext,通过与所述硬件GPU设备适配的libGLES,从所述GPU驱动读取其从所述硬件GPU设备获取的渲染结果。
7.一种多虚拟机系统的渲染与显示装置,其特征在于,包括:
发送模块,用于使所述虚拟化层,响应于接收到来自第一虚拟机的virtio-gpu驱动的内存映射I/O请求,利用在所述虚拟化层实现的virtio设备,向运行在第二虚拟机的用户态的虚拟图形库服务发送渲染指令到达信息;其中,所述第二虚拟机为拥有硬件GPU设备以及硬件显卡资源的虚拟机,所述第一虚拟机为所述多虚拟机系统中不拥有硬件GPU设备以及硬件显卡资源的虚拟机;
第一获取模块,用于使所述虚拟图形库服务,响应于接收到所述渲染指令到达信息,利用ioctl机制,获取所述virtio-gpu驱动存放于所述第一虚拟机和所述第二虚拟机之间的共享内存区域的用于执行目标渲染任务的第一渲染指令数据;
第二获取模块,用于根据所述第一渲染指令数据,利用所述第二虚拟机的硬件GPU设备,得到所述第一渲染指令数据对应的渲染结果;
显示模块,用于利用运行于所述第二虚拟机的显卡驱动,将根据所述渲染结果得到的待显示图像数据发送到所述第二虚拟机的硬件显卡,以使所述硬件显卡,将所述渲染结果显示于与所述硬件显卡连接的目标显示设备。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现所述权利要求1-6中任一所述的多虚拟机系统的渲染与显示方法。
9.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该程序指令被处理器执行时,以实现所述权利要求1-6中任一所述的多虚拟机系统的渲染与显示方法的步骤。
10.一种车辆,其特征在于,
存储有一组指令集,所述指令集被所述车辆执行,以实现所述权利要求1-6中任一所述的多虚拟机系统的渲染与显示方法。
CN202311848163.0A 2023-12-28 2023-12-28 一种多虚拟机系统的渲染与显示方法、装置和电子设备 Pending CN117850721A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311848163.0A CN117850721A (zh) 2023-12-28 2023-12-28 一种多虚拟机系统的渲染与显示方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311848163.0A CN117850721A (zh) 2023-12-28 2023-12-28 一种多虚拟机系统的渲染与显示方法、装置和电子设备

Publications (1)

Publication Number Publication Date
CN117850721A true CN117850721A (zh) 2024-04-09

Family

ID=90543250

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311848163.0A Pending CN117850721A (zh) 2023-12-28 2023-12-28 一种多虚拟机系统的渲染与显示方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN117850721A (zh)

Similar Documents

Publication Publication Date Title
CN109388467B (zh) 地图信息显示方法、装置、计算机设备及存储介质
CN112486609B (zh) 一种基于云桌面的虚拟显卡实现方法和装置
CN108124475B (zh) 虚拟系统蓝牙通信方法及装置、虚拟系统、存储介质及电子设备
US20170004808A1 (en) Method and system for capturing a frame buffer of a virtual machine in a gpu pass-through environment
US9779685B2 (en) Display control device for vehicle to generate native display images and versatile display images
JP2010257454A (ja) 遠隔の表示部へ伝送するためにフレームバッファをコピーする方法及びシステム
CN113342703B (zh) 一种渲染效果实时调试方法、装置、开发设备及存储介质
US11055154B2 (en) Screen-shooting method and device for guest operating system in computer apparatus
US20200210213A1 (en) Display method of multi-application based on android system, and terminal device
US20230410245A1 (en) Cloud desktop display method and system
CN113419845A (zh) 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质
CN113467865A (zh) 信息处理方法、装置、电子设备及存储介质
CN113396389A (zh) 用于分离式渲染的标准化的api的方法和设备
US10733689B2 (en) Data processing
CN115185408A (zh) 一种车载娱乐信息显示方法、装置、设备和介质
CN117850721A (zh) 一种多虚拟机系统的渲染与显示方法、装置和电子设备
CN115373618B (zh) 一种多屏显示方法、装置、车机及存储介质
US9684529B2 (en) Firmware and metadata migration across hypervisors based on supported capabilities
CN116719587A (zh) 屏幕显示方法、电子设备及计算机可读存储介质
CN112100409A (zh) 多媒体信息显示方法及装置、存储介质、终端
CN108235822B (zh) 虚拟sim卡的实现方法及装置、存储介质、电子设备
CN117851051A (zh) 在多虚拟机系统中共享硬件gpu的方法、装置和电子设备
KR20220048311A (ko) 가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법
CN117891624B (zh) 基于虚拟化设备的应用间通信方法、装置及电子设备
CN112698874B (zh) 一种麒麟系统中ast显卡和独立显卡同时显示的方法

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