CN105324795A - 合并图形操作 - Google Patents
合并图形操作 Download PDFInfo
- Publication number
- CN105324795A CN105324795A CN201380077447.2A CN201380077447A CN105324795A CN 105324795 A CN105324795 A CN 105324795A CN 201380077447 A CN201380077447 A CN 201380077447A CN 105324795 A CN105324795 A CN 105324795A
- Authority
- CN
- China
- Prior art keywords
- thread
- patch
- graphic
- graphic element
- change
- 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
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Abstract
描述了用于合并图形操作的技术。在至少一些实施例中,可以生成多个图形操作以应用到诸如图形用户界面(GUI)之类的图形元素。图形操作可以合并为可以处理和渲染的单个可渲染图形操作。
Description
背景技术
现今的计算设备具有日益增加数量的处理能力。例如,典型的设备具有中央处理单元(CPU),其具有可以各自执行数据处理的多个处理核。而且,单独的处理器上可用的核数目继续增加。随着多核处理器的流行,在CPU上并行施行多个处理任务的能力出现。例如,各自处置特定处理任务的多个处理线程可以在处理器的相应核上同时执行。因此,可以完成多个任务的速度增加超过先前的单核处理器。
虽然可用的处理能力已经增加,但是许多计算过程仍然利用用于调度和/或管理处理任务的串行处理方案。例如,一些应用没有配置成使特定处理任务并行化,并且因此不运用多核处理器的并行处理能力。通过不使处理任务并行化,这些过程不接收起因于并行处理的性能益处。
发明内容
提供本概述来以简化形式引入在以下详细描述中进一步描述的概念的选择。本概述既不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用作辅助确定所要求保护的主题的范围。
描述了用于合并图形操作的技术。在至少一些实施例中,可以生成多个图形操作以应用到诸如图形用户界面(GUI)之类的图形元素。图形操作可以合并为可以处理和渲染的单个可渲染图形操作。
附图说明
参考附图描述详细描述。在附图中,参考数字最左边的(多个)数位标识参考数字首先出现的附图。相同参考数字在描述和附图中的不同实例中的使用可以指示类似或同样的项目。
图1是可操作为采用本文所讨论的技术的示例实现中的环境的图示。
图2图示了根据一个或多个实施例的示例实现场景。
图3图示了根据一个或多个实施例的示例实现场景。
图4图示了根据一个或多个实施例的示例实现场景。
图5图示了根据一个或多个实施例的示例实现场景。
图6图示了根据一个或多个实施例的示例实现场景。
图7是根据一个或多个实施例的描述方法中的步骤的流程图。
图8是根据一个或多个实施例的描述方法中的步骤的流程图。
图9图示了根据一个或多个实施例的示例实现场景。
图10图示了根据一个或多个实施例的示例实现场景。
图11图示了根据一个或多个实施例的示例实现场景。
图12图示了根据一个或多个实施例的示例实现场景。
图13是根据一个或多个实施例的描述方法中的步骤的流程图。
图14是根据一个或多个实施例的描述方法中的步骤的流程图。
图15是根据一个或多个实施例的描述方法中的步骤的流程图。
图16图示了如参考图1所描述的示例系统和计算设备,其被配置为实现本文所描述的技术的实施例。
具体实施方式
概述
描述了用于合并图形操作的技术。在至少一些实施例中,可以生成多个图形操作以应用到诸如图形用户界面(GUI)之类的图形元素。图形操作可以合并为可以处理和渲染的单个可渲染图形操作。
例如,考虑其中web浏览器显示网页的场景。本文所讨论的技术可以利用第一线程以施行针对网页的各种处理,诸如网页JavaScript执行、格式化任务、布局任务、输入处理任务等等。可以采用第二独立运行的线程以施行渲染任务,诸如将网页的当前视图显示给屏幕。
基于影响网页的视觉属性的事件,第一线程可以施行图形操作,其改变网页的视觉状态信息。这样的事件的示例包括网页的用户输入、图形元素的动画、由其他过程所生成的事件等等。例如,视觉状态信息可以包括网页的视觉状态的改变,诸如网页的图形元素的运动、图形元素的大小重调和/或重新着色、网页的平移和/或滚动等等。
而且,对于示例场景而言,第二线程可以不立即可用于处理图形操作和基于操作渲染到网页。例如,基于由第一线程所生成的先前的图形操作,第二线程可以忙于渲染。
因此,可以对图形操作进行队列化,直到第二线程变得可用。例如,图形操作可以队列化为“同步点”,其各自对应于网页的视觉状态中的分立改变。当第二线程变得可用于处理图形操作时,图形操作可以合并为可以应用到网页的单个图形操作。例如,任一线程可以将图形操作组合为组合的图形操作,其反映来自单独的操作中的每一个的状态改变。因此,第二线程不需要分离地处理每个图形操作,但是可以处理和渲染组合的图形操作以到达如果单独地处理每个图形操作则将发生的网页的相同视觉状态。
在以下讨论中,首先描述可操作为采用本文所描述的技术的示例环境。然后,题为“用于传播状态信息的同步点”的章节描述根据一个或多个实施例的利用同步点的一些示例实现场景和流程。在此之后,题为“合并图形操作”的章节描述根据一个或多个实施例的用于合并图形操作的一些示例实现场景和流程。最后,题为“示例系统和设备”的章节描述根据一个或多个实施例的可操作为采用本文所讨论的技术的示例系统和设备。
已经呈现了根据一个或多个实施例的示例实现的概述,现在考虑其中可以采用示例实现的示例环境。
示例环境
图1是可操作为采用本文所描述的用于合并图形操作的技术的示例实现中的环境100的图示。所图示的环境100包括可以以各种方式配置的计算设备102。例如,计算设备102可以配置为传统计算机(例如,台式个人计算机、膝上型计算机等等)、移动台、娱乐工具、通信耦合到电视的机顶盒、无绳电话、上网本、游戏控制台、手持式设备(例如,平板电脑)等等,如关于图16所进一步描述的。
计算设备102包括处理器104,其代表针对计算设备102施行各种类型数据处理的功能性。例如,处理器104可以表示计算设备102的中央处理单元(CPU)。处理器104包括多个处理器核,其能够单独地施行处理任务。因此,处理器104被配置为施行并行处理,诸如同时执行多个处理线程。以下参考图16讨论处理器104的实现的另外示例。
计算设备102还包括应用106,其代表经由计算设备102施行各种任务的功能性。应用106的示例包括文字处理器应用、电子邮件应用、内容编辑应用、游戏应用等等。
应用106包括web平台应用108,其代表结合web内容操作的应用。web平台应用108例如可以包括和利用许多不同类型的技术,诸如以示例而非限制的方式,统一资源定位符(URL)、超文本传输协议(HTTP)、表述性状态转移(REST)、超文本标记语言(HTML)、级联样式表(CSS)、JavaScript、文档对象模型(DOM)以及其他技术。web平台应用108还可以利用各种数据格式工作,诸如可扩展应用标记语言(XAML)、可扩展标记语言(XML)、JavaScript对象标注(JSON)等等。web平台应用108的示例包括web浏览器、web应用(例如,“webapp”)等等。
还图示了过程管理器模块110,其代表管理计算设备102的处理任务的各方面的功能性。还包括图形模块112,其代表施行计算设备102的各种图形相关任务的功能性。例如,图形模块112可以施行图形处理、渲染任务等等。例如,图形模块112可以代表诸如web平台应用108之类的应用106的渲染引擎。在至少一些实施例中,可以运用过程管理器模块110和/或图形模块112来实现本文所讨论的用于合并图形操作的技术。
虽然过程管理器模块110和图形模块112被图示为与应用106分离,但是这不旨在是限制性的。例如,过程管理器模块110和/或图形模块112可以实现为应用106的部分和/或扩展,使得其相应的功能性可以由应用106运用。备选地或额外地,过程管理器模块110和/或图形模块112可以实现为计算设备102的操作系统的部分。以下讨论过程管理器模块110和图形模块112的另外操作方面。
计算设备102包括显示设备114,其被配置为输出计算设备102的图形。在显示设备114上所显示的是图形用户界面(GUI)116,其代表与应用106之一相关联的GUI。例如,GUI116可以包括经由web平台应用108所呈现的web内容。例如,GUI116可以表示诸如网页之类的web文档。根据一个或多个实施例,可以采用本文所讨论的用于合并图形操作的技术来施行涉及GUI116的各种处理任务,诸如布局处理、输入处理、图形渲染等等。
已经描述了本文所描述的技术可以在其中操作的示例环境,以下章节现在讨论利用用于传播状态信息的同步点的示例技术,以及然后根据一个或多个实施例的用于合并图形操作的示例技术。
用于传播状态信息的同步点
以下章节描述根据一个或多个实施例的还利用用于传播状态信息的同步点的示例实现场景和进程。
示例实现场景
以下讨论描述利用本文所描述的用于传播状态信息的同步点的技术的一些示例实现场景。示例实现场景可以实现在图1的环境100、图16的系统1600和/或任何其他适合的环境中。例如,场景可以表示过程管理器模块110和/或图形模块112的功能性。例如,可以通过过程管理器模块110和/或图形模块112生成和/或维持不同场景中所讨论的处理线程。
图2图示了根据一个或多个实施例的示例实现场景200。场景200包括GUI202,其代表可以显示的各种图形元素。例如,GUI202可以表示以上参考环境100所讨论的GUI116的实现。GUI202包括视觉元素202a。
场景200还包括主线程204和渲染线程206,其代表用于施行各种处理任务作为生成、管理和渲染GUI202的部分的线程。
一般地,主线程204表示施行针对GUI202的各种类型管理任务的处理线程。管理任务的示例包括生成GUI202,诸如针对应用106之一。管理任务的其他示例包括执行针对GUI202的脚本(例如,JScript)、GUI格式化任务、GUI布局任务、DOM操纵等等。渲染线程206表示处理线程,其施行诸如将GUI202的像素绘制到显示器之类的渲染操作。例如,由主线程204所生成的GUI202的视觉方面的改变可以被渲染以用于由渲染线程206显示。根据各种实施例,主线程204可以将各种图形信息传递给渲染线程206以用于渲染和显示。
转到场景200的中部,GUI202的视觉方面的改变令主线程204生成图形数据208。例如,图形数据208可以描述GUI202的视觉方面的改变。这样的改变的示例包括颜色改变、视觉元素大小重调、视觉元素的动画、视觉元素的重新定位等等。例如,改变可以以各种方式发生,包括响应于经由各种类型用户输入与GUI202的用户交互、基于时间的通知或来自执行网站代码的改变。
响应于生成图形数据208,生成可绘制同步点(PSP)210。一般地,PSP210表示可以由渲染线程206用于渲染GUI202的部分的信息集。例如,PSP210可以包括和/或基于图形数据208。备选地或额外地,PSP210可以包括足以使得渲染线程206能够检索图形数据208的信息,诸如图形数据208所驻留的存储器地址。
在至少一些实施例中,PSP210包括GUI202的各种类型状态信息。例如,PSP210可以包括状态改变信息,诸如自生成先前的PSP和/或由渲染线程206施行先前的渲染操作起已经改变的GUI202的视觉属性的指示。因此,根据一个或多个实施例,PSP210可以不包括用于GUI202的完整渲染的数据,但是可以简单地指示足以将GUI202更新到新视觉状态的状态改变信息。然而,这不旨在是限制性的,并且在至少一些实施例中,PSP可以表示GUI的完整渲染。
在发射PSP210之后,主线程204可以继续处理用于GUI202的管理任务,例如在不等待渲染线程206以检索和/或处理PSP210的情况下。
转到场景200的下部,渲染线程206处理PSP210以生成状态改变212。一般地,状态改变212是基于来自PSP210的状态信息的GUI202的部分的重新渲染。因此,将状态改变212应用到GUI202(例如,作为渲染和/或绘图操作的部分)以使GUI202的视觉状态与由PSP210所指示的视觉状态同步。在该特定示例中,状态改变212的应用导致视觉元素202a的重新定位,例如GUI202内的视觉元素202a的平移运动。
因此,场景200图示了可以经由可由另一线程消耗以应用改变的PSP封装的第一线程所生成的图形元素的视觉状态的改变。而且,在已经发射PSP之后,例如在不等待要处理的PSP的情况下,第一线程可以继续施行其他处理任务。因此,在至少一些实施例中,PSP提供可以通过其在独立的线程之间传递状态信息的机制。
在至少一些实施例中,本文所讨论的技术使得多个PSP能够异步地生成和处理。例如,考虑以下示例场景。
图3图示了根据一个或多个实施例的示例实现场景300。场景300包括GUI302,其代表可以显示的各种图形元素。例如,GUI302可以表示以上参考环境100所讨论的GUI116的实现。GUI302包括视觉元素302a。
场景300还包括用于GUI302的主线程304和渲染线程306。以上讨论了涉及主线程和渲染线程的示例细节。基于GUI302的视觉状态改变,生成包括多个PSP的PSP队列308。例如,PSP队列308包括由主线程304所生成的PSP310、PSP312和PSP314。可以基于各种事件生成PSP,诸如与GUI302的用户交互、由过程所生成的事件等等。如以上所提到的,PSP310、312、314对应于GUI302的视觉状态的改变。例如,PSP310、312、314可以对应于GUI302中的视觉元素302a的运动。
在至少一些实施例中,当由主线程304生成PSP相比渲染线程306可以处理和应用PSP而言更快时,PSP可以累积在PSP队列308中。例如,渲染线程306可以是基于最近消耗的PSP而施行复杂且耗费时间的渲染操作,使得主线程304在渲染线程306完成复杂的渲染操作之前生成附加PSP。因此,PSP可以以时间排序顺序队列化,其中较旧的PSP在队列中放置于较新的一个之前。
转到场景300的下部,渲染线程306从PSP队列308检索PSP310。渲染线程306处理PSP310以生成状态改变316。状态改变316对应于GUI302的视觉状态的改变。例如,状态改变316表示GUI302的先前视觉状态与当前视觉状态之间的差异。因此,在至少一些实施例中,PSP310以及因此状态改变316不表示GUI302的完整渲染,但是包括可以应用以更新GUI302的部分的视觉状态的数据。
渲染线程306将状态改变316应用到GUI302,诸如通过重新渲染GUI的部分。例如,渲染线程306可以基于来自从PSP310所生成的状态改变316的数据而改变视觉元素302a的视觉方面,诸如重新着色视觉元素、重调视觉元素大小等等。备选地或额外地,应用状态改变316可以涉及视觉元素302a的运动,诸如平移、旋转等等。
响应于渲染线程306检索和处理PSP310,PSP312、314在PSP队列308中向上移动。因此,在渲染线程306完成处理和应用PSP310之后,渲染线程306可以检索和处理PSP312。在至少一些实施例中,以它们由主线程304生成并放置在队列中的顺序,由渲染线程306从PSP队列308消耗PSP。来自PSP队列308的PSP的处理可以继续,直到没有另外的PSP保持要在PSP队列308中被检索,和/或闭合GUI302。
因此,主线程304可以生成表示GUI302的多个视觉状态改变的PSP,并且可以将其放置在PSP队列308中以用于由渲染线程306的后续处理。这使得主线程304能够可用于在不等待渲染队列306以消耗来自PSP队列308的PSP的情况下施行其他处理任务。因此,主线程304和渲染线程306可以独立地运行,其中线程之间的交互经由PSP发生。
在至少一些实施例中,本文所讨论的技术使得用户输入能够经由渲染线程高效地处理。例如,考虑以下示例场景。
图4图示了根据一个或多个实施例的示例实现场景400。场景400包括GUI402,其代表可以显示的各种图形元素。例如,GUI402可以表示以上参考环境100所讨论的GUI116的实现。GUI402包括视觉元素402a。
还图示了用于GUI402的主线程404和渲染线程406。以上讨论了涉及主线程和渲染线程的细节。
转到场景400的中部,用户将输入408提供给GUI402。输入408的示例包括触摸输入、鼠标输入、键盘输入、语音输入等等。在至少一些实施例中,输入408表示从诸如输入设备驱动器之类的输入功能性所接收的输入数据。
响应于接收到输入408,主线程404处理输入408以生成PSP410。PSP410表示基于输入408的GUI402的改变。例如,PSP410可以指示GUI402的各种操纵。例如,PSP410可以指示在显示区域中待滚动的GUI402、GUI402的一部分上的放大或缩小、视觉元素402a的改变等等。
继续到场景400的下部,渲染线程406检索和处理PSP410以生成用于GUI402的状态改变412。状态改变412基于PSP410(例如基于输入408)指示GUI402的重新渲染。因此,渲染线程406基于输入408渲染GUI402。如以上所提到的,这可以包括使GUI402滚动、在GUI402的一部分上缩放、平移GUI402和/或GUI402的部分的其他操纵。
因此,一旦渲染线程406已经获得描述用户输入的数据(例如,从PSP和/或以其它方式),则渲染线程406可以无关于与主线程404的交互而将输入应用到GUI402。这使得主线程404能够在由渲染线程406应用输入时施行其他处理,并且使得渲染线程406能够基于输入408主动地渲染GUI402,即便是主线程404忙于另一任务的情况下。
根据各种实施例,描述显示器的视觉区(例如,GUI)的数据可以表示为树结构或“显示树”。一般地,显示树是表示显示器的区的各种视觉元素的数据结构。例如,显示树包括对应于GUI的相应视觉元素的不同节点。如以下所描述的,可以经由显示树的操纵和版本而表征线程之间的交互。例如,考虑以下示例场景。
图5图示了根据一个或多个实施例的示例实现场景500。场景500包括GUI502,其代表可以显示的各种图形元素。例如,GUI502可以表示以上参考环境100所讨论的GUI116的实现。GUI502包括各种视觉元素,诸如窗口、图形、文本、图像、图形处理单元(GPU)基元等等。
场景500还包括用于GUI502的主线程504和渲染线程506。以上讨论了涉及主线程和渲染线程的示例细节。主线程504与显示树508相关联,其是GUI502的数据表示。例如,显示树508包括表示GUI502的各种视觉元素的节点。例如,显示树508包括表示GUI502的主窗口的父节点,以及各自表示GUI502的相应视觉元素的多个子节点。
根据一个或多个实施例,由主线程504利用显示树508以施行针对GUI502的各种处理。例如,当发生指示GUI502的视觉元素的修改的各种事件时,主线程504相应地修改显示树508。因此,显示树508由主线程504“拥有”并且由主线程504可更新以反映将传播给GUI502的各种改变。
转到场景500的中部,根据本文所讨论的各种技术,通过主线程504生成PSP510。例如,响应于改变GUI502的视觉方面的各种事件,可以通过主线程504发射PSP510。PSP510与显示树512相关联。
根据一个或多个实施例,显示树512表示在特定瞬间处所采集的显示树508的快照(例如,副本)。例如,响应于各种事件,主线程504可以修改显示树508的一个或多个节点。主线程504然后可以生成显示树508的副本作为显示树512。主线程504发射包括和/或链接到显示树512的PSP510。因此,显示树512对应于特定时间实例处的显示树508的状态。
在主线程504发射具有显示树512的PSP510之后,主线程504可以继续施行其他任务。例如,在不影响显示树512的情况下,主线程可以做出对显示树508的另外修改。
场景500还包括由渲染线程506所维持的显示树514。一般地,显示树514由渲染线程506用于渲染GUI502的视觉方面。例如,渲染线程506从显示树514读取以绘制到GUI502。根据一个或多个实施例,基于来自先前的PSP(例如在PSP510之前所接收的PSP)的显示树,生成和/或修改显示树514。因此,显示树514由渲染线程506“拥有”。例如,在至少一些实施例中,主线程504不能直接访问或修改显示树514。
转到场景500的下部,渲染线程506检索PSP510并且基于与PSP510相关联的显示树512修改显示树514。例如,显示树512可以指示显示树514的一个或多个节点的改变。因此,可以将改变从显示树512传播给显示树514。一旦显示树514的状态与显示树512的状态同步,则渲染线程506可以基于更新的显示树514继续渲染GUI502。
因此,由主线程504应用到显示树508的视觉处理经由显示树512传播给渲染线程506,其然后将视觉处理应用到其自身的显示树514。
在场景500的下部中还图示的是,主线程504发射PSP516,其包括显示树518。与显示树512一样,显示树518是由主线程504所生成的显示树508的副本。例如,显示树518包括在已经生成显示树512之后已经发生的显示树508的状态的改变。
当渲染线程506完成从显示树514的当前状态绘制到GUI502时,渲染线程506可以检索PSP516并且可以使显示树514与显示树518同步。渲染线程506然后可以基于更新的显示树514继续渲染GUI502。
因此,场景500图示了可以针对显示区维持的显示树的各种状态。例如,参考GUI502,可以维持用于GUI502的显示树的至少三个状态。主线程504维持其将GUI502的视觉状态的各种改变应用到的显示树518。为了使得GUI502的视觉状态的改变能够传播给渲染线程506并显示,可以经由中间显示树采集显示树508的状态,该中间显示树可以持久化以用于由渲染线程506消耗。例如,显示树512、518表示在显示树508的不同状态处采集的显示树508的快照。而且,渲染线程506维持使其与中间显示树同步的显示树514并且从中读取以用于渲染到GUI502。
在至少一些实施例中,PSP可以用于在不要求待生成的显示树的整体副本的情况下将改变传播给显示树。例如,考虑以下示例场景。
图6图示了根据一个或多个实施例的示例实现场景600。场景600包括GUI602,其代表可以显示的各种图形元素。例如,GUI602可以表示以上参考环境100所讨论的GUI116的实现。GUI602包括各种视觉元素,诸如窗口、图形、文本、图像等等。
场景600还包括用于GUI602的主线程604和渲染线程606。以上讨论了涉及主线程和渲染线程的示例细节。主线程604与作为GUI602的数据表示的显示树608相关联。
转到场景600的中部,根据本文所讨论的各种技术,由主线程604生成PSP610。例如,响应于改变GUI602的视觉方面的各种事件,可以通过主线程604发射PSP610。
PSP610包括改变数据612,其表示已经发生的显示树608的改变。例如,主线程604可以响应于各种事件而修改显示树608的一个或多个节点。还可以做出其他类型的改变,诸如添加节点、删除节点、重新布置节点等等。主线程604然后可以生成改变数据612,其指定对显示树608做出的改变。主线程604发射PSP610,其包括和/或链接到改变数据612。根据各种实施例,改变数据612对应于自发射先前的PSP起已经发生的显示树608的改变。因此,PSP612不包括显示树608的整体副本。
在主线程604发射具有改变数据612的PSP610之后,主线程604可以继续施行其他任务。例如,在不影响改变数据612的情况下,主线程可以对显示树608做出另外修改。
场景600还包括由渲染线程606所维持的显示树614。一般地,显示树614由渲染线程606用于渲染GUI602的视觉方面。例如,显示树614对应于基于先前的PSP所生成的显示树608的版本。
转到场景600的下部,渲染线程606检索PSP610并且基于改变数据612修改显示树614。因此,可以将改变数据612中所指示的改变应用到显示树614。然后,渲染线程606可以基于更新的显示树614继续渲染GUI602。
根据各种实施例,PSP610持久化直到渲染线程606完成从PSP610读取数据和/或以其它方式利用PSP610。例如,PSP610表示显示树608的有效状态,其保持有效并且由渲染线程606可用直到渲染线程606释放PSP610,和/或继续处理后续PSP。在至少一些实施例中,在渲染线程606完成处理PSP610之后,存储器地址和/或用于PSP610的地址可以被释放以用于其他目的,例如后续PSP。
因此,经由改变数据612将由主线程604应用到显示树608的视觉处理传播给渲染线程606,其然后将视觉处理应用到其自身的显示树614。
场景600的下部中还图示的是,主线程604发射PSP616,其包括改变数据618。例如,改变数据618指示在主线程604发射PSP610之后已经发生的显示树608的状态的改变。
当渲染线程606完成从显示树614的当前状态绘制到GUI602时,渲染线程606可以检索PSP616并且可以基于改变数据618使显示树614同步。然后,渲染线程606可以基于更新的显示树614继续渲染GUI602。
因此,场景600图示了可以采用PSP以在不生成用于GUI的显示树的多个副本的情况下在线程之中共享GUI的视觉状态的改变。而且,可以管理PSP的寿命以使得显示树的特定状态能够针对渲染线程持久化,而同时生成PSP的主线程施行其他处理。
虽然参考渲染场景讨论了以上所呈现的场景,但是这不旨在是限制性的。例如,同步点可以用于在作为各种不同过程和/或任务的部分的各种不同线程之间传播状态信息。
在至少一些实施例中,例如出于经济性或正确性的原因,GUI可以包括不能或必须不在不同线程上分离地渲染的特定元素。因此,这样的实施例可以选择处理主线程上的PSP,直到其再次认为适于针对改进的性能而使用渲染线程。而且,这样的实施例可以选择取决于资源的可用性而推迟渲染线程的创建、使其暂停或使其关闭。
已经讨论了一些示例实现场景,现在考虑根据一个或多个实施例的一些示例进程的讨论。
示例进程
以下讨论描述根据一个或多个实施例的用于状态信息的同步点的一些示例进程。示例进程可以在图1的环境100、图16的系统1600和/或任何其他适合的环境中采用。
图7是根据一个或多个实施例的描述方法中的步骤的流程图。参考与第一线程相关联的步骤和与第二线程相关联的步骤讨论该方法。第一线程和第二线程可以与各种不同的过程和/或任务相关联。
步骤700确定待传播给另一线程的状态改变。如以上所讨论的,状态改变可以涉及诸如GUI的部分之类的图形元素的视觉方面的改变。然而,根据各种实施例,可以传播各种其他类型的状态改变。例如,状态改变可以涉及与计算设备相关联的各种不同过程和/或资源。
步骤702发射同步点,其包括状态改变的指示。参考视觉方面的改变,例如,同步点可以包括和/或标识指示视觉方面将如何改变的数据。例如,同步点可以包括用于图形元素的显示树的一个或多个部分,其限定图形元素将如何渲染和显示。备选地和/或额外地,同步点可以标识可以在何处找到用于状态改变的数据,诸如存储器地址。
在至少一些实施例中,发射同步点可以包括将同步点放置在同步点队列中。例如,如果一个或多个其他同步点保持待处理,则可以将同步点放置在同步点队列中的其他同步点之后,使得可以按顺序处理不同的同步点。
步骤704在发射同步点之后继续施行其他任务。例如,第一线程可以继续执行其他任务,诸如生成附加同步点。因此,第一线程不需要等待直到同步点由第二线程消耗以继续处理。
步骤706检索同步点。例如,第二线程可以从同步点队列检索同步点。
步骤708处理同步点以确定状态改变。例如,状态改变可以涉及诸如GUI之类的图形元素的视觉状态的改变。然而,如以上所提到的,实施例不限于视觉元素的状态改变,并且可以是指各种不同的过程、资源等等的状态改变。
步骤710应用状态改变。例如,可以将状态改变应用到与同步点相关联的过程和/或资源。例如,可以应用状态改变以改变图形元素的视觉外观。
图8是根据一个或多个实施例的描述方法中的步骤的流程图。参考与主线程相关联的步骤和与渲染线程相关联的步骤讨论该方法。以上讨论了主线程和渲染线程的示例实施例和功能性。
步骤800生成图形元素的视觉状态的改变。例如,主线程可以施行各种类型的处理,其导致图形元素的改变,诸如GUI的视觉改变。如以上所详述的,主线程可以对由主线程所维持的显示树做出修改。
步骤802发射同步点,其包括视觉状态的改变的指示。例如,同步点可以包括表征改变的数据和/或可以标识可以在何处检索数据。例如,同步点可以包括和/或标识由主线程所维持的显示树的版本。
步骤804在发射同步点之后继续施行其他任务。例如,在继续其他处理任务之前,主线程不需要等待渲染线程以消耗同步点。
步骤806检索同步点。例如,渲染线程可以从同步点队列检索同步点。
步骤808处理同步点以确定图形元素的视觉状态的改变。例如,可以检查由同步点所包括和/或所标识的显示树。
步骤810渲染图形元素以应用视觉状态的改变。例如,渲染线程可以将视觉状态的改变应用到由渲染线程所维持的显示树。渲染线程然后可以基于更新的显示树而渲染图形元素。
虽然在本文中参考两个不同线程之间的交互讨论了实施例,但是仅出于示例的目的而呈现这一点。例如,在至少一些实施例中,多个不同线程可以产生同步点并且可以发射同步点以用于由特定线程处理。在GUI渲染场景中,例如,多个不同线程可以产生指定GUI的视觉方面的改变的同步点。同步点可以由不同线程发射以用于由渲染线程消耗。
已经讨论了用于状态信息的同步点的一些示例实现场景和进程,现在考虑根据一个或多个实施例的用于合并图形操作的一些示例实现场景和进程。
合并图形操作
以下章节还描述根据一个或多个实施例的合并图形操作的示例实现场景和进程。在至少一些实施例中,以下所讨论的场景和进程可以采用以上所讨论的技术的方面。
示例实现场景
以下讨论描述针对本文所描述的用于合并图形操作的技术的一些示例实现场景。示例实现场景可以实现在图1的环境100、图16的系统1600和/或任何其他适合的环境中。例如,场景可以表示过程管理器模块110和/或图形模块112的功能性。例如,可以通过过程管理器模块110和/或图形模块112生成和/或维持不同场景中所讨论的处理线程。
图9图示了根据一个或多个实施例的示例实现场景900。场景900包括用于GUI906的主线程902和渲染线程904。以上讨论了主线程和渲染线程的示例实现。
如场景900的上部中所进一步图示的,渲染线程904在执行渲染操作,诸如基于由主线程902所发射的PSP。当渲染线程904在执行渲染操作时,主线程902在执行附加的处理任务,诸如生成待渲染到GUI906的视觉改变。例如,主线程902生成图形操作908、图形操作910和图形操作912。一般地,图形操作908、910、912表示要应用到GUI906的分立视觉改变,其经由分离的相应处理操作生成。图形操作908、910、912可以各自与GUI906的相同图形元素或与不同的相应图形元素相关联。在至少一些实施例中,图形操作可以各自表示由主线程902所生成的PSP。
转到场景900的中部,渲染线程904完成渲染操作,并且因此可用于施行附加的渲染任务。作为响应,图形操作908、910、912合并为PSP914。根据一个或多个实施例,PSP914表示图形操作908、910、912的组合,使得在PSP914中表示每一个图形操作中所指示的GUI906的视觉改变。
例如,考虑其中图形操作908、910、912各自影响GUI906的相同图形元素的场景。图形操作908改变图形元素的颜色,并且图形操作910、912指示GUI906内的图形元素的相应平移运动。因此,PSP914包括针对颜色改变以及平移运动的数据。
转到场景900的下部,渲染线程904检索和处理PSP914。例如,渲染线程904基于PSP914中所指示的图形操作而渲染到GUI906。
因此,场景900图示了在一个或多个实施例中,当累积多个图形操作(例如,PSP)时(例如,当渲染线程繁忙时),可以诸如经由PSP将图形操作合并为组合的图形操作。可以对组合的图形操作进行渲染,使得在所显示的结果中反映每个单独的操作中所指示的视觉改变。因此,保存处理时间和资源,因为渲染线程不需要通过多个单独的操作迭代,但是可以简单地应用反映多个组合的操作的单个操作。
可以采用各种技术来跟踪图形元素的视觉改变。例如,可以利用“修补”模型,其将视觉元素的改变表征为可以在渲染之前应用的补丁。例如,考虑以下示例场景。
图10图示了根据一个或多个实施例的示例实现场景1000。场景1000包括主线程1002,其代表可以用于施行针对GUI1004的各种处理任务的一个或多个不同类型的处理线程。以上讨论了主线程的示例实现。
与主线程1002相关联的是显示树1006,其代表用于限定GUI1004的方面的数据结构。例如,显示树1006包括限定GUI1004的各种属性的多个节点。例如,显示树1006的单独节点可以包括限定GUI1004的相应图形元素的数据,诸如窗口、文本元素、图像元素、可填写字段、可选择控件等等。
例如,显示树1006包括父节点1008、子节点1010和子节点1012。例如,父节点1008可以表示GUI1004的主窗口。子节点1010、1012表示主窗口内的图形元素。
根据一个或多个实施例,主线程1002生成用于显示树1006的“补丁”以指示GUI1004的改变。例如,当发生改变GUI1004的视觉属性的事件时,主线程1002生成对应于改变的视觉属性的显示树1006的节点的补丁。
例如,考虑由主线程1002所处理的事件导致相应地与节点1010、1012相关联的图形元素的改变。事件的示例包括用户输入、动画、颜色改变、由其他过程所生成的事件等等。响应于事件,主线程1002生成针对节点1010的补丁1010a和针对节点1012的补丁1012a。
节点1010包括到补丁1010a的链路和补丁1010a的版本号。补丁1010a还包括补丁版本,其指示补丁1010a的版本。例如,可以发生节点1010的多个改变,其中针对每个改变生成补丁。当生成每个新补丁时,可以更新每个补丁的版本号以指示补丁序列中的每个补丁的相对位置。如以下所详述的,这可以使得节点的改变能够准确地渲染。
补丁1010a还包括补丁数据,其指示节点1010的改变。例如,补丁数据可以指示诸如图形元素的运动、颜色改变、大小改变等等的改变。根据一个或多个实施例,补丁也可以包括各种其他类型的数据。
与补丁1010a类似,补丁1012a包括节点ID和补丁版本。
根据各种实施例,节点1010包括到补丁1010a的链路(例如指针),并且节点1012包括到补丁1012a的链路。因此,当线程访问节点时,链路的存在指示针对节点存在补丁。可以跟随链路以访问相关联的补丁。
在至少一些实施例中,补丁本性上是累积的,使得节点的后续改变令用于节点的现有补丁更新。因此,主线程1002可以使节点1010的状态的另外改变基于补丁1010a。例如,如以下所详述的,主线程1002可以生成补丁1010a的更新版本以指示节点1010的状态的另外改变。
转到场景1000的中部,由补丁1010a、1012a所指示的视觉改变将传播给GUI1004。例如,主线程1002可以确定GUI1004的视觉改变将由渲染线程应用。因此,主线程1002发射PSP1014,其包括补丁1010a、1012a。
继续场景1000的下部,渲染线程1016检索和处理PSP1014。例如,渲染线程1016将来自补丁1010a的补丁数据应用到节点1010,并且将来自补丁1012a的补丁数据应用到节点1012,以生成更新的显示树1018。因此,分别基于补丁1010a、1012a更新节点1010、1012的数据。渲染线程1016然后从更新的显示树1018读取并且基于来自更新的显示树1018的数据而渲染到GUI1004。
参考先前所讨论的场景800,单独的图形操作可以实现为可以合并为单个组合的图形操作(例如单个PSP)的补丁。
如场景1000中所图示的,各种线程(例如,主线程1002和渲染线程1016)可以维持显示树的逻辑上一致的视图并且基于其显示树的相应视图进行操作而不彼此干扰。例如,主线程1002根据需要创建补丁,使得渲染线程1016可以无关于针对树的任何未应用的补丁而从树的最新版本读取。因此,主线程1002在任何未应用的补丁的上下文中查看显示树。当渲染线程1016在处理时间内向前移动时,其应用补丁(例如,从PSP),在其之后,可以使补丁止用。因此,渲染线程1016以其最新更新的形式查看显示树,例如不包括任何未应用的补丁。
根据各种实施例,节点可以在渲染操作之间(例如,在PSP之间)修补多次以跟踪节点状态的改变。例如,考虑以下示例场景。
图11图示了根据一个或多个实施例的示例实现场景1100。场景1100表示用于利用补丁跟踪渲染通道之间的显示树的节点状态的更新的示例技术。场景1100包括显示树1102,其表示GUI1104的视觉属性。
与显示树1102相关联的是补丁1106,其基于将应用到GUI1104的视觉属性的状态改变而生成。如所图示的,将补丁1106应用到显示树1102的节点1108。
转到场景1100的中部,事件(例如,处理事件)指示将应用到节点1108的另一状态改变。因此,更新补丁1106中的补丁数据以反映另一状态改变。在至少一些实施例中,补丁1106是累积的,使得在补丁1106的补丁数据中反映节点1108的状态信息的多个改变。
继续到场景1100的下部,生成包括补丁1106的PSP1110,其指示将向GUI1104执行渲染操作。例如,可以通过用于GUI1104的主线程生成PSP1110。用于GUI1104的渲染线程处理PSP1110并且将补丁1106应用到节点1108以生成更新的显示树1112。
连同补丁1106一起,针对显示树1102的其他节点所生成的其他补丁可以由渲染线程应用以生成更新的显示树1112。例如,将来自其他补丁的状态信息应用到相应节点。
在至少一些实施例中,维持具有相关联的补丁的节点列表,例如作为PSP1110的一部分和/或与其分离。因此,可以采用列表来以顺序方式生成更新的树1112。如以上所提到的,节点包括到用于节点的任何补丁的链路(例如,指针)。因此,保持已经针对其生成补丁的节点列表提供资源的更高效使用,因为待修补的节点和用于节点的补丁二者可以位于单个操作中。
一旦渲染线程完成应用来自PSP1110的补丁以生成更新的显示树1112,则渲染线程可以从更新的显示树1112读取并且渲染到GUI1104。
根据各种实施例,不同的处理线程可以利用显示树的不同版本。例如,考虑以下示例实现场景。
图12图示了根据一个或多个实施例的示例实现场景1200。场景1200包括主线程1202,其执行针对GUI1204的各种处理任务。还图示了显示树1206,其表示GUI1004的视觉属性。显示树1206与补丁1208相关联,补丁1208包括用于显示树1206的节点的状态信息。如以上和以下所讨论的,补丁1208可以由主线程1202在渲染操作之间和/或期间生成和/或更新以反映GUI1204的视觉状态的进行中的改变。
转到场景1200的下部,通过包括补丁1208的主线程1202发射PSP1120。PSP1120指令渲染线程1212应用补丁1208并且向GUI1204渲染。因此,渲染线程1212应用补丁1208以生成更新的显示树1214。例如,显示树1206的节点可以利用来自补丁1208的状态信息更新以生成更新的显示树1214。
渲染线程1212然后从更新的显示树1214读取数据,并且基于数据向GUI1204渲染。
还图示的是,主线程1202在生成更新的显示树1214之后继续施行针对GUI1204的处理,并且因此生成针对更新的显示树1214的补丁1216。根据各种实施例,主线程1202在显示树自身的上下文中的更新的显示树1214以及相关联的补丁1216上查看和/或操作。然而,渲染线程1212仅访问更新的显示树1214而非补丁1216。而且,在生成更新的显示树1214之后并且在不等待渲染线程1212基于更新的显示树1214渲染的情况下,主线程1202可以继续施行处理(例如,生成补丁1216)。
因此,主线程1202基于影响GUI1204的视觉状态的不同事件而生成和/或更新补丁。渲染线程1212利用自先前的显示树更新起已经累积的补丁来偶尔更新用于GUI1204的显示树。渲染线程1212从显示树的最新版本(诸如更新的显示树1214)进行渲染。因此,补丁可以用于跟踪渲染操作之间的GUI1204的视觉状态的改变,并且可以应用以更新用于GUI1204的显示树的可渲染状态。
示例进程
以下讨论描述根据一个或多个实施例的用于合并图形操作的一些示例进程。示例进程可以在图1的环境100、图16的系统1600和/或任何其他适合的环境中采用。
图13是根据一个或多个实施例的描述方法中的步骤的流程图。步骤1300确定要将多个图形操作应用到图形元素。例如,图形操作可以对应于诸如GUI之类的图形元素的视觉状态的多个改变。例如,图形操作可以各自表示分离的不同数据处理操作。在至少一些实施例中,图形操作可以对应于不同补丁、不同PSP等等。
步骤1302将多个图形操作合并为针对图形元素的组合的图形操作。例如,组合的图形操作可以反映来自多个图形操作中的每一个的图形元素的视觉状态的改变。因此,组合的图形操作可以表示每一个单独的图形操作的累积效果。在至少一些实施例中,例如在没有分离地应用每一个单独的图形操作的情况下,可以经由单个渲染操作应用组合的图形操作。例如,合并图形操作可以包括将多个补丁组合为单个补丁,其可以应用到显示树以生成反映来自每一个补丁的状态信息的更新的显示树。
根据各种实施例,渲染线程可以忙于渲染先前的图形操作。因此,当等待渲染线程变得可用时,可以队列化多个当前的图形操作。例如,可以基于图形操作生成和/或更新补丁。多个图形操作可以响应于确定渲染线程已经变得可用于施行另外的渲染而合并。例如,可以将一组补丁组合以生成可以应用于更新显示树的单个补丁。
步骤1304生成指示将渲染组合的图形操作的处理指令。例如,可以向用于图形元素的渲染线程指令和/或通知将应用组合的补丁以更新用于图形元素的节点,并且图形元素将基于更新的节点而渲染。在至少一些实施例中,可以生成PSP,其包括或指向组合的图形操作,例如将用于更新显示树的补丁和/或补丁组。
在至少一些实施例中,渲染线程可以将针对多个未决PSP的补丁应用到显示树,并且然后基于最近应用的PSP而从显示树进行渲染。这使得能够在不要求多个中间绘制操作的情况下实现多个PSP的最后视觉结果,因此节省系统资源。
图14是根据一个或多个实施例的描述方法中的步骤的流程图。在至少一些实施例中,方法描述了针对图形元素合并图形操作的示例方法。
步骤1400生成描述图形元素的视觉状态的改变的补丁。例如,补丁可以与诸如GUI之类的图形元素的树结构的节点相关联和/或链接到它。因此,补丁可以描述将对节点数据做出的改变。在各种实施例中,补丁与相关联的节点分离,并且因此包括在补丁中的状态信息不影响节点的可渲染状态,直到将补丁应用到节点。
步骤1402确定将应用图形元素的视觉状态的改变。例如,可以接收渲染线程可用于渲染改变的指示。
步骤1404基于补丁而更新用于图形元素的数据结构。如以上所讨论的,例如,可以将补丁应用到用于图形元素的节点,使得利用来自补丁的图形数据更新和/或替换节点中的图形数据。在至少一些实施例中,可以将多个不同的补丁应用到显示树的相应的不同节点以生成显示树的可渲染更新版本。
步骤1406基于更新的数据结构而渲染图形元素。例如,渲染线程可以从更新的数据结构读取,并且基于更新的数据结构对图形元素进行渲染。
虽然本文参考更新现有数据结构(例如,现有节点)讨论了实施例,但是应当理解,技术可以用于生成新数据结构。例如,补丁可以包括用于生成新节点、新子树等等的指令。因此,可以经由本文所讨论的技术创建和更新数据结构。
图15是根据一个或多个实施例的描述方法中的步骤的流程图。在至少一些实施例中,方法描述了利用多个线程来合并图形操作的示例方式。
步骤1500执行第一线程以生成描述图形元素的视觉状态的改变的补丁。如以上所讨论的,例如,用于GUI的主线程可以生成和/或更新针对GUI的显示树的补丁。
步骤1502执行第二线程以应用补丁来更新用于图形元素的数据结构并且基于更新的数据结构而渲染图形元素。例如,如以上所讨论的,用于GUI的渲染线程可以将补丁应用到显示树以生成更新的显示树,并且基于显示树而渲染GUI的一个或多个部分。
根据各种实施例,可以在不同的相应处理器核上执行第一线程和第二线程。而且,虽然单个线程被讨论为生成线程并将其应用到数据结构,但是应当理解,实施例可以采用多个不同的线程来生成、更新和/或应用补丁到数据结构。附加地,实施例可以采用用于从诸如显示树之类的数据结构渲染的多个渲染线程。
已经讨论了一些示例进程,现在考虑根据一个或多个实施例的示例系统和设备的讨论。
示例系统和设备
图16一般地在1600处图示了示例系统,其包括代表可以实现本文所描述的各种技术的一个或多个计算系统和/或设备的示例计算设备1602。例如,以上参考图1所讨论的计算设备102可以体现为计算设备1602。例如,计算设备1602可以是服务提供商的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统和/或任何其他适合的计算设备或计算系统。
如所图示的示例计算设备1602包括通信地互相耦合的处理系统1604、一个或多个计算机可读介质1606和一个或多个输入/输出(I/O)接口1608。虽然未示出,但是计算设备1602还可以包括将各种组件互相耦合的系统总线或其他数据和命令传输系统。系统总线可以包括不同总线结构中的任一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线架构中的任一种的处理器或本地总线。还预期到各种其他示例,诸如控制和数据线。
处理系统1604代表使用硬件施行一个或多个操作的功能性。因此,处理系统1604被图示为包括硬件元件1610,其可以被配置为处理器、功能块等等。这可以包括作为专用集成电路或使用一个或多个半导体形成的其他逻辑设备的硬件中的实现。硬件元件1610不受形成其的材料或其中所采用的处理机制的限制。例如,处理器可以包括(多个)半导体和/或晶体管(例如,电子集成电路(IC))。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质1606被图示为包括存储器/存储装置1612。存储器/存储装置1612表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置1612可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪速存储器、光盘、磁盘等等)。存储器/存储装置1612可以包括固定介质(例如,RAM、ROM、固定硬驱动等等)以及可移动介质(例如,闪速存储器、可移动硬驱动、光盘等等)。可以以各种其他方式配置计算机可读介质1606,如以下所进一步描述的。
(多个)输入/输出接口1608代表允许用户将命令和信息录入到计算设备1602以及还允许使用各种输入/输出设备将信息呈现给用户和/或其他组件或设备的功能性。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音识别和/或话音输入)、扫描器、触摸功能性(例如,被配置为检测物理接触的电容或其他传感器)、相机(例如,其可以采用可见或诸如红外频率之类的不可见波长来检测不涉及作为手势的触摸的运动)等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备等等。因此,可以以如以下所进一步描述的各种方式配置计算设备1602以支持用户交互。
本文可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。一般地,这样的模块包括例程、程序、对象、元件、组件、数据结构等等,其施行特定任务或实现特定抽象数据类型。如本文所使用的术语“模块”、“功能性”和“组件”一般地表示软件、固件、硬件或其组合。本文所描述的技术的特征是平台无关的,这意指技术可以实现在具有各种处理器的各种商业计算平台上。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或跨其传送。计算机可读介质可以包括可以由计算设备1602访问的各种介质。以示例而非限制的方式,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
“计算机可读存储介质”可以是指与仅仅信号传输、载波或信号自身相比使得信息能够持久存储的介质和/或设备。因此,计算机可读存储介质不包括信号自身。计算机可读存储介质包括以适于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据之类的信息的方法或技术实现的诸如易失性和非易失性、可移动和不可移动介质和/或存储设备的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字多用光盘(DVD)或其他光学存储装置、硬盘、磁带盒、磁带、磁盘存储装置或其他磁性存储设备、或其他存储设备、有形媒体或适于存储期望的信息并且可以由计算机访问的制造品。
“计算机可读信号介质”可以是指信号承载介质,其被配置为诸如经由网络将指令传送给计算设备1602的硬件。信号介质典型地可以体现计算机可读指令、数据结构、程序模块、或诸如载波、数据信号或其他传输机制之类的调制数据信号中的其他数据。信号介质还包括任何信息递送介质。术语“调制数据信号”意指其一个或多个特性以便于将信息编码在信号中的这样的方式设定或改变的信号。以示例而非限制的方式,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、射频(RF)、红外和其他无线介质之类的无线介质。
如先前所描述的,硬件元件1610和计算机可读介质1606代表可以在一些实施例中用于实现本文所描述的技术的至少一些方面的硬件形式中所实现的指令、模块、可编程设备逻辑和/或固定设备逻辑。硬件元件可以包括以下各项的组件:集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅或其他硬件设备中的其他实现。在该上下文中,硬件元件可以操作为施行由硬件元件所体现的指令、模块和/或逻辑限定的程序任务的处理设备,以及用于存储供执行的指令的硬件设备,例如先前描述的计算机可读存储介质。
前述内容的组合也可以用于实现本文所描述的各种技术和模块。因此,软件、硬件或程序模块和其他程序模块可以实现为体现在某种形式的计算机可读存储介质上和/或通过一个或多个硬件元件1610体现的一个或多个指令和/或逻辑。计算设备1602可以被配置为实现对应于软件和/或硬件模块的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件1610,可以至少部分地在硬件中达到作为软件的计算设备1602可执行的模块的实现。指令和/或功能可以由一个或多个制造品(例如,一个或多个计算设备1602和/或处理系统1604)可执行/可操作以实现本文所描述的技术、模块和示例。
如图16中还图示的,当运行个人计算机(PC)、电视设备和/或移动设备上的应用时,示例系统1600使得能够实现无缝用户体验的普适环境。当在利用应用、玩视频游戏、看视频等等时从一个设备转变到下一设备时,服务和应用基本上类似地运行在所有三个环境中以得到共同的用户体验。
在示例系统1600中,通过中央计算设备互连多个设备。中央计算设备可以在多个设备本地或者可以与多个设备远程地定位。在一个实施例中,中央计算设备可以是通过网络、因特网或其他数据通信链路连接到多个设备的一个或多个服务器计算机的云。
在一个实施例中,该互连架构使得能够跨多个设备递送功能性以将共同且无缝的体验提供给多个设备的用户。多个设备中的每一个可以具有不同的物理要求和能力,并且中央计算设备使用平台来使得能够向设备递送既针对设备定制又对所有设备共同的体验。在一个实施例中,创建目标设备的类别,并且针对设备的通用类别定制体验。可以通过设备的物理特征、使用类型或其他共同特性限定设备的类别。
在各种实现中,计算设备1602可以采取各种不同的配置,诸如用于计算机1614、移动装置1616和电视1618用途。这些配置中的每一个包括可以具有一般地不同构建和能力的设备,并且因此可以根据不同设备类别中的一个或多个对计算设备1602进行配置。例如,计算设备1602可以实现为设备的计算机1614类别,其包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等等。
计算设备1602还可以实现为设备的移动装置1616类别,其包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等等的移动设备。计算设备1602还可以实现为设备的电视1618类别,其包括具有或连接到非正式观看环境中的一般较大屏幕的设备。这些设备包括电视、机顶盒、游戏控制台等等。
本文所描述的技术可以由计算设备1602的这些各种配置支持并且不限于本文所描述的技术的具体示例。例如,可以全部或部分通过分布式系统的使用(诸如经由平台1622通过“云”1620)实现参考过程管理器模块110和/或图形模块112所讨论的功能性,如以下所描述的。
云1620包括和/或代表用于资源1624的平台1622。平台1622对云1620的硬件(例如,服务器)和软件资源的底层功能性进行抽象。资源1624可以包括在远程于计算设备1602的服务器上执行计算机处理时可以利用的应用和/或数据。资源1624还可以包括通过因特网和/或通过诸如蜂窝或Wi-Fi网络之类的订户网络所提供的服务。
平台1622可以对将计算设备1602与其他计算设备连接的资源和功能进行抽象。平台1622还可以用于对资源的规模进行抽象以将对应水平的规模提供给经由平台1622实现的资源1624所遭遇的需求。因此,在互连设备实施例中,可以遍及系统1600分布本文所描述的功能性的实现。例如,可以部分地在计算设备1602上以及经由对云1620的功能性抽象的平台1622而实现功能性。
本文所讨论的是可以实现为施行本文所讨论的技术的许多方法。可以在硬件、固件、或软件、或其组合中实现方法的方面。方法被示出为步骤集,其指定由一个或多个设备执行的操作并且不一定限于针对由相应框施行操作所示的顺序。而且,根据一个或多个实现,关于特定方法所示的操作可以与不同方法的操作组合和/或交换。可以经由以上参考环境100所讨论的各种实体之间的交互实现方法的方面。
结论
描述了用于合并图形操作的技术。虽然以特定于结构特征和/或方法动作的语言描述了实施例,但是应当理解,随附权利要求中所限定的实施例不一定限于所描述的特定特征或动作。而是,特定特征和动作是作为实现所要求保护的实施例的示例形式而公开的。
Claims (10)
1.一种系统,包括:
至少一个处理器;以及
包括存储在其上的指令的一个或多个计算机可读存储介质,所述指令响应于通过所述至少一个处理器的执行而令所述系统施行包括以下各项的操作:
确定经由多个不同处理操作所生成的多个图形操作将应用到图形元素;以及
将所述多个图形操作合并为经由单个渲染操作向所述图形元素可执行的组合的图形操作。
2.根据权利要求1所述的系统,其中所述图形元素包括图形用户界面(GUI),并且其中所述合并包括将来自所述多个图形操作的数据应用到用于所述GUI的数据结构。
3.根据权利要求1所述的系统,其中所述合并包括将来自所述多个图形操作中的每一个的视觉状态信息组合为用于所述图形元素的组合的视觉状态。
4.根据权利要求1所述的系统,其中所述合并包括生成针对所述组合的图形操作的同步点,并且发射所述同步点以用于由渲染线程处理。
5.根据权利要求1所述的系统,其中所述多个图形操作由用于所述图形元素的显示树的节点的补丁来表示,并且其中所述合并包括将所述补丁应用到所述节点。
6.包括存储在其上的指令的一个或多个计算机可读存储介质,所述指令响应于通过计算设备的执行而令所述计算设备施行包括以下各项的操作:
生成描述图形元素的视觉状态的改变的补丁;
确定所述图形元素的视觉状态的改变将应用到所述图形元素;以及
基于所述补丁而更新用于所述图形元素的数据结构,使得所述图形元素基于更新的数据结构而可渲染。
7.根据权利要求6所述的一个或多个计算机可读存储介质,其中所述数据结构包括显示树,针对所述显示树的节点生成所述补丁,并且所述更新包括基于来自所述补丁的状态信息而更新所述节点。
8.根据权利要求6所述的一个或多个计算机可读存储介质,所述操作还包括在更新所述数据结构之前更新所述补丁以反映所述图形元素的视觉状态的后续改变。
9.一种计算机实现的方法,包括:
经由第一处理器核执行第一线程以生成描述图形元素的视觉状态的改变的补丁;以及
经由第二处理器核执行第二线程以应用所述补丁来更新用于所述图形元素的数据结构,并且基于更新的数据结构而渲染所述图形元素。
10.根据权利要求9所述的方法,其中所述补丁对应于将应用到所述图形元素的不同图形操作,并且其中所述执行第二线程以应用所述补丁包括将所述不同图形操作合并为将经由所述第二线程渲染的组合的图形操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/918,825 US9633408B2 (en) | 2013-06-14 | 2013-06-14 | Coalescing graphics operations |
US13/918,825 | 2013-06-14 | ||
PCT/US2013/060756 WO2014200528A1 (en) | 2013-06-14 | 2013-09-20 | Coalescing graphics operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105324795A true CN105324795A (zh) | 2016-02-10 |
CN105324795B CN105324795B (zh) | 2018-09-07 |
Family
ID=49293888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380077447.2A Active CN105324795B (zh) | 2013-06-14 | 2013-09-20 | 合并图形操作 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9633408B2 (zh) |
EP (1) | EP3008697B1 (zh) |
KR (1) | KR102121641B1 (zh) |
CN (1) | CN105324795B (zh) |
WO (1) | WO2014200528A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611031A (zh) * | 2019-02-26 | 2020-09-01 | 华为技术有限公司 | 一种图形绘制方法和电子设备 |
WO2023245374A1 (zh) * | 2022-06-20 | 2023-12-28 | 北京小米移动软件有限公司 | 视图显示方法、装置、电子设备和存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430808B2 (en) | 2013-06-19 | 2016-08-30 | Microsoft Technology Licensing, Llc | Synchronization points for state information |
CN105069095B (zh) * | 2015-08-06 | 2020-02-07 | 北京奇艺世纪科技有限公司 | 图片加载方法、装置和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101243473A (zh) * | 2005-06-29 | 2008-08-13 | 高通股份有限公司 | 用于嵌入式装置中的3d内容的离线优化管线 |
US20100141678A1 (en) * | 2008-12-08 | 2010-06-10 | Microsoft Corporation | Command remoting |
US20100164983A1 (en) * | 2008-12-29 | 2010-07-01 | Microsoft Corporation | Leveraging graphics processors to optimize rendering 2-d objects |
US20100287553A1 (en) * | 2009-05-05 | 2010-11-11 | Sap Ag | System, method, and software for controlled interruption of batch job processing |
CN102682463A (zh) * | 2011-03-18 | 2012-09-19 | 同济大学 | 基于Web Pseudo-3D的大规模数据可视化处理方法 |
EP2584463A2 (en) * | 2011-10-18 | 2013-04-24 | Research In Motion Limited | Method of rendering a user interface |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3417392B2 (ja) | 2000-09-08 | 2003-06-16 | ヤマハ株式会社 | 同期制御装置 |
US6823518B1 (en) | 2000-10-17 | 2004-11-23 | Microsoft Corporation | Threading and communication architecture for a graphical user interface |
US20040249617A1 (en) * | 2003-06-03 | 2004-12-09 | Pccw-Hkt Datacom Services Limited | Selective, pregressive transmission of 3D geometry models with the pre-ordered hierarchical meshes |
US7228500B2 (en) | 2003-06-13 | 2007-06-05 | Microsoft Corporation | Web page rendering priority mechanism |
JP4995071B2 (ja) | 2004-02-25 | 2012-08-08 | ベプテック インコーポレイテッド | 処理システムをプログラミングする方法 |
US20070139430A1 (en) | 2005-12-21 | 2007-06-21 | Microsoft Corporation | Rendering "gadgets" with a browser |
US20090210631A1 (en) | 2006-09-22 | 2009-08-20 | Bea Systems, Inc. | Mobile application cache system |
US8020089B1 (en) | 2006-10-23 | 2011-09-13 | Adobe Systems Incorporated | Rendering hypertext markup language content |
US8260864B2 (en) * | 2008-02-13 | 2012-09-04 | Microsoft Corporation | Push mechanism for efficiently sending aggregated data items to client |
US20120192105A1 (en) | 2008-11-26 | 2012-07-26 | Lila Aps (AHead) | Dynamic level of detail |
US8751955B2 (en) | 2009-03-28 | 2014-06-10 | International Business Machines Corporation | Scrollbar user interface for multitouch devices |
US8527646B2 (en) * | 2009-04-14 | 2013-09-03 | Avid Technology Canada Corp. | Rendering in a multi-user video editing system |
US9354944B2 (en) * | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US9324175B2 (en) | 2009-09-11 | 2016-04-26 | Nvidia Corporation | Memory coherency in graphics command streams and shaders |
US20110298787A1 (en) | 2010-06-02 | 2011-12-08 | Daniel Feies | Layer composition, rendering, and animation using multiple execution threads |
US20120159363A1 (en) * | 2010-12-16 | 2012-06-21 | Microsoft Corporation | Z-order bands |
US8589950B2 (en) | 2011-01-05 | 2013-11-19 | Blackberry Limited | Processing user input events in a web browser |
US9104475B2 (en) | 2011-04-07 | 2015-08-11 | Qualcomm Innovation Center, Inc. | Methods and apparatus for managing operations of a web browser by predicting time period of subsequent script execution activity |
US9442780B2 (en) | 2011-07-19 | 2016-09-13 | Qualcomm Incorporated | Synchronization of shader operation |
US9665353B2 (en) * | 2012-11-08 | 2017-05-30 | Facebook, Inc. | Progressive rendering of data sets |
US20140157108A1 (en) * | 2012-11-30 | 2014-06-05 | Meteor Development Group, Inc. | Live-updating web page generation |
US9430808B2 (en) | 2013-06-19 | 2016-08-30 | Microsoft Technology Licensing, Llc | Synchronization points for state information |
-
2013
- 2013-06-14 US US13/918,825 patent/US9633408B2/en active Active
- 2013-09-20 CN CN201380077447.2A patent/CN105324795B/zh active Active
- 2013-09-20 EP EP13771309.5A patent/EP3008697B1/en active Active
- 2013-09-20 WO PCT/US2013/060756 patent/WO2014200528A1/en active Application Filing
- 2013-09-20 KR KR1020167000784A patent/KR102121641B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101243473A (zh) * | 2005-06-29 | 2008-08-13 | 高通股份有限公司 | 用于嵌入式装置中的3d内容的离线优化管线 |
US20100141678A1 (en) * | 2008-12-08 | 2010-06-10 | Microsoft Corporation | Command remoting |
US20100164983A1 (en) * | 2008-12-29 | 2010-07-01 | Microsoft Corporation | Leveraging graphics processors to optimize rendering 2-d objects |
US20100287553A1 (en) * | 2009-05-05 | 2010-11-11 | Sap Ag | System, method, and software for controlled interruption of batch job processing |
CN102682463A (zh) * | 2011-03-18 | 2012-09-19 | 同济大学 | 基于Web Pseudo-3D的大规模数据可视化处理方法 |
EP2584463A2 (en) * | 2011-10-18 | 2013-04-24 | Research In Motion Limited | Method of rendering a user interface |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611031A (zh) * | 2019-02-26 | 2020-09-01 | 华为技术有限公司 | 一种图形绘制方法和电子设备 |
WO2020173371A1 (zh) * | 2019-02-26 | 2020-09-03 | 华为技术有限公司 | 一种图形绘制方法和电子设备 |
WO2023245374A1 (zh) * | 2022-06-20 | 2023-12-28 | 北京小米移动软件有限公司 | 视图显示方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20160019526A (ko) | 2016-02-19 |
EP3008697A1 (en) | 2016-04-20 |
WO2014200528A1 (en) | 2014-12-18 |
EP3008697B1 (en) | 2017-10-25 |
US9633408B2 (en) | 2017-04-25 |
KR102121641B1 (ko) | 2020-06-17 |
CN105324795B (zh) | 2018-09-07 |
US20140368515A1 (en) | 2014-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102108583B1 (ko) | 인스턴스화가능한 제스처 객체 | |
EP2815311B1 (en) | Using an application cache to update resources of installed applications | |
CN102520841B (zh) | 收集用户接口 | |
US10673916B1 (en) | Executing applications in remotely emulated computing devices | |
CN101809573A (zh) | 基于游标位置更新内容显示 | |
CN105474206A (zh) | 支持按需数据传输的虚拟同步 | |
US20130067346A1 (en) | Content User Experience | |
US10684838B2 (en) | Dynamic application deployment | |
US20140081901A1 (en) | Sharing modeling data between plug-in applications | |
CN104603777A (zh) | 搜索结果中的外部动作建议 | |
KR20120135243A (ko) | 공유가능한 사용자 인터페이스를 이용해 정보를 구성하는 방법 및 시스템 | |
CN107209626B (zh) | 对向应用启动器添加表示的控制 | |
KR102040359B1 (ko) | 상태 정보를 위한 동기화 지점 | |
CN106257418A (zh) | 用于通过使用辅助应用来评价应用的技术 | |
CN105324795A (zh) | 合并图形操作 | |
US8171429B2 (en) | Application navigation | |
CN105518618A (zh) | 配置成将针对视觉元素的输入路由到图形框架的输入对象 | |
CN110119386A (zh) | 数据处理方法、数据处理装置、介质和计算设备 | |
JP2017084344A (ja) | 対話型文書の生成および配信 | |
CN113536755A (zh) | 用于生成海报的方法、装置、电子设备、存储介质及产品 | |
CN112464116B (zh) | 页面显示方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |