CN111381914B - 一种云桌面虚机实现3d能力的方法和系统 - Google Patents

一种云桌面虚机实现3d能力的方法和系统 Download PDF

Info

Publication number
CN111381914B
CN111381914B CN201811638931.9A CN201811638931A CN111381914B CN 111381914 B CN111381914 B CN 111381914B CN 201811638931 A CN201811638931 A CN 201811638931A CN 111381914 B CN111381914 B CN 111381914B
Authority
CN
China
Prior art keywords
module
service interface
interface
rendering execution
called
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.)
Active
Application number
CN201811638931.9A
Other languages
English (en)
Other versions
CN111381914A (zh
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201811638931.9A priority Critical patent/CN111381914B/zh
Priority to PCT/CN2019/129227 priority patent/WO2020135721A1/zh
Publication of CN111381914A publication Critical patent/CN111381914A/zh
Application granted granted Critical
Publication of CN111381914B publication Critical patent/CN111381914B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • 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/4401Bootstrapping
    • 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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/451Execution arrangements for user interfaces

Abstract

一种云桌面虚机实现3D能力的方法和系统,对3D API的调用传递到显卡驱动模型模块时,显卡驱动模型模块通过调用引导模块中的业务接口,将对3D API的调用要执行的3D图形指令引导到渲染执行模块执行;渲染执行模块基于云桌面分配的虚拟硬件资源,将3D图形指令转换为2D图形后进行图形显示。本申请还提供了一种云桌面虚机实现3D能力的系统,包括显卡驱动模型模块、引导模块和渲染执行模块。本申请将3D规范的业务接口注入到显卡驱动模型中实现3D API的重定向,避免了挂钩或替换3D运行时库的操作,不会破坏操作系统的原生文件。

Description

一种云桌面虚机实现3D能力的方法和系统
技术领域
本发明实施例涉及但不限于计算机领域,更具体地,涉及一种云桌面虚 机实现3D能力的方法和系统。
背景技术
云桌面作为云计算产业中落地最早的项目之一,市场规模巨大。近年来, 云桌面在国内蓬勃发展,包括众多学校、政府、企业等均陆续采用云桌面技 术替代传统PC。云桌面是企业IT架构的一次革命,带来移动计算体验的同 时,满足了很多特定行业的需要。
云桌面中的虚拟化技术已成功将许多物理设备虚拟化,抽象成内存或硬 盘中的数据结构,但由于GPU(Graphic Process Unit,图形处理单元)缺乏 统一的硬件接口和开放的体系规范,从未曾被完善的虚拟化。云桌面虚拟机 的3D(three-Dimensional,三维)处理需要借助非虚拟化或者半虚拟化的方 案来实现。目前业界为了实现和满足云桌面虚拟机3D图像渲染显示的需求, 提出了一些解决方案,这些实施方案可划分为以下三种方向:
独占使用;
独占使用,又称显卡透传,是绕过虚拟机的管理系统,将GPU使用权直 接分配给某一台虚拟机,任何时刻都只有一台虚拟机拥有GPU的使用权限。 这种3D能力的实现方式使GPU的独立性和完整性得以保存,3D效果和非 虚拟化条件下相近,但是使用成本较贵,另外在虚拟机中DirectDraw(DirectX 中关于视频输入输出的基本部分)加速和纹理加速功能受限无法开启,系统 兼容性不理想,而且与云计算虚拟机动态分配、资源共享的理念不符
GPU虚拟化;
GPU虚拟化是目前云桌面虚拟机3D能力实现及部署的热门技术,能够 满足云桌面3D图形图像处理和通用计算的要求,实现了虚拟环境完全隔离、 迁移和共享的需求,但是该技术市场目前被NVIDA、AMD、INTEL等厂商 的企业级系列产品所垄断,产品可选范围窄,价格昂贵,并且要求虚拟化主 机具备显卡插槽,对虚级化主机要求较高,系统兼容性不好,需要专门的部 署和配置。
API(Application Programming Interface,应用程序编程接口)重定向;
API重定向是指对GPU相关的应用程序编程接口在应用层进行拦截,然 后使用重定向或者模拟方法实现相应功能,将完成的结果返回给对应的应用 程序。但这种方法可能会造成操作系统的不稳定、兼容性变差,致使操作系 统僵死、卡顿、弹提示框等异常。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求 的保护范围。
本发明实施例提供了一种云桌面虚机实现3D能力的方法,包括:
对3D API的调用传递到显卡驱动模型模块时,所述显卡驱动模型模块 通过调用引导模块中的业务接口,将所述对3D API的调用要执行的3D图形 指令引导到渲染执行模块执行;
所述渲染执行模块基于云桌面分配的虚拟硬件资源,将所述3D图形指 令转换为2D图形后进行图形显示。
本发明实施例提供了一种云桌面虚机实现3D能力的系统,包括:
显卡驱动模型模块,设置为在对3D应用程序编程接口API的调用传递 到所述显卡驱动模型模块时,调用引导模块中的业务接口;
所述引导模块,设置为在所述引导模块中的业务接口被调用后,将所述 调用要执行的3D图形指令引导到渲染执行模块执行;
所述渲染执行模块,设置为基于云桌面分配的虚拟硬件资源,将所述对 3D API的调用要执行的3D图形指令转换为2D图形后进行图形显示。
本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在所 述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计 算程序时实现如本发明任一实施例所述的方法的处理。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序, 所述计算机程序被处理器执行时实现如发明任一实施例所述的方法的处理。
本发明实施例的方法和系统中,渲染执行模块将3D图形指令转换为2D 图形后显示,因为显示的是2D图形,不依赖于GPU资源,其所基于的云桌 面分配的虚拟硬件资源也不需要包括虚拟GPU资源。本发明的上述实施例避 免了GPU虚拟化方法实现3D图像渲染显示时存在的相关产品可选范围窄, 价格昂贵,要求虚拟化主机具备显卡插槽,系统兼容性不好,需要专门的部 署和配置等问题。同时,本发明上述实施例的系统是将3D规范的业务接口 注入到显卡驱动模型中,实现3D API的重定向,避免了挂钩或替换操作系 统的3D运行时库的操作,不会破坏操作系统的原生文件。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部 分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明 技术方案的限制。
图1是本发明一示例性实施例的一种云桌面虚机实现3D能力的系统的 示意图;
图2是图1所示系统中的引导模块采用运动时库引导模块实现的示意图;
图3是图1所示系统中的引导模块采用接口转换模块实现的示意图;
图4是图1所示系统中的引导模块采用运动时库引导模块和接口转换模 块实现的示意图;
图5是本发明一示例性实施例的一种云桌面虚机实现3D能力的方法的 流程图;
图6是本发明一示例性实施例的用于实现云桌面虚机实现3D能力的计 算机设备的示意图;
图7是本发明一示例性实施例的模块相对关系及调用时序图;
图8是Win7显示系统的逻辑模型图;
图9是本发明一示例性实施例在Win7中使用OpenGL 3D渲染的模型图;
图10是图9所示实施例在Win7中使用OpenGL 3D渲染的时序图;
图11是本发明一示例性实施例在Win7中使用D3D10Warp 3D渲染的模 型图;
图12是图11所示实施例在Win7中使用D3D10Warp 3D渲染的时序图;
图13A和图13B分别是本发明一示例性实施例在Linux中实现OpenGL 应用3D渲染前、后的模型图;
图14是图13B所示实施例在Linux中实现OpenGL应用3D渲染的时序 图;
图15A、图15B分别是本发明一示例性实施例在Linux中实现DirectX 应用3D渲染前、后的模型图;
图16是图15B所示实施例在Linux中实现DirectX应用3D渲染的时序 图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的, 并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施 例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多 可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许 多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的 任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用, 或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。 本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合, 以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也 可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定 的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征 可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其 等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要 求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过 程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的 特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领 域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐 述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/ 或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员 可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第 一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先 后次序。例如,本申请中的第二3D规范不同于第一3D规范。
本申请中的功能模块可以被实施为软件、固件、硬件及其适当的组合。
相关技术中,基于API重定向实现云桌面虚拟机3D图像渲染显示时, 是面向应用层接口,因为需要在应用层进行拦截,拦截方式有挂钩子或者替 换操作系统的3D运行时库(在Windows操作系统中即DirectRuntime包含的 所有动态库),这些方法的操作对象是操作系统的原生文件,对操作系统原 生文件的上述操作可能会造成操作系统的不稳定、兼容性变差,致使操作系 统出现僵死、卡顿、弹提示框等异常,有时替换操作系统的3D运行时库的 操作还需要操作系统运行在安全模式下进行。
为此,本发明实施例提出了一种云桌面虚拟机实现3D能力的方法和系 统,将3D规范的业务接口注入到显卡驱动模型中,以将对3D API的调用传 递到渲染执行模块,由渲染执行模块基于云桌面分配的虚拟硬件资源,将3D 图形指令转换为2D图形后进行图形显示。因为显示的是2D图形,不依赖于 GPU也不需要做GPU虚拟化。且该方法在实现3D API重定向的同时,避免 了挂钩或替换操作系统运行时库的操作,不会破坏操作系统的原生文件。
如图1所示,是根据本发明一示例性实施例的一种云桌面虚机实现3D 能力的系统,该系统包括:
显卡驱动模型模块10,设置为在对3D应用程序编程接口API的调用传 递到所述显卡驱动模型模块10时,调用引导模块20中的业务接口。
引导模块20,设置为在所述引导模块20中的业务接口被调用后,将所 述对3D API的调用要执行的3D图形指令引导到渲染执行模块30执行。
渲染执行模块30,设置为基于云桌面分配的虚拟硬件资源,将所述调用 要执行的3D图形指令转换为2D图形后进行图形显示。
在本发明一示例性实施例中,所述显卡驱动模型模块10还设置为:初始 化时,将所述引导模块20加载到操作系统的显示模型中,并接受所述引导模 块20对所述引导模块20中的业务接口的注册。所述引导模块20还设置为: 被加载后,加载所述渲染执行模块30,将所述引导模块20中的业务接口注 册到所述显卡驱动模型模块10,及接受所述渲染执行模块30对所述渲染执 行模块30中的业务接口的注册。所述渲染执行模块30还设置为:被加载后, 将所述渲染执行模块30中的业务接口注册到所述引导模块20。
在本发明一示例性实施例中,所述显卡驱动模型模块10在对3D API的 调用传递到所述显卡驱动模型模块10时,调用引导模块20中的业务接口, 包括:所述显卡驱动模型模块10中驱动的业务接口被3D运行时库中第一3D 规范的业务接口调用后,调用所述引导模块20中第一3D规范的对应业务接 口。其中,所述3D运行时库中第一3D规范的业务接口与所述引导模块20 中第一3D规范的对应业务接口符合所述第一3D规范对同一业务接口的定义。所述引导模块20中的业务接口被调用后,将所述调用要执行的3D图形 指令引导到渲染执行模块30执行,包括:所述引导模块20中第一3D规范 的对应业务接口被调用后,将对3DAPI的调用传递到所述渲染执行模块30 中的业务接口,以执行所述3D图形指令。
在本发明一示例性实施例中,所述渲染执行模块30将所述3D图形指令 转换为2D图形后进行图形显示,包括:所述渲染执行模块30中的业务接口 被调用后,基于云桌面分配的虚拟硬件资源实现3D图形指令的编译和执行, 得到2D图形,再调用操作系统的2D图形API对所述2D图形进行显示。
本发明上述示例性实施例中的引导模块20可以有多种实现方式:
在一示例中,
所述渲染执行模块30中的业务接口为第一3D规范的业务接口;
所述引导模块20包括运行时库引导模块20,所述运行时库引导模块20 封装有第一3D规范的业务接口(封装的第一3D规范的业务接口包括所述被 调用的第一3D规范的对应业务接口,其它示例也是如此);
所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的 调用传递到所述渲染执行模块中的业务接口,包括:所述运行时库模块中所 述第一3D规范的对应业务接口被调用后,调用所述渲染执行模块30中第一 3D规范的业务接口。
在一示例中,
所述渲染执行模块30中的业务接口为第二3D规范的业务接口;
所述引导模块20包括接口转换模块,所述接口转换模块封装有第一3D 规范的业务接口和第二3D规范的业务接口;
所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的 调用传递到所述渲染执行模块中的业务接口,包括:所述接口转换模块中第 一3D规范的对应业务接口被调用后,调用所述接口转换模块中与其3D能力 匹配的第二3D规范的对应业务接口;所述接口转换模块中第二3D规范的对 应业务接口被调用后,调用所述渲染执行模块30中第二3D规范的业务接口。
在一示例中,
所述渲染执行模块30中的业务接口为第二3D规范的业务接口;
所述引导模块20包括运行时库引导模块20和接口转换模块,所述运行 时库引导模块20封装有第一3D规范的业务接口;所述接口转换模块封装有 所述第一3D规范的业务接口和第二3D规范的业务接口;
所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的 调用传递到所述渲染执行模块中的业务接口,包括:
所述运行时库模块中第一3D规范的对应业务接口被调用后,调用所述 接口转换模块中第一3D规范的对应业务接口;
所述接口转换模块中所述第一3D规范的对应业务接口被调用后,调用 所述接口转换模块中与其3D能力匹配的第二3D规范的对应业务接口;所述 接口转换模块中第二3D规范的对应业务接口被调用后,调用所述渲染执行 模块30中第二3D规范的业务接口。
如图2所示,是根据本发明一示例性实施例的一种云桌面虚机实现3D 能力的系统,该系统包括依次连接的显卡驱动模型模块10、运行时库引导模 块21和渲染执行模块30。图1中的引导模块在本实施例中用运行时库引导 模块21实现。其中,运行时库引导模块21和渲染执行模块30可以是在显示 系统中新增的模块。
本实施例中,渲染执行模块30依照的3D规范与操作系统的3D运行时 库(图中未示出)依照的3D规范相同,均为第一3D规范。渲染执行模块 30中的业务接口为第一3D规范的业务接口。其中,第一3D规范可以是 Direct3D或者OpenGL(Open Graphics Library:开放式图形库),但不局限 于此。
下面对各模块分别说明。
显卡驱动模型模块10
在显示系统中,显卡驱动模型模块10的主要功能包括:按照操作系统显 示模型定义的接口,向操作系统注册驱动(如用户态驱动)的入口函数、初 始化函数及业务接口(如pfn开头的函数,业务接口也可以称为业务接口函 数、接口函数等),使操作系统启动及运行过程中能顺利加载该驱动实现, 获取到操作系统和3D应用所需的能力。显卡驱动模型是操作系统厂家提供 的标准规范,显卡驱动模型对驱动的入口函数、初始化函数,业务接口的定 义以及相关数据结构等都做了明确说明,本发明实施例显卡驱动模型模块10 中驱动的函数依照显卡驱动模型的定义,但非按照规范面向硬件编写,而是 可以实现3D API的重定向,即在对3D API的调用传递到显卡驱动模型模块 10时,调用引导模块20中的业务接口,以将3D图形指令引导到渲染执行模 块执行。
在初始化阶段,显卡驱动模型模块10将引导模块20加载到操作系统的 显示模型中,并接受引导模块20对引导模块20中第一3D规范的业务接口 的注册。显卡驱动模型模块10还可以按照标准规范,完成资源的申请、初始 化、向3D运行时库注册业务接口等动作。其中,第一3D规范是3D运行时 库(图中未示出)依照的3D规范。
在业务流程中,3D运行时库中第一3D规范的业务接口被操作系统或应 用程序调用后,会调用显卡驱动模型模块10中驱动的业务接口,从而将对 3D API的调用传递到显卡驱动模型模块10。显卡驱动模型模块10中驱动的 业务接口被调用后,通过调用引导模块20(本发明实施例的引导模块20为 运行时库引导模块21)中第一3D规范的对应业务接口,将对3D API的调 用传递到引导模块20,实现了3D API的重定向。
3D运行时库中第一3D规范的业务接口与引导模块20中第一3D规范的 业务接口依照相同3D规范的定义,但实现的功能不同。假定3D运行时库中 第一3D规范的业务接口A和引导模块20中第一3D规范的业务接口A’符合 第一3D规范对同一业务接口的定义(两者实现的功能不同)。在业务流程 中,如果显卡驱动模型模块10中驱动的业务接口B是被业务接口A调用, 则该驱动的业务接口B调用的引导模块20中第一3D规范的对应业务接口为 业务接口A’。
运行时库引导模块21
本实施例的渲染执行模块30依照第一3D规范实现,运行时库引导模块 21的业务接口依照第一3D规范与运行时库相关的接口定义,在实现时根据 需要决定如何对接口调用进行处理。
在初始化阶段,运行时库引导模块21被加载后,会加载渲染执行模块 30,接受渲染执行模块30对渲染执行模块30中第一3D规范的业务接口的 注册,并将运行时库引导模块21中第一3D规范的业务接口注册到显卡驱动 模型模块10。
在业务流程中,通过显卡驱动模型模块10的实现,将对3D API的调用 传递到运行时库引导模块21。运行时库引导模块21中第一3D规范的业务接 口被调用后,将对3D API的调用传递到渲染执行模块30中的业务接口。本 实施例不需要进行3D规范的匹配转换,运行时库引导模块21中第一3D规 范的对应业务接口被调用后,直接调用渲染执行模块30中第一3D规范的业 务接口执行所述3D图形指令。
渲染执行模块30
渲染执行模块30的主要功能是执行3D图形指令,实现图形显示。渲染 执行模块30中的业务接口依照第一3D规范或第二3D规范中与渲染执行相 关的接口定义,是第一3D规范或第二3D规范的业务接口。
在初始化阶段,渲染执行模块30被加载后,按照3D规范将渲染执行模 块30中的业务接口注册到引导模块20。
在业务流程中,渲染执行模块30基于云桌面分配的虚拟硬件资源,将所 述3D图形指令转换为2D图形后进行图形显示。在一示例中,渲染执行模块 30中的业务接口被调用后,基于云桌面分配的虚拟硬件资源(例如云桌面分 配的虚拟CPU、虚拟内存等资源)实现3D图形指令的编译和执行,得到2D 图形,再调用操作系统的2D图形API对所述2D图形进行显示。例如,渲 染执行模块30可以按照OpenGL规范实现GLSL(OpenGL Shading Language,OpenGL着色语言)指令的编译和执行,并调用GDI(Graphics Device interface, 图形设备接口)提供的接口进行图像展示。本申请中,引导模块(本实施例 的引导模块为运行时库引导模块)中3D规范的业务接口对渲染执行模块中 3D规范的业务接口的调用,可以依照3D规范中规定处理。
如图3所示,是根据本发明另一示例性实施例的一种云桌面虚机实现3D 能力的系统,该系统包括依次连接的显卡驱动模型模块10、接口转换模块23 和渲染执行模块30。图1中的引导模块20在本实施例中用接口转换模块23 实现。本实施例中,所属操作系统的3D运行时库(图中未示出,应用程序 调用的3D运行时库是操作系统的3D运行时库)依照的3D规范为第一3D 规范如Direct3D,而渲染执行模块依照的3D规范为第二3D规范如OpenGL, 因而通过设置接口转换模块23来实现3D规范的匹配转换,将对Direct3D规 范的业务接口的调用转换成对OpenGL规范的对应业务接口的调用。
本实施例的显卡驱动模型模块10和渲染执行模块30可以与图1或图2 中的显卡驱动模型模块10和渲染执行模块30相同,不再赘述。
接口转换模块23封装有两套业务接口:第一3D规范的业务接口和第二 3D规范的业务接口。其中,第一3D规范是3D运行时库依照的3D规范, 第二3D规范是渲染执行模块30依照的3D规范。
在初始化阶段,接口转换模块23被加载后,会加载渲染执行模块30, 接受渲染执行模块30对渲染执行模块30中第二3D规范的业务接口的注册, 并将接口转换模块23中第一3D规范的业务接口注册到显卡驱动模型模块10 中。
在业务流程中,接口转换模块23中第一3D规范的业务接口被调用后, 调用接口转换模块23中与其3D能力匹配的第二3D规范的对应业务接口, 从而实现3D规范的匹配转换。而接口转换模块23中第二3D规范的对应业 务接口被调用后,则调用渲染执行模块30中第二3D规范的业务接口,从而 将3D图形指令引导到渲染执行模块30执行。举例来说,假定第一3D规范 的业务接口D和第二3D规范的业务接口E的3D能力匹配,如用于执行同 一3D图形指令。那么,在接口转换模块23中第一3D规范的业务接口D被 调用后,将调用接口转换模块23中第二3D规范的业务接口E,业务接口E 再调用渲染执行模块30中第二3D规范的业务接口。
为满足3D规范转换的需要,接口转换模块23在系统中可以进行1次或 更多次的3D规范的匹配转换。
如图4所示,是根据本发明另一示例性实施例的一种云桌面虚机实现3D 能力的系统,该系统包括依次连接的显卡驱动模型模块10、运行时库引导模 块25、接口转换模块27和渲染执行模块30。图1中的引导模块20在本实施 例中用运行时库引导模块25和接口转换模块27实现。本实施例中,3D运行 时库(图中未示出)和运行时库引导模块25依照的3D规范均为第一3D规 范,渲染执行模块依照的3D规范为第二3D规范,需要设置接口转换模块 27进行3D规范的匹配转换。
本实施例的显卡驱动模型模块10和渲染执行模块30可以与图1或图2 中的显卡驱动模型模块10和渲染执行模块30相同,不再赘述。
运行时库引导模块25
在初始化阶段,运行时库引导模块25被显卡驱动模型模块10加载后, 会加载接口转换模块27,并将运行时库引导模块25中第一3D规范的业务接 口注册到显卡驱动模型模块10。
在业务流程中,通过显卡驱动模型模块10的实现,将对3D API的调用 传递到运行时库引导模块25,运行时库引导模块25中第一3D规范的对应业 务接口被调用后,调用接口转换模块27中第一3D规范的对应业务接口。这 两个对应业务接口符合第一3D规范对同一业务接口的定义。举例来说,运 行时库引导模块25中第一3D规范的业务接口A和接口转换模块27中第一 3D规范的业务接口A’符合第一3D规范对同一业务接口的定义,则在运行时库引导模块25中第一3D规范的业务接口A被调用后,会调用接口转换模块 27中第一3D规范的业务接口A’。
接口转换模块27
接口转换模块27封装有两套业务接口,这两套业务接口分别依照第一3D规范和第二3D规范的接口定义。
在初始化阶段,接口转换模块27被加载后,会加载渲染执行模块30, 接受渲染执行模块30对渲染执行模块30中第二3D规范的业务接口的注册。
在业务流程中,接口转换模块27中第一3D规范的业务接口被调用后, 将调用接口转换模块27中与其3D能力匹配的第二3D规范的对应业务接口。 而接口转换模块27中第二3D规范的对应业务接口被调用后,将调用渲染执 行模块30中第二3D规范的业务接口执行3D图形指令。
如图5所示,是根据本发明一示例性实施例的一种云桌面虚机实现3D 能力的方法,包括:
步骤110,对3D API的调用传递到显卡驱动模型模块时,所述显卡驱动 模型模块通过调用引导模块中的业务接口,将所述对3D API的调用要执行的 3D图形指令引导到渲染执行模块执行;
本步骤中,对3D API的调用可以是操作系统或应用程序发起,用于执行 3D图形指令。相应模块收到所述对3D API的调用后,会向下一个模块发起 对3D API的调用,本申请将其称为调用的传递。这些调用均会包含要执行的 3D图形指令的信息,对3D API的调用最终被传递到用于执行3D图形指令 的模块如渲染执行模块,由该模块执行该3D图形指令。
本步骤中,假定操作系统的3D运行时库依照的3D规范为第一3D规范, 在对3D API的调用传递到显卡驱动模型模块,也即显卡驱动模型模块中驱动 的业务接口被3D运行时库中第一3D规范的业务接口调用后,该驱动的业务 接口调用所述引导模块中第一3D规范的对应业务接口;而所述引导模块中 第一3D规范的对应业务接口被调用后,则将对3D API的调用传递到所述渲 染执行模块中的业务接口,从而将所述3D图形指令引导到渲染执行模块执 行。其中,所述3D运行时库中第一3D规范的业务接口与所述引导模块中第 一3D规范的对应业务接口符合所述第一3D规范对同一业务接口的定义。举 例来说,业务接口A和业务接口A’符合第一3D规范对同一业务接口的定义, 显卡驱动模型模块中驱动的业务接口B被3D运行时库中第一3D规范的业 务接口A调用后,将调用引导模块中第一3D规范的对应业务接口A’。
所述引导模块将对3D API的调用传递到所述渲染执行模块中的业务接 口在不同的情况下有不同的处理方式。
在第一种情况下,渲染执行模块依照的是第一3D规范,也即所述渲染 执行模块中的业务接口为第一3D规范的业务接口。则所述引导模块中第一 3D规范的对应业务接口被调用后,调用所述渲染执行模块中第一3D规范的 业务接口执行所述3D图形指令。这种情况下,渲染执行模块和3D运行时库 依照的3D规范相同,不需要进行3D规范的匹配转换。对应的系统可使用图 2所示的系统。
在第二种情况下,渲染执行模块依照的是第二3D规范,所述渲染执行 模块中的业务接口为第二3D规范的业务接口,而所述引导模块中还封装有 第二3D规范的业务接口。所述引导模块中第一3D规范的对应业务接口被调 用后,会调用所述引导模块中与其3D能力匹配的第二3D规范的对应业务接 口;而所述引导模块中第二3D规范的对应业务接口被调用后,调用所述渲 染执行模块中第二3D规范的业务接口执行所述3D图形指令。对应的系统可 使用图3或图4所示的系统。在图4所示的系统中,因为运行时库引导模块 和接口转换模块中均有一套第一3D规范的业务接口,因而多出一次调用的 传递,即将对3D API的调用从运行时库引导模块中第一3D规范的业务接口 传递到接口转换模块中第一3D规范的对应业务接口。
步骤120,所述渲染执行模块基于云桌面分配的虚拟硬件资源,将所述 3D图形指令转换为2D图形后进行图形显示。
本步骤中,所述渲染执行模块将所述3D图形指令转换为2D图形后进行 图形显示,可以包括:所述渲染执行模块中的业务接口被调用后,基于云桌 面分配的虚拟硬件资源实现3D图形指令的编译和执行,得到2D图形,再调 用操作系统的2D图形API对所述2D图形进行显示。
本实施例一种云桌面虚机实现3D能力的方法在步骤110之前,还包括 以下初始化的处理:
所述显卡驱动模型模块初始化时,将所述引导模块加载到操作系统的显 示模型中;
所述引导模块被加载后,加载所述渲染执行模块,并将所述引导模块中 的业务接口注册到所述显卡驱动模型模块;
所述渲染执行模块被加载后,将所述渲染执行模块中的业务接口注册到 所述引导模块。
本发明一示例性实施例还提供了一种计算机设备,如图6所示,包括处 理器50、存储器60及存储在所述存储器60上并可在所述处理器50上运行 的计算机程序,其特征在于,所述处理器50执行所述计算程序时实现如本发 明上述任一实施例所述的方法的处理。
本发明一示例性实施例还提供了一种计算机可读存储介质,其上存储有 计算机程序,其特征在于,所述计算机程序被处理器执行时实现如本发明上 述任一实施例所述的方法的处理。
本发明上述实施例的一种云桌面虚拟机实现3D能力的系统和方法,立 足于API重定向技术和设备虚拟化技术,将重定向及业务功能注入到显卡驱 动模型中,在系统中对3DAPI在应用层中进行重定向引导,将应用对3D API 的调用传递到渲染执行模块,在渲染执行模块中完成3D图形指令到2D图形 的转换,将2D图形输送给操作系统中的2D图形引擎,完成画面的显示。本 发明实施例将实现重定向的拦截业务逻辑变换为引导业务逻辑,以避免挂钩 操作系统库造成操作系统原生文件的缺失或破坏。本发明实施例无需进行 GPU虚拟化,可以充分利用云桌面灵活分配到的虚拟硬件资源(如CPU和 内存)。本发明实施例对系统应用屏蔽业务实现细节,使用户的3D应用程 序可透明运行,降低了虚拟机3D数据传输对带宽的要求,降低了对主机或 者终端硬件显卡的依赖性,大幅降低产品成本,提升用户体验。
图7示出了本发明一示例性实施例的显示系统,该显示系统包括3D运 行时库、显卡驱动模型模块、运行时库引导模块、接口转换模块、渲染执行 模块及2D图形接口库。在实施例中3D运行时库和渲染执行模块使用不同的 3D规范的业务接口。可参照图4对应的实施例。
图7还示出了该系统中各个模块之间的相对关系及业务流程时序,说明 如下:
步骤101,3D运行时库调用显卡驱动模型模块的入口函数;
显卡驱动模型模块的入口函数是操作系统启动时加载调用的第一个函 数,在该函数参数中包含供显卡驱动回调的系统接口以及设备相关结构体信 息。显卡驱动模型模块的入口函数被调用后,在运行时将进行如下的各个模 块的一系列初始化。
步骤102,显卡驱动模型模块加载运行时库引导模块,调用运行时库引 导模块的初始化函数;
运行时库引导模块的初始化函数按照3D规范定义和实现(例如DirectX 规范的初始化函数是Direct3DCreate9Ex)。
在一个模块加载一个下游模块的过程中,可以进行加载下游模块的动态 库、调用下游模块的初始化函数、读取下游模块导出的函数等操作。运行时 库引导模块的初始化函数被调用后,将执行后续的初始化处理。
步骤103,运行时库引导模块加载接口转换模块库,读取接口转换模块 的导出接口函数(即3D规范的业务接口),将接口转换模块的导出接口函 数按照3D规范对应到运行时库引导模块导出的3D规范接口实现中,并调用 接口转换模块的初始化函数;
步骤104,接口转换模块加载渲染执行模块库,读取渲染执行模块的导 出接口函数,并调用渲染执行模块的初始化函数;
渲染执行模块是3D执行的重要模块,在操作系统加载并初始化显卡驱 动时,3DAPI还没有产生3D图形指令及业务请求,此时需要初始化渲染执 行模块,初始化其所要赋值的结构、成员、线程等资源申请创建。
步骤105,渲染执行模块将导出函数(即3D规范的业务接口)按照3D 规范注册到接口转换模块,供接口转换模块进行3D规范的接口转换和对应;
运行时库引导模块在步骤102被调用初始化函数后,通过步骤102-105 相应初始化了下游相关模块并读取了下游模块实现的导出接口。
步骤106,运行时库引导模块将操作系统或者3D应用要求中3D规范的 业务接口注册给显卡驱动模型模块;
完成本步骤的注册后,显卡驱动模型模块在接收到3D运行时库的调用 时,就可以调用运行时库引导模块对应的业务接口,将调用请求转入运行时 库引导模块。
显卡驱动模型模块的入口函数在步骤101被调用后,通过步骤102-106 相应初始化了下游相关模块。
步骤107,显卡驱动模型模块按照显卡驱动的模型规范,将需要注册给 操作系统的显卡驱动接口写入对应的返回结构成员中,返回给操作系统;
以上完成了各个模块的初始化处理。下面将说明初始化完成后,操作系 统或应用调用3D API执行3D图形指令的业务流程。
步骤108,3D应用程序调用3D运行时库,3D运行时库将产生对显卡驱 动接口的调用;
步骤109,显示驱动接口调用运行时库引导模块注册到显卡驱动模型模 块中3D规范的业务接口,将对3D API的调用引导到运行时库引导模块;
在初始化过程,已经将运行时库引导模块中3D规范的业务接口注册到 显卡驱动模型模块中,并与显卡驱动接口建立对应关系。因而在业务流程中, 3D运行时库产生对显卡驱动接口的调用后,显示驱动接口处理该调用时会调 用运行时库引导模块中3D规范的对应业务接口,将对3D API的调用引导到 运行时库引导模块。
步骤110,业务逻辑调用到运行时库引导模块导出并注入的3D规范的业 务接口后,运行时库引导模块会调用之前接口转换模块按照运行时库引导模 块的规范要求封装的3D规范接口;
步骤111,接口转换模块中与3D运行时库、运行时库引导模块相同的 3D规范的业务接口被调用后,会调用接口转换模块中与渲染执行模块相同的3D规范的业务接口,完成3D指令规范的转换及投递;
步骤112,渲染执行模块在处理完每个上游的3D指令后产生出2D图片, 该模块调用操作系统提供的2D图形库API将2D图片进行呈现。
其中当接口转换模块不需要时,103/104流程将合并为一个操作,由运行 时库引导模块调用并执行;
在确定云桌面虚机实现3D能力的系统采用的结构形式时,可以关注以 下信息,以决定采用本发明上述实施例中的哪一种结构形式:
云桌面虚拟机操作系统类型,不同的操作系统其对应的显示驱动模型不 同(例如Windows NT 5.1其显示驱动模型为XDDM,WindowsNT6.1其显示 驱动模型支持XDDM(Windows 2000display driver model)和WDDM (Windows display driver model),WindowsNT6.2其显示驱动模型为WDDM, Linux Kernel其显示驱动模型为DRI(DirectRendering Infrastructure));
对应操作系统的显示驱动所用的显示模型规范(例如Windows NT6.1同 时支持XDDM和WDDM显示模型);
3D运行时库对应的3D规范版本(例如Windows操作系统中Direct3D 规范的版本分为Direct3D9、Direct3D9_1、Direct3D10、Direct3D11、Direct3D12 等版本)
渲染执行模块要实现的3D规范,不同的操作系统支持的3D规范不同(例 如Linux显示驱动中3D默认支持OpenGL规范,Windows显示驱动中3D默 认支持Direct3D规范);
在确定云桌面虚机实现3D能力的系统采用的结构形式时,根据渲染执 行模块实现的3D规范以及虚机操作系统的类型确认是否要实现接口转换模 块。根据确认的显示驱动模型类型,渲染执行模块实现的3D规范及3D运行 时库的3D规范版本号实现对应模块,以使用本发明不同的实施例方案来匹 配适应不同的实现场景。
一个示例性的应用场景如图8所示,图8是Windows7物理机显示系统 的模型图,这里以Windows7进行阐述说明但不局限于此。在相关技术中, GPU是3D指令的执行者,KMD运行操作系统内核层,有权限操作硬件显 卡,但是应用程序调用3D API产生的3D API的调用请求,需要借助WDDM 驱动规范中的UMD驱动将3D指令从操作系统用户态传递到内核态的KMD。 而UMD用于3D指令收集和传递,在WDDM驱动规范内配合上层动态库及 下层KMD完成指令的封装传递。本发明实施例主要改造及新增模块用于实 现一个具备3D渲染能力可以取代UMD(User Mode Driver,WDDM模型的 用户态驱动)功能及位置的系统。Windows7操作系统的Kernel版本为NT6.1, 其同时支持XDDM(Windows 2000Display Driver Mode,Windows2000显 示驱动模型)和WDDM(Windows Display Driver Mode,Windows显示驱动 模型),并且WindowsNT6.2及以后的操作系统内核仅支持WDDM显示驱 动架构,本实施例使用WDDM显示驱动架构,Windows7中自带3D应用要 求的Direct3D版本为Direct3D9,由于Windows操作系统默认运行时库为 DirectX,而渲染执行模块使用OpenGL规范实现,因此需要接口转换模块。
图9是本发明一示例性实施例提供的显示系统模型图,各模块实现方法 如下:
显卡驱动模型模块201(在本实施例中简称为UMD),在本实施例中按 照WindowsWDDM显卡驱动模型规范实现用户态驱动部分;
运行时库引导模块202(在本实施例中简称为D3D9),在本实施例中运 行时版本为Direct3D9,本实施例中使用wine工程库中的d3d9库进行导出实 现;
接口转换模块203(在本实施例中简称为wine),在本实施例中需要根 据Direct3D9的3D能力集使用OpenGL规范Version 2.1作为目的接口;
渲染执行模块204(在本实施例中简称为Mesa),在本实施例中使用 OpenGL规范Version 2.1作为目的接口,该模块需要对OpenGL2.1规范的所 有能力进行实现,由于Mesa组件可以支持OpenGL2.1的规范实现,本实施 例使用Mesa的Windows二进制版本作为渲染执行模块。
具体实现方法说明如下,参见图10:
步骤601,系统启动时Windows 3D运行时库组件调用WDDM模型用户 态驱动的入口函数OpenAdapter;OpenAdapter会在后续操作过程中以参数的 形式传递给用户态驱动的函数,包含CreateDevice函数;
步骤602,显卡驱动模型模块UMD中OpenAdapter加载运行时库引导模 块(D3D9)的导出函数,并调用D3D9规范的初始化函数Direct3DCreate9Ex, 在该函数加载下游模块;
步骤603,接口转换模块(Wine模块)按照D3D9规范进行OpenGL规 范接口的封装和导出,当UMD调用D3D9的初始化函数时,运行时库引导 模块(D3D9)模块就调用由接口转换模块(Wine模块)封装导出的 Direct3DCreate9Ex函数;
步骤604,接口转换模块(Wine模块)将其对上游模块封装导出并被调 用的Direct3DCreate9Ex函数转换为OpenGL规范的初始化函数 wglMakeCurrent并调用由渲染执行模块(Mesa模块)导出的初始化函数 wglMakeCurrent,该接口完成渲染资源表面的申请、资源的申请等;
步骤605,将Mesa按照OpenGL2.1规范实现的所有gl开头的接口导出 并反馈给接口转换模块(Wine模块)完成OpenGL业务接口的回调注册;
步骤606,运行时库引导模块(D3D9)在被显卡驱动用户态部分触发初 始化动作并发生上述操作流程后,将D3D9的业务接口放入显卡驱动用户态 部分对D3D9引导库模块调用时传入的返回参数中,供UMD后续业务接口 调用;
步骤607,OpenAdapter入口函数中有运行时库调用时传入的返回参数pAdapterCallback中,用于显卡驱动用户态部分向运行时库注册回调函数;将 对接D3D9规范业务接口的所有pfn开头的函数填充到CreateDevice的入参 结构体中返回;
步骤608,DirectRuntime对业务接口的调用;
步骤609,用户态驱动的业务接口(pfn开头的函数)被调用,pfn开头 的业务函数直接调用运行时库引导库导出注册的D3D9规范接口;
步骤610,运行时库引导模块将业务调用直接传递给封装接口;
步骤611,Wine将被调用的封装接口按3D能力实现对入参和逻辑组织 后调用Mesa导出并注册的gl开头的业务接口,将3D指令执行处理为2D图 片;
612-Mesa处理完被上游模块调用的gl开头业务接口后,当由用户态驱动 调用的接口是pdfPresent时,将触发调用Mesa导出的函数wglPresentBuffer 完成2D图片的呈现,wglPresentBuffer由GDI的函数BitBlt实现。
通过上述模块和方法可以实现在Windows7操作系统中轻量级DirectX 3D应用程序借助OpenGL规范CPU渲染执行库的图像绘制。
图11所示是本发明一示例性实施例的显示系统,实现在Windows7操作 系统中,使用DirectX SDK软件开发库中的D3D10Warp.dll软绘库提供D3D10 的软绘能力;
在该实施例中,由于Windows7操作系统默认运行时库为DirectX,而渲 染执行模块使用DirectX规范实现,所以可以不采用接口转换模块。
显卡驱动模块301需要按照Windows WDDM显卡驱动模型实现用户态 驱动部分(UMD);
运行时库引导模块302(在本实施例中简称为d3d10),在本实施例中运 行时库版本为Direct3D10,该模块可使用wine工程库中的d3d10库进行导出 实现;
渲染执行模块303(在本实施例中简称为D3D10Warp),在本实施例中 使用DirectX规范的D3D10作为目的接口,该模块需要对D3D10规范的所 有能力进行实现,D3D10Warp组件可以支持D3D10的规范实现。
具体实现方法说明如下,参见图12:
步骤701,系统启动时Windows 3D运行时库组件调用WDDM模型用户 态驱动入口函数OpenAdapter10;OpenAdapter10会在后续操作过程中以参数 的形式传递给用户态驱动的函数,包含CreateDevice函数;
步骤702,UMD中OpenAdapter10加载运行时库引导模块D3D10的导 出函数,并调用D3D10规范的初始化函数,在该函数加载下游模块;
步骤703,运行时库引导模块与渲染执行模块采用的3D规范相同,运行 时库引导模块(D3D10)将直接调用渲染执行模块(D3D10Warp)提供的初 始化函数,并加载D3D10Warp导出的3D接口;
步骤704,D3D10Warp作为渲染执行模块,将按照DirectX 3D规范完成 3D指令由3D指令向2D图片的逻辑,D3D10Warp将DirectX规范的接口导 出并将函数指针直接赋值给D3D10运行时库引导模块;
步骤705,D3D10运行时库引导模块在被显卡驱动用户态部分触发初始 化动作并发生上述操作流程后,将D3D10的业务接口放入显卡驱动用户态部 分对D3D10运行时库引导模块调用时传入的返回参数中,供UMD后续业务 接口调用;
步骤706,OpenAdapter10入口函数中有DirectRuntime调用时传入的返 回参数pAdapterCallback中,用于显卡驱动用户态部分向DirectRuntime注册 回调函数;将对接D3D10规范业务接口的所有pfn开头的函数填充到初始化 函数的入参结构体中返回;
步骤707,DirectRuntime对业务接口的调用;
步骤708,用户态驱动的业务接口(pfn开头的函数)被调用,pfn开头 的业务函数直接调用运行时库引导模块导出注册的D3D10规范接口;
步骤709,运行时库引导模块将业务调用直接传递给D3D10Warp指令渲 染执行模块,将3D指令执行处理为2D图片;
步骤710,D3D10Warp处理完被上游模块调用的业务接口后,当由用户 态驱动调用的接口是pdfPresent时,将触发调用D3D10Warp导出的函数完成 2D图片的呈现,并调用GDI的函数BitBlt实现。
图13A是本发明一示例性实施例Linux操作系统虚机实施应用3D渲染 前的结构示意对比图,图13B是Linux操作系统虚机实施应用3D渲染前后 的结构示意图。Linux虚机在没有配置GPU虚拟化等其它3D渲染技术的环 境下不具备3D能力,通过实施本发明实施例,也可以使Linux虚拟机具备 3D渲染能力;Linux的3D显示架构经历了从DRI到Gallium的发展,目前 Linux的3D主流驱动模型使用Gallium 3D,Gallium 3D是一系列的接口和支 持库的集合,将图形设备驱动细分为3个部分:接口追踪层(State Tracker)、 驱动实现层(Driver)、系统接口层(WinSys),其中WinSys层对应不同系 统内核;本实施例按照Gallium3D模型规范实现各个模块:
显卡驱动模型模块401,该模块按照Gallium 3D模型规范实现;
引导模块402,也可称为接口引导模块,该模块作为Gallium 3D模型的 API StateTracker层出现,由于渲染执行模块为OpenGL规范实现,与应用调 用接口规范相同,所以模块初始化时加载渲染执行模块导出的接口,供接口 引导模块直接调用;
渲染执行模块403,在本实施例中按照OpenGL2.1实现,需要说明的是 实现的OpenGL规范版本跟操作系统支持的3D应用接口版本是匹配的;渲 染执行模块按照OpenGL2.1实现,应用层支持运行采用OpenGL2.1版本的 3D应用;渲染执行模块按照OpenGL3.3实现,应用层支持采用OpenGL3.3 以下的3D应用正常运行。
具体实现方法说明如下,参见图14:
801-系统启动时调用Gallium驱动模型模块的框架类函数 GalliumContext,在该类构造函数中进行Gallium 3D驱动的初始化;
802-GalliumContext构造函数调用CreateScreen方法调用create_winsys 方法进行WinSys模块的初始化,WinSys模块在本实施例中的作用是2D图 像呈现;
803-WinSys层将用于2D图像呈现及相关处理的函数填充回调结构体后 返回给CreateScreen方法;
804-CreateScreen方法使用803步骤返回的winsys函数回调结构体传递 给Driver层的create_screen函数调用进行Dirver层渲染执行模块的初始化;
805-Driver层作为渲染执行模块将执行create_screen方法的结果返回给GalliumContext方法;Gallium将由Driver渲染执行模块产生的回调方法封装 成StateTracker运行时引导模块的回调方法注册给操作系统;
806-操作系统调用StateTracker模块导出的业务接口函数;
807-StateTracker通过Driver层的回调函数调用渲染业务逻辑;
808-Driver作为渲染执行模块调用WinSys注册的回调函数进行2D图像 的呈现;
如图15A所示,是本发明一示例性实施例的Linux操作系统虚机实施应 用3D渲染前的示意图,图15B是Linux操作系统虚机实施应用3D渲染后的 示意图。Linux虚机在没有配置GPU虚拟化等其它3D显示技术的环境下不 具备3D能力,通过实施本发明,可以使Linux虚拟机具备3D渲染能力;Linux 的3D显示架构经历了从DRI到Gallium的发展,目前Linux的3D主流驱动 模型使用Gallium,Gallium是一系列的接口和支持库的集合,将图形设备驱动细分为3个部分:接口追踪层(State Tracker)、设备驱动层(Diver)、 系统接口层(WinSys),其中WinSys层对应不同系统内核;本实施例按照 Gallium 3D模型规范实现各个模块:
显卡驱动模型模块501,该模块按照Gallium 3D模型规范实现;
引导模块502,也可称为接口引导模块,作为Gallium 3D模型的State Tracker层出现,由于渲染执行模块为采用OpenGL规范实现,与应用调用接 口规范相同,所以模块初始化时加载渲染执行模块导出的接口,供运行时引 导模块直接调用;
接口转换模块503,图中表示为DX2OGL。由于接口引导模块按照D3D9 规范封装和导出函数接口,而渲染执行模块按照OpenGL2.1规范实现,该模 块主要作用是将D3D9规范的函数接口转换为OpenGL2.1规范函数接口;
渲染执行模块504,在本实施例中按照OpenGL2.1实现,需要说明的是 实现的OpenGL规范版本跟操作系统支持的3D应用接口版本是匹配的;渲 染执行模块按照OpenGL2.1实现,应用层支持运行采用OpenGL2.1版本的 3D应用;渲染执行模块按照OpenGL3.3实现,应用层支持采用OpenGL3.3 以下的3D应用正常运行。
具体实现方法说明如下,参见图16:
1001-系统启动时调用Gallium驱动模型模块的框架类函数 GalliumContext,在该类构造函数中进行Gallium 3D驱动的初始化;
1002-GalliumContext构造函数调用CreateScreen方法,CreateScreen方法 调用create_winsys方法进行WinSys模块的初始化,WinSys模块在本实施例 中的作用是2D图像呈现;
1003-WinSys层将用于2D图像呈现及相关处理的函数填充回调结构体 后返回给CreateScreen方法;
1004-CreateScreen方法使用1003步骤返回的winsys函数回调结构体传 递给Driver层的create_screen函数调用进行Dirver层渲染执行模块的初始化;
1005-Driver层作为渲染执行模块将执行create_screen方法的结果返回给GalliumContext方法;Gallium将由Driver渲染执行模块产生的回调方法封装 成StateTracker运行时引导模块的回调方法注册给操作系统;
1006-GalliumContext构造函数调用DX2GL接口转换模块的Init方法完 成接口转换模块的资源申请、函数映射等初始化动作;
1007-操作系统调用StateTracker模块按照D3D9规范导出的业务接口函 数;
1008-StateTracker通过根据上层应用调用的API及参数调用对应的接口 转换模块的API及传递相应参数;
1009-接口转换模块根据被调用的导出函数和传入的参数转换成对应 Driver渲染执行模块导出的OpenGL规范的函数完成3D指令的渲染执行;
1010-Driver作为渲染执行模块调用WinSys注册的回调函数进行2D图 像的呈现;
本发明实施例提出了一种基于云桌面环境下实现3D能力的处理系统和 方法。通过这种方法可以实现满足云桌面虚拟机轻量及中量级3D需求的系 统,摆脱虚拟机提供3D能力时对主机或者终端物理显卡的依赖,摆脱3D软 件绘制需要安全模式配置或者破坏操作系统原生文件的实施方式,降低3D 能力提供的实施难度,大幅度的节省中高端云桌面虚机的产品成本,是一项 极具创新和特色的功能,使云桌面虚机更接近于PC机的使用体验,对云桌 面的普适推广起到很好的示范作用。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、 系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组 合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一 定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一 个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件 可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的 软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储 介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术 人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指 令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和 非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、 ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD) 或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于 存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普 通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序 模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且 可包括任何信息递送介质。

