CN104321752B - 虚拟表面分配 - Google Patents

虚拟表面分配 Download PDF

Info

Publication number
CN104321752B
CN104321752B CN201380028075.4A CN201380028075A CN104321752B CN 104321752 B CN104321752 B CN 104321752B CN 201380028075 A CN201380028075 A CN 201380028075A CN 104321752 B CN104321752 B CN 104321752B
Authority
CN
China
Prior art keywords
virtual surface
synthesis system
computing device
video
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201380028075.4A
Other languages
English (en)
Other versions
CN104321752A (zh
Inventor
R.芬克
L.E.布兰科
J.W.普里斯特利
C.埃尔根
S.P.蒙卡尤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN104321752A publication Critical patent/CN104321752A/zh
Application granted granted Critical
Publication of CN104321752B publication Critical patent/CN104321752B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Digital Computer Display Output (AREA)

Abstract

描述了虚拟表面技术。这些技术包括更新的初始化和批处理的支持、更新和预读列表的使用、排版隔条的使用、混合和BLT操作、诸如下推以及枚举和组块之类的表面优化技术、网格使用和遮挡管理技术。

Description

虚拟表面分配
背景技术
各种各样的计算设备配置继续增长。从传统的桌面型个人计算机到移动电话、游戏控制台、机顶盒、平板计算机等等,来自这些配置中的每一个的可用的功能性可能极大地变化。
结果,针对一个配置而开发的传统的显示技术可能不再适合于另一配置。举例来说,之前用于具有大量存储器资源的设备的显示技术可能不适合具有较少资源的设备。
发明内容
描述了虚拟表面技术。这些技术包括更新的初始化和批处理的支持、更新和预读(look aside)列表的使用、排版隔条(gutter)的使用、混合和BLT操作、诸如下推以及枚举和组块之类的表面优化技术、网格使用和遮挡管理技术。
提供本发明内容来以简化的形式介绍概念的选择,这些概念在下面在具体实施方式中进一步被描述。本发明内容不意图标识所要求保护的主题的关键特征或必要特征,也不意图用作确定所要求保护的主题的范围时的辅助。
附图说明
参考附图描述具体实施方式。在这些图中,附图标记的最左边的(多个)数字标识在其中该附图标记第一次出现的图。在描述和图中的不同实例中相同的附图标记的使用可以指示类似或相同的项目。
图1是在可操作用来施行在此描述的虚拟表面技术的示例实现中的环境的图示。
图2描绘了在其中虚拟表面被调整尺寸的示例实现。
图3描绘了在其中示出应用与虚拟表面的逻辑表面之间的交互的示例实现。
图4描绘了更详细地示出图1的合成系统的示例实现。
图5图示了合成系统发起虚拟表面的操作的示例实现。
图6描绘了示出合成系统为更新准备表面的示例实现。
图7描绘了合成系统使用图6的预读列表的操作的示例实现。
图8描绘了示出合成系统采用排版隔条的操作的示例实现。
图9描绘了示出合成系统管理有效区的示例实现。
图10描绘了示出合成系统使用下推技术组合表面的操作的示例实现。
图11描绘了示出合成系统将有效区组合成新的表面的操作的示例实现。
图12描绘了示出合成系统采用网格的操作的示例实现。
图13描绘了示出合成系统关于遮挡的操作的示例实现。
图14是描绘在其中尺寸被分配用于在其中呈现数据的表面的示例实现中的过程的流程图。
图15是描绘在其中合成系统跟踪有效区的示例实现中的过程的流程图。
图16是描绘在其中采用预读列表来管理表面的示例实现中的过程的流程图。
图17是描绘在其中基于遮挡来对表面进行调整尺寸的示例实现中的过程的流程图。
图18是描绘在其中描述了牵涉从一个表面到另一个地下推有效区的压缩技术的示例实现中的过程的流程图。
图19是描绘在其中描述了牵涉将有效区组合成新的表面的压缩技术的示例实现中的过程的流程图。
图20是描绘在其中合成系统采用网格来做出对于驱动器的调用以使用该网格来呈现表面的示例实现中的过程的流程图。
图21图示了包括可以被实现为如参考图1-20所描述的任何类型的计算设备的示例设备的各种组件以实现在此描述的技术的实施例的示例系统。
具体实施方式
综述
虚拟表面可以用来分配和管理用于呈现视像的表面。这些虚拟表面例如可以用来克服硬件的限制,诸如管理大于硬件可能为呈现这些视像而分配的存储器的网页的呈现,诸如管理大的网页、沉浸式应用,等等。
在此描述了虚拟表面合成和更新技术。在一个或更多实现中,描述了管理用于呈现的表面的技术。这包括如结合图4和5而进一步描述的支持更新的初始化和批处理的技术、如结合图6和7而描述的更新和预读列表的使用、如结合图8而描述的排版隔条的使用、如结合图9而描述的混合和BLT操作、诸如如结合图10而描述的下推以及如结合图11而描述的枚举和组块之类的表面优化技术、如结合图12而描述的网格使用以及如结合图13而描述的遮挡管理技术。
在下面的讨论中,首先描述可操作用来施行在此描述的虚拟表面技术的示例环境。然后描述在该示例环境以及其他环境中可操作的示例过程。同样地,该示例环境不限于这些示例过程的性能。
示例环境
图1图示了根据一个或更多实施例、通常在100处的操作环境。环境100包括具有可以包括一个或更多处理器的处理系统104、图示为存储器106的计算机可读存储媒体的示例、操作系统108以及一个或更多应用110的计算设备102。作为示例而非限制,计算设备102可以体现为诸如桌面型计算机、便携式计算机、诸如个人数字助理(PDA)之类的手持计算机、移动电话、平板计算机等等之类的任何合适的计算设备。下面在图21中示出并描述了计算设备102的不同示例。
计算设备102还包括图示为在处理系统104上执行并且可存储在存储器106中的操作系统108。计算设备102进一步包括图示为存储在存储器106中并且在处理系统104上也可执行的应用110。操作系统108代表了计算设备102的功能性,其可以抽象供应用110使用的底层硬件和软件资源。举例来说,操作系统108可以抽象在应用110无需“知晓”如何完成显示的情况下如何将数据显示在显示设备112上的功能性。还构思了各种各样其他的示例,诸如抽象计算设备102的处理系统104和存储器106资源、网络资源,等等。
计算设备102还图示为包括合成系统114。尽管图示为操作系统108的一部分,但是合成系统114可以以各种各样的方式被实现,诸如独立模块、单独的应用、计算设备102本身的硬件的一部分(例如,SOC或ASIC),等等。合成系统114可以采用各种各样的技术来呈现视像,诸如经由一个或更多应用编程接口(API)展示供应用110用来呈现视像的功能性。
举例来说,一个这样的技术可以基于称为交换链的对象,其可以利用表示位图的缓冲器的阵列。这些缓冲器中的一个例如可以用来在任意一个时刻在显示设备112上展现数据并且因此可以称为“在屏缓冲器”或“前缓冲器”。其他缓冲器被使得对于应用110可用以用于离屏地进行光栅化并且因此可以称为“离屏缓冲器”或“后缓冲器”。
应用110可以以各种各样的方式对于显示在显示设备112上的内容做出改变。在这样的第一技术中,应用110可以重绘后缓冲器中的一个并且“翻转”内容,诸如通过使用指针而使得离屏缓冲器中的一个成为在屏缓冲器,反之亦然。
在这样的第二技术中,还可以利用不同尺寸的缓冲器。举例来说,合成系统114可以将第一缓冲器用作在屏缓冲器。合成系统114还可以将小于第一缓冲器的第二缓冲器用作离屏缓冲器。因此,当要对内容做出更新时,可以将该更新光栅化到第二缓冲器。然后可以例如使用blt将该更新拷贝到在屏缓冲器。这样,可以节约计算设备102的资源。
合成系统114还可以配置成支持虚拟表面技术。这些技术可以用来帮助应用110的开发者减少用来呈现视像的计算设备102的资源。这可以包括虚拟表面118的使用,从而使得应用110能够将视觉数据的表面分解成块片并且随后提前呈现这些块片。还构思了在其中不使用块片来如下面进一步描述的那样划分表面(例如,应用110指定尺寸)的其他实现。
虚拟表面118可以配置为一个或更多逻辑表面120的集。逻辑表面120代表了如应用110所见的单个表面并且可以与一个或更多视像相关联。逻辑表面120例如可以配置为具有固定尺寸的块片,并且多个块片可以布置在固定的格子中,尽管应当容易地显而易见的是,还构思了在其中不使用固定尺寸的块片的各种各样的其他实例。举例来说,块片的尺寸可以由希望呈现视像的应用来指定并且因此块片的尺寸在该实例中可以由应用本身来设置,其在下面的讨论中也被称为“大块”。
虚拟表面118可以用来表示比纹理所表示的区域更大的区域。举例来说,应用110可以在创建时刻指定虚拟纹理的尺寸。该尺寸建立针对虚拟表面118的边界。该表面可以与一个或多个视像相关联。在一个或更多实现中,当虚拟表面被首先初始化时,它并不被实际的分配支持。换言之,虚拟表面118在初始化时可以不“保持位”但是可以在稍后的时间点(例如在分配时)这样做。
在下面的讨论中,视像可以是指基本的合成元件。举例来说,视像可以包含供合成系统114处理的位图和关联的合成元数据。视像的位图可以与交换链(例如,对于诸如视频之类的动态内容)或图表集(atlas)表面(例如,对于半动态内容)相关联。在合成系统114所支持的单个视觉树中可以支持这两个展现模型。
对于半动态内容,图表集可以充当针对视像的位图的更新模型并且可以是指可以包括要呈现的多个层的聚合层,尽管还构思了单个层。视像及其性质操纵(例如,偏移、转换、实现,等等)以及更新视像的基于图表集的位图(开始绘制、暂停绘制、再继续绘制、终止绘制)的方法经由应用编程接口116而被展示,而图表集层尺寸、块片尺寸、位图更新的打包/压缩/管理对于应用110可以是隐藏的。
交换链是指可以诸如通过改变指针而一个接一个地“翻转”到屏幕的一系列缓冲器。相应地,翻转模式是这样的模式:通过该模式交换链技术被用来例如通过在离屏与在屏缓冲器之间的交换点的使用来使得离屏缓冲器成为在屏缓冲器。然而,blt模式是指这样的技术:其中合成系统114的运行时间发布从离屏缓冲器到在屏缓冲器的“blt”(例如,位块图像转移),其可以用来更新在屏缓冲器。
如之前所描述的,当虚拟表面118在一个或更多实现中被首先初始化时,它并不被实际的分配支持。换言之,它不“保持任何位”。一旦应用110开始更新表面,合成系统114就可以施行块片(即,合成表面对象)的分配。应用110可以经由诸如对于相应操作的开始绘制、暂停绘制、再继续绘制和终止绘制API调用之类的各种各样的操作来更新虚拟表面118。映射可以由合成系统114的内部算法确定并且在一个或更多实现中被使得对于应用110不可见。
此外,合成系统114可以经由API来展示使得应用110能够对虚拟表面118进行调整尺寸和修剪的功能性。举例来说,调整尺寸操作可以用来改变虚拟表面118的边界。这意味着新的更新和/或分配将落入新的尺寸所设置的边界内。应用110还可以使用该方法来通知合成系统114:虚拟表面118的区不再被使用(例如,不是有效的)并且因此可用于收回。如果调整尺寸导致区域缩小,则应用110不再能够通过合成系统114的管理来对新的边界之外的区做出更新。
图2描绘了在其中虚拟表面被调整尺寸的示例实现200。在所图示的示例中,分别使用第一和第二阶段202、204来示出3x3虚拟表面被调整尺寸成2x2。在第二阶段204中包含交叉阴影线的区表示作为调整尺寸操作的一部分而将被丢弃的块片。如先前所提到的,用来存储这些块片的存储器106然后可以由合成系统114收回。调整尺寸之后,在不首先对虚拟表面再次调整尺寸的情况下,应用110将不再能够对丢弃的区(即,打上交叉阴影线的区)做出更新。
此外,在一个或更多实现中,可以由合成系统114响应于操作的指示的接收来发起调整尺寸操作。举例来说,合成系统114在接收到该指示时可以实现调整尺寸更新而不等待应用调用“委托(commit)”。举例来说,应用可以调用“Resize(0, 0)”、“Resize(INT_MAX,INT_MAX)”和“Commit()”。在该示例中,应用110已经使得内容在第一次调整尺寸时被丢弃,所以第二次调整尺寸没有效果,即使它在“Commit()”之前被调用。在这种情况下,显示设备112不显示内容,因为没有内容可用于显示。
修剪操作可以用来向合成系统114描述应用110所请求的虚拟图表集的区。因此,可以施行修剪操作而不对虚拟表面118的边界进行调整尺寸。然而,它确实告知合成引擎114当前哪些逻辑表面将被分配,其示例结合下面的图而被描述。
图3描绘了在其中示出应用与虚拟表面的逻辑表面之间的交互的示例实现300。该示例还通过第一和第二阶段302、304的使用而被图示。在该示例中,在第一和第二阶段302、304两者中示出了应用的视口306。相应地,在第一阶段302,应用最初呈现通过打上交叉阴影线而示出的、在视口306内的虚拟表面(其包括15个块片)的最开始的6个块片。
当虚拟表面所表示的页面被滚动时,应用现在可以使得最后六个块片如第二阶段304中所示的那样被呈现。相应地,应用110可以调用“修剪”来指示:最后六个块片所限定的区当前正被使用并且因此内容的其余部分当前未被使用。然后,合成系统114可以选择回收原先表示最开始的6个块片的逻辑表面。
合成系统114还可以展示图1的API 116以创建和删除逻辑的(即,物理的)和虚拟的表面以及对单个的表面做出更新。合成系统114可以加强将由应用110更新的区以避免当在可更新区域的外部绘制时的外来视像。
初始化和批处理
图4描绘了更为详细地示出图1的合成系统114的示例实现400。在当今的计算世界中,用户经常发现他们自己观看且在大量和丰富的内容中导航,在任意一个时刻,显示设备并不显示全体内容。这个的示例包括复杂且动态的网页、具有一大串实况项目/照片组的现代应用视图、音乐或其他实况内容,或大的文档。
诸如触摸和基于图像捕捉的操纵之类的用户接口允许用户在平板、电话、大型TV/投影等等上跨越用户接口的众多显示而快速地滚动、摇摄和变焦缩放。在大多数情况下,全体内容的预呈现和当它动起来且改变时将它保持为最新可能过分昂贵并且实际上甚至可能不能由设备的硬件所支持。替代地,进入视口的内容的部分可以被智能地呈现和高速缓存,例如在用户操纵使它进入视口之前被推测性地提前呈现并且如前面描述的当视口移开时被从高速缓存丢弃以减少所使用的资源。
为了向用户提供所期望的响应性,合成和呈现可以由合成系统114单独地施行。这通过合成系统114合并合成引擎402、控制器404和呈现器406而被图示。在一个或更多实现中,可以异步地执行合成系统114的这些组件。这样,预呈现的内容可以由合成引擎402和响应于用户输入的控制器404进行摇摄/变焦缩放,而呈现器406继续呈现。
如之前所描述的,合成系统114可以采用一个或更多虚拟表面118。虚拟表面118的使用允许对已经呈现的内容进行高速缓存和合成。呈现器406更新和修剪虚拟表面118上的区域可以基于推测性的呈现策略而被施行,而控制器404和合成引擎402用来转换虚拟表面118。可以基于用户输入来施行该转换以基于虚拟表面118的具有所呈现的内容且在视口中的区域来生成对于用户接口的更新。合成引擎402可以配置成一次合成多个虚拟表面118和/或视像。
在一个或更多实现中,合成系统114可以配置成采用逻辑表面120作为用作针对合成的前缓冲器的固定或混合尺寸的块片。当呈现器406想要更新虚拟表面118的一部分时,呈现器406可以施行到单独的更新表面中的呈现或者直接呈现到块片表面。如果使用单独的更新表面,则当完成绘制时将内容从更新表面拷贝到这些前缓冲器块片。然后,当呈现器406将有效内容从块片修剪掉时可以释放这些块片。
然而,该实现可能导致结构的裂缝,因为已经改变的内容与过时的内容被合成在屏幕上。此外,在虚拟表面上被更新的区的块片或大块之间的接缝可能由于排版隔条和采样(例如双线性)或T型接合而被生成,以及导致过多的CPU和GPU使用以应付排版隔条、多个重叠更新和复杂的有效区。另外,由于动态内容改变或者如用户所操纵的内容,可能遭遇过多的存储器使用。对于每块片固定/混合尺寸的表面的方法,对于较大尺寸的块片来说,由于这些块片的未使用部分,可能遭遇存储器浪费;由于针对较小块片的呈现/处理更新和在合成时刻呈现它们,可能遭遇CPU/GPU浪费;以及如果使用单独的更新缓冲器,则可能遭遇从更新缓冲器到前缓冲器的CPU/GPU拷贝成本。因此,在合成系统114的实现中可以施行各种各样的考虑之间的平衡。
当操纵不适合视口的丰富和/或动态内容时,这些考虑可以包括针对用户体验质量和性能的下面的一组原则。这样的第一原则称为视觉响应性。这意味着虚拟表面118可以配置成在用户和用户操纵的“指尖”处感觉像真实的表面。这可以通过合成系统114的配置而被支持以在没有被感知到的滞后的情况下响应和跟踪操纵。呈现器406从控制器404和合成引擎402的分离可以用来以鲁棒的方式支持这一原则。
这样的第二原则牵涉视觉一致性。在该示例中,当表面被操纵并且其中的动态内容(例如动画)被更新时,显示设备112上的内容并不显示干扰用户的专心或信心的伪像。举例来说,内容可以被显示而没有接缝、可见的裂缝或损坏、用户接口的部分不滞后于它们将被附接到的其他部分,等等。
这些原则的第三个牵涉视觉完整性。如果用户接口在视觉上是完整的,则用户很少看见覆盖显示设备112的部分的填充物/占位物图案(例如,棋盘),并且如果如此,则该显示被限制到相对短的持续时间。此外,表面内容更新并不可见地滞后,然而这可能不能得到保证,例如,对于低功率设备上跨越变焦缩放级别的开放式(open-ended)的丰富内容。举例来说,呈现器406更新虚拟表面118和合成引擎402合成它越是最优和高效,呈现器406就具有越多的带宽来进一步推测性地提前呈现以实现附加的视觉完整性。
第四个原则牵涉实况表面。对于该原则,动画、视频和其他动态内容在操纵期间没有磕巴地继续播放和执行。这可以被实现,如果呈现器406实现了视觉完整性并具有实现实况表面的带宽。这可以通过虚拟表面118的高效更新和合成而被支持。
合成系统114可以配置成平衡这些原则。这样,可以实现综合的解决方案,该解决方案支持视觉正确性和一致性以及响应性以用于管理和合成虚拟表面更新使得呈现器406具有足够的带宽来确保视觉完整性和实况表面。
图5图示了合成系统114发起虚拟表面118的操作的示例实现500。该实现通过第一和第二阶段502、504的使用而被图示。在第一阶段502,应用110请求在其中呈现用户接口的表面的尺寸,其可以与一个或更多视像相关联。如之前所描述的,虚拟表面118首先被初始化(例如,被创建)使得它不被实际的分配支持,并且因此在初始化时并不“保持位”。
然后,应用110可以指定要被呈现到虚拟表面118的视像。相应地,合成引擎402可以合成由呈现器406呈现到虚拟表面118的这些视像,诸如如所图示的汽车。这可以通过使用在其中由应用指定分配的尺寸的块片或“大块”而被施行。
在第二阶段504,呈现器406可以接收指令以更新虚拟表面118的区域,诸如该表面的矩形区域。呈现器406与合成引擎402之间的接口是这样的,使得呈现器406可以跨越众多虚拟表面118而实现多个更新506(例如,其可以包括修剪指令、对视像的改变、视像的创建或移除,等等),以及转换可以将这些表面作为内容的视像上的更新。更新506的示例包括配置为光标的视像和配置为用户可选择的按钮的视像。
在实现中,可以调用“委托”操作使得多个更新506可以由呈现器406呈现,例如,成批地被更新。这样,合成系统114可以防止呈现不完整的更新。这允许呈现器406使得一致且连贯的视像由显示设备112按照视觉一致性原则显示。
此外,处理用户输入的控制器404可以基于用户操纵直接在合成引擎402上更新对于视像的转换(例如,用于摇摄或变焦缩放)而不通过呈现器406。这个方面提供了视觉响应性,即使呈现器406被占用相对长的时间段,例如为了在具有有限处理资源的瘦设备上处理动画或针对动态内容的其他状态改变和或光栅化复杂内容。
虚拟表面118的实现可以牵涉向呈现器406提供呈现器406可以呈现到其中的表面和偏移。然后,当合成引擎402已经拾取并且正在处理已经被委托给呈现器406的整批的更新时,该表面可以由合成引擎402“翻转”。这可以用来消除如果单独的更新表面被呈现器406用于呈现更新则本将被施行的拷贝操作。
翻转还允许合成引擎402确保:呈现器406在单个批次中生成(例如,经由委托操作)的更新506中的每一个使其对于显示设备112来说是一个整体。因此,合成系统114可以避免处理部分更新。
更新和预读列表
图6描绘了示出合成系统114为更新准备表面的示例实现600。合成系统114可以使用各种各样的技术来为更新准备表面。在第一情形中,合成系统114可以从应用接收分配区域以施行更新的请求,其在所图示的示例中被图示为第一矩形602。
响应于该请求,合成系统114可以分配大于所请求的区域的区域,其被示出为包括所请求的第一矩形602的第二矩形604。因此,如果随后接收到稍微不同的尺寸的更新,则这允许重用之前被分配的表面。
合成系统114例如可以维持之前由合成系统114分配的表面608的预读列表606。这可以由合成系统114用来为重用表面608和表面608的“大块”而“积蓄”存储器106。
这些表面608例如可以被维持在针对不再在使用中的表面的计算设备102的存储器106中。因此,在接收到合成系统114为更新提供表面的请求时,合成系统114可以首先检查预读列表606以确定在计算设备102的存储器106中是否有对应于该请求的任何之前所分配的表面608可用。如果是,则合成系统114可以利用这些表面从而通过不分配新的表面来改进系统的整体效率。此外,通过向表面分配如之前所描述的比所请求的更大的尺寸(例如,具有更多像素),可以提高这些表面608与随后的更新相关的可能性。
举例来说,如果在一段时间内接收到稍微不同的尺寸的更新,则这允许之前所分配的表面608的更多重用,例如当下一更新是针对宽出或高出几个像素的区域时。因此,替代分配新的表面,合成系统114可以利用之前被使得可用的表面的预读列表606来定位相关的表面。应当注意,表面的部分的修剪和其他更新也可以是可用的。
这可以通过基于经确认的批次的区而被跟踪。如果更新适合还具有其他有效内容的现有表面608的可用部分,则该表面可以被重用。这通过避免从多个不同表面进行呈现还降低了在合成侧的成本,因为每个这样的过渡招致设置成本。可以基于历史峰值使用或各种各样其他的因素来设置预读列表606的尺寸(例如,被维持在该列表中和计算设备102的存储器中的许多表面608)。
图7描绘了合成系统114使用图6的预读列表606的操作的示例实现700。该实现使用第一、第二和第三阶段702、704、706而被示出。在第一阶段702,表面708被分配以供呈现器406呈现。然后,可以给予呈现器406对于表面708的控制以施行呈现。
在该呈现期间,可以在第二阶段704分配另一表面710以用于施行更新。在该示例中,该另一个表面710被包括在显示的与正被呈现器406呈现的表面708相同的区域内。因此,当表面708正在被呈现时,表面710可以被分配和填充(例如,被绘制到)。然后,可以将该表面710传递给呈现器406以用于呈现,例如,响应于如之前所描述的委托命令。
在第三阶段706,可以接收另一更新以用于更新用户接口。在该示例中,合成系统114通过使用图6的预读列表606来确定该更新牵涉之前所分配的表面,例如,来自第一阶段702的表面708。相应地,合成系统114可以使用已经被分配的表面708来包括更新712。这样,可以使用表面708而不重新分配新的表面,从而节省计算设备102的资源。还构思了各种各样其他的示例。
排版隔条
图8描绘了示出合成系统114采用排版隔条的操作的示例实现800。在维持视觉正确性时的一个问题牵涉丢失排版隔条。举例来说,虚拟表面可以被安置或分级到亚像素偏移,诸如由于滚动等等。相应地,针对显示设备112要显示的像素的值基于相邻像素而被确定,诸如使用双线性采样。
然而,安置在更新802的边缘804上的更新802的相邻像素可能具有基于错误信息的值。举例来说,如果在更新802外部的相邻像素包含“垃圾”(例如,来自其他更新),则光栅器可以从这些像素采样并由此产生具有坏值的像素,当由显示设备112显示时其可能看起来像接缝。
应付这个的一个方式是将在可能在另一块片/团块表面806中的边缘处的像素的行或列全部拷贝到更新802的新分配的表面中的相邻像素。然而,这些附加的拷贝可以证明对于计算设备的处理资源(例如,对于计算设备102的CPU和GPU资源两者)过分地昂贵。
相应地,在一个或更多实现中,更新802的边缘与表面边缘对齐。然后使用钳制操作,其使得光栅器当采样将落在表面外部的“相邻”像素时使用在该表面边缘处的像素的值。这可以用来产生成本与视觉正确性之间的合理权衡,即使结果可能在视觉上不是完全正确,该结果对于用户看起来也相当正确。在一个或更多实现中,排版隔条本身不被更新。
在一些实例中,更新边缘可能不能与表面边缘对齐。这可能是由于大于更新的表面的分配。在这样的实例中,可以将在同一表面上的更新的边缘处的像素的行/列拷贝到相邻像素以获得与钳制行为类似的效果。
类似地,在一个或更多实现中,当被修剪和更新时,不利用可能被绘制的潜在的新像素来更新排版隔条,因为它们包含连同当前有效的像素被显示过的之前有效的像素。这支持正确性与性能之间的权衡,其在一般情况下产生最小的当被观看时妨碍用户的视觉伪像。
混合和BLT
图9描绘了示出合成系统114管理有效区的示例实现900。如之前所描述的,虚拟表面118可以包含有效的但对于更新不有效的部分。对于所图示的虚拟表面118的示例,例如,更新可以牵涉虚拟表面118中的光标而不是汽车。因此,光标可以用来限定虚拟表面118的区,该区当与虚拟表面118的其他区相对时是有效的。通过跟踪针对该虚拟表面118以及其他表面两者的这些区,合成系统114自身可以利用各种各样的优化。
举例来说,描述了将要从表面被呈现的区划分成被混合的和被BLT的两部分的技术。该技术可以用来寻址在其中更新小且在虚拟表面上得到的有效区相对复杂(例如,导致具有许多小的源表面的复杂网格)的实例。
如果表面是“预相乘”或透明的(而不是“不透明”或设置成忽略阿尔法值),则该表面被“混合”。这可以用来混合具有在其中不存在呈现器所提供的内容的、“被清除的”和/或全透明的像素的较大的矩形形状。在一些情况下,这变得比利用描画复杂形状的路径/边缘中的每一个的轮廓的复杂网格进行处理和光栅化更优。
当对于不透明表面有效区是复杂的时,该方法还可以用于排版隔条。举例来说,内部部分可以被BLT但边缘附近的像素被混合使得相邻像素被清除。因此,当光栅器从这些像素采样时可以实现精确的值。在一个或更多实现中,该技术被用于虚拟表面118的边缘而不用于块片团块与构成虚拟表面的表面之间的内部边缘。
位可以被拷贝并且部分被清除以便确保与块片尺寸对齐的团块表面被分配并且来自拥有该块片的之前的表面的内容被移入新的表面中。在一个或更多实现中,对于将由呈现器406更新的部分(例如,如图7中所示的在中间的更新矩形)并不施行这个。如果表面是不透明的,则在更新之后,可以通过“混合”而使边缘上的像素变得不透明,即在那些像素的阿尔法通道中得到完全的不透明性。
可以使用由非重叠矩形条带构成的“区”来施行拷贝、清除和变得不透明的任务中的每一个。可以使得区相交、形成联合或被减去。另外,组成区的非重叠矩形条带被枚举。这允许将各个矩形和区高效地合并成单个区并且提取最优的一组得到的矩形。例如,Win32HRGN是可以被采用来利用这些工具的GDI结构体。这些操作被用来标识将在其上进行操作(例如,清除或拷贝)的经合并和优化的各组矩形,而不是单个地按照每个块片确定做什么。这可以用来实现用于施行这些任务的CPU和GPU两者中的显著的效率,并且还允许将块片/对齐尺寸减小到相对小的值,诸如32x32或16x16,从而减少如之前所描述的浪费。
可以基于有效区的复杂度而不同地应付来自呈现器406的修剪请求。在典型的情况下,可以根据修剪请求来更新块片团块/表面的有效区。然而,如果有效区是复杂的且BLT/混合技术正在被使用,则可以施行附加的操作。举例来说,有效区的部分可以被混合成变成不透明,因为这些部分现在被定位在该区的边缘处。应付这个的另一方式是为从其移除有效部分的块片创建新的团块。然而,这些块片可以继续使得一些有效部分留下。对于这些块片来说,可以从变成不透明的现有表面拷贝留下的有效部分,并且可以清除被修剪掉的部分。当呈现器406例如由于委托操作而委托整个批次的更新时,可以委托这些新的团块。可以使用矩形条带的区来优化这个操作,尽管还构思了其他示例。
当呈现器406委托一组更新时,可以将修剪和视觉转换(例如,得到的一组块片团块/表面及其有效区)传达给合成引擎402。可以利用相应的令牌来传达这些更新,这些令牌可以由合成引擎402用来确保针对这些表面上的光栅化的任何未完成的CPU/GPU工作被完成。此时,可以使用附加的技术来进一步改进效率,其示例在下面的段落中被描述。
下推
图10描绘了示出合成系统114使用下推技术组合表面的操作的示例实现1000。在该示例中,合成系统114进行了表面分配1002以显示视像,其在图中使用斜杠(hash marks)而示出为方框。然后进行另一表面分配1004以施行更新,其示出为安置有该斜杠标记的方框的白色方框。
合成系统114通过跟踪表面的有效区,可以将分配进行组合来改进资源使用。举例来说,从多个表面的呈现可以比从单个表面的呈现更为资源密集。
在所图示的示例中,表面分配1004的有效部分被“下推”到表面分配1002中。这使用虚线方框而被图示以指示:来自表面分配1004的有效区现在被包括在表面分配1002中。在下推之后,可以释放包括更新的表面分配1004,从而使得计算设备102的存储器106的部分空闲。因此,通过利用对于被组合的表面中的一个的分配,该技术可以用来将表面进行组合而不创建新的表面分配。
举例来说,在一些实例中,合成系统114可能面对当前或之前批次的更新中的重叠的大的更新。这可能导致包括相对小的有效区的多个表面的分配。结果,合成系统114可能具有被分配的大的表面,但是相对小的有效区可能防止这些表面被释放。
然而,通过将有效区从第一表面(例如,较新较小的表面)“下推”到第二表面(例如,较旧较大的表面),可以移除来自第一表面的有效区。这准许释放第一表面,从而使得存储器空闲并且减少由合成系统114管理的表面分配的量而不牵涉附加的表面分配。这样,可以将呈现较少表面的任务分派给呈现器406,从而改进合成系统114的效率。还构思了在其中进行新表面分配的其他技术,其示例在下面的段落中被描述。
枚举和组块
图11描绘了示出合成系统114将有效区组合成新表面的操作的示例实现1100。如之前所描述的,合成系统114可以配置成跟踪表面分配的有效区,其示例被图示为具有相应的有效区的1102(1)、1102(2)和1102(n)。随着时间的推移,有效区相对于包括该区的表面的尺寸可能减小,诸如由于来自其它表面的更新等等。相应地,合成系统114可以配置为将来自表面分配1102(1)-1102(n)的有效区组合成一个或更多新的表面分配1104。
合成系统114例如可以配置成通过减少被设置为源并被呈现以用于在显示设备112上合成显示的许多表面来寻址表面分配和合成。这可以通过枚举整体虚拟表面有效区中经优化的一组矩形而被施行。然后可以为每个这样的矩形创建团块。如果这导致大量较小的矩形,则可以使用前面讨论的混合/BLT技术。这样,可以实现将由合成引擎402适当地合成的、具有已经被清除的像素的区域的较大的矩形。
当合成引擎402接收到更新批次时,例如,该引擎可以首先确定虚拟表面被“弄脏”的部分和构成将被更新的显示树的视像。这可以被施行以包括显式地计算和将来自更新和修剪的脏区传达给合成器,例如,即使底层表面或“团块”可能改变(例如,下推或重新组块),因为同一内容的有效区可能已经留存(carry over),所以没有新的脏区被生成。可以每更新/修剪操作地来显式地传达描述有效区的这些矩形。在一个或更多实现中,可以减小脏区以导致较少数目的较大的矩形从而避免在设置和执行许多较小的呈现操作时招致大的开销。完成这个的一种技术是允许最大数目的脏矩形。当遭遇新的脏矩形时,可以将这些矩形添加到列表或者与整体上导致最小面积增加的矩形相合并(例如,形成联合)。
网格
图12描绘了示出合成系统114采用网格的操作的示例实现1200。网格(例如,一大串点)可以包括多个视像,可以向GPU的驱动器做出对于这些视像的单个绘制调用。这样,可以减少向该驱动器做出的许多绘制调用,从而避免每个调用所牵涉的开销。
合成引擎402具有合成虚拟表面118的团块/表面的许多选项。举例来说,由于合成引擎402知晓每个团块的有效区,所以合成引擎402可以先跳过与将被更新的脏区不重叠的那些团块。如果包含在虚拟表面118中的视像是像素对齐的,则转化不使用前面描述的排版隔条技术来进行转换。这允许对于这些团块中的每个矩形使用简单的BLT/混合。
替代一次一个地施行这些操作,合成引擎402可以从该组矩形创建出三角形网格并且使用该网格来使得表面被呈现。举例来说,具有有效区的一组矩形1202可以由合成系统114检查。然后通过使每个矩形分裂成两个三角形可以为该组矩形生成三角形网格1204。然而,可以从这些矩形形成T型接合。T型接合可以使得三角形网格1204被光栅化而带有接缝,例如由于浮点或舍入误差。相应地,合成系统114可以替代地处理该组矩形以形成不包括T型接合的非重叠矩形的三角形网格1206。
所生成的网格可以跨越合成帧而被高速缓存并且当团块的矩形不改变时被重用。如果存在非像素对齐的转换但该转换仅包括转化,则合成引擎402仍然可以独立地为每个团块生成网格并且呈现每个团块。然而,如果存在更为复杂的转换,则合成引擎402可以处理该组矩形以避免T型接合从而确保不带接缝的正确的光栅化。
为此,每个团块可以向由合成系统114管理的网格生成器对象登记一组相应的矩形。当每个坐标被检查时,合成系统114的网格生成器功能性可以在已经登记的边缘上添加一个或更多附加的顶点。每个登记的边缘还可以具有在添加到其自身的范围中的现有顶点。结果是针对具有附加顶点的每个团块的一组矩形。然后这些矩形可以使用这些顶点而被分解成一组非重叠的三角形。因此,在非简单转换的情况下,可以使用这些生成的如三角形网格1206中所示的没有T型接合的网格来呈现这些团块。
遮挡
图13描绘了示出合成系统114关于遮挡的操作的示例实现1300。即使每个团块可以具有混合其表面的部分以及BLT其他部分的指令,对于不透明的虚拟表面来说,合成系统114也知晓每个团块上的有效且不透明的区。
对于遮挡来说,这些区可以跨越整个虚拟表面而被累积并且用于由合成引擎402进行遮挡检测。在一个或更多实现中,合成引擎402可以枚举所有登记的遮挡矩形来标识在z-序上更靠近用户的不透明视像所遮挡的部分以供显示设备112显示。
然而,通过遮挡传递将矩形分解成复杂的形状可能是昂贵的。为了确保构成区的非重叠矩形条带完全遮挡将由该整个区遮挡的矩形,合成系统114可以使用矩形包含和相交技术。
在图13的示例实现1300中示出了这样的技术的示例,其通过第一和第二阶段1302、1304而被示出。在第一阶段1302,第一和第二矩形1306、1308将由合成引擎402合成。然而,合成引擎402可以确定第一矩形1306的部分1310被第二矩形1308遮挡。
相应地,如果遮挡矩形使得整个边缘模糊,则合成引擎402可以配置成减小经核对的矩形使得结果仍然是已被减小的单个矩形。这个的示例在第二阶段1306中被示出,在第二阶段1306中第一矩形1306被减小使得它不包括被第二矩形1308遮挡的部分1310。因此,第二矩形1308的边缘可以用来限定针对第一矩形1306的新边缘,从而节约计算设备102的资源。还构思了各种各样其他的示例。
示例过程
下面的讨论描述了可以使用之前描述的系统和设备而被实现的技术。这些过程中的每一个的方面可以实现在硬件、固件或软件或其组合中。这些过程被示出为指定由一个或更多设备施行的操作且不一定限于所示用于供相应的方块施行这些操作的顺序的一组方块。在下面的讨论的部分中,将参考图1的环境100以及图2-13的系统和示例实现。
图14描绘了示例实现中的过程1400,在该示例实现中一尺寸被分配给在其中呈现数据的表面。合成系统接收分配在其中呈现一个或更多视像的表面的请求,该请求指定该表面的尺寸(方块1402)。该请求例如可以源自于开始“呈现位”的应用。在一个或更多实现中,当请求只是被接收而未被分配时表面可以已经被初始化,使得当请求被接收时该表面不“保持位”。
响应于请求的接收,合成系统分配具有大于所请求的尺寸的尺寸的表面来呈现该一个或更多视像(方块1404)。如之前所描述的,合成系统114可以配置成“积蓄存储器”以促进不再有效的被分配的表面的重用。通过使表面比应用所请求的更大,合成系统114可以提高该表面稍后将再次有用的可能性。
图15描绘了在其中合成系统跟踪有效区的示例实现中的过程1500。包括供显示设备显示的视像的表面由合成系统管理(方块1502)。这些表面例如可以配置为如之前所描述的虚拟表面。
有效区在将由显示设备显示的表面内被跟踪(方块1504)。这些表面例如可以最初配置成更新显示的一部分。然而,随着时间的推移,其他表面可以进一步更新该显示的已经被更新的部分。相应地,表面的部分可以保持对于显示有效而其他部分不有效。合成系统114可以配置成跟踪该有效性,其可以用来支持各种各样不同的功能性,诸如如在讨论中的其他地方所进一步描述的遮挡管理、表面尺寸调整、表面压缩等等。
图16描绘了在其中采用预读列表来管理表面的示例实现中的过程1600。合成系统接收分配在其中呈现一个或更多视像的表面的请求(方块1602)。如前面那样,应用110可以通过合成系统114的一个或更多API 116来将该请求作为调用。
合成系统检查预读列表以确定对应于所接收的请求并且不包括对于计算设备的显示设备进行显示有效的视像的表面当被分配在该计算设备的存储器中时是否可用(方块1604)。预读列表例如可以引用被分配在存储器中但例如由于稍后所接收的更新而不再具有有效部分的表面。
响应于所确定的表面可用的检查,使得所确定的表面可用以用于呈现该一个或更多视像(方块1606)。所确定的表面例如已经被分配了如之前所描述的比所请求的更大的尺寸并且因此与随后的更新相关。还构思了各种各样其他的示例。
图17描绘了在其中基于遮挡来对表面调整尺寸的示例实现中的过程1700。进行确定:表面的一部分将被显示设备将要显示的另一表面遮挡(方块1702)。合成引擎402例如可以确定针对表面的显示的z-序并且确定其他表面的至少部分将被呈现在该表面的部分上。
从该表面移除该部分(方块1704)。这可以以各种各样的方式而被施行,诸如通过使用其他表面的边缘来限定将被减小的该表面的边缘,从而限定该表面的至少一个新边缘。
具有被移除的部分的表面连同其他表面被呈现(方块1706)。这样,可以避免呈现从表面被移除的部分,从而节约计算设备102的资源。
图18描绘了在其中描述了牵涉从一个表面到另一个地下推有效区的压缩技术的示例实现中的过程1800。跟踪合成系统可使用来呈现一个或更多视像的多个表面的有效区(方块1802)。合成系统114例如可以确定表面的哪些部分将由显示设备显示并且哪些部分将不显示。
然后,合成系统进行确定:第一表面的第一有效区可包括在第二表面的分配内(方块1804)。第一表面例如可以配置为更新。然后可以施行随后的更新,其使得除第一有效区以外的更新的部分变得无效。
然后,第一有效区被下推以供包括为第二表面的部分(方块1806)。这可以包括将有效区的位拷贝到第二表面。在拷贝之后,然后可以释放第一表面从而节约维持单独的表面时的资源以及通过使用较少数目的表面来改进呈现操作的效率。因此,在该示例中未分配新的表面,从而节省计算设备102在进行和维持分配时的资源。还构思了其他示例,其示例描述如下。
图19描绘了在其中描述了牵涉将有效区组合成新的表面的压缩技术的示例实现中的过程1900。跟踪合成系统可使用来呈现一个或更多视像的多个表面的有效区(方块1902)。如前面那样,合成系统114可以确定多个表面的哪些部分将由显示设备显示并且哪些部分将不显示。
然后,为可使用来包括来自该多个表面的有效区的新表面计算分配(方块1904)。该新表面例如可以配置为具有供包括多个有效区的范围的矩形。然后,可以分配该新表面以包括来自多个表面的有效区(方块1906),并且然后可以将有效区拷贝到新表面,从而使得合成系统115能够使起始的表面空闲。还构思了合成系统114进行表面压缩的各种各样的其他示例。
图20描绘了在其中合成系统114采用网格来做出对于驱动器的调用以使用该网格来呈现表面的示例实现中的过程2000。网格形成自不包括T型接合的一组矩形(方块2002)。网格例如可以形成为描述被形成以避免T型接合并且因此如之前所描述的在呈现那些接合(例如,接缝)时所遭遇的复杂情况的一组三角形。做出对于驱动器的调用以使用网格来呈现表面(方块2004),诸如对于可以用来描述具有针对用户接口中的更新的有效区的多个矩形的图形功能性(例如,GPU)的驱动器的单个调用。因此,网格可以有助于避免使用对于用来形成如前面对应段落中所描述的网格的三角形的矩形中的每一个的调用。
示例系统和设备
图21图示了包括代表可以实现在此描述的各个技术的一个或更多计算系统和/或设备的示例计算设备2102的一般在2100处的示例系统。计算设备2102可以例如是服务提供方的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统和/或任何其他合适的计算设备或计算系统。计算设备2102被图示为包括图1的合成系统114。
如所图示的示例计算设备2102包括处理系统2104、一个或更多计算机可读媒体2106和彼此通信耦合的一个或更多I/O接口2108。尽管未示出,但是计算设备2102可以进一步包括系统总线或将各个组件彼此耦合的其他数据和命令转移系统。系统总线可以包括诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或使用各种各样的总线架构中的任一个的处理器或本地总线之类的不同总线结构的任意一个或组合。还构思了各种各样其他的示例,诸如控制和数据线。
处理系统2104代表使用硬件施行一个或更多操作的功能性。相应地,处理系统2104被图示为包括可以配置为处理器、功能方块等等的硬件元件2110。这可以包括如专用集成电路或使用一个或更多半导体而形成的其他逻辑器件那样的硬件中的实现。硬件元件2110不受它们从其而被形成的材料或其中所采用的处理机制的限制。举例来说,处理器可以包括(多个)半导体和/或晶体管(例如,电子集成电路(IC))。在这样的语境中,处理器可执行的指令可以是电子地可执行的指令。
计算机可读存储媒体2106被图示为包括存储器/储存器2112。存储器/储存器2112表示与一个或更多计算机可读媒体相关联的存储器/储存器容量。存储器/储存器组件2112可以包括易失性媒体(诸如随机访问存储器(RAM))和/或非易失性媒体(诸如只读存储器(ROM)、闪速存储器、光盘、磁盘,等等)。存储器/储存器组件2112可以包括固定的媒体(例如,RAM、ROM、固定硬驱动,等等)以及可移除媒体(例如,闪速存储器、可移除硬驱动、光盘,等等)。可以以如下面进一步描述的各种各样的其他方式来配置计算机可读媒体2106。
(多个)输入/输出接口2108代表允许用户向计算设备2102输入命令和信息并且还允许使用各种输入/输出设备将信息展现给用户和/或其他组件或设备的功能性。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风、扫描仪、触摸功能性(例如,配置成检测物理触摸的电容性或其他传感器)、摄像机(例如,其可以采用可见波长或诸如红外频率之类的不可见波长来识别如不牵涉触摸的手势的运动),等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备,等等。因此,可以以如下面进一步描述的各种各样的方式来配置计算设备2102以支持用户交互。
在此可以在软件、硬件元件或程序模块的一般语境中描述各个技术。通常,这样的模块包括施行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等等。如在此所使用的术语“模块”、“功能性”和“组件”通常表示软件、固件、硬件或其组合。在此所描述的技术的特征是平台独立的,意味着可以在具有各种各样的处理器的各种各样的商业计算平台上实现这些技术。
所描述的模块和技术的实现可以存储在一些形式的计算机可读媒体上或者跨越它们而被传输。计算机可读媒体可以包括可以由计算设备2102访问的各种各样的媒体。作为示例而非限制,计算机可读媒体可以包括“计算机可读存储媒体”和“计算机可读信号媒体”。
与纯粹的信号传输、载波或信号本身相比,“计算机可读存储媒体”可以是指实现信息的持久和/或非暂态存储的媒体和/或设备。因此,计算机可读存储媒体是指非信号承载媒体。计算机可读存储媒体包括诸如易失性和非易失性、可移除和非可移除的媒体之类的硬件和/或在适合于诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据之类的信息的存储的方法或技术中实现的存储设备。计算机可读存储媒体的示例可以包括但不限于RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储、硬盘、磁卡带、磁带、磁盘储存器或其他磁存储设备,或其他存储设备、有形媒体,或适于存储期望的信息并且由计算机访问的制品。
“计算机可读信号媒体”可以是指配置成诸如经由网络将指令传输到计算设备2102的硬件的信号承载介质。信号媒体通常可以体现计算机可读指令、数据结构、程序模块,或诸如载波、数据信号或其他传送机制之类的在经调制的数据信号中的其他数据。信号媒体还包括任何信息递送媒体。术语“经调制的数据信号”意指以在信号中编码信息的这样的方式使其特性中的一个或更多个被设置或改变的信号。作为示例而非限制,通信媒体包括诸如有线网络或直接连线连接之类的有线媒体和诸如声学、RF、红外和其他无线媒体之类的无线媒体。
如之前所描述的,硬件元件2110和计算机可读媒体2106代表以硬件形式实现的模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以被采用来实现在此所描述的技术的至少一些方面以使得施行一个或更多指令。硬件可以包括集成电路或片上系统的组件、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)和硅或其他硬件中的其他实现。在该语境中,硬件可以操作为施行由该硬件体现的指令和/或逻辑所限定的程序任务的处理设备以及用于存储供执行的指令的硬件,例如,之前所描述的计算机可读存储媒体。
也可以采用前面内容的组合来实现在此所描述的各个技术。相应地,软件、硬件或可执行模块可以实现为体现在一些形式的计算机可读存储媒体上的一个或更多指令和/或逻辑,和/或由一个或更多硬件元件2110实现。计算设备2102可以配置成实现对应于软件和/或硬件模块的特定指令和/或功能。相应地,作为软件由计算设备2102可执行的模块的实现可以至少部分地在硬件中完成,例如通过使用处理系统2104的计算机可读存储媒体和/或硬件元件2110。指令和/或功能可以由一个或更多制品(例如,一个或更多计算设备2102和/或处理系统2104)可执行/可操作以实现在此所描述的技术、模块和示例。
如图21中所进一步图示的,当在个人计算机(PC)、电视设备和/或移动设备上运行应用时,示例系统2100实现针对无缝用户体验的无处不在的环境。服务和应用在所有三个环境中基本上类似地运行以当使用应用、玩视频游戏、观看视频等等的同时从一个设备过渡到下一个时得到共同的用户体验。
在示例系统2100中,多个设备通过中央计算设备互连。中央计算设备对于多个设备可以是本地的或者可以被定位成远离该多个设备。在一个实施例中,中央计算设备可以是通过网络、互联网或其他数据通信链接而连接到多个设备的一个或更多服务器计算机的云。
在一个实施例中,该互连架构使得功能性能够跨越多个设备而被递送从而向该多个设备的用户提供共同且无缝的体验。多个设备中的每一个可以具有不同的物理需求和能力,并且中央计算设备使用平台来实现既是为设备量身定制的而对所有设备也是共同的、对于设备的体验的递送。在一个实施例中,创建一类目标设备并且为该通用类的设备量身定制体验。一类设备可以由这些设备的物理特征、使用类型或其他共同特性来限定。
在各个实现中,计算设备2102可以假设各种各样不同的配置,诸如供计算机2114、移动装置2116和电视2118使用。这些配置中的每一个包括可以具有通常不同的构造和能力的设备,并且因此计算设备2102可以根据不同设备类中的一个或更多而被配置。例如,计算设备2102可以实现为包括个人计算机、桌面型计算机、多屏幕计算机、膝上型计算机、网络本等等的计算机2114类设备。
计算设备2102还可以实现为包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等等之类的移动设备的移动装置2116类设备。计算设备2102还可以实现为包括具有或连接到非正式观看环境中通常较大的屏幕的设备的电视2118类设备。这些设备包括电视、机顶盒、游戏控制台等等。
在此所描述的技术可以由计算设备2102的这些各个配置支持并且不限于在此所描述的技术的特定示例。这个功能性还可以全部地或者部分地通过使用分布式系统(诸如经由如下面描述的平台2122在“云”2120上)而被实现。
云2120包括和/或代表针对资源2124的平台2122。平台2122抽象云2120的硬件(例如,服务器)和软件资源的底层功能性。资源2124可以包括当在远离计算设备2102的服务器上执行计算机处理时可以被使用的应用和/或数据。资源2124还可以包括在互联网上和/或通过诸如蜂窝或WiFi网络之类的订阅者网络而提供的服务。
平台2122可以对资源和功能进行抽象以将计算设备2102与其他计算设备相连接。平台2122还可以起到对资源的分级进行抽象的作用以提供对于所遭遇的对经由平台2122实现的资源2124的需求的对应级别的分级。相应地,在互连的设备实施例中,在此描述的功能性的实现可以分布在系统2100各处。举例来说,功能性可以在计算设备2102上以及经由对云2120的功能性进行抽象的平台2122而部分地实现。
结论
尽管已经以特定于结构特征和/或方法论行为的语言描述了本发明,但是应当理解,在所附的权利要求中限定的本发明不一定限于所描述的特定特征或行为。相反,特定特征和行为作为实现所要求保护的发明的示例形式而被公开。

