CN114035903A - 实现Linux KVM虚拟机支持3D应用的方法及系统 - Google Patents
实现Linux KVM虚拟机支持3D应用的方法及系统 Download PDFInfo
- Publication number
- CN114035903A CN114035903A CN202111363291.7A CN202111363291A CN114035903A CN 114035903 A CN114035903 A CN 114035903A CN 202111363291 A CN202111363291 A CN 202111363291A CN 114035903 A CN114035903 A CN 114035903A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- spice
- application
- client
- data
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- 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/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本公开提供了一种实现Linux KVM虚拟机支持3D应用的方法及系统,包括:对安装好的虚拟机进行物理显卡配置,并新增虚拟串口设备;在所述虚拟机中安装X协议C语言绑定相关依赖库,基于所述相关依赖库中的库函数,抓取所述虚拟机中的3D应用桌面图像数据;将所述3D应用桌面图像数据中的普通图像及视频图像分别进行压缩,并将压缩后的数据写入虚拟串口设备;通过spice‑server接收虚拟串口设备中的数据,并转发到所述客户端;所述客户端通过spice‑gtk将普通图像及视频图像解码并渲染到客户端显示界面的特定位置。所述方案通过在虚拟机中进行桌面图像的抓取,并通过spice协议进行桌面图像的传输,有效解决了Linux虚拟机不支持3D应用的问题。
Description
技术领域
本公开属于计算机虚拟化技术领域,尤其涉及一种实现Linux KVM虚拟机支持3D应用的方法及系统。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。
在某些专业领域,比如电网,银行领域需要用到自己定制的Linux虚拟机,发明人发现,由于3D应用表现逼真的视觉效果,其被广泛应用于各行各业,但是,目前Linux虚拟机不支持3D应用,无法满足专业领域用户对于3D应用需求。
发明内容
本公开为了解决上述问题,提供了一种实现Linux KVM虚拟机支持3D应用的方法及系统,所述方案通过在虚拟机中进行桌面图像的抓取,并通过spice协议进行桌面图像的传输,有效解决了Linux虚拟机不支持3D应用的问题。
根据本公开实施例的第一个方面,提供了一种实现Linux KVM虚拟机支持3D应用的方法,其应用于安装有虚拟化软件、Linux虚拟机及spice-server的宿主机以及安装有spice-gtk的客户端,所述方法包括:
对安装好的虚拟机进行物理显卡配置,并新增虚拟串口设备;
在所述虚拟机中安装X协议C语言绑定相关依赖库,基于所述相关依赖库中的库函数,抓取所述虚拟机中的3D应用桌面图像数据;
将所述3D应用桌面图像数据中的普通图像及视频图像分别进行压缩,并将压缩后的数据写入虚拟串口设备;
通过spice-server接收虚拟串口设备中的数据,并转发到所述客户端;
所述客户端通过spice-gtk将普通图像及视频图像解码并渲染到客户端显示界面的特定位置。
进一步的,所述通过spice-server接收虚拟串口设备中的数据,并转发到所述客户端,具体为:所述spice-server接收虚拟串口发送的数据,将普通图像和视频图像以预先设定的格式发送给spice-gtk,所述spice-gtk根据图像格式以及坐标位置,将图像解码并渲染到客户端显示界面的特定位置。
进一步的,所述将所述3D应用桌面图像数据中的普通图像及视频图像分别进行压缩,具体为:对所述普通图像进行glz无损压缩,所述视频图像进行H264压缩。
进一步的,所述物理显卡的配置采用显卡穿透方式,将宿主机已有的物理显卡以独占的形式分配给所述虚拟机。
进一步的,所述虚拟化软件采用QEMU-KVM,利用KVM实现CPU和内存的虚拟化,利用QEMU实现I/O设备的虚拟化。
根据本公开实施例的第二个方面,提供了一种实现Linux KVM虚拟机支持3D应用的系统,其应用于安装有虚拟化软件、Linux虚拟机及spice-server的宿主机以及安装有spice-gtk的客户端,所述系统包括:
配置单元,其用于对安装好的虚拟机进行物理显卡配置,并新增虚拟串口设备;
图像数据获取单元,其用于在所述虚拟机中安装X协议C语言绑定相关依赖库,基于所述相关依赖库中的库函数,抓取所述虚拟机中的3D应用桌面图像数据;
图像数据传输单元,其用于将所述3D应用桌面图像数据中的普通图像及视频图像分别进行压缩,并将压缩后的数据写入虚拟串口设备;通过spice-server接收虚拟串口设备中的数据,并转发到所述客户端;
显示单元,其用于所述客户端基于spice-gtk中的库函数将普通图像及视频图像解码并渲染到客户端显示界面的指定位置。
根据本公开实施例的第三个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上运行的计算机程序,所述处理器执行所述程序时实现所述的一种实现LinuxKVM虚拟机支持3D应用的方法。
根据本公开实施例的第四个方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述的一种实现Linux KVM虚拟机支持3D应用的方法。
与现有技术相比,本公开的有益效果是:
本公开所述方案提供了一种实现Linux KVM虚拟机支持3D应用的方法及系统,所述方案通过在虚拟机中进行3D应用桌面图像的抓取,并通过新增虚拟串口设备,增加了一条新的通道用于虚拟机内部抓取3D应用图像,通过上述方式在不改变spice原有架构的情况下使其支持3D应用,有效解决了Linux虚拟机不支持3D应用的问题。
本公开附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1为本公开实施例一中所述的实现Linux KVM虚拟机支持3D应用的方法流程图;
图2为本公开实施例二中所述的实现Linux KVM虚拟机支持3D应用的系统结构示意图。
具体实施方式
下面结合附图与实施例对本公开做进一步说明。
应该指出,以下详细说明都是示例性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
术语解释:
KVM:全称为Kernel-based Virtual Machine,即内核级虚拟机,其是一个开源的系统虚拟化模块;
QEMU:全称为Quick Emulator,其是一款linux下的虚拟机管理软件;
XCB:全称为X protocol C-language Binding,即X协议C语言绑定,其是一种替代Xlib(Xlib为用c语言编写的X Window System协议的客户端库),其具有占用空间小,延迟隐藏,直接访问协议,提高线程的支持,和可扩展性。
spice:是由Qumranet开发的开源网络协议,其提供与虚拟桌面设备的远程交互实现,主要应用在桌面虚拟化,支持图像,2D传输;
glz:是一种无损压缩方法;
H264:是一种视频压缩方法;
spice-server:spice协议中的服务器端,被安装于宿主机;
spice-gtk:spice协议中的客户端,被安装于终端设备;
vaapi:全称为Video Acceleration API,即视频加速API,其是一种非专有且免版税的开源硬解码库;
mppvideodec:同上,也是一种硬解码库。
实施例一:
本实施例的目的是提供一种实现Linux KVM虚拟机支持3D应用的方法。
如图1所示,一种实现Linux KVM虚拟机支持3D应用的方法,其应用于安装有虚拟化软件、Linux虚拟机及spice-server的宿主机以及安装有spice-gtk的客户端,所述方法包括:
步骤1:对安装好的虚拟机进行物理显卡配置,并新增虚拟串口设备;
其中,所述步骤1中物理显卡的配置采用显卡穿透方式,将宿主机已有的物理显卡以独占的形式分配给所述虚拟机,由于所述虚拟机以独占的方式访问宿主机的显卡设备,所述显卡能够为虚拟机提供高性能的显卡能力。
所述新增虚拟串口设备的原因是,现有的spice协议是不支持3D应用的,通过新增虚拟串口设备,增加了一条新的通道用于虚拟机内部抓取3D应用图像,通过上述方式在不改变spice原有架构的情况下使其支持3D应用。
步骤2:在所述虚拟机中安装X协议C语言绑定相关依赖库,基于所述相关依赖库中的库函数,抓取所述虚拟机中的3D应用桌面图像数据;
其中,所述虚拟机中采用X11位图显示的视窗系统,也称为X Window系统,所述步骤2具体为:抓取X11的3D应用桌面图像数据,并对图像数据进行分类,分为普通图像和视频图像。
步骤3:将所述3D应用桌面图像数据中的普通图像及视频图像分别进行压缩,并将压缩后的数据写入虚拟串口设备;
其中,所述步骤3具体为:对普通图像采用glz无损压缩,视频图像采用H264压缩,并将处理后的数据写入虚拟串口设备。
步骤4:通过spice-server接收虚拟串口设备中的数据,并转发到所述客户端;
其中,所述步骤4具体为:所述spice-server接收虚拟串口发送的数据,将普通图像和视频图像以预先设定的格式发送给spice-gtk,所述spice-gtk根据图像格式以及坐标位置,将图像解码并渲染到客户端显示界面的特定位置。此处,对spice-server进行了扩展,使其在原有基础上增加了一条新的通道用于传输虚拟机内部agent代理抓取到的3D应用图像。
作为可选则的实施方式,为提高解码效率,可以根据终端计算能力选择支持的硬解码方式,vaapi,mppvideodec等硬解码库,提升用户体验。
步骤5:所述客户端通过spice-gtk将普通图像及视频图像解码并渲染到客户端显示界面的特定位置。
作为进一步的限定,所述虚拟化软件采用QEMU-KVM,利用KVM实现CPU和内存的虚拟化,利用QEMU实现I/O设备的虚拟化。
实施例二:
本实施例的目的是提供一种实现Linux KVM虚拟机支持3D应用的系统。
如图2所示,一种实现Linux KVM虚拟机支持3D应用的系统,其应用于安装有虚拟化软件、Linux虚拟机及spice-server的宿主机以及安装有spice-gtk的客户端,所述系统包括:
配置单元,其用于对安装好的虚拟机进行物理显卡配置,并新增虚拟串口设备;
图像数据获取单元,其用于在所述虚拟机中安装X协议C语言绑定相关依赖库,基于所述相关依赖库中的库函数,抓取所述虚拟机中的3D应用桌面图像数据;
图像数据传输单元,其用于将所述3D应用桌面图像数据中的普通图像及视频图像分别进行压缩,并将压缩后的数据写入虚拟串口设备;通过spice-server接收虚拟串口设备中的数据,并转发到所述客户端;
显示单元,其用于所述客户端基于spice-gtk中的库函数将普通图像及视频图像解码并渲染到客户端显示界面的指定位置。
在更多实施例中,还提供:
一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成实施例一中所述的方法。为了简洁,在此不再赘述。
应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASI C,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一中所述的方法。
实施例一中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元即算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
上述实施例提供的一种实现Linux KVM虚拟机支持3D应用的方法及系统可以实现,具有广阔的应用前景。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.实现Linux KVM虚拟机支持3D应用的方法,其特征在于,其应用于安装有虚拟化软件、Linux虚拟机及spice-server的宿主机以及安装有spice-gtk的客户端,所述方法包括:
对安装好的虚拟机进行物理显卡配置,并新增虚拟串口设备;
在所述虚拟机中安装X协议C语言绑定相关依赖库,基于所述相关依赖库中的库函数,抓取所述虚拟机中的3D应用桌面图像数据;
将所述3D应用桌面图像数据中的普通图像及视频图像分别进行压缩,并将压缩后的数据写入虚拟串口设备;
通过spice-server接收虚拟串口设备中的数据,并转发到所述客户端;
所述客户端通过spice-gtk将普通图像及视频图像解码并渲染到客户端显示界面的特定位置。
2.如权利要求1所述的实现Linux KVM虚拟机支持3D应用的方法,其特征在于,所述通过spice-server接收虚拟串口设备中的数据,并转发到所述客户端,具体为:所述spice-server接收虚拟串口发送的数据,将普通图像和视频图像以预先设定的格式发送给spice-gtk,所述spice-gtk根据图像格式以及坐标位置,将图像解码并渲染到客户端显示界面的特定位置。
3.如权利要求2所述的实现Linux KVM虚拟机支持3D应用的方法,其特征在于,所述图像解码采用硬解码方式,具体采用vaapi或mppvideodec。
4.如权利要求1所述的实现Linux KVM虚拟机支持3D应用的方法,其特征在于,所述将所述3D应用桌面图像数据中的普通图像及视频图像分别进行压缩,具体为:对所述普通图像进行glz无损压缩,所述视频图像进行H264压缩。
5.如权利要求1所述的实现Linux KVM虚拟机支持3D应用的方法,其特征在于,所述物理显卡的配置采用显卡穿透方式,将宿主机已有的物理显卡以独占的形式分配给所述虚拟机。
6.如权利要求1所述的实现Linux KVM虚拟机支持3D应用的方法,其特征在于,所述虚拟化软件采用QEMU-KVM,利用KVM实现CPU和内存的虚拟化,利用QEMU实现I/O设备的虚拟化。
7.如权利要求1所述的实现Linux KVM虚拟机支持3D应用的方法,其特征在于,所述宿主机为通用PC机或服务器。
8.实现Linux KVM虚拟机支持3D应用的系统,其特征在于,其应用于安装有虚拟化软件、Linux虚拟机及spice-server的宿主机以及安装有spice-gtk的客户端,所述系统包括:
配置单元,其用于对安装好的虚拟机进行物理显卡配置,并新增虚拟串口设备;
图像数据获取单元,其用于在所述虚拟机中安装X协议C语言绑定相关依赖库,基于所述相关依赖库中的库函数,抓取所述虚拟机中的3D应用桌面图像数据;
图像数据传输单元,其用于将所述3D应用桌面图像数据中的普通图像及视频图像分别进行压缩,并将压缩后的数据写入虚拟串口设备;通过spice-server接收虚拟串口设备中的数据,并转发到所述客户端;
显示单元,其用于所述客户端基于spice-gtk中的库函数将普通图像及视频图像解码并渲染到客户端显示界面的指定位置。
9.一种电子设备,包括存储器、处理器及存储在存储器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7任一项所述的一种实现Linux KVM虚拟机支持3D应用的方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7任一项所述的一种实现Linux KVM虚拟机支持3D应用的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111363291.7A CN114035903A (zh) | 2021-11-17 | 2021-11-17 | 实现Linux KVM虚拟机支持3D应用的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111363291.7A CN114035903A (zh) | 2021-11-17 | 2021-11-17 | 实现Linux KVM虚拟机支持3D应用的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114035903A true CN114035903A (zh) | 2022-02-11 |
Family
ID=80144664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111363291.7A Pending CN114035903A (zh) | 2021-11-17 | 2021-11-17 | 实现Linux KVM虚拟机支持3D应用的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114035903A (zh) |
-
2021
- 2021-11-17 CN CN202111363291.7A patent/CN114035903A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2922867C (en) | Desktop-cloud-based media control method and device | |
US9189261B2 (en) | Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine | |
CN111433743B (zh) | 一种app远程控制方法及相关设备 | |
US8629878B2 (en) | Extension to a hypervisor that utilizes graphics hardware on a host | |
JP5129151B2 (ja) | マルチユーザ・ディスプレイ・プロキシ・サーバ | |
US8453148B1 (en) | Method and system for image sequence transfer scheduling and restricting the image sequence generation | |
EP2622463B1 (en) | Instant remote rendering | |
CN104660687A (zh) | 虚拟桌面显示的实现方法和系统 | |
US20160124760A1 (en) | Cloud computing system and method | |
US11403121B2 (en) | Streaming per-pixel transparency information using transparency-agnostic video codecs | |
CN103412701B (zh) | 远程桌面图像处理方法及装置 | |
US20140074911A1 (en) | Method and apparatus for managing multi-session | |
US20140108940A1 (en) | Method and system of remote communication over a network | |
CN111240631A (zh) | 基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及系统 | |
WO2018120992A1 (zh) | 一种窗口渲染方法及终端 | |
CN103164227B (zh) | 一种窗口图像的采集方法及装置 | |
US9460481B2 (en) | Systems and methods for processing desktop graphics for remote display | |
CN102054051A (zh) | 记录显示屏幕的内容 | |
US20170109113A1 (en) | Remote Image Projection Method, Sever And Client Device | |
CN114035903A (zh) | 实现Linux KVM虚拟机支持3D应用的方法及系统 | |
CN114222185B (zh) | 视频播放方法、终端设备及存储介质 | |
CN111460342A (zh) | 页面的渲染展示方法、装置、电子设备及计算机存储介质 | |
CN113835816A (zh) | 一种虚拟机桌面显示方法、装置、设备及可读存储介质 | |
WO2023087827A9 (zh) | 渲染方法及装置 | |
CN117609646A (zh) | 场景渲染方法、装置、电子设备及存储介质 |
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 |