CN101918921B - 用于远程提供三维图形的方法和系统 - Google Patents

用于远程提供三维图形的方法和系统 Download PDF

Info

Publication number
CN101918921B
CN101918921B CN2009801011246A CN200980101124A CN101918921B CN 101918921 B CN101918921 B CN 101918921B CN 2009801011246 A CN2009801011246 A CN 2009801011246A CN 200980101124 A CN200980101124 A CN 200980101124A CN 101918921 B CN101918921 B CN 101918921B
Authority
CN
China
Prior art keywords
dimensional picture
dimensional
order
agency
frame
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.)
Expired - Fee Related
Application number
CN2009801011246A
Other languages
English (en)
Other versions
CN101918921A (zh
Inventor
J·彼得洛夫
J·里维埃拉
T·J·科比特
N·德赛
M·阿罗拉
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.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
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 Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN101918921A publication Critical patent/CN101918921A/zh
Application granted granted Critical
Publication of CN101918921B publication Critical patent/CN101918921B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG

Abstract

用于提供三维图形给远程计算机器和设备的方法和系统,包括本地计算机器上执行的代理拦截本地计算机器上执行的三维应用所产生的多个三维图形命令。代理使用第一编码译码器来编码多个图形命令的第一部分,而代理使用第二编码译码器编码多个图形命令的第二部分。代理建立包括多个图形命令的第一部分和第二部分的帧,压缩该帧并且将该帧传输到远程计算机器。

Description

用于远程提供三维图形的方法和系统
该美国专利申请要求2008年1月27日提交的美国临时专利申请序列号61/023,867的优先权,并且要求2008年10月26日提交的美国临时专利申请序列号61/108,538的优先权。这些在前申请的公开内容可认为是本申请的一部分并且通过引用将每一个全部包括进来。
技术领域
本发明总的涉及远程提供图形。更具体地,本发明涉及远程提供三维图形。
背景技术
远程提供具有增强图形需求的应用或者桌面(诸如使用三维图形的那些应用和桌面)的远程递送系统会经历由于所述增强图形需求而导致的终端用户体验下降。例如,当将使用三维图形的桌面或者应用递送到Citrix的XenApp、XenDesktop或者XenServer的终端用户时,为终端用户提供的终端用户体验可能质量较低。在一些实施例中,通过改变将桌面和应用远程提供给终端用户的方式可以实现减轻三维图形导致的质量下降。
当前存在多种用于远程提供二维图形的不同方法和系统。例如,这样的方法和系统典型地通过如下步骤实现二维图形的远程呈现:在一个计算机器上渲染图形并且将渲染的图形内容传输到另一个计算机器;确定渲染的图形何时保存在远程计算机器上,仅渲染没有保存在远程计算机器上的那些图形并且将新近渲染的图像传输到远程计算机器。当前存在的用于远程提供二维图形的方法和系统并没有考虑三维图形的增强的图形需求。这些增强图形需求可以包括渲染和传输三维图形所需的增加的计算资源,渲染三维图形的二维表示的复杂性,以及其他这样的需求。
需要用于远程提供三维图形和具有超过渲染二维图形所需的增强图形需求的其他这样的图形的方法和系统。由于这些方法和系统可以提供成功远程提供三维图形所需的附加的图形需求而不会降低远程提供的应用或者桌面的质量,所以这些方法和系统还可以减轻质量的下降。
发明内容
在最广义的解释中,本发明描述用于远程提供三维图形的方法和系统。远程提供二维图形一般不考虑三维图像所需的增强图像需求,从而不能胜任远程提供三维图形。本发明描述用于和三维图形技术配合的用于远程提供三维图形的系统和方法,从而,该系统和方法可以有效处理和三维图形相关的而与二维图形无关的多个图形部件。
在一个方面中,一种用于远程提供三维图形的方法,包括由代理拦截在本地计算机器上执行的三维应用所产生的多个图形命令。该方法包括由代理使用第一编码译码器来编码多个图形命令的第一部分。该方法包括由代理使用第二编码译码器来编码多个图形命令的第二部分。该方法包括由代理建立包括多个图形命令的第一部分和第二部分的帧。该方法包括由代理压缩该帧。该方法包括由代理将该帧传输到远程计算机器。
在一个实施例中,该方法包括编码多个图形命令的第一部分,该第一部分包括顶点图形命令、索引图形命令和纹理图形命令的其中一个。在另一个实施例中,该方法包括编码多个图形命令的第二部分,该第二部分包括顶点图形命令、索引图形命令和纹理图形命令的其中一个。仍在另一个实施例中,该方法包括编码多个图形命令的第二部分,该多个图形命令的第二部分不同于该多个图形命令的第一部分。在又一个实施例中,该方法包括编码多个图形命令的第二部分,该多个图形命令的第二部分和该图形命令的第一部分大体相同。
在一个实施例中,该方法包括在将图形命令传输到三维图形驱动器之前将它们拦截。在另一个实施例中,该方法包括将该图形命令重定向到代理三维图形驱动器。仍在另一个实施例中,该方法包括的建立帧还包括建立包括图形图元的帧。甚至仍在另一个实施例中,该方法包括的建立帧还包括建立包括DirectX图形图元的帧。甚至仍在另一个实施例中,该方法包括的建立帧还包括建立包括OpenGL图形图元的帧。在另一个实施例中,该方法包括的建立帧还包括建立包括Direct3D图形图元的帧。
在另一个方面中,一种用于远程提供三维图形的系统包括本地计算机器、远程计算机器和在本地计算机器上执行的代理。本地计算机器执行产生多个图形命令的三维应用。远程计算机器经由远程呈现协议和本地计算机器通信。该代理拦截多个图形命令。该代理使用第一编码译码器来编码多个图形命令的第一部分。该代理使用第二编码译码器来编码多个图形命令的第二部分。该代理建立包括多个图形命令的第一部分和第二部分的帧。该代理压缩该帧。该代理将该帧传输到远程计算机器。
在最广义的方式中从另一种角度考虑,本申请描述用于渲染三维图形数据的方法和系统。远程提供三维图形的图形命令可能耗费很多本地计算机器的中央处理单元和网络资源。类似地,远程提供三维图形的位图对本地计算机器的中央处理单元和网络资源的耗费也很大。本发明描述用于基于事务或者基于应用在本地或远程渲染三维应用的方法和系统。本发明执行的混合渲染方案通过将渲染请求分布在本地和远程计算机器上可以减轻远程提供命令和位图给系统带来的压力。
在一个方面中,一种用于渲染三维图形数据的方法包括拦截三维图形流,该三维图形流包括在第一计算机器上执行的应用所产生的三维图形命令。该方法包括分析远程提供系统的特征来确定用于渲染根据三维图形命令的三维数据的位置,该远程提供系统至少包括具有图形渲染部件的第一计算机器、具有图形渲染部件的第二计算机器和网络。该方法包括基于远程提供系统分析来确定渲染位置。该方法包括致使该应用重新初始化用以确定在何处渲染三维数据的上下文。该方法包括响应于该致使操作,在渲染位置渲染根据三维图形命令的三维数据。
在一个实施例中,该方法包括通过将和装置相关联的装置状态报告给应用来致使上下文被重新初始化。在另一个实施例中,该方法包括报告指示该装置移除的装置状态。仍在另一个实施例中,该方法包括分析和任一下述因素相关的特征:网络上可用的带宽、第一计算机器图形渲染部件上的负载、第二计算机器图形渲染部件上的负载、应用和三维图形命令。甚至仍在另一个实施例中,该方法包括分析和任一下述因素相关的特征:网络上可用的带宽、第一计算机器图形渲染部件上的负载、第二计算机器图形渲染部件上的负载、应用和三维图形命令。在又一个实施例中,该方法包括分析和任一下述因素相关的特征:网络上可用的带宽、第一计算机器图形渲染部件上的负载、第二计算机器图形渲染部件上的负载、应用和三维图形命令。
在一个实施例中,该方法包括拦截包括三维图形命令和渲染的图形的三维图形流。在另一个实施例中,该方法包括确定用于渲染三维数据的渲染位置是第一计算机器。仍在另一个实施例中,该方法包括致使应用来重新初始化上下文,以指定第一计算机器为渲染位置;在第一计算机器上渲染三维数据;并且将渲染的三维数据传输到第二计算机器。在又一个实施例中,该方法包括确定用于渲染三维数据的渲染位置是第二计算机器。
在一个实施例中,该方法包括致使该应用来重新初始化上下文,以指定第二计算机器作为渲染位置;将三维图形流传输到第二计算机器;并且在第二计算机器上渲染三维数据。在另一个实施例中,该方法包括确定在第一计算机器上渲染三维数据的第一部分;致使应用来重新初始化该上下文,以指定第一计算机器为用于三维数据的第一部分的渲染位置;在第一计算机器上渲染三维数据的第一部分;并且在第一计算机器上保存渲染的三维数据的第一部分作为共享的资源。仍在另一个实施例中,该方法包括拦截包括三维图形命令和共享资源的三维图形流;确定在第二计算机器上渲染三维数据;致使该应用来重新初始化该上下文,以指定第二计算机器作为渲染位置;将三维图形流传输到第二计算机器;并且在第二计算机器上渲染根据三维图形命令的三维数据。
在另一个方面中,一种用于渲染三维图形数据的系统包括第一计算机器、第二计算机器、远程提供系统和渲染代理。第一计算机器执行产生三维图形命令的应用。第一计算机器具有图形渲染部件。经由网络和第一计算机器相通信的第二计算机器具有图形渲染部件。远程提供系统包括第一计算机器、第二计算机器和网络。渲染代理在第一计算机器上执行,并且拦截包括三维图形命令的三维图形流。渲染代理分析远程提供系统的特征,以确定用于渲染根据三维图形命令的三维数据的位置。渲染代理基于远程提供系统分析来确定渲染位置。渲染代理致使该应用来重新初始化用来确定在何处渲染三维数据的上下文。在一个实施例中,渲染代理包括用于通过将和装置相关联的装置状态报告给应用来致使上下文被重新初始化的设备。在另一个实施例中,渲染代理包括用于报告指示装置移除的装置状态的设备。
在另一个广义解释中,本申请描述用于计算载入三维资源中的三维数据集的哈希值的方法和系统,其中三维数据集具有可变大小。在大部分应用中,很少考虑应用是否适当使用图形处理单元资源。例如,许多应用在每一帧产生期间将资源直接载入驱动器中。这些帧的许多个由应用中的循环图形引擎合成产生,从而相连的帧或者仅间隔几个帧的帧的图形内容存在不少冗余。本发明描述用于通过有利地使用将资源载入三维资源的事务性质来计算事务期间所产生的数据的哈希值,以减轻这样的冗余。通过基于事务期间所建立的数据集来进行高速缓冲存储,而不是基于字节流,可以在压缩前除去重复事务造成的重复数据。结果是,有效压缩载入资源的不重复的三维数据。
在一个方面中,描述用于计算载入三维资源的三维数据集的哈希值的方法,该三维数据集具有可变大小。首先确定在分布计算环境中执行的应用是否锁定三维资源。随后识别由应用载入三维资源的第一三维数据集,第一三维数据集的大小部分由应用执行的事务确定。该方法还包括检测应用对三维资源执行了操作,计算三维数据的载入的第一集的第一哈希值,第一哈希值使用哈希函数计算,并且在数据仓库中保存第一哈希值。
在一个实施例中,该方法还包括响应于检测应用执行了操作来消除第一三维数据集的部分,该三维数据集的部分是重复事务造成的。
其他实施例包括确定应用锁定应用所使用的三维资源。其它实施例包括使用adler-32哈希函数来计算哈希函数。
在一个实施例中,三维资源是顶点、索引、阴影、纹理和表面的其中一个。其它实施例包括识别第一三维数据集还包括识别大小部分由应用执行的事务确定的第一三维数据集,该事务包括至少将三维数据复制到三维资源中。在这样的实施例中,事务还包括包含至少将三维资源解锁的结束事件。其他实施例包括识别第二三维数据集还包括识别大小部分由应用所执行的事务确定的第二三维数据集,该事务包括至少将三维数据复制到三维资源中。在这样的实施例中,事务还包括包含至少将三维资源解锁的结束事件。
在另一个实施例中,第一三维数据集的大小部分通过应用执行的事务确定,该大小部分表示从开始事件延展到结束事件的时间段。在一个实施例中,开始事件还包括锁定三维资源。在一个实施例中,结束事件还包括解锁三维资源。
在一个实施例中,第一哈希是高速缓冲存储器。
其他实施例包括的方法还包括识别应用载入到三维资源的第二三维数据集,该第二三维数据集的大小不同于第一三维数据集的大小。该方法还包括检测应用对三维资源执行了操作,计算三维数据的所载入的第二集的第二哈希值,第二哈希值使用哈希函数计算,并且将第二哈希值保存在数据仓库中。在另一个实施例中,第二哈希是高速缓冲存储器。另一个实施例包括的方法还包括识别第二三维数据集还包括识别大小部分通过应用执行的事务确定的第二三维数据集,该大小部分表示从开始事件延展到结束事件的时间段。在一些实施例中,开始事件包括锁定三维资源,而在一些实施例中,结束事件可以包括解锁三维资源。
在又一个广义解释中,本发明描述用于检测包括三维图形和三维图形图元的帧中的污渍区域的方法和系统。在许多情况中,一旦通过翻转后台缓存的内容显示经渲染并且保存在后台缓存的位图从而前台缓存可以访问渲染的图像并且将其显示在屏幕上,将特定的三维图形从本地计算机器传输到远程计算机器。为了远程提供三维图形,要等到把渲染的三维图形显示在屏幕上,随后将新的位图传输到远程计算机器。这可以是需要大量带宽的资源密集型进程。本发明描述可以在将渲染的三维图形翻转到前台缓存以在屏幕上显示之前对其进行检查的方法和系统。在把渲染的图像翻转到前台缓存之前对其检查使得可以确定改变了位图的哪个部分。这还允许提取所改变的或者污渍区域,使得仅把那些区域传输到远程计算机器。仅传输部分经渲染的三维图形降低了在网络上传输图形所需的带宽量。
在一个方面中,一个实施例描述了用于检测包括三维图形和三维图形图元的帧中的污渍区域的方法。本地计算机器上执行的代理拦截产生三维图形的应用所发出的函数调用。该代理还响应于拦截该函数调用来识别包括应用所产生的三维图形命令的帧中的至少一个位置,该位置对应于绘制区域。该代理还确定与帧中的至少一个位置相关的三维图形命令的至少一部分发生改变。该代理还提取三维图形命令的所改变的部分。
在一个实施例中,该函数调用包括对设置绘制区域的调用,其中在一些实施例中绘制区域是显示装置上的绘制区域。
其他实施例包括将三维图形数据渲染到缓存器的方法。在一些实施例中,函数调用可以包括对缓存器的显示内容的调用。
在另一个实施例中,帧包括三维图形库,而在其它实施例中,该至少一个位置还包括识别至少一个视图区。
一些实施例包括还用于识别帧中的多个位置的代理,每个位置包含应用所产生的三维图形命令,该多个位置对应绘制区域。识别多个位置之后,代理确定和帧中的多个位置相关联的三维图形命令的部分发生了改变。代理还从多个绘制区域提取三维图形命令的改变的部分,并且将改变的部分传输到和本地计算机器通信的远程计算机器。
在又一个实施例中,该方法还包括将改变的部分传输到和本地计算机器通信的远程计算机器。
其它方面描述用于检测包括三维图形和三维图形图元的帧中的污渍区域的系统,该系统包括执行产生三维图形的应用并且发出至少一个函数调用的本地计算机器。该系统还包括本地计算机器上执行的代理,用来:拦截所发出的至少一个函数调用;响应于拦截该函数调用,识别包括应用所产生的三维图形命令的帧中的至少一个位置,该位置对应于绘制区域;确定与帧中的至少一个位置相关的三维图形命令的至少一部分发生改变;并且提取三维图形命令的所改变的部分。
其它方面描述具有可由处理器执行以检测包括三维图形和三维图形图元的帧中的污渍区域的计算机可读介质。该计算机可读媒介还包括由本地计算机器上执行的代理拦截产生三维图形的应用所发出的函数调用的指令。还包括由该代理响应于拦截该函数调用来识别包括应用所产生的三维图形命令的帧中的至少一个位置的指令,该位置对应于绘制区域。该计算机可读介质还包括确定与帧中的至少一个位置相关的三维图形命令的至少一部分发生改变的指令;和提取三维图形命令的所改变的部分的指令。
在叉一广义解释中,本发明描述用于在远程提供本地计算机器上执行的应用所产生的三维图形时改进资源利用的方法和系统。在一些情况中,远程提供二维或者三维应用要求以标准速度渲染从应用接收的所有帧,随后将所渲染的帧传输给远程计算机器。利用该过程的系统和方法会发现安装在远程计算机器和本地计算机器之间的网络不足以用和渲染数据相同的速度来传输数据。本发明描述可以阻止三维图形的渲染直到远程计算机器接收到了之前的帧的方法和系统。因此,一旦之前的帧已经由远程计算装置接收,本地计算装置才渲染这些帧。
在一个方面,此处描述用于在远程提供本地计算机器上执行的应用所产生的三维图形时改进资源利用的方法的实施例。该方法可以包括由本地计算机器上执行的代理拦截对绘制库的第一调用,该第一调用由请求来自绘制库的信息的应用所产生。代理随后将该应用产生的第一帧传输到远程计算机器,并且当没有接收到指示第一帧被渲染的通知时阻止将第一调用返回到请求的应用。一旦代理接收到远程计算机器产生的并且指示第一帧被渲染的通知,代理允许将第一应用返回到请求的应用。
在一个实施例中,第一调用是请求将当前显示的图像和来自第一帧的渲染的图像相交换的当前调用。其他实施例包括阻止第一调用返回一段预定时间。在一些实施例中,该第一帧包括应用所产生的三维图形命令。
其他实施例包括的绘制库是DirectX库,而其他实施例包括的绘制库是OpenGL库。
一些实施例包括接收在本地计算机器用来和远程计算机器通信的网络上不能传输其它数据的通知,并且基于该信息确定网络繁忙。
其他实施例包括的方法还包括由代理传输应用所产生的第二帧。该代理接收指示第二帧被渲染的通知,并且拦截从绘制库请求信息的应用所产生的第二调用。然后,代理识别第二帧被渲染的指示器,并且允许第二调用返回请求的应用。
在其他方面中,一种用于在远程提供本地计算机器上执行的应用所产生的三维图形时改进资源利用的系统。该系统可以包括本地计算机器,该本地计算机器执行产生第一帧的应用,并且产生对绘制库的第一调用来从绘制库请求信息。还包括本地计算机器上执行的代理,进行如下操作:拦截对绘制库的第一调用;将第一帧传输到远程计算机器;当没有接收到指示第一帧被渲染的通知时阻止将第一调用返回到请求的应用;接收远程计算机器产生的指示第一帧被渲染的通知;并且允许将第一调用返回到请求的应用。
其他方面包括具有可由处理器执行以在远程提供本地计算机器上执行的应用所产生的三维图形时改进资源利用的指令的计算机可读介质。该计算机可读介质包括通过本地计算机器上执行的代理拦截对绘制库的第一调用的指令,该第一调用由请求来自绘制库的信息的应用所产生,和由代理将该应用产生的第一帧传输到远程计算机器的指令。还包括在没有接收到指示第一帧被渲染的通知时阻止将第一调用返回到请求的应用的指令;由代理接收到远程计算机器产生的并且指示第一帧被渲染的通知的指令;和由代理允许将第一应用返回到请求的应用的指令。
附图说明
以下附图描述本发明的某些示例性实施例,包括用于远程提供三维图形的方法和系统,用于合成渲染这样的图形,基于使用哈希值的高速缓存来压缩三维图形、检测三维绘制区域中的污渍区域和通过在远程呈现三维图形期间延迟渲染三维数据来改进资源利用的方法和系统,其中相同的附图标记指相同的元件。所描述的每个实施例仅用于示例而不是用于限制这些方法和系统。
图1A是示出具有和服务器通信的客户机的远程访问网络化环境的实施例的框图;
图1B和1C是示出用于实现此处描述的方法和系统的计算机器的实施例的框图;
图2是示出用于远程提供三维图形的系统的实施例的框图;
图3是示出用于远程提供三维图形的系统的实施例的框图;
图4是示出用于远程提供三维图形的方法的实施例的流程图;
图5A-5B是示出用于远程提供三维图形到客户机的方法的实施例的流程图;
图6A-6B是示出用于渲染三维图形数据的方法的实施例的流程图;
图7是示出用于计算三维图形数据的哈希值的方法的实施例的流程图;
图8A-8B是三维图形改变时显示三维图形和视图区(viewport)集的实施例的屏幕的框图;
图9是用于检测输出三维图形命令的应用所产生的污渍区域的方法的实施例的流程图;
图10是用于改进资源利用的实施例的流程图。
具体实施方式
图1A示出包括和服务器106A-106N通信的一个或者多个客户机102A-102N和安装在客户机102A-102N和服务器106A-106N之间的网络104的计算环境101的一个实施例。在一些实施例中,客户机102A-102N可以称之为单个客户机102或者单组客户机102,而服务器可以称之为单个服务器106或者单组服务器106。一个实施例包括和多于一个的服务器106通信的单个客户机102,另一个实施例包括和多于一个的客户机102通信的单个服务器106,而另一个实施例包括和单个服务器106通信的单个客户机102。
在有些实施例中,计算环境中的客户机102可以称之为以下术语的一个:客户机102、客户机、客户机计算机、客户机装置、客户计算装置、客户机节点、端点、端点节点,或者第二机器。在有些实施例中,服务器106可以称之为以下术语的一个:服务器、服务器群组、寄载计算装置或者第一机器。
在有些实施例中,客户机器102可以执行、操作或以其他方式提供应用,所述应用可以是以下任意一个:软件,程序,可执行指令,web浏览器,基于web的客户机,客户机-服务器应用,瘦客户机的计算客户机,ActiveX控件,Java小程序,例如软IP电话的与因特网协议语音(VoIP)通信相关的软件,以流的形式提供视频和/或音频的应用,促进实时数据通信的应用,HTTP客户机,FTP客户机,Oscar客户机,Telnet客户机,或可以在客户机102上执行的任一其它类型和/或形式的可执行指令。其他实施例中可以包括具有基于服务器或基于远程的应用和在代表客户机102的服务器106上执行的应用的计算环境101。计算环境101的其他实施例包括被配置使用瘦客户机或远程显示协议来显示输出图像数据到客户机102的服务器106,其中所使用的协议可以是以下协议的任一:由位于Ft.Lauderdale,Florida的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。
在一个实施例中,客户机102可以是由如XenSolutions、Citrix Systems、IBM、VMware制造的虚拟机器102C或者可以执行此处所描述方法和系统的任一其他虚拟机器。
在一些实施例中,计算环境101可以包括多于一个的服务器106A-106N,其中该服务器106A-106N是:集合在一起作为单个服务器106实体、逻辑上集合在服务器群组106中;地理上分散开并且逻辑上集合在服务器群组106中,互相位置相邻并且逻辑上集合在服务器群组106中。在一些实施例中,服务器群组106中的地理上分散的服务器106A-106N可以使用WAN、MAN或者LAN通信,其中不同的地理区域可以是:不同的洲、洲的不同区域、不同国家、不同州、不同城市、不同校园、不同房间或者前述地理位置的任一组合。在一些实施例中,服务器群组106可以被管理为单一的实体,或者在其它实施例中,可以包括多个服务器群组106。计算环境101可以包括集合在单个服务器群组106中的多于一个的服务器106A-106N,其中服务器群组106是异类的,使得一个服务器106A-106N被配置为根据第一类型的操作系统平台(例如,由位于Redmond,Washington的微软公司出品的WINDOWS NT)来进行操作,而一个或多个其它的服务器106A-106N被配置为根据第二类型的操作系统平台(例如,Unix或Linux)来进行操作;多于一个的服务器106A-106N被配置为根据第一类型的操作系统平台(例如,WINDOWS NT)来进行操作,而另一个服务器106A-106N被配置为根据第二类型的操作系统平台(例如,Unix或Linux)来进行操作;或者多于一个的服务器106A-106N被配置为根据第一类型的操作系统平台(例如,WINDOWS NT)来进行操作,而多于一个的其它服务器106A-106N被配置为根据第二类型的操作系统平台(例如,Unix或Linux)来进行操作。
在一些实施例中,计算环境101可以包括配置为提供以下服务器类型的任一功能性的服务器106或者多于一个的服务器106:文件服务器,应用服务器,web服务器,代理服务器,设备,网络设备,网关,应用网关,网关服务器,虚拟服务器,配置服务器,SSL VPN服务器,防火墙,web服务器,应用服务器或者作为主应用服务器,配置用作活动目录的服务器106,配置用作提供防火墙功能性、应用功能性或者负载平衡功能性的应用加速应用的服务器106,或者配置用作服务器106的其它类型的计算机器。在一些实施例中,服务器106可以包括远程验证拨入用户服务,使得服务器106是RADIUS服务器。服务器106包括设备的计算环境101的实施例中,服务器106可以是以下制造商的任一制造的设备:CitrixApplication Networking Group;Silver Peak Systems公司;RiverbedTechnology公司;F5 Networks公司;或Juniper Networks公司。一些实施例包括具有以下功能性的服务器106:从客户机器102接收请求的第一服务器106A,将该请求转发给第二服务器106B,并且使用来自第二服务器106B的响应来响应客户机器产生的请求;获取客户机器102可用应用的祥表和与寄载由应用祥表所识别的应用的服务器106相关的地址信息;使用web界面提供对客户请求的响应,直接和客户机102通信来为客户机102提供对所识别应用的访问;接收由执行服务器106上所识别的应用而产生的输出数据,诸如显示数据。
服务器106可以被配置为执行以下应用的任一个:提供瘦客户机计算的应用或远程呈现表示应用;Citrix Systems公司的Citrix访问套件的任一部分,例如MetaFrame或Citrix呈现服务器;由微软公司出品的微软Windows终端服务;或者Citrix Systems公司开发的ICA客户机。另一个实施例包括被配置为执行应用使得服务器可以用作应用服务器的服务器106,该应用服务器如以下应用服务器类型中的任一个:提供诸如微软公司出品的微软Exchange的电子邮件服务的电子邮件服务器,web或Internet服务器,桌面共享服务器,或协作服务器。其它的实施例包括执行由服务器应用寄载的下列类型中的任一种应用的服务器106:Citrix Online部门提供的GoToMeetingTM,由位于Santa Clara,California的WebEx公司提供的WebExTM,或由微软公司提供的微软Office Live Meeting。
在一个实施例中,服务器106可以是虚拟机106B,如由Citrix Systems、IBM、VMware制造的虚拟机或者可以执行此处所述方法和系统的任一其他虚拟机。
在一些实施例中,客户机器102可以用作寻找对服务器106提供的资源的访问的客户机节点,或者作为给其它客户机102A-102N提供对寄载资源的访问的服务器106。计算环境101的一个实施例包括提供主节点功能性的服务器106。客户机器102和服务器106或者多个服务器106A-106N之间的通信可以经由以下方法的任一个来建立:客户机器102和服务器群组106中的服务器106A-106N之间的直接通信;客户机器102使用程序相邻应用和服务器群组106中的服务器106a-106n通信;或者客户机器102使用网络104和服务器群组106中的服务器106A-106N通信。计算环境101的一个实施例包括客户机器102,该客户机器102使用网络104来请求服务器群组106中的服务器106A-106N寄载的应用执行,并且使用网络104来从服务器106A-106N接收表示应用执行的图像显示输出。在其他实施例中,主节点提供识别和提供与寄载所请求应用的服务器106相关联的地址信息所需的功能性。其他实施例包括的主节点可以是以下的任一个:服务器群组106中的服务器106A-106N;连接到服务器群组106但不包括在服务器群组106中的远程计算机器;连接到客户机102但不包括在一组客户机器102中的远程计算机器;或者客户机器102。
客户机器102和服务器106之间的网络106是通过其在客户机器102和服务器106之间传送数据的连接。尽管图1A示出将客户机器102连接到服务器106的网络104,但是其他实施例包括将客户机器102和服务器106安装在同一网络上的计算环境101。其他实施例可以包括具有能够是以下任一个的网络的计算环境101:局域网(LAN),城域网(MAN),广域网(WAN),包括位于客户机器102和服务器106之间的多个子网104’的主网络104,具有专用子网104’的公用主网104,具有公用子网104’的专用主网104,或者具有专用子网104’的专用主网104。其它的实施例包括可以是以下网络类型的任一个的网络104:点到点网络、广播网、电信网、数据通信网、计算机网络、ATM(异步传送模式)网络、SONET(同步光纤网络)网络、SDH(同步数字层级)网络、无线网络、有线网络,包括无线链路的网络104,该无线链路可以是红外信道或卫星频带,或者能够将数据从客户机器102传送到服务器106并且反向传输来实现此处描述的方法和系统的任意其他网络。不同实施例的网络拓扑可以不同,可能的网络拓扑包括:总线形网络拓扑、星形网络拓扑、环形网络拓扑、基于转发器的网络拓扑、分层星形网络拓扑,或者能够将数据从客户机器102传送到服务器106并且反向传输来实现此处描述的方法和系统的任意其他网络拓扑。另外的实施例可以包括移动电话网络的网络104,其使用协议在移动装置间通信,其中该协议可以是以下任一个:AMPS、TDMA、CDMA、GSM、GPRS UMTS,或者能够在移动装置间传输数据来实现此处描述的方法和系统的任意其他协议。
图1B所示是计算装置100的实施例,其中图1A中所示的客户机器102和服务器106可以被部署为和/或执行在此处示出和描述的计算装置100的任一实施例上。计算装置100中包括和以下部件通信的系统总线150:中央处理单元121,主存储器单元122,存储装置128,输入/输出(I/O)控制器123,显示装置124A-124N,安装装置116和网络接口118。在一个实施例中,存储装置128包括:操作系统、软件子程序和客户机代理120。在一些实施例中,I/O控制器123还连接到键盘126和指示装置127。其他实施例可以包括连接到多于一个的输入/输出装置130A-130N的I/O控制器123。
图1C示出计算装置100的一个实施例,其中图1A中所示的客户机器102和服务器106可以被部署为和/或执行在此处示出和描述的计算装置100的任一实施例上。计算装置100中包括和以下部件通信的系统总线150:桥接器170、第一I/O装置130A。在另一个实施例中,桥接器170还和中央处理单元121通信,其中中央处理单元121还和第二I/O装置130B、主存储器122以及高速缓冲存储器140相通信。中央处理单元121中包括I/O端口、存储器端口103和主处理器。
计算机器100的实施例可以包括特征为以下部件结构的任一个的中央处理单元121:响应并处理从主存储器单元122获取的指令的逻辑电路;微处理器单元,诸如:由Intel公司出品的产品;由Motorola公司出品的产品;由位于Santa Clara,California的Transmeta公司出品的产品;由如国际商业机器公司出品的RS/6000处理器;或者由如Advanced MicroDevices公司出品的处理器;或者是能够执行此处所述的系统和方法的任一其它逻辑电路组合。中央处理单元122的其他实施例包括以下的任一组合:微处理器、微控制器、具有一个处理核的中央处理单元、具有两个处理核的中央处理单元,或者具有多于一个处理核的中央处理单元。
计算机器100的一个实施例包括通过也称为背端总线的次级总线与高速缓存存储器140通信的中央处理单元121,而计算机器100的另一个实施例包括经由系统总线150和高速缓冲存储器通信的中央处理单元121。在一些实施例中,中央处理单元还可以使用本地系统总线150与多个类型的I/O装置130A-130N进行通信。在一些实施例中,本地系统总线150可以是以下类型总线的任一个:VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。计算机器100的其他实施例包括作为视频显示器124的I/O装置130A-130N,中央处理单元121可以使用高级图形端口(AGP)与显示器124进行通信。计算机器100的其他形式包括经由以下连接的任一个连接到I/O装置130A-130N的处理器121:HyperTransport、快速I/O或InfiniBand。计算机器100的其他实施例包括处理器121使用本地互连总线与I/O装置130A进行通信并且使用直接连接与第二I/O装置130B进行通信的通信连接。
计算装置100的一些实施例中包括主存储器单元122和高速缓冲存储器140的每一个。在一些实施例中,高速缓冲存储器140可以是以下类型的存储器中的任一个:SRAM、BSRAM或者EDRAM。其他实施例包括可以是如下任一存储器类型的高速缓冲存储器140和主存储器单元122:静态随机存取存储器(SRAM)、突发式SRAM或同步突发式SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页面模式DRAM(FPMDRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发式扩展数据输出DRAM(BEDODRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、铁电RAM(FRAM),或者能够执行此处描述的系统和方法的任意其它类型的存储装置。在一些实施例中,主存储器单元122和/或高速缓冲存储器140可以包括能够保存数据并且允许中央处理单元121直接访问任一存储位置的一个或者多个存储器装置。另外的实施例包括可以经以下任一个访问主存储器122的中央处理单元121:系统总线150、存储器端口103,或者允许处理器121访问存储器122的任意其它连接、总线或者端口。
计算装置100的一个实施例提供对任意以下安装装置116的支持:用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、可引导介质、可引导CD、诸如
Figure GPA00001141493000161
的用于GNU/Linux分发的可引导CD、硬盘驱动器或适于安装像应用或者软件的任意其它装置。在一些实施例中,应用包括客户机代理120或客户机代理120的任一部分。计算装置100还可以包括存储装置,其可以是一个或多个硬盘驱动器,或一个或多个独立磁盘的冗余阵列;其中存储装置被配置用于保存操作系统、软件、程序应用、或者客户机代理120的至少一部分。计算装置100的另一个实施例包括用作存储装置128的安装装置116。
进一步地,计算装置100可以包括通过多种连接联接到局域网(LAN)、广域网(WAN)或者因特网的网络接口118,所述多种连接包括但不限于标准电话线、LAN或WAN链路(例如,802.11、T1、T3、56kb、X.25、SNA、DECNET)、宽带连接(例如,ISDN、帧中继、ATM、千兆以太网、SONET上以太网)、无线连接或上述任意或所有连接的一些组合。还可以使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、RS485、IEEE 802.11、IEEE 802.11a、IEEE 802.11b、IEEE 802.11g、CDMA、GSM、WiMax和直接异步连接)建立连接。计算装置100的一种形式包括可以经由任一类型和/或形式的网关或者隧道协议和其他计算装置100’通信的网络接口118,这些网关或者隧道协议诸如安全套接层(SSL)或者传输层安全(TLS)、或者Citrix System公司出品的Citrix网关协议。网络接口118的形式可以包括以下任一个:内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适于将计算装置100连接到能够传送并执行此处所描述的方法和系统的网络的任意其它装置。
计算装置100的实施例包括以下I/O装置130a-130n的任一个:键盘126、指示装置127、鼠标、轨道垫、光笔、轨道球、麦克风、绘画板、视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打印机以及可以执行此处描述的方法和系统的任一其它输入输出装置。在一些实施例中,I/O控制器123可以连接到多个I/O装置103A-103N以控制一个或者多个I/O装置。I/O装置130A-130N的一些实施例可以被配置为提供存储或安装介质116,而其他实施例可以提供用于接收USB存储装置的通用串行总线(USB)接口,诸如Twintech Industry公司出品的USB闪速驱动系列。I/O装置130的其他实施例可以是系统总线150和外部通信总线之间的网桥,外部通信总线例如USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire 800总线、以太网总线、AppleTalk总线、千兆以太网总线、异步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或串行附加小型计算机系统接口总线。
在一些实施例中,计算装置100可以连接到多个显示装置124A-124N,在其他实施例中,计算装置100可以连接到单个显示装置124,在其他实施例中,计算装置100可以连接到相同显示类型或形式的显示装置124A-124N,或者不同显示类型或者形式的显示装置124A-124N。显示装置124A-124N的实施例可以通过以下支持并启用:一个或者多个I/O装置130A-130N,I/O控制器123,I/O装置130A-130N和I/O控制器123的组合,可以支持显示装置124A-124N的硬件和软件的任一组合,任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以联系、通信、连接或以其他方式使用显示装置124a-124n。在一些实施例中,计算装置100可以被配置为使用一个或者多个显示装置124A-124N,这些配置包括:具有多个连接器以联接多个显示装置124a-124n;具有多个视频适配器,每个视频适配器连接到一个或多个显示装置124A-124N;具有被配置用于支持多个显示器124A-124N的操作系统;使用包括在计算装置100中的电路和软件来连接到并且使用多个显示装置124A-124N;并且在主计算装置100和多个次级计算装置上执行软件以使主计算装置100使用次级计算装置的显示器作为用于主计算装置100的显示装置124A-124N。计算装置100的其他实施例可以包括多个次级计算装置提供并且经由网络连接到主计算装置100的多个显示装置124A-124N。
在计算机器100的一些实施例中,可以包括操作系统来控制任务的调度和对系统资源的访问。计算装置100的实施例能够运行以下任一操作系统:例如WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS XP和WINDOWS VISTA的微软Windows操作系统的版本、不同版本的Unix和Linux操作系统、苹果计算机出品的任意版本的MACOS、国际商业机器公司出品的OS/2、任意的嵌入式操作系统、任意的实时操作系统、任意的开源操作系统、任意的专用操作系统、用于移动计算装置的任意操作系统、或者能够运行在计算装置上并执行此处所描述的操作的任意其它操作系统。计算机器100的一个实施例在其上安装多个操作系统。
计算装置100可以用以下计算装置的任一个来实现:计算工作站、台式计算机、膝上型或笔记本计算机、服务器、便携式计算机、移动电话、便携电信装置、媒体播放装置、游戏系统、移动计算装置、苹果计算机公司出品的IPOD系列装置中的一个、Sony公司出品的PLAYSTATION系列装置中的任一个、Nintendo公司出品的NINTENDO系列装置中的任一个,或者微软公司出品的XBOX系列装置中的任一个,或者能够通信并具有执行此处所描述的方法和系统的足够的处理器能力和存储容量的其它类型和/或形式的计算、电信或媒体装置。在其它实施例中,计算装置100可以如以下移动装置中任一种的移动装置:支持JAVA的蜂窝电话或者个人数字助理(PDA),诸如Motorola公司出品的i55sr、i58sr、i85s、i88s、i90c、i95cl或者im1100,Kyocera出品的6035或者7135,或者Samsung电子公司出品的i300或者i330,由Palm公司出品的TRE0180、270、600、650、680、700p、700w或者750智能电话,具有与之一致的不同的处理器、操作系统和输入装置的计算装置,或者可以执行此处描述的方法和系统的任意其它移动计算装置。计算环境101的其他实施例包括可以是以下任一个的移动计算装置100:Research In Motion Limited出品的黑莓或者其它手持装置任一系列,苹果计算机出品的iPhone,任一手持或者智能电话,Pocket PC,PocketPC Phone,或者支持Microsoft Windows Mobile Software(微软视窗移动软件)的任一其它手持移动装置。
参考图2,示出并且描述用于在远程计算机器202处显示图形和其他应用输出的系统的一个实施例。如图所示,该系统包括和一个或者多个本地计算机器204通信的远程计算机器202。远程计算机器202和本地计算机器204可以是计算机器102的实施例。在一些实施例中,可以将远程计算机器202称为客户装置并且将本地计算机器204称为服务器。系统还包括和一个或者多个计算装置相连接的一个或者多个GPU 216、216’或者GPU设备。本地计算装置204经由设备206和远程计算机器202相通信。设备206可以是代理、网关、中间设备或者任一网络节点。在一些实施例中,设备206可以是GPU设备或者可以包括GPU设备。
响应于在本地计算机器204上执行一个或者多个应用208,本地计算机器204提供应用输出给远程计算机器202。本地计算机器204还可以提供用于在远程计算机器202渲染的桌面数据。应用/桌面数据可以包括用于在远程计算机器202处理和/或渲染的图像数据和/或窗口数据。在这样的实施例中,应用/桌面递送系统210将应用/桌面数据发送给远程计算机器202。响应于远程计算机器202的渲染过程,应用/桌面数据经由远程应用呈现窗212显示在远程计算机器202上。在一些实施例中,本地计算机器204不执行应用208,而是将应用208流式传输到远程计算机器202进行本地执行。
远程计算机器202和本地计算装置204的每一个可以包括主处理器121、121’,图形处理单元(GPU)216、216’,存储器元件122、122’,和三维图形库220、220’。主处理器121、121’可以是上述结合图1B和1C描述的CPU或者主处理器101的任一实施例。在一些实施例中,GPU可以是专用于处理图形命令的硬件部件,而在其他实施例中,GPU可以是能够处理图形命令的可执行命令集或者可执行程序。存储器元件122可以是上述结合图1B和1C描述的主存储器122的任一实施例。三维图形库220、220’可以是和Direct3D、OPEN GL或者其他三维图形应用程序接口(API)相关联的库。尽管这些元件的每一个可以在远程计算机器202和本地计算机器204之间提供相同或者大体相同的功能性,但是还可以提供冗余和灵活性来允许渲染位于远程计算机器202和本地计算机器204之间的位置。
远程计算机器202包括提供用于确定在何处渲染图形数据的特定功能性的客户机代理214。本地计算机器204还可以包括用于为本地计算机器204、设备206以及网络提供大体相同的功能性的服务器代理(未示出)。在其他实施例中,驻留在系统中某处的单个“图形确定代理”提供以下描述的功能性。确定在何处渲染图形信息所考虑的因素,包括但不限于:所使用的图形图元的类型(例如OPEN GL、DirectX、Direct 3D、3DNOW、GDI、MILCORE以及其它);远程计算机器202、本地计算机器204、设备206和GPU设备的GPU性能;网络的类型、状态和递送速度;所执行的应用类型(例如,CATIA、AUTOCAD、WINDOWS MEDIA PLAYER(媒体播放器));和所使用的远程访问会话的类型(例如,终端服务、Citrix呈现服务器、Citrix桌面服务器、应用流等等)。
在多个实施例中,渲染位置的选择可以随时间而改变,也就是说渲染位置的选择本质上是动态的。该选择和该选择的确定可以基于实时、逐个会话、逐个用户或者根据任一其它机制做出。例如,系统配置的初始扫描可以确定使用远程计算机器202的GPU216’来渲染图形。之后,条件可以改变并且因此,在本地计算机器204和/或GPU设备250渲染图形可以提供更好的终端用户体验。然而,会话部分可以使用不同方法进行渲染。例如,桌面或者应用图像数据的部分可以使用本地计算机器204的渲染过程来渲染,而其他部分可以使用“客户机侧”渲染来渲染。此外,渲染位置的选择可以根据特定图形操作来产生(例如,矢量绘制、纹理映射以及类似其它)。渲染位置可以基于图形操作的类型而改变。对于不同的操作,可以同时使用不同的渲染选项。例如,自转球体可以在远程计算机器202上渲染,而背景静态图形可以在本地计算机器204上渲染。同样,可以基于图形操作的模式(例如,如果顺序绘制很多小的阴影对象)而进行选择。
在一些实施例中,哪个本地计算机器运行桌面或者应用的选择可以基于哪种类型的图形渲染最有效来进行。“负载平衡”选择可以基于图形渲染策略评价。例如,如果远程计算机器202不包括具有处理图像数据的能力的GPU216’,而应用却需要它,则选择具有可用的和适合GPU 216的本地计算机器204。
在一个实施例中,可以评价网络带宽等待时间、远程计算机器性能、应用208的应用类型、过往历史和任一其它图形性能策略。如果在本地计算机器204处执行渲染被确定为是最有效或者最适合的,则选择能够执行这样的渲染的本地计算机器204。其它负载平衡策略同样可以影响本地计算机器选择(例如,用户、位置、日期、时间、应用许可、CPU、磁盘使用、存储器等等)。更大强度的图形利用可以发送到相比于其它本地计算机器具有更好性能的GPU或者具有更多GPU的计算机器。在共享服务器和GPU的情况中,可以考虑可用GPU上的负载。
在Windows Vista中,DirectX应用发送图形给Direct3D图形运行时模块,其与用户模式驱动器和图形内核协作用来在可用硬件上渲染DirectX图形命令。当DirectX应用在终端服务中执行时,DirectX应用的执行和增强图形的产生会变差。性能可能变差的一个原因是该应用在终端服务中执行时不能再访问诸如图形处理单元(GPU)的图形渲染硬件。因此,DirectX应用依赖于Direct 3D运行时和内核中执行的软件来将DirectX图形命令渲染成图形数据。因而,不能访问图形渲染硬件会降低DirectX应用的性能。类似的情况还出现在使用OPEN GL或者其它三维API来代替Direct3D的同一或者另一个操作系统中。
图3所示是减轻如上所述和在终端服务中执行DirectX应用相关的可能问题的系统的实施例。该系统包括客户端侧或者终端侧421部件和服务器侧420部件。该系统中包括和三维运行时模块404’通信的三维渲染应用414。包括和三维图形运行时模块404通信的三维代理406。
进一步参考图3并且更详细地,在一些实施例中,描述允许在终端服务中执行的诸如DirectX应用的图形应用使用服务器上的图形硬件,而不是在三维图形运行时模块404中执行的软件。这样的系统主要用于使用Di rectX和窗口呈现基础应用。在一些这样的实施例中,三维渲染应用414可以是Direct3D渲染应用,三维运行时模块404、404’可以是Direct3D运行时模块,并且三维代理406可以是Direct3D代理。系统任一部件可以是和Direct3D、OPEN GL或者其他三维图形API相关联的部件。
三维渲染应用414将命令传输给三维运行时模块404’。三维渲染应用414通过接收从三维代理406转发的命令来作为会话中应用的代理。操作中,当应用试图驱动三维系统来渲染场景时,三维代理406将其图形命令重新发送到三维图形渲染应用414,其随之将这些命令发送给其三维图形运行时间模块404’,当三维图形运行时模块404’是请求的应用。此外,该三维代理406允许应用如在和会话或者服务器空间中和三维图形运行时模块404通信时通常所进行的操作一样进行操作。
在一个实施例中,三维代理406拦截三维图形调用(例如,Direct3D调用)并且将它们发送到在控制台或者客户机会话中运行的三维渲染应用414。另外,三维代理406开始其自身和三维图形管理器412之间的通信。在一些实施例中,三维图形代理406经由图像传送服务410开始其自身与三维图形管理器412之间的通信。响应于该开始通信,三维图形管理器412建立三维图形渲染应用服务。在一些实施例中,三维图形代理406钩住或者拦截实时运行时调用,但是仅以应该由显示驱动器408处理的图形调用为目标。
在一个实施例中,三维图形管理器412建立三维渲染应用414并且建立三维渲染应用414和请求服务器硬件支持的三维图形代理406之间的通信路径。
总之,以上参考图3描述的体系结构的实施例提供在终端服务会话对服务器420(例如,GPU或者GPU设备)的图形硬件的访问。结果是,将位图化的图形远程传输到远程计算机器或者客户机421的过程可以比用软件渲染位图有所改进。
在另一个实施例中,应用502可以提供诸如WINDOWS VISTA所提供的AERO桌面的“桌面”,并且远程计算机器421正访问本地计算机器或者服务器420上的远程桌面。在一些实施例中,客户机421的GPU用来渲染和桌面相关联的OPEN GL或者Direct3D场景。在一个方面中,从本地计算机器420到远程计算机器421的图形信息传输可以相对于其它解决方案而改进。
参考图4,附图示出概述部件和部件之间的数据流的体系结构的一个实施例。在此体系结构中,显示驱动器和应用之间的分层是薄(thin)的,从而限制开销和开发强度。
在一个实施例中,该体系结构包括应用402。该应用可以是桌面Windows管理器(DWM)模块。在一个实施例中,该应用402是作为窗口管理器的Windows呈现基础(WPF)应用。应用402可以和D3D9Ex接口相交互。应用402用于渲染窗口的非客户机部分和影响窗口的转变效应。在一个实施例中,应用402通过使用Direct3D、OPEN GL,或者其它三维图形API的系统或者应用来提供。在一些实施例中,应用402使用Direct3D来建立桌面。该应用402提供3D几何构形来在显示器上渲染桌面场景。在一些方面中,应用402驱动三维系统(例如,Direct3D系统)来渲染和桌面相关联的场景。在这样的实施例中,应用402不具有特定的功能,而是作为三维几何构形的源。
该体系结构还包括三维图形钩子模块504。在一个实施例中,三维图形钩子模块504提供通过拦截导致后台缓存和前台缓存相切换的当前调用来检测屏幕更新的功能性。一旦钩子检测到当前调用,钩子将该调用传递到一个或者多个三维图形库220、220’。钩子通过显示驱动器506收集该应用的窗口信息和来自图形卡的图像数据。钩子随后将图像数据和窗口信息提供给图像传送服务508。
在一些实施例中,三维图形钩子模块504提供如下的功能性:检测屏幕更新,钩住三维数据以检测屏幕更新,为图像传送服务508提供诸如来自图形卡的图像数据和上下文的信息的数据。同样,该三维图形钩子模块504用有限开销提供可靠的钩子环境。经由三维图形钩子模块504的图形手机过程收集通过当前调用更新的屏幕部分。
如上讨论,该体系结构包括三维图形库220、220’。在一个实施例中,三维图形库220是动态链接库(d11)。三维图形库220、220’提供如下功能性:缓存要从应用502发送到诸如显示驱动器506的硬件显示驱动器的命令和几何数据。在一些实施例中,三维图形库220、220’将三维图形调用封装到缓存器中进行大量传送。显示驱动器506可以是服务器420上现有的硬件驱动器。显示驱动器506如同传统硬件显示驱动器一样操作,并且还允许三维图形钩子模块504收集图形卡以外的图像数据。显示驱动器506还将相关的场景渲染成位图,并且将该图像递送到三维图形钩子模块504中。在一个实施例中,三维图形钩子模块504将请求发送到显示驱动器506。响应于该请求,显示驱动器506将图像数据传输到三维图形钩子模块504。
如上所述,该体系结构还包括图像传送服务模块508。该模块和三维图形钩子模块504相通信。图像传送服务模块508还可以和Winstation驱动器(未示)相通信。图像传送服务模块508包括用于将图像数据递送到客户机421的图像传输虚拟信道的功能性。在多种实施例中,图像传送服务模块508执行一个或者多个压缩方案,例如进取性压缩(aggressivecompression)。如此处所使用的,进取性压缩是指在动画例程期间降低图像质量的压缩过程,从而以图像质量为代价允许更多流量。该过程可以通过减低显示动画时的细节水平来改进帧刷新率。动画的最后帧或者每个动画部分可以被确定并且以更高质量发送。
在一些实施例中,图像传送服务模块508向三维图形钩子模块504请求图像数据,并且可以执行过度压缩、高速缓冲、和实现新的图像虚拟信道的任一组合。进一步,图像传送服务模块508可以接收窗口通知。此外,图像传送服务模块508帮助管理网络业务量,来实现最大帧速率或者符合特定服务水平的帧速率。
该体系结构还包括如上提及的Winstation驱动器模块(未示)。在一些实施例中,Winstation驱动器模块帮助实现复用到单个连接的虚拟信道。这包括对于网络业务量和信道优先排队的优化实现。
图5A中所示是用于远程提供三维图形命令给位于远程的机器的方法600的实施例。首先,由代理拦截三维图形(步骤602),并且由代理编码三维图形命令的至少一部分(步骤604)。随后,建立包括三维图形命令的所有编码部分的帧(步骤606)。压缩该帧(步骤608)并且将压缩的帧传输到远程计算机器(步骤610)。
继续参考图5A并且更详细地,在一些实施例中,通过在如下任一个上执行的代理来运行:第一计算机器;计算机;计算装置;服务器;服务器群组;分布计算系统;网络;或者任一其它计算装置实施例,或者此处描述的网络实施例。在一些这样的实施例中,代理在三维应用所执行的同一计算机器、网络或者设备上执行。而在其它实施例中,该代理是在本地机器上执行的虚拟对象,该代理还可以是函数、命令集、或者在分布计算环境中的计算机器上执行的其他计算对象。
通过在计算机器上执行的应用来产生三维图形命令,在一些实施例中,通过在该应用所执行的同一机器上执行的代理或者其他计算对象拦截这些三维图形命令(步骤602)。在一个实施例中,该代理通过钩入该应用的当前调用来拦截三维图形。通过这样操作,代理可以经由应用编程接口确定应用何时将图形命令发送到三维图形运行时模块。一旦该代理知道应用已经做出对三维图形运行时应用程序接口的调用,则代理随后拦截该调用,并且将其重定向到客户机,使得三维图形可以显示在客户机上。在一个实施例中,代理直接将所有的命令发送给客户机,而在其它实施例中,在服务器上渲染三维图形命令的一部分,并且在客户机上渲染三维图形命令的一部分。在一个实施例中,当命令发送到客户机时,该命令可以是压缩、优化、批处理、编码和从本地计算机器或者服务器通过网络到远程计算机器或者客户计算机器传输的任一组合。在这样的实施例中,传输到客户计算机器或者远程计算机器的内容是包含以下任一组合的帧:三维绘制命令;渲染状态;用来渲染或者绘制表示三维图像投影在二维平面或者绘制表面上的一部分的二维图形表示或者二维表面渲染目标所需的资源。因此,在这些实施例中,服务器或者本地计算机器将帧传输到客户计算机器或者远程计算机器,其随后将该命令映射到三维图形运行时模块,三维图形运行时模块接收该帧并且渲染根据所接收帧的三维数据。
在一个实施例中,通过代理或者与该代理通信的另一个系统对象、函数或者代理来编码三维图形命令的一部分(步骤604)。在一个实施例中,可以存在通过三维图形命令表示的多个三维结构。例如,三维图形命令可以包括如下任一个:顶点缓存器、索引缓存器、纹理和表面。顶点缓存器是包含关于和所得三维图像的特定方面相关联的顶点的信息的缓存器。在一些实施例中,顶点缓存器可以包括针对每一顶点的结构,包括以下信息:三维坐标;深度坐标;纹理映射坐标;颜色;和能够保存在顶点缓存器中的顶点的任一其它特征。索引缓存器是包括顶点缓存器中的索引另一类型的缓存器。纹理和表面表示摄影或者合成的二维光栅数据。
在一些实施例中,编码的部分三维图形命令是对应于特定结构的部分。例如,一部分可以包括所有顶点,另一部分可以包括所有索引,并且还有一部分可以包括所有纹理和表面。该例子用于表示可以建立的不同部分段,在其他实施例中,这些段可以被编号或者可以包括多个结构,诸如含有顶点和索引二者的部分。一旦识别出三维图形命令的部分,该部分则使用下列类型的编码译码器来编码:霍夫曼编码,adler-16,adler-32,CRC-16,CRC-32,Fletcher-16,Fletch-32,图像有损编码译码器,合成有损编码译码器,JPEG,HD Photo,2DRLE,PNG,HD Photo,和适合编码结构的任意其它编码。在一个实施例中,使用霍夫曼编码来对顶点和索引进行编码,而使用JPEG,HD Photo,2DRLE,PNG或者HD Photo中的一个编码纹理和表面。
在一个实施例中,一旦三维图形命令的该部分被编码,则建立包含三维图形命令的每个编码部分的帧(步骤606)。在一些实施例中,这些编码部分可以是使用此处描述的任一编码解码器编码的任一此处描述的结构。例如,三维图形命令可以包括顶点缓存器、索引缓存器和纹理的每一个。在一个实施例中,帧可以包括使用霍夫曼编码来编码的顶点、使用霍夫曼编码来编码的索引和使用合成有损编码译码器来编码的纹理。在一些实施例中,该帧包括三维绘制命令的元件;渲染状态;和用来渲染或者绘制表示三维图像投影在二维平面或者绘制表面的部分的二维图形表示或者二维表面渲染目标所需的资源。
在一些实施例中,一旦该帧建立,代理可以在传输之前压缩该帧(步骤608)。在一些实施例中,压缩器可以压缩该帧,而在其它实施例中,该帧可以在经过压缩算法之后进行压缩。其他实施例包括将传输没有压缩的帧,或者传输其中数据部分压缩、部分没压缩的帧。
本地计算机器或者服务器将压缩的帧传输到远程计算机器或者客户机(步骤610),使得渲染代理、应用或者单元可以渲染根据帧中包含的图形数据的三维数据。在一些实施例中,在渲染之前将该帧解压缩。
图5B示出用于编码如图5A中描述的方法600的步骤604中指示的图形命令部分的方法650的实施例。一旦方法600进入步骤604,就通过确定三维图形命令的何处包括顶点命令开始方法650(步骤652)。如果三维数据包括含有顶点命令的三维图形命令,则使用编码译码器来编码对应于顶点命令的三维数据的部分(步骤654)。随后,确定三维图形命令是否包含索引命令(步骤656)。如果三维数据包括含有索引命令的三维图形命令,则使用编码译码器来编码对应于索引命令的三维数据的该部分(步骤658)。随后确定三维图形命令是否包括纹理或者表面(步骤660)。如果三维数据包括含有纹理或者表面的三维图形命令,则使用编码译码器来编码对应于纹理或者表面的三维数据部分(步骤662)。
进一步参考图5B,并且更详细地,方法650是图5A中描述的方法600的子过程、子函数或者子方法。在一个实施例中,方法650解析三维图形命令来确定不同类型的命令是否包括在三维图形命令集中。将方法600重定向到图5B中描述的方法650,并且当图5B中的方法650已经完成执行时,该方法600从停止的地方继续。或者,图5B中描述的方法650可以是图5A中描述的步骤604的一部分。
图6A中示出用于确定在何处渲染三维图形数据的方法。代理或者系统对象拦截应用使用三维图形所产生的三维图形命令(步骤702)。在渲染或者传输所拦截的命令之前,分析远程系统的特征(步骤704)来确定渲染位置(步骤706)。确定渲染位置706之后,代理或者系统对象致使该应用重新初始化用于确定在何处渲染三维数据的上下文(步骤708)。一旦该应用已经将确定的渲染位置作为用于渲染的位置,则代理或者系统对象将三维图形命令传送到用于渲染的渲染位置(步骤710)。
进一步参考图6A并且更详细地,用于确定何处渲染三维数据的方法700可以由在服务器或者本地计算机器上执行的代理来运行。或者,可以通过在服务器或者本地计算机器上执行的将从应用输出的三维图形命令作为输入的命令集或者程序执行方法。其他实施例包括可以分析系统资源并且确定何处渲染三维数据的渲染管理器、渲染代理或者一些其他虚拟对象。
在一个实施例中,三维图形命令通过远程代理或者拦截三维图形命令的实体的任一其它实施例来来拦截(步骤702)。在一些实施例中,通过钩入桌面窗口管理器进行的调用,实现对图形命令的拦截。
在拦截三维图形命令之后,分析远程系统的特征(步骤704)。该远程系统可包括任一如下元件:诸如此处描述的一个或者多个客户机计算装置,诸如此处描述的一个或者多个服务器,服务器群组,诸如此处描述的一个或者多个设备,和这些部件的每一个用来通信和传输数据的网络。在一个实施例中,远程系统中所使用的网络可以是此处描述的任一网络。其他实施例包括执行应用的至少一个服务器,和访问服务器来接收表示应用输出的图形数据的至少一个客户机计算机器。在这样的实施例中,通过远程访问协议来促进客户机和服务器之间的通信。在一些实施例中,该系统的特征包括:服务器上包括的图形处理单元的类型和/或速度;在客户计算装置上包括的图形处理单元的类型和/或速度;服务器包括的中央处理单元的类型和/或速度;客户计算装置包括的中央处理单元的类型和/或速度;服务器上执行的应用;服务器上的负载;客户计算装置上的负载;网络上的负载;传输三维图形命令的可用带宽的数量;部分表示何处渲染三维数据的预定设置;渲染三维数据的服务器上的应用的数量;服务器或者客户机计算装置上缺乏图形处理单元;和可以用来确定渲染位置的任一其它特征。在一个实施例中,集合多个特征为每个渲染位置产生单个数值,这样,通过比较数值来查看哪个数值相比于其他数值是最高的,或者哪个数值相比于其它数值是最低的来选择渲染位置。其他实施例包括根据它们对系统造成的负担(tax)来衡量多个特征,并且基于耗费最少资源的远程位置来选择何处渲染。
在一些实施例中,在分析远程系统的特征期间所产生的结果用来确定渲染位置(步骤706)。在一个实施例中,远程位置可以位于服务器上或者客户机计算机器上。如果渲染位置是服务器,则服务器渲染根据三维图形命令的三维数据,并且将渲染的图形数据传输到客户机计算机器。如果渲染位置位于客户机上,则服务器将三维图形命令传输到客户机,使得客户机接收命令并且渲染根据该命令的三维数据。其他实施例包括的远程位置可以是服务器或者客户机上作为硬件部件的图形处理单元,或者是服务器或者客户机上作为软件部件的图形处理单元。如果远程系统的特征分析结果表明在软件图形处理单元上渲染数据是最好的,则远程位置可以是具有基于软件的图形处理单元的位置。
在一个实施例中,该代理通过将移除的装置状态报告给应用来使该应用重新初始化用来确定在何处渲染三维数据的上下文(步骤708)。在其他实施例中,代理可以向应用报告装置状态丢失。在一些实施例中,当通知应用装置移除时,该应用可以重新确定何处渲染数据。在一个实施例中,该代理可以通过告诉应用应该在特定位置渲染三维数据来使用该上下文的重新确定或者重新初始化,以确定何处渲染三维数据。一些实施例包括告诉应用应该在确定的渲染位置渲染三维数据。
一旦该应用被重新配置以渲染到渲染位置,则将三维图形发送到用于渲染的渲染位置。
图6B是用于在特定位置渲染三维图形命令的方法730。在一个实施例中,方法730包括确定在第一渲染位置渲染三维图形命令的一部分(步骤732),分析远程系统的特征(步骤734)并且确定第一渲染位置和重新初始化应用上下文来选择确定的第一渲染位置(步骤736)。随后,根据三维图形命令的第一部分,在渲染位置渲染第一三维数据集(步骤738)。随后,重新评价远程系统的特征(步骤740),确定第二渲染位置并且重新初始化应用上下文来将第二渲染位置识别为将要渲染数据的位置(步骤742)。一旦确定第二渲染位置,则将三维图形命令和渲染的第一三维数据集传输到第二渲染位置(步骤744)。
进一步参考图6B并且更详细地,在一个实施例中,方法730包括确定渲染三维图形命令的一部分(步骤732)。在一些实施例中,基于以下任一因素来确定该部分:图形元素的类型(即顶点、索引、纹理);图形数据的大小;事务;用于将三维图形命令分段的任一其他装置。在一个实施例中,每个事务建立一部分新的三维图形命令,因而,每当事务发生时必须做出何处渲染图形命令的确定。
在一个实施例中,渲染三维图形命令的一部分,并且所得的渲染后的图形数据保持在服务器上。在这样的实施例中,识别三维图形命令的第二部分并且做出关于在何处渲染三维图形命令的新的决定。在一个实施例中,该方法包括确定在第一渲染位置渲染三维图形的一部分(步骤732)。一些实施例可以包括遵守策略引擎,该策略引擎可以指示特定类型的图形、图形图元或者三维图像类型应该总是在特定位置渲染,而无论该特定位置在本地计算机器、远程计算机器、网络或者第三计算机器上。在其他实施例中,渲染代理可以根据大小或者其他原因来确定特定类型的图形、图形图元,或者单位图形类型应该在特定位置渲染。例如,由于特定的三维图形只可以通过本地计算机器上包括的图形处理单元来渲染,所以渲染代理可以指定在本地计算机器上渲染特定的三维图形。在这样的例子中,在本地计算机器上渲染图形,并且将渲染的图形或者位图发送到客户机器或者任一其它远程计算机器。如果三维图形包括在具有远程计算机器可以渲染的图形命令的图形方案中,渲染代理可以确定将图形包传输到远程计算机器,远程计算机包括已经通过服务器和图形命令渲染的三维图形。该远程计算机器可以随后在远程计算机器处渲染图形命令。
图7的流程图示出用于计算和高速缓冲三维数据集的哈希值的方法的实施例。计算和高速缓冲哈希值可以包括确定三维资源是否已经通过应用锁定(步骤762)。识别载入到三维资源中的第一三维数据集(步骤764)。方法760还可以包括检测该应用是否对三维资源执行了操作(步骤766)。计算载入的三维数据的哈希值(步骤768),并且将该哈希值保存在数据仓库中(步骤770)。随后,确定是否存在另外的数据集(步骤772),从而使得方法760重复或者终止。
进一步参考图7并且更详细地,方法760可以包括确定应用是否已经锁定三维资源(步骤762)。在一些实施例中,三维资源可以包括顶点、索引、阴影、纹理、表面或者任一其它类似的三维数据类型。应用在修改源中的数据或者将数据载入源时将三维资源锁定,用于阻止进程读出正在改变的资源。在一些实施例中,通过检查标志位、计数器、同步监控器、数据队列、或者允许进程确定资源已经锁定用于写入的任一其它方法,确定该应用已经锁定三维资源。在进一步实施例中,应用锁定的三维资源可以由该应用所使用,而在其它实施例中,应用可以锁定另一应用所使用的三维资源。在一些实施例中,三维资源可以是以下类型资源的任一个:用于图形处理单元的驱动器;或者结合图形处理单元或者图形处理算法、指令集或者软件使用的任一其它资源。
方法760还可以包括识别载入到三维资源中的三维数据集的步骤(步骤764)。该三维数据集可以是第一三维数据集或者第二三维数据集、第三三维数据集,或者依赖于载入到三维资源中的数据集数量的任一其它数据集。在一些实施例中,三维数据集可以具有可变大小,而在其它实施例中,三维数据集的任一个或者全部具有大体相同的大小。在一些实施例中,每个数据集的大小可以至少部分通过应用所执行的事务来确定。在一些实施例中,事务可以包括将数据复制到三维资源中。在进一步的实施例中,事务可以具有将三维资源解锁的结束事件,该结束事件因此可以间接确定数据集的大小。在其他实施例中,事务可以具有开始事件和结束事件,并且数据集大小可以通过开始事件和结束事件之间的时间大小来确定。在这样的实施例中,开始事件可以包括锁定三维资源,和/或结束事件可以包括将三维资源解锁。
在一个实施例中,方法760包括检测该应用对三维资源执行了操作(步骤766)。这可以包括通过检查或者识别标志位、计数器、同步监控器、或队列、或者允许进程确定资源已经被锁定或者解锁用于写入的任一其它方法,来检测应用已经锁定或者解锁三维资源。在一些实施例中,仅通过观察三维资源在锁定一段时间之后得到解锁,可以检测对三维资源执行了操作。在其他实施例中,可以监控该应用来确定已经执行什么操作。
在一个实施例中,方法760包括计算载入的三维数据的哈希值(步骤768)。所执行的哈希函数可以是和所使用的数据类型具有足够少冲突的任一哈希函数或者校验和算法,诸如adler-16,adler-32,CRC-16,CRC-32,Fletcher-16,Fletch-32,或者任一其它CRC或者非CRC哈希函数,或者对于哈希函数所应用的数据类型产生很少或者基本没有冲突的哈希函数,或者可以产生适用于此处描述系统和方法的结果的任一其它哈希函数。
在一个实施例中,方法760包括将该哈希值保存在数据仓库中的步骤(步骤770)。在一些实施例中,数据仓库可以是缓存器、高速缓冲存储器、数据存储器、平面文件、或者任一其它格式,并且可以用RAM、闪速存储器、硬盘或者任意其它存储介质实现。在一些实施例中,数据仓库可以保存在本地计算装置上,而在其它实施例中,数据仓库可以驻留在通过网络可访问的第二计算装置上。在进一步的实施例中,数据仓库可以使用老化(aging)算法来清除。老化算法可以是任一页面替换算法,诸如最近最少使用(LRU),最近未使用(NRU),活动替换高速缓冲(ARC),先进先出(FIFO),最小频率利用(LFU)、或者允许数据仓库有效清除(evict)项目的任一类似算法。
在一个实施例中,方法760包括确定三维资源中是否存在另外的数据集(步骤772)。如果进行这样的确定,则方法760还包括识别载入三维资源中的其他的三维数据集,检测应用对三维资源执行的其他操作,计算其它三维数据集的哈希值,并且将其它三维数据集的哈希值保存在数据仓库中。
在一个实施例中,方法760还可以包括响应于检测应用执行了操作而消除第一三维数据集的一部分。该三维数据集的该部分可以是重复事务的结果。在其他实施例中,计算机器仅保持和保存所计算的哈希值,并且通过确定丢弃哪个数据以为未命中(miss)的新数据腾出空间并且维持总的最大尺寸,来驱动远程计算机器高速缓冲存储器。可基于诸如最小频率利用算法的老化算法,确定丢弃哪个数据部分。这样的算法增加命中计数器,并且当需要用于未命中的空间时,则清除产生对带宽最小影响的具有最小计数和大小的项。其他实施例可以包括对于客户机、计算机器或者远程计算机器的永久存储磁盘的高频资源进行永久高速缓冲的高速缓存系统。从而,在这样的实施例中,应用开始或者新场景过程中初始设置时载入的纹理和表面载入得更快,使得应用比不具有高频资源的永久高速缓冲的情况更快速地重新开始。此外,由于在应用终止时可以通过客户机、计算机器或者远程计算机器高速缓冲或者保存动态数据的哈希值,所以高频动态数据的使用更为有效。
在其他实施例中,应用可以传送、移动、复制、载入或者以其他方式使得数据置于三维资源中。其他实施例包括将数据传送到中间应用的应用,该中间应用配置为载入、复制或者将数据传送到三维资源中。在这样的实施例中,中间应用可以存在于和应用相同的计算装置上、远离执行应用的计算装置的计算装置上,或者和执行应用的计算装置相通信的任一其它虚拟或者物理计算装置或者应用。
在一个实施例中,仅当应用或者代理检测到任何应用正在使用三维资源时才重复方法760,或者,在其他实施例中,在特定应用使用三维资源时才重复方法760。其他实施例包括仅当应用或者代理检测到三维资源已经将数据复制或者载入到其中,并且该三维资源已经或者正由应用所使用时,才重复方法350。在又一个实施例中,仅当确定将不同于之前高速缓存的数据载入或者复制到三维资源中时,才重复方法760。其他实施例包括仅当检测到特定的动作序列时,例如锁定三维资源、将数据载入或者复制到三维资源中,以及使用三维资源,才重复步骤760。更多的实施例包括周期性重复方法760。
图8A和8B中示出用于检测帧中绘制区域的方法的屏幕截图的实施例。帧790可以包括图8A中的第一呈现位图中的第一三维图792。在图8B中的第二呈现位图中,帧790包括第一三维图792和第二三维图794。该第二三维图794位于作为帧790的子集的区域796中。
现在参考图8A并且更详细地,帧790还可以称为场景、默认视图区、画布、图像、位图、屏幕、表面或者用于所显示三维图形的任意其它描述性词语。第一三维图792可以在帧790中。第一三维图792可以包括顶点、索引、阴影、纹理、表面、或者任一其它类似三维数据类型。在一些实施例中,第一三维图792不存在,并且帧790可以是空的。在其他实施例中,第一三维图792可以带有其他没有示出的三维图。
参考图8B并且更详细地,在一个实施例中,第二三维图794增加到帧790中。在一些实施例中,可以同时增加没有示出的多个三维图。在其他实施例中,第二三维图794可以已经出现在之前呈现的帧790中,并且可以被移除。在其他实施例中,可以移除、增加或者修改包括第二三维图794、第一三维图792和没有示出的其它三维图的多个图。
在一个实施例中,第二三维图794包含在帧790的子区域796中。在所示例子中,区域796之外的帧790的部分不从图8A中之前呈现的位图改变为图8B中新近呈现的位图。区域796可以称为绘制区域、视图区、画布或者画布部分,屏幕区域、帧区域、视图剪切区域、视图剪切矩形或者任一描述帧790的子部分的其它术语。在一些实施例中,可将多个三维图增加到新近呈现的位图,并且它们可以组合到多个不连续区域(未示)中。在其他实施例中,可将多个图组合到单个区域中。在一些实施例中,区域796还可以表示帧790的子部分,其中一个或多个三维图已经移除或者修改。在一些实施例中,区域796可以通过函数调用来指定,诸如微软公司开发的DIRECT3D API的SetViewPort方法,或者Silicon图形有限公司开发的开放图形库(OPENGL)的glViewport方法,或者可以限定渲染目标的帧790的区域或者子区域的任何类似方法或函数调用。
图9中示出一种用于检测帧中的污渍区域的方法800。检测污渍区域可以包括拦截三维应用所产生的函数调用(步骤802)。所拦截的函数调用至少可部分用来识别帧中的绘制区域(步骤804)。可以确定与所识别的绘制区域相关的图形命令的至少一部分发生改变(步骤806)。随后提取所识别绘制区域中图形命令的所改变的部分(步骤808)。
进一步参考图9并且更详细地,方法800可以包括拦截三维应用所产生的函数调用(步骤802)。拦截函数调用还可以称为钩住、监控、侦听、捕获或者描述接收第一和第二过程之间通信副本的第三过程的任一其它术语。在一些实施例中,经由本地机器上执行的代理执行拦截。在其他实施例中,通过子例程、函数、后台程序、服务、或者有能力拦截三维应用和三维渲染引擎之间通信的应用执行该拦截,三维渲染引擎可以包括用于处理三维图形命令的硬件或者软件。在一些实施例中,所拦截的函数调用可以是使得后台缓存的内容呈现在显示装置的函数调用。在这些实施例中,函数调用可以指示绘制或者渲染已经完成并且在呈现之前不对内容进行更多改变。在一些实施例中,拦截函数调用还可以包括拦截表示特定绘制区域的调用,诸如上述DIRECT3D API的SetViewPort方法。在这样的实施例中,函数调用可以具有数据串、变量或者指示渲染目标的矩形或者其他区域的其他标识符。区域的标识可以指示三维图形和图形图元的修改即将在区域内产生,此处称为污渍区域。
在一个实施例中,所拦截的函数调用来识别标识的绘制区域(步骤804)。在一些实施例中,通过用于拦截函数调用的同一代理、函数或者服务来执行该识别,并且可以通过解析或者分析对帧中区域标识的所拦截的函数调用来执行该识别。在一些实施例中,函数调用可以包括指示区域角落的值以及指示区域宽度和高度的其它值。可以提取这些值来确定区域的位置和大小。在其他实施例中,函数调用可以包括用来确定区域的位置、大小和形状的值。在其他实施例中,函数调用可以不包括指示区域的值,但可以包括指示区域的其他函数调用。在一些实施例中,还可以确定指示的区域是否处于即将呈现给显示装置的后台缓存中。在这样的实施例中并且响应于该确定,如果该区域不包括在后台缓存中,则将其从所识别的污渍区域排除。例如,通过函数调用指定的区域可以用作纹理和表面的渲染目标,纹理和表面用来渲染后台缓存,但其本身不是后台缓存的部分。在这样的情况中,可以从识别的污渍区域排除该区域,使得识别的污渍区域仅直接应用到后台缓存,而不是间接应用。
在一个实施例中,确定从之前拦截的函数调用起在与污渍区域相关的图形命令的至少一部分中发生了改变(步骤806)。在一些实施例中,通过解析或者分析三维图形命令的所识别的污渍区域的内容做出该确定。在其他实施例中,可以仅响应于在函数调用中识别了区域来做出该确定,函数调用如上述SetViewPort方法,或者用于指定绘制或者渲染改变的帧区域的任一类似函数调用。
在一个实施例中,提取污渍区域中所改变的三维图形命令(步骤808)。在一些实施例中,这可以是整个帧中的图形命令的子集,其中一些在之前拦截的函数调用后没有发生改变。在其他实施例中,整个帧可以改变,而在其它实施例中,帧中未发生改变。
图10中示出用于延迟后台缓存表面呈现以在一些情况下改进资源利用的方法900的一个实施例。在方法900中,代理拦截对绘制库的第一调用(步骤902)。然后,将第一帧传输到远程计算机器(步骤904)并且确定远程计算机器是否已渲染第一帧(步骤906)。然后,延迟响应于第一调用传输返回信息(步骤908),直到接收到第一帧已被传输或者渲染的通知(步骤910)。接收到该通知时,授权允许将第一调用返回给请求的应用(步骤912)。
进一步参考图10并且更详细地,在一个实施例中,方法900的所有步骤可以通过计算机器上执行的代理来执行。其他实施例包括在以下任一上执行的代理:本地计算机器、远程计算机器、第三计算机器、分布计算系统中、网络上、设备上,或者可以执行代理的任一机器。其他实施例包括在分布计算环境或者系统中执行方法900,其中分布计算环境可以包括客户机计算装置、服务器、设备、三维应用或者网络的任一组合。在一个实施例中,方法900可以在包括本地计算装置的分布计算环境中执行,该本地计算装置执行代理和应用,其中本地计算装置和在分布计算环境中的远程计算装置相通信并且连接。其他实施例包括可以执行代理的任意计算机器上的绘制库,其中绘制库可以是任一上述三维图形库,诸如DirectX或者OPEN GL库。
在一个实施例中,在本地计算机器执行上的代理拦截对绘制库的第一调用,以进一步请求来自绘制库的信息(步骤902)。在一些实施例中,第一调用是通过计算机器上执行的调用产生的,或者,在其他实施例中,第一调用是由本地计算机器或服务器上执行的应用产生的。一些实施例包括的第一调用是请求将当前显示的图像和要从第一帧渲染的图像相交换的第一当前调用。在此实施例中,钩子可以安装在绘制库中用来阻止调用返回到请求的调用。这样做用来控制在本地计算机器上渲染多少帧以及何时渲染这两个问题中的人一个。在此实施例中,当应用请求来自绘制库的图形数据或者信息或者图形图元时,绘制库可以返回渲染的图像。因此,返回调用是可以包括渲染图像的绘制库所产生的返回消息。
其他实施例包括代理将第一帧传输到远程计算机器(步骤904)的方法900。有这样的实施例,其中代理传输多个帧而不是一个帧。在一个实施例中,拦截第一调用的代理基本上和传输第一帧到远程计算机器或者装置的代理相同,而在其它实施例中,拦截第一调用的代理和传输第一帧的代理基本不同。在一些实施例中,第一帧可以包括三维图形命令、渲染的图形、渲染的三维图像、图形图元、和图形库的任一组合。
在一个实施例中,代理确定远程计算机器尚未渲染第一帧(步骤906)。在一个实施例中,通过识别远程计算机器是否将指示在远程计算机器渲染第一帧的确认传输给本地计算机器,确定远程计算机器是否已经渲染所传输的第一帧。其他实施例包括通过侦听网络堆栈并且从网络堆栈监听到网络不繁忙,来确定远程计算机器是否已渲染所传输的第一帧。其他实施例包括,在网络上发送测试包来确定网络是否繁忙,没有接收到确认测试包并确定网络繁忙,从而远程计算装置还没有完全接收到第一帧。在一些实施例中,通过分析本地计算机器和远程计算机器之间的网络上的负载来确定负载是否超过或者低于预定阈值来做出该确定。当负载超过预定阈值时,确定网络繁忙;当负载低于预定阈值时,确定网络不繁忙,从而第一帧可能已传输到远程计算机器并且可能已渲染。
在一个实施例中,通过代理延迟返回到请求的应用的调用(步骤908)。其他实施例包括,当确定代理、本地计算机器或者应用中的任一个没有接收到指示第一帧已被渲染的通知时,阻止将第一调用返回给请求的应用。在一些实施例中,代理可通过阻止绘制库或者绘制库中的可执行模块将第一调用和渲染的图像返回给请求的应用延迟绘图的呈现。在一些实施例中,当通过绘制库渲染图像时,这样的绘制可以发生在保存离屏图形的后台缓存中。在代理延迟或者阻止将第一调用返回给请求的应用的实施例中,代理还可以延迟或者阻止将后台缓存的内容显示或者传输到请求的应用。其他实施例包括在预定时间段内阻止返回第一调用和相应的图像,其中这样的时间段可以是通过经验确定,随机确定,动态确定,或者可以通过用户或者应用硬编码到代理中。在另一个实施例中,在接收到指示第一调用被渲染的通知并且在预定时间之后,可以出现第一调用返回。
一些实施例包括接收到第一帧在远程计算机器上渲染的通知(步骤910),并且作为响应允许将第一调用返回给请求的应用(步骤912)的代理。在一个实施例中,通过远程计算机器产生该调用,而在其它实施例中,通过网络、本地计算机器上执行的应用、或者远程计算机器上执行的应用的任一个来产生该通知。
在一个实施例中,方法900包括是远程机制或者和用于将图形传输到远程计算机器的远程机制相连接的代理。在一些实施例中,方法900可以通过在确定之前的帧成功传送到远程计算装置或者在远程计算装置渲染之后进行渲染,来延迟渲染帧或者图形数据。在另一个实施例中,代理允许将第一调用返回请求的应用之后,代理传输应用所产生的第二帧。在此实施例中,代理接收到指示第二帧被渲染的通知,并且拦截请求来自绘制库的信息的应用所产生的第二调用。代理随后识别第二帧被渲染的指示器,并且代理允许第二调用返回给请求的应用。在一个实施例中,代理确定已经接收到指示之前的帧已经在远程计算机器上接收或者显示的标志位时,代理可以确定不阻止应用所发出的当前调用。因此,在此实施例中,当前调用不被阻止并且可以返回给请求的应用。
本发明可以作为一个或多个计算机可读程序提供,这些计算机可读程序实现在一个或者多个制品中。制品可为软盘、硬盘、紧致磁盘、数字化视频光盘、闪烁存储卡、PROM、RAM、ROM、具有通过处理器执行的指令的计算机可读介质,或者磁带。通常,计算机可读程序可以任何编程语言实现。可使用的语言的一些实例包括C、C++、C#、或JAVA。软件程序可以作为对象代码存储在一个或多个物品。
虽然已经描述方法和系统的多个实施例,但是这些实施例是示例性的并且不以任何方式限制所述方法和系统的范围。相关领域中的技术人员在不脱离所描述方法和系统的最宽范围的情况下可以对所描述的方法和系统的形式和细节进行修改。因此,此处描述的方法和系统的范围不应该通过这些示例性实施例来限定,而是应该根据所附权利要求书和其等价范围来限定。

Claims (27)

1.一种用于远程提供三维图形的方法,该方法包括:
由代理拦截在本地计算机器上执行的应用所产生的多个三维图形命令;
由代理使用第一编码译码器来编码多个三维图形命令的第一部分,所述第一部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令;
由代理使用第二编码译码器来编码多个三维图形命令的第二部分,所述第二部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令;
由代理建立包括多个三维图形命令的第一部分和第二部分的帧;
由代理压缩该帧;和
由代理将该帧传输到远程计算机器。
2.权利要求1的方法,其中,编码多个三维图形命令的第二部分还包括编码和该多个三维图形命令的第一部分不同的多个三维图形命令的第二部分。
3.权利要求1的方法,其中,编码多个三维图形命令的第二部分还包括编码和该三维图形命令的第一部分相同的该多个三维图形命令的第二部分。
4.权利要求1的方法,其中,拦截还包括在将三维图形命令传输到三维图形驱动器之前将它们拦截。
5.权利要求4的方法,还包括将该三维图形命令重定向到代理三维图形驱动器。
6.权利要求1的方法,其中,建立帧还包括建立包括图形图元的帧。
7.权利要求6的方法,其中,所述图形图元是DirectX图形图元。
8.权利要求6的方法,其中,所述图形图元是OpenGL图形图元。
9.权利要求6的方法,其中,所述图形图元是Direct3D图形图元。
10.一种用于远程提供三维图形的系统,该系统包括:
执行产生多个三维图形命令的应用的本地计算机器;
经由远程呈现协议和本地计算机器通信的远程计算机器;
本地计算机器上执行的代理,用来:
拦截多个三维图形命令,
使用第一编码译码器来编码多个三维图形命令的第一部分,所述第一部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令,
使用第二编码译码器来编码多个三维图形命令的第二部分,所述第二部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令,
建立包括多个三维图形命令的第一部分和第二部分的帧,
压缩该帧,和
将该帧传输到远程计算机器。
11.权利要求10的系统,其中,多个三维图形命令的第二部分和该多个三维图形命令的第一部分不同。
12.权利要求10的系统,其中,多个三维图形命令的第二部分和该三维图形命令的第一部分相同。
13.权利要求10的系统,其中,在将三维图形命令传输到三维图形驱动器之前该代理将它们拦截。
14.权利要求13的系统,其中,该代理还将该三维图形命令重定向到代理三维图形驱动器。
15.权利要求10的系统,其中,该代理建立包括图形图元的帧。
16.权利要求15的系统,其中,所述图形图元是DirectX图形图元。
17.权利要求15的系统,其中,所述图形图元是OpenGL图形图元。
18.权利要求15的系统,其中,所述图形图元是Direct3D图形图元。
19.一种用于远程提供三维图形的装置,该装置包括:
用于由代理拦截在本地计算机器上执行的应用所产生的多个三维图形命令的模块;
用于由代理使用第一编码译码器来编码多个三维图形命令的第一部分的模块,所述第一部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令;
用于由代理使用第二编码译码器来编码多个三维图形命令的第二部分的模块,所述第二部分包括顶点三维图形命令、索引三维图形命令、纹理三维图形命令或表面三维图形命令中的一个三维图形命令;
用于由代理建立包括多个三维图形命令的第一部分和第二部分的帧的模块;
用于由代理压缩该帧的模块;和
用于由代理将该帧传输到远程计算机器的模块。
20.权利要求19的装置,其中,用于编码多个三维图形命令的第二部分的模块还包括用于编码和该多个三维图形命令的第一部分不同的多个三维图形命令的第二部分的模块。
21.权利要求19的装置,其中,用于编码多个三维图形命令的第二部分的模块还包括用于编码和该三维图形命令的第一部分相同的该多个三维图形命令的第二部分的模块。
22.权利要求19的装置,其中,用于拦截的模块还包括用于在将三维图形命令传输到三维图形驱动器之前将它们拦截的模块。
23.权利要求22的装置,还包括用于将该三维图形命令重定向到代理三维图形驱动器的模块。
24.权利要求19的装置,其中,用于建立帧的模块还包括用于建立包括图形图元的帧的模块。
25.权利要求24的装置,其中,所述图形图元是DirectX图形图元。
26.权利要求24的装置,其中,所述图形图元是OpenGL图形图元。
27.权利要求24的装置,其中,所述图形图元是Direct3D图形图元。
CN2009801011246A 2008-01-27 2009-01-27 用于远程提供三维图形的方法和系统 Expired - Fee Related CN101918921B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US2386708P 2008-01-27 2008-01-27
US61/023,867 2008-01-27
US61/023867 2008-01-27
US10853808P 2008-10-26 2008-10-26
US61/108,538 2008-10-26
US61/108538 2008-10-26
PCT/US2009/032173 WO2009094673A2 (en) 2008-01-27 2009-01-27 Methods and systems for remoting three dimensional graphics

Publications (2)

Publication Number Publication Date
CN101918921A CN101918921A (zh) 2010-12-15
CN101918921B true CN101918921B (zh) 2013-12-04

Family

ID=40591947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801011246A Expired - Fee Related CN101918921B (zh) 2008-01-27 2009-01-27 用于远程提供三维图形的方法和系统

Country Status (7)

Country Link
US (7) US8169436B2 (zh)
EP (5) EP2315124B1 (zh)
CN (1) CN101918921B (zh)
AU (1) AU2009206251B2 (zh)
CA (1) CA2700225A1 (zh)
IL (1) IL205332A0 (zh)
WO (1) WO2009094673A2 (zh)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US8074248B2 (en) 2005-07-26 2011-12-06 Activevideo Networks, Inc. System and method for providing video content associated with a source image to a television in a communication network
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
EP3145200A1 (en) 2007-01-12 2017-03-22 ActiveVideo Networks, Inc. Mpeg objects and systems and methods for using mpeg objects
US9275247B2 (en) 2007-09-24 2016-03-01 Gregory A. Pearson, Inc. Interactive networking systems with user classes
US20090083115A1 (en) * 2007-09-24 2009-03-26 Pearson Gregory A Interactive networking systems
WO2009094673A2 (en) * 2008-01-27 2009-07-30 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
WO2009127964A1 (en) * 2008-04-17 2009-10-22 Nokia Corporation System and method for improving operations on a media server
US20150177822A1 (en) * 2008-08-20 2015-06-25 Lucidlogix Technologies Ltd. Application-transparent resolution control by way of command stream interception
US8654134B2 (en) 2008-12-08 2014-02-18 Microsoft Corporation Command remoting
US9104452B2 (en) * 2009-07-27 2015-08-11 Microsoft Technology Licensing, Llc Hybrid remote sessions
US8171154B2 (en) * 2009-09-29 2012-05-01 Net Power And Light, Inc. Method and system for low-latency transfer protocol
US9146884B2 (en) 2009-12-10 2015-09-29 Microsoft Technology Licensing, Llc Push pull adaptive capture
US8761520B2 (en) 2009-12-11 2014-06-24 Microsoft Corporation Accelerating bitmap remoting by identifying and extracting 2D patterns from source bitmaps
US8898577B2 (en) * 2010-03-09 2014-11-25 Microsoft Corporation Application sharing with occlusion removal
US8768067B2 (en) 2010-04-15 2014-07-01 Microsoft Corporation Accelerating bitmap remoting by identifying and extracting patterns from source bitmaps through parallel processing techniques
US8823719B2 (en) * 2010-05-13 2014-09-02 Mediatek Inc. Graphics processing method applied to a plurality of buffers and graphics processing apparatus thereof
US20110298816A1 (en) * 2010-06-03 2011-12-08 Microsoft Corporation Updating graphical display content
US8417039B2 (en) 2010-06-03 2013-04-09 Microsoft Corporation Motion detection techniques for improved image remoting
US20120042275A1 (en) * 2010-08-10 2012-02-16 Microsoft Corporation Cloning specific windows on a wireless display surface
US8839112B2 (en) 2010-08-10 2014-09-16 Microsoft Corporation Cloning or extending a computer desktop on a wireless display surface
US20120075204A1 (en) * 2010-09-27 2012-03-29 Google Inc. Using a Touch-Sensitive Display of a Mobile Device with a Host Computer
US9069622B2 (en) 2010-09-30 2015-06-30 Microsoft Technology Licensing, Llc Techniques for load balancing GPU enabled virtual machines
US8970603B2 (en) * 2010-09-30 2015-03-03 Microsoft Technology Licensing, Llc Dynamic virtual device failure recovery
KR20130138263A (ko) 2010-10-14 2013-12-18 액티브비디오 네트웍스, 인코포레이티드 케이블 텔레비전 시스템을 이용하는 비디오 장치들 간의 디지털 비디오의 스트리밍
WO2012054089A2 (en) * 2010-10-21 2012-04-26 Net Power And Light Inc. Distributed processing pipeline and distributed layered application processing
WO2012097178A1 (en) * 2011-01-14 2012-07-19 Ciinow, Inc. A method and mechanism for performing both server-side and client-side rendering of visual data
GB201104066D0 (en) * 2011-03-09 2011-04-20 Imagination Tech Ltd Compression of a tessellated primitive index list in a tile rendering system
EP2695388B1 (en) 2011-04-07 2017-06-07 ActiveVideo Networks, Inc. Reduction of latency in video distribution networks using adaptive bit rates
WO2012170797A1 (en) * 2011-06-09 2012-12-13 Ciinow, Inc. A method and mechanism for performing both server-side and client-side rendering of visual data
US8836653B1 (en) 2011-06-28 2014-09-16 Google Inc. Extending host device functionality using a mobile device
US9135739B2 (en) 2011-09-06 2015-09-15 Dreamworks Animation Llc Optimizing graph evaluation
US9135189B2 (en) 2011-09-07 2015-09-15 Microsoft Technology Licensing, Llc Delivering GPU resources across machine boundaries
US10031636B2 (en) * 2011-09-08 2018-07-24 Microsoft Technology Licensing, Llc Remoting desktop displays using move regions
CN102306402A (zh) * 2011-09-16 2012-01-04 中山大学 一种移动可视媒体的三维图形处理系统
US9218189B2 (en) 2011-10-04 2015-12-22 Sap Portals Israel Ltd Managing a contextual workspace
US20130086495A1 (en) * 2011-10-04 2013-04-04 Sap Portals Israel Ltd Managing Social Suggestions in a Contextual Workspace
US9213954B2 (en) 2011-10-06 2015-12-15 Sap Portals Israel Ltd Suggesting data in a contextual workspace
US9245245B2 (en) 2011-10-06 2016-01-26 Sap Portals Israel Ltd Managing semantic data in a contextual workspace
US8736622B2 (en) * 2011-12-07 2014-05-27 Ubitus Inc System and method of leveraging GPU resources to enhance performance of an interact-able content browsing service
US8922569B1 (en) 2011-12-30 2014-12-30 hopTo Inc. Cloud based system for and method of translating between disparate 3D graphics languages in client-server computing environments
US9064292B1 (en) * 2011-12-30 2015-06-23 hopTo, Inc. System for and method of classifying and translating graphics commands in client-server computing systems
US9183663B1 (en) * 2011-12-30 2015-11-10 Graphon Corporation System for and method of classifying and translating graphics commands in client-server computing systems
US10409445B2 (en) 2012-01-09 2019-09-10 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
DE102012202537A1 (de) * 2012-02-20 2013-08-22 Siemens Aktiengesellschaft Bildsynthese-System
US9800945B2 (en) 2012-04-03 2017-10-24 Activevideo Networks, Inc. Class-based intelligent multiplexing over unmanaged networks
US9123084B2 (en) * 2012-04-12 2015-09-01 Activevideo Networks, Inc. Graphical application integration with MPEG objects
US9751011B2 (en) 2012-05-25 2017-09-05 Electronics Arts, Inc. Systems and methods for a unified game experience in a multiplayer game
US10521250B2 (en) 2012-09-12 2019-12-31 The Directv Group, Inc. Method and system for communicating between a host device and user device through an intermediate device using a composite video signal
US9535722B2 (en) * 2012-09-12 2017-01-03 The Directv Group, Inc. Method and system for communicating between a host device and a user device through an intermediate device using a composite graphics signal
US9137501B2 (en) 2012-09-12 2015-09-15 The Directv Group, Inc. Method and system for communicating between a host device and user device through an intermediate device using syntax translation
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
US10095663B2 (en) 2012-11-14 2018-10-09 Amazon Technologies, Inc. Delivery and display of page previews during page retrieval events
US20140157186A1 (en) * 2012-12-03 2014-06-05 Himanshu Jagadish Bhat Three dimensional desktop rendering in a data processing device
WO2014100273A1 (en) 2012-12-18 2014-06-26 Dynavisor, Inc. Dynamic device virtualization
US20140189544A1 (en) * 2012-12-27 2014-07-03 Nvidia Corporation Web-based graphics development system and method of graphics program interaction therewith
US20140184613A1 (en) * 2013-01-01 2014-07-03 Doron Exterman Method for offloading graphic processing unit (gpu) processing tasks to remote computers
EP2962479B1 (en) 2013-02-28 2016-11-30 Robert Bosch GmbH Mobile electronic device integration with in-vehicle information systems
WO2014145921A1 (en) 2013-03-15 2014-09-18 Activevideo Networks, Inc. A multiple-mode system and method for providing user selectable video content
US20140292803A1 (en) * 2013-03-29 2014-10-02 Nvidia Corporation System, method, and computer program product for generating mixed video and three-dimensional data to reduce streaming bandwidth
US9326047B2 (en) 2013-06-06 2016-04-26 Activevideo Networks, Inc. Overlay rendering of user interface onto source video
US9294785B2 (en) 2013-06-06 2016-03-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US9219922B2 (en) 2013-06-06 2015-12-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
CN103294439B (zh) 2013-06-28 2016-03-02 华为技术有限公司 一种图像更新方法、系统及装置
US9183613B2 (en) * 2013-08-01 2015-11-10 Intel Corporation Adaptive remote computing
US9619857B2 (en) 2013-10-23 2017-04-11 Empire Technology Development Llc Intermediary graphics rendition
US9805479B2 (en) * 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9519869B2 (en) 2013-11-25 2016-12-13 International Business Machines Corporation Predictive computer system resource monitoring
WO2015081308A2 (en) 2013-11-26 2015-06-04 Dynavisor, Inc. Dynamic i/o virtualization
US20150189012A1 (en) * 2014-01-02 2015-07-02 Nvidia Corporation Wireless display synchronization for mobile devices using buffer locking
US10915984B2 (en) * 2014-01-21 2021-02-09 Elektraglide Ltd Method and system for interactive graphics streaming
EP4181068A1 (en) * 2014-01-21 2023-05-17 Mythical Games UK Ltd A method and system for interactive graphics streaming
US10031767B2 (en) 2014-02-25 2018-07-24 Dynavisor, Inc. Dynamic information virtualization
JP5983665B2 (ja) * 2014-03-17 2016-09-06 日本電気株式会社 アクセス回数カウント装置、メモリシステム、および、アクセス回数カウント方法
US9788029B2 (en) 2014-04-25 2017-10-10 Activevideo Networks, Inc. Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks
US11169666B1 (en) 2014-05-22 2021-11-09 Amazon Technologies, Inc. Distributed content browsing system using transferred hardware-independent graphics commands
US9720888B1 (en) * 2014-05-22 2017-08-01 Amazon Technologies, Inc. Distributed browsing architecture for the delivery of graphics commands to user devices for assembling a plurality of layers of a content page
US9922007B1 (en) 2014-05-22 2018-03-20 Amazon Technologies, Inc. Split browser architecture capable of determining whether to combine or split content layers based on the encoding of content within each layer
US10042521B1 (en) 2014-05-22 2018-08-07 Amazon Technologies, Inc. Emulation of control resources for use with converted content pages
US9454515B1 (en) 2014-06-17 2016-09-27 Amazon Technologies, Inc. Content browser system using graphics commands and native text intelligence
JP6527579B2 (ja) * 2014-07-30 2019-06-05 エスケー テックス カンパニー、リミテッド クラウドストリーミングサービスシステム、スチールイメージ基盤クラウドストリーミングサービス方法及びそのための装置
CA2955444C (en) * 2014-08-20 2019-05-28 Landmark Graphics Corporation Optimizing computer hardware resource utilization when processing variable precision data
US10235338B2 (en) * 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
EP3001385B1 (en) * 2014-09-29 2019-05-01 Agfa Healthcare A system and method for rendering a video stream
CN104618733A (zh) * 2014-10-31 2015-05-13 腾讯科技(深圳)有限公司 图像远程投射方法和相关装置
US10102664B1 (en) * 2014-12-03 2018-10-16 Charles Schwab & Co., Inc. System and method for causing graphical information to be rendered
CN104469385B (zh) * 2014-12-11 2018-11-13 北京星网锐捷网络技术有限公司 基于虚拟化技术的图形显示方法及装置
US10074203B2 (en) * 2014-12-23 2018-09-11 Synaptics Incorporated Overlay for display self refresh
US20160232701A1 (en) * 2015-02-05 2016-08-11 Blackberry Limited Devices and methods for rendering graphics data
US10163179B2 (en) * 2015-03-27 2018-12-25 Intel Corporation Method and apparatus for intelligent cloud-based graphics updates
US10198294B2 (en) * 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware acceleration components
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
US10255021B2 (en) * 2015-05-28 2019-04-09 Qualcomm Incorporated Low latency screen mirroring
KR102349716B1 (ko) * 2015-06-11 2022-01-11 삼성전자주식회사 영상 공유 방법 및 이를 수행하는 전자 장치
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
KR102478018B1 (ko) * 2016-01-13 2022-12-16 삼성전자주식회사 콘텐트 표시 방법 및 이를 수행하는 전자 장치
KR102488333B1 (ko) * 2016-04-27 2023-01-13 삼성전자주식회사 그래픽 데이터를 합성하는 전자 장치 및 방법
US10086289B2 (en) * 2016-11-22 2018-10-02 Sony Interactive Entertainment America Llc Remastering by emulation
CN107273471A (zh) * 2017-06-07 2017-10-20 国网上海市电力公司 一种基于Geohash的二元电力时序数据索引构建方法
CN108133453A (zh) * 2017-12-13 2018-06-08 北京奇虎科技有限公司 一种基于OpenGL的图像处理器及其功能扩展方法
US10620980B2 (en) * 2018-03-28 2020-04-14 Microsoft Technology Licensing, Llc Techniques for native runtime of hypertext markup language graphics content
CN110389827B (zh) * 2018-04-20 2023-05-12 伊姆西Ip控股有限责任公司 在分布式系统中进行优化的方法、设备和计算机程序产品
CN109302637B (zh) * 2018-11-05 2023-02-17 腾讯科技(成都)有限公司 图像处理方法、图像处理装置和电子设备
EP3782131A1 (en) * 2019-04-12 2021-02-24 Esko Software BVBA Method of and system for generating and viewing a 3d visualization of an object having printed features
US11449963B1 (en) * 2020-02-24 2022-09-20 Juice Technologies, Inc. Virtual graphics processing with remote execution
CN111859509A (zh) * 2020-07-27 2020-10-30 北京优锘科技有限公司 基于数据中心的机房容量管理系统及方法
CN117616762A (zh) * 2021-07-09 2024-02-27 皇家Kpn公司 利用3d图形增强视频或外部环境
US20230051111A1 (en) * 2021-08-11 2023-02-16 Lunar Outpost Inc. Robotic Source Detection Device And Method
US11836212B2 (en) * 2021-12-03 2023-12-05 Atlassian Pty Ltd. Systems and methods for rendering interactive web pages
CN114359017B (zh) * 2021-12-27 2023-11-17 阿波罗智联(北京)科技有限公司 多媒体资源的处理方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742289A (en) * 1994-04-01 1998-04-21 Lucent Technologies Inc. System and method of generating compressed video graphics images
WO2003075116A2 (en) * 2002-03-01 2003-09-12 T5 Labs Ltd Centralised interactive graphical application server
CN101101505A (zh) * 2006-07-07 2008-01-09 华为技术有限公司 一种实现三维增强现实的方法及系统

Family Cites Families (315)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2386708A (en) 1945-10-09
US4438511A (en) * 1980-11-10 1984-03-20 Telebit Corporation Packetized ensemble modem
US5481740A (en) 1986-04-14 1996-01-02 National Instruments Corporation Method and apparatus for providing autoprobe features in a graphical data flow diagram
US4928247A (en) 1987-08-13 1990-05-22 Digital Equipment Corporation Method and apparatus for the continuous and asynchronous traversal and processing of graphics data structures
CA1341310C (en) 1988-07-15 2001-10-23 Robert Filepp Interactive computer network and method of operation
US5544317A (en) 1990-11-20 1996-08-06 Berg; David A. Method for continuing transmission of commands for interactive graphics presentation in a computer network
US5241625A (en) 1990-11-27 1993-08-31 Farallon Computing, Inc. Screen image sharing among heterogeneous computers
US6850252B1 (en) 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US5432932A (en) 1992-10-23 1995-07-11 International Business Machines Corporation System and method for dynamically controlling remote processes from a performance monitor
US5887133A (en) 1997-01-15 1999-03-23 Health Hero Network System and method for modifying documents sent over a communications network
US5487145A (en) * 1993-07-09 1996-01-23 Taligent, Inc. Method and apparatus for compositing display items which minimizes locked drawing areas
US5844553A (en) 1993-08-30 1998-12-01 Hewlett-Packard Company Mechanism to control and use window events among applications in concurrent computing
US5446736A (en) 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US6122403A (en) 1995-07-27 2000-09-19 Digimarc Corporation Computer system linked by using information in data objects
US5862260A (en) 1993-11-18 1999-01-19 Digimarc Corporation Methods for surveying dissemination of proprietary empirical data
US7103197B2 (en) 1993-11-18 2006-09-05 Digimarc Corporation Arrangement for embedding subliminal data in imaging
US5832119C1 (en) 1993-11-18 2002-03-05 Digimarc Corp Methods for controlling systems using control signals embedded in empirical data
US7116781B2 (en) 1993-11-18 2006-10-03 Digimarc Corporation Counteracting geometric distortions in watermarking
US7171016B1 (en) * 1993-11-18 2007-01-30 Digimarc Corporation Method for monitoring internet dissemination of image, video and/or audio files
US6681029B1 (en) 1993-11-18 2004-01-20 Digimarc Corporation Decoding steganographic messages embedded in media signals
US7113596B2 (en) 1993-11-18 2006-09-26 Digimarc Corporation Embedding information related to a subject of an identification document in the identification document
US6968057B2 (en) 1994-03-17 2005-11-22 Digimarc Corporation Emulsion products and imagery employing steganography
EP0766847B1 (en) 1994-06-17 2001-10-31 Intel Corporation Apparatus and method for application sharing in a graphic user interface
US5557765A (en) 1994-08-11 1996-09-17 Trusted Information Systems, Inc. System and method for data recovery
US5745759A (en) 1994-10-14 1998-04-28 Qnx Software Systems, Ltd. Window kernel
US5838906A (en) 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document
US6879701B1 (en) 1994-10-21 2005-04-12 Digimarc Corporation Tile-based digital watermarking techniques
US6108715A (en) 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls
US6272632B1 (en) 1995-02-21 2001-08-07 Network Associates, Inc. System and method for controlling access to a user secret using a key recovery field
US5572528A (en) 1995-03-20 1996-11-05 Novell, Inc. Mobile networking method and apparatus
US6813366B1 (en) 1995-05-08 2004-11-02 Digimarc Corporation Steganographic decoding with transform to spatial domain
US6760463B2 (en) 1995-05-08 2004-07-06 Digimarc Corporation Watermarking methods and media
US5743797A (en) * 1995-05-31 1998-04-28 Jannersten; Per Device for controlling, presenting and registering the bidding in a game of bridge
US6418324B1 (en) 1995-06-01 2002-07-09 Padcom, Incorporated Apparatus and method for transparent wireless communication between a remote device and host system
US6003030A (en) 1995-06-07 1999-12-14 Intervu, Inc. System and method for optimized storage and retrieval of data on a distributed computer network
US5592549A (en) 1995-06-15 1997-01-07 Infosafe Systems, Inc. Method and apparatus for retrieving selected information from a secure information source
SE504523C2 (sv) * 1995-06-19 1997-02-24 Ericsson Telefon Ab L M Anordning och metod för att länka kunder till servrar under körtid i ett distribuerat telekommunikationsnätverk
US6563505B1 (en) 1995-06-23 2003-05-13 Cirrus Logic, Inc. Method and apparatus for executing commands in a graphics controller chip
CA2180891C (en) 1995-07-12 2010-01-12 Junichi Rekimoto Notification of updates in a three-dimensional virtual reality space sharing system
US6199082B1 (en) * 1995-07-17 2001-03-06 Microsoft Corporation Method for delivering separate design and content in a multimedia publishing system
US5860073A (en) 1995-07-17 1999-01-12 Microsoft Corporation Style sheets for publishing system
US6408331B1 (en) 1995-07-27 2002-06-18 Digimarc Corporation Computer linking methods using encoded graphics
US5742797A (en) * 1995-08-11 1998-04-21 International Business Machines Corporation Dynamic off-screen display memory manager
US6580808B2 (en) 1995-09-25 2003-06-17 Digimarc Corporation Method and apparatus for discerning image distortion by reference to encoded marker signals
US5819020A (en) 1995-10-16 1998-10-06 Network Specialists, Inc. Real time backup system
US6373573B1 (en) 2000-03-13 2002-04-16 Lj Laboratories L.L.C. Apparatus for measuring optical characteristics of a substrate and pigments applied thereto
US6118521A (en) 1996-01-02 2000-09-12 Lj Laboratories, L.L.C. Apparatus and method for measuring optical characteristics of an object
JP3087640B2 (ja) 1996-01-16 2000-09-11 株式会社日立製作所 グラフィックプロセッサ及びシステム
US5692073A (en) 1996-05-03 1997-11-25 Xerox Corporation Formless forms and paper web using a reference-based mark extraction technique
US6381341B1 (en) * 1996-05-16 2002-04-30 Digimarc Corporation Watermark encoding method exploiting biases inherent in original signal
US6052120A (en) * 1996-10-01 2000-04-18 Diamond Multimedia Systems, Inc. Method of operating a portable interactive graphics display tablet and communications systems
US5884046A (en) * 1996-10-23 1999-03-16 Pluris, Inc. Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network
US6185625B1 (en) 1996-12-20 2001-02-06 Intel Corporation Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object
WO1998035468A2 (en) 1997-01-27 1998-08-13 Benjamin Slotznick System for delivering and displaying primary and secondary information
US6101510A (en) 1997-01-29 2000-08-08 Microsoft Corporation Web browser control for incorporating web browser functionality into application programs
US6852252B2 (en) * 1997-03-12 2005-02-08 William Marsh Rice University Use of metalnanoshells to impede the photo-oxidation of conjugated polymer
US6421726B1 (en) 1997-03-14 2002-07-16 Akamai Technologies, Inc. System and method for selection and retrieval of diverse types of video data on a computer network
US6023507A (en) 1997-03-17 2000-02-08 Sun Microsystems, Inc. Automatic remote computer monitoring system
US6141003A (en) 1997-03-18 2000-10-31 Microsoft Corporation Channel bar user interface for an entertainment system
US5796952A (en) 1997-03-21 1998-08-18 Dot Com Development, Inc. Method and apparatus for tracking client interaction with a network resource and creating client profiles and resource database
US6643696B2 (en) 1997-03-21 2003-11-04 Owen Davis Method and apparatus for tracking client interaction with a network resource and creating client profiles and resource database
WO1998044516A1 (en) 1997-03-27 1998-10-08 Littelfuse, Inc. Resettable automotive circuit protection device
DE69835314T2 (de) 1997-04-15 2007-05-10 Hewlett-Packard Development Co., L.P., Houston Verfahren und Vorrichtung zur formatgesteuerten Interaktion zwischen Geräten
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US5999940A (en) 1997-05-28 1999-12-07 Home Information Services, Inc. Interactive information discovery tool and methodology
US6112239A (en) 1997-06-18 2000-08-29 Intervu, Inc System and method for server-side optimization of data delivery on a distributed computer network
US6870616B2 (en) 1998-06-30 2005-03-22 Jjl Technologies Llc Spectrometer apparatus for determining an optical characteristic of an object or material having one or more sensors for determining a physical position or non-color property
US6449041B1 (en) 1997-07-01 2002-09-10 Lj Laboratories, Llc Apparatus and method for measuring optical characteristics of an object
US6421738B1 (en) * 1997-07-15 2002-07-16 Microsoft Corporation Method and system for capturing and encoding full-screen video graphics
AU9119098A (en) 1997-08-25 1999-03-16 Richard A. Holub A system for distributing and controlling color reproduction at multiple sites
US6023724A (en) * 1997-09-26 2000-02-08 3Com Corporation Apparatus and methods for use therein for an ISDN LAN modem that displays fault information to local hosts through interception of host DNS request messages
US7024450B1 (en) * 1997-10-06 2006-04-04 Mci, Inc. Method and apparatus for deploying service modules among service nodes distributed in an intelligent network
US5848410A (en) 1997-10-08 1998-12-08 Hewlett Packard Company System and method for selective and continuous index generation
US6816904B1 (en) 1997-11-04 2004-11-09 Collaboration Properties, Inc. Networked video multimedia storage server environment
WO1999026121A2 (en) 1997-11-13 1999-05-27 Hyperspace Communications, Inc. File transfer system
US6272537B1 (en) 1997-11-17 2001-08-07 Fujitsu Limited Method for building element manager for a computer network element using a visual element manager builder process
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US6788315B1 (en) 1997-11-17 2004-09-07 Fujitsu Limited Platform independent computer network manager
US6664978B1 (en) 1997-11-17 2003-12-16 Fujitsu Limited Client-server computer network management architecture
US6170075B1 (en) 1997-12-18 2001-01-02 3Com Corporation Data and real-time media communication over a lossy network
US6519686B2 (en) 1998-01-05 2003-02-11 Intel Corporation Information streaming in a multi-process system using shared memory
WO1999044121A2 (en) * 1998-02-26 1999-09-02 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US5974547A (en) 1998-03-20 1999-10-26 3Com Corporation Technique for reliable network booting of an operating system to a client computer
US6173316B1 (en) 1998-04-08 2001-01-09 Geoworks Corporation Wireless communication device with markup language based man-machine interface
US6549612B2 (en) 1998-05-06 2003-04-15 Telecommunications Premium Services, Inc. Unified communication services via e-mail
US6141699A (en) 1998-05-11 2000-10-31 International Business Machines Corporation Interactive display system for sequential retrieval and display of a plurality of interrelated data sets
AU749314B2 (en) 1998-05-15 2002-06-20 Unicast Communications Corporation A technique for implementing browser-initiated network-distributed advertising and for interstitially displaying an advertisement
US6397259B1 (en) 1998-05-29 2002-05-28 Palm, Inc. Method, system and apparatus for packet minimized communications
US7025209B2 (en) 1998-05-29 2006-04-11 Palmsource, Inc. Method and apparatus for wireless internet access
US6253326B1 (en) 1998-05-29 2001-06-26 Palm, Inc. Method and system for secure communications
US6343318B1 (en) * 1998-05-29 2002-01-29 Palm, Inc. Method and apparatus for communicating information over low bandwidth communications networks
US6590588B2 (en) 1998-05-29 2003-07-08 Palm, Inc. Wireless, radio-frequency communications using a handheld computer
US6201996B1 (en) 1998-05-29 2001-03-13 Control Technology Corporationa Object-oriented programmable industrial controller with distributed interface architecture
US6246479B1 (en) 1998-06-08 2001-06-12 Lj Laboratories, L.L.C. Integrated spectrometer assembly and methods
US6246471B1 (en) 1998-06-08 2001-06-12 Lj Laboratories, Llc Apparatus and method for measuring optical characteristics of an object
US6249348B1 (en) 1998-11-23 2001-06-19 Lj Laboratories, L.L.C. Integrated spectrometer assembly and methods
US6249294B1 (en) 1998-07-20 2001-06-19 Hewlett-Packard Company 3D graphics in a single logical sreen display using multiple computer systems
US6934963B1 (en) 1998-09-22 2005-08-23 United Video Properties, Inc. Interactive television program guide with passive content
US8332478B2 (en) 1998-10-01 2012-12-11 Digimarc Corporation Context sensitive connected content
US6271858B1 (en) 1998-10-16 2001-08-07 Microsoft Corporation Incremental update for dynamic/animated textures on three-dimensional models
US6385653B1 (en) 1998-11-02 2002-05-07 Cisco Technology, Inc. Responding to network access requests using a transparent media access and uniform delivery of service
US6330022B1 (en) 1998-11-05 2001-12-11 Lucent Technologies Inc. Digital processing apparatus and method to support video conferencing in variable contexts
US7010512B1 (en) 1998-11-09 2006-03-07 C/Base, Inc. Transfer instrument
US6859212B2 (en) * 1998-12-08 2005-02-22 Yodlee.Com, Inc. Interactive transaction center interface
US6628304B2 (en) 1998-12-09 2003-09-30 Cisco Technology, Inc. Method and apparatus providing a graphical user interface for representing and navigating hierarchical networks
US6449639B1 (en) 1998-12-23 2002-09-10 Doxio, Inc. Method and system for client-less viewing of scalable documents displayed using internet imaging protocol commands
US6263363B1 (en) 1999-01-28 2001-07-17 Skydesk, Inc. System and method for creating an internet-accessible working replica of a home computer on a host server controllable by a user operating a remote access client computer
US6295513B1 (en) 1999-03-16 2001-09-25 Eagle Engineering Of America, Inc. Network-based system for the manufacture of parts with a virtual collaborative environment for design, developement, and fabricator selection
US6919895B1 (en) * 1999-03-22 2005-07-19 Nvidia Corporation Texture caching arrangement for a computer graphics accelerator
US6762761B2 (en) * 1999-03-31 2004-07-13 International Business Machines Corporation Method and system for graphics rendering using hardware-event-triggered execution of captured graphics hardware instructions
US6789252B1 (en) 1999-04-15 2004-09-07 Miles D. Burke Building business objects and business software applications using dynamic object definitions of ingrediential objects
US7231357B1 (en) 1999-04-19 2007-06-12 Neil Shanman System and method for the targeted distribution of discount coupons over a network
US7178106B2 (en) 1999-04-21 2007-02-13 Sonic Solutions, A California Corporation Presentation of media content from multiple media sources
US6317777B1 (en) 1999-04-26 2001-11-13 Intel Corporation Method for web based storage and retrieval of documents
US6763040B1 (en) 1999-04-29 2004-07-13 Amx Corporation Internet control system communication protocol and method
US6340977B1 (en) 1999-05-07 2002-01-22 Philip Lui System and method for dynamic assistance in software applications using behavior and host application models
US7165041B1 (en) * 1999-05-27 2007-01-16 Accenture, Llp Web-based architecture sales tool
US6957186B1 (en) 1999-05-27 2005-10-18 Accenture Llp System method and article of manufacture for building, managing, and supporting various components of a system
US6721713B1 (en) 1999-05-27 2004-04-13 Andersen Consulting Llp Business alliance identification in a web architecture framework
US6519571B1 (en) * 1999-05-27 2003-02-11 Accenture Llp Dynamic customer profile management
US6615166B1 (en) 1999-05-27 2003-09-02 Accenture Llp Prioritizing components of a network framework required for implementation of technology
US6473794B1 (en) 1999-05-27 2002-10-29 Accenture Llp System for establishing plan to test components of web based framework by displaying pictorial representation and conveying indicia coded components of existing network framework
US6536037B1 (en) * 1999-05-27 2003-03-18 Accenture Llp Identification of redundancies and omissions among components of a web based architecture
US6745368B1 (en) 1999-06-11 2004-06-01 Liberate Technologies Methods, apparatus, and systems for storing, retrieving and playing multimedia data
US6591304B1 (en) 1999-06-21 2003-07-08 Cisco Technology, Inc. Dynamic, scaleable attribute filtering in a multi-protocol compatible network access environment
US6885920B2 (en) 1999-07-30 2005-04-26 Oshkosh Truck Corporation Control system and method for electric vehicle
US6993421B2 (en) 1999-07-30 2006-01-31 Oshkosh Truck Corporation Equipment service vehicle with network-assisted vehicle service and repair
US7184866B2 (en) 1999-07-30 2007-02-27 Oshkosh Truck Corporation Equipment service vehicle with remote monitoring
US6611867B1 (en) 1999-08-31 2003-08-26 Accenture Llp System, method and article of manufacture for implementing a hybrid network
US6427132B1 (en) 1999-08-31 2002-07-30 Accenture Llp System, method and article of manufacture for demonstrating E-commerce capabilities via a simulation on a network
US6314452B1 (en) 1999-08-31 2001-11-06 Rtimage, Ltd. System and method for transmitting a digital image over a communication network
US6345239B1 (en) 1999-08-31 2002-02-05 Accenture Llp Remote demonstration of business capabilities in an e-commerce environment
US6356933B2 (en) * 1999-09-07 2002-03-12 Citrix Systems, Inc. Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language
US6687745B1 (en) * 1999-09-14 2004-02-03 Droplet, Inc System and method for delivering a graphical user interface of remote applications over a thin bandwidth connection
US6993456B2 (en) 1999-09-30 2006-01-31 Rockwell Automation Technologies, Inc. Mechanical-electrical template based method and apparatus
US6268853B1 (en) 1999-09-30 2001-07-31 Rockwell Technologies, L.L.C. Data structure for use in enterprise controls
US6556950B1 (en) 1999-09-30 2003-04-29 Rockwell Automation Technologies, Inc. Diagnostic method and apparatus for use with enterprise control
US7117170B1 (en) 1999-10-06 2006-10-03 Stamps.Com Inc. Apparatus, systems and methods for applying billing options for multiple carriers for online, multi-carrier, multi-service parcel shipping management
US7197465B1 (en) * 1999-10-06 2007-03-27 Stamps.Com Inc. Apparatus, systems and methods for printing dimensionally accurate symbologies on laser printers configured with remote client computer devices
US6965912B2 (en) 1999-10-18 2005-11-15 4Yoursoul.Com Method and apparatus for distribution of greeting cards with electronic commerce transaction
US7042454B1 (en) * 1999-10-27 2006-05-09 Hewlett-Packard Development Company, L.P. Method and apparatus for displaying distributed multiresolution scenes
US7152207B1 (en) 1999-11-05 2006-12-19 Decentrix Inc. Method and apparatus for providing conditional customization for generating a web site
US6697825B1 (en) 1999-11-05 2004-02-24 Decentrix Inc. Method and apparatus for generating and modifying multiple instances of element of a web site
US6664969B1 (en) * 1999-11-12 2003-12-16 Hewlett-Packard Development Company, L.P. Operating system independent method and apparatus for graphical remote access
US7124101B1 (en) 1999-11-22 2006-10-17 Accenture Llp Asset tracking in a network-based supply chain environment
US6405252B1 (en) 1999-11-22 2002-06-11 Speedera Networks, Inc. Integrated point of presence server network
US6671818B1 (en) 1999-11-22 2003-12-30 Accenture Llp Problem isolation through translating and filtering events into a standard object format in a network based supply chain
US6606744B1 (en) 1999-11-22 2003-08-12 Accenture, Llp Providing collaborative installation management in a network-based supply chain environment
US7130807B1 (en) 1999-11-22 2006-10-31 Accenture Llp Technology sharing during demand and supply planning in a network-based supply chain environment
US6970849B1 (en) 1999-12-17 2005-11-29 Microsoft Corporation Inter-server communication using request with encrypted parameter
US6996720B1 (en) * 1999-12-17 2006-02-07 Microsoft Corporation System and method for accessing protected content in a rights-management architecture
AU2582401A (en) 1999-12-17 2001-06-25 Dorado Network Systems Corporation Purpose-based adaptive rendering
US7047411B1 (en) 1999-12-17 2006-05-16 Microsoft Corporation Server for an electronic distribution system and method of operating same
US6785902B1 (en) 1999-12-20 2004-08-31 Webtv Networks, Inc. Document data structure and method for integrating broadcast television with web pages
US6519037B2 (en) 1999-12-23 2003-02-11 Lj Laboratories, Llc Spectrometer having optical unit including a randomized fiber optic implement
US6362888B1 (en) 1999-12-23 2002-03-26 Lj Laboratories, L.L.C. Spectrometer assembly
US6690380B1 (en) * 1999-12-27 2004-02-10 Microsoft Corporation Graphics geometry cache
US6831637B1 (en) 1999-12-30 2004-12-14 Intel Corporation Method and apparatus for compressing three dimensional surface data
US6414750B2 (en) 2000-01-10 2002-07-02 Lj Laboratories, L.L.C. Spectrometric apparatus and method for measuring optical characteristics of an object
AU2001229371A1 (en) 2000-01-14 2001-07-24 Saba Software, Inc. Information server
AU2001226401A1 (en) 2000-01-14 2001-07-24 Saba Software, Inc. Method and apparatus for a business applications server
US7072934B2 (en) 2000-01-14 2006-07-04 Saba Software, Inc. Method and apparatus for a business applications server management system platform
US6643652B2 (en) 2000-01-14 2003-11-04 Saba Software, Inc. Method and apparatus for managing data exchange among systems in a network
US20020049788A1 (en) * 2000-01-14 2002-04-25 Lipkin Daniel S. Method and apparatus for a web content platform
US6871346B1 (en) * 2000-02-11 2005-03-22 Microsoft Corp. Back-end decoupled management model and management system utilizing same
US6516311B1 (en) * 2000-02-24 2003-02-04 Tau (Tony) Qiu & Howard Hoffenberg, As Tenants In Common Method for linking on the internet with an advertising feature
US6466654B1 (en) 2000-03-06 2002-10-15 Avaya Technology Corp. Personal virtual assistant with semantic tagging
US6757362B1 (en) 2000-03-06 2004-06-29 Avaya Technology Corp. Personal virtual assistant
US7111060B2 (en) 2000-03-14 2006-09-19 Aep Networks, Inc. Apparatus and accompanying methods for providing, through a centralized server site, a secure, cost-effective, web-enabled, integrated virtual office environment remotely accessible through a network-connected web browser
US7284199B2 (en) 2000-03-29 2007-10-16 Microsoft Corporation Process of localizing objects in markup language documents
US20010030667A1 (en) 2000-04-10 2001-10-18 Kelts Brett R. Interactive display interface for information objects
US7062527B1 (en) 2000-04-19 2006-06-13 Silicon Graphics, Inc. Management and scheduling of a distributed rendering method and system
US6976071B1 (en) 2000-05-03 2005-12-13 Nortel Networks Limited Detecting if a secure link is alive
US6754710B1 (en) 2000-05-08 2004-06-22 Nortel Networks Limited Remote control of computer network activity
US6792607B1 (en) 2000-05-18 2004-09-14 Microsoft Corporation Databinding using server-side control objects
US7154638B1 (en) 2000-05-23 2006-12-26 Silverbrook Research Pty Ltd Printed page tag encoder
AU775392B2 (en) 2000-05-24 2004-07-29 Silverbrook Research Pty Ltd Printed page tag encoder
US7490166B2 (en) * 2000-05-26 2009-02-10 Citrix Systems, Inc. Remote control of a client's off-screen surface
US6519307B1 (en) * 2000-05-30 2003-02-11 Holtec International Ventilated overpack apparatus and method for storing spent nuclear fuel
US6854016B1 (en) * 2000-06-19 2005-02-08 International Business Machines Corporation System and method for a web based trust model governing delivery of services and programs
US6574617B1 (en) 2000-06-19 2003-06-03 International Business Machines Corporation System and method for selective replication of databases within a workflow, enterprise, and mail-enabled web application server and platform
US6785721B1 (en) 2000-06-19 2004-08-31 International Business Machines Corporation System and method for providing a distributable runtime that deploys web applications and services from a workflow, enterprise, and mail-enabled web application server and platform
US7219304B1 (en) 2000-06-19 2007-05-15 International Business Machines Corporation System and method for developing and administering web applications and services from a workflow, enterprise, and mail-enabled web application server and platform
US6742026B1 (en) 2000-06-19 2004-05-25 International Business Machines Corporation System and method for providing a distributable runtime
US6845383B1 (en) 2000-06-19 2005-01-18 International Business Machines Corporation System and method for managing concurrent scheduled or on-demand replication of subscriptions
US7158953B1 (en) 2000-06-27 2007-01-02 Microsoft Corporation Method and system for limiting the use of user-specific software features
US7017189B1 (en) 2000-06-27 2006-03-21 Microsoft Corporation System and method for activating a rendering device in a multi-level rights-management architecture
US6891953B1 (en) 2000-06-27 2005-05-10 Microsoft Corporation Method and system for binding enhanced software features to a persona
US6981262B1 (en) 2000-06-27 2005-12-27 Microsoft Corporation System and method for client interaction in a multi-level rights-management architecture
US8126313B2 (en) 2000-06-28 2012-02-28 Verizon Business Network Services Inc. Method and system for providing a personal video recorder utilizing network-based digital media content
US7000180B2 (en) * 2000-06-29 2006-02-14 Balthaser Online, Inc. Methods, systems, and processes for the design and creation of rich-media applications via the internet
US7373422B1 (en) 2000-08-04 2008-05-13 Oracle International Corporation Techniques for supporting multiple devices in mobile applications
US7027975B1 (en) 2000-08-08 2006-04-11 Object Services And Consulting, Inc. Guided natural language interface system and method
AU2001287181A1 (en) 2000-08-15 2002-02-25 Extreming, Inc. E-commerce enabling virtual streaming multimedia server, system, method and article
US20020046262A1 (en) * 2000-08-18 2002-04-18 Joerg Heilig Data access system and method with proxy and remote processing
US7035907B1 (en) 2000-09-13 2006-04-25 Jibe Networks, Inc. Manipulating content objects to control their display
US6938079B1 (en) 2000-09-19 2005-08-30 3Com Corporation System and method for automatically configuring a client device
US7010546B1 (en) * 2000-09-20 2006-03-07 Parasoft Corporation Method and system for testing data sources and database oriented software applications
US7210100B2 (en) 2000-09-27 2007-04-24 Eizel Technologies, Inc. Configurable transformation of electronic documents
US6950850B1 (en) 2000-10-31 2005-09-27 International Business Machines Corporation System and method for dynamic runtime partitioning of model-view-controller applications
US20020099738A1 (en) 2000-11-22 2002-07-25 Grant Hugh Alexander Automated web access for back-end enterprise systems
GB2369695B (en) * 2000-11-30 2005-03-16 Indigo One Technologies Ltd Database
US7225040B2 (en) 2001-11-14 2007-05-29 Exxon Mobil Oil Corporation Method and system for reducing lead-time in the packaging industry
US7308440B2 (en) 2000-12-11 2007-12-11 Microsoft Corporation System and method for representing an object used in management of multiple network resources
US20020116582A1 (en) 2000-12-18 2002-08-22 Copeland George P. Batching of invalidations and new values in a web cache with dynamic content
US6877025B2 (en) 2000-12-18 2005-04-05 International Business Machines Corp. Integrated JSP and command cache for web applications with dynamic content
WO2002050657A1 (en) 2000-12-19 2002-06-27 Coolernet, Inc. System and method for multimedia authoring and playback
US6735601B1 (en) 2000-12-29 2004-05-11 Vmware, Inc. System and method for remote file access by computer
US6907118B2 (en) 2001-02-13 2005-06-14 At&T Corp. Method and system for facilitating call-related activities
US7190477B2 (en) 2001-02-22 2007-03-13 Sharp Laboratories Of America, Inc. System and method for managing and processing a print job using print job tickets
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US7506047B2 (en) 2001-03-30 2009-03-17 Bmc Software, Inc. Synthetic transaction monitor with replay capability
AUPR464601A0 (en) 2001-04-30 2001-05-24 Commonwealth Of Australia, The Shapes vector
US6925481B2 (en) 2001-05-03 2005-08-02 Symantec Corp. Technique for enabling remote data access and manipulation from a pervasive device
US7020663B2 (en) * 2001-05-30 2006-03-28 George M. Hay System and method for the delivery of electronic books
US6802055B2 (en) * 2001-06-27 2004-10-05 Microsoft Corporation Capturing graphics primitives associated with any display object rendered to a graphical user interface
US7117504B2 (en) 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
WO2003006257A1 (en) 2001-07-11 2003-01-23 Ecole Polytechnique Federale De Lausanne Images incorporating microstructures
EP2290532A3 (en) * 2001-07-26 2013-04-24 IRiSE System and process for gathering, recording and validating requirements for computer applications
US7110982B2 (en) 2001-08-27 2006-09-19 Dphi Acquisitions, Inc. Secure access method and system
US7039723B2 (en) * 2001-08-31 2006-05-02 Hinnovation, Inc. On-line image processing and communication system
US7177935B2 (en) * 2001-10-05 2007-02-13 International Business Machines Corporation Storage area network methods and apparatus with hierarchical file system extension policy
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US7080140B2 (en) 2001-10-05 2006-07-18 International Business Machines Corporation Storage area network methods and apparatus for validating data from multiple sources
US7171624B2 (en) 2001-10-05 2007-01-30 International Business Machines Corporation User interface architecture for storage area network
US6920494B2 (en) 2001-10-05 2005-07-19 International Business Machines Corporation Storage area network methods and apparatus with virtual SAN recognition
US6996670B2 (en) * 2001-10-05 2006-02-07 International Business Machines Corporation Storage area network methods and apparatus with file system extension
US7069395B2 (en) 2001-10-05 2006-06-27 International Business Machines Corporation Storage area network methods and apparatus for dynamically enabled storage device masking
US6854035B2 (en) * 2001-10-05 2005-02-08 International Business Machines Corporation Storage area network methods and apparatus for display and management of a hierarchical file system extension policy
US6952698B2 (en) 2001-10-05 2005-10-04 International Business Machines Corporation Storage area network methods and apparatus for automated file system extension
US7137124B2 (en) 2001-10-05 2006-11-14 International Business Machines Corporation Storage area network methods and apparatus for storage device masking
US6697924B2 (en) 2001-10-05 2004-02-24 International Business Machines Corporation Storage area network methods and apparatus for identifying fiber channel devices in kernel mode
US7443401B2 (en) * 2001-10-18 2008-10-28 Microsoft Corporation Multiple-level graphics processing with animation interval generation
US7161599B2 (en) * 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US20030079224A1 (en) * 2001-10-22 2003-04-24 Anton Komar System and method to provide additional information associated with selectable display areas
US20060274828A1 (en) 2001-11-01 2006-12-07 A4S Security, Inc. High capacity surveillance system with fast search capability
US7631084B2 (en) * 2001-11-02 2009-12-08 Juniper Networks, Inc. Method and system for providing secure access to private networks with client redirection
US7171468B2 (en) * 2001-11-10 2007-01-30 Kabushiki Kaisha Toshiba System and method for accessing a document management repository
US7051340B2 (en) 2001-11-29 2006-05-23 Hewlett-Packard Development Company, L.P. System and method for isolating applications from each other
US6888551B2 (en) * 2001-12-07 2005-05-03 Intel Corporation Sparse refresh of display
US6985922B1 (en) 2001-12-21 2006-01-10 S.J. Bashen, Inc. Method, apparatus and system for processing compliance actions over a wide area network
US7038696B2 (en) * 2002-01-04 2006-05-02 Hewlett-Packard Development Company Method and apparatus for implementing color graphics on a remote computer
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US7107285B2 (en) 2002-03-16 2006-09-12 Questerra Corporation Method, system, and program for an improved enterprise spatial system
US7636754B2 (en) 2002-03-21 2009-12-22 Cisco Technology, Inc. Rich multi-media format for use in a collaborative computing system
US7120872B2 (en) 2002-03-25 2006-10-10 Microsoft Corporation Organizing, editing, and rendering digital ink
AU2003234144B2 (en) 2002-04-19 2008-12-04 Opentv, Inc. Supporting common interactive television functionality through presentation engine syntax
US6993586B2 (en) 2002-05-09 2006-01-31 Microsoft Corporation User intention modeling for web navigation
AU2003239385A1 (en) 2002-05-10 2003-11-11 Richard R. Reisman Method and apparatus for browsing using multiple coordinated device
US7197234B1 (en) * 2002-05-24 2007-03-27 Digeo, Inc. System and method for processing subpicture data
US7116894B1 (en) 2002-05-24 2006-10-03 Digeo, Inc. System and method for digital multimedia stream conversion
WO2003105010A1 (en) 2002-06-06 2003-12-18 Neoteris, Inc. Method and system for providing secure access to private networks
US7107309B1 (en) 2002-07-03 2006-09-12 Sprint Spectrum L.P. Method and system for providing interstitial notice
US6987987B1 (en) * 2002-07-03 2006-01-17 Sprint Spectrum L.P. Method and system for providing advanced notice of cost to access web content
US7260639B2 (en) 2002-07-09 2007-08-21 Akamai Technologies, Inc. Method and system for protecting web sites from public internet threats
US7137077B2 (en) 2002-07-30 2006-11-14 Microsoft Corporation Freeform encounter selection tool
US7305680B2 (en) 2002-08-13 2007-12-04 Sharp Laboratories Of America, Inc. Listening module for asynchronous messages sent between electronic devices of a distributed network
US6950502B1 (en) 2002-08-23 2005-09-27 Bellsouth Intellectual Property Corp. Enhanced scheduled messaging system
US7096383B2 (en) * 2002-08-29 2006-08-22 Cosine Communications, Inc. System and method for virtual router failover in a network routing system
US6882718B1 (en) 2002-09-06 2005-04-19 Bellsouth Intellectual Property Corp. Real time customer service data manipulation to allow multiple services per trigger type
US6934578B2 (en) 2002-09-18 2005-08-23 Covance Inc. Method and apparatus for interactive annotation and measurement of time series data with automatic marker sequencing
US7363347B2 (en) 2002-11-07 2008-04-22 Hewlett-Packard Development Company, L.P. Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
US7353533B2 (en) 2002-12-18 2008-04-01 Novell, Inc. Administration of protection of data accessible by a mobile device
WO2004066125A2 (en) 2003-01-14 2004-08-05 V-Enable, Inc. Multi-modal information retrieval system
US7218779B2 (en) 2003-01-21 2007-05-15 Microsoft Corporation Ink divider and associated application program interface
US7210048B2 (en) * 2003-02-14 2007-04-24 Intel Corporation Enterprise power and thermal management
US7212661B2 (en) 2003-02-14 2007-05-01 Ge Medical Systems Information Technologies. Inc. Image data navigation method and apparatus
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7119716B2 (en) 2003-05-28 2006-10-10 Legalview Assets, Limited Response systems and methods for notification systems for modifying future notifications
US7739715B2 (en) 2003-06-24 2010-06-15 Microsoft Corporation Variable play speed control for media streams
US7694328B2 (en) 2003-10-21 2010-04-06 Google Inc. Systems and methods for secure client applications
US7436535B2 (en) 2003-10-24 2008-10-14 Microsoft Corporation Real-time inking
US7716273B2 (en) 2003-10-24 2010-05-11 Microsoft Corporation Systems and methods for projecting content from computing devices
US6989822B2 (en) 2003-11-10 2006-01-24 Microsoft Corporation Ink correction pad
US20080094402A1 (en) * 2003-11-19 2008-04-24 Reuven Bakalash Computing system having a parallel graphics rendering system employing multiple graphics processing pipelines (GPPLS) dynamically controlled according to time, image and object division modes of parallel operation during the run-time of graphics-based applications running on the computing system
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US7433885B2 (en) * 2003-12-15 2008-10-07 Quantum Matrix Holdings, Llc System and method for multi-dimensional organization, management, and manipulation of data
US7113779B1 (en) 2004-01-08 2006-09-26 Iwao Fujisaki Carrier
US9626655B2 (en) 2004-02-19 2017-04-18 Intellectual Ventures I Llc Method, apparatus and system for regulating electronic mail
US7647415B1 (en) * 2004-02-25 2010-01-12 Sun Microsystems, Inc. Dynamic web services stack
US20050193396A1 (en) 2004-02-27 2005-09-01 Stafford-Fraser James Q. Computer network architecture and method of providing display data
US20050256923A1 (en) 2004-05-14 2005-11-17 Citrix Systems, Inc. Methods and apparatus for displaying application output on devices having constrained system resources
WO2005114375A1 (en) 2004-05-21 2005-12-01 Computer Associates Think, Inc. Systems and methods for tracking screen updates
US7454479B2 (en) 2004-05-28 2008-11-18 Microsoft Corporation Flexible teleport architecture
US7173538B2 (en) * 2004-06-25 2007-02-06 Rm2, Inc. Apparatus, system and method for monitoring a drying procedure
US7990374B2 (en) * 2004-06-29 2011-08-02 Sensable Technologies, Inc. Apparatus and methods for haptic rendering using data in a graphics pipeline
US8127024B2 (en) * 2004-10-29 2012-02-28 Oracle International Corporation Parameter passing in web based systems
US8878851B2 (en) * 2004-11-12 2014-11-04 Synchronica Plc Method and system for streaming documents, e-mail attachments and maps to wireless devices
US20060161671A1 (en) 2005-01-14 2006-07-20 Citrix Systems, Inc. Method and systems for capture and replay of remote presentation protocol data
US8145777B2 (en) 2005-01-14 2012-03-27 Citrix Systems, Inc. Method and system for real-time seeking during playback of remote presentation protocols
US8423673B2 (en) * 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US7774830B2 (en) 2005-03-14 2010-08-10 Microsoft Corporation Access control policy engine controlling access to resource based on any of multiple received types of security tokens
US7461274B2 (en) * 2005-08-23 2008-12-02 International Business Machines Corporation Method for maximizing server utilization in a resource constrained environment
WO2007022587A1 (en) * 2005-08-26 2007-03-01 Bruce Joy Distributed 3d environment framework
US8266232B2 (en) * 2005-10-15 2012-09-11 International Business Machines Corporation Hardware processing of commands within virtual client computing environment
US7830388B1 (en) * 2006-02-07 2010-11-09 Vitie Inc. Methods and apparatus of sharing graphics data of multiple instances of interactive application
US8494661B2 (en) * 2007-12-28 2013-07-23 Server Technology, Inc. Power distribution, management, and monitoring systems and methods
US7868893B2 (en) * 2006-03-07 2011-01-11 Graphics Properties Holdings, Inc. Integration of graphical application content into the graphical scene of another application
US7619623B2 (en) 2006-04-17 2009-11-17 Microsoft Corporation Perfect multidimensional spatial hashing
US8104041B2 (en) * 2006-04-24 2012-01-24 Hewlett-Packard Development Company, L.P. Computer workload redistribution based on prediction from analysis of local resource utilization chronology data
US7502897B2 (en) 2006-06-28 2009-03-10 Intel Corporation Object based conflict detection in a software transactional memory
US8352754B2 (en) * 2006-11-15 2013-01-08 Broadcom Corporation Power management of PoE devices based on powered queue and unpowered queue of time order connection priority while maintaining reserve power
JP5095293B2 (ja) 2007-08-01 2012-12-12 東洋ゴム工業株式会社 空気入りタイヤ及びその製造方法
US8638336B2 (en) * 2007-10-20 2014-01-28 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphical data
AU2008317006A1 (en) * 2007-10-21 2009-04-30 Citrix Systems, Inc. Systems and methods to adaptively load balance user sessions to reduce energy consumption
US8006108B2 (en) * 2007-11-08 2011-08-23 International Business Machines Corporation Dynamic selection of group and device power limits
WO2009094673A2 (en) 2008-01-27 2009-07-30 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
US8521476B2 (en) * 2008-02-12 2013-08-27 Accenture Global Services Limited System for monitoring the energy efficiency of technology components
WO2009131592A1 (en) * 2008-04-21 2009-10-29 Cluster Resources, Inc. System and method for managing energy consumption in a compute environment
US9830670B2 (en) * 2008-07-10 2017-11-28 Apple Inc. Intelligent power monitoring
US8054598B1 (en) * 2009-01-16 2011-11-08 Exaflop Llc Negotiating capacity allocation among distributed current protection devices
US8255709B2 (en) * 2009-02-06 2012-08-28 Hewlett-Packard Development Company, L.P. Power budgeting for a group of computer systems using utilization feedback for manageable components
US20110010566A1 (en) * 2009-07-07 2011-01-13 International Business Machines Corporation Power management by selective authorization of elevated power states of computer system hardware devices
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
US10853808B1 (en) 2016-12-18 2020-12-01 Mark Lawrence Method and apparatus for controlled products

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742289A (en) * 1994-04-01 1998-04-21 Lucent Technologies Inc. System and method of generating compressed video graphics images
WO2003075116A2 (en) * 2002-03-01 2003-09-12 T5 Labs Ltd Centralised interactive graphical application server
CN101101505A (zh) * 2006-07-07 2008-01-09 华为技术有限公司 一种实现三维增强现实的方法及系统

Also Published As

Publication number Publication date
EP2315124B1 (en) 2020-08-05
US8405654B2 (en) 2013-03-26
EP2315123B1 (en) 2021-03-31
US20090189890A1 (en) 2009-07-30
EP2245536A2 (en) 2010-11-03
US8665265B2 (en) 2014-03-04
WO2009094673A3 (en) 2009-10-01
US20090189894A1 (en) 2009-07-30
EP2315122A3 (en) 2011-05-04
EP2315123A3 (en) 2011-05-11
EP2315122B1 (en) 2020-10-28
EP2245536B1 (en) 2018-10-24
US20090189893A1 (en) 2009-07-30
EP2315123A2 (en) 2011-04-27
US8169436B2 (en) 2012-05-01
AU2009206251A1 (en) 2009-07-30
EP2315124A3 (en) 2011-05-04
US20090189892A1 (en) 2009-07-30
CN101918921A (zh) 2010-12-15
EP2315122A2 (en) 2011-04-27
CA2700225A1 (en) 2009-07-30
US20090189891A1 (en) 2009-07-30
EP2293192A3 (en) 2011-05-04
US20120218260A1 (en) 2012-08-30
EP2315124A2 (en) 2011-04-27
US8350863B2 (en) 2013-01-08
IL205332A0 (en) 2010-12-30
EP2293192B1 (en) 2021-03-31
AU2009206251B2 (en) 2014-03-27
EP2293192A2 (en) 2011-03-09
US20130215110A1 (en) 2013-08-22
WO2009094673A2 (en) 2009-07-30

Similar Documents

Publication Publication Date Title
CN101918921B (zh) 用于远程提供三维图形的方法和系统
EP2417518B1 (en) Methods and systems for prioritizing dirty regions within an image
CN101849224B (zh) 用于远程处理三维图像数据的方法和系统
KR101640904B1 (ko) 온라인 게이밍 경험을 제공하기 위한 컴퓨터 기반 방법, 기계 판독가능 비일시적 매체 및 서버 시스템
EP2248101B1 (en) Graphics remoting architecture
US20140059538A1 (en) Virtual machine state tracking using object based storage

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131204