Claims (15)

1.一种云桌面虚机实现3D能力的方法,包括:
对3D API的调用传递到显卡驱动模型模块时,所述显卡驱动模型模块通过调用引导模块中的业务接口,将所述对3D API的调用要执行的3D图形指令引导到渲染执行模块执行;
所述渲染执行模块基于云桌面分配的虚拟硬件资源,将所述3D图形指令转换为2D图形后进行图形显示,其中,所述虚拟硬件资源不包括虚拟GPU资源,且所述虚拟硬件资源包括CPU资源。
2.根据权利要求1所述的方法,其特征在于:
对3D API的调用传递到显卡驱动模型模块时,所述显卡驱动模型模块通过调用引导模块中的业务接口,将所述3D图形指令引导到渲染执行模块执行,包括:
所述显卡驱动模型模块中驱动的业务接口被3D运行时库中第一3D规范的业务接口调用后,调用所述引导模块中第一3D规范的对应业务接口;
所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的调用传递到所述渲染执行模块中的业务接口。
3.根据权利要求2所述的方法,其特征在于:
所述渲染执行模块中的业务接口为第一3D规范的业务接口;
所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的调用传递到所述渲染执行模块中的业务接口,包括:所述引导模块中第一3D规范的对应业务接口被调用后,调用所述渲染执行模块中第一3D规范的业务接口执行所述3D图形指令。
4.根据权利要求2所述的方法,其特征在于:
所述引导模块中还封装有第二3D规范的业务接口,所述渲染执行模块中的业务接口为所述第二3D规范的业务接口;
所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的调用传递到所述渲染执行模块中的业务接口,包括:所述引导模块中第一3D规范的对应业务接口被调用后,调用所述引导模块中与其3D能力匹配的第二3D规范的对应业务接口;所述引导模块中第二3D规范的对应业务接口被调用后,调用所述渲染执行模块中第二3D规范的业务接口执行所述3D图形指令。
5.根据权利要求1所述的方法,其特征在于:
操作系统或应用程序调用3D API执行3D图形指令之前,所述方法还包括:
所述显卡驱动模型模块初始化时,将所述引导模块加载到操作系统的显示模型中;
所述引导模块被加载后,加载所述渲染执行模块,将所述引导模块中的业务接口注册到所述显卡驱动模型模块;
所述渲染执行模块被加载后,将所述渲染执行模块中的业务接口注册到所述引导模块。
6.根据权利要求1至5中任一所述的方法,其特征在于:
所述渲染执行模块将所述3D图形指令转换为2D图形后进行图形显示,包括:
所述渲染执行模块中的业务接口被调用后,基于云桌面分配的虚拟硬件资源实现3D图形指令的编译和执行,得到2D图形,再调用操作系统的2D图形API对所述2D图形进行显示。
7.一种云桌面虚机实现3D能力的系统,包括:
显卡驱动模型模块,设置为在对3D应用程序编程接口API的调用传递到所述显卡驱动模型模块时,调用引导模块中的业务接口;
所述引导模块,设置为在所述引导模块中的业务接口被调用后,将所述对3D API的调用要执行的3D图形指令引导到渲染执行模块执行;
所述渲染执行模块,设置为基于云桌面分配的虚拟硬件资源,将所述调用要执行的3D图形指令转换为2D图形后进行图形显示,其中,所述虚拟硬件资源不包括虚拟GPU资源,且所述虚拟硬件资源包括CPU资源。
8.根据权利要求7所述的系统,其特征在于:
所述显卡驱动模型模块在对3D API的调用传递到所述显卡驱动模型模块时,调用引导模块中的业务接口,包括:所述显卡驱动模型模块中驱动的业务接口被3D运行时库中第一3D规范的业务接口调用后,调用所述引导模块中第一3D规范的对应业务接口;
所述引导模块中的业务接口被调用后,将所述调用要执行的3D图形指令引导到渲染执行模块执行,包括:所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的调用传递到所述渲染执行模块中的业务接口,以执行所述3D图形指令。
9.根据权利要求7所述的系统,其特征在于:
所述渲染执行模块中的业务接口为第一3D规范的业务接口;
所述引导模块包括运行时库引导模块,所述运行时库引导模块封装有第一3D规范的业务接口;
所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的调用传递到所述渲染执行模块中的业务接口,包括:所述运行时库模块中所述第一3D规范的对应业务接口被调用后,调用所述渲染执行模块中第一3D规范的业务接口。
10.根据权利要求7所述的系统,其特征在于:
所述渲染执行模块中的业务接口为第二3D规范的业务接口;
所述引导模块包括接口转换模块,所述接口转换模块封装有第一3D规范的业务接口和第二3D规范的业务接口;
所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的调用传递到所述渲染执行模块中的业务接口,包括:所述接口转换模块中第一3D规范的对应业务接口被调用后,调用所述接口转换模块中与其3D能力匹配的第二3D规范的对应业务接口;所述接口转换模块中第二3D规范的对应业务接口被调用后,调用所述渲染执行模块中第二3D规范的业务接口。
11.根据权利要求7所述的系统,其特征在于:
所述渲染执行模块中的业务接口为第二3D规范的业务接口;
所述引导模块包括运行时库引导模块和接口转换模块,所述运行时库引导模块封装有第一3D规范的业务接口;所述接口转换模块封装有所述第一3D规范的业务接口和第二3D规范的业务接口;
所述引导模块中第一3D规范的对应业务接口被调用后,将对3D API的调用传递到所述渲染执行模块中的业务接口,包括:
所述运行时库模块中第一3D规范的对应业务接口被调用后,调用所述接口转换模块中第一3D规范的对应业务接口;
所述接口转换模块中所述第一3D规范的对应业务接口被调用后,调用所述接口转换模块中与其3D能力匹配的第二3D规范的对应业务接口;所述接口转换模块中第二3D规范的对应业务接口被调用后,调用所述渲染执行模块中第二3D规范的业务接口执行所述3D图形指令。
12.根据权利要求7所述的系统,其特征在于:
所述显卡驱动模型模块还设置为:初始化时,将所述引导模块加载到操作系统的显示模型中,并接受所述引导模块对所述引导模块中的业务接口的注册;
所述引导模块还设置为:被加载后,加载所述渲染执行模块,将所述引导模块中的业务接口注册到所述显卡驱动模型模块,及接受所述渲染执行模块对所述渲染执行模块中的业务接口的注册;
所述渲染执行模块还设置为:被加载后,将所述渲染执行模块中的业务接口注册到所述引导模块。
13.根据权利要求7-12中任一权利要求所述的系统,其特征在于:
所述渲染执行模块将所述3D图形指令转换为2D图形后进行图形显示,包括:所述渲染执行模块中的业务接口被调用后,基于云桌面分配的虚拟硬件资源实现3D图形指令的编译和执行,得到2D图形,再调用操作系统的2D图形API对所述2D图形进行显示,其中,所述虚拟硬件资源不包括虚拟GPU资源。
14.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算程序时实现如权利要求1至6中任一权利要求所述的方法的处理。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一权利要求所述的方法的处理。
CN201811638931.9A 2018-12-29 2018-12-29 一种云桌面虚机实现3d能力的方法和系统 Active CN111381914B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811638931.9A CN111381914B (zh) 2018-12-29 2018-12-29 一种云桌面虚机实现3d能力的方法和系统
PCT/CN2019/129227 WO2020135721A1 (zh) 2018-12-29 2019-12-27 云桌面虚机实现3d能力的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811638931.9A CN111381914B (zh) 2018-12-29 2018-12-29 一种云桌面虚机实现3d能力的方法和系统