Claims (7)

1.一种由计算设备实现的方法,所述方法包括:
由操作系统的合成系统部分来初始化虚拟表面而不分配在所述计算设备的物理存储器中,所述虚拟表面可由所述计算设备执行的应用用来向其呈现视像作为合成元件,所述合成元件包括用于在对应于所述应用的用户接口中显示的位图和关联的合成元数据,所述虚拟表面包括一个或多个逻辑表面的集,所述逻辑表面代表如所述应用所见的且未由所述计算设备显示的各个表面;
由所述计算设备的所述合成系统接收分配在其中呈现所述视像的所述虚拟表面的一部分的请求,所述请求指定所述虚拟表面的所述部分的尺寸;
响应于所述请求的接收,由所述合成系统在所述物理存储器中分配所述虚拟表面的所述部分以用于向其呈现所述视像,所述物理存储器的分配具有大于所述应用请求用来呈现所述视像的尺寸的尺寸;以及
响应于提供虚拟表面用于更新的请求,由所述计算设备的所述合成系统使用来自大于所述应用所请求的尺寸的所分配尺寸的所述虚拟表面的表面的至少一部分用于重用,而不是分配新的虚拟表面。
2.如权利要求1中所述的方法,其中所述请求由所述合成系统从所述应用接收。
3.如权利要求2中所述的方法,其中所述请求经由所述合成系统的一个或多个应用编程接口从所述应用接收。
4.如权利要求1中所述的方法,其中所述虚拟表面由所述合成系统维持并且包括创建、更新和删除该虚拟表面的功能性。
5.如权利要求4中所述的方法,其中所述虚拟表面包括在将所述视像显示在所述计算设备的显示设备上的请求被接收之前呈现所述视像的功能性。
6.一种计算设备,包括一个或多个模块,该一个或多个模块至少部分地实现在硬件中并且配置成实现合成系统,所述合成系统当由一个或多个处理器执行时被配置成执行操作,所述操作包括:
初始化虚拟表面而不分配在所述计算设备的物理存储器中,所述虚拟表面可由应用用来向其呈现视像作为合成元件,所述合成元件包括用于在对应于所述应用的用户接口中显示的位图和关联的合成元数据,所述虚拟表面包括一个或多个逻辑表面的集,所述逻辑表面代表如所述应用所见的且未由所述计算设备显示的各个表面;
响应于接收到分配在其中呈现所述视像的所述虚拟表面的一部分的、指定所述虚拟表面的所述部分的尺寸的请求,由所述合成系统在所述物理存储器中分配所述虚拟表面的所述部分以用于向其呈现所述视像,所述物理存储器的分配具有大于所述应用请求用来呈现所述视像的尺寸的尺寸;以及
响应于提供虚拟表面用于更新的请求,由所述计算设备的所述合成系统使用来自大于所述应用所请求的尺寸的所分配尺寸的所述虚拟表面的表面的至少一部分用于重用,而不是分配新的虚拟表面。
7.一个或多个计算机可读存储媒体,包括存储在其上的指令,响应于由计算设备进行的执行,所述指令使得该计算设备实现合成系统以施行一个或多个操作,所述操作包括:
初始化虚拟表面而不分配在所述计算设备的物理存储器中,所述虚拟表面可由应用用来向其呈现视像作为合成元件,所述合成元件包括用于在对应于所述应用的用户接口中显示的位图和关联的合成元数据,所述虚拟表面包括一个或多个逻辑表面的集,所述逻辑表面代表如所述应用所见的且未由所述计算设备显示的各个表面;
响应于接收到分配在其中呈现所述视像的所述虚拟表面的一部分的、指定所述虚拟表面的所述部分的尺寸的请求,由所述合成系统在所述物理存储器中分配所述虚拟表面的所述部分以用于向其呈现所述视像,所述物理存储器的分配具有大于所述应用请求用来呈现所述视像的尺寸的尺寸;以及
响应于提供虚拟表面用于更新的请求,由所述计算设备的所述合成系统使用来自大于所述应用所请求的尺寸的所分配尺寸的所述虚拟表面的表面的至少一部分用于重用,而不是分配新的虚拟表面。
CN201380028075.4A 2012-05-31 2013-05-17 虚拟表面分配 Active CN104321752B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/485,805 US9286122B2 (en) 2012-05-31 2012-05-31 Display techniques using virtual surface allocation
US13/485805 2012-05-31
PCT/US2013/041485 WO2013180977A1 (en) 2012-05-31 2013-05-17 Virtual surface allocation

