图形处理系统中的统一合成引擎的系统和方法

文档序号:6495010阅读:222来源:国知局
专利名称:图形处理系统中的统一合成引擎的系统和方法
背景技术
在当代计算系统中,图形和视频硬件的能力正在快步增长。事实上,在某种程度上,当代计算系统中的图形系统与其说是简单的图形子系统,还不如被视为更象是协处理器。与此同时,消费者期望所显示的图像的质量越来越高,无论是在观看例如监视器、电视机还是蜂窝电话显示屏。
但是,存储器和总线速度已跟不上主处理器和/或图形处理器的进步。结果是到达了计算机系统上传统的访问图形的即时模式模型的限度。与此同时,开发者和消费者迫切需要以传统的图形窗口体系结构无法实现的新特征和特殊效果。
尽管已经设计出某些利用图形硬件的游戏程序,但是此类游戏程序操作起来和桌面应用程序等具有不同的要求,主要在于这些游戏无需牵涉可能并发运行的其它程序。和此类游戏程序不同,应用程序需要与其它应用程序共享图形及其它系统资源。但是,就图形处理而言,它们一般不被写到协作的、机器级的共享模型中。
例如,目前用桌面应用程序执行动画需要专门的专用代码或是使用另一个应用程序。即便如此,在多窗口环境中实现平滑的动画即使不是不可能的也是很困难的。一般而言,这是因为实现平滑的、高速的动画需要以很高的帧速率,理想情况是以图形设备的硬件刷新速率来更新动画参数并重新绘制场景(这需要遍历和绘制数据结构)。但是,更新动画参数并遍历和绘制定义场景的数据结构一般是计算密集型的。场景越大或动画程度越高,计算要求就越大,这限制了能被平滑地动画表现的场景的复杂度。
伴随这一问题的是当图形硬件执行显示刷新时动画的每一帧都需要被计算、绘制并且呈现就绪的这一要求。如果当硬件需要帧时它还没有就绪,则结果是丢失或延迟的帧。如果丢失了足够多的帧,则在动画表现的显示中就有明显的间停(stutter)。同样,如果帧准备没有与刷新速率同步,则可能发生称为撕裂(tearing)的不悦目的效果。在实践中,当代的多任务操作系统在系统上的多个任务之中分配计算资源。但是,操作系统任务调度器给予帧处理的时间量很少能与图形硬件帧速率匹配。因此,即使当存在足够的计算资源,动画系统仍可能因为调度问题的缘故而丢失帧。例如,动画任务可能被调度成太晚才运行,或者它可能在完成一帧以前就被先占,而没有被及时重新调度以便为屏幕的下一次硬件刷新提供下一个帧。如果动画表现的图形需要与视频或其它异步生成帧的源合成,则这些问题就变得甚至更加复杂。
一般而言,当需要复杂的图形效果(诸如复杂的动画)时,先前的(例如,WM_PAINT)用于准备帧的模型需要太多数据处理才能跟上刷新速率。结果是,当用常规的模型来尝试复杂的图形效果时,就不是在下一帧时完成导致下一帧的所感知的视像效果的改变,而是会将这些改变添加到不同的帧上,从而引起视觉上和明显不悦目的效果。
在前述的美国专利申请中描述了一种用于控制图形输出的新模型。这一新模型提供了图形处理技术中的若干显著进步。例如,美国专利申请第10/184,795号一般针对于一种多级图形处理系统和方法,其中较高级组件(例如,属操作系统所有)以相对很低的操作速率执行构建场景图、更新动画参数和遍历场景图的数据结构等计算密集型方面,以将简化的数据结构和/或图形命令传给低级桌面合成组件。因为高级处理大大地简化了数据,所以低级组件可用诸如对应于图形子系统的帧刷新速率的速率等较快的速率(相对于高级组件)来操作,以把数据处理成图形子系统使用的恒定输出数据。尽管上述改进在图形处理技术中提供了实质性的好处,但是仍需实现某些改进。
发明概述简言之,本发明提供一种一般而言将先前分离的合成服务结合在一起的统一合成引擎的系统和方法。该统一合成引擎提供既在进程中与应用程序编程接口(API)联合使用的,又在桌面上作为桌面合成器使用的合成服务。该统一合成引擎将先前的两个合成工作的工作结合在一起API合成引擎旨在进程中使用以便合成单个应用程序的内容;而桌面合成引擎旨在合成所有窗口以创建最终的显示。桌面合成引擎和API合成引擎具有不同的角色和使用情形。桌面合成引擎被用来合成由其它进程呈现的内容,最小限度地呈现其自身的内容来实现窗口帧;以及与传统窗口管理器(例如,User32)紧密地协调。API合成引擎被用来控制呈现以及合成单个应用程序的所有内容,并提供高效遥控的机制。API合成引擎和桌面合成引擎的使用要求中近期的修改导致要求API合成引擎主宿来自其它进程和传统子窗口的内容,并要求桌面合成引擎遥控窗口帧。将两个合成工作结合在一起减少了代码重复,提高了测试覆盖范围,并简化了否则将是很复杂的启用特征,如传统窗口可相互操作性、遥控和多文档接口连接(MDI)。
附图简述

