《虚拟表面分配.pdf》由会员分享,可在线阅读,更多相关《虚拟表面分配.pdf(39页完整版)》请在专利查询网上搜索。
1、10申请公布号CN104321752A43申请公布日20150128CN104321752A21申请号201380028075422申请日2013051713/48580520120531USG06F9/5020060171申请人微软公司地址美国华盛顿州72发明人R芬克LE布兰科JW普里斯特利C埃尔根SP蒙卡尤74专利代理机构中国专利代理香港有限公司72001代理人刘鹏景军平54发明名称虚拟表面分配57摘要描述了虚拟表面技术。这些技术包括更新的初始化和批处理的支持、更新和预读列表的使用、排版隔条的使用、混合和BLT操作、诸如下推以及枚举和组块之类的表面优化技术、网格使用和遮挡管理技术。30优先。
2、权数据85PCT国际申请进入国家阶段日2014112886PCT国际申请的申请数据PCT/US2013/0414852013051787PCT国际申请的公布数据WO2013/180977EN2013120551INTCL权利要求书1页说明书16页附图21页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书16页附图21页10申请公布号CN104321752ACN104321752A1/1页21一种由计算设备实现的方法,所述方法包括由合成系统接收分配在其中呈现一个或更多视像的表面的请求,所述请求指定所述表面的尺寸;以及响应于所述请求的接收,由所述合成系统分配具有大于所请求的尺寸。
3、的尺寸的表面来呈现所述一个或更多视像。2如权利要求1中所述的方法,其中所述请求由所述合成系统从所述计算设备所执行的一个或更多应用接收。3如权利要求2中所述的方法,其中所述请求经由所述合成系统的一个或更多应用编程接口从所述一个或更多应用接收。4如权利要求1中所述的方法,其中所述表面通过所述合成被初始化但当所述请求被接收时不分配在所述计算设备的存储器中。5如权利要求1中所述的方法,其中所述表面是虚拟表面,该虚拟表面由所述合成系统维持并且包括创建、更新和删除该虚拟表面的功能性。6如权利要求5中所述的方法,其中所述虚拟表面包括在请求被接收之前呈现一个或更多视像以将所述一个或多个视像显示在所述计算设备的。
4、显示设备上的功能性。7如权利要求1中所述的方法,其中所述虚拟表面当被初始化时不被来自所述一个或多个应用的实际分配支持。8一种计算设备,包括一个或更多模块,该一个或更多模块至少部分地实现在硬件中并且配置成实现合成系统来展示供一个或更多应用访问以分配在其中呈现具有由所述一个或更多应用指定的尺寸的一个或更多视像的虚拟表面的应用编程接口。9如权利要求8中所述的计算设备,其中由所述合成系统进行的所述表面的分配被施行以具有大于所述一个或更多应用所请求的尺寸的尺寸。10一个或更多计算机可读存储媒体,包括存储在其上的指令,响应于由计算设备进行的执行,所述指令使得该计算设备实现合成系统以施行包括管理包括供显示设。
5、备显示的视像的表面和跟踪将由所述显示设备显示的所述表面内的有效区的一个或更多操作。权利要求书CN104321752A1/16页3虚拟表面分配背景技术0001各种各样的计算设备配置继续增长。从传统的桌面型个人计算机到移动电话、游戏控制台、机顶盒、平板计算机等等,来自这些配置中的每一个的可用的功能性可能极大地变化。0002结果,针对一个配置而开发的传统的显示技术可能不再适合于另一配置。举例来说,之前用于具有大量存储器资源的设备的显示技术可能不适合具有较少资源的设备。发明内容0003描述了虚拟表面技术。这些技术包括更新的初始化和批处理的支持、更新和预读(LOOKASIDE)列表的使用、排版隔条(GU。
6、TTER)的使用、混合和BLT操作、诸如下推以及枚举和组块之类的表面优化技术、网格使用和遮挡管理技术。0004提供本发明内容来以简化的形式介绍概念的选择,这些概念在下面在具体实施方式中进一步被描述。本发明内容不意图标识所要求保护的主题的关键特征或必要特征,也不意图用作确定所要求保护的主题的范围时的辅助。附图说明0005参考附图描述具体实施方式。在这些图中,附图标记的最左边的(多个)数字标识在其中该附图标记第一次出现的图。在描述和图中的不同实例中相同的附图标记的使用可以指示类似或相同的项目。0006图1是在可操作用来施行在此描述的虚拟表面技术的示例实现中的环境的图示。0007图2描绘了在其中虚拟。
7、表面被调整尺寸的示例实现。0008图3描绘了在其中示出应用与虚拟表面的逻辑表面之间的交互的示例实现。0009图4描绘了更详细地示出图1的合成系统的示例实现。0010图5图示了合成系统发起虚拟表面的操作的示例实现。0011图6描绘了示出合成系统为更新准备表面的示例实现。0012图7描绘了合成系统使用图6的预读列表的操作的示例实现。0013图8描绘了示出合成系统采用排版隔条的操作的示例实现。0014图9描绘了示出合成系统管理有效区的示例实现。0015图10描绘了示出合成系统使用下推技术组合表面的操作的示例实现。0016图11描绘了示出合成系统将有效区组合成新的表面的操作的示例实现。0017图12描。
8、绘了示出合成系统采用网格的操作的示例实现。0018图13描绘了示出合成系统关于遮挡的操作的示例实现。0019图14是描绘在其中尺寸被分配用于在其中呈现数据的表面的示例实现中的过程的流程图。0020图15是描绘在其中合成系统跟踪有效区的示例实现中的过程的流程图。0021图16是描绘在其中采用预读列表来管理表面的示例实现中的过程的流程图。说明书CN104321752A2/16页40022图17是描绘在其中基于遮挡来对表面进行调整尺寸的示例实现中的过程的流程图。0023图18是描绘在其中描述了牵涉从一个表面到另一个地下推有效区的压缩技术的示例实现中的过程的流程图。0024图19是描绘在其中描述了牵涉。
9、将有效区组合成新的表面的压缩技术的示例实现中的过程的流程图。0025图20是描绘在其中合成系统采用网格来做出对于驱动器的调用以使用该网格来呈现表面的示例实现中的过程的流程图。0026图21图示了包括可以被实现为如参考图120所描述的任何类型的计算设备的示例设备的各种组件以实现在此描述的技术的实施例的示例系统。具体实施方式0027综述虚拟表面可以用来分配和管理用于呈现视像的表面。这些虚拟表面例如可以用来克服硬件的限制,诸如管理大于硬件可能为呈现这些视像而分配的存储器的网页的呈现,诸如管理大的网页、沉浸式应用,等等。0028在此描述了虚拟表面合成和更新技术。在一个或更多实现中,描述了管理用于呈现的。
10、表面的技术。这包括如结合图4和5而进一步描述的支持更新的初始化和批处理的技术、如结合图6和7而描述的更新和预读列表的使用、如结合图8而描述的排版隔条的使用、如结合图9而描述的混合和BLT操作、诸如如结合图10而描述的下推以及如结合图11而描述的枚举和组块之类的表面优化技术、如结合图12而描述的网格使用以及如结合图13而描述的遮挡管理技术。0029在下面的讨论中,首先描述可操作用来施行在此描述的虚拟表面技术的示例环境。然后描述在该示例环境以及其他环境中可操作的示例过程。同样地,该示例环境不限于这些示例过程的性能。0030示例环境图1图示了根据一个或更多实施例、通常在100处的操作环境。环境100。
11、包括具有可以包括一个或更多处理器的处理系统104、图示为存储器106的计算机可读存储媒体的示例、操作系统108以及一个或更多应用110的计算设备102。作为示例而非限制,计算设备102可以体现为诸如桌面型计算机、便携式计算机、诸如个人数字助理(PDA)之类的手持计算机、移动电话、平板计算机等等之类的任何合适的计算设备。下面在图21中示出并描述了计算设备102的不同示例。0031计算设备102还包括图示为在处理系统104上执行并且可存储在存储器106中的操作系统108。计算设备102进一步包括图示为存储在存储器106中并且在处理系统104上也可执行的应用110。操作系统108代表了计算设备102。
12、的功能性,其可以抽象供应用110使用的底层硬件和软件资源。举例来说,操作系统108可以抽象在应用110无需“知晓”如何完成显示的情况下如何将数据显示在显示设备112上的功能性。还构思了各种各样其他的示例,诸如抽象计算设备102的处理系统104和存储器106资源、网络资源,等等。0032计算设备102还图示为包括合成系统114。尽管图示为操作系统108的一部分,但说明书CN104321752A3/16页5是合成系统114可以以各种各样的方式被实现,诸如独立模块、单独的应用、计算设备102本身的硬件的一部分(例如,SOC或ASIC),等等。合成系统114可以采用各种各样的技术来呈现视像,诸如经由一。
13、个或更多应用编程接口(API)展示供应用110用来呈现视像的功能性。0033举例来说,一个这样的技术可以基于称为交换链的对象,其可以利用表示位图的缓冲器的阵列。这些缓冲器中的一个例如可以用来在任意一个时刻在显示设备112上展现数据并且因此可以称为“在屏缓冲器”或“前缓冲器”。其他缓冲器被使得对于应用110可用以用于离屏地进行光栅化并且因此可以称为“离屏缓冲器”或“后缓冲器”。0034应用110可以以各种各样的方式对于显示在显示设备112上的内容做出改变。在这样的第一技术中,应用110可以重绘后缓冲器中的一个并且“翻转”内容,诸如通过使用指针而使得离屏缓冲器中的一个成为在屏缓冲器,反之亦然。00。
14、35在这样的第二技术中,还可以利用不同尺寸的缓冲器。举例来说,合成系统114可以将第一缓冲器用作在屏缓冲器。合成系统114还可以将小于第一缓冲器的第二缓冲器用作离屏缓冲器。因此,当要对内容做出更新时,可以将该更新光栅化到第二缓冲器。然后可以例如使用BLT将该更新拷贝到在屏缓冲器。这样,可以节约计算设备102的资源。0036合成系统114还可以配置成支持虚拟表面技术。这些技术可以用来帮助应用110的开发者减少用来呈现视像的计算设备102的资源。这可以包括虚拟表面118的使用,从而使得应用110能够将视觉数据的表面分解成块片并且随后提前呈现这些块片。还构思了在其中不使用块片来如下面进一步描述的那样。
15、划分表面(例如,应用110指定尺寸)的其他实现。0037虚拟表面118可以配置为一个或更多逻辑表面120的集。逻辑表面120代表了如应用110所见的单个表面并且可以与一个或更多视像相关联。逻辑表面120例如可以配置为具有固定尺寸的块片,并且多个块片可以布置在固定的格子中,尽管应当容易地显而易见的是,还构思了在其中不使用固定尺寸的块片的各种各样的其他实例。举例来说,块片的尺寸可以由希望呈现视像的应用来指定并且因此块片的尺寸在该实例中可以由应用本身来设置,其在下面的讨论中也被称为“大块”。0038虚拟表面118可以用来表示比纹理所表示的区域更大的区域。举例来说,应用110可以在创建时刻指定虚拟纹理。
16、的尺寸。该尺寸建立针对虚拟表面118的边界。该表面可以与一个或多个视像相关联。在一个或更多实现中,当虚拟表面被首先初始化时,它并不被实际的分配支持。换言之,虚拟表面118在初始化时可以不“保持位”但是可以在稍后的时间点(例如在分配时)这样做。0039在下面的讨论中,视像可以是指基本的合成元件。举例来说,视像可以包含供合成系统114处理的位图和关联的合成元数据。视像的位图可以与交换链(例如,对于诸如视频之类的动态内容)或图表集(ATLAS)表面(例如,对于半动态内容)相关联。在合成系统114所支持的单个视觉树中可以支持这两个展现模型。0040对于半动态内容,图表集可以充当针对视像的位图的更新模型。
17、并且可以是指可以包括要呈现的多个层的聚合层,尽管还构思了单个层。视像及其性质操纵(例如,偏移、转换、实现,等等)以及更新视像的基于图表集的位图(开始绘制、暂停绘制、再继续绘制、终止绘制)的方法经由应用编程接口116而被展示,而图表集层尺寸、块片尺寸、位图更新的打包说明书CN104321752A4/16页6/压缩/管理对于应用110可以是隐藏的。0041交换链是指可以诸如通过改变指针而一个接一个地“翻转”到屏幕的一系列缓冲器。相应地,翻转模式是这样的模式通过该模式交换链技术被用来例如通过在离屏与在屏缓冲器之间的交换点的使用来使得离屏缓冲器成为在屏缓冲器。然而,BLT模式是指这样的技术其中合成系统。
18、114的运行时间发布从离屏缓冲器到在屏缓冲器的“BLT”(例如,位块图像转移),其可以用来更新在屏缓冲器。0042如之前所描述的,当虚拟表面118在一个或更多实现中被首先初始化时,它并不被实际的分配支持。换言之,它不“保持任何位”。一旦应用110开始更新表面,合成系统114就可以施行块片(即,合成表面对象)的分配。应用110可以经由诸如对于相应操作的开始绘制、暂停绘制、再继续绘制和终止绘制API调用之类的各种各样的操作来更新虚拟表面118。映射可以由合成系统114的内部算法确定并且在一个或更多实现中被使得对于应用110不可见。0043此外,合成系统114可以经由API来展示使得应用110能够对。
19、虚拟表面118进行调整尺寸和修剪的功能性。举例来说,调整尺寸操作可以用来改变虚拟表面118的边界。这意味着新的更新和/或分配将落入新的尺寸所设置的边界内。应用110还可以使用该方法来通知合成系统114虚拟表面118的区不再被使用(例如,不是有效的)并且因此可用于收回。如果调整尺寸导致区域缩小,则应用110不再能够通过合成系统114的管理来对新的边界之外的区做出更新。0044图2描绘了在其中虚拟表面被调整尺寸的示例实现200。在所图示的示例中,分别使用第一和第二阶段202、204来示出3X3虚拟表面被调整尺寸成2X2。在第二阶段204中包含交叉阴影线的区表示作为调整尺寸操作的一部分而将被丢弃的块。
20、片。如先前所提到的,用来存储这些块片的存储器106然后可以由合成系统114收回。调整尺寸之后,在不首先对虚拟表面再次调整尺寸的情况下,应用110将不再能够对丢弃的区(即,打上交叉阴影线的区)做出更新。0045此外,在一个或更多实现中,可以由合成系统114响应于操作的指示的接收来发起调整尺寸操作。举例来说,合成系统114在接收到该指示时可以实现调整尺寸更新而不等待应用调用“委托(COMMIT)”。举例来说,应用可以调用“RESIZE0,0”、“RESIZEINT_MAX,INT_MAX”和“COMMIT”。在该示例中,应用110已经使得内容在第一次调整尺寸时被丢弃,所以第二次调整尺寸没有效果,即。
21、使它在“COMMIT”之前被调用。在这种情况下,显示设备112不显示内容,因为没有内容可用于显示。0046修剪操作可以用来向合成系统114描述应用110所请求的虚拟图表集的区。因此,可以施行修剪操作而不对虚拟表面118的边界进行调整尺寸。然而,它确实告知合成引擎114当前哪些逻辑表面将被分配,其示例结合下面的图而被描述。0047图3描绘了在其中示出应用与虚拟表面的逻辑表面之间的交互的示例实现300。该示例还通过第一和第二阶段302、304的使用而被图示。在该示例中,在第一和第二阶段302、304两者中示出了应用的视口306。相应地,在第一阶段302,应用最初呈现通过打上交叉阴影线而示出的、在视。
22、口306内的虚拟表面(其包括15个块片)的最开始的6个块片。0048当虚拟表面所表示的页面被滚动时,应用现在可以使得最后六个块片如第二阶段304中所示的那样被呈现。相应地,应用110可以调用“修剪”来指示最后六个块片所限定说明书CN104321752A5/16页7的区当前正被使用并且因此内容的其余部分当前未被使用。然后,合成系统114可以选择回收原先表示最开始的6个块片的逻辑表面506。0049合成系统114还可以展示图1的API116以创建和删除逻辑的(即,物理的)和虚拟的表面以及对单个的表面做出更新。合成系统114可以加强将由应用110更新的区以避免当在可更新区域的外部绘制时的外来视像。0。
23、050初始化和批处理图4描绘了更为详细地示出图1的合成系统114的示例实现400。在当今的计算世界中,用户经常发现他们自己观看且在大量和丰富的内容中导航,在任意一个时刻,显示设备并不显示全体内容。这个的示例包括复杂且动态的网页、具有一大串实况项目/照片组的现代应用视图、音乐或其他实况内容,或大的文档。0051诸如触摸和基于图像捕捉的操纵之类的用户接口允许用户在平板、电话、大型TV/投影等等上跨越用户接口的众多显示而快速地滚动、摇摄和变焦缩放。在大多数情况下,全体内容的预呈现和当它动起来且改变时将它保持为最新可能过分昂贵并且实际上甚至可能不能由设备的硬件所支持。替代地,进入视口的内容的部分可以被。
24、智能地呈现和高速缓存,例如在用户操纵使它进入视口之前被推测性地提前呈现并且如前面描述的当视口移开时被从高速缓存丢弃以减少所使用的资源。0052为了向用户提供所期望的响应性,合成和呈现可以由合成系统114单独地施行。这通过合成系统114合并合成引擎402、控制器404和呈现器406而被图示。在一个或更多实现中,可以异步地执行合成系统114的这些组件。这样,预呈现的内容可以由合成引擎402和响应于用户输入的控制器404进行摇摄/变焦缩放,而呈现器406继续呈现。0053如之前所描述的,合成系统114可以采用一个或更多虚拟表面118。虚拟表面118的使用允许对已经呈现的内容进行高速缓存和合成。呈现器。
25、406更新和修剪虚拟表面118上的区域可以基于推测性的呈现策略而被施行,而控制器404和合成引擎402用来转换虚拟表面118。可以基于用户输入来施行该转换以基于虚拟表面118的具有所呈现的内容且在视口中的区域来生成对于用户接口的更新。合成引擎402可以配置成一次合成多个虚拟表面118和/或视像。0054在一个或更多实现中,合成系统114可以配置成采用逻辑表面120作为用作针对合成的前缓冲器的固定或混合尺寸的块片。当呈现器406想要更新虚拟表面118的一部分时,呈现器406可以施行到单独的更新表面中的呈现或者直接呈现到块片表面。如果使用单独的更新表面,则当完成绘制时将内容从更新表面拷贝到这些前缓。
26、冲器块片。然后,当呈现器406将有效内容从块片修剪掉时可以释放这些块片。0055然而,该实现可能导致结构的裂缝,因为已经改变的内容与过时的内容被合成在屏幕上。此外,在虚拟表面上被更新的区的块片或大块之间的接缝可能由于排版隔条和采样(例如双线性)或T型接合而被生成,以及导致过多的CPU和GPU使用以应付排版隔条、多个重叠更新和复杂的有效区。另外,由于动态内容改变或者如用户所操纵的内容,可能遭遇过多的存储器使用。对于每块片固定/混合尺寸的表面的方法,对于较大尺寸的块片来说,由于这些块片的未使用部分,可能遭遇存储器浪费;由于针对较小块片的呈现/处理更新和在合成时刻呈现它们,可能遭遇CPU/GPU浪费。
27、;以及如果使用单独的更新缓冲器,则可能遭遇从更新缓冲器到前缓冲器的CPU/GPU拷贝成本。因此,在合成系统114的实现中可说明书CN104321752A6/16页8以施行各种各样的考虑之间的平衡。0056当操纵不适合视口的丰富和/或动态内容时,这些考虑可以包括针对用户体验质量和性能的下面的一组原则。这样的第一原则称为视觉响应性。这意味着虚拟表面118可以配置成在用户和用户操纵的“指尖”处感觉像真实的表面。这可以通过合成系统114的配置而被支持以在没有被感知到的滞后的情况下响应和跟踪操纵。呈现器406从控制器404和合成引擎402的分离可以用来以鲁棒的方式支持这一原则。0057这样的第二原则牵涉。
28、视觉一致性。在该示例中,当表面被操纵并且其中的动态内容(例如动画)被更新时,显示设备112上的内容并不显示干扰用户的专心或信心的伪像。举例来说,内容可以被显示而没有接缝、可见的裂缝或损坏、用户接口的部分不滞后于它们将被附接到的其他部分,等等。0058这些原则的第三个牵涉视觉完整性。如果用户接口在视觉上是完整的,则用户很少看见覆盖显示设备112的部分的填充物/占位物图案(例如,棋盘),并且如果如此,则该显示被限制到相对短的持续时间。此外,表面内容更新并不可见地滞后,然而这可能不能得到保证,例如,对于低功率设备上跨越变焦缩放级别的开放式(OPENENDED)的丰富内容。举例来说,呈现器406更新虚。
29、拟表面118和合成引擎402合成它越是最优和高效,呈现器406就具有越多的带宽来进一步推测性地提前呈现以实现附加的视觉完整性。0059第四个原则牵涉实况表面。对于该原则,动画、视频和其他动态内容在操纵期间没有磕巴地继续播放和执行。这可以被实现,如果呈现器406实现了视觉完整性并具有实现实况表面的带宽。这可以通过虚拟表面118的高效更新和合成而被支持。0060合成系统114可以配置成平衡这些原则。这样,可以实现综合的解决方案,该解决方案支持视觉正确性和一致性以及响应性以用于管理和合成虚拟表面更新使得呈现器406具有足够的带宽来确保视觉完整性和实况表面。0061图5图示了合成系统114发起虚拟表面。
30、118的操作的示例实现500。该实现通过第一和第二阶段502、504的使用而被图示。在第一阶段502,应用110请求在其中呈现用户接口的表面的尺寸,其可以与一个或更多视像相关联。如之前所描述的,虚拟表面118首先被初始化(例如,被创建)使得它不被实际的分配支持,并且因此在初始化时并不“保持位”。0062然后,应用110可以指定要被呈现到虚拟表面118的视像。相应地,合成引擎402可以合成由呈现器406呈现到虚拟表面118的这些视像,诸如如所图示的汽车。这可以通过使用在其中由应用指定分配的尺寸的块片或“大块”而被施行。0063在第二阶段504,呈现器406可以接收指令以更新虚拟表面118的区域,。
31、诸如该表面的矩形区域。呈现器406与合成引擎402之间的接口是这样的,使得呈现器406可以跨越众多虚拟表面118而实现多个更新506(例如,其可以包括修剪指令、对视像的改变、视像的创建或移除,等等),以及转换可以将这些表面作为内容的视像上的更新。更新506的示例包括配置为光标的视像和配置为用户可选择的按钮的视像。0064在实现中,可以调用“委托”操作使得多个更新506可以由呈现器406呈现,例如,成批地被更新。这样,合成系统114可以防止呈现不完整的更新。这允许呈现器406使得一致且连贯的视像由显示设备112按照视觉一致性原则显示。0065此外,处理用户输入的控制器404可以基于用户操纵直接在。
32、合成引擎402上更新对于视像的转换(例如,用于摇摄或变焦缩放)而不通过呈现器406。这个方面提供了视觉说明书CN104321752A7/16页9响应性,即使呈现器406被占用相对长的时间段,例如为了在具有有限处理资源的瘦设备上处理动画或针对动态内容的其他状态改变和或光栅化复杂内容。0066虚拟表面118的实现可以牵涉向呈现器406提供呈现器406可以呈现到其中的表面和偏移。然后,当合成引擎402已经拾取并且正在处理已经被委托给呈现器406的整批的更新时,该表面可以由合成引擎402“翻转”。这可以用来消除如果单独的更新表面被呈现器406用于呈现更新则本将被施行的拷贝操作。0067翻转还允许合成引。
33、擎402确保呈现器406在单个批次中生成(例如,经由委托操作)的更新506中的每一个使其对于显示设备112来说是一个整体。因此,合成系统114可以避免处理部分更新。0068更新和预读列表图6描绘了示出合成系统114为更新准备表面的示例实现600。合成系统114可以使用各种各样的技术来为更新准备表面。在第一情形中,合成系统114可以从应用接收分配区域以施行更新的请求,其在所图示的示例中被图示为第一矩形602。0069响应于该请求,合成系统114可以分配大于所请求的区域的区域,其被示出为包括所请求的第一矩形602的第二矩形604。因此,如果随后接收到稍微不同的尺寸的更新,则这允许重用之前被分配的表。
34、面。0070合成系统114例如可以维持之前由合成系统114分配的表面608的预读列表606。这可以由合成系统114用来为重用表面608和表面608的“大块”而“积蓄”存储器106。0071这些表面608例如可以被维持在针对不再在使用中的表面的计算设备102的存储器106中。因此,在接收到合成系统114为更新提供表面的请求时,合成系统114可以首先检查预读列表606以确定在计算设备102的存储器106中是否有对应于该请求的任何之前所分配的表面608可用。如果是,则合成系统114可以利用这些表面从而通过不分配新的表面来改进系统的整体效率。此外,通过向表面分配如之前所描述的比所请求的更大的尺寸(例如。
35、,具有更多像素),可以提高这些表面608与随后的更新相关的可能性。0072举例来说,如果在一段时间内接收到稍微不同的尺寸的更新,则这允许之前所分配的表面608的更多重用,例如当下一更新是针对宽出或高出几个像素的区域时。因此,替代分配新的表面,合成系统114可以利用之前被使得可用的表面的预读列表606来定位相关的表面。应当注意,表面的部分的修剪和其他更新也可以是可用的。0073这可以通过基于经确认的批次的区而被跟踪。如果更新适合还具有其他有效内容的现有表面608的可用部分,则该表面可以被重用。这通过避免从多个不同表面进行呈现还降低了在合成侧的成本,因为每个这样的过渡招致设置成本。可以基于历史峰值。
36、使用或各种各样其他的因素来设置预读列表606的尺寸(例如,被维持在该列表中和计算设备102的存储器中的许多表面608)。0074图7描绘了合成系统114使用图6的预读列表606的操作的示例实现700。该实现使用第一、第二和第三阶段702、704、706而被示出。在第一阶段702,表面708被分配以供呈现器406呈现。然后,可以给予呈现器406对于表面708的控制以施行呈现。0075在该呈现期间,可以在第二阶段704分配另一表面710以用于施行更新。在该示例中,该另一个表面710被包括在显示的与正被呈现器406呈现的表面708相同的区域内。因此,当表面708正在被呈现时,表面710可以被分配和填。
37、充(例如,被绘制到)。然后,可以说明书CN104321752A8/16页10将该表面710传递给呈现器406以用于呈现,例如,响应于如之前所描述的委托命令。0076在第三阶段706,可以接收另一更新以用于更新用户接口。在该示例中,合成系统114通过使用图6的预读列表606来确定该更新牵涉之前所分配的表面,例如,来自第一阶段702的表面708。相应地,合成系统114可以使用已经被分配的表面708来包括更新712。这样,可以使用表面708而不重新分配新的表面,从而节省计算设备102的资源。还构思了各种各样其他的示例。0077排版隔条图8描绘了示出合成系统114采用排版隔条的操作的示例实现800。在。
38、维持视觉正确性时的一个问题牵涉丢失排版隔条。举例来说,虚拟表面可以被安置或分级到亚像素偏移,诸如由于滚动等等。相应地,针对显示设备112要显示的像素的值基于相邻像素而被确定,诸如使用双线性采样。0078然而,安置在更新802的边缘804上的更新802的相邻像素可能具有基于错误信息的值。举例来说,如果在更新802外部的相邻像素包含“垃圾”(例如,来自其他更新),则光栅器可以从这些像素采样并由此产生具有坏值的像素,当由显示设备112显示时其可能看起来像接缝。0079应付这个的一个方式是将在可能在另一块片/团块表面806中的边缘处的像素的行或列全部拷贝到更新802的新分配的表面中的相邻像素。然而,这。
39、些附加的拷贝可以证明对于计算设备的处理资源(例如,对于计算设备102的CPU和GPU资源两者)过分地昂贵。0080相应地,在一个或更多实现中,更新802的边缘与表面边缘对齐。然后使用钳制操作,其使得光栅器当采样将落在表面外部的“相邻”像素时使用在该表面边缘处的像素的值。这可以用来产生成本与视觉正确性之间的合理权衡,即使结果可能在视觉上不是完全正确,该结果对于用户看起来也相当正确。在一个或更多实现中,排版隔条本身不被更新。0081在一些实例中,更新边缘可能不能与表面边缘对齐。这可能是由于大于更新的表面的分配。在这样的实例中,可以将在同一表面上的更新的边缘处的像素的行/列拷贝到相邻像素以获得与钳制。
40、行为类似的效果。0082类似地,在一个或更多实现中,当被修剪和更新时,不利用可能被绘制的潜在的新像素来更新排版隔条,因为它们包含连同当前有效的像素被显示过的之前有效的像素。这支持正确性与性能之间的权衡,其在一般情况下产生最小的当被观看时妨碍用户的视觉伪像。0083混合和BLT图9描绘了示出合成系统114管理有效区的示例实现900。如之前所描述的,虚拟表面118可以包含有效的但对于更新不有效的部分。对于所图示的虚拟表面118的示例,例如,更新可以牵涉虚拟表面118中的光标而不是汽车。因此,光标可以用来限定虚拟表面118的区,该区当与虚拟表面118的其他区相对时是有效的。通过跟踪针对该虚拟表面11。
41、8以及其他表面两者的这些区,合成系统114自身可以利用各种各样的优化。0084举例来说,描述了将要从表面被呈现的区划分成被混合的和被BLT的两部分的技术。该技术可以用来寻址在其中更新小且在虚拟表面上得到的有效区相对复杂(例如,导致具有许多小的源表面的复杂网格)的实例。0085如果表面是“预相乘”或透明的(而不是“不透明”或设置成忽略阿尔法值),则该说明书CN104321752A109/16页11表面被“混合”。这可以用来混合具有在其中不存在呈现器所提供的内容的、“被清除的”和/或全透明的像素的较大的矩形形状。在一些情况下,这变得比利用描画复杂形状的路径/边缘中的每一个的轮廓的复杂网格进行处理和。
42、光栅化更优。0086当对于不透明表面有效区是复杂的时,该方法还可以用于排版隔条。举例来说,内部部分可以被BLT但边缘附近的像素被混合使得相邻像素被清除。因此,当光栅器从这些像素采样时可以实现精确的值。在一个或更多实现中,该技术被用于虚拟表面118的边缘而不用于块片团块与构成虚拟表面的表面之间的内部边缘。0087位可以被拷贝并且部分被清除以便确保与块片尺寸对齐的团块表面被分配并且来自拥有该块片的之前的表面的内容被移入新的表面中。在一个或更多实现中,对于将由呈现器406更新的部分(例如,如图7中所示的在中间的更新矩形)并不施行这个。如果表面是不透明的,则在更新之后,可以通过“混合”而使边缘上的像素。
43、变得不透明,即在那些像素的阿尔法通道中得到完全的不透明性。0088可以使用由非重叠矩形条带构成的“区”来施行拷贝、清除和变得不透明的任务中的每一个。可以使得区相交、形成联合或被减去。另外,组成区的非重叠矩形条带被枚举。这允许将各个矩形和区高效地合并成单个区并且提取最优的一组得到的矩形。例如,WIN32HRGN是可以被采用来利用这些工具的GDI结构体。这些操作被用来标识将在其上进行操作(例如,清除或拷贝)的经合并和优化的各组矩形,而不是单个地按照每个块片确定做什么。这可以用来实现用于施行这些任务的CPU和GPU两者中的显著的效率,并且还允许将块片/对齐尺寸减小到相对小的值,诸如32X32或16X。
44、16,从而减少如之前所描述的浪费。0089可以基于有效区的复杂度而不同地应付来自呈现器406的修剪请求。在典型的情况下,可以根据修剪请求来更新块片团块/表面的有效区。然而,如果有效区是复杂的且BLT/混合技术正在被使用,则可以施行附加的操作。举例来说,有效区的部分可以被混合成变成不透明,因为这些部分现在被定位在该区的边缘处。应付这个的另一方式是为从其移除有效部分的块片创建新的团块。然而,这些块片可以继续使得一些有效部分留下。对于这些块片来说,可以从变成不透明的现有表面拷贝留下的有效部分,并且可以清除被修剪掉的部分。当呈现器406例如由于委托操作而委托整个批次的更新时,可以委托这些新的团块。可以。
45、使用矩形条带的区来优化这个操作,尽管还构思了其他示例。0090当呈现器406委托一组更新时,可以将修剪和视觉转换(例如,得到的一组块片团块/表面及其有效区)传达给合成引擎402。可以利用相应的令牌来传达这些更新,这些令牌可以由合成引擎402用来确保针对这些表面上的光栅化的任何未完成的CPU/GPU工作被完成。此时,可以使用附加的技术来进一步改进效率,其示例在下面的段落中被描述。0091下推图10描绘了示出合成系统114使用下推技术组合表面的操作的示例实现1000。在该示例中,合成系统114进行了表面分配1002以显示视像,其在图中使用斜杠(HASHMARKS)而示出为方框。然后进行另一表面分配。
46、1004以施行更新,其示出为安置有该斜杠标记的方框的白色方框。0092合成系统114通过跟踪表面的有效区,可以将分配进行组合来改进资源使用。举例来说,从多个表面的呈现可以比从单个表面的呈现更为资源密集。0093在所图示的示例中,表面分配1004的有效部分被“下推”到表面分配1002中。这说明书CN104321752A1110/16页12使用虚线方框而被图示以指示来自表面分配1004的有效区现在被包括在表面分配1002中。在下推之后,可以释放包括更新的表面分配1004,从而使得计算设备102的存储器106的部分空闲。因此,通过利用对于被组合的表面中的一个的分配,该技术可以用来将表面进行组合而不创。
47、建新的表面分配。0094举例来说,在一些实例中,合成系统114可能面对当前或之前批次的更新中的重叠的大的更新。这可能导致包括相对小的有效区的多个表面的分配。结果,合成系统114可能具有被分配的大的表面,但是相对小的有效区可能防止这些表面被释放。0095然而,通过将有效区从第一表面(例如,较新较小的表面)“下推”到第二表面(例如,较旧较大的表面),可以移除来自第一表面的有效区。这准许释放第一表面,从而使得存储器空闲并且减少由合成系统114管理的表面分配的量而不牵涉附加的表面分配。这样,可以将呈现较少表面的任务分派给呈现器406,从而改进合成系统114的效率。还构思了在其中进行新表面分配的其他技术。
48、,其示例在下面的段落中被描述。0096枚举和组块图11描绘了示出合成系统114将有效区组合成新表面的操作的示例实现1100。如之前所描述的,合成系统114可以配置成跟踪表面分配的有效区,其示例被图示为具有相应的有效区的11021、11022和1102N。随着时间的推移,有效区相对于包括该区的表面的尺寸可能减小,诸如由于来自其它表面的更新等等。相应地,合成系统114可以配置为将来自表面分配110211102N的有效区组合成一个或更多新的表面分配1104。0097合成系统114例如可以配置成通过减少被设置为源并被呈现以用于在显示设备112上合成显示的许多表面来寻址表面分配和合成。这可以通过枚举整体。
49、虚拟表面有效区中经优化的一组矩形而被施行。然后可以为每个这样的矩形创建团块。如果这导致大量较小的矩形,则可以使用前面讨论的混合/BLT技术。这样,可以实现将由合成引擎402适当地合成的、具有已经被清除的像素的区域的较大的矩形。0098当合成引擎402接收到更新批次时,例如,该引擎可以首先确定虚拟表面被“弄脏”的部分和构成将被更新的显示树的视像。这可以被施行以包括显式地计算和将来自更新和修剪的脏区传达给合成器,例如,即使底层表面或“团块”可能改变(例如,下推或重新组块),因为同一内容的有效区可能已经留存(CARRYOVER),所以没有新的脏区被生成。可以每更新/修剪操作地来显式地传达描述有效区的。
50、这些矩形。在一个或更多实现中,可以减小脏区以导致较少数目的较大的矩形从而避免在设置和执行许多较小的呈现操作时招致大的开销。完成这个的一种技术是允许最大数目的脏矩形。当遭遇新的脏矩形时,可以将这些矩形添加到列表或者与整体上导致最小面积增加的矩形相合并(例如,形成联合)。0099网格图12描绘了示出合成系统114采用网格的操作的示例实现1200。网格(例如,一大串点)可以包括多个视像,可以向GPU的驱动器做出对于这些视像的单个绘制调用。这样,可以减少向该驱动器做出的许多绘制调用,从而避免每个调用所牵涉的开销。0100合成引擎402具有合成虚拟表面118的团块/表面的许多选项。举例来说,由于合成引擎。