Publications (2)

Publication Number Publication Date
CN104321752A CN104321752A (zh) 2015-01-28
CN104321752B true CN104321752B (zh) 2018-01-02

Family

ID=48538069

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380028075.4A Active CN104321752B (zh) 2012-05-31 2013-05-17 虚拟表面分配

Country Status (6)

Country Link
US (1) US9286122B2 (zh)
EP (1) EP2859447B1 (zh)
JP (1) JP6230076B2 (zh)
KR (1) KR102055467B1 (zh)
CN (1) CN104321752B (zh)
WO (1) WO2013180977A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9230517B2 (en) * 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9582848B2 (en) * 2012-12-28 2017-02-28 Apple Inc. Sprite Graphics rendering system
US20140320592A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Virtual Video Camera
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
CN108961382B (zh) * 2018-07-11 2019-11-26 腾讯科技(深圳)有限公司 一种图像渲染方法、装置和存储介质
CN110570506B (zh) * 2019-09-11 2023-09-22 珠海金山数字网络科技有限公司 一种地图资源管理方法、装置、计算设备及存储介质
US20230059021A1 (en) * 2021-08-23 2023-02-23 Jobby Inc. Portal and interface system and method

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247674A (en) * 1990-05-11 1993-09-21 Fujitsu Limited Static memory allocation system
US5801717A (en) * 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory
CN101002252A (zh) * 2003-10-23 2007-07-18 微软公司 合成桌面窗口管理器
CN101535965A (zh) * 2005-10-14 2009-09-16 塞门铁克操作公司 用于提高存储管理系统的可伸缩性和可移植性的技术
US7594093B1 (en) * 2006-10-12 2009-09-22 Foundry Networks, Inc. Virtual memory mapping for efficient memory usage