Publications (2)

Publication Number Publication Date
CN111381914A CN111381914A (zh) 2020-07-07
CN111381914B true CN111381914B (zh) 2021-07-30

Family

ID=71128683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811638931.9A Active CN111381914B (zh) 2018-12-29 2018-12-29 一种云桌面虚机实现3d能力的方法和系统

Country Status (2)

Country Link
CN (1) CN111381914B (zh)
WO (1) WO2020135721A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114494546A (zh) * 2020-11-13 2022-05-13 华为技术有限公司 一种数据处理方法、装置和电子设备
TWI775397B (zh) * 2021-04-21 2022-08-21 宏碁股份有限公司 3d顯示系統與3d顯示方法
CN113542757B (zh) * 2021-07-20 2024-04-02 Oppo广东移动通信有限公司 云应用的图像传输方法、装置、服务器及存储介质
CN115686727B (zh) * 2023-01-04 2023-04-14 麒麟软件有限公司 基于wlroots的合成渲染实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402462A (zh) * 2010-09-30 2012-04-04 微软公司 用于对启用gpu的虚拟机进行负载平衡的技术
CN103270492A (zh) * 2010-12-15 2013-08-28 国际商业机器公司 用于网络使能应用的硬件加速图形
CN104660711A (zh) * 2015-03-13 2015-05-27 华存数据信息技术有限公司 一种基于图形处理器虚拟化的远程可视化应用方法
CN106020929A (zh) * 2016-05-13 2016-10-12 深圳市青葡萄科技有限公司 一种虚拟化环境下支持3d应用的系统和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819449A (zh) * 2012-07-04 2012-12-12 深圳市京华科讯科技有限公司 一种显卡重定向方法及系统
US10127062B2 (en) * 2013-10-22 2018-11-13 Citrix Systems, Inc. Displaying graphics for local virtual machine by allocating textual buffer
US9582849B2 (en) * 2013-10-28 2017-02-28 Vmware, Inc. Method and system to virtualize graphic processing services
CN107911700B (zh) * 2017-10-31 2020-07-03 深信服科技股份有限公司 一种基于虚拟化的硬件解码方法、解码设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402462A (zh) * 2010-09-30 2012-04-04 微软公司 用于对启用gpu的虚拟机进行负载平衡的技术
CN103270492A (zh) * 2010-12-15 2013-08-28 国际商业机器公司 用于网络使能应用的硬件加速图形
CN104660711A (zh) * 2015-03-13 2015-05-27 华存数据信息技术有限公司 一种基于图形处理器虚拟化的远程可视化应用方法
CN106020929A (zh) * 2016-05-13 2016-10-12 深圳市青葡萄科技有限公司 一种虚拟化环境下支持3d应用的系统和方法

