CN101872293B - 用于复制传输到远程显示装置的帧缓冲区的方法和系统 - Google Patents
用于复制传输到远程显示装置的帧缓冲区的方法和系统 Download PDFInfo
- Publication number
- CN101872293B CN101872293B CN2010101521258A CN201010152125A CN101872293B CN 101872293 B CN101872293 B CN 101872293B CN 2010101521258 A CN2010101521258 A CN 2010101521258A CN 201010152125 A CN201010152125 A CN 201010152125A CN 101872293 B CN101872293 B CN 101872293B
- Authority
- CN
- China
- Prior art keywords
- frame buffer
- zone
- data structure
- subclauses
- clauses
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000000872 buffer Substances 0.000 title claims description 160
- 238000000034 method Methods 0.000 title claims description 29
- 230000005540 biological transmission Effects 0.000 title claims description 10
- 239000013598 vector Substances 0.000 claims description 14
- 238000012937 correction Methods 0.000 claims description 9
- 241001269238 Data Species 0.000 claims 1
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 238000009877 rendering Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 4
- 230000000712 assembly Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000004438 eyesight Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004310 photopic vision Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000004304 visual acuity Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/001—Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/399—Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2310/00—Command of the display device
- G09G2310/04—Partial updating of the display screen
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2350/00—Solving problems of bandwidth in display systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/04—Display device controller operating with a plurality of display units
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/18—Use of a frame buffer in a display terminal, inclusive of the display panel
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/395—Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/395—Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
- G09G5/397—Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Multimedia (AREA)
- Controls And Circuits For Display Device (AREA)
- Digital Computer Display Output (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Facsimiles In General (AREA)
Abstract
本发明涉及一种远程桌面服务器,所述远程桌面服务器包括维持次帧缓冲区的显示编码器,所述次帧缓冲区包含要被编码和传输到远程客户显示器的显示数据。所述显示编码器将更新所述次帧缓冲区中显示数据的请求提交到视频适配器驱动器,所述视频适配器驱动器有权访问主帧缓冲区,所述主帧缓冲区的显示数据根据从远程桌面服务器上运行的应用收到的绘图命令被更新。所述视频适配器驱动器利用空间数据结构跟踪位于所述主帧缓冲区的区域中的所述显示数据的改变,并且将所述主帧缓冲区的那些区域中的显示数据复制到所述次帧缓冲区中的相应区域。
Description
相关申请的交互参考
本申请涉及名称为“Method and System for Identifying DrawingPrimitives for Selective Transmission to a Remote Display”并且与本申请同一天提交的美国专利申请(律师文案号:A335),在此将其引入作为参考。
背景技术
当前的操作系统典型地包括图形绘制接口层,其通过应用来访问,以便在例如监视器的显示装置上再现绘图。图形绘制接口层为应用提供了用于绘图的应用编程接口(API),并将这些应用的绘制请求转换为一组绘制命令,然后将所述绘制命令提供到视频适配器驱动器。接下来,该视频适配器接收这些绘制命令,并将它们转换成视频适配器特有的绘图图元(primitives)并且将它们转发到视频适配器(例如图形卡、集成视频芯片组,等等)。视频适配器接收绘图图元并且立刻处理它们,或者可选择地将它们存储在供顺序执行的先进先出(FIFO)队列中,以更新视频适配器中的帧缓冲区,所述视频适配器被用来生成视频信号,并且将视频信号传送到被耦合的外部显示装置。这种图形绘制接口层的一个例子是Windows操作系统(OS)的图形设备接口(GDI),其作为可通过Windows操作系统访问的许多用户级和内核级的动态链接库来实现。
随着例如基于服务器的计算(SBC)和虚拟桌面架构(VDI)之类的技术的崛起,组织能够用宿主在数据中心里的远程桌面服务器(或在其中运行的虚拟机)上的桌面的实例取代传统的个人计算机(PC)。瘦客户端应用被安装在连接到远程桌面服务器的用户终端上,所述远程桌面服务器传送操作系统会话的图形用户界面,以在用户终端的显示设备上进行再现。这种远程桌面服务器系统的一个例子是虚拟网络计算(VNC),该虚拟网络计算利用远程帧缓冲区(RFB)协议来从远程桌面服务器向客户端传送帧缓冲区(该帧缓冲区包括有关于要被显示在屏幕上的每个像素的值)中的内容。为了减少被传送到瘦客户端应用的、与图形用户界面有关的显示数据量,远程桌面服务器可以保留帧缓冲区的第二副本,该第二副本反映了缓冲区的在前状态。这个第二副本使远程桌面服务器能够将帧缓冲区的在前状态和当前状态进行比较,以便识别显示数据的差别来进行编码(以减少网络传输带宽)并且随后通过网络传送到瘦客户端应用。
但是,复制所述帧缓冲区到这种次帧缓冲区的计算开销会显著地恶化所述远程桌面服务器的性能。例如,从支持分辨率为1920×1200以及每像素24位的色深(color depth)的帧缓冲区以每秒60次的速率连续复制数据到次帧缓冲区,将需要超过3.09Gb/s(每秒千兆位)的复制速度。
发明内容
显示数据被处理以减少它们被传输到远程客户终端时对带宽的要求。在一个实施方式中,服务器具有用于存储显示数据的主帧缓冲区(primaryframebuffer)和利用次帧缓冲区(secondary framebuffer)来传输显示数据到远程客户终端的显示编码器。在所述主帧缓冲区中围绕对显示数据的更新的边界框被识别,并且在数据结构中对应于所述边界框的条目(entry)被标记。所述数据结构的每个条目对应于主帧缓冲区中的不同区域,且所述被标记的条目还对应于所述边界框的区域。所述主帧缓冲区的区域被与所述次帧缓冲区的对应区域比较,并且包含被标记的条目的修正(trimmed)的数据结构被发布到所述显示编码器,所述被标记的条目仅用于被比较的具有差异的区域。如此,所述显示编码器能够传输所述次帧缓冲区的区域的更新的显示数据,所述区域对应于修正的数据结构中的被标记的条目。
在一个实施方式中,所述数据结构中的条目在所述发布步骤后被清除,以准备随后的将显示数据传输到所述远程终端。在另一个实施方式中,所述比较步骤中指出差异的那些区域被从所述主帧缓冲区复制到所述次帧缓冲区的对应区域中,以向所述次帧缓冲区提供被更新的显示数据。
附图说明
图1是描绘了根据本发明的一个实施方式的远程桌面服务器的方框图;
图2描绘了根据本发明的一个实施方式的“blitmap”数据结构;
图3描绘了根据本发明的一个实施方式的第二blitmap数据结构;
图4是描绘了根据本发明的一个实施方式从应用向视频适配器传送绘制请求的步骤的流程图;
图5是描绘了根据本发明的一个实施方式从视频适配器向显示编码器传送帧缓冲区数据的步骤的流程图;
图6是根据本发明的一个实施方式,描述修正blitmap数据结构的步骤的流程图;
图7表示根据本发明的一个实施方式,修正blitmap数据结构的可视例子。
具体实施方式
图1表示根据本发明的一个或多个实施方式的远程桌面服务器的方框图。远程桌面服务器100可以被构造在桌面电脑、膝上型电脑或服务器级硬件平台102,诸如x86体系结构平台。这种硬件平台可以包括CPU 104、RAM 106、网络适配器108(NIC 108),硬盘驱动器110和其他I/O设备诸如,例如但不限于,鼠标和键盘(图1中未示出)。
虚拟化软件层,在下文中也称为管理程序124,被安装在硬件平台102的上面。管理程序124支持虚拟机执行空间126,在该空间多个虚拟机(VM1281-128N)可以被同时实例化和执行。在一个实施方式中,每个VM 1281-128N支持从不同客户终端远程连接的不同用户。对于每个VM 1281-128N,管理程序124管理对应的虚拟硬件平台(即虚拟硬件平台1301-130N),所述平台包括以软件实现的仿真硬件,例如CPU 132、RAM 134、硬盘驱动器136、NIC138和视频适配器140。仿真视频适配器140分配和维持帧缓冲区142,所述帧缓冲区142是视频适配器140使用的存储器的一部分,该部分存储器保持像素值的缓冲区,视频显示(即“帧”)根据该像素值的缓冲区来刷新;以及先入先出(FIFO)缓冲区144,它是保持被用于更新帧缓冲区142的绘图图元列表的视频适配器140使用的存储器的一部分。在一个实施方式中,FIFO缓冲区144是共享的存储器缓冲区,该共享的存储器缓冲区在视频适配器140和视频适配器驱动器154之间被访问和共享。
虚拟硬件平台1301可以用作标准x86硬件结构的等价物,使得任何支持x86的操作系统,例如Microsoftx86、NetWare、FreeBSD等等,可以作为客户操作系统(OS)146被安装以执行实例化的虚拟机(例如VM 1281)的应用148。要求在显示装置上进行绘制的应用148通过由图形绘制接口层150(例如在一个实施方式中的MicrosoftGDI)所提供的API来提交绘制请求,接下来由该图形绘制接口层150将所述绘制请求转换为绘制命令,并且向设备驱动器层152中的视频适配器驱动器154传送这些绘制命令。如图1的实施方式中所示,视频适配器驱动器154分配和维持空间数据结构156,在下文中称为“blitmap”数据结构,该数据结构保持对视频适配器140的帧缓冲区142的可能改变区域的跟踪。blitmap数据结构的实现和使用的更多细节将稍后在本详述中详细说明。设备驱动器层152包括额外的设备驱动器,例如NIC驱动器158,该额外的设备驱动器与虚拟硬件平台1301中的仿真设备(例如虚拟NIC 138等等)交互,就如同该仿真设备是硬件平台102的实际物理设备一样。管理程序124通常负责取得由虚拟平台1301中的仿真设备所接收的、设备驱动器层152中的设备驱动器的请求,并且将这些请求转换成用于管理程序124的物理设备驱动器层中与硬件平台102中的真实设备通信的真实设备驱动器的对应请求。
为了将图形用户界面传送到远程客户终端的显示装置,VM 1281还包括显示编码器160,该显示编码器160与视频适配器驱动器154(例如通过API)交互,以便从帧缓冲区142获得数据,用于编码(例如减少网络传输带宽),并且随后通过NIC驱动器158(例如通过虚拟NIC 138并且最终通过物理NIC 108)传输到网络上。显示编码器160分配并且维持用于存储从帧缓冲区142所接收到的数据的次帧缓冲区162以及它本身的blitmap数据结构164(下文中被称为编码器blitmap数据结构164),用于识别次帧缓冲区162中被改变的区域。在一个实施方式中,显示编码器160连续地轮询视频适配器驱动器154(例如每秒30或60次),将帧缓冲区142中所发生的改变复制到次帧缓冲区162,以便将其传送到远程客户终端。
本领域中的普通技术人员将会认识到,用来描述图1中的虚拟化构成的各种术语、层次和分类可以被不同地称呼而不偏离它们的功能或者本发明的精神。例如,虚拟硬件平台1301-130N可以被认为是虚拟机监视器(VMM)1661-166N的一部分,该虚拟机监视器1661-166N实现了协调管理程序124和对应的VM 1281-128N之间的操作所需的虚拟系统支持。可选择地,虚拟硬件平台1301-130N可以被认为与VMM 1661-166N是分离的,而VMM 1661-166N可以被认为与管理程序124是分离的。能够用在本发明实施方式中的管理程序124的一个例子作为VMware的产品ESXTM的组件而被包括进来,其可从美国加利福尼亚州Palo Alto市的VMware公司处通过商业手段购得。还应当认识到的是,本发明的实施方式可以在例如宿主虚拟机系统的其他虚拟化计算机系统中被实践,其中管理程序在操作系统之上实现。
图2描绘了根据本发明的一个实施方式的blitmap数据结构。视频适配器驱动器154和显示编码器160这二者各自利用blitmap数据结构来跟踪帧缓冲区142和次帧缓冲区162的被改变区域。在图2的实施方式中,blitmap数据结构是二维位向量,这些位向量中的每位(本文也称为“blitmap条目”)代表了对应的缓冲区中的N×N区域。在位向量中被置位(本文也称为“被标记”的blitmap条目)的位指示在帧缓冲区的对应的N×N区域里的至少一个像素值已经在特定的时间间隔(例如由显示编码器160进行的轮询请求之间)内被改变。例如,图2描绘了帧缓冲区的64×64像素块200,这里涂黑的点代表了在特定时间间隔内已经被改变了的像素值。8×8位向量205代表了blitmap数据结构的对应blitmap条目块,这里每位(或blitmap条目)对应于像素块200中的8×8区域。在位向量205中的被置位的位(或被标记的blitmap条目)由“X”代表。例如,被标记的blitmap条目210对应于帧缓冲区区域215(其在特定时间间隔内被改变了的全部像素值被表示为黑点)。图2示出了在位向量205中其它的被标记的blitmap条目,该条目对应于帧缓冲区像素块200中具有已经被改变的(由涂黑的点示出的)像素值的区域。通过遍历与图2的205相类似的blitmap数据结构的二维位向量实施方式,能够轻易地识别在时间间隔内已经发生了改变的帧缓冲区中的N×N区域(并且还轻易地跳过了那些在时间间隔内没有发生改变的区域)。
图3描绘了根据本发明的一个实施方式的另一blitmap数据结构。在图3的实施方式中,blitmap数据结构是区域四叉树,其中该树的每一级代表了2N×2N像素块的更高分辨率位向量。图3示出了帧缓冲区的64×64像素块300,这里涂黑的点代表了在特定时间间隔内被改变的像素值。像素块先后被细分为越来越小的子象限,直到每个被改变的像素(例如涂黑的点)被包括在最小的子象限内为止。例如,在像素块300中,最小的子象限是8×8像素区域,例如区域305、310和315。较大的子象限包括16×16子象限,例如320和325,以及32×32子象限,例如330。四级区域四叉树335所代表的blitmap数据结构对应于缓冲区的64×64像素块300。如图3中所描绘的,区域四叉树335的每一级能够被实现为位向量,该位向量的位对应于像素块300中特定尺寸的子象限,根据位向量的级,尺寸的范围为从64×64到8×8。区域四叉树335中用“X”标记的节点所指示的是,在该节点对应的像素块300中的子象限内的至少一个像素值在特定时间间隔内被改变(即具有涂黑了的点)。例如,区域四叉树335的0级(64×64级)的节点300Q代表了整个64×64像素块,并且由于像素块300中的至少一个像素值被改变了,所以该节点用“X”进行标记。相反,区域四叉树335的1级(32×32级)的节点330Q代表32×32子象限330,并且因为在子象限330中没有像素值被改变,因此该节点没有被标记。相类似地,2级(16×16级)的节点320Q和325Q各自代表了16×16子象限320和325,并且因为在子象限320和325中没有像素值被改变,因此该节点没有被标记。3级(8×8级)的节点305Q、310Q和315Q各自对应于像素块300的8×8区域305、310和315,并且因此被标记。在blitmap数据结构的区域四叉树实施方式中,例如在图3的实施方式中,在区域四叉树的最低级中的每个节点(即对应于最小子象限,例如8×8像素区域)是blitmap条目。通过遍历blitmap数据结构的区域四叉树实施方式,能够轻易地识别在时间间隔内已经被改变了的帧缓冲区的8×8区域(或其他最小尺寸的子象限)。另外,由于其树形结构,还能够迅速地跳过在时间间隔内没有被改变的帧缓冲区中的大尺寸子象限。还应当认识到的是,blitmap数据结构的区域四叉树实施方式可以进一步节省由blitmap数据结构使用的存储器,这依赖于区域四叉树的特定实现。例如,无论有多少个8×8区域可能不被标记,图2的blitmap数据结构205的二维位向量实施方式都占用64位,而当较少的8×8区域被标记时,图3的区域四叉树335占用较少位。如所描绘的,blitmap数据结构205的实现利用了64位,而blitmap数据结构335则利用了33位。应当认识到的是,编码器blitmap数据结构164和驱动器blitmap数据结构156可以每个都使用各种不同的数据结构来实现,其中就包括图2和图3的那些结构,并且在任何特定实施方式中,编码器blitmap数据结构164可以使用不同于驱动器blitmap数据结构156的数据结构。
图4是描绘了根据本发明的一个实施方式,从应用向视频适配器传送绘制请求的步骤的流程图。虽然参考图1中的远程桌面服务器100的组件描述了这些步骤,应当认识到的是,被配置成以任何顺序来执行这些步骤的任何系统都是符合本发明的。
根据图4的实施方式,在步骤405中,在该步骤执行期间,应用400(即,客户OS 146上运行的应用148中的一个)访问图形绘制接口层150(例如Microsoft Windows中的GDI)的API以向屏幕提交绘制请求,例如,响应用户的动作来更新其图形用户界面。在步骤410中,通过客户OS146,图形绘制接口层150接收绘制请求并且将它们转换成视频适配器驱动器154能明白的绘制命令。在步骤415中,图形绘制接口层150将绘制命令传送到视频适配器驱动器154。在步骤420中,视频适配器驱动器154接收绘制命令并且标记驱动器blitmap数据结构156的条目,以指示帧缓冲区142区域里的像素值中的至少一部分由于执行了绘制命令而将被更新,所述像素值中的至少一部分对应于驱动器blitmap数据结构156中被标记的条目。在一个实施方式中,视频适配器驱动器154计算或者以其他方式确定帧缓冲区142内的区域,例如包围了由于执行绘制命令而将被更新的像素的最小尺寸的矩形(即,本文也被称为“边框”)。然后,视频适配器驱动器154能够识别并且标记驱动器blitmap数据结构156中的与包括了所确定区域中的像素值的帧缓冲区154的区域对应的所有blitmap条目。在步骤425中,视频适配器驱动器154将绘制命令转换为设备特有的绘图图元,并且在步骤430中,将绘图图元插入到FIFO缓冲区144里(例如在视频适配器驱动器154和视频适配器140之间共享FIFO缓冲区144的实施方式中),并相应地递增FIFO缓冲区144中的自由条目指针。在步骤435中,当FIFO缓冲区144中的绘图图元准备好被执行时,则视频适配器140最终根据它们来更新帧缓冲区142(即,当这样的绘图图元到达FIFO缓冲区144的末尾处时)。
图5是描绘了根据本发明的一个实施方式从视频适配器向显示编码器传送帧缓冲区数据的步骤的流程图。虽然参考图1中的远程桌面服务器100的组件描述了这些步骤,应当认识到的是,被配置成以任何顺序来执行这些步骤的任何系统都是符合本发明的。
根据图5的实施方式,显示编码器160是在客户OS 146上运行的进程,该进程连续地轮询(例如每秒30或60次)视频适配器驱动器154以获得视频适配器140的帧缓冲区154中的数据,以(例如通过NIC驱动器158)对该数据编码并传送到网络上,用于由远程客户终端来接收。在步骤500中,显示编码器160通过由视频适配器驱动器154公开给它的API例程,向视频适配器驱动器154发出帧缓冲区更新请求,并且将对次帧缓冲区162的存储器引用(reference)(例如指针)传给视频适配器驱动器154,使视频适配器驱动器154能够直接修改次帧缓冲区162。在步骤505中,视频适配器驱动器154接收帧缓冲区更新请求,并且在步骤510中,其遍历驱动器blitmap数据结构156以识别被标记的blitmap条目,这些blitmap条目对应于帧缓冲区142中的那些自上次来自显示编码器160的帧缓冲区更新请求(由于如图4中所描述的来自应用的绘制请求)以来已经改变的区域。如果在步骤515中,当前blitmap条目被标记,那么在步骤520中,视频适配器驱动器154请求视频适配器140的帧缓冲区142的对应区域(即该区域中的像素值)。在步骤525中,视频适配器140接收该请求,并且将帧缓冲区142的被请求区域传送到视频适配器驱动器154。
在步骤530中,视频适配器驱动器154接收帧缓冲区142的被请求区域,并且在步骤535中,将在帧缓冲区142的接受到的被请求区域中的像素值与次帧缓冲区162中对应区域的像素值进行比较,所述次帧缓冲区162反映了帧缓冲区142在视频适配器驱动器154完成了对来自显示编码器160的先前帧缓冲区更新请求的响应时的先前状态。这个比较步骤535使视频适配器驱动器154能够识别因为由如图4中所描述的应用的绘制请求的视觉冗余传输而可能导致的低效率。例如,也许是因为没有关注于优化与其功能方面相关的绘制,在图4的步骤405中,一些应用可能发出这样一些绘制请求,使得即使应用实际上仅仅修改了图形用户界面中的很小的区域,都会冗余地重新绘制它们的整个图形用户界面。这种绘制请求导致驱动器blitmap数据结构156中的条目在图4的步骤420中被标记,即使在被标记的blitmap条目的对应的帧缓冲区142区域不需要用新的像素值来更新时(即,对应于实际上没有被修改的图形用户界面的一些部分的区域)也是如此。用这些被标记blitmap条目,比较步骤535将发现,对应于被标记的blitmap条目的帧缓冲区142和次帧缓冲区162的区域是相同的,这是因为,在视频适配器驱动器154完成了对来自显示编码器160的先前帧缓冲区更新请求的响应之后,由于应用所提交(在步骤405中)的是视觉冗余的绘制请求,上述区域的像素值因而没有改变。
因此,在步骤540中,如果比较步骤535指示帧缓冲区142和次帧缓冲区162的区域是相同的,那么在步骤545中,视频适配器驱动器154通过清除被标记的blitmap条目来“修正”驱动器blitmap数据结构156,以指示自从视频适配器驱动器154完成了对来自显示编码器160的先前帧缓冲区更新请求的响应以来,在帧缓冲区142的对应区域中的实际像素值没有被改变。
图6是根据本发明的一个实施方式的表示修正blitmap数据结构的步骤的流程图。尽管所述步骤是参照图1中远程桌面服务器100的所述组件被描述的,应当认识到的是,被配置成以任何顺序来执行这些步骤的任何系统都是符合本发明的。
在步骤600中,视频适配器驱动器154接收来自图形绘制接口层150的绘图命令,并且在步骤605中,识别围绕由执行所述绘图命令所导致的所有像素值的更新的帧缓冲区142中的边界框。在步骤610中,视频适配器驱动器154标记驱动器blitmap数据结构156中的blitmap条目,所述条目对应于处于边界框中的帧缓冲区142的区域(或部分区域)。应当认识到的是,步骤605到610对应于构成图4中步骤420的子步骤。当在步骤615中从显示编码器接收到帧缓冲区更新请求时,视频适配器驱动器154在步骤620中将所述边界框中帧缓冲区142的所述区域(如在驱动器blitmap数据结构156中被标记的blitmap条目所指示的)和次帧缓冲区164的对应区域(它包含在完成视频适配器驱动器154针对所述紧接在先的帧缓冲区更新请求的响应后帧缓冲区142的状态)进行比较。在步骤625中,视频适配器驱动器154向显示编码器160发布修正的blitmap数据结构,仅仅该修正的blitmap数据结构的被标记的条目对应于步骤620中经过比较的确实存在差异的区域。在步骤630中,视频适配器驱动器154清除所有被标记的条目的驱动器blitmap数据结构154。应该认识到的是,步骤615到630通常分别对应于图5的步骤505、535、560和565。在步骤635中,显示编码器160接收所述修正的blitmap数据结构,而且在步骤640中,显示编码器160传输对应于修正的blitmap数据结构中被标记的条目的区域中的显示数据。
图7表示了修正blitmap数据结构的可视例子。图7示出了帧缓冲区142的88×72像素块700。每个被细分的块,例如705,都代表了8×8像素区域,其对应于驱动器blitmap数据结构156中的blitmap条目。如图7中所示,依照图6中的步骤600,视频适配器驱动器154已经收到关于应用的绘图请求的绘图命令,以便绘制一个如像素块700中所描绘的笑脸。但是,所述绘图命令低效地请求整个所述像素块700被重画,而不是仅仅请求绘制笑脸本身的特定像素。因此,在对应的驱动器blitmap数据结构156的11×9blitmap块710中的blitmap条目的每一个条目由视频适配器驱动器154依据图6的步骤610来标记(例如被标记的blitmap条目715)。然而,当视频适配器驱动器154接收来自显示编码器160的帧缓冲区更新请求时,如在步骤615中,视频适配器驱动器154能够修正blitmap块710,从而创建blitmap块720,以及在步骤620和625中将blitmap块710发布到显示编码器160,这是例如通过清除诸如未被标记的blitmap725的blitmap条目来实现的,在帧缓冲区142中,该blitmap条目的对应区域没有被实际改变(即不含有笑脸修改的像素),如同图5的步骤545中那样。
回到图5,然而如果在步骤540中,比较步骤535指示帧缓冲区142和次帧缓冲区162的区域不同(即自从完成了对来自显示编码器160的先前帧缓冲区更新请求的响应以来,在帧缓冲区142中的区域的实际像素值因为步骤405中应用的绘制请求而被改变),然后在步骤550中,视频适配器驱动器154将帧缓冲区142区域中的像素值复制到次帧缓冲区162的对应区域中,以在次帧缓冲区162中正确地反映在帧缓冲区142的区域中被改变的像素值。在步骤555中,如果视频适配器驱动器154没有完成遍历驱动器blitmap数据结构156,则流程返回步骤510。如果在步骤555中,视频适配器驱动器154已经完成遍历驱动器blitmap数据结构156,那么在步骤560中,视频适配器驱动器154向显示编码器160提供驱动器blitmap数据结构156的副本,所述副本成为并且在本文中被称为编码器blitmap数据结构164。就步骤545中驱动器blitmap数据结构156中的被标记的blitmap条目被清除而言,编码器blitmap数据结构164反映了次帧缓冲区162中具有实际被改变的像素值的区域的更优化的视图。在步骤565中,视频适配器驱动器154清除驱动器blitmap数据结构156中所有被标记的blitmap条目,为随后接收来自显示编码器160的帧缓冲区更新请求做准备,并且向显示编码器160指示表明视频适配器驱动器154已经完成了对步骤600中的帧缓冲区更新请求的响应。
当视频适配器驱动器154完成对步骤500中由显示编码器160发出的帧缓冲区更新请求的响应时,次帧缓冲区162含有自从完成了对来自显示编码器160的先前的帧缓冲区更新请求的响应以来、由来自应用的绘制请求(来自图4的步骤405)所造成的所有被改变的像素值,而编码器blitmap数据结构164含有指示次帧缓冲区162内的哪些区域含有这些被改变的像素值的被标记的blitmap条目。在步骤570中,利用这样的信息,显示编码器160能够遍历编码器blitmap数据结构164来找到被标记的blitmap条目,并且仅仅提取次帧缓冲区162中那些与被标记的blitmap条目对应的区域,来进行编码并且传输到远程客户端显示装置。
尽管图1描述了一个实施方式,其中显示编码器160在虚拟机1281中执行,应该认识到的是,可选实施方式可以在远程桌面服务器100的其他组件中实现显示编码器160,例如,在虚拟机监视器1661或在管理程序124中其他地方。类似地,尽管图1描述一个实施方式,其中显示编码器160和视频适配器驱动器154在与管理程序124中的虚拟视频适配器140通信的虚拟机1281中运行,应该认识到的是,这些组件可以部署在任何远程桌面服务器结构中,包括基于非虚拟机的计算结构。此外,与使显示编码器160和虚拟视频适配器140作为服务器的软件组件不同的是,可选实施方式可以利用硬件组件用于它们中的每一个或任意一个。相类似地,应当认识到的是,可选实施方式可以不要求任何虚拟视频适配器。反而在这样的可选实施方式中,例如,视频适配器驱动器154可以分配和管理帧缓冲区142和FIFO队列144本身。同样地,在可选实施方式中,视频适配器140可以没有FIFO缓冲区,例如FIFO缓冲区140,但一经收到就可以立即处理到达的绘图图元。同样应该认识到的是,本文描述的各种各样的其他数据结构和缓冲区可以被可选系统组件分配和维持。例如,在可选实施方式中,视频适配器驱动器154可以分配和维持次帧缓冲区162(以及编码器blitmap数据结构164)并且将存储器引用提供给显示编码器160,而不是使显示编码器160分配和维持次帧缓冲区162并将存储器引用传送到视频适配器驱动器154(如图5的步骤500中详细说明的)。另外,应当认识到的是,如本文所描述的由视频适配器驱动器154执行的一些功能和步骤,能够在与预先存在的或者标准的视频适配器驱动器分离的扩展部件或者组件中来实现(即显示编码器160可以与这种和视频适配器驱动器分离的扩展部件进行通信,而不是与预先存在的视频适配器驱动器本身进行通信)。相类似地,应当认识到的是,可选实施方式可以改变本文所描述的系统组件之间交换的数据量和类型,或者利用已知的优化技术。例如,在图5的步骤560中,不是复制和提供所有驱动器blitmap数据结构156作为编码器blitmap数据结构164,而是一种可选实施方式可以仅仅将驱动器亮位数据结构156的相关部分提供到显示编码器160,或者另外采用可选数据结构以将这种驱动器blitmap数据结构156的相关部分提供到显示编码器160。相类似地,应该认识到的是,高速缓存技术可以被用来优化本文的部分教导。例如,视频适配器驱动器154可以维持FIFO缓冲区144的中间高速缓存来减少计算开销,例如,在图4的步骤420期间。相类似地,不是(或除了)连续轮询视频适配器驱动器154,在可选实施方式中,在帧缓冲区142更新它的内容和/或另外从远程客户端接收帧缓冲区更新请求时,显示编码器160可以接收视频适配器驱动器154发起的回调(callback)或中断。
本文所描述的各种实施方式可以使用各种计算机实现的操作,这些操作涉及到计算机系统中存储的数据。例如,这些操作通常可以要求物理量的物理操作,但是不是必须的,这些量可以采取电或磁信号的形式,这里它们或它们的表现形式能够被存储、传输、组合、比较、或者以其他形式操作。此外,这样的操作常常以术语来称呼,例如制造、识别、确定或者比较。本文所描述的任何操作可以是有用的机器操作,所述操作形成本发明的一个或多个实施方式的一部分。另外,本发明的一个或多个实施方式还涉及用于完成这些操作的设备或装置。这些装置可以被特别地构造用于特定要求用途,或者它们可以是由计算机中所存储的计算机程序选择性地激活或配置的通用计算机。特别地,各种通用计算机可以与根据本文的教导所编写的程序一起使用,或者其可以更方便地构造更专门的装置以执行被要求的操作。
本文所描述的各种实施方式可以用其他计算机系统配置来实践,所述计算机系统配置包括手持设备、微处理器系统、基于微处理器的或可编程的消费电器、微型计算机、大型计算机,等等。
本发明的一个或多个实施方式可以被实现作为一个或多个计算机程序,或者作为一个或多个计算机程序模块,所述计算机程序或计算机程序模块在一个或多个计算机可读介质中实施。术语计算机可读介质指的是能够存储数据的任何数据存储设备,而这些数据能够随后被输入到计算机系统,计算机可读介质可以基于任何已存在或者随后开发的技术,用于使它们能够被计算机读取的方式来实施计算机程序。计算机可读介质的例子包括硬盘驱动器、网络附加存储器(NAS)、只读存储器、随机存取存储器(例如闪存设备)、CD(光盘)、CD-ROM、CD-R、或者CD-RW、DVD(数字多功能光盘)、磁带、和其他光学和非光学数据存储设备。计算机可读介质还能够分布于与计算机系统耦合的网络中,使得计算机可读代码以分布方式被存储和执行。
虽然为了清楚理解,已经以一些细节描述了本发明的一个或多个实施方式,但显而易见的是,能够在权利要求的范围内做出某些改变和修改。因此,所描述的实施方式被认为是说明性的而非限制性的,并且权利要求的范围不被限制在本文所给出的细节中,而是可以在权利要求的范围和等价形式内来修改。在权利要求中,除非在权利要求中明确说明,元件和/或步骤不暗示任何特殊操作顺序。
此外,虽然所描述的虚拟化方法通常假设虚拟机存在符合特定硬件系统的接口,但是本领域中的技术人员将认识到所描述的方法可以连同不直接对应于任何特定硬件系统的虚拟化一起来使用。根据各种实施方式,作为宿主实施方式、非宿主实施方式、或者作为倾向于使两者之间的区别模糊的实施方式实现的虚拟化系统全部都被设想到了。此外,各种虚拟化操作可以在硬件中被整个地或部分地实现。例如,硬件实现可以使用用于修改存储器访问请求的查询表,以保证非磁盘数据的安全性。
无论虚拟化的程度如何,都可能有许多变化、修改、增补、以及改进。因此,虚拟化软件能够包括执行虚拟化功能的主机、控制台、或者客户操作系统的组件。多个实例可以被提供给本文作为单个实例被描述的组件、操作或者结构。最后,各种组件、操作和数据存储之间的界限在某种程度上是任意的,并且特定操作在特定说明性配置的背景中被示出。其他的功能分配被考虑并且可以属于本发明的范围。一般来说,在示例性配置中作为分离组件出现的结构和功能可作为组合的结构或组件来实现。相类似地,作为单个组件出现的结构和功能可作为分离组件来实现。这些和其他的变化、修改、增补、以及改进可以属于所附权利要求的范围。
Claims (20)
1.一种在具有用于存储显示数据的主帧缓冲区和使用次帧缓冲区以向远程客户终端传送显示数据的显示编码器的服务器中用于准备要被传送到所述远程客户终端的显示数据的方法,所述方法包括:
识别边界框,所述边界框与所述主帧缓冲区中的显示数据的更新有关;
标记数据结构中的条目,其中所述数据结构中的每个条目对应于所述主帧缓冲区中的不同区域,并且被标记的所述条目还对应于所述边界框中的区域;
比较所述主帧缓冲区的区域和所述次帧缓冲区的对应区域;以及
将修正的数据结构发布到所述显示编码器,所述修正的数据结构包含仅仅关于具有差异的被比较的区域的被标记的条目,以便所述显示编码器传输对应于所述修正的数据结构中的被标记的条目的所述次帧缓冲区的区域中已更新的显示数据。
2.根据权利要求1所述的方法,还包括在所述发布步骤后清除所述数据结构中的所述条目的步骤。
3.根据权利要求1所述的方法,还包括从所述主帧缓冲区中将在所述比较步骤中指示了差异的区域复制到所述次帧缓冲区中的对应区域的步骤。
4.根据权利要求1所述的方法,其中所述主帧缓冲区是被虚拟视频适配器分配的存储缓冲区,所述数据结构被与所述虚拟视频适配器通信的视频适配器驱动器分配。
5.根据权利要求4所述的方法,其中所述视频适配器驱动器是在所述服务器上被实例化的虚拟机的客户操作系统的组件。
6.根据权利要求1所述的方法,其中所述数据结构是二维位向量。
7.根据权利要求1所述的方法,其中所述数据结构是区域四叉树。
8.一种在具有用于存储显示数据的主帧缓冲区和使用次帧缓冲区以向远程客户终端传送显示数据的显示编码器的服务器中用于准备要被传送到所述远程客户终端的显示数据的设备,所述设备包括:
用于识别边界框的装置,所述边界框与所述主帧缓冲区中的显示数据的更新有关;
用于标记数据结构中的条目的装置,其中所述数据结构中的每个条目对应于所述主帧缓冲区中的不同区域,并且被标记的所述条目还对应于所述边界框中的区域;
用于比较所述主帧缓冲区的区域和所述次帧缓冲区的对应区域的装置;以及
用于将修正的数据结构发布到所述显示编码器的装置,所述修正的数据结构包含仅仅关于具有差异的被比较的区域的被标记的条目,以便所述显示编码器传输对应于所述修正的数据结构中的被标记的条目的所述次帧缓冲区的区域中已更新的显示数据。
9.根据权利要求8所述的设备,还包括用于在所述发布后清除所述数据结构中的所述条目的装置。
10.根据权利要求8所述的设备,还包括从所述主帧缓冲区中将在所述比较中指示了差异的区域复制到所述次帧缓冲区中的对应区域的装置。
11.根据权利要求8所述的设备,其中所述主帧缓冲区是被虚拟视频适配器分配的存储缓冲区,所述数据结构被与所述虚拟视频适配器通信的视频适配器驱动器分配。
12.根据权利要求11所述的设备,其中所述视频适配器驱动器是在服务器上被实例化的虚拟机的客户操作系统的组件。
13.根据权利要求8所述的设备,其中所述数据结构是二维位向量。
14.根据权利要求8所述的设备,其中所述数据结构是区域四叉树。
15.一种在具有用于存储显示数据的主帧缓冲区和使用次帧缓冲区以向远程客户终端传送显示数据的显示编码器的服务器中用于准备要被传送到所述远程客户终端的显示数据的方法,所述方法包括:
接收来自所述显示编码器的更新所述次帧缓冲区的请求;
识别空间数据结构中的被标记的条目,以定位包含已更新的显示数据的所述主帧缓冲区的区域,其中所述空间数据结构的每个条目对应于所述主帧缓冲区的不同区域;
将存储在所述主帧缓冲区的被定位的所述区域中的显示数据复制到所述次帧缓冲区的对应区域;以及
清除在所述空间数据结构中的所述被标记的条目,以便所述显示编码器传输对应于所述空间数据结构中的被标记的条目的所述次帧缓冲区的区域的已更新的显示数据。
16.根据权利要求15所述的方法,其中,在所述复制步骤之前,所述次帧缓冲区包含反映完成了对来自所述显示编码器的更新所述次帧缓冲区的先前请求的响应后所述主帧缓冲区的先前状态的显示数据。
17.根据权利要求15所述的方法,还包括下列步骤:
接收绘图命令,所述绘图命令对应于在所述服务器上运行的应用提出的绘图请求;
确定由于执行所述绘图命令而要被更新的所述主帧缓冲区的范围;
标记对应于包含确定的所述范围中的显示数据的所述主帧缓冲区的区域的所述空间数据结构中的所有条目。
18.根据权利要求17所述的方法,其中确定的所述范围是矩形,所述矩形界定由于执行所述绘图命令而要被更新的所述主帧缓冲区中的所有显示数据。
19.根据权利要求15所述的方法,进一步包括在所述清除步骤前将所述空间数据结构的副本提供到所述显示编码器的步骤,其中所述显示编码器传输驻留在所述次帧缓冲区的区域中的显示数据,所述显示数据对应于所述空间数据结构的所述副本中的被标记的条目。
20.根据权利要求19所述的方法,还包括下列步骤:
在所述复制步骤之前,比较所述主帧缓冲区的被定位的所述区域与所述次帧缓冲区的匹配的区域;以及
清除所述空间数据结构中的所述被标记的条目中的每一个,所述被标记的条目对应于包含与所述次帧缓冲区的对应的匹配区域相同的显示数据的所述主帧缓冲区的被定位的区域。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/428,971 US8441494B2 (en) | 2009-04-23 | 2009-04-23 | Method and system for copying a framebuffer for transmission to a remote display |
US12/428,971 | 2009-04-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101872293A CN101872293A (zh) | 2010-10-27 |
CN101872293B true CN101872293B (zh) | 2012-07-25 |
Family
ID=42671795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101521258A Active CN101872293B (zh) | 2009-04-23 | 2010-04-21 | 用于复制传输到远程显示装置的帧缓冲区的方法和系统 |
Country Status (10)
Country | Link |
---|---|
US (1) | US8441494B2 (zh) |
EP (1) | EP2244183B1 (zh) |
JP (1) | JP5027899B2 (zh) |
KR (1) | KR101144694B1 (zh) |
CN (1) | CN101872293B (zh) |
AU (1) | AU2010201050B2 (zh) |
CA (1) | CA2697143C (zh) |
IL (1) | IL204818A (zh) |
MX (1) | MX2010004475A (zh) |
RU (1) | RU2445705C2 (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8392497B2 (en) * | 2009-11-25 | 2013-03-05 | Framehawk, LLC | Systems and algorithm for interfacing with a virtualized computing service over a network using a lightweight client |
US9146884B2 (en) * | 2009-12-10 | 2015-09-29 | Microsoft Technology Licensing, Llc | Push pull adaptive capture |
US9373152B2 (en) * | 2010-06-17 | 2016-06-21 | Thinci, Inc. | Processing of graphics data of a server system for transmission including multiple rendering passes |
US8754900B2 (en) * | 2010-06-17 | 2014-06-17 | Thinci, Inc. | Processing of graphics data of a server system for transmission |
US8442224B2 (en) * | 2010-06-28 | 2013-05-14 | Intel Corporation | Protecting video content using virtualization |
CN101977324A (zh) * | 2010-11-09 | 2011-02-16 | 青岛海信宽带多媒体技术有限公司 | 一种实现屏幕共享的方法 |
US9129123B2 (en) * | 2011-06-13 | 2015-09-08 | Lynx Software Technologies, Inc. | Systems and methods of secure domain isolation involving separation kernel features |
EP2563038A1 (en) | 2011-08-26 | 2013-02-27 | Streamtainment Systems OÜ | Method for transmitting video signals from an application on a server over an IP network to a client device |
US10031636B2 (en) * | 2011-09-08 | 2018-07-24 | Microsoft Technology Licensing, Llc | Remoting desktop displays using move regions |
US8560719B2 (en) | 2011-09-14 | 2013-10-15 | Mobitv, Inc. | Fragment server directed device fragment caching |
US9348552B2 (en) * | 2011-11-16 | 2016-05-24 | Cisco Technology, Inc. | Network appliance for transcoding or enriching virtual desktop infrastructure desktop images |
KR20130062463A (ko) | 2011-11-25 | 2013-06-13 | 한국전자통신연구원 | 다중 사용자 및 멀티 플랫폼 지원을 위한 게임 스트리밍 시스템 및 방법 |
CN103139634B (zh) * | 2011-11-30 | 2017-03-15 | 国云科技股份有限公司 | 云终端虚拟桌面视频播放方法 |
US10430036B2 (en) * | 2012-03-14 | 2019-10-01 | Tivo Solutions Inc. | Remotely configuring windows displayed on a display device |
CN103455292B (zh) * | 2012-05-28 | 2016-09-21 | 展讯通信(上海)有限公司 | 业务数据显示处理方法与装置、用户设备 |
US9798508B2 (en) * | 2012-07-16 | 2017-10-24 | Microsoft Technology Licensing, Llc | Implementing previously rendered frame buffer information in a customized GUI display |
US9213556B2 (en) | 2012-07-30 | 2015-12-15 | Vmware, Inc. | Application directed user interface remoting using video encoding techniques |
US9277237B2 (en) | 2012-07-30 | 2016-03-01 | Vmware, Inc. | User interface remoting through video encoding techniques |
US10705631B2 (en) * | 2012-11-06 | 2020-07-07 | Hewlett-Packard Development Company, L.P. | Interactive display |
CN103105131B (zh) * | 2013-01-24 | 2015-08-19 | 东莞市嘉腾仪器仪表有限公司 | 一种影像测量仪显示图像的方法 |
CN103049883A (zh) * | 2013-01-29 | 2013-04-17 | 陕西汽车集团有限责任公司 | 一种快速绘图的方法和装置 |
CN103618911B (zh) * | 2013-10-12 | 2017-02-01 | 北京视博云科技有限公司 | 一种基于视频属性信息的视频流提供方法及装置 |
GB2528870A (en) * | 2014-07-31 | 2016-02-10 | Displaylink Uk Ltd | Managing display data for display |
CN105516229B (zh) * | 2014-10-15 | 2020-02-28 | 中兴通讯股份有限公司 | 一种更新虚拟桌面的方法和装置 |
RU2602970C2 (ru) * | 2014-12-01 | 2016-11-20 | Общество С Ограниченной Ответственностью "Яндекс" | Способ организации множества объектов, содержащихся в дереве квадрантов, в односвязный список и компьютер, используемый в нем |
US10102664B1 (en) * | 2014-12-03 | 2018-10-16 | Charles Schwab & Co., Inc. | System and method for causing graphical information to be rendered |
CN106161368B (zh) | 2015-04-07 | 2020-04-14 | 阿里巴巴集团控股有限公司 | 一种用于对云应用进行远程访问的方法、装置及系统 |
US10082941B2 (en) | 2015-05-20 | 2018-09-25 | Vmware, Inc. | Optimizing window move actions for remoted applications |
US10564829B2 (en) | 2016-03-25 | 2020-02-18 | Vmware, Inc. | Optimizing window resize actions for remoted applications |
CN106227491B (zh) * | 2016-08-04 | 2019-05-14 | 浪潮电子信息产业股份有限公司 | 一种远程桌面视频播放方法、服务器、客户端及系统 |
CN109271218A (zh) * | 2017-07-17 | 2019-01-25 | 中兴通讯股份有限公司 | 一种虚拟桌面数据显示的方法及系统 |
CN107479821B (zh) * | 2017-08-28 | 2021-07-27 | 海信视像科技股份有限公司 | 一种界面绘制方法及装置 |
CN107608588B (zh) * | 2017-10-20 | 2021-11-30 | 京东方科技集团股份有限公司 | 显示层、显示方法、显示系统和操作系统 |
CN111208966B (zh) * | 2019-12-31 | 2021-07-16 | 华为技术有限公司 | 显示方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6452579B1 (en) * | 1999-03-30 | 2002-09-17 | Kabushiki Kaisha Toshiba | Display apparatus |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1003121A (en) | 1910-01-31 | 1911-09-12 | John N Oveson | Curtain-stretcher. |
US5600763A (en) * | 1994-07-21 | 1997-02-04 | Apple Computer, Inc. | Error-bounded antialiased rendering of complex scenes |
US6343313B1 (en) * | 1996-03-26 | 2002-01-29 | Pixion, Inc. | Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability |
DE19912770A1 (de) | 1999-03-22 | 2000-09-28 | Bosch Gmbh Robert | Zündsteuervorrichtung und -verfahren |
US6331855B1 (en) | 1999-04-28 | 2001-12-18 | Expertcity.Com, Inc. | Method and apparatus for providing remote access, control of remote systems and updating of display information |
US7038696B2 (en) * | 2002-01-04 | 2006-05-02 | Hewlett-Packard Development Company | Method and apparatus for implementing color graphics on a remote computer |
US7386324B2 (en) * | 2002-04-17 | 2008-06-10 | Lenovo (Singapore) Pte. Ltd. | System and method for dual path terminal connection |
US7447997B2 (en) | 2002-05-30 | 2008-11-04 | Microsoft Corporation | Reducing information transfer in screen capture series |
JP2004086550A (ja) * | 2002-08-27 | 2004-03-18 | Matsushita Electric Ind Co Ltd | 表示画面更新システム |
US20060282855A1 (en) | 2005-05-05 | 2006-12-14 | Digital Display Innovations, Llc | Multiple remote display system |
JP4878782B2 (ja) | 2005-07-05 | 2012-02-15 | シャープ株式会社 | プラズマ処理装置及びプラズマ処理方法 |
JP2007025073A (ja) * | 2005-07-13 | 2007-02-01 | Sony Corp | データ伝送方法、データ送信装置及びデータ受信装置、並びにプログラム |
US7899864B2 (en) * | 2005-11-01 | 2011-03-01 | Microsoft Corporation | Multi-user terminal services accelerator |
WO2007057053A1 (en) | 2005-11-21 | 2007-05-24 | Agilent Technologies, Inc. | Conditional updating of image data in a memory buffer |
KR20080018396A (ko) | 2006-08-24 | 2008-02-28 | 한국문화콘텐츠진흥원 | 이동통신 단말기의 디스플레이 정보를 외부 디스플레이장치에서 디스플레이하기 위한 모바일 애플리케이션 및pc 애플리케이션을 기록한 컴퓨터 판독 가능 기록매체 |
TWI349485B (en) * | 2007-06-26 | 2011-09-21 | Avermedia Tech Inc | Method and system for providing broadcast or video programs |
JP4852012B2 (ja) * | 2007-07-09 | 2012-01-11 | 株式会社東芝 | 画像を処理する装置、画像の更新を検出する方法およびプログラム |
US9184072B2 (en) | 2007-07-27 | 2015-11-10 | Mattson Technology, Inc. | Advanced multi-workpiece processing chamber |
US20090206056A1 (en) | 2008-02-14 | 2009-08-20 | Songlin Xu | Method and Apparatus for Plasma Process Performance Matching in Multiple Wafer Chambers |
US8617347B2 (en) * | 2009-08-06 | 2013-12-31 | Applied Materials, Inc. | Vacuum processing chambers incorporating a moveable flow equalizer |
-
2009
- 2009-04-23 US US12/428,971 patent/US8441494B2/en active Active
-
2010
- 2010-03-17 CA CA2697143A patent/CA2697143C/en active Active
- 2010-03-18 AU AU2010201050A patent/AU2010201050B2/en active Active
- 2010-03-28 IL IL204818A patent/IL204818A/en active IP Right Grant
- 2010-03-30 EP EP10158521.4A patent/EP2244183B1/en active Active
- 2010-04-12 RU RU2010114314/08A patent/RU2445705C2/ru active
- 2010-04-16 JP JP2010094797A patent/JP5027899B2/ja active Active
- 2010-04-21 CN CN2010101521258A patent/CN101872293B/zh active Active
- 2010-04-22 KR KR1020100037633A patent/KR101144694B1/ko active IP Right Grant
- 2010-04-23 MX MX2010004475A patent/MX2010004475A/es active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6452579B1 (en) * | 1999-03-30 | 2002-09-17 | Kabushiki Kaisha Toshiba | Display apparatus |
Also Published As
Publication number | Publication date |
---|---|
KR20100117043A (ko) | 2010-11-02 |
CA2697143A1 (en) | 2010-10-23 |
RU2445705C2 (ru) | 2012-03-20 |
US20100271379A1 (en) | 2010-10-28 |
EP2244183A2 (en) | 2010-10-27 |
AU2010201050A1 (en) | 2010-11-11 |
US8441494B2 (en) | 2013-05-14 |
EP2244183B1 (en) | 2017-09-20 |
MX2010004475A (es) | 2010-10-22 |
JP2010257454A (ja) | 2010-11-11 |
KR101144694B1 (ko) | 2012-05-24 |
EP2244183A3 (en) | 2011-06-08 |
IL204818A0 (en) | 2010-11-30 |
RU2010114314A (ru) | 2011-10-20 |
AU2010201050B2 (en) | 2012-03-29 |
JP5027899B2 (ja) | 2012-09-19 |
IL204818A (en) | 2015-07-30 |
CN101872293A (zh) | 2010-10-27 |
CA2697143C (en) | 2013-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101872293B (zh) | 用于复制传输到远程显示装置的帧缓冲区的方法和系统 | |
CN101873308B (zh) | 用于识别供选择性地传输到远程显示装置的绘图图元的方法和系统 | |
CN102239483B (zh) | 命令遥控 | |
US20100289804A1 (en) | System, mechanism, and apparatus for a customizable and extensible distributed rendering api | |
US20110047476A1 (en) | Image-based remote access system | |
US10733689B2 (en) | Data processing | |
CN113835816A (zh) | 一种虚拟机桌面显示方法、装置、设备及可读存储介质 | |
CN113613043A (zh) | 屏幕显示和图像处理方法以及嵌入式设备和云服务器 | |
CN114924819A (zh) | 水印合成方法、云桌面服务器和客户端及计算机可读存储介质 |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: California, USA Patentee after: Weirui LLC Country or region after: U.S.A. Address before: California, USA Patentee before: VMWARE, Inc. Country or region before: U.S.A. |