Family Cites Families (196)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5270103A (en) 1990-11-21 1993-12-14 Xerox Corporation Coated receiver sheets
EP0620520A1 (en) 1993-03-30 1994-10-19 AT&T Corp. Method for making persistent data objects having hidden pointers
US5729704A (en) * 1993-07-21 1998-03-17 Xerox Corporation User-directed method for operating on an object-based model data structure through a second contextual image
WO1995022104A1 (en) * 1994-02-14 1995-08-17 Ni-Tech Pty. Limited Use of multiple applications and allocation of memory or other resources in a gui environment
JP3346513B2 (ja) 1994-07-01 2002-11-18 ミノルタ株式会社 マップ記憶方法及びそのマップを使用する経路作成方法
AUPM701394A0 (en) 1994-07-22 1994-08-18 Monash University A graphical display system
AUPM704194A0 (en) 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Efficient methods for the evaluation of a graphical programming language
US5564002A (en) 1994-08-01 1996-10-08 International Business Machines Corporation Method and apparatus for implementing a virtual desktop through window positioning
US5588071A (en) 1994-10-26 1996-12-24 Minnesota Mining And Manufacturing Company Identifying an area of interest using histogram data arranged in predetermined sequence
US5929852A (en) * 1995-05-05 1999-07-27 Apple Computer, Inc. Encapsulated network entity reference of a network component system
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US5781195A (en) 1996-04-16 1998-07-14 Microsoft Corporation Method and system for rendering two-dimensional views of a three-dimensional surface
US5844569A (en) 1996-04-25 1998-12-01 Microsoft Corporation Display device interface including support for generalized flipping of surfaces
US5784699A (en) 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5870769A (en) 1996-06-07 1999-02-09 At&T Corp. Internet access system and method with active link status indicators
US6067093A (en) * 1996-08-14 2000-05-23 Novell, Inc. Method and apparatus for organizing objects of a network map
US5986670A (en) 1996-09-13 1999-11-16 Dries; Roberta L. Method and apparatus for producing a computer generated display that permits visualization of changes to the interior or exterior of a building structure shown in its actual environment
US6249289B1 (en) 1996-11-27 2001-06-19 Silicon Graphics, Inc. Multi-purpose high resolution distortion correction
US5918239A (en) 1997-01-21 1999-06-29 International Business Machines Corporation Deferred display of web pages corresponding to links selected by user
US6639613B1 (en) * 1997-11-21 2003-10-28 Xsides Corporation Alternate display content controller
US6191796B1 (en) 1998-01-21 2001-02-20 Sensable Technologies, Inc. Method and apparatus for generating and interfacing with rigid and deformable surfaces in a haptic virtual reality environment
US6182133B1 (en) 1998-02-06 2001-01-30 Microsoft Corporation Method and apparatus for display of information prefetching and cache status having variable visual indication based on a period of time since prefetching
US6278479B1 (en) 1998-02-24 2001-08-21 Wilson, Hewitt & Associates, Inc. Dual reality system
US6504545B1 (en) 1998-03-27 2003-01-07 Canon Kabushiki Kaisha Animated font characters
US6091422A (en) 1998-04-03 2000-07-18 Avid Technology, Inc. System for editing complex visual data providing a continuously updated rendering
US6426750B1 (en) 1998-07-14 2002-07-30 Microsoft Corporation Run-time geomorphs
US6552722B1 (en) 1998-07-17 2003-04-22 Sensable Technologies, Inc. Systems and methods for sculpting virtual objects in a haptic virtual reality environment
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US7031517B1 (en) 1998-10-02 2006-04-18 Canon Kabushiki Kaisha Method and apparatus for segmenting images
US6853385B1 (en) 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6411302B1 (en) * 1999-01-06 2002-06-25 Concise Multimedia And Communications Inc. Method and apparatus for addressing multiple frame buffers
US7013021B2 (en) 1999-03-19 2006-03-14 Digimarc Corporation Watermark detection utilizing regions with higher probability of success
US6636633B2 (en) 1999-05-03 2003-10-21 Intel Corporation Rendering of photorealistic computer graphics images
US6657645B2 (en) 1999-06-11 2003-12-02 Microsoft Corporation System, method, and computer-readable medium for displaying keyboard cues in a window
US6542160B1 (en) 1999-06-18 2003-04-01 Phoenix Technologies Ltd. Re-generating a displayed image
US6226017B1 (en) 1999-07-30 2001-05-01 Microsoft Corporation Methods and apparatus for improving read/modify/write operations
US6330003B1 (en) 1999-07-30 2001-12-11 Microsoft Corporation Transformable graphical regions
US6335765B1 (en) 1999-11-08 2002-01-01 Weather Central, Inc. Virtual presentation system and method
US6501474B1 (en) 1999-11-29 2002-12-31 Ati International Srl Method and system for efficient rendering of image component polygons
US6894698B2 (en) 2000-01-11 2005-05-17 Sun Microsystems, Inc. Recovering added precision from L-bit samples by dithering the samples prior to an averaging computation
US6850967B1 (en) 2000-02-19 2005-02-01 Hewlett-Packard Development Company, L.P. System and method for ensuring transparent sychronization of multiple applications across remote systems
US7738688B2 (en) 2000-05-03 2010-06-15 Aperio Technologies, Inc. System and method for viewing virtual slides
US6704024B2 (en) 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US6864886B1 (en) 2000-08-10 2005-03-08 Sportvision, Inc. Enhancing video using a virtual surface
JP4595228B2 (ja) 2000-08-24 2010-12-08 ソニー株式会社 受信装置および方法、送信装置および方法、記録媒体、並びに通信システム
US7756391B1 (en) 2000-09-01 2010-07-13 Matrox Electronic Systems Ltd. Real-time video editing architecture
US6900813B1 (en) 2000-10-04 2005-05-31 Ati International Srl Method and apparatus for improved graphics rendering performance
US6954218B2 (en) 2000-10-30 2005-10-11 Microsoft Corporation Method and apparatus for high-performance rendering and hit-testing of a window tree
US6762776B2 (en) 2000-11-10 2004-07-13 Microsoft Corporation Mouse input panel windows class list
US6906985B2 (en) 2001-01-25 2005-06-14 Dphi Acquisitions, Inc. Calibration of tracking error signal gain in a tracking servo system
JP4551018B2 (ja) 2001-04-05 2010-09-22 富士通株式会社 画像結合装置
US6885374B2 (en) 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
US6809745B1 (en) 2001-10-01 2004-10-26 Adobe Systems Incorporated Compositing two-dimensional and 3-dimensional images
US6904169B2 (en) 2001-11-13 2005-06-07 Nokia Corporation Method and system for improving color images
US7010755B2 (en) 2002-04-05 2006-03-07 Microsoft Corporation Virtual desktop manager
US7191163B2 (en) 2002-04-19 2007-03-13 Computer Associates Think, Inc. System and method for providing inferencing services
US6894692B2 (en) 2002-06-11 2005-05-17 Hewlett-Packard Development Company, L.P. System and method for sychronizing video data streams
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling
US7069396B2 (en) 2002-06-27 2006-06-27 Hewlett-Packard Development Company, L.P. Deferred memory allocation for application threads
US20040008212A1 (en) 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Reshaping irregularly-shaped images for improved compression
US7051040B2 (en) 2002-07-23 2006-05-23 Lightsurf Technologies, Inc. Imaging system providing dynamic viewport layering
US7130890B1 (en) 2002-09-04 2006-10-31 Hewlett-Packard Development Company, L.P. Method and system for adaptively prefetching objects from a network
JP4158462B2 (ja) 2002-09-04 2008-10-01 ソニー株式会社 画面表示処理装置及び画面表示処理方法、並びにコンピュータ・プログラム
US8961316B2 (en) 2002-12-10 2015-02-24 Ol2, Inc. System and method for improving the graphics performance of hosted applications
US7127592B2 (en) * 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
US6992675B2 (en) 2003-02-04 2006-01-31 Ati Technologies, Inc. System for displaying video on a portable device and method thereof
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US7133054B2 (en) 2004-03-17 2006-11-07 Seadragon Software, Inc. Methods and apparatus for navigating an image
US7126606B2 (en) 2003-03-27 2006-10-24 Microsoft Corporation Visual and scene graph interfaces
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
EP1465116A1 (en) 2003-03-31 2004-10-06 STMicroelectronics Limited Computer graphics
NO20031586L (no) 2003-04-08 2004-10-11 Favourite Systems As Vindussystem for datainnretning
JP3966832B2 (ja) 2003-04-28 2007-08-29 株式会社東芝 描画処理装置、及び、描画処理方法
US7215801B2 (en) 2003-06-05 2007-05-08 General Electric Company Method, system and apparatus for processing radiographic images of scanned objects
DE10326811A1 (de) 2003-06-13 2005-01-20 Siemens Ag Verfahren zur Darstellung von Grafikobjekten und Kommunikationsgerät
US7391424B2 (en) 2003-08-15 2008-06-24 Werner Gerhard Lonsing Method and apparatus for producing composite images which contain virtual objects
US7219209B2 (en) * 2003-08-29 2007-05-15 Motorola, Inc. Bus filter for memory address translation
US20050283566A1 (en) 2003-09-29 2005-12-22 Rockwell Automation Technologies, Inc. Self testing and securing ram system and method
US7949960B2 (en) 2003-09-30 2011-05-24 Sap Ag Predictive rendering of user interfaces
US7511718B2 (en) 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7369134B2 (en) * 2003-12-29 2008-05-06 Anark Corporation Methods and systems for multimedia memory management
US7313668B2 (en) * 2004-01-29 2007-12-25 Hewlett-Packard Development Company, L.P. Immediate virtual memory
US7986328B2 (en) 2004-02-26 2011-07-26 Hewlett-Packard Development Company, L.P. Graphics optimization system and method
US7342580B1 (en) 2004-04-02 2008-03-11 Pacific Data Images Llc Surface compression based on reference geometry in animation models
US7484065B2 (en) * 2004-04-20 2009-01-27 Hewlett-Packard Development Company, L.P. Selective memory allocation
US7950026B1 (en) 2004-06-24 2011-05-24 Julian Michael Urbach Virtual application execution system and method
US7830372B2 (en) * 2004-08-30 2010-11-09 Qnx Software Systems Gmbh & Co. Kg Method and system for providing transparent access to hardware graphic layers
US20060107229A1 (en) 2004-11-15 2006-05-18 Microsoft Corporation Work area transform in a graphical user interface
US7334104B2 (en) * 2004-11-20 2008-02-19 International Business Machines Corporation Satisfying memory allocation requests from memory pool or lookaside lists based on memory size requested to be allocated
GB0502844D0 (en) 2005-02-11 2005-03-16 Univ Edinburgh Storing digital content for access using a captured image
US7624354B2 (en) 2005-04-29 2009-11-24 Microsoft Corporation Efficient workspace management using content groups
US7404152B2 (en) 2005-06-03 2008-07-22 Research In Motion Limited Displaying messages on handheld devices
US20060290705A1 (en) 2005-06-24 2006-12-28 Microsoft Corporation Performing a pre-rendering pass in digital image processing
US9041744B2 (en) * 2005-07-14 2015-05-26 Telecommunication Systems, Inc. Tiled map display on a wireless device
US7681200B2 (en) 2005-07-22 2010-03-16 Microsoft Corporation Secure hardware desktop buffer composition
US20070040788A1 (en) 2005-08-17 2007-02-22 Texas Instruments, Inc. Modular Graphics Stack With Video Support
JP4305431B2 (ja) 2005-09-06 2009-07-29 ソニー株式会社 画像処理装置、マスク作成方法及びプログラム
EP1770954A1 (en) 2005-10-03 2007-04-04 Amadeus S.A.S. System and method to maintain coherence of cache contents in a multi-tier software system aimed at interfacing large databases
TWI322354B (en) 2005-10-18 2010-03-21 Via Tech Inc Method and system for deferred command issuing in a computer system
US7383393B2 (en) 2005-10-28 2008-06-03 Freescale Semiconductor, Inc. System and method for cooperative prefetching
US8255818B2 (en) 2005-11-17 2012-08-28 Oracle International Corporation System and method for providing drag and drop functionality in a communities framework
US20070121132A1 (en) * 2005-11-30 2007-05-31 Microsoft Corporation Spectral color management
JP2007157063A (ja) 2005-12-08 2007-06-21 Sony Corp 画像処理装置及び画像処理方法、並びにコンピュータ・プログラム
KR101256548B1 (ko) 2005-12-30 2013-04-19 삼성전자주식회사 영상 부호화 및 복호화 장치 및 그 방법
US8244051B2 (en) 2006-03-15 2012-08-14 Microsoft Corporation Efficient encoding of alternative graphic sets
US7880745B2 (en) 2006-06-20 2011-02-01 Via Technologies, Inc. Systems and methods for border color handling in a graphics processing unit
US7401199B2 (en) * 2006-06-28 2008-07-15 Motorola, Inc Method and system for allocating memory to an electronic device
US7733350B2 (en) 2006-06-30 2010-06-08 Microsoft Corporation Anisometric texture synthesis
US20080071559A1 (en) * 2006-09-19 2008-03-20 Juha Arrasvuori Augmented reality assisted shopping
KR101217559B1 (ko) 2006-10-27 2013-01-02 삼성전자주식회사 전력 소모를 최소화하는 그래픽스 데이터 렌더링 방법 및장치
CN101197044B (zh) 2006-12-06 2011-02-02 鸿富锦精密工业(深圳)有限公司 图像合成系统及方法
KR20080051484A (ko) 2006-12-06 2008-06-11 삼성전자주식회사 휴대단말기의 응용프로그램 인터페이스 제공 시스템 및방법
JP4860488B2 (ja) 2007-01-04 2012-01-25 ルネサスエレクトロニクス株式会社 画像表示制御装置
US20090213081A1 (en) 2007-01-10 2009-08-27 Case Jr Charlie W Portable Electronic Device Touchpad Input Controller
US8203564B2 (en) 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US20080238928A1 (en) * 2007-03-30 2008-10-02 Bimal Poddar Frame buffer compression for desktop composition
US8108799B2 (en) * 2007-03-30 2012-01-31 Microsoft Corporation Remoting of windows presentation framework based applications in a non-composed desktop
US20080285074A1 (en) 2007-04-20 2008-11-20 Global Graphics Software Limited Systems, devices, and methods for variable data printing
US7843451B2 (en) 2007-05-25 2010-11-30 Google Inc. Efficient rendering of panoramic images, and applications thereof
US7941758B2 (en) 2007-09-04 2011-05-10 Apple Inc. Animation of graphical objects
US8368692B2 (en) 2007-10-19 2013-02-05 Siemens Aktiengesellschaft Clipping geometries in ray-casting
US8462949B2 (en) 2007-11-29 2013-06-11 Oculis Labs, Inc. Method and apparatus for secure display of visual content
KR100932634B1 (ko) 2007-12-27 2009-12-21 팅크웨어(주) 증강 현실을 이용한 3차원 웹 지도 서비스 방법 및 그시스템
US20090172331A1 (en) * 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
US8555193B2 (en) 2008-01-17 2013-10-08 Google Inc. System for intelligent automated layout and management of interactive windows
US8204338B2 (en) 2008-02-14 2012-06-19 Microsoft Corporation Factoring repeated content within and among images
US7937452B2 (en) 2008-02-19 2011-05-03 Microsoft Corporation Framework for rendering plug-ins in remote access services
US8525825B2 (en) 2008-02-27 2013-09-03 Google Inc. Using image content to facilitate navigation in panoramic image data
US8010624B2 (en) 2008-03-27 2011-08-30 Amazon Technologies, Inc. Dynamic composition for image transmission
US8125495B2 (en) 2008-04-17 2012-02-28 Microsoft Corporation Displaying user interface elements having transparent effects
US8307300B1 (en) 2008-05-13 2012-11-06 Google Inc. Content resizing and caching in multi-process browser architecture
US8184120B2 (en) * 2008-05-19 2012-05-22 Siemens Aktiengesellschaft Framework for processing and rendering large volume data
JP5043748B2 (ja) 2008-05-19 2012-10-10 キヤノン株式会社 コンテンツ管理装置、コンテンツ管理装置の制御方法、プログラム及び記録媒体
US20090315900A1 (en) * 2008-06-23 2009-12-24 Microsoft Corporation Generic surface manager
US8432405B2 (en) 2008-06-26 2013-04-30 Microsoft Corporation Dynamically transitioning between hardware-accelerated and software rendering
US8176433B2 (en) * 2008-08-18 2012-05-08 International Business Machines Corporation Application window area change surveillance
WO2010030712A1 (en) * 2008-09-09 2010-03-18 Citrix Systems, Inc. Methods and systems for per pixel alpha-blending of a parent window and a portion of a background image
US20100073379A1 (en) 2008-09-24 2010-03-25 Sadan Eray Berger Method and system for rendering real-time sprites
US8176096B2 (en) * 2008-12-18 2012-05-08 Microsoft Corporation Data visualization interactivity architecture
US20100162126A1 (en) 2008-12-23 2010-06-24 Palm, Inc. Predictive cache techniques
US8161087B2 (en) 2008-12-30 2012-04-17 Sap France Displaying and manipulating virtual objects on virtual surfaces
CN102272824A (zh) 2009-01-06 2011-12-07 三菱电机株式会社 绘图层控制装置
US8448090B2 (en) 2009-01-23 2013-05-21 Hewlett-Packard Development Company, L.P. Selective plug-in activation for resource-limited platforms
US8207983B2 (en) 2009-02-18 2012-06-26 Stmicroelectronics International N.V. Overlaying videos on a display device
WO2010124397A1 (en) 2009-04-29 2010-11-04 Torch Mobile Inc. Software-based asynchronous tiled backingstore
JP4676011B2 (ja) 2009-05-15 2011-04-27 株式会社東芝 情報処理装置、表示制御方法およびプログラム
US8368707B2 (en) * 2009-05-18 2013-02-05 Apple Inc. Memory management based on automatic full-screen detection
US8368694B2 (en) 2009-06-04 2013-02-05 Autodesk, Inc Efficient rendering of multiple frame buffers with independent ray-tracing parameters
US9009612B2 (en) 2009-06-07 2015-04-14 Apple Inc. Devices, methods, and graphical user interfaces for accessibility using a touch-sensitive surface
US8896505B2 (en) 2009-06-12 2014-11-25 Global Oled Technology Llc Display with pixel arrangement
US9298345B2 (en) 2009-06-23 2016-03-29 Microsoft Technology Licensing, Llc Block view for geographic navigation
US8907941B2 (en) 2009-06-23 2014-12-09 Disney Enterprises, Inc. System and method for integrating multiple virtual rendering systems to provide an augmented reality
US8223180B2 (en) 2009-08-24 2012-07-17 Samsung Electronics Co., Ltd. Gamut mapping which takes into account pixels in adjacent areas of a display unit
JP5451285B2 (ja) 2009-09-24 2014-03-26 キヤノン株式会社 画像処理装置、画像処理方法
US9037972B2 (en) 2009-09-25 2015-05-19 Thomson Licensing Apparatus and method for grid navigation
US8832585B2 (en) 2009-09-25 2014-09-09 Apple Inc. Device, method, and graphical user interface for manipulating workspace views
US8497876B2 (en) 2009-11-02 2013-07-30 Pacific Data Images Llc Infinite complexity deep-framebuffer rendering
US8769428B2 (en) 2009-12-09 2014-07-01 Citrix Systems, Inc. Methods and systems for generating a combined display of taskbar button group entries generated on a local machine and on a remote machine
US9146884B2 (en) 2009-12-10 2015-09-29 Microsoft Technology Licensing, Llc Push pull adaptive capture
JP4818427B2 (ja) 2009-12-22 2011-11-16 株式会社東芝 情報処理装置及び画面選択方法
US20110173569A1 (en) 2010-01-13 2011-07-14 Rockmelt, Inc. Preview Functionality for Increased Browsing Speed
KR101661931B1 (ko) 2010-02-12 2016-10-10 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법
WO2011130225A2 (en) 2010-04-12 2011-10-20 Google Inc. Synthetic navigation elements for electronic documents
JP5541974B2 (ja) 2010-06-14 2014-07-09 任天堂株式会社 画像表示プログラム、装置、システムおよび方法
US8839112B2 (en) * 2010-08-10 2014-09-16 Microsoft Corporation Cloning or extending a computer desktop on a wireless display surface
US8493404B2 (en) 2010-08-24 2013-07-23 Qualcomm Incorporated Pixel rendering on display
KR101705581B1 (ko) 2010-09-30 2017-02-22 삼성전자주식회사 데이터 처리 장치 및 방법
US8860716B2 (en) 2010-10-13 2014-10-14 3D Nuri Co., Ltd. 3D image processing method and portable 3D display apparatus implementing the same
KR101174216B1 (ko) 2010-10-25 2012-08-14 엔에이치엔(주) 지역기반의 검색어를 추천하는 시스템 및 그 방법
US8799759B2 (en) 2010-12-13 2014-08-05 International Business Machines Corporation Pre-rendering web content
US10109065B2 (en) * 2011-01-25 2018-10-23 Qualcomm Incorporated Using occlusions to detect and track three-dimensional objects
US10218988B2 (en) 2011-02-23 2019-02-26 Nvidia Corporation Method and system for interpolating base and delta values of associated tiles in an image
US9077970B2 (en) 2011-02-25 2015-07-07 Adobe Systems Incorporated Independent layered content for hardware-accelerated media playback
GB201104066D0 (en) 2011-03-09 2011-04-20 Imagination Tech Ltd Compression of a tessellated primitive index list in a tile rendering system
JP2012194794A (ja) 2011-03-16 2012-10-11 Fujitsu Ltd 携帯端末及びコンテンツ表示プログラム
GB2489272B (en) 2011-03-23 2013-03-13 Toshiba Res Europ Ltd An image processing system and method
US9383917B2 (en) 2011-03-28 2016-07-05 Microsoft Technology Licensing, Llc Predictive tiling
JP5960796B2 (ja) * 2011-03-29 2016-08-02 クアルコム,インコーポレイテッド ローカルマルチユーザ共同作業のためのモジュール式のモバイル接続ピコプロジェクタ
US8438474B1 (en) 2011-04-27 2013-05-07 Google Inc. Speculative rendering during cache revalidation
US8788711B2 (en) 2011-06-14 2014-07-22 Google Inc. Redacting content and inserting hypertext transfer protocol (HTTP) error codes in place thereof
US8996987B2 (en) 2011-06-30 2015-03-31 Apple Inc. List view optimization
US8745212B2 (en) 2011-07-01 2014-06-03 Google Inc. Access to network content
US8612418B2 (en) 2011-07-14 2013-12-17 Google Inc. Mobile web browser for pre-loading web pages
US8810533B2 (en) * 2011-07-20 2014-08-19 Z124 Systems and methods for receiving gesture inputs spanning multiple input devices
US8384726B1 (en) 2011-08-31 2013-02-26 Google Inc. Selective rendering of off-screen content
US20130073670A1 (en) 2011-09-15 2013-03-21 Microsoft Corporation Geo-Migration Of User State
US8600921B2 (en) 2011-09-15 2013-12-03 Google Inc. Predicting user navigation events in a browser using directed graphs
US9229770B2 (en) 2011-09-16 2016-01-05 Skype Invoking timed iterator for executing tasks within timeout constraint without spawning new thread
US8341245B1 (en) 2011-09-26 2012-12-25 Google Inc. Content-facilitated speculative preparation and rendering
US20130093750A1 (en) 2011-10-12 2013-04-18 Google Inc. Use of banding to optimize map rendering in a three-dimensional tilt view
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247674A (en) * 1990-05-11 1993-09-21 Fujitsu Limited Static memory allocation system
US5801717A (en) * 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory
CN101002252A (zh) * 2003-10-23 2007-07-18 微软公司 合成桌面窗口管理器
CN101535965A (zh) * 2005-10-14 2009-09-16 塞门铁克操作公司 用于提高存储管理系统的可伸缩性和可移植性的技术
US7594093B1 (en) * 2006-10-12 2009-09-22 Foundry Networks, Inc. Virtual memory mapping for efficient memory usage

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A Simple Window;Miles;《http://web.archive.org/web/20200211130846/http://www.winprog.org/tutorial/simple_window.html》;20100211;全文 *
Cache(computing);Anonymous;《https://en.wikipedia.org/w/index.php?title=cache_(computing)&oldid=494478612》;20120523;全文 *
Memoization;Anonymous;《https://en.wikipedia.org/w/index.php?title=memoization&oldid=493632274》;20120521;全文 *

