CN105164723A - 共享合成资源 - Google Patents
共享合成资源 Download PDFInfo
- Publication number
- CN105164723A CN105164723A CN201380076466.3A CN201380076466A CN105164723A CN 105164723 A CN105164723 A CN 105164723A CN 201380076466 A CN201380076466 A CN 201380076466A CN 105164723 A CN105164723 A CN 105164723A
- Authority
- CN
- China
- Prior art keywords
- resource
- compositing engine
- application
- sharing
- engine
- 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.)
- Granted
Links
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/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
- G09G5/006—Details of the interface to the display terminal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
- Processing Or Creating Images (AREA)
Abstract
描述了共享合成资源。在一个或多个实施方案中,全局合成系统可被配置成对于多个进程(例如,应用)进行再现。例如,全局合成系统可被配置成暴露可由进程访问的一个或多个应用编程接口(API)。API然后可被用来使得单个合成引擎对多个应用进行再现。因此,单个合成引擎可被利用来支持各种各样的功能性,诸如管理由多个进程共享的合成资源。这种共享可以以各种各样的方式执行,其可包括使用写入器/读取器范例。
Description
背景技术
在计算设备上可以再现各种各样的元素,诸如,图标、窗口、动画等等。而且,典型地,在计算设备上执行的应用的数目不断增加以及每个应用典型提供的元素数目也不断增加,诸如,以便提供附加功能性和更丰富的用户体验。
然而,元素的这种增加会消耗计算设备的大量资源,诸如处理器、存储器、图形硬件和其他资源。因此,这种消耗也会对应用其本身的执行、计算设备对用户的响应性等等造成影响。
发明内容
描述了共享合成资源。在一个或多个实施方案中,全局合成系统可被配置成对于多个进程(例如,应用)进行再现。例如,全局合成系统可被配置成暴露进程可访问的一个或多个应用编程接口(API)。API然后可用来使得单个合成引擎执行对于多个应用的再现。因此,单个合成引擎可被利用来支持各种各样的功能性,诸如管理由多个进程进行的共享合成资源。这种共享可以以各种各样的方式执行,这些方式包括使用写入器/读取器范例。
本概要被提供来以简化的形式介绍概念的选择,这些概念还将在下面的详细说明中进行描述。本概要既不打算确认所要求保护的主题的关键特征或必要特征,其也不打算用来帮助确定所要求保护的主题的范围。
附图说明
详细描述是参照附图描述的。在图中,参考数字的最左面的(一个或者多个)数字标识该参考数字首次出现的图。在描述和图中的不同实例中的相同参考数字的使用可以指示类似的或相同的项目。
图1是在可操作实施全局合成系统的示例性实施方案中的环境的图示。
图2图示了一个示例性系统,其中全局合成系统被更详细地图示为包括图1的合成引擎以及用户模式库和目标数据库模块。
图3描绘了被配置为可被合成引擎消耗来再现元素的全局合成树的图表的一个例子。
图4图示了一个示例性系统,其中全局合成系统被更详细地图示为支持共享的合成资源。
图5描绘了被配置为包括用于通过写入器和读取器进程相关联地实施的可共享视觉资源的合成树的图。
图6是描绘了单个合成引擎管理对共享合成资源的访问的示例性实施方案中的过程的流程图。
图7图示了包括如参照图1描述的计算设备的示例性系统。
图8图示了如参照图1-7描述的用来实施本文描述的技术的实施例的可被实施为任何类型的计算设备的示例性设备的各种部件。
具体实施方式
概述
由计算设备用来再现元素的传统技术采用了分布式系统,在其中每个进程被指派对应的合成引擎。因为这一点,不同的合成引擎不知道其他合成引擎正在执行什么处理。这会导致冗余、元素的不必要的再现等等,这可能会阻碍实施传统技术的计算设备的效率,并且因此可能会使得这些传统技术不适合于由“薄”计算设备使用。
本文描述了全局合成技术和共享合成资源。这些技术包括可由多个不同进程经由一个或多个API访问的单个合成引擎的使用。因此,可以使得合成引擎“知道”由各种进程正在作出何种贡献,以及那些元素如何相关。这个知识然后可被利用来改进应用的元素再现的效率。在一个或多个实施方案中,合成引擎与属于那些应用的线程异步运行,这允许应用使得内容在其窗口内动画化,以及使用不同的再现技术来使得这样的内容光栅化。附加地,来自系统中的每个进程的合成数据可以在单个图(例如,全局合成树)中被管理,所述单个图允许合成引擎执行全局优化(诸如遮挡检测)并且以高效和安全的方式混合和匹配来自多个进程的内容。
这也可以被利用来在进程之间共享合成资源。例如,第一进程可以创建可以与第二进程共享的合成资源,诸如,浮动、颜色、动画触发、变换、视觉件(visual)、或其他视觉属性。这样,不同的进程可以共享合成资源。例如,写入器/读取器范例然后可以由合成引擎实施,在所述合成引擎中,写入器进程具有修改共享合成资源属性的权限,而读取器进程具有规定要被再现的元素的权限。这样,读取器进程可以规定“什么”元素要被再现,而写入器进程可以规定元素要“如何”被再现,而这两种进程的任一进程都不知道由另一进程所规定了什么内容。这样,每个进程的执行可以从另一进程的执行中进行抽象,而准许共享合成资源。这些和其他技术的进一步讨论可以相关于以下的图而找到。
在以下的讨论中,首先描述可以利用本文所描述的技术的示例性组合环境。接着是共享合成资源的章节,其描述了可在示例性合成系统以及其他系统中被实施的进程之间的合成资源的共享。然后描述了可以在示例性环境以及其他环境中执行的示例性过程。因此,示例性过程的性能、合成资源的共享、和示例性环境不限于另外描述的实施方案的每个实施方案,那些实施方案是可利用本文描述的技术的多个不同实施方案的例子。
示例性合成环境
图1是在可操作利用本文描述的技术的示例性实施方案中的环境100的图示。所图示的环境100包括计算设备102,其经由网络106通信地耦合到web服务104。计算设备102以及可实施web服务104的计算设备可以以各种各样的方式被配置。
例如,计算设备可被配置成能够通过网络106进行通信的计算机,诸如台式计算机、移动站、娱乐电器、通信耦合到显示设备的机顶盒、无线电话、游戏控制台等等。因此,计算设备102的范围可以从具有大量存储器和处理器资源的完全资源设备(例如,个人计算机、游戏控制台)到只具有有限存储器和/或处理资源的低资源设备(例如,传统机顶盒、手持式游戏控制台)。附加地,虽然示出了单个计算设备102,但计算设备102可以表示多个不同设备,诸如由企业(business)利用以诸如通过网络服务104执行操作的多个服务器、遥控器和机顶盒组合、被配置来捕获手势的图像捕获设备和游戏控制台等等。
虽然网络106被图示为互联网,但网络可以假设为多种多样的配置。例如,网络106可包括广域网(WAN)、局域网(LAN)、无线网、公共电话网、内部网等等。而且,虽然示出了单个网络106,但网络106可被配置成包括多个网络。
计算设备102还被图示为包括操作系统108。操作系统108被配置成把计算设备102的基础功能性抽象为在计算设备102上可执行的应用110。例如,操作系统108可以将计算设备102的处理、存储器、网络、和/或显示功能性进行抽象,以使得应用110(其可包括单个或多个进程)可被写入,而不用知道这个基础功能性是“如何”实施的。例如,应用110可以把要被显示设备112再现和显示的数据提供给操作系统108,而不用理解这个再现将被如何执行。
操作系统108还可以表示各种各样的其他功能性,诸如管理文件系统与可由计算设备102的用户导航的用户界面。其例子被图示为在计算设备102的显示设备112上显示的桌面。
操作系统108还被图示为包括全局合成系统114。全局合成系统114可以表示包括直接合成部件的系统,所述直接合成部件被配置成允许应用110使用单个合成引擎116(此后也称为全局合成引擎116)来在显示设备112上绘制项目。虽然被图示为操作系统108的一部分,但全局合成系统114可以以各种各样的其他方式实施,诸如作为浏览器的一部分、作为独立模块等等。而且,全局合成系统114可以是通过网络116分布的,其例子被图示为在web服务104上包括全局合成系统118。
用户体验(例如,对于应用110生成的用户界面)可包括可以互相交互大量元素,诸如窗口、动画(例如,文本滚动)等等。例如,第一窗口可以对应于电子邮件应用,而第二窗口122可以对应于如在显示设备112上图示的浏览器。因此,众多不同的再现部件可以在任何一个特定时间点被涉及。附加地,这些不同元素可以具有不同的刷新率,诸如连同视频和静态文本的“自动收报机(ticker)”显示的动画。
全局合成系统114可被利用来将这个功能性抽象化,以使得不同的应用110可以卸载这种再现,并且因此不知道这种再现是如何执行的。例如,应用110(其在本讨论中是进程的例子)可以提供描述要被再现的元素、元素放置、和元素如何互相关连的数据。
附加地,全局合成系统114可以支持“独立的”动画。应用110例如可以传送动画的声明(declaration)描述,其描述动画是如何被再现的。例如,所述描述可以描述什么内容正在被动画化、重绘(redraw)发生的速率、动画开始的位置、动画要移动的曲线、动画的结束位置、动画被再现的时间量等等。
这种再现然后可以在不需要进一步指令的情况下由全局合成系统114执行和继续进行。这样,动画的再现是与调用方(例如,应用110)无关的,以使得丧失与应用110的通信、应用110的不一致的处理等等不会对动画的再现有影响。由此,这可被用来通过减少由应用110进行的通信数量来再现动画而改进动画的“平滑性”和“流畅性”以及计算设备102的资源(以及甚至网络106在下面进一步描述)。
传统上,由计算设备102执行的每个应用110与对应的合成引擎交互,以执行处理和再现对于相应应用的显示。因此,传统的合成引擎常常“按每个进程”来实施。因此,传统技术都可能涉及在任何一个时间处的多个不同合成引擎。附加地,传统的合成引擎典型地“不知道”由其他合成引擎执行的再现。这可能会导致计算设备102的资源的低效使用,诸如打开一个窗口,即使它是被另一个窗口遮挡的,这会导致计算设备102的处理器、图形处理器、存储器和其他资源的不必要使用。
在一个或多个实施方案中,全局合成系统114遵循全局结构体系,以使得多个应用110可以例如经由应用编程接口而访问合成引擎116。例如,单个合成引擎116可以负责整个桌面和来自当前正在被执行的应用110的元素。因此,单个合成引擎116可以“知道”对于多个应用要被再现的不同元素,并因此作出反应,以及管理这些进程的互相交互,诸如支持共享合成资源,如下面在对应的章节中进一步描述的。
继续前面的例子,合成引擎116可以知道:应用的元素(例如,窗口)将被要对另一个应用再现的元素(例如,另一个窗口)遮挡。如图1所示,例如,应用可以具有要在对应于邮件应用的窗口120后面再现一个窗口。以前,即使在应用的对应窗口对于计算设备102的用户是不可见的,但该窗口仍旧被再现。然而,合成引擎116可以使用现有技术来跳过被遮挡的窗口的再现,由此,节省计算设备102的资源,并且因此支持在“薄”计算设备上的使用。
全局合成系统114可被用来提供多种多样的功能性。如前所述,全局合成系统114可以执行关于哪些内容要被多个应用110再现的全局分析,并高效地确定哪些元素要被绘制,诸如在元素的再现可被跳过的遮挡情形下,如前所描述的。附加地,资源可以被全局合成系统114集中,诸如用来由多个应用110共享中间存储器,而代替可由传统的合成引擎消耗(既被引擎本身消耗又被正在由引擎绘制的内容消耗)的分段存储器。
全局合成系统114还可以支持安全技术。例如,全局合成系统114可被利用来绘制受保护的视频,诸如加密的电影和对应的许可。对于传统的合成引擎而言,应用合成内容,并且然后把内容传递到对应的合成引擎。这可能导致内容在不具有保护的情况下“被用明码(intheclear)传递”(例如,传递未压缩的视频帧),并且因此内容可被暴露给恶意方。
然而,在本文描述的一个或多个实施方案中,内容可被提供给全局合成系统114,以及可以在不可由应用110直接触摸的保护区域内执行。因此,没有进一步传送内容的合成引擎116的信任度可被用来保护该内容。例如,可以依赖于合成引擎来生成用于再现的像素,而不把那些像素暴露给由计算设备102执行的应用。因此,这种“单向流”可以帮助确保错误的应用(例如,来自恶意实体)不会接收到未被保护的内容。
而且,传统的合成引擎和对应的应用“拥有”显示设备112的屏幕的特定部分。因此,某些显示技术难以使用这些传统的技术进行支持。一个这样的技术是对于多个应用透明,因为显示设备112的区域可以被一个或另一个传统的合成引擎拥有,但无法被二者同时拥有。例如,显示设备112的特定区域可以涉及来自至少两个不同应用和其对应的传统合成引擎的窗口。传统上,为了支持诸如透明度之类的技术,窗口的每个实例被绘制到存储器,并且然后把效果应用到其组合,这个组合是资源密集的。
然而,因为全局合成系统114可以知道不同的窗口并因此进行反应,所以可以达到期望的结果,而不用事先单独地将窗口绘制到存储器并且然后把视觉效果应用到窗口。例如,全局合成系统114可以利用描述要被再现的元素的单个层级树,并且因此“知晓”元素是如何相关的。所以,全局合成系统114可以在不通过使用传统技术执行的中间步骤的情况下直接绘制到计算设备102的存储器。因此,这些技术可以被由于存储器和/或处理限制而不能利用传统合成引擎的“薄”计算设备所采用。
附加地,传统合成引擎通常被异步地执行,以支持不同应用的不同再现速率。虽然这确实支持了功能性以使得规定了与一个组合相关联的应用的再现不影响由另一个应用规定的再现,但这可能会导致计算设备102资源的低效使用。
而且,被指派给不同传统合成引擎的优先级可能对传统合成引擎以及相关联的应用造成错误。例如,传统合成引擎可以被给予对于由计算设备102的处理器的执行的相对高的优先级。然而,可能出现其中合成引擎诸如为了支持多个动画而消耗大量资源的实例。因为这一点,合成引擎以及应用其本身可能不具有在面对这样的资源密集任务时可按打算用于执行的足够资源。
在一个或多个实施方案中,合成引擎116可被指派高优先级,例如,相对于被指派给由计算设备102执行的其他线程的优先级而言,可以给合成引擎116指派高的线程优先级。全局合成系统114然后可以管理来自不同资源的元素如何由合成引擎116再现的优先级,该合成引擎116被给予高优先级以保证所述再现发生。例如,全局合成系统114可以管理哪些元素被更新,这种更新发生的频率(例如,从60Hz切换到30Hz)等等。因此,全局合成系统114可以帮助促进计算设备102的资源针对其他使用的可用性,诸如提供用于再现的元素的应用110。
图2图示了示例性系统200,其中全局合成系统114更详细地被图示为包括图1的合成引擎116以及用户模式库202和对象数据库模块204。用户模式库202支持各种各样的API206、208,其被图示为由相应的应用进程210、212使用,以与对象数据库模块204和合成引擎116交互。进程210、212可以对应于单个应用、多个应用等等。合成引擎116在这个示例性系统200中被图示为在其本身的进程214内执行。
多个分布式合成引擎的传统使用互相保护将引擎的执行与计算设备的应用免受彼此的影响。例如,如果第一应用失败,则耦合到第一应用的第一传统合成引擎也可能失败。然而,由于传统合成引擎缺乏彼此的“知识”,因而耦合到不同传统合成引擎的第二合成引擎被所述失败保护。
在一个或多个实施方案中,全局合成系统114可以采用技术来保护免受由提供用于再现的元素的应用110对合成引擎116的状态的损坏。一个这样的技术是采用在操作系统108的内核216内的合成引擎116。因此,合成引擎116可以“信任”也在内核216中执行的其他部件。
这样,全局合成系统114可以采用在用户模式218与内核模式220之间的“信任边界”,以使得检验由所述内核执行。在一个或多个实施方案中,可以依赖应用来确定由应用提供的“正确性”,诸如参数检验,以改进由全局合成系统114完成的处理效率。
另一个这样的技术涉及跟踪,以使得全局合成系统114“知晓”哪些数据(例如,用于再现的元素)属于哪个应用。因此,一个应用的失败(例如,崩溃)不影响另一个应用的元素。而且,如果发生这样的失败,全局合成系统114可以“清理”元素,诸如在预定的时间量后将元素从被再现的状态中移除。这样,全局合成系统114可以允许应用优雅地发生失败,而不影响其他应用和对应元素再现。
如所图示的,在专用系统进程214上执行合成引擎116,该专用系统进程214不同于诸如计算设备102的其他应用进程210、212之类的用来执行其他代码的进程。附加地,这个进程214可被指派高级别的信任度和优先级。这个进程214例如从得到合成数据的观点来看是可以被信任的,并且因此,可以用于受保护的数据,诸如,受保护的视频数据、以权限管理保护的电子邮件等等。
如图2所图示的,全局合成系统114可以通过使用三个部分实施。第一部分被图示为合成引擎116,其表示用于执行再现的功能性,即,对显示设备112“进行绘制”。第二部分被图示为用户模式库202,其表示由应用通过暴露应用编程接口(API)206、208而被调用的实体。例如,用户模式库202可以充当“信件投递口(mailslot)”以诸如通过使用动态链接库(DLL)接收来自应用的合成数据。
第三部分被图示为对象数据库模块204,其被图示为驻留在内核216中。对象数据库模块204表示负责在用户模式库202与合成引擎116之间移动数据的功能性。
对象数据库模块204还可以执行验证。例如,应用可以调用用户模式库202来创建元素,诸如位图。如果所请求的元素不满足由对象数据库模块204施行的准则(例如,小于“N”个像素),则对象数据库模块204可以把失败消息返回给调用了用户模式库202的应用。因此,对象数据库模块204可以在内核216内操作,以控制哪些内容被提供给合成引擎116。各种各样的其他策略可以由对象数据库模块204施行。
因此,合成引擎116可以依赖由对象数据库模块204提供的、符合由对象数据库模块204实施的策略的数据。换句话说,合成引擎可以假设数据是有效的和正确的,并且因此适合于再现。因此,可以由对象数据库模块20执行单次验证,并且然后被合成引擎116利用来执行再现,而不需要进一步验证。
对象数据库模块204也可以表示用于通知合成引擎116要被再现的数据何时改变了的功能性。例如,经由用户模式库实施的API可被配置来消耗描述要再现什么的图,其例子在图3中示出。图300可包括要被再现的元素列表以及在显示设备112上的何处再现元素的描述,其可包括在动画实例中元素如何移动。
附加地,要被再现的元素可以通过使用子元素形成,并且因此图300可以假设层级结构。而且,图300可以描述元素要被如何再现,例如,绘制一次文本、以60Hz再现动画等等。因此,图300可以描述元素以及这些元素如何彼此相关。
图300表示可以被合成引擎116用来再现情景两组对象、被合成在一起的位图以及限定合成那些位图所依据的空间关系的视觉件。在这个模型中,位图是合成引擎116的“什么”而视觉件是合成引擎116的“如何”。那些对象被安排在树结构中,以及被限于用于合成的顶级或子窗口。
再次返回到图2,一旦被合成引擎116接收,应用不需要进一步调用合成引擎116来保持对所述元素进行再现。因此,与可涉及应用做出每秒六十次的调用来以显示设备112的刷新速率再现动画的传统技术相比较,合成引擎116可以节省资源。因此,应用110可以调用用户模式库202的API来构建结构,并且调用API来构建要被合成引擎再现的元素。
为了对由合成引擎116再现的内容做出改变,应用可以调用用户模式库202的另一个应用编程接口来更新结构和/或元素。例如,应用可以经由更新的API提供数据,以便提供要被用于股票自动收报机动画的信息。
在一个或多个实施方案中,批处理技术也可以被利用来限定哪些元素通过使用帧而再现。如前所述,全局合成系统114可以接收各种各样不同的元素,以用于以各种各样不同的速率再现。因此,全局合成系统114可以支持其中形成要被一起再现的元素列表的结构。因此,全局合成系统114可以实现用于元素的开始和结束的定义,其中在开始和结束之间接收到的元素直到接收到“结束”才被再现。因此,帧可以支持对于特定帧的元素再现的一种“全部或全无”的方法,并且确保当想要时元素一起被再现以用于显示。
例如,对象数据库模块204可以跟踪对于应用的两种不同状态。第一状态可以参考用于当前显示的元素。第二状态可以参考在第一状态后要被显示并且被改变的元素。因此,第二状态可被用来构造元素列表,以用于在一旦完成了该列表时,例如一旦从应用接收到该列表完整的指示时,就由合成引擎116进行再现。
一旦完成,就可以把改变发送到合成引擎116。而且,从应用接收的关于列表已完成的指示的定时可被用来确定何时显示那些改变,例如,哪一帧。因此,合成引擎116可以接收在一个或多个已完成列表中描述的一批改变,但没有被指示为完成的列表不被传送。该批处理因此可以限定由合成引擎116再现的帧。而且,这可以帮助限制如使用不支持这样的定义的传统技术可能发生的错误的视觉伪像的显示。如应当容易显而易见的,对应于帧的时间量可根据期望被设置为各种各样不同的时间量。
因此,对象数据库模块204可以记住以前由合成引擎116再现了哪些内容(例如,元素和那些元素的属性),以及知晓哪些内容要被再现。所以,对象数据库模块204可以通过比较该信息来确定哪些元素被改变了。因此,对象数据库模块204可以向合成引擎116传送描述这种改变的信息,而不传送没有被改变的信息。
附加地,帧的使用还可以改进效率。例如,应用可以传送描述对象要被移动一段特定距离并且返回到原始位置的数据。对象数据库模块204可以确定该移动要在单个帧的时间段内发生。因此,对象数据库模块204可以制止将该数据传送到合成引擎116,并且而是让对象保持在其之前的状态。例如,该移动可以在用来刷新显示设备112的时间段内发生,并且因此不管怎样都不会被用户看见。
这样,对象数据库模块204可以在要被提供给合成引擎116以用于再现的列表进行构建时丢弃中间状态。这个列表然后可以以各种各样的方式被传送,诸如,由合成引擎116执行以实施改变的命令阵列。而且,这个技术也可以被用来解决由应用发送的未绑定数据的实例,因为单个实例被报告给合成引擎。
对象数据库模块204和合成引擎116也可以采用描述改变被实施的确认技术。例如,合成引擎116可以从对象数据库模块204接收描述要作出改变的通信。在正在作出改变时,对象数据库模块204可以等待发送附加的改变,直至接收到做出了之前改变的确认为止。一旦对象数据库模块204接收到所述确认,附加改变然后可以被传送到合成引擎。
而且,这个技术可被用来提供“节流(throttling)”,并且因此进一步节省计算设备102的资源。例如,应用可以作出超过显示设备被刷新的速率的许多请求。通过使用帧和对改变进行批处理,将以其他方式被消耗的资源量被减少。
通过调用用户模式库202的API对要显示什么作出改变的应用可以是多线程的。因此,在一个或多个实施方案中,对象数据库模块204可以采用技术以使得来自单个应用的多个线程的多个调用不会造成状态的损坏。这可以通过应用自身将其线程锁定在一起来执行,例如,一个线程可能被阻塞,而同时应用的另一个线程完成任务。
来自多个线程的改变然后可以被存储在队列中,该队列可以由操作系统108诸如通过可用于变量的联锁访问来管理,这样,不同的线程可以在在做出“完整”改变后再把控制传递到另一个线程。这可以支持以上描述的帧技术,以达到被合成引擎处理的工作的原子单元。附加地,对于没有接收到更新的帧,可以在下一帧之前暂停合成引擎的执行,由此进一步节省计算设备102的资源。
内核216还可以与全局合成系统114相结合地加上各种各样的功能性。例如,当应用失败(例如,崩溃)时,内核216可以把该发生通知合成引擎116。合成引擎116然后可以执行类似于如果应用通过正常退出过程“自然地”停止执行时将被使用的那些技术的技术。这样,合成引擎116可以“清理”状态,以使得对应于应用的元素从计算设备102的显示设备112上的显示中移除。因此,这促进了合成引擎116的执行中的鲁棒性。
合成引擎116的执行也可以通过实施对于用户模式库202的只写(write–only)API而保护安全。这样,合成引擎116可以生成像素,但不把那些像素暴露给应用,由此保护图像免受恶意方侵害。
如前所述,这些技术的实施方案也可能涉及在计算设备102“外面”的设备,其可跨诸如web服务104之类的一个或多个实体分布。例如,这些技术可被用来通过经由网络106的元素和属性的分批(例如,诸如图3的图300之类的合成树)的通信而支持终端服务、远程台式环境等等。因此,图300可以在别处生成(例如,通过在web服务104上实施用户模式库202和/或对象数据库模块204),并且通过计算设备102的执行,传递合成树以用于由合成引擎116再现。这样,即使在网络106不可靠的实例中,动画也可被平滑地显示。这些和其他技术的进一步讨论可以在以下关于共享合成资源的章节中找到。
共享合成资源
图4图示了示例性系统400,其中全局合成系统114被更详细地图示为支持共享合成资源。如前所述,全局合成系统114包括图1的合成引擎116。应用进程210、212经由包括API206、208和用来访问合成引擎116的句柄的语义模型与内核216交互,所述合成引擎116被图示为在其本身的进程214内执行并且可被用来将实际执行和实施方案进行抽象,如在下面进一步描述的。进程210、212可以对应于单个应用、多个应用等等。系统400还包括经由用户和内核模式218、220实施的之前的信任边界,但是其他例子也是被预期的。
合成引擎116在本例中被配置成支持由应用进程210、212共享合成资源402的能力。合成资源可以取各种各样的形式,诸如浮动、颜色、动画触发、变换、视觉件、使用图案或其他视觉属性。这可用来支持在再现用于在显示设备上进行显示的元素中涉及的各种各样不同的技术,诸如支持部件托管、如图5所示的共享视觉资源以便在一个框架内托管另一框架等等。这种共享可以以各种各样的方式被实施,其例子在下面描述并且在对应的图中示出。
图5描绘了图500,其被配置为包括可共享视觉资源402的全局合成树,所述可共享视觉资源由写入器和读取器进程相关联地实施。在本例中,合成引擎116可以实施安全模型,其中进程的责任上文被很好地限定(例如,通过写入器/读取器范例)并且根据哪些节点对应于哪个进程来管理图500中的访问。例如,读取器视觉树502是被托管的框架,其由写入器视觉树504通过使用共享合成资源402而被托管,而不是在分开的合成树中实施的两个分开的框架。这使得写入器进程(即,托管方)能够把整个被托管的视觉树作为单个视觉件对待。
因此,写入器进程可以把相同属性的每一个应用到这个被托管的框架,正如其将对其树中的任何视觉件所做的,诸如变换、不透明度等等。这也使得其有可能经由合成属性(例如,共享变换)而不是操作系统命令来放置框架。而且,合成引擎116可被配置使得进程被限于对应于该进程的元素访问(例如,图中的节点)。例如,可以阻止读取器进程在图示中“走入”写入器视觉树504,以及反之亦然。在一个或多个实施方案中,出于修改的目的,创建共享合成部件的进程具有对部件的完整权限,而读取器进程只是将视觉件设置为要被修改的。因此,共享合成资源402的创建者被配置为写入器(即,托管进程),而被给予对所创建的进程的访问的进程则被配置为读取器,但是其他例子也是被预期的。
共享合成资源402的使用也可以支持由被包括在分开的进程中的读取器和写入器视觉树502、504所表示的分开的框架的使用。例如,在传统技术中,被托管的进程传统上强制与其托管方在相同进程中执行。采用在托管情景下具有多个进程的能力,托管/被托管的进程能够创建对于被托管内容的附加安全边界。
使用共享合成资源来把两个树联系在一起也能够使得读取器视觉树504的元素以正确的绘制次序连同在写入器视觉树504中的其余元素一起实施。这意味着,读取器视觉树502的被托管的框架将不再受到空域问题的影响,因为其内容不再被包含在分开的顶级窗口中。空域涉及到不能把两个部件合成在一起,以使得在显示设备上的任何给定像素由部件中的单个部件内容限定。
如图5所示,共享合成资源402被图示为在读取器与写入器视觉树502、504之间“分裂的”,以指示由相应进程对共享合成资源402的不同功能性的访问。例如,合成引擎116可被配置成支持写入器/读取器范例,以施行用于访问到共享合成资源402的安全模型。例如,读取器进程可被配置成规定哪个元素被显示为共享合成资源402的一部分。另一方面,写入器进程被配置成规定共享合成资源402的所规定的元素是如何被显示的。
在另一个例子中,如所图示的,共享合成资源402被包括在图500中,例如合成树中。图500被配置成遵循由合成引擎116管理的读取器/写入器范例,以用于由多个进程访问,以使得读取器进程被配置成将规定内容的一个或多个子节点与图500中的共享合成资源相关联。写入器进程被配置成修改内容的一个或多个视觉属性,但没有被配置成把子节点(即,元素)添加到共享合成资源402中。在所图示的例子中,读取器进程的读取器视觉树502包括共享合成资源的子节点,而写入器进程不被配置成添加子节点。这个安全模型可被用来支持用于各种各样不同的共享合成资源的各种各样不同的功能性。
如前所述,共享视觉部件402可以以各种各样的方式被配置,其一个例子是浮动。例如,写入器进程可以经由被配置成设置共享的浮动值作为静态动画参数的接口来设置和/或更新浮动值,该静态动画参数可被用来驱动从属的动画。另一方面,并不准许读取器进程改变浮动值,并且读取器进程甚至不知道由写入器进程设置的值。从属的动画是通过来自应用的、对一个或多个系统API的、以具有可变值的规律节奏进行的周期调用而限定的动画。所以,从属的动画是通过使用调用代码的恒定参与而保持的,这与通过描述随着时间推移对于未来的动画值的一个单次调用而被限定的那些动画相反,其可以由操作系统执行,而不需要应用的进一步参与。
例如,共享合成资源402可被配置成浮动的,所述浮动被配置成规定视觉件的不透明度,例如,把不透明度设置为规定的浮动值。写入器进程可以创建共享合成资源,即浮动,其被用来规定不透明度的量。所以,共享资源402和子节点的元素的不透明度被写入器进程控制,而共享资源402和子节点的内容由读取器进程通过与合成引擎116交互而被规定。
而且,合成引擎116可被配置成管理与共享合成资源402的交互,以使得写入器进程既不“知道”正在被再现的元素,而且也不准许写入器进程规定元素。相反,合成引擎116可被配置成管理交互,以使得读取器进程既不“知道”元素是如何被再现的(例如,被应用到元素内容的不透明度),而且也不准许读取器进程规定在本例中元素如何被再现。因此,如所图示的,对于不同进程,读取器/写入器范例可被用来支持对与共享合成资源相关联的不同功能性的访问。
在另一个例子中,共享合成资源可被配置成动画触发。动画触发可被用来同时触发来自不同框架的多个动画。这可包括采用浏览器的用户界面的软件键盘的动画。之前,应用不能把关于动画何时开始的信息通知单独运行的应用。然而,采用共享的触发,浏览器和软键盘两者可以共享相同的动画触发,并且同时激活这两者对应的动画。
在再一个例子中,共享合成资源402可被配置为变换,其可被用来修改例如在二维或三维空间中的视觉件。例如,系统可被配置成支持响应式触摸输入。因此,触摸输入可被委派为专用进程,其不同于用来规定要被触摸输入影响的内容的进程。
例如,写入器线程可以创建共享合成资源作为要被用来响应于触摸输入而移动内容的变换。读取器线程(例如,应用)可以规定要作为移动的主体的视觉件,例如,光标、游戏元素等等。因此,应用不改变所述变换,而是规定要由变换所修改的视觉件。而且,可以由写入器进程将视觉件“如何”被修改隐瞒于读取器进程。这样,写入器进程可以被改变(例如,不同地操作)而不影响读取器进程。
因此,读取器或写入器进程的任一项可以在以上的例子中被改变,而不影响其他进程的执行。这种抽象也可以被用来支持各种各样的其他功能性,诸如独立地支持进程的执行、不同属性的使用、安全级别等等。这样,进程可以通过使用共享资源402进行合作,而不会通过经由合成引擎116的间接通信彼此束缚。
虽然以上描述了浮动、动画触发和变换,但共享合成资源可以以各种各样其他的方式被配置,而不背离其精神和范围。例如,共享合成资源402可被配置成界面被暴露的颜色,其中一个界面接受颜色值,而另一个界面接受颜色元素。因此,写入器进程可以规定对于颜色的修改,而读取器进程可以规定要被修改的视觉件。其他的视觉件也被预期,其中准许读取器进程设置视觉件,而写入器进程被配置成修改视觉件的一个或多个视觉属性。在另一个实例中,共享合成资源402被配置成使用模式,其中共享合成资源402的创建者得到为了交叉进程情景而被复制的对应对象的句柄。各种各样的其他例子也被预期,如参照以下的过程进一步描述的。
示例性过程
以下讨论描述了通过利用之前描述的系统和设备而实施的共享合成资源技术。每个过程的方面可以以硬件、固件、或软件、或其合成来实施。过程被示为一组方框,其规定了被一个或多个设备执行的操作,并且不必限于所示的用于由相应方框执行操作的次序。在以下的讨论的部分中,将对图1-5做出参考。
图6描绘了在示例性实施方案中的过程600,其中合成引擎管理对共享资源的访问。读取器进程对共享合成资源的访问被合成引擎管理,以使得读取器进程被配置成规定要被合成引擎再现的元素(方框602)。例如,读取器进程可以对共享合成资源402规定在图500中的子节点。
写入器进程对共享合成资源的访问由合成引擎管理,以使得写入器进程被配置成规定对共享合成资源的属性的一个或多个修改,但没有被配置成规定要被合成引擎再现的元素(方框604)。因此,在本例中,写入器进程被配置成修改元素,但并不规定要被修改的元素。读取器进程被配置成规定要被修改的元素,但并不规定如何执行修改。这样,在这两个进程之间的安全边界可被保持,而不存在任一进程能够完全访问共享合成资源402。各种各样的其他例子也被预期。
示例性系统和设备
图7图示了包括如参照图1描述的计算设备102的示例系统700。示例系统700当在个人计算机(PC)、电视设备和/或移动设备上运行应用时实现用于无缝用户体验的普适环境。服务和应用当在利用应用、播放视频游戏、观看视频等等的同时从一个设备转换到下一个设备时,对于普通用户体验在全部三种环境中基本相似地运行。
在示例系统700中,多个设备通过中央计算设备相互连接。中央计算设备可以是所述多个设备的本地设备,或者可以远离所述多个设备定位。在一个实施例中,中央计算设备可以是通过网络、互联网或其它数据通信链路连接至多个设备的一个或多个服务器计算机的云。在一个实施例中,该互连架构使得能够实现跨多个设备递送的功能性,以向多个设备的用户提供共同的和无缝的体验。多个设备中的每一个可以具有不同的物理需求和能力,并且中央计算设备使用平台来使得能够实现将既针对设备定制又对所有设备而言公共的体验递送至设备。在一个实施例中,创建目标设备的类并且针对设备的通用类定制体验。可以由设备的物理特征、使用类型或其它共同特性来定义设备的类。
在各种实施方式中,计算设备102可以采取诸如用于计算机702、移动装置704和电视706使用的各种各样不同配置。这些配置中的每一种包括可以具有总体上不同的构造和能力的设备,并且因而计算设备102可以根据一种或多种不同的设备类来配置。例如,计算设备102可以被实施为包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等的计算机702设备类。
计算设备102还可以被实施为包括诸如移动电话、便携音乐播放器、便携游戏设备、平板计算机、多屏幕计算机等之类的移动设备的移动502设备类。计算设备102还可以被实施为包括具有或连接至在休闲的观看环境中的总体上更大的屏幕的设备的电视506设备类。这些设备包括电视机、机顶盒、游戏控制台等。本文描述的这些技术可以得到计算设备102的这些各种配置的支持并且不限于这些技术在本文描述的具体示例。
云708包括和/或表示用于内容服务712的平台710。平台710将云708的硬件(例如服务器)和软件资源的底层功能抽象化。内容服务712可以包括可以在计算机处理在远离计算设备102的服务器上执行时所利用的应用和/或数据。内容服务712可以被提供为经由互联网和/或通过订户网络(诸如蜂窝或者Wi-Fi网络)的服务。
平台710可以将资源和功能抽象化以将计算设备102与其它计算设备连接。平台710还可以用来将资源的定标抽象化以针对所遭遇的经由平台710实施的内容服务712的需求提供相应的规模水平。因此,在互连设备实施例中,本文描述的功能性的功能性实施方式可以遍布系统700分布。例如,功能性可以部分地在计算设备102上实施,以及经由将云708的功能性抽象化的平台710来实施。
图8图示出了示例性设备800的各种部件,该示例性设备可以被实施为参照图1、2和7描述的、实施本文描述的技术的实施例的任何类型的计算设备。设备800包括使得能够实现设备数据804(例如,接收到的数据、正在接收的数据、计划用于广播的数据、数据的数据分组等等)的有线和/或无线通信的通信设备802。设备数据804或其它设备内容可以包括设备的配置设置、存储在设备上的媒体内容和/或与设备的用户关联的信息。存储在设备800上的媒体内容可以包括任何类型的音频、视频和/或图像数据。设备800包括一个或多个数据输入806,经过数据输入806可以接收到任何类型的数据、媒体内容和/或输入,诸如用户可选输入、消息、音乐、电视媒体内容、记录的视频内容和从任何内容和/或数据源接收到的任何其他类型的音频、视频和/或图像数据。
设备800还包括通信接口808,该通信接口808可以被实施为串行和/或并行接口、无线接口、任何类型的网络接口、调制解调器中的任何一种或多种并且可以被实施为任何其它类型的通信接口。通信接口808提供在设备800和其它电子、计算和通信设备与设备800传送数据所用的通信网络之间的连接和/或通信链路。
设备800包括处理各种计算机可执行指令以控制设备800的操作并且实施本文描述的技术的实施例的一个或多个处理器810(例如,微处理器、控制器中的任一项等)。可替代地或附加地,设备800可以利用与通常在812标识的处理和控制电路结合地实施的硬件、固件或固定逻辑电路中的任何一个或组合来实施。尽管未示出,但设备800可以包括耦合设备内的各种部件的系统总线或数据传递系统。系统总线可以包括诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用多种总线架构中任一种的处理器或本地总线之类的不同总线结构的任何一种或组合。
设备800还包括诸如一个或多个存储器部件之类的计算机可读介质814,其示例包括随机存取存储器(RAM)、非易失性存储器(例如,只读存储器(ROM)、闪存、EPROM、EEPROM等中的任何一个或多个)和盘存储设备。盘存储设备可以被实施为任何类型的磁或光存储设备,诸如硬盘驱动器、可记录和/或可重写光盘(CD)、任何类型的数字多用盘(DVD)等。设备800还可以包括大容量存储介质设备816。
计算机可读介质814提供数据存储机制以存储设备数据804以及各种设备应用818和与设备800的操作方面相关的任何其它类型的信息和/或数据。例如,操作系统820可以利用计算机可读介质814被保持为计算机应用,并且在处理器810上执行。设备应用818可以包括设备管理器(例如,控制应用、软件应用、信号处理和控制模块、特定设备固有的代码、用于特定设备的硬件抽象层等)。设备应用818还包括实施本文描述的技术的实施例的任何系统部件或模块。在该示例中,设备应用818包括被示出为软件模块和/或计算机应用的接口应用822和输入/输出模块824。输入/输出模块824表示被用来提供与诸如触摸屏、轨迹板、照相机、话筒等之类的被配置成捕获输入的设备的接口的软件。可替代地或附加地,接口应用822和输入/输出模块824可以被实施为硬件、软件、固件或其任何组合。附加地,输入/输出模块824可以被配置成支持多个输入设备,诸如分别捕获视觉和音频输入的单独设备。
设备800还包括向音频系统828提供音频数据和/或向显示系统830提供视频数据的音频和/或视频输入-输出系统826。音频系统828和/或显示系统830可以包括处理、显示和/或以其他方式再现音频、视频和图像数据的任何设备。视频信号和音频信号可以从设备800经由RF(射频)链路、S-视频链路、合成视频链路、分量视频链路、DVI(数字视频接口)、模拟音频连接或其它类似的通信链路传送至音频设备和/或显示设备。在实施例中,首频系统828和/或显示系统830被实施为设备800的外部部件。可替代地,首频系统828和/或显示系统830被实施为示例设备800的集成部件。
结论
尽管以特定于结构特征和/或方法动作的语言描述了本发明,但应当理解,所附权利要求中限定的本发明不一定限于所描述的特定特征或动作。相反,这些特定特征和动作是作为实现要求保护的本发明的示例性形式而公开的。
Claims (10)
1.一种系统,包括:
至少部分以硬件实施的一个或多个模块,所述一个或多个模块被配置成实施单个合成引擎,所述单个合成引擎被配置成:
可经由一个或多个应用编程接口访问多个进程,以便再现用于在显示设备上显示的元素;以及
管理由多个进程共享的合成资源,所述合成资源在元素再现时所涉及。
2.如在权利要求1中描述的系统,其中所述合成资源包括浮动、颜色、动画触发、变换视觉件或其他视觉属性。
3.如在权利要求1中描述的系统,其中所述共享合成资源遵循由单个合成引擎管理的读取器/写入器范例,以用于由多个进程访问,以使得读取器进程被配置成规定什么元素被显示,而写入器进程被配置成规定所规定的元素如何被显示,所述读取器和写入器进程被包括在所述多个进程中。
4.如在权利要求3中描述的系统,其中所述共享合成资源由单个合成引擎管理,以使得写入器不知道什么元素被显示,而读取器不知道所规定的元素如何被显示。
5.如在权利要求3中描述的系统,其中所述写入器是共享合成资源的相应一个共享合成资源的创建者。
6.如在权利要求1中描述的系统,其中所述共享合成资源被包括在图中,以遵循由单个合成引擎管理的读取器/写入器范例,以用于由多个进程访问,以使得读取器进程被配置成把规定内容的一个或多个子节点与图中的共享合成资源相关联,并且写入器进程被配置成修改所述内容的一个或多个视觉属性,但不被配置成将子节点添加到共享合成资源中。
7.如在权利要求6中描述的系统,其中所述图是全局合成树。
8.如在权利要求1中描述的系统,其中所述多个进程的每个进程对应于多个应用的相应一个应用。
9.一种由一个或多个计算设备实施的方法,所述方法包括:
由合成引擎管理读取器进程对共享合成资源的访问,以使得读取器进程被配置成规定要被合成引擎再现的元素;以及
由合成引擎管理写入器进程对共享合成资源的访问,以使得写入器进程被配置成规定对共享合成资源的属性的一个或多个修改,但不被配置成规定要被合成引擎再现的元素。
10.如在权利要求9中描述的方法,其中所述写入器进程是共享合成资源的创建者。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/891598 | 2013-05-10 | ||
US13/891,598 US9542906B2 (en) | 2013-05-10 | 2013-05-10 | Shared compositional resources |
PCT/US2013/060775 WO2014182327A1 (en) | 2013-05-10 | 2013-09-20 | Shared compositional resources |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105164723A true CN105164723A (zh) | 2015-12-16 |
CN105164723B CN105164723B (zh) | 2018-08-14 |
Family
ID=49293896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380076466.3A Active CN105164723B (zh) | 2013-05-10 | 2013-09-20 | 共享合成资源 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9542906B2 (zh) |
EP (1) | EP2994878A1 (zh) |
CN (1) | CN105164723B (zh) |
WO (1) | WO2014182327A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9361715B2 (en) | 2011-06-02 | 2016-06-07 | Microsoft Technology Licensing, Llc | Global composition system |
WO2017214414A1 (en) * | 2016-06-09 | 2017-12-14 | The Penn State Research Foundation | Systems and methods for detection of significant and attractive components in digital images |
CN108958611B (zh) * | 2018-07-27 | 2020-12-11 | 珠海金山网络游戏科技有限公司 | 一种信息编辑方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1304656A2 (en) * | 2001-10-18 | 2003-04-23 | Microsoft Corporation | Multiple-level graphics processing system and method |
CN1860505A (zh) * | 2003-10-23 | 2006-11-08 | 微软公司 | 图形处理系统中的统一合成引擎的系统和方法 |
US20080303835A1 (en) * | 2007-06-07 | 2008-12-11 | Michael James Elliott Swift | Serializing command streams for graphics processors |
US20120306912A1 (en) * | 2011-06-02 | 2012-12-06 | Microsoft Corporation | Global Composition System |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5745095A (en) | 1995-12-13 | 1998-04-28 | Microsoft Corporation | Compositing digital information on a display screen based on screen descriptor |
US6697063B1 (en) | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
US6172684B1 (en) | 1997-06-12 | 2001-01-09 | Silicon Engineering, Inc. | Method and apparatus for storing display lists of 3D primitives |
US6418542B1 (en) | 1998-04-27 | 2002-07-09 | Sun Microsystems, Inc. | Critical signal thread |
US7168048B1 (en) | 1999-03-24 | 2007-01-23 | Microsoft Corporation | Method and structure for implementing a layered object windows |
EP1264281A4 (en) | 2000-02-25 | 2007-07-11 | Univ New York State Res Found | ARRANGEMENT AND METHOD FOR PROCESSING AND PLAYING A VOLUME |
US6977661B1 (en) | 2000-02-25 | 2005-12-20 | Microsoft Corporation | System and method for applying color management on captured images |
US7443401B2 (en) | 2001-10-18 | 2008-10-28 | Microsoft Corporation | Multiple-level graphics processing with animation interval generation |
US20030078956A1 (en) | 2001-10-24 | 2003-04-24 | Aruna Ravichandran | Multi-threaded design mechanism and methodology for dynamic menu management in GUI application |
JP3761085B2 (ja) | 2001-11-27 | 2006-03-29 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理装置及びその構成部品、レンダリング処理方法 |
US7032212B2 (en) | 2002-05-06 | 2006-04-18 | Microsoft Corporation | Method and system for generating test matrices for software programs |
US20030210267A1 (en) | 2002-05-13 | 2003-11-13 | Kylberg Robert Lee | Systems and methods for providing asynchronous client rendering in a graphical user interface (GUI) environment |
US6977658B2 (en) | 2002-06-27 | 2005-12-20 | Broadcom Corporation | System for and method of performing an opacity calculation in a 3D graphics system |
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 |
US7173623B2 (en) | 2003-05-09 | 2007-02-06 | Microsoft Corporation | System supporting animation of graphical display elements through animation object instances |
US7839419B2 (en) | 2003-10-23 | 2010-11-23 | Microsoft Corporation | Compositing desktop window manager |
US7274370B2 (en) | 2003-12-18 | 2007-09-25 | Apple Inc. | Composite graphics rendered using multiple frame buffers |
US20050140692A1 (en) | 2003-12-30 | 2005-06-30 | Microsoft Corporation | Interoperability between immediate-mode and compositional mode windows |
US7173631B2 (en) | 2004-09-23 | 2007-02-06 | Qualcomm Incorporated | Flexible antialiasing in embedded devices |
US8239453B2 (en) | 2005-02-25 | 2012-08-07 | Microsoft Corporation | System and method for providing one class of users of an application a view of what another class of users of the application is visually experiencing |
US7154503B2 (en) | 2005-03-31 | 2006-12-26 | Microsoft Corporation | Methods and systems for brush composition |
US20060248471A1 (en) | 2005-04-29 | 2006-11-02 | Microsoft Corporation | System and method for providing a window management mode |
US8386628B1 (en) | 2005-05-23 | 2013-02-26 | Glance Networks, Inc. | Method and apparatus for reducing the amount of information that must be transmitted to slower viewers over a remote viewing session |
US20070013723A1 (en) | 2005-07-12 | 2007-01-18 | Microsoft Corporation | Magnification engine and interface for computers |
US7949955B2 (en) | 2005-08-04 | 2011-05-24 | Microsoft Corporation | Virtual magnifying glass system architecture |
US7716685B2 (en) | 2005-08-30 | 2010-05-11 | Microsoft Corporation | Pluggable window manager architecture using a scene graph system |
US7609280B2 (en) | 2005-09-07 | 2009-10-27 | Microsoft Corporation | High level graphics stream |
US8527563B2 (en) * | 2005-09-12 | 2013-09-03 | Microsoft Corporation | Remoting redirection layer for graphics device interface |
US7450130B2 (en) | 2005-09-14 | 2008-11-11 | Microsoft Corporation | Adaptive scheduling to maintain smooth frame rate |
US8154554B1 (en) | 2006-07-28 | 2012-04-10 | Nvidia Corporation | Unified assembly instruction set for graphics processing |
US8234392B2 (en) * | 2006-11-17 | 2012-07-31 | Apple Inc. | Methods and apparatuses for providing a hardware accelerated web engine |
US8683159B2 (en) | 2007-12-27 | 2014-03-25 | Intel Corporation | Delivering secured media using a portable memory device |
US8307300B1 (en) | 2008-05-13 | 2012-11-06 | Google Inc. | Content resizing and caching in multi-process browser architecture |
US8248412B2 (en) | 2009-03-19 | 2012-08-21 | International Business Machines Corporation | Physical rendering with textured bounding volume primitive mapping |
US20100289804A1 (en) | 2009-05-13 | 2010-11-18 | International Business Machines Corporation | System, mechanism, and apparatus for a customizable and extensible distributed rendering api |
US9589310B2 (en) | 2009-10-07 | 2017-03-07 | Nvidia Corporation | Methods to facilitate primitive batching |
EP2502153A4 (en) | 2009-11-16 | 2015-12-16 | Citrix Systems Inc | SYSTEMS AND METHODS FOR SELECTIVE IMPLEMENTATION OF PROGRESSIVE DISPLAY TECHNIQUES |
US20120042275A1 (en) * | 2010-08-10 | 2012-02-16 | Microsoft Corporation | Cloning specific windows on a wireless display surface |
US8875011B2 (en) * | 2011-05-06 | 2014-10-28 | David H. Sitrick | Systems and methodologies providing for collaboration among a plurality of users at a plurality of computing appliances |
US8872838B2 (en) | 2011-09-09 | 2014-10-28 | Microsoft Corporation | Primitive composition |
US9563971B2 (en) | 2011-09-09 | 2017-02-07 | Microsoft Technology Licensing, Llc | Composition system thread |
US9153193B2 (en) | 2011-09-09 | 2015-10-06 | Microsoft Technology Licensing, Llc | Primitive rendering using a single primitive type |
US20130063482A1 (en) | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Application programming interface for a bitmap composition engine |
US20140344729A1 (en) | 2013-05-15 | 2014-11-20 | Microsoft Corporation | Primitive-based composition |
USPP26609P3 (en) | 2014-05-13 | 2016-04-12 | Luen Miller | Salvia plant named ‘KILLER CRANBERRY’ |
-
2013
- 2013-05-10 US US13/891,598 patent/US9542906B2/en active Active
- 2013-09-20 EP EP13771317.8A patent/EP2994878A1/en not_active Withdrawn
- 2013-09-20 CN CN201380076466.3A patent/CN105164723B/zh active Active
- 2013-09-20 WO PCT/US2013/060775 patent/WO2014182327A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1304656A2 (en) * | 2001-10-18 | 2003-04-23 | Microsoft Corporation | Multiple-level graphics processing system and method |
CN1860505A (zh) * | 2003-10-23 | 2006-11-08 | 微软公司 | 图形处理系统中的统一合成引擎的系统和方法 |
US20080303835A1 (en) * | 2007-06-07 | 2008-12-11 | Michael James Elliott Swift | Serializing command streams for graphics processors |
US20120306912A1 (en) * | 2011-06-02 | 2012-12-06 | Microsoft Corporation | Global Composition System |
Also Published As
Publication number | Publication date |
---|---|
CN105164723B (zh) | 2018-08-14 |
US20140333637A1 (en) | 2014-11-13 |
WO2014182327A1 (en) | 2014-11-13 |
EP2994878A1 (en) | 2016-03-16 |
US9542906B2 (en) | 2017-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6033854B2 (ja) | 大域的コンポジションシステム | |
CN105190701B (zh) | 基于原语的合成系统及方法 | |
US9092627B2 (en) | Apparatus and method for providing security information in virtual environment | |
US20230333864A1 (en) | Management framework for mixed reality devices | |
US9563971B2 (en) | Composition system thread | |
US20120192105A1 (en) | Dynamic level of detail | |
US20130057572A1 (en) | Multiple Display Device Taskbars | |
CN106062705A (zh) | 跨平台渲染引擎 | |
WO2019007327A1 (zh) | 视频播放方法、装置、计算设备以及存储介质 | |
US8982137B2 (en) | Methods and systems for overriding graphics commands | |
US10908804B2 (en) | Incremental mount framework | |
US9678640B2 (en) | View management architecture | |
CN105164723A (zh) | 共享合成资源 | |
US20180060009A1 (en) | Managing secondary views for meeting management applications in multi-display environments | |
CN105518618A (zh) | 配置成将针对视觉元素的输入路由到图形框架的输入对象 | |
CN104123112A (zh) | 一种图像处理方法及电子设备 | |
CN114265583A (zh) | Vr内容开发优化方法、装置、电子设备及可读存储介质 | |
US20180300160A1 (en) | Host and Component Relationship between Applications | |
KR20180037856A (ko) | 전자장치 및 그 제어방법 | |
CN115310074A (zh) | 资源管理方法、资源管理装置、电子设备和可读存储介质 | |
Singh | A Review of the Android Operating System's Evolution | |
CN115866314A (zh) | 视频播放方法及其装置 | |
CN116880791A (zh) | 一种多媒体资源跨硬件移动操作方法 | |
CN112416214A (zh) | 一种显示设备 | |
US20140372916A1 (en) | Fixed header control for grouped grid panel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |