命令遥控

阅读:685发布:2020-05-12

专利汇可以提供命令遥控专利检索,专利查询,专利分析的服务。并且在构成本 发明 的一部分的 权利要求 书、 附图 ,以及文本中描述了用于遥控图形的各种技术。,下面是命令遥控专利的具体信息内容。

1. 一种用于在终端服务器客户端的终端服务器上处理图形的方法,所述终端服务器客 户端通过网络与所述终端服务器进行通信,包括: 将用于图元的顶点存储在所述终端服务器处的多个顶点缓冲器中; 同步用于在所述终端服务器客户端处执行来自所述多个顶点缓冲器的顶点的次序,所 述同步基于所述图元的标识并且所述同步由所述终端服务器处的至少一个内核模式进程 来执行; 将所述用于执行顶点的次序与用于在所述终端服务器客户端处呈现位图的次序同步, 所述同步由所述终端服务器处的至少一个内核模式进程来执行;以及 将所述顶点、所述位图以及经同步的所述用于执行顶点的次序和所述用于呈现位图的 次序发送给所述终端服务器客户端。
2. 如权利要求1所述的方法,其特征在于,进一步包括: 由用户模式驱动程序从应用编程接口接收用于生成图元的应用程序接口构造;以及 由用户模式驱动程序生成用于图元的顶点。
3. 如权利要求1所述的方法,其特征在于,进一步包括: 由应用程序接口生成用于图元的顶点。
4. 如权利要求1所述的方法,其特征在于,进一步包括: 由内核模式进程接收与由显示驱动程序呈现的位图相关联的信息; 由内核模式进程将所述位图与用于图元的顶点相关联。
5. 如权利要求1所述的方法,其特征在于,进一步包括: 压缩经同步的用于图元的顶点。
6. 如权利要求4所述的方法,其特征在于,进一步包括: 由内核模式进程从图形设备接口子系统接收与命令相关联的信息。
7. 如权利要求5所述的方法,其特征在于,进一步包括: 预处理经同步的用于图元的顶点。
8. -种计算机系统,包括: 用于将与图元相关联的顶点存储在缓冲器中的电路; 用于接收与位传送命令相关联信息的电路,所述位块传送命令与组合多个位图相关 联,所述多个位图被配置用于根据所述位块传送命令来呈现; 用于同步执行所述顶点和所述位块传送命令的次序的电路;以及 用于跨机器界限地传送所述顶点、所述多个位图以及用于执行所述顶点和所述位块传 送命令的次序的电路。
9. 如权利要求8所述计算机系统,其特征在于,所述顶点、所述多个位图以及用于执行 所述顶点和所述位块传送命令的次序被传输到虚拟机
10. 如权利要求8所述计算机系统,其特征在于,所述顶点、所述多个位图以及用于执 行所述顶点和所述位块传送命令的次序被传输到终端服务器客户端。
11. 如权利要求8所述的计算机系统,其特征在于,进一步包括: 用于接收与由显示驱动程序生成的位图相关联的信息的电路;以及 用于将由显示驱动程序生成的位图与用于图元的顶点和位块传送命令同步的电路。
12. 如权利要求8所述的计算机系统,其特征在于,进一步包括: 用于从用户空间进程接收应用程序接口构造的电路;以及 用于由用户模式驱动程序生成用于图元的顶点的电路。
13.如权利要求8所述的计算机系统,其特征在于,进一步包括: 用于预处理用于图元的顶点的电路。
14.如权利要求13所述的计算机系统,其特征在于,进一步包括: 用于压缩经预处理的用于图元的顶点的电路。
15.-种用于在终端服务器客户端的终端服务器上处理图形的方法,所述终端服务器 客户端通过网络与所述终端服务器进行通信,包括: 由用户模式驱动程序生成并在所述终端服务器处的多个顶点缓冲器中存储用于图元 的顶点; 同步用于在所述终端服务器客户端处执行来自所述多个顶点缓冲器的所存储的顶点 的次序,所述同步基于所述图元的标识; 将所述用于执行所存储的顶点的次序与用于在所述终端服务器客户端处呈现位图的 次序同步;以及 将所述所存储的顶点、所述位图以及经同步的所述用于执行所存储的顶点的次序和所 述用于呈现位图的次序发送给所述终端服务器客户端。
16.如权利要求15所述的方法,其特征在于,进一步包括: 由用户模式驱动程序从用户模式进程接收应用程序接口构造。
17.如权利要求16所述的方法,其特征在于,进一步包括: 将用于图元的顶点与位图同步。
18.如权利要求16所述的方法,其特征在于,进一步包括: 将用于图元的顶点与位块传送命令同步。
19.如权利要求16所述的方法,其特征在于,进一步包括: 预处理经同步的用于图元的顶点。
20. 如权利要求16所述的方法,其特征在于,进一步包括: 压缩经预同步的用于图元的顶点。

说明书全文

命令遥控

背景技术