Also Published As

Publication number Publication date
JP2015528145A (ja) 2015-09-24
US9286122B2 (en) 2016-03-15
CN104321752A (zh) 2015-01-28
US20130321453A1 (en) 2013-12-05
WO2013180977A1 (en) 2013-12-05
JP6230076B2 (ja) 2017-11-15
EP2859447A1 (en) 2015-04-15
EP2859447B1 (en) 2020-07-08
KR20150016527A (ko) 2015-02-12
KR102055467B1 (ko) 2019-12-12

Similar Documents

Publication Publication Date Title
CN104321752B (zh) 虚拟表面分配
CN103268628B (zh) 虚拟表面渲染
CN103294473B (zh) 用于虚拟表面压实的计算机实现的方法和设备
CN103294360B (zh) 虚拟表面后备列表和沟槽
CN106062705B (zh) 跨平台渲染引擎
CN105190701B (zh) 基于原语的合成系统及方法
US20170213394A1 (en) Environmentally mapped virtualization mechanism
CN105122310A (zh) 用于基于瓦片的渲染的帧内时戳
CN105247478A (zh) 命令指令管理
US9424814B2 (en) Buffer display techniques
US9324299B2 (en) Atlasing and virtual surfaces
CN111414104B (zh) 一种电子地图局部显示方法及装置
TW201735650A (zh) 用於影像處理器之巨型輸入/輸出單元
JP2005055573A (ja) 高速表示処理装置
TW200834461A (en) Multi-layer 2D layer dynamic display method and system thereof
JP2023510164A (ja) ハイブリッドビニング
US20230342958A1 (en) Methods and apparatus to generate three dimensional (3d) point clouds based on spatiotemporal light patterns

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150615

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

Effective date of registration: 20150615

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant