CN102239483B - 命令遥控 - Google Patents

命令遥控 Download PDF

Info

Publication number
CN102239483B
CN102239483B CN200980150080.6A CN200980150080A CN102239483B CN 102239483 B CN102239483 B CN 102239483B CN 200980150080 A CN200980150080 A CN 200980150080A CN 102239483 B CN102239483 B CN 102239483B
Authority
CN
China
Prior art keywords
summit
pel
order
bitmap
terminal server
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
CN200980150080.6A
Other languages
English (en)
Other versions
CN102239483A (zh
Inventor
N·Y·阿布多
A·德罗尔
M·A·麦克马伦
S·R·帕特里克
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102239483A publication Critical patent/CN102239483A/zh
Application granted granted Critical
Publication of CN102239483B publication Critical patent/CN102239483B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Information Transfer Between Computers (AREA)
  • Image Generation (AREA)

Abstract

在构成本发明的一部分的权利要求书、附图,以及文本中描述了用于遥控图形的各种技术。

Description

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

Claims (20)

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所述的方法,其特征在于,进一步包括:
压缩经预同步的用于图元的顶点。
CN200980150080.6A 2008-12-08 2009-10-30 命令遥控 Active CN102239483B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/330,295 US8654134B2 (en) 2008-12-08 2008-12-08 Command remoting
US12/330,295 2008-12-08
PCT/US2009/062752 WO2010077424A1 (en) 2008-12-08 2009-10-30 Command remoting

Publications (2)

Publication Number Publication Date
CN102239483A CN102239483A (zh) 2011-11-09
CN102239483B true CN102239483B (zh) 2015-07-22

Family

ID=42230564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980150080.6A Active CN102239483B (zh) 2008-12-08 2009-10-30 命令遥控

Country Status (3)

Country Link
US (3) US8654134B2 (zh)
CN (1) CN102239483B (zh)
WO (1) WO2010077424A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110252208A1 (en) * 2010-04-12 2011-10-13 Microsoft Corporation Express-full backup of a cluster shared virtual machine
KR20120072134A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 가상 데스크톱 가속 장치 및 방법
US9304813B2 (en) * 2012-07-18 2016-04-05 Intel Corporation CPU independent graphics scheduler for performing scheduling operations for graphics hardware
KR101700821B1 (ko) * 2012-08-21 2017-02-01 한국전자통신연구원 스케일러블 원격화면 전송방법 및 그 장치
US9633408B2 (en) * 2013-06-14 2017-04-25 Microsoft Technology Licensing, Llc Coalescing graphics operations
US9430808B2 (en) 2013-06-19 2016-08-30 Microsoft Technology Licensing, Llc Synchronization points for state information
WO2015042430A1 (en) * 2013-09-19 2015-03-26 Citrix Systems, Inc. Transmitting hardware-rendered graphical data
US11157694B2 (en) * 2018-08-14 2021-10-26 Snap Inc. Content suggestion system
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US20220334851A1 (en) * 2021-04-15 2022-10-20 Nvidia Corporation Application programming interface to generate a representation of graph code
US11868759B2 (en) 2021-12-08 2024-01-09 Advanced Micro Devices, Inc. Shader source code performance prediction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1470989A (zh) * 2002-06-26 2004-01-28 微软公司 独立于过程模式的驱动器模型
CN1851692A (zh) * 2005-08-05 2006-10-25 华为技术有限公司 一种图片数据存储和读取方法
CN101238457A (zh) * 2005-08-31 2008-08-06 微软公司 支持任意格式大对象通信的远程协议
CN101263485A (zh) * 2005-09-12 2008-09-10 微软公司 用于图形设备接口的远程重定向层

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717845A (en) 1994-12-13 1998-02-10 Microsoft Corporation Method and apparatus for transferring a brush pattern to a destination bitmap
US7091991B2 (en) * 1996-02-08 2006-08-15 Palm Charles S 3D stereo browser for the internet
US5826095A (en) 1996-08-27 1998-10-20 Hewlett-Packard Company Method and apparatus for maintaining the order of data items processed by parallel processors
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US6377266B1 (en) * 1997-11-26 2002-04-23 3Dlabs Inc., Ltd. Bit BLT with multiple graphics processors
US6426748B1 (en) * 1999-01-29 2002-07-30 Hypercosm, Inc. Method and apparatus for data compression for three-dimensional graphics
US6384821B1 (en) * 1999-10-04 2002-05-07 International Business Machines Corporation Method and apparatus for delivering 3D graphics in a networked environment using transparent video
US7302490B1 (en) * 2000-05-03 2007-11-27 Microsoft Corporation Media file format to support switching between multiple timeline-altered media streams
US7210099B2 (en) * 2000-06-12 2007-04-24 Softview Llc Resolution independent vector display of internet content
US7847803B1 (en) * 2000-07-26 2010-12-07 Ati Technologies Ulc Method and apparatus for interleaved graphics processing
US6833831B2 (en) 2002-02-26 2004-12-21 Sun Microsystems, Inc. Synchronizing data streams in a graphics processor
US7275212B2 (en) * 2003-10-23 2007-09-25 Microsoft Corporation Synchronized graphics and region data for graphics remoting systems
JP5345780B2 (ja) * 2004-09-09 2013-11-20 ソニー コンピュータ エンタテインメント ヨーロッパ リミテッド データ処理
US7558428B2 (en) * 2004-09-13 2009-07-07 Microsoft Corporation Accelerated video encoding using a graphics processing unit
US7730157B2 (en) * 2005-02-03 2010-06-01 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for displaying information on a thin-client in communication with a network
US20070013723A1 (en) 2005-07-12 2007-01-18 Microsoft Corporation Magnification engine and interface for computers
US9665629B2 (en) 2005-10-14 2017-05-30 Yahoo! Inc. Media device and user interface for selecting media
GB0524804D0 (en) 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
US8244051B2 (en) 2006-03-15 2012-08-14 Microsoft Corporation Efficient encoding of alternative graphic sets
US7439937B2 (en) 2006-04-14 2008-10-21 Microsoft Corporation Appropriately rendering terminal server graphical data at multiple client side monitors
US7830387B2 (en) * 2006-11-07 2010-11-09 Microsoft Corporation Parallel engine support in display driver model
US8056093B1 (en) * 2006-12-07 2011-11-08 Nvidia Corporation Asynchronous kernel processing for a graphics processing system
US8065687B2 (en) 2007-01-05 2011-11-22 Moka5, Inc. Bypass virtualization
US8907964B2 (en) * 2007-04-10 2014-12-09 Vivante Corporation System and method for dynamically reconfiguring a vertex cache
US8373717B2 (en) * 2007-04-25 2013-02-12 Nvidia Corporation Utilization of symmetrical properties in rendering
WO2008156785A2 (en) * 2007-06-18 2008-12-24 Pano Logic, Inc. Remote graphics rendering across a network
CN100566414C (zh) * 2007-08-06 2009-12-02 北京航空航天大学 一种基于特征保留的三维模型递进传输方法
US9686049B2 (en) * 2007-09-12 2017-06-20 Avago Technologies General Ip (Singapore) Pte. Ltd Method and system for Bluetooth (BT) delayed acknowledgement (ACK)
US8174534B2 (en) * 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods
CN101918921B (zh) 2008-01-27 2013-12-04 思杰***有限公司 用于远程提供三维图形的方法和***
US8068120B2 (en) * 2008-03-07 2011-11-29 Via Technologies, Inc. Guard band clipping systems and methods
US8159505B2 (en) * 2008-10-01 2012-04-17 Ati Technologies Ulc System and method for efficient digital video composition
US9135024B2 (en) * 2008-11-30 2015-09-15 Red Hat Israel, Ltd. Playing multimedia content at remote graphics display client
US9639963B2 (en) 2008-12-08 2017-05-02 Microsoft Technology Licensing, Llc Command remoting techniques

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1470989A (zh) * 2002-06-26 2004-01-28 微软公司 独立于过程模式的驱动器模型
CN1851692A (zh) * 2005-08-05 2006-10-25 华为技术有限公司 一种图片数据存储和读取方法
CN101238457A (zh) * 2005-08-31 2008-08-06 微软公司 支持任意格式大对象通信的远程协议
CN101263485A (zh) * 2005-09-12 2008-09-10 微软公司 用于图形设备接口的远程重定向层

Also Published As

Publication number Publication date
US20160371874A1 (en) 2016-12-22
CN102239483A (zh) 2011-11-09
US20140146063A1 (en) 2014-05-29
US8654134B2 (en) 2014-02-18
WO2010077424A1 (en) 2010-07-08
US10002403B2 (en) 2018-06-19
US20100141678A1 (en) 2010-06-10

Similar Documents

Publication Publication Date Title
CN102239483B (zh) 命令遥控
CN102707986B (zh) 子分区与父分区之间的共享存储器
US20170323418A1 (en) Virtualized gpu in a virtual machine environment
US8718400B2 (en) Methods and systems for prioritizing dirty regions within an image
CN112269603B (zh) 一种在Linux上兼容运行Android应用的图形显示方法与装置
EP2315122B1 (en) Methods and systems for remoting three dimensional graphics
CN102567052B (zh) 启用配置有图形处理器的服务器的远程管理的技术
EP3525093B1 (en) Remoting of windows presentation framework based applications in a non-composed desktop
EP1912202B1 (en) Dual processor accelerated graphics rendering
US9235452B2 (en) Graphics remoting using augmentation data
US20100289804A1 (en) System, mechanism, and apparatus for a customizable and extensible distributed rendering api
CN102447901B (zh) 用于处理要传送到远程计算设备的图形数据的方法和***
JP2006190281A (ja) グラフィックサブシステムを仮想化するシステムおよび方法
WO2009052529A1 (en) Methods and systems for remoting three dimensional graphical data
US8907979B2 (en) Fast rendering of knockout groups using a depth buffer of a graphics processing unit
CN102378976A (zh) 使用多个处理器的图像压缩加速
CN108733602B (zh) 数据处理
CN102239484B (zh) 经改进的命令遥控技术
CN113835816A (zh) 一种虚拟机桌面显示方法、装置、设备及可读存储介质
Walmsley Graphics programming in C++: writing graphics applications for Windows 98
CN116775217A (zh) 一种云桌面vgpu实现方法、装置、设备及存储介质
Penner et al. A GPU cluster without the clutter: A drop-in scalable programmable-pipeline with several gpus and only one pc

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150730

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150730

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.