图1示出可在本发明的说明性实现中使用的示例性计算设备。
图2表示根据本发明的API合成引擎的一般的、分层的体系结构。
图3是其中可采用本发明的媒体集成层体系结构的框图。
图4根据本发明示出便于使用统一合成引擎的概观体系结构。
图5根据本发明示出对于单个应用程序域的多个统一合成引擎的概观体系结构。
图6根据本发明示出对于单个统一合成引擎的多个应用程序域的概观体系结构。
优选实施例的详细描述本发明实质上针对一种统一合成引擎(UCE)的系统和方法。本发明提供用于在应用程序级和桌面级合成图形输出、从而实质上减少代码重复的方法。
以下描述分成三个部分。此描述的第一部分描述本发明可在其中操作的说明性计算环境。此描述的第二部分描述说明性图形体系结构。此描述的第三部分描述本发明的一个说明性实现。
说明性计算环境图1示出可在其上实现本发明的合适的计算系统环境100的示例。计算系统环境100只是合适的计算环境的一个示例,而并不试图对本发明的使用范围或功能提出任何限制。也不应将计算环境100解释为具有涉及示例性操作环境100中所示出的任一组件或其组合的任何依赖性或要求。
本发明可与许多其它通用或专用计算系统环境或配置一起操作。可能适用于本发明的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持式或膝上设备、图形输入板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境、等等。
可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述本发明。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明还可在分布式计算环境中实施,其中任务是由通过通信网络链接的远程处理设备执行的。在分布式计算环境中,程序模块可位于包括记忆存储设备在内的本地和远程计算机存储介质中。
参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括,但不限于,处理单元120、系统存储器130、以及将包括系统存储器在内的各个系统组件耦合到处理单元120的系统总线121。系统总线121可以是数种类型的总线结构中的任何类型,包括存储器总线或存储器控制器、外围总线、使用各种总线体系结构中的任何体系结构的局部总线。作为示例,而非限制,此类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、加速图形端口(AGP)总线、以及也称为Mezzanine总线的外围部件互连(PCI)总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术,CD-ROM、数字多功能盘(DVD)或其它光盘存储,磁带盒、磁带、磁盘存储或其它磁存储设备,或任何其它可被用来存储所需信息并可由计算机110访问的介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传递介质。术语“已调制数据信号”是指以在信号中将信息编码的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接连线连接等有线介质,以及诸如声学、RF、红外及其它无线介质等无线介质。以上任何组合也应被包括在计算机可读介质的范畴之内。
系统存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132等易失性和/或非易失性存储器形式的计算机存储介质。包含诸如在启动期间帮助在计算机110内诸元件之间传递信息的基本例程的基本输入/输出系统133(BIOS)通常被存储在ROM 131中。RAM 132通常包含可由处理单元120立即访问和/或现在正由其操作的数据和/或程序模块。作为示例,而非限制,图1示出操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出读或写不可移动、非易失性磁介质的硬盘驱动器141,读或写可移动、非易失性磁盘152的磁盘驱动器151,以及读或写诸如CD ROM或其它光介质等可移动、非易失性光盘156的光盘驱动器155。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,磁带盒、闪存卡、数字多功能盘(DVD)、数码录像带、固态RAM、固态ROM、等等。硬盘驱动器141通常通过诸如接口140等不可移动存储器接口连接到系统总线121,而磁盘驱动器151和光盘驱动器155通常由诸如接口150等可移动存储器接口连接到系统总线121。
以上所描述并在图1中示出的各驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被示为存储了操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可与操作系统134、应用程序135、其它程序136和程序数据137相同或不同。本文中操作系统144、应用程序145、其它程序模块146和程序数据147被赋予不同的标号以说明至少它们是不同的副本。用户可通过诸如图形输入板(数字化转换器)164、话筒163、键盘162和定位设备161(通常是指如鼠标、轨迹球或触摸垫)等输入设备将命令和信息输入到计算机20中。其它输入设备(未示出)可包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些及其它输入设备通常通过被耦合到系统总线的用户输入接口160连接到处理单元120,但也可由诸如并行端口、游戏端口或通用串行总线(USB)等其它接口和总线结构连接。监视器191或其它类型的显示设备也经由诸如视频接口190等接口连接到系统总线121。还可将监视器191与能经由诸如触摸屏接口192等接口输入诸如手写等数字化的输入输入到计算机110中的触摸屏面板193等集成。注意,监视器和/或触摸屏面板可被物理地耦合到其中包含了计算设备110的外壳中,诸如在图形输入板类型的个人计算机中等,其中触摸屏面板193本质上起到图形输入板164的作用。此外,诸如计算设备110等计算机还可包括诸如扬声器195和打印机196等其它外围输出设备,它们可通过输出外围接口194等来连接。
计算机110使用到诸如远程计算机180等一台或多台远程计算机的逻辑连接在联网环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并通常包括以上相对于计算机110所描述的许多或全部元件,尽管在图1中仅示出了记忆存储设备181。图1中所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可包括其它网络。此类网络环境常见于办公室、企业范围的计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接到LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或其它用于通过WAN 173(诸如因特网)建立通信的装置。可内置或外置的调制解调器172可经由用户输入接口160或其它适当机制连接到系统总线121。在联网环境中,相对于计算机110所描述的程序模块或其部分可被存储在远程记忆存储设备中。作为示例,而非限制,图1示出远程应用程序185驻留在记忆设备181上。可以认识到,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它装置。
说明性图形体系结构在一个所描述的实现中,一般在媒体集成层堆栈中结合本发明,其中应用程序、桌面系统等通过诸如对视像API层直接进行调用或提供被诠释为对视件API层的调用的标记,来将各种数据提交给高级视件系统。视件系统基于提交给它的数据来构造分层结构场景图,并且在某个呈现时间将场景图处理成命令及其它数据,并与堆栈中的合成器服务异步地通信,以便将那些命令及其它数据处理成它自己的保留数据结构。较低级的合成器系统可将可能来自于多个视件系统(客户机)的通信结合成图形系统所理解的图形命令、以及修改保留图形数据的各部分的动画命令或间隔。较低级的合成器系统以对应于(例如,等于或近似)图形硬件的刷新速率的速率向图形子系统提供那些图形命令。
本发明的一个方面一般针对接收和处理程序代码发起的绘图指令及其它信息(例如,图像位图),以便在系统显示上呈现图形输出。为此,本发明提供在各种组件、数据结构和通信协议中实现的系统和方法,它们一起实现一种较高级的合成引擎(例如,在与视件系统相关联的用户界面线程中和呈现线程中),以便向较低级动画和合成引擎或合成器提供数据。该视件系统向应用程序等提供功能(例如,应用程序编程接口,或称API),以使那些程序能够用数据结构、绘图原语(命令)及其它图形相关的数据来填充场景图。
图2表示用于API合成引擎的一般的、分层的体系结构200。如图2中所示,可开发程序代码202(例如,应用程序或操作系统组件等),以便用一种或多种不同方式输出图形数据,这些方式包括经由成像204、经由矢量图形元素206、和/或经由直接对视件应用程序编程接口(API)层212进行的函数/方法调用。矢量图形元素的用法在题为“Markup Language and Object Model for Vector Graphics”(矢量图形的标记语言和对象模型)的前述专利申请中描述,而与API层的直接交互在题为“Visual and Scene Graph Interfaces”(视件和场景图接口)的前述共同待批专利申请中进一步描述。
一般而言,成像机制204提供具有用于加载、编辑和保存图像(例如,位图)的机制的程序代码。这些图像可由系统的其它部件使用,并且还有使用原语绘图代码来直接绘制图像的方法。矢量图形元素206提供与视件系统的对象模型一致的绘制图形的另一种方式。矢量图形元素206可经由标记语言来创建,元素/属性系统208和呈递器系统210处理标记语言来对视件API层212进行适当的调用。一般而言,矢量图形元素206被语法分析成对象模型的对象,从这些对象可绘制场景,它们可经由元素级、经由元素/属性系统208和呈递器系统210而被提供给场景图,或可在资源级以更高效的方式提供。
在一个实现中,图形层体系结构200包括视件系统214,该系统包括场景图216或是与场景图216相关联,而场景图216包括经由对视件API 212的直接或间接调用构造的按分层结构排列的对象。一般而言,场景图对API调用所生成的结构质量和特定呈现数据建模,并且还提供一组读服务或属性以便应用程序查询。一般而言,视件API层212提供具有到场景图216的接口的程序代码(以及呈递器系统),该程序代码包括创建对象、打开和关闭对象以向它们提供数据等的能力。换言之,视件系统214展示统一媒体API层212,开发者通过它就可表达关于图形和媒体的意图以便显示图形信息,视件系统214还提供具有足够信息的底层平台以使该平台可使程序代码对硬件的使用最优化。例如,底层平台将负责高速缓存、资源协商和媒体集成。
根据本发明的一个方面并如下所述,视件系统214担当合成器(较低级合成和动画引擎)218的客户机,并将适当的数据传达给合成器以呈现所需的帧。一般而言,视件系统214包括用户界面组件,它通常比合成器218执行计算成本更高的操作,因此视件系统214的这一个方面通常以与合成器的操作速率相比相对较慢的速率操作。注意,如在本文中所使用的,术语“高级”和“低级”类似于在其它计算情形中所使用的那些术语,其中一般而言,相对于较高的组件而言,软件组件越低,该组件就越靠近硬件。因此,例如,从视件系统的高级合成和动画引擎代码发送的图形信息可在低级桌面合成和动画引擎处被接收,在那里该信息被用来向包括硬件的图形子系统222发送图形数据。
根据本发明的一个方面,视件系统212(异步地)传递各种信息,诸如场景改变数据、如动画函数数据等指令、以及可能还有由呈现线程处理成提供给合成器218的数据的其它数据(例如,指向位图的指针)。换言之,视件系统212包括用户界面线程和呈现线程,它们构建在低级合成系统218上,在多个桌面应用程序上被共享,如下文所述。这一较低级的合成系统218匹配设备刷新速率,并驻留在与向其发送内容的应用程序不同的进程中。这一从单独客户机(应用程序)的视件系统的分离允许由系统调度器适当地判定和处理单独应用程序动画的费用。此外,常驻应用程序的合成引擎(线程)可将其专用线程分组到对类似的常驻应用程序的合成线程公共的类别中。例如,使用CPU调度保留系统,就可将CPU消耗百分比的上界与下界应用于在系统上执行的应用程序。
如下文所描述的,视件系统214与定时和动画系统220集成以提供声明性的(或其它)动画控制(例如,动画函数、间隔及其它参数)和定时控制。注意,动画系统本质上允许将动画表现值传递到系统中的任何地方,包括,例如,在元素属性级处,在视件API层212内,以及在任何其它资源中。定时系统在元素和视件级展示。
合成器218管理场景的合成、动画表现和呈现,然后场景被提供给图形子系统222。在一个实现中,视件系统包括用户界面线程,它与提供动画和合成功能的第二线程(在同一进程中)联合地工作。因此,每个视件系统中都有一个从实现从多个应用程序的场景对图形的呈现的(一不同进程中的)合成组件分离的合成组件。注意,有时某些呈现在较高级发生是有利的,例如,当较低层的服务向多个应用程序请求时,视件系统是在每个应用程序的基础上实例化的,由此可能经由成像机制以在较高级执行耗时的或是应用程序专属的呈现,并将对位图的引用传递给合成器218。
现在在API合成引擎和桌面合成引擎两者之间共享的是以上对API合成引擎所描述的较低级的合成。将对于API合成引擎和桌面合成引擎两者的较低级的合成结合在一起就得到本发明的统一合成引擎。该统一合成引擎实现对于API合成引擎和桌面合成引擎两者的资源管理以生成用于显示的场景,如以下在说明性实现的讨论中所描述。
如图3所示,作为本地显示的输出的替换或是除此以外,合成器218(或与其类似的组件)可向较低级的打印代码230提供适当格式的呈现和动画指令,以便将固定的图像数据发送给打印机232等,和/或可将适当格式的呈现指令及简单动画间隔提供给较低级的终端传输服务器236以便向远程机器238发送。注意,也可通过网络传递更加丰富的信息,例如,使远程机器在没有任何网络通信的情况下本地地处理鼠标翻转效果可能是合乎需要的。
说明性实现图4根据本发明示出便于使用统一合成引擎的概观体系结构。该统一合成引擎体系结构包括主资源表402、视件树404、合成设备接口406、改变队列408、通知队列410、合成树412和从资源表414。
该统一合成引擎体系结构被逻辑地分为两层顶层或称客户机程401(即,视件系统)包括作为统一合成引擎的主客户机的视件树404,而较低层是统一合成引擎属性420。视件树404提供统一合成引擎与其主客户机之间的交互,以及客户机所维护的资源表与统一合成引擎之间的交互。
根据本发明,视件树404可用作为统一合成引擎420的客户机的桌面窗口管理器来代替。桌面窗口管理器是当统一合成引擎420被用作桌面合成引擎时的客户机。如今相同的库执行当视件树404和桌面窗口管理器是统一合成引擎420的客户机时相同的合成。不同的处理为应用程序的视件树和桌面窗口管理器运行,并且它们每一个都处理不同的数据(即,有效负荷不同),但统一合成引擎420的协议保持不变。在一个实施例中,用于桌面窗口管理器的协议包括当应用程序是客户机时可用的协议的功能子集。
举一例而言,以下为应用程序是客户机时的情形描述客户机层401和统一合成引擎420以及资源管理之间的交互。视件树404表示应用程序或文档对要被显示的场景的表示。这一场景可能非常大,并且可能比当前可见的要大得多。每个视件(例如,405)的内容由呈现指令列表或呈现器数据、以及其所使用的资源(诸如结构、点、笔、刷子、图像等)来定义。这些资源由主资源表402管理,它包含设备和对于每个资源的分辨率无关数据,并且在某些情形中还包含集合或资源相关的形式。主资源表402负责管理资源的生存期(例如,经由引用计数)。
在视件树要被显示以前没有任何关于视件树(例如,404)或资源的信息被发送给统一合成引擎420。当将视件树(例如,404)与呈现目标相关联时,视件树随适当的资源一起将该树的表示发送给统一合成引擎420。这一经由合成设备接口406的改变队列408的通信是异步的。在统一合成引擎420中仅表示视件树404的潜在可见的子集(本文中统称为合成树412)(即,合成器数据结构)。当视件树被连接到已知分辨率的呈现目标时视件树才被显示。因此,对于客户机而言,从对象到呈现目标空间的全变换是已知的。
被发送给统一合成引擎420的资源可由统一合成引擎420直接实现而无需发送回叫或所需的实现。如“文本”和“图像”等资源实现起来是成本很高的(在处理的额外开销的方面),因此在视件树404中它们被转换为适当的“呈现就绪”形式。将资源转换为可被容易地呈现的形式保存了统一合成引擎420中合成的额外开销。如果资源需要任何对用户代码的回叫,则它们也在视件树404中实现。如“几何结构”等在需要时可由统一合成引擎420高效地镶嵌到正确分辨率的其它资源由统一合成引擎420自己实现。
统一合成引擎420管理从资源表414中的资源。在一个实施例中,从资源表414不执行任何形式的引用计数以便提高性能。这是可能的,因为从资源表414的资源是在合成设备的单个合成线程上被访问的。在一个实施例中,从资源表414中的所有资源也存在于主资源表402中。主资源表402经由串行化的改变队列408请求来显式地控制从资源表414的生存期。统一合成引擎420通过句柄来引用资源。在一个实施例中,如果资源查找失败,则统一合成引擎420向通知队列410投寄消息,并简单地跳过请求该资源的处理。统一合成引擎420作为单个线程来运行,并且在恒定的合成循环中运行。
本发明中对应于所示的统一合成体系结构的一个方面是该体系结构对资源的使用。资源可被定义为“呈现对不同分辨率和/或物理设备要求不同实现的场景所需的任何对象;它在合成树中被多次使用;或者它将经由诸如动画而独立于其用户改变。”资源在统一合成引擎420中被表示,并且在客户机层401处被表示为表(例如,主资源表402)中的记录,并由句柄来引用。使用资源的对象通过句柄来使用资源。可在资源表(例如,主资源表402)中查找句柄以取得指向实际对象的指针。资源能够将自身串行化,应用更新,并提供对特定分辨率和设备的实现。
资源一般被分成数种类型,诸如绘图资源、值资源和结构资源。绘图资源是由呈现层定义的对象,并可直接由该层消耗。绘图资源的示例包括呈现数据、位图、图像、字形串(Glyphrun)、几何结构和刷子。绘图资源还可被进一步分为简单和复杂类别。
具有非常低且恒定的呈现成本的绘图资源可在合成期间从设备和分辨率不相关的源数据来实现。几何结构是简单绘图资源,因为它可在统一合成引擎420的合成循环中被高效地镶嵌到最终所需的分辨率。相反,复杂绘图资源需要复杂的计算、对用户代码的回叫、或是输入/输出来生成实现。在一个实施例中,复杂绘图资源不是由统一合成引擎420实现。而是在合成以前预先在客户机层401提供了适当的实现。“图像”是复杂资源的一个示例。图像从磁盘读出,被解码,以适当的分辨率被采样,并被过滤。
值资源表示由另一个资源使用的简单的可改变或动画表现值。值资源的示例是双精度浮点、点、色彩和变换。例如,呈现数据资源可引用点资源来绘制线条,预期其中一个点经由动画或应用程序的强制指导而改变。值资源可以是静态的或是动画表现的。如果值资源是动画表现的,则值资源包含定义值如何随时间改变的动画间隔数据。
结构资源是在合成过程中扮演角色、但并不直接是呈现的一部分的对象。这些对象被实现为资源,从而它们可经由改变队列来参与更新,并可使用值资源来更新内部值。一些目前被标识的结构资源包括合成节点及呈现目标。
一般而言,资源在被使用以前必须被实现。实现可被称为“适合于给定分辨率、并且已准备好供特定设备使用的资源的表示”。实现的一个示例是被镶嵌到对应于特定分辨率与变换的三角形中、并且可能已被加载到显卡上的顶点缓冲区中的几何结构。实现或是在统一合成引擎420中在要求时创建的,或是在客户机层401处创建并被发送到统一合成引擎420的。如果不能找到或者创建所需的资源实现,则经由通知队列410将通知排队到客户机层401。该通知只是所需的资源句柄、变换和设备,以及实现所使用的任何变换。
对资源本身来说,同样重要的是它们被如何管理。资源具有一些潜在矛盾的要求高效的生存期管理,以使资源被尽快消除;高效的记忆存储,因为它们可能很庞大;多线程安全句柄处理;即使缺少预期的资源仍然生效的健壮代码;以及对实现高效的查找以确保平滑的合成。所示的统一合成引擎体系结构允许这些要求被分成两组,其中主资源表402满足第一组要求,而从资源表414满足第二组要求。
主资源表402被完全地引用计数以便于安全高效的存储器管理,并被同步以便于线程安全。引用计数是指特定资源被使用的次数。相反,从资源表414在单个线程上运行,并使用无引用和无锁定的设计。
主资源表402管理客户机层401应用程序内使用的所有资源。主资源表402负责给出句柄;对句柄记录、资源和实现进行引用计数;向从资源表414发送资源以及控制从资源表414资源的生存期。主资源表402可管理数以万计的对象,其中大多数当前没有被显示,但是视件树404在被用于显示以前并不创建该资源。当显示视件树404时,视件树404被走查,且必需的资源被发送给统一合成引擎420,在那里它们在从资源表414中被管理。当合成不再需要特定资源时,视件树404通知合成设备(例如,图2的218)删除该资源。如果应用程序被多点传送给多个观众,则视件树404向多个合成设备发送相同的信息。主资源表412跟踪哪些合成设备持有每个资源的表示。
在本发明的一个方面,资源数据在客户机层401和统一合成引擎420之间被共享。一经创建,资源数据在共享的数据被分类为“只读”时即可被共享,共享的数据在“复制”到统一合成引擎420以前是完整的,视件树404控制共享数据的生存期,且统一合成引擎420对象首先由来自视件树404的显式请求删除。这一组要求确保从资源表414中的数据保持与主资源表402一致的状态。
图5根据本发明示出对于单个应用程序域的多个统一合成引擎(UCE)的概观体系结构。此结构在客户机层处包括单个应用程序域,但有多个统一合成引擎用于与该应用程序联合地合成场景。逻辑合成设备(例如,去往UCE C的合成设备)定义应用程序(即,合成客户机)与多个统一合成引擎中的每一个之间的连接。何时可使用这一体系结构的一个示例是在单个应用程序通过网络在一个以上机器上被显示的远程协助或其它情形的情况下。可与单个应用程序域联合地使用的统一合成引擎的个数不限于所示的三个,而是可以是所需的任何个数。
图6根据本发明示出对于单个统一合成引擎的多个应用程序域的概观体系结构。这一体系结构在客户机层包括多个应用程序域,但有单个统一合成引擎用于与这多个应用程序联合地合成场景。逻辑合成设备(例如,去往UCE C的合成设备)定义其中每个应用程序(即,合成客户机)与统一合成引擎之间的连接。何时可使用这一体系结构的一个示例是在单个计算设备上的多个应用程序被要求每一个都具有它们自己的域的情况下。可与单个统一合成引擎联合地使用的应用程序域的个数不限于所示的三个,而是可以是所需的任何个数。
以上说明、示例和数据对本发明的组成部分的制造和使用提供了完整的描述。因为可实现本发明的许多实施例而不会偏离本发明的精神和范围,所以本发明驻留在所附权利要求书中。
权利要求
1.一种在计算环境中的系统,包括视件系统,所述视件系统接收来自程序和窗口桌面管理器中的一个的构造分层数据结构的调用;以及统一合成引擎,所述统一合成引擎接收来自所述视件系统的命令,其中所述统一合成引擎响应于提供图形输出的命令而构造合成器数据结构。
2.如权利要求1所述的系统,其特征在于,所述统一合成引擎包括与第二合成设备分离的第一合成设备,所述第一合成设备被并入所述视件系统中,并被配置成向所述第二合成设备提供数据。
3.如权利要求1所述的系统,其特征在于,还包括被包括在所述视件系统中的主资源表,其中所述主资源表包括由所述应用程序和所述桌面窗口管理器中的一个使用的第一资源列表;以及被包括在所述统一合成引擎中的从资源表,其中所述从资源表包括提供给所述统一合成引擎的第二资源列表,所述从资源列表由所述主资源表管理。
4.如权利要求3所述的系统,其特征在于,当与所述第一资源列表相比较时,所述第二资源列表是包括性的资源列表。
5.如权利要求3所述的系统,其特征在于,所述主资源表负责给出句柄,对句柄记录、资源和实现进行引用计数,向所述从资源发送资源,以及控制所述从资源表资源的生存期。
6.如权利要求3所述的系统,其特征在于,所述主资源表经由串行化的请求来显式地控制从资源表资源的生存期。
7.如权利要求1所述的系统,其特征在于,当所述统一合成引擎响应于所述桌面窗口管理器而操作时,以及当所述统一合成引擎响应于程序而操作时,相同的库执行相同的合成。
8.如权利要求1所述的系统,其特征在于,在响应于所述桌面窗口管理器时由所述统一合成引擎使用的协议包括在响应于所述程序时由所述统一合成引擎使用的协议的功能子集。
9.如权利要求1所述的系统,其特征在于,所述从资源表资源是在单个合成线程上被访问的。
10.如权利要求1所述的系统,其特征在于,所述统一合成引擎作为单个线程运行,并且在恒定的合成循环中运行。
11.如权利要求1所述的系统,其特征在于,还包括与所述统一合成引擎通信以使所述图形输出对应于所述视件系统的其它视件系统。
12.如权利要求1所述的系统,其特征在于,还包括与所述视件系统通信从而产生对应于所述视件系统的多个图形输出的其它统一合成引擎。
13.一种在计算系统中的方法,包括接收来自程序和桌面窗口管理器中的一个的调用,其中响应于所述调用构造分层场景结构;向统一合成引擎传达表示对所述分层数据结构的改变的信息;向所述统一合成引擎传达一组资源,其中所述的一组资源对应于与所述分层数据结构相关的主资源表;基于所传达的信息更新所述合成器数据结构中的信息;基于所传达的一组资源更新从资源表,其中所述从资源表与所述合成器数据结构相关;以及处理所述合成器数据结构以输出图形信息。
14.如权利要求13所述的方法,其特征在于,与处理所述合成器数据结构以产生所述输出图形信息相比,构造所述分层情景结构的进程是异步执行的。
15.如权利要求13所述的方法,其特征在于,所述从资源表包括在与所述主资源表相比较时是包括性资源列表的资源列表。
16.如权利要求13所述的方法,其特征在于,还包括响应于所述主资源表而控制所述从资源表资源的生存期。
17.如权利要求13所述的方法,其特征在于,还包括当所述统一合成引擎响应于所述桌面窗口管理器而操作时根据第一个库使用所述统一合成引擎来执行合成,并且当所述统一合成引擎响应于程序而操作时根据所述第一个库使用所述统一合成引擎来执行合成。
18.如权利要求13所述的方法,其特征在于,在响应于所述桌面窗口管理器时由所述统一合成引擎使用的协议包括在响应于所述程序时由所述统一合成引擎使用的协议的功能子集。
19.如权利要求13所述的方法,其特征在于,还包括在单个合成线程上访问所述从资源表资源。
20.如权利要求13所述的方法,其特征在于,还包括将所述统一合成引擎作为单个线程并在恒定的合成循环中运行。
21.如权利要求13所述的方法,其特征在于,还包括将其它信息和其它各组资源传达给所述统一合成引擎,以使所述图形输出信息对应于其它程序。
22.如权利要求13所述的方法,其特征在于,还包括将所述信息和各组资源传达给多个统一合成引擎,从而生成对应于程序和桌面窗口管理器中的一个的多个图形输出信息。
全文摘要
本发明针对一种一般而言将先前分离的合成服务结合在一起的统一合成引擎的系统和方法。统一合成引擎提供既在进程中与应用程序编程接口(API)联合使用的,又在桌面上作为桌面合成器使用的合成服务。
文档编号G06T15/00GK1860505SQ200480027988
公开日2006年11月8日 申请日期2004年7月29日 优先权日2003年10月23日
发明者G·D·斯韦德伯格, P·戴维, A·阿索弗, D·B·柯蒂斯, L·E·布兰克 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1