合并图形操作的制作方法_4

文档序号:9568684阅读:来源:国知局
包括各种其他类型的数据。
[0126]与补丁 1010a类似,补丁 1012a包括节点ID和补丁版本。
[0127]根据各种实施例,节点1010包括到补丁 1010a的链路(例如指针),并且节点1012包括到补丁 1012a的链路。因此,当线程访问节点时,链路的存在指示针对节点存在补丁。可以跟随链路以访问相关联的补丁。
[0128]在至少一些实施例中,补丁本性上是累积的,使得节点的后续改变令用于节点的现有补丁更新。因此,主线程1002可以使节点1010的状态的另外改变基于补丁 1010a。例如,如以下所详述的,主线程1002可以生成补丁 1010a的更新版本以指示节点1010的状态的另外改变。
[0129]转到场景1000的中部,由补丁 1010a、1012a所指示的视觉改变将传播给⑶I1004。例如,主线程1002可以确定⑶I 1004的视觉改变将由渲染线程应用。因此,主线程1002 发射 PSP 1014,其包括补丁 1010a、1012a。
[0130]继续场景1000的下部,渲染线程1016检索和处理PSP 1014。例如,渲染线程1016将来自补丁 1010a的补丁数据应用到节点1010,并且将来自补丁 1012a的补丁数据应用到节点1012,以生成更新的显示树1018。因此,分别基于补丁 1010a、1012a更新节点1010、1012的数据。渲染线程1016然后从更新的显示树1018读取并且基于来自更新的显示树1018的数据而渲染到⑶I 1004。
[0131]参考先前所讨论的场景800,单独的图形操作可以实现为可以合并为单个组合的图形操作(例如单个PSP)的补丁。
[0132]如场景1000中所图示的,各种线程(例如,主线程1002和渲染线程1016)可以维持显示树的逻辑上一致的视图并且基于其显示树的相应视图进行操作而不彼此干扰。例如,主线程1002根据需要创建补丁,使得渲染线程1016可以无关于针对树的任何未应用的补丁而从树的最新版本读取。因此,主线程1002在任何未应用的补丁的上下文中查看显示树。当渲染线程1016在处理时间内向前移动时,其应用补丁 (例如,从PSP),在其之后,可以使补丁止用。因此,渲染线程1016以其最新更新的形式查看显示树,例如不包括任何未应用的补丁。
[0133]根据各种实施例,节点可以在渲染操作之间(例如,在PSP之间)修补多次以跟踪节点状态的改变。例如,考虑以下示例场景。
[0134]图11图示了根据一个或多个实施例的示例实现场景1100。场景1100表示用于利用补丁跟踪渲染通道之间的显示树的节点状态的更新的示例技术。场景1100包括显示树1102,其表示⑶I 1104的视觉属性。
[0135]与显示树1102相关联的是补丁 1106,其基于将应用到⑶I 1104的视觉属性的状态改变而生成。如所图示的,将补丁 1106应用到显示树1102的节点1108。
[0136]转到场景1100的中部,事件(例如,处理事件)指示将应用到节点1108的另一状态改变。因此,更新补丁 1106中的补丁数据以反映另一状态改变。在至少一些实施例中,补丁 1106是累积的,使得在补丁 1106的补丁数据中反映节点1108的状态信息的多个改变。
[0137]继续到场景1100的下部,生成包括补丁 1106的PSP 1110,其指示将向⑶I 1104执行渲染操作。例如,可以通过用于⑶I 1104的主线程生成PSP 1110。用于⑶I 1104的渲染线程处理PSP 1110并且将补丁 1106应用到节点1108以生成更新的显示树1112。
[0138]连同补丁 1106 —起,针对显示树1102的其他节点所生成的其他补丁可以由渲染线程应用以生成更新的显示树1112。例如,将来自其他补丁的状态信息应用到相应节点。
[0139]在至少一些实施例中,维持具有相关联的补丁的节点列表,例如作为PSP 1110的一部分和/或与其分离。因此,可以采用列表来以顺序方式生成更新的树1112。如以上所提到的,节点包括到用于节点的任何补丁的链路(例如,指针)。因此,保持已经针对其生成补丁的节点列表提供资源的更高效使用,因为待修补的节点和用于节点的补丁二者可以位于单个操作中。
[0140]一旦渲染线程完成应用来自PSP 1110的补丁以生成更新的显示树1112,则渲染线程可以从更新的显示树1112读取并且渲染到⑶I 1104。
[0141]根据各种实施例,不同的处理线程可以利用显示树的不同版本。例如,考虑以下示例实现场景。
[0142]图12图示了根据一个或多个实施例的示例实现场景1200。场景1200包括主线程1202,其执行针对⑶I 1204的各种处理任务。还图示了显示树1206,其表示⑶I 1004的视觉属性。显示树1206与补丁 1208相关联,补丁 1208包括用于显示树1206的节点的状态信息。如以上和以下所讨论的,补丁 1208可以由主线程1202在渲染操作之间和/或期间生成和/或更新以反映GUI 1204的视觉状态的进行中的改变。
[0143]转到场景1200的下部,通过包括补丁 1208的主线程1202发射PSP 1120。PSP1120指令渲染线程1212应用补丁 1208并且向⑶I 1204渲染。因此,渲染线程1212应用补丁 1208以生成更新的显示树1214。例如,显示树1206的节点可以利用来自补丁 1208的状态信息更新以生成更新的显示树1214。
[0144]渲染线程1212然后从更新的显示树1214读取数据,并且基于数据向⑶I 1204渲染。
[0145]还图示的是,主线程1202在生成更新的显示树1214之后继续施行针对⑶I 1204的处理,并且因此生成针对更新的显示树1214的补丁 1216。根据各种实施例,主线程1202在显示树自身的上下文中的更新的显示树1214以及相关联的补丁 1216上查看和/或操作。然而,渲染线程1212仅访问更新的显示树1214而非补丁 1216。而且,在生成更新的显示树1214之后并且在不等待渲染线程1212基于更新的显示树1214渲染的情况下,主线程1202可以继续施行处理(例如,生成补丁 1216)。
[0146]因此,主线程1202基于影响⑶I 1204的视觉状态的不同事件而生成和/或更新补丁。渲染线程1212利用自先前的显示树更新起已经累积的补丁来偶尔更新用于GUI1204的显示树。渲染线程1212从显示树的最新版本(诸如更新的显示树1214)进行渲染。因此,补丁可以用于跟踪渲染操作之间的⑶I 1204的视觉状态的改变,并且可以应用以更新用于⑶I 1204的显示树的可渲染状态。
[0147]示例讲稈
以下讨论描述根据一个或多个实施例的用于合并图形操作的一些示例进程。示例进程可以在图1的环境100、图16的系统1600和/或任何其他适合的环境中采用。
[0148]图13是根据一个或多个实施例的描述方法中的步骤的流程图。步骤1300确定要将多个图形操作应用到图形元素。例如,图形操作可以对应于诸如GUI之类的图形元素的视觉状态的多个改变。例如,图形操作可以各自表示分离的不同数据处理操作。在至少一些实施例中,图形操作可以对应于不同补丁、不同PSP等等。
[0149]步骤1302将多个图形操作合并为针对图形元素的组合的图形操作。例如,组合的图形操作可以反映来自多个图形操作中的每一个的图形元素的视觉状态的改变。因此,组合的图形操作可以表示每一个单独的图形操作的累积效果。在至少一些实施例中,例如在没有分离地应用每一个单独的图形操作的情况下,可以经由单个渲染操作应用组合的图形操作。例如,合并图形操作可以包括将多个补丁组合为单个补丁,其可以应用到显示树以生成反映来自每一个补丁的状态信息的更新的显示树。
[0150]根据各种实施例,渲染线程可以忙于渲染先前的图形操作。因此,当等待渲染线程变得可用时,可以队列化多个当前的图形操作。例如,可以基于图形操作生成和/或更新补丁。多个图形操作可以响应于确定渲染线程已经变得可用于施行另外的渲染而合并。例如,可以将一组补丁组合以生成可以应用于更新显示树的单个补丁。
[0151]步骤1304生成指示将渲染组合的图形操作的处理指令。例如,可以向用于图形元素的渲染线程指令和/或通知将应用组合的补丁以更新用于图形元素的节点,并且图形元素将基于更新的节点而渲染。在至少一些实施例中,可以生成PSP,其包括或指向组合的图形操作,例如将用于更新显示树的补丁和/或补丁组。
[0152]在至少一些实施例中,渲染线程可以将针对多个未决PSP的补丁应用到显示树,并且然后基于最近应用的PSP而从显示树进行渲染。这使得能够在不要求多个中间绘制操作的情况下实现多个PSP的最后视觉结果,因此节省系统资源。
[0153]图14是根据一个或多个实施例的描述方法中的步骤的流程图。在至少一些实施例中,方法描述了针对图形元素合并图形操作的示例方法。
[0154]步骤1400生成描述图形元素的视觉状态的改变的补丁。例如,补丁可以与诸如GUI之类的图形元素的树结构的节点相关联和/或链接到它。因此,补丁可以描述将对节点数据做出的改变。在各种实施例中,补丁与相关联的节点分离,并且因此包括在补丁中的状态信息不影响节点的可渲染状态,直到将补丁应用到节点。
[0155]步骤1402确定将应用图形元素的视觉状态的改变。例如,可以接收渲染线程可用于渲染改变的指示。
[0156]步骤1404基于补丁而更新用于图形元素的数据结构。如以上所讨论的,例如,可以将补丁应用到用于图形元素的节点,使得利用来自补丁的图形数据更新和/或替换节点中的图形数据。在至少一些实施例中,可以将多个不同的补丁应用到显示树的相应的不同节点以生成显示树的可渲染更新版本。
[0157]步骤1406基于更新的数据结构而渲染图形元素。例如,渲染线程可以从更新的数据结构读取,并且基于更新的数据结构对图形元素进行渲染。
[0158]虽然本文参考更新现有数据结构(例如,现有节点)讨论了实施例,但是应当理解,技术可以用于生成新数据结构。例如,补丁可以包括用于生成新节点、新子树等等的指令。因此,可以经由本文所讨论的技术创建和更新数据结构。
[0159]图15是根据一个或多个实施例的描述方法中的步骤的流程图。在至少一些实施例中,方法描述了利用多个线程来合并图形操作的示例方式。
[0160]步骤1500执行第一线程以生成描述图形元素的视觉状态的改变的补丁。如以上所讨论的,例如,用于GUI的主线程可以生成和/或更新针对GUI的显示树的补丁。
[0161]步骤1502执行第二线程以应用补丁来更新用于图形元素的数据结构并且基于更新的数据结构而渲染图形元素。例如,如以上所讨论的,用于GUI的渲染线程可以将补丁应用到显示树以生成更新的显示树,并且基于显示树而渲染⑶I的一个或多个部分。
[0162]根据各种实施例,可以在不同的相应处理器核上执行第一线程和第二线程。而且,虽然单个线程被讨论为生成线程并将其应用到数据结构,但是应当理解,实施例可以采用多个不同的线程来生成、更新和/或应用补丁到数据结构。附加地,实施例可以采用用于从诸如显示树之类的数据结构渲染的多个渲染线程。
[0163]已经讨论了一些示例进程,现在考虑根据一个或多个实施例的示例系统和设备的讨论。
[0164]示例系统和设备
图16 —般地在1600处图示了示例系统,其包括代表可以实现本文所描述的各种技术的一个或多个计算系统和/或设备的示例计算设备1602。例如,以上参考图1所讨论的计算设备102可以体现为计算设备1602。例如,计算设备1602可以是服务提供商的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统和/或任何其他适合的计算设备或计算系统。
[0165]如所图示的示例计算设备1602包括通信地互相耦合的处理系统1604、一个或多个计算机可读介质1606和一个或多个输入/输出(I/O)接口 1608。虽然未示出,但是计算设备1602还可以包括将各种组件互相耦合的系统总线或其他数据和命令传输系统。系统总线可以包括不同总线结构中的任一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1