一种实现DirectDraw加速的方法技术

技术编号:16528688 阅读:65 留言:0更新日期:2017-11-09 20:21
本发明专利技术公开一种实现DirectDraw加速的方法,涉及虚拟机图形展示领域;对KVM下的Windows虚拟机安装修改的QXL驱动,使Windows系统的DirectDraw功能开启,将DirectDraw.dll文件重定向到远程客户端,与远程客户端建立连接,利用VirtualBox视频加速方式转发DirectDraw的数据,将生成的图像与SPICE协议结合,完成DirectDraw的加速过程。

【技术实现步骤摘要】
一种实现DirectDraw加速的方法
本专利技术公开一种实现DirectDraw加速的方法,涉及虚拟机图形展示领域,具体地说是在KVM-Windows虚拟机下实现DirectDraw加速的方法。
技术介绍
KVM虚拟化技术中,Windows虚拟机是非常重要的一个分支,作为桌面系统的代表,集娱乐、教育等于一体,但在KVM虚拟化下图形图像表现能力不足,由于KVM本身设计缺陷,导致非常重要的图形加速功能缺失。其中图形加速的根本是DirectDraw,KVM在虚拟机中使用的是QXL虚拟显卡,此显卡的功能是截取Windows底层GDI命令,Windows系统XPDM驱动模型下针对图形操作分为两部分,分别是使用软件加速的GDI和使用硬件加速的DirectDraw。由于这两部分图形加速的目的不同,Windows将这两部分完全分离开来,因此KVM在虚拟机中使用的QXL驱动对DirectDraw完全不支持。结果表现为当前KVM下的Windows虚拟机是不支持DirectDraw的。为了利用DirectDraw在Windows下硬件加速特性,本专利技术公开一种实现DirectDraw加速的方法,通过对QXL驱动进行修改,同时修改Windows系统文件来远程实现DirectDraw加速功能,使KVM在虚拟机中使用的QXL虚拟显卡可以支持DirectDraw,并完成DirectDraw的自身加速。
技术实现思路
本专利技术针对现有技术存在的不足和问题,提供一种实现DirectDraw加速的方法,使KVM在虚拟机中使用的QXL虚拟显卡可以支持DirectDraw,并完成DirectDraw的自身加速。本专利技术提出的具体方案是:一种实现DirectDraw加速的方法,KVM下的Windows虚拟机安装修改的QXL驱动,使Windows系统的DirectDraw功能开启,将DirectDraw.dll文件重定向到远程客户端,与远程客户端建立连接,利用VirtualBox视频加速方式转发DirectDraw的数据,将生成的图像与SPICE协议结合,完成DirectDraw的加速过程。所述的方法中,所述VirtualBox视频加速方式为VirtualBox的2D加速,通过HOOK系统的DirectDraw.dll将DirectDraw的API改写,与远程客户端建立HGSMI连接,转发DirectDraw的数据。所述的方法中,所述DirectDraw的数据主要包括设备上下文的切换数据、多线程访问硬件设备数据、数据流的转储数据。所述的方法中,所述VirtualBox对DirectDraw的数据的转发是将数据与函数分割开,通过将整套数据流切割成SPU片段,将SPU片段通过网络发送给远程客户端。所述的方法,具体步骤为:KVM-Windows虚拟机安装修改的QXL驱动源码,使Windows系统的DirectDraw功能开启;查询DirectDraw功能开启后,将DirectDraw.dll文件重定向到远程客户端,与远程客户端建立连接,利用VirtualBox视频加速方式转发DirectDraw的数据,将生成的图像与SPICE协议结合,完成DirectDraw的加速过程。本专利技术的有益之处是:本专利技术公开一种实现DirectDraw加速的方法,对KVM下的Windows虚拟机安装修改的QXL驱动,使Windows系统的DirectDraw功能开启,将DirectDraw.dll文件重定向到远程客户端,与远程客户端建立连接,利用VirtualBox视频加速方式转发DirectDraw的数据,将生成的图像与SPICE协议结合,完成DirectDraw的加速过程;利用本专利技术方法,通过对QXL驱动进行修改,同时修改Windows系统文件来远程实现DirectDraw加速功能,使KVM在虚拟机中使用的QXL虚拟显卡可以支持DirectDraw,并完成DirectDraw的自身加速。附图说明图1本专利技术中QXL驱动查询DirectDraw是否开启的过程示意图;图2本专利技术DirectDraw加速流程框图;图3本专利技术中利用VirtualBox对DirectDraw的数据的转发流程示意图。具体实施方式本专利技术提供一种实现DirectDraw加速的方法,KVM下的Windows虚拟机安装修改的QXL驱动,使Windows系统的DirectDraw功能开启,将DirectDraw.dll文件重定向到远程客户端,与远程客户端建立连接,利用VirtualBox视频加速方式转发DirectDraw的数据,将生成的图像与SPICE协议结合,完成DirectDraw的加速过程。结合附图及具体实施,对本专利技术做进一步说明。其中在KVM-Windows虚拟机下实现DirectDraw加速,远程客户端使用的是Windows系统,传输是通过SPICE协议。利用本专利技术方法,参考图1-图3,具体步骤为:KVM-Windows虚拟机安装修改的QXL驱动源码,使Windows系统的DirectDraw功能开启;在远程客户端安装CrServer,CrServer主要包含有libthin3dhost.dll这个动态库文件;查询DirectDraw功能开启后,将DirectDraw.dll文件重定向到远程客户端,与远程客户端建立连接,其中因为虚拟机本身是没有GPU,只有远程客户端有GPU,利用VirtualBox的2D加速,通过HOOK系统的DirectDraw.dll将DirectDraw的API改写,与远程客户端建立HGSMI连接,转发DirectDraw的数据;与远程客户端建立连接时选择TCP连接;上述DirectDraw的数据主要包括设备上下文的切换数据、多线程访问硬件设备数据、数据流的转储数据;而VirtualBox对DirectDraw的数据的转发是将数据与函数分割开,通过将整套数据流切割成SPU片段,将SPU片段通过网络发送给远程客户端,在远程客户端将SPU还原成原始数据,将生成的图像与SPICE协议结合,完成DirectDraw的加速过程。本文档来自技高网...
一种实现DirectDraw加速的方法

【技术保护点】
一种实现DirectDraw加速的方法,其特征是KVM下的Windows虚拟机安装修改的QXL驱动,使Windows系统的DirectDraw功能开启,将DirectDraw.dll文件重定向到远程客户端,与远程客户端建立连接,利用VirtualBox视频加速方式转发DirectDraw的数据,将生成的图像与SPICE协议结合,完成DirectDraw的加速过程。

【技术特征摘要】
1.一种实现DirectDraw加速的方法,其特征是KVM下的Windows虚拟机安装修改的QXL驱动,使Windows系统的DirectDraw功能开启,将DirectDraw.dll文件重定向到远程客户端,与远程客户端建立连接,利用VirtualBox视频加速方式转发DirectDraw的数据,将生成的图像与SPICE协议结合,完成DirectDraw的加速过程。2.根据权利要求1所述的方法,其特征是所述VirtualBox视频加速方式为VirtualBox的2D加速,通过HOOK系统的DirectDraw.dll将DirectDraw的API改写,与远程客户端建立HGSMI连接,转发DirectDraw的数据。3.根据权利要求1或2所述的方法,其特征是所述Direct...

【专利技术属性】
技术研发人员:侯亚杰吴登勇王则陆李萌
申请(专利权)人:山东超越数控电子有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1