Also Published As

Publication number Publication date
CN111381914A (zh) 2020-07-07
WO2020135721A1 (zh) 2020-07-02

Similar Documents

Publication Publication Date Title
CN111381914B (zh) 一种云桌面虚机实现3d能力的方法和系统
US10074206B1 (en) Network-optimized graphics library for virtualized graphics processing
US8830228B2 (en) Techniques for enabling remote management of servers configured with graphics processors
US11227425B2 (en) Emulation of geometry shaders and stream output using compute shaders
US8773443B2 (en) Compression for co-processing techniques on heterogeneous graphics processing units
CN112269603B (zh) 一种在Linux上兼容运行Android应用的图形显示方法与装置
US10102605B1 (en) Graphics library virtualization for virtualized graphics processing
WO2018119951A1 (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
EP2802982B1 (en) Para-virtualized domain, hull, and geometry shaders
US8671225B2 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
US8692832B2 (en) Para-virtualized asymmetric GPU processors
CN111522670A (zh) 一种用于Android系统的GPU虚拟化方法、系统及介质
US20180074956A1 (en) Method, apparatus, and electronic device for modifying memory data of a virtual machine
CN112764872A (zh) 计算机设备、虚拟化加速设备、远程控制方法及存储介质
US20190026118A1 (en) Providing fallback drivers for io devices in a computing system
US10467078B2 (en) Crash dump extraction of guest failure
WO2017045272A1 (zh) 虚拟机迁移方法和装置
CN117389694B (zh) 基于virtio-blk技术提升虚拟存储IO性能的方法
CN110941408B (zh) 一种kvm虚拟机图形界面输出方法及装置
CN115604331A (zh) 一种数据的处理系统、方法以及装置
CN110443876A (zh) 3d图像渲染方法及装置
US11620120B1 (en) Configuration of secondary processors
US20230221932A1 (en) Building a unified machine learning (ml)/ artificial intelligence (ai) acceleration framework across heterogeneous ai accelerators
US20220121432A1 (en) Proxy compilation for execution in a foreign architecture controlled by execution within a native architecture
CN113379589A (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
GR01 Patent grant
GR01 Patent grant