[0001] 终端服务提供用于允许访问存储在服务器上的应用和数据的技术。用户输入通过 网络被发送给服务器,并且音频和图形被从服务器发送给客户端。这些年来,已经开发出用 于遥控图形的不同技术、比如命令级遥控和位图级遥控。
[0002] 一般认为位图级遥控是两种技术中较容易实现的。在位图遥控中,图形处理在终 端服务器上执行,并且例如形成位图的像素值阵列之类的最终图像被压缩并且通过网络被 发送给客户端。该技术需要具有足够计算能的服务器来为一个或多个客户端呈现图像。
[0003] 另一方面,命令级遥控将图形呈现推卸给客户端。可以被驱动程序处理并且被图 形处理器执行的例如顶点之类的图元可以被捕获并且被发送给客户端。这降低了为了遥控 图形所需的处理能力,但是比位图需要更多带宽来发送表示3D图形的数据,比如视频游戏 或用户界面的数据。
[0004] 迄今为止,本领域的技术人员已经尝试通过捕获由应用程序界面输出的生成诸如 顶点和常量之类的图元的命令来执行命令级遥控。总的来说,随着这些年来已经开发出不 同类型的应用,例如使用3D应用、视频游戏等等的新用户界面,趋势已经是使用定制的遥 控组件来捕获由每个应用输出的命令,其中这些遥控组件被优化为捕获由特定API输出的 特定API构造。这已经导致一种在计算机中的多个位置处进行数据捕获的架构,并且该架 构需要变得越来越复杂的系统。而且,随着来自越来越多应用的命令被遥控,已经变得难以 在不同遥控组件的范围内同步呈现操作。例如,Gn框可以使用一种技术生成,并且填充图 标的文本可以用另一种技术来绘制。如果命令未被同步,则文本可能出现在GUI框的错误 部分处或出现在错误时间。因此,所期望的是用于同步命令的技术。发明内容
[0005] 本发明的一个示例性实施例描述了一种方法。在该实施例中,该方法包括、但不限 于:由至少一个内核模式进程同步用于图元的顶点,所述顶点存储在顶点缓冲器中;以及 将经同步的用于图元的顶点发送给终端服务器客户端。除前述的之外,在构成本发明的一 部分的权利要求书、附图,以及文本中描述了其他方面。
[0006] 本发明的一个示例性实施例描述了一种方法。在该示例中,该方法包括、但不限 于:从用户空间进程接收与用于图元的顶点相关联的信息;从图形设备接口接收与位传 送命令相关联的信息;由至少一个内核模式进程将用于图元的顶点与位块传送命令同步; 以及跨机器界限地发送经同步的用于图元的顶点和命令。除前述的之外,在构成本发明的 一部分的权利要求书、附图,以及文本中描述了其他方面。
[0007] 本发明的一个示例性实施例描述了一种方法。在该实施例中,该方法包括、但不限 于:由用户模式驱动程序生成用于图元的顶点;同步用于图元的顶点;以及将经同步的用 于图元的顶点发送给终端服务器客户端。除前述的之外,在构成本发明的一部分的权利要 求书、附图,以及文本中描述了其他方面。
[0008] 本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发 明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所 述方面的硬件软件和/或固件的任何组合,这取决于系统设计者的设计选择。
[0009] 以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明 白,本概述只是说明性的并且决不旨在是限制性的。

附图说明

[0010] 图1描绘其中可实现本发明的各方面的示例计算机系统
[0011] 图2描绘了用于实施本发明的各方面的操作环境。
[0012] 图3描绘了用于实施本发明的各方面的操作环境。
[0013] 图4描绘了用于实施本发明的各方面的操作环境。
[0014] 图5描绘了用于实施本公开的各方面的操作过程。
[0015] 图6示出图5的操作过程500的可替代实施例。
[0016] 图7示出图6的操作过程500的可替代实施例。
[0017] 图8示出图6的操作过程500的可替代实施例。
[0018] 图9描绘了用于实施本公开的各方面的示例性操作过程。
[0019] 图10示出图9的操作过程900的可替代实施例。
[0020] 图11示出图10的操作过程900的可替代实施例。
[0021] 图12描绘了用于实施本公开的各方面的示例性操作过程。
[0022] 图13示出图12的操作过程900的可替代实施例。

具体实施方式

[0023] 各实施例可在一个或多个计算机上执行。图1和下面讨论旨在提供其中实现本发 明的合适计算环境的简要描述。本领域技术人员能够理解,图1的计算机系统在一些实施 例中可实现图2和图4的计算机200和客户端401。在这些示例性实施例中,服务器200和 客户端401可以包括图1中描述的一些或全部组件、以及被配置为实例化本公开的具体方 面的电路。
[0024] 贯穿本公开使用的术语电路例如可以包括诸如硬件中断控制器硬盘驱动器、网 络适配器、图形处理器、基于硬件的视频/音频编解码器之类的硬件组件、以及用于操作这 些硬件的固件/软件。在相同实施例或其他实施例中,电路可以包括被配置为执行固件或 调定开关(set switch)功能的微处理器。在相同或其他示例性实施例中,电路可以包括一 个或多个逻辑处理器,例如多核通用处理单元的一个或多个核。本示例中的逻辑处理器可 以由软件指令来配置,软件指令体现为可用于执行从例如RAM、ROM、固件和/或虚拟存储器 之类的存储器加载的功能的逻辑。在电路包括硬件和软件的组合的示例实施例中,实现者 可以编写体现为逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代 码。因为本领域技术人员能够理解,现有技术已经发展到硬件、软件或硬件/软件的组合之 间几乎没有差别的地步,因此选择硬件还是软件来实现特定功能只是一个设计选择。更具 体而言,本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身 可被变换成等价的软件进程。因此,对于硬件实现还是软件实现的选择是设计选择之一并 留给实现者。
[0025] 现在参考图1,描绘了示例性通用计算系统。该通用计算系统可包括常规的计算机 20等,它包括通用处理单元21、系统存储器22和将包括系统存储器在内的各种系统组件耦 合到处理单元21的系统总线23。系统总线23可以是几种类型的总线结构中的任何一种, 包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部 总线。系统存储器包括只读存储器(ROM) 24和随机存取存储器(RAM) 25。基本输入/输出 系统26 (BIOS)被存储在ROM 24中,该基本输入/输出系统26包含了诸如在启动期间帮助 在计算机20内的元件之间传输信息的基本例程。计算机20还可以包括用于读写硬盘(未 示出)的硬盘驱动器27、用于读写可移动磁盘29的磁盘驱动器28,以及用于读写诸如CD ROM或其他光学介质之类的可移动光盘31的光盘驱动器30。在一些示例实施例中,实施本 公开各方面的计算机可执行指令可以存储在ROM 24、硬盘(未示出)、RAM 25、可移动磁盘 29、光盘31和/或通用处理单元21的高速缓存中。硬盘驱动器27、磁盘驱动器28,以及光 驱动器30分别通过硬盘驱动器接口 32、磁盘驱动器接口 33,以及光驱动器接口 34连接到 系统总线23。驱动器以及它们相关联的计算机可读介质为计算机20提供了对计算机可读 指令、数据结构、程序模块,及其他数据的非易失性存储。虽然这里描述的示例性环境采用 硬盘、可移动磁盘29和可移动光盘31,但本领域技术人员理解,在该示例性操作环境中也 能使用可存储能由计算机访问的数据的其它类型计算机可读介质,如盒式磁带、闪存卡、数 字视频盘、柏努利(Bernoulli)盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等。
[0026] 可以有若干个程序模块存储在硬盘、磁盘29、光盘31、ROM 24或RAM 25上,包括 操作系统35、一个或多个应用程序36、其他程序模块37、以及程序数据38。用户可以通过 诸如键盘40和定点设备42之类的输入设备向计算机20中输入命令和信息。其他输入设 备(未示出)可以包括麦克、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其 它输入设备常通过耦合到系统总线的串行端口接口 46连接到通用处理单元21,但也可通 过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器47或其他类型的显 示设备也可以通过诸如视频适配器48之类的接口连接到系统总线23。除了显示器47之 外,计算机通常还包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系 统还包括主适配器55、小型计算机系统接口(SCSI)总线56和连接到SCSI总线56的外部 存储设备62。
[0027] 计算机20可以使用到诸如远程计算机49之类的一个或多个远程计算机的逻辑 连接在联网环境中操作。远程计算机49可以是另一台个人计算机、服务器、路由器、网络 PC、对等设备或其它公共网络节点,并通常可包括以上对个人计算机20描述的许多或所有 元件,虽然在图1中只示出存储器存储设备50。图1中所描绘的逻辑连接可包括局域网 (LAN) 51和广域网(WAN) 52。这样的联网环境在办公室、企业范围的计算机网络、内部网和 因特网中是普遍现象。
[0028] 当用于LAN网络环境中时,计算机20可通过网络接口或适配器53连接到LAN 51。 当用于WAN网络环境中时,计算机20通常包括调制解调器54,或用于通过广域网52 (如通 过因特网)建立通信的其他装置。调制解调器54-一其可以是内置的或外置的,可通过串 行端口接口 46连接到系统总线23。在联网环境中,参考计算机20所描述的程序模块或其 部分可被存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且可以使 用在计算机之间建立通信链路的其他手段。此外,尽管可想到的是本发明的许多实施例尤 其适用于计算机化的系统,但是在本说明中不意味着将本发明限于那些实施例。
[0029] 现在参考图2和3,其描绘了可用在本发明各方面的包括用于虚拟化资源的电路 的计算机系统的高级概况。如图所示,服务器200可以包括诸如存储设备208之类的物理 硬件设备(例如硬盘驱动器)、网络接口控制器(NIC) 210、图形卡234、至少一个逻辑处理器 212和随机存取存储器(RAM)214。本领域技术人员能够理解,尽管示出了一个逻辑处理器, 但在其他实施例中,计算机200可以具有例如多个执行核之类的多个逻辑处理器和/或多 个处理器。在这些实施例中,多个线程可以同时执行,例如每逻辑处理器一个或多个线程。 继续对图2的描述,描绘了同样可以称为虚拟机监视器的系统管理程序202。所描绘的实施 例中的系统管理程序202包括用于控制并仲裁对服务器200的硬件的访问的可执行指令。 系统管理程序202可以生成称为分区的执行环境,比如分区1到分区N(其中N是大于1的 整数)。在各实施例中,分区可以被认为是管理程序202所支持的基本隔离单元,也就是说, 每个分区可以被映射到处于系统管理程序202的控制下的一组硬件资源,例如存储器、设 备、逻辑处理器周期等等。在一实施例中,系统管理程序202可以是独立的软件产品、操作 系统的一部分、嵌入在主板的固件内,或者可以由专用集成电路来实现的系统管理程序202 的一部分。
[0030] 继续对图2的描述,计算机200可以包括根分区204,根分区204可以包括虚拟化 服务提供商228 (VSP)。在该示例性架构中,根分区204可以通过设备驱动程序224访问底 层硬件。该示例中的VSP 228可以实现称为子分区的分区中的接口,并且这些子分区可以 被认为是虚拟机。虚拟化服务提供商228通过将不同的设备类实例化为软件来实现虚拟机 216和218,并且将接口展示给分区内的设备。每个虚拟机都可以包括客操作系统220和 222可以管理并调度在其上执行的线程的诸如虚拟处理器230和232的虚拟处理器。如所 示的那样,客操作系统220和222可以执行终端服务器(TS) 240和244。一般而言,虚拟处 理器230和232是提供具有特定架构的物理处理器的表示的可执行指令以及相关联的状态 信息。例如,一个虚拟机可具有拥有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理 器可具有PowerPC处理器的特性。该例中的虚拟处理器可以被映射到计算机系统的逻辑 核,使得实现虚拟处理器的指令将被逻辑处理器支持。因此,在这些示例性实施例中,多个 虚拟处理器可以同时执行,同时例如另一逻辑处理器执行系统管理程序指令。
[0031] 现在参考图3,其示出了可用于实施本公开的实施例的可替代体系结构。图3描 绘了类似于图2的组件,然而在该示例性实施例中,系统管理程序202可以包括虚拟化服务 提供商228和设备驱动程序224,并且根分区204可包含配置实用程序236。在该体系结构 中,系统管理程序202可执行与图2的系统管理程序202相同或相似的功能。图3的系统 管理程序202可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,或者可以 由专用集成电路来实现的系统管理程序202的一部分。在该实施方式中,系统管理程序202 可以被认为是直接在硬件的裸机上执行的指令。在该示例中,根分区204可具有可用于配 置系统管理程序204的指令,然而,硬件访问请求可由系统管理程序202来处理而不是传递 到根分区204。
[0032] 现在参考图4,其总体上示出了可用在本公开的实施例中的示例性操作系统400, 该操作系统400包括终端服务会话402。本领域的技术人员能够理解,示例性的操作系统 400可以由诸如图1的计算机20之类的计算机来实现,或者可以是在根分区204内执行的 主操作系统。在另一实施方式中,操作系统400可以是由诸如VM 216或VM 218之类的虚 拟机实现的客操作系统220或222。参考该图,底层硬件208、210、234、212和214用虚线来 指示,这指示在一实施例中,硬件可以被虚拟化。
[0033] 在各实施例中,终端服务可以被提供给诸如客户端401之类的至少一个客户端 (尽管描绘了一个客户端,但终端服务可被提供给更多客户端)。示例性客户端401可以包 括由硬件来实现的计算机终端,其中该硬件被配置为将用户输入定向到终端服务器会话并 显示该会话生成的用户界面信息。在另一实施例中,客户端401可以由包括与图1的计算 机20的元件类似的元件的计算机来实现。在该实施例中,客户端401可包括被配置为实现 操作系统的电路以及被配置为模拟终端的功能(例如,可由一个或多个逻辑处理器212执 行的远程桌面客户端应用)的电路。本领域技术人员能够理解,被配置为实现操作系统的 电路也可以包括被配置为模拟终端的电路。
[0034] 操作系统400可以包括可将处理器配置为生成会话的指令。简言之,会话一般可 以包括用户模式进程406,比如视频游戏、文字处理程序、web浏览器、用户界面(窗口、对话 框、桌面等等)、媒体播放器等等。进程406可以由可提供用于执行应用和与内核418交互 的平台的各种子系统来实施,例如执行进程。一个这样的子系统是环境子系统244和图形 内核424,这些将在下面更详细解释。会话可包括外壳(shell)和用户界面(其由用户界面 进程来呈现)、跟踪该桌面内的鼠标移动的子系统、将对图标的鼠标点击翻译成实现程序实 例的命令的子系统等等。
[0035] 一般而言,例如在操作系统400通过网络连接从诸如客户端401之类的客户端接 收连接请求时,会话可以以逐用户的基础对用户生成。一般而言,连接请求可以首先由例如 远程桌面协议栈(RDP)之类的传输栈410来处理。传输栈410代码可以将处理器配置为监 听某个端口上的连接消息并将这些消息转发给引擎412。当生成会话时,传输逻辑410可以 被执行并且可以为每个会话实例化远程桌面协议栈实例,比如栈实例414。一般而言,每个 远程桌面协议栈实例都可以被配置为将输出路由到相关联的客户端并将客户端输入路由 到用于适当会话的环境子系统444。
[0036] 在会话创建进程期间,会话管理器416可以被逻辑处理器212执行并且处理器212 可以例如通过如下方式初始化和管理每个会话:生成会话空间的会话标识符;将该会话标 识符添加到表;给会话空间分配存储器;以及生成系统环境变量和被分配给会话空间的存 储器中的子系统进程的实例。
[0037] 如图所示,在一实施例中,进程406可以在会话的402的用户模式内执行,并且可 以使用诸如由图形显示界面(GDI)246生成的位图、3D图形之类的两种不同的呈现技术、或 者二者的组合。⑶I 246可用于生成2D图像,比如文本和窗口。⑶I 246可以与可响应于 从处理器406接收到位阵列而生成位图图像的显示驱动程序相关联。例如,应用可以发出 可以被显示驱动程序执行并且用于呈现表示颜色值的像素的阵列。
[0038] 进程可以附加地利用由3D硬件呈现的3D图形和2D图形。这样的图形可以使用 由多个硬件供应商之一制造的3D图形卡来生成。由于不同的硬件供应商使用不同的架构 和命令,因此可以制定一种如下的图形驱动程序架构:该图形驱动程序架构将硬件抽象为 使得开发者可以编写与任何图形卡一起工作的单个应用。在该示例中,该应用可以通过将 API构造发送给诸如来自Microsoft:®的Direct3D之类的应用编程接口 402 (API)来访问 客户端401的图形处理单元的特性。API 420进而可以生成图元,所述图元可以被发送给客 户端401 ;被客户端的驱动程序翻译成可以由该客户端的GPU来执行的命令;以及被该客户 端的GPU执行。一般而言,API 420可以包括用于生成图元(例如在计算机图形中用作被 表示成顶点和常量的其他形状的构建块的基本几何形状)的各种命令。
[0039] 顶点可以被生成并且存储在例如存储器页之类的多个顶点缓冲器中。当应用执行 时,其可以声明它将如何使用缓冲器,例如它将在缓冲器中存储何种类型的数据。诸如视频 游戏之类的应用可以使用动态顶点缓冲器来存储用于化身的图元,并且可以使用静态缓冲 器来存储诸如构建数据之类的将不常改变的数据。当顶点被写入到顶点缓冲器时,缓冲器 中的图元的标识信息可以被发送给图形内核424,其中图元的标识符例如可以存储在执行 队列中。另外,该队列可以包括关于由GDI 446生成的各种位图图像的信息。在该示例中, 该队列可以用于同步使用3D硬件的呈现和位图图像的显示。
[0040] 当呈现存储在各个缓冲器中的图元时,图形内核424可以将执行命令发送给内核 模式驱动程序430。内核模式驱动程序430可以接收该命令并且例如将信号发送给栈实例 414以将指定的命令发送给客户端401。
[0041] 以下是描绘过程的实现的一系列流程图。为便于理解,流程图被组织成使得初始 流程图通过总体"大图"视点来演示各实现,并且后续的流程图提供进一步的附加物和/或 细节。
[0042] 现在参考图5,其示出了用于实施本发明的各方面的操作过程,包括操作500、502 和504。如图所示,操作500开始操作过程,并且操作502示出了:由至少一个内核模式进 程同步用于图元的顶点,其中所述顶点存储在顶点缓冲器中。例如,至少一个内核模式进程 可以由至少一个逻辑处理器212执行,并且所述至少一个逻辑处理器212可以通过图形处 理单元同步顶点的执行以呈现图元。例如,图元的顶点可以存储在例如页或存储器之类的 顶点缓冲器中,并且诸如例如操作系统调度器、环境子系统444、图形内核424或任何其他 内核模式子系统或进程之类的内核模式进程可以同步图元的执行。在诸如图4所述示例之 类的特定示例中,可以与操作系统调度器类似地运行的图形处理调度器428可以调度GPU 操作。更具体而言,在该示例中,GPU调度器428可以将单独的顶点流合并成正确的执行次 序,使得客户端401的图形处理单元以正确次序来执行命令。
[0043] 例如,诸如视频游戏之类的进程的一个或多个线程可以映射顶点缓冲器并且发出 绘制命令。顶点的标识信息、例如为每个缓冲器、每个顶点或缓冲器中的每批顶点生成的信 息可以被发送给GPU调度器428。该信息可以与同来自相同或其他进程的与顶点相关联的 标识信息一起存储在表中。GPU调度器428可以基于标识信息调度顶点的执行,使得命令被 正确排序并且然后GPU调度器428可以将执行命令发送给内核模式驱动程序430。
[0044] 在另一特定示例中,文字处理程序可以执行并声明两个缓冲器一一例如一个用于 存储用于生成3D菜单的顶点,而另一个存储用于生成将填充该菜单的字母的命令。应用可 以映射缓冲器,发出绘制命令,并且GPU调度器428可以确定执行两个缓冲器的次序,使得 菜单与字母一起以将使用户愉快的方式被呈现。例如,其他进程可以在相同或基本相同的 时间发出绘制命令,并且如果顶点不是经同步的,则来自不同进程的不同线程的顶点可能 在客户端401上异步地被呈现,从而使得所显示的最终图像看上去是混乱或混杂的。
[0045] 继续对图5的描述,操作504示出了将经同步的用于图元的顶点发送给终端服务 器客户端。继续对图5的描述,该示例中的内核模式驱动程序430可以将信号发送给与会 话402相关联的栈实例414,其中该会话402对栈实例414进行定向以以特定的次序发送顶 点,并且栈实例414可以通过网络接口卡210将顶点缓冲器中的命令发送给客户端401。
[0046] 现在参考图6,其示出了图5的操作过程的可替代实施例,包括以虚线指示的附加 操作606-612,这指示它们被认为是任选的。操作606示出了 :由用户模式驱动程序从应用 编程接口接收用于生成图元的应用程序接口构造;以及由用户模式驱动程序生成用于图元 的顶点。例如并且参考图4,应用程序接口 420可以从进程接收API构造,并且可以生成用 于生成图元的命令。例如,API420可以包括可以被展示给诸如操作系统400的用户界面之 类的进程的接口。进程可以向API 420发送用于图元的构造,如点列表(Point List)、线 列表(Line List)、线带(Line Strip)、三形列表(Triangle List)、三角形带(Triangle Strip)、或三角形扇(Triangle Fan)。或者换句话说,进程可以将高级API命令发送给API 420。API 420可以接收这些命令,生成顶点并且将它们传递给用户模式驱动程序422。在 一实施例中,用户模式驱动程序422可以翻译这些顶点并且将它们存储在一个或多个顶点 缓冲器中。本领域的技术人员能够理解,由API 420生成并且被用户模式驱动程序422翻 译的顶点在字节方面比API构造显著更大,因为API位于计算机系统的较低逻辑级。也就 是说,在API级表示用于生成三角形的构造的字节数可能最终是占用5至10倍字节以用于 存储的多个图元。
[0047] 继续对图6的描述,操作608描绘了由应用程序接口生成用于图元的顶点。例如, 应用程序接口 420可以从各种执行进程接收构造并且可以生成顶点,这些顶点可以被存储 在例如RAM 214中的存储器和/或图形处理器234的存储器的一个或多个页之类的一个或 多个顶点缓冲器中。在一实施例中,顶点数据例如可以由API 420响应于从诸如例如视频 游戏、媒体播放器、CAD程序、用户界面等等之类的应用接收API构造而生成。也就是说,应 用可以向API 420传递一个或多个构造,并且API 420可以生成几千个图元并且将它们存 储在一个或多个顶点缓冲器中。
[0048] 继续对图6的描述,操作610示出了:由内核模式进程接收与由显示驱动程序呈现 的位图相关联的信息;以及由内核模式进程将所述位图与用于图元的顶点同步。例如并且 参考图4,进程可以将用于呈现位图的指令发出给图形设备接口子系统446。图形设备接口 子系统446可以呈现位图并且这些位图可以与用于图元的顶点同步。例如,存在如下情形: 诸如用户界面之类的进程和/应用可能发出位图并且使用3D API来生成3D图形。也就是 说,某些应用可能使用API 420,生成位图,或者这二者都取决于这些应用是如何被开发出 的。其他应用例如可能具有专有命令流,使得其仅能发出位图。该实例中的终端服务器将 不具有截取API构造或顶点的机会。在这些情况下,操作系统400仅仅接收指令以呈现最 终图像。
[0049] 在这些示例性实例中,内核模式进程可以同步顶点和位图,使得位图和3D图形可 以合并成被正确呈现的最终执行流。例如,该示例中的内核模式进程可以接收将顶点与位 图相关联的信息,并且内核模式进程可以确定将相同流中的顶点和位图发送给客户端401。 在该示例中,客户端401可以接收合并的流,执行命令,并且将位图与由图元生成的图像一 起进行呈现。
[0050] 继续对图6的描述,操作612示出了压缩经同步的用于图元的顶点。例如,可以在 将数据流发送给客户端401之前使用批量压缩器450来压缩用于图元的命令。在一实施例 中,批量压缩器450可以是栈实例414的用户模式(未示出)或内核模式组件,并且可以被 配置为在被发送到客户端401的数据流中查找相似的模式。在该实施例中,由于批量压缩 器450接收顶点流(而不是从多个应用接收不同类型的多个API构造),因此批量压缩器 450具有较大的顶点数据集来筛选,以便进行压缩。也就是说,由于是用于多个进程的顶点 而不是不同API调用被遥控,因此存在批量压缩器450能在一次运行中找到相似模式的更 大机会。
[0051] 在相同或其他实施例中,命令和/或位图可以使用有损压缩器、前移(move to front)编码器、网格压缩器等等来压缩。这些技术在2008年12月8日提交的代理人案号 为 MVIR-0338、名称为" Improved Command Remoting Techniques (改进型命令遥控技术)" 的美国专利申请No. xx/xxx, XXX中予以了描述,该申请的内容通过引用全部并入本申请。
[0052] 现在参考图7,其示出了图6的操作过程的包括附加操作714的可替代实施例,该 附加操作714示出了由内核模式进程从图形设备接口子系统接收与命令相关联的信息。例 如,图形设备接口子系统446可以除了呈现用于进程406的位图以外还生成命令。例如并 且如上所述,操作系统400不能从进程访问用于生成图元的命令流,而是环境子系统444仅 能接收呈现位图的请求。在该示例中,替代于仅仅呈现位图,⑶I 446可以附加地生成某些 命令。通过给⑶I 446提供生成命令的能力,必须被压缩并且发送给客户端401的的数据 量可以被减小。例如,GDI 446可以生成的一些示例性命令可以包括、但不限于:屏到屏位 块传送,例如屏幕的一部分到另一部分的复制;图案位块传送,例如密实填充(solid fill) 等等。在特定实施例中,替代于在用户将窗口从屏幕的一部分移动到另一部分时重绘整个 屏幕,GDI 446可以生成屏到屏位块传送命令。内核模式进程可以接收标识出屏到屏位块 传送的信息,并且将该命令与其他命令和/或位图同步,并且通过栈实例414将屏到屏位块 传送命令发送给客户端401。
[0053] 现在参考图8,其示出了图6的操作过程的包括附加操作816的可替代实施例,该 附加操作816示出了预处理经同步的用于图元的顶点。例如在本公开的一实施例中可以 包括预处理器。该预处理器可以被配置为分析用于生成图元的命令流并且将其置于一种 将允许批量压缩器450更容易找到模式并压缩数据的格式。一般而言,可以使用前移编码 器、增量预处理等等。这些技术在2008年12月8日提交的代理人案号为MVIR-0338、名称 为"Improved Command Remoting Techniques (改进型命令遥控技术)"的美国专利申请 No. xx/xxx, XXX中予以了描述。
[0054] 现在转到图9,其示出了用于实施本发明的各方面的操作过程,包括操作900、 902、904、906和908。如图所示,操作900开始操作过程,并且操作902示出了从用户空间 进程接收与用于图元的顶点相关联的信息。参考图4,在本公开的一实施例中,与用于图元 的顶点相关联的信息可以从例如API 420、用户模式驱动程序422等等之类的用户空间进 程接收。类似于上面所述的那样,顶点可以被客户端401的图形处理单元用于呈现一个或 多个三角形或线条。例如,在某些终端服务实施例中,用户模式驱动程序API 422可以使得 易于从高级API构造翻译成顶点。然后,这些顶点可以存储在例如用户模式驱动程序422、 传输栈410、栈实例414、图形内核424的一个或多个顶点缓冲器、或者分配给会话402的存 储器的一个或多个页中。用于标识出存储在顶点缓冲器中的命令的一个或多个信息包可以 被发送给内核模式进程,比如例如GPU调度器428或者OS内核418等等。
[0055] 继续对图9的描述,操作904描绘了从图形设备接口接收与位块传送命令相关联 的信息。如该操作所示,与执行位块传送相关联的命令例如可以从图形显示子系统446接 收。在该示例中,位块传送命令可以包括使用光栅操作将若干位图组合成一个位图的操作。 例如,这些命令可以用于组合诸如源和目的地之类的两个位图。源和目的地位图可以根据 指定的光栅操作(ROP)来组合,并且其结果然后被写到目的地位图上。基本ROP仅仅用源 矩形重写目的地矩形,或者使用诸如AND、OR、XOR和NOT之类的运算。在特定的示例中,位 块传送命令可以包括、但不限于:屏到屏位块传送,例如屏幕的一部分到另一部分的复制; 图案位块传送,例如密实填充(solid fill)等等。
[0056] 继续对图9的描述,操作906示出了由至少一个内核模式进程将用于图元的顶点 与位块传送命令同步。例如并且参考图4,操作906示出了 :例如图形内核424、环境子系统 444、操作系统内核418、或者组合之类的至少一个内核模式进程可以将存储在一个或多个 顶点缓冲器中的顶点与位块传送命令同步。在该示例中,所述至少一个内核模式进程可以 将顶点和位图合并成执行流。
[0057] 如图9的操作908所示,在一实施例中,该操作过程可以包括:跨机器界限地发送 经同步的用于图元的顶点和命令。例如,一旦命令和顶点已经被同步并且合并成流,则其就 可以跨机器界限地被发送,例如从终端服务器会话402发送给另一操作系统。在一实施例 中,命令和顶点的流可以包括存储在各个顶点缓冲器中的顶点。在该示例中,内核模式驱动 程序430可以以特定次序执行顶点/位块传送命令。
[0058] 现在转到图10,其示出图9的操作过程900的可替代实施例,包括操作 1010-1018。操作1010示出了将经同步的用于图元的顶点和命令发送给虚拟机。例如并且 参考图2、3和图4,在本公开的一实施例中,经同步的顶点和命令可以跨机器界限地被发送 给虚拟机,例如从图2虚拟器216发送给虚拟机218。在该实施例中,分区总线可以用于使 用在被普通转让的名称为"Partition Bus (分区总线)"的美国专利申请号11/128, 647中 描述的技术来跨机器界限地传送命令,该申请的全部内容通过引用并入本申请。例如在该 实施例中,命令流可以被发送给包括虚拟桌面技术的虚拟机。
[0059] 继续对图10的描述,操作1012示出了将经同步的用于图元的顶点和命令发送给 终端服务器客户端。继续对图6的描述,该示例中的内核模式驱动程序430可以将信号发 送给与会话402相关联的栈实例414,其中该会话402对栈实例414进行定向以以特定的次 序发送顶点缓冲器的内容和命令,并且栈实例414可以通过网络接口卡210将顶点缓冲器 中的命令发送给客户端401。然后,栈实例414可以通过网络接口卡210将顶点缓冲器中的 命令发送给客户端401。
[0060] 现在参考图10的操作1014,其描绘了:接收与由显示驱动程序生成的位图相关联 的信息;以及将由显示驱动程序生成的位图与用于图元的顶点和位块传送命令同步。例如 并且参考图4,在本公开的一实施例中,进程可以将用于呈现位图的指令发出给图形设备接 口子系统446。图形设备接口子系统446的显示驱动程序可以呈现位图并且这些位图可以 与顶点交织。在该示例性实施例中,所述至少一个内核模式进程可以将顶点、位图和位块传 送命令同步成有序命令流。客户端401可以接收合并的流,执行该流并且显示最终图像。
[0061] 继续对图10的描述,操作1016示出了 :从用户空间进程接收应用程序接口构造; 以及由用户模式驱动程序生成用于图元的顶点。例如,诸如用户界面之类的用户模式进程 可以进行API调用。在该例中,用户模式驱动程序422可以生成用于图元的顶点。例如,API 420可以包括一个或一组应用程序接口,这些应用程序接口可以允许软件开发者开发出可 以在不知道确切硬件的情况下访问计算机系统的硬件的应用。
[0062] 参考操作1018,其示出了预处理用于图元的顶点。例如在本公开的一实施例中可 以包括预处理器。该预处理器可以被配置为分析用于生成图元的命令流并且将其置于一种 将允许批量压缩器450更容易找到模式并压缩数据的格式。一般而言,可以使用前移编码 器、增量预处理等等。
[0063] 现在参考图11,其示出了图10的操作过程的包括附加操作1120的可替代实施例, 该附加操作1120示出了压缩经预处理的用于图元的顶点。例如,可以在将数据流发送给客 户端401之前使用批量压缩器450来压缩用于图元的命令。在一实施例中,批量压缩器450 可以是栈实例414的用户模式(未示出)或内核模式组件,并且可被配置为在被发送到客 户端401的数据流中查找相似的模式。
[0064] 在相同或其他实施例中,命令和/或位图可以使用有损压缩器、前移编码器、网格 压缩器等等来压缩。这些技术在2008年12月8日提交的代理人案号为MVIR-0338、名称 为"Improved Command Remoting Techniques (改进型命令遥控技术)"的美国专利申请 No. xx/xxx, XXX中予以了描述,该申请的内容通过引用全部并入本申请。
[0065] 现在参考图12,示出了用于实施本公开的各方面的操作过程,包括操作 1200-1206。如图所示,操作1200开始操作过程,并且操作1202示出了由用户模式驱动程 序生成用于图元的顶点。参考图4,在本公开的一实施例中,用户模式驱动程序422可以生 成可以被GPU处理的顶点、以及与可以从用户模式驱动程序422来接收的顶点相关联的信 息。类似于上面所述的那样,用于图元的顶点可以存储在例如页或存储器之类的顶点缓冲 器中,并且诸如例如操作系统调度器、环境子系统444、图形内核424或任何其他内核模式 子系统或进程之类的内核模式进程。
[0066] 继续对图12的描述,操作1204示出了同步用于图元的顶点。例如并且参考图4, 例如图形内核424、环境子系统444、操作系统内核418、或者组合之类的至少一个内核模式 进程可以同步设备级命令。例如,命令可以被放入队列中以供执行。然后,顶点可以被同步, 例如顶点的执行次序可以被确定。在诸如图4所述示例之类的特定示例中,可以与操作系 统调度器类似地运行的图形处理调度器428可以调度GPU操作。
[0067] 现在参考操作1206,其示出了将经同步的用于图元的顶点发送给终端服务器客户 端。继续对图12的描述,内核模式驱动程序430可以将执行命令发送给栈实例414,而不是 内核模式驱动程序430将命令发送给计算机200的GPU。然后,栈实例414可以将图元发送 给终端服务器客户端以供在该客户端的GPU上执行。
[0068] 参照图13,其示出了操作过程1200的包括操作1308、1310、1313和1314的可替代 实施例。操作1308示出了由用户模式驱动程序从用户模式进程接收应用程序接口构造。例 如并且参考图4,用户模式驱动程序422可以从例如诸如视频游戏之类的执行进程接收API 调用。进程可以向API 420发送用于图元的指令,比如点列表、线列表、线带(Line Strip)、 三角形列表、三角形带、或三角形扇。或者换句话说,进程可以将高级API构造发送给API 420, API 420进而可以生成一个或多个顶点。
[0069] 继续对图13的描述,操作1310示出了将用于图元的顶点与位图同步。例如并且 参考图4,位图可以由图形设备接口子系统446的显示驱动程序来呈现,并且在该示例中, 位图可以与用于生成图元的命令交织。在该示例性实施例中,所述至少一个内核模式进程 可以将3D图形命令和位图合并成有序命令流。例如,该示例中的所述至少一个内核模式进 程可以接收将用于生成图元的命令与位图相关联的信息,并且内核模式进程可以确定将相 同流中的命令和位图发送给客户端401,使得客户端401可以接收合并的流,执行命令,并 且将位图与由图元生成的图像一起进行呈现。
[0070] 继续对图13的描述,操作1312示出了将用于图元的顶点与位块传送命令同步。 如该操作所示,与执行位块传送相关联的命令例如可以从图形显示子系统446接收。在该 示例中,位块传送命令可以包括使用光栅操作将若干位图组合成一个位图的操作。例如, 这些命令可以用于组合诸如源和目的地之类的两个位图。在特定的示例中,位块传送命令 可以包括、但不限于:屏到屏位块传送,例如屏幕的一部分到另一部分的复制;图案位块传 送,例如密实填充等等。
[0071] 再次参考图13,操作1314示出了预处理经同步的用于图元的顶点。例如在本公开 的一实施例中可以包括预处理器。该预处理器可以被配置为分析用于生成图元的命令流并 且将其置于一种将允许批量压缩器450更容易找到模式并压缩数据的格式。一般而言,可 以使用前移编码器、增量预处理等等。
[0072] 继续对图13的描述,操作1316示出了压缩经同步的用于图元的顶点。例如,顶点 流可以使用批量压缩器450来压缩。在一实施例中,批量压缩器450可以是栈实例414的 组件,并且批量压缩器450可以被配置为在被发送到客户端401的数据流中查找相似的模 式。
[0073] 前述的详细描述通过示例和/或操作图阐述了系统和/或进程的各实施例。在这 样的框图和/或示例包含一个或多个功能和/或操作的范围内,本领域技术人员将理解,这 样的框图,或示例内的每一功能和/或操作可以分别地和/或共同地通过范围广泛的硬件、 软件、固件或几乎其任何组合来实现。
[0074] 虽然已示出和描述了本文中描述的主题内容的特定方面,但是本领域技术人员将 明白,基于本文中的教导,可作出改变和修改而不脱离本文中描述的主题内容,并且其更广 方面以及因此所附权利要求的范围旨在涵盖落在本文中描述的主题内容的真实精神和范 围内的所有此类改变和修改。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