CN102968755A - 基元组成 - Google Patents

基元组成 Download PDF

Info

Publication number
CN102968755A
CN102968755A CN2012103284951A CN201210328495A CN102968755A CN 102968755 A CN102968755 A CN 102968755A CN 2012103284951 A CN2012103284951 A CN 2012103284951A CN 201210328495 A CN201210328495 A CN 201210328495A CN 102968755 A CN102968755 A CN 102968755A
Authority
CN
China
Prior art keywords
thread
gpu
user interface
static
composition
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
Application number
CN2012103284951A
Other languages
English (en)
Other versions
CN102968755B (zh
Inventor
G.施奈德
B.约丹
A.米凯尔
B.J.克拉克
P.W.奥尔茨塔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102968755A publication Critical patent/CN102968755A/zh
Application granted granted Critical
Publication of CN102968755B publication Critical patent/CN102968755B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

在用户接口线程中执行基元组成,从而增强将用户接口框架扩展到具有有限资源的计算设备的能力。在一个或多个实施例中,用户接口线程遍历描述程序的用户接口元素的用户接口层次结构并直接生成表示用户接口层次结构的至少一部分的静态图形处理单元(GPU)数据结构。用户接口线程将静态GPU数据结构传递到组成线程,所述组成线程在生成多个视频帧期间使用这些静态GPU数据结构。这包括组成线程根据静态GPU数据结构,将针对多个视频帧的GPU数据和GPU命令发送到GPU来呈现。

Description

基元组成
相关申请交叉引用
不适用。
背景技术
计算机系统和相关技术影响社会的许多方面。实际上,计算机系统处理信息的能力已经改变了我们的生活和工作方式。计算机系统现在通常执行在计算机系统出现之前由人工执行的大量工作(例如,字处理、计划安排和记账)。最近,计算机系统已经实现相互藕接并且与其他电子设备互连以形成有线和无线计算机网络,计算机系统和其他电子设备可以通过这些计算机网络传输电子数据。因此,许多计算机任务的执行跨多个不同的计算机系统和/或多个不同的计算环境分布。
许多应用(包括操作系统级应用和终端用户应用)包括用于向用户显示信息和用于接收用户输入的图形用户接口。尽管历史上多数图形用户接口在呈现用户接口时使用的计算资源相对简单,但是许多软件开发人员现在希望做出更为复杂的用户接口来提供丰富的用户体验。例如,许多软件开发人员现在希望使用难于呈现的图形用户接口元素(例如采用透明度、动画、三维图形等用户接口元素)来创建丰富、灵敏和流畅的用户接口。
近年来,具有有限资源和严格功耗要求的便携式计算设备(例如,智能手机、PDA、便携式媒体播放器、平板计算机等)变得日益普及。这些设备中的一些可以集成触摸式用户输入,这样有助于使这些设备的使用更加直观。为这些用户设备设计用户接口的开发人员尤其热衷于通过制作丰富、灵敏和流畅的用户接口来最大化这些设备上用户接口的效能。但是,由于这些设备存在资源和电池寿命有限的问题,因此,开发人员很难在保持用户接口灵敏度和呈现可靠帧率的同时,为这些设备做出极为生动且画面吸引人的用户接口。
发明内容
实施例可以包括用于在用户接口(UI)线程中执行基元组成的功能。通过在UI线程中组成诸如图形处理单元(GPU)数据结构之类的基元,用户接口框架能够减少负责处理动画,处理输入和呈现帧的单独的组成线程的工作负载。这样转而增强将用户接口框架扩展到具有相对有限资源的计算设备(例如移动设备、平板计算机、嵌入式设备等)的能力。
例如,在一个或多个实施例中,执行基元组成的计算机系统在UI线程中遍历(walk)程序的用户接口层次结构。所述用户接口层次结构描述程序的用户接口元素。根据遍历用户接口层次结构,UI线程直接生成表示UI层次结构的至少一部分的静态GPU数据结构。所述UI线程将这些静态GPU数据结构传递到单独的组成线程,所述单独的组成线程保留静态GPU数据结构以便在生成用户接口的多个视频帧期间重复使用。因此,所述组成线程分别重复使用从UI线程接收的静态GPU数据结构以便呈现多个视频帧中的每个视频帧。这包括组成线程针对多个视频帧中的每个视频帧,根据静态GPU数据结构导出GPU数据和GPU命令以及将所述数据和命令发送到GPU来呈现。
提供此“发明内容”以便以简化的形式引入将在下面的“具体实施方式”中进一步描述的概念选择。此“发明内容”并非旨在标识所要求保护的主题的主要特征或本质特征,也并非旨在用于帮助确定所要求保护的主题的范围。
本发明的其他特征和优点将在下面的描述中说明,并且通过描述,至少部分地理解,或者可以通过实践本发明来理解。本发明的特征和优点可以通过所附权利要求中具体指出的工具和组合来实现和获得。通过下面的描述和所附权利要求,可以更全面地理解本发明的这些和其他特征,或者可以通过实践本发明来理解本发明的这些和其他特征,如下文中说明的那样。
附图说明
为了说明可以获取本发明的上述和其他优点与特征的方式,将参考附图中示出的本发明特定实施例呈现上面简单描述的本发明的更具体的描述。应该理解,这些附图仅描绘本发明的典型实施例,因此不能被视为限制本发明的范围,将使用附图通过更多特征和细节描述和阐述本发明,在所述附图中。
图1示出使用用户接口线程和组成线程呈现用户接口的示例计算机体系结构。
图2示出使用用户接口线程中的基元组成呈现用户接口的示例计算机体系结构。
图3示出使用基元组成呈现程序的用户接口的示例方法的流程图。
具体实施方式
实施例可以包括用于在用户接口(UI)线程中执行基元组成的功能。通过在UI线程中组成诸如图形处理单元(GPU)数据结构之类的基元,用户接口框架能够减少负责处理动画、处理输入和呈现帧的单独的组成线程的工作负载。这样转而增强将用户接口框架扩展到具有相对有限资源的计算设备(例如移动设备、平板计算机、嵌入式设备等)的能力。
例如,在一个或多个实施例中,执行基元组成的计算机系统在UI线程中遍历程序的用户接口层次结构。所述用户接口层次结构描述程序的用户接口的元素。根据遍历用户接口层次结构,UI线程直接生成表示UI层次结构的至少一部分的静态GPU数据结构。所述UI线程将这些静态GPU数据结构传递到单独的组成线程,所述单独的组成线程保留静态GPU数据结构以便在生成用户接口的多个视频帧期间重复使用。因此,所述组成线程分别重复使用从UI线程接收的静态GPU数据结构以便呈现多个视频帧中的每个视频帧。这包括组成线程针对多个视频帧中的每个视频帧,根据静态GPU数据结构导出GPU数据和GPU命令以及将所述数据和命令发送到GPU来呈现。
本发明的实施例可以包括或使用专用或通用计算机,所述计算机包括诸如一个或多个处理器和系统存储器之类的计算机硬件,如下面更详细介绍的那样。本发明范围内的实施例还包括物理和其他计算机可读介质以便传送或存储计算机可执行指令和/或数据结构。此类计算机可读介质可以是任何能够由通用或专用计算机系统访问的可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。承载计算机可执行指令的计算机可读介质是传输介质。因此,通过举例而非限制,本发明的实施例可以包括至少两种明显不同的计算机可读介质:计算机存储介质(设备)和传输介质。
计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、DVD-ROM、固态驱动器(“SSD”)(例如,基于RAM)、闪存、相变存储器(“PCM”)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备,或任何其他可以用于存储计算机可执行指令或数据结构形式的所需程序代码装置以及可以由通用或专用计算机访问的介质。
将“网络”定义为能够在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当通过网络或其他通信连接(硬连线、无线,或者硬连线或无线的组合)将信息传输或提供给计算机时,计算机完全将连接视为传输介质。传输介质可以包括能够用于承载计算机可执行指令或数据结构形式的所需程序代码装置以及能够由通用或专用计算机访问的网络和/或数据链路。上述各项的组合也应该包括在计算机可读介质的范围内。
进一步,当到达各种计算机系统组件时,可以将计算机可执行指令或数据结构形式的程序代码装置自动从传输介质传送到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以在网络接口模块(例如,“NIC”)内的RAM中缓存,然后最终传送到计算机系统中的计算机系统RAM和/或低易失性计算机存储介质(设备)。因此,应该理解,计算机存储介质(设备)可以包括在也(或甚至主要)使用传输介质的计算机系统组件中。
计算机可执行指令例如包括指令和数据,当指令和数据在处理器上执行时,导致通用计算机、专用计算机或专用处理设备执行某个功能或功能的组。所述计算机可执行指令例如可以是二进制文件、诸如汇编语言之类的中间格式指令,或甚至源代码。尽管已经采用特定于结构特征和/或方法学行为的语言描述了主题,但要理解,在所附权利要求中定义的主题并不一定限于上面的所述特征或操作。相反,所述特征和操作作为实现权利要求的示例形式公开。
本领域的技术人员将理解,本发明可以在网络计算环境中实现,这些环境具有许多类型的计算机系统配置,包括个人计算机、台式计算机、膝上型计算机、“上网本”计算机、平板计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程的消费电子、网络PC、微型计算机、大型计算机、移动电话、PDA、媒体设备、寻呼机、路由器、交换机等。本发明还可以在分布式系统环境中实现,其中通过网络(由硬连线数据链路、无线数据链路或通过硬连线和无线数据链路的组合)链接的本地和远程计算机系统二者执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。
许多计算机系统包括针对图形信息的处理和呈现进行优化的计算机硬件。例如,某些计算机系统包括一个或多个GPU,这些GPU针对图形信息的处理和呈现进行优化,例如将变换和纹理应用于多边形以呈现场景。GPU通常包括并行处理体系结构,其可以同时处理大量与图形相关的任务以在帧缓冲区中构建场景,从而在显示设备上显示。为了做出高质量图形,许多计算机系统至少在可用存储器数量、一般处理能力和GPU复杂性方面已经变得越来越强大和复杂。利用GPU,某些计算机系统现在能够实时制作拟真和高帧速率的流畅图形。
开发人员可以在开发用于操作系统级应用以及用户级应用的用户接口时利用GPU的效能。一种呈现用户接口的方法是提供在逻辑上将应用功能和图形呈现功能分离的用户接口框架。例如,第一任务可以处理可能无界的应用功能(例如,用户接口布局任务、执行应用代码、处理网络通信、执行复杂计算),而第二任务可以执行大致有界的呈现功能(例如,执行呈现管道以及另外准备GPU数据结构以便由一个或多个GPU处理)。
例如,图1示出了通过使用UI线程和组成线程便利用户接口呈现的示例计算机体系结构100。参考图1,计算机体系结构100包括UI线程102、组成线程112和GPU线程122。尽管在此描述为“线程”,但将理解,UI线程102、组成线程112和/或GPU线程122可以包括任务、过程,或任何其他编程或逻辑分离单元。
UI(或应用)线程102被配置为针对使用UI线程102的程序104(例如,操作系统级程序或终端用户应用程序)的用户接口维护用户接口层次结构106。UI线程102本身可以生成用户接口层次结构106,或它可以从其他地方接收用户接口层次结构106的全部或部分。例如,可以根据生成用户接口的编程代码的执行和/或根据表示用户接口的标记(例如,可扩展应用标记语言(XAML))的解析来生成接口层次结构106。用户接口层次结构106可以被配置为使用任何适当的数据结构(例如,树形结构)表示用户接口的元素,例如UI控件(例如,按钮、列表框、网格、文本框等)、图像、矢量图形、视频、随时间推移修改用户接口的动画等。UI线程102可以被进一步配置为通过修改用户接口层次结构106以及通过响应于用户接口事件(例如,与用户接口交互的用户输入,例如触摸输入(即,触摸手势)、指点设备输入和/或键盘输入;接收数据;从其他过程接收信号;等等)而执行应用代码,来实现与用户接口的交互。
UI线程102还被配置为偶尔遍历用户接口层次结构106以生成针对用户接口的组成信息(例如,在每次执行UI线程102期间,根据定义的间隔,响应于用户接口层次结构106中的改变)。例如,在UI线程102遍历用户接口层次结构106期间或响应于UI线程102遍历用户接口层次结构106,UI线程102可以将以层次结构表示的用户接口元素转换为一个或多个描述用户接口元素的组成结构108。在某些实施例中,组成结构108可以将场景的用户接口元素描述为多个多边形。因此,组成结构108可以包括描述多边形顶点、纹理、颜色、梯度、照明信息、应用于多边形的屏蔽,和/或裁剪信息等的信息。根据组成结构108,UI线程102可以被配置为偶尔将组成数据110发送到组成线程112以便由组成线程112进一步处理,从而准备在GPU线程122中由GPU 124呈现。组成数据110可以包括用于用户接口层次结构106的初始组成结构108和/或由用户接口层次结构106中的改变引起的组成结构108的更新。
组成线程112被配置为接收组成数据110,并将组成数据110“组成”到可以由GPU 124处理/呈现的GPU基元(即,示出的GPU数据结构118)。如图所示,组成线程112被配置为维护组成层次结构114,组成层次结构114以组成结构108中的组成数据110的形式几乎完全镜像用户接口层次结构106。每次执行组成线程112线程时,它被配置为遍历组成层次结构114并在遍历时收集组成数据,并将收集的组成数据馈送给呈现管道116。呈现管道116转而将收集的组成数据组成到GPU数据结构118(例如,顶点缓冲区、索引缓冲区、纹理、着色器等)。根据新生成的GPU数据结构118,组成线程112被配置为将GPU数据和命令120发送到GPU线程112,GPU线程112转而在GPU 124中呈现由GPU数据结构118表示的用户接口场景并填充帧缓冲区126。
呈现管道116可以包括一系列生成GPU数据结构118的可编程和/或不可编程组件。例如,呈现管道116可以包括着色器(例如,顶点、像素、几何)、光栅器、混合器等的组合。呈现管道可以从组成层次结构114接收组成数据(例如,顶点数据)作为输入,并使组成数据经过每个管道组件以生成GPU数据结构118。转换可以包括将一个或多个变换(例如,模型、相机、透视)应用于顶点数据以便在2D或3D空间中定位一个或多个多边形;将纹理、颜色、梯度等映射到顶点数据;以及任何其他适当的任务。
正因如此,每次执行组成线程112时,它被配置为生成表示单个视频帧的场景的新GPU数据结构,并将此数据传递到GPU线程122以呈现帧。因此,组成线程112通常以等于用于显示用户接口所需输出帧速率的频率(例如,60fps)执行。组成线程112的工作负载相对有界和可预测,因此假设具有足够的计算资源,它通常可以实现所需的帧速率。另一方面,UI线程102可以不太频繁地执行和/或处理更多无界任务。
计算机体系结构100在相对强大的计算系统上很好地呈现复杂的用户接口。然而,组成线程112在每次执行期间做了大量工作,包括每次运行时遍历组成层次结构114以及通过执行呈现管道116生成新的GPU数据结构118。此外,组成线程112在其组成层次结构114中存储大量大部分上重复的数据,当呈现具有大量元素的复杂用户接口时或者当采用任何形式的缓存时,这种情况会加重。在具有更有限的资源(例如,存储器和处理资源)的计算机系统(例如,便携式设备)的上下文中,组成线程112可能无法足够快地执行此处理以便按照所需的帧速率执行,从而导致呈现的用户接口质量下降,或它可能没有足够的存储器资源来维护组成层次结构114。
同样,图2示出了在UI线程中采用基元组成以呈现用户接口的备选计算机体系结构200的实施例。参考图2,计算机体系结构200包括UI线程202、组成线程216和GPU线程226。类似于图1的计算机体系结构100,这些“线程”可以包括任务、过程,或任何其他编程或逻辑分离单元。
类似于图1的UI线程102,UI线程202被配置来为使用UI线程202的程序204(例如,操作系统应用或终端用户应用)的用户接口维护用户接口层次结构206。用户接口层次结构206可以表示用户接口的元素,例如UI控件(例如,按钮、列表框、网格、文本框等)、图像、矢量图形、视频、随时间推移修改用户接口元素的动画等,并且可以由UI线程202生成(例如,通过解析XAML)或从其他地方接收。UI线程202还可以被配置为通过修改用户接口层次结构206以及通过响应于用户接口事件(例如,用户输入事件、网络事件、数据处理事件等)而执行程序204代码,来实现与用户接口的交互。
但是,与图1中的UI线程102不同,UI线程202被配置为作为遍历用户接口层次结构206的结果,直接生成静态GPU数据结构208。也就是说,UI线程202(而非组成线程216)被配置为生成或组成可以由GPU 228处理/呈现的GPU基元(例如,顶点缓冲区、索引缓冲区、纹理、着色器等)。与图1中的组成线程112所生成的GPU数据结构118(它们在每次执行线程时重新生成)不同,UI线程202被配置为生成可用于呈现多个稍有修改或没有任何修改的帧的静态GPU数据结构208。因此,在计算机体系结构200的上下文中,“静态”表示至少某些GPU数据结构208在呈现多个帧时重复使用,而非针对每个帧重新生成。在UI线程102中生成“静态”GPU结构导致所生成的GPU数据量远少于图1的组成线程112生成的GPU数据量。
UI线程202可以被配置为在生成静态GPU数据结构208时采用一种或多种优化。例如,UI线程202可以被配置为生成与在不同帧之间基本保持不变的静态用户接口元素对应的GPU数据结构。因此,当对应的用户接口元素改变时,UI线程202只能生成新的静态GPU数据结构208。此外,UI线程202可以被配置为限制可使用的用户接口元素的类型,并且可以被配置为使用被优化以生成这些接口特定类型元素的GPU数据结构的功能。在一个或多个实施例中,例如,程序204的大量用户接口元素可以基于特定类型的用户接口基元(例如,圆、矩形、弧),并且UI线程202可以包括将这些用户接口基元转换为GPU基元的优化功能。通过这样配置,UI线程202可以在很大程度上,甚至完全不需要使用通用呈现管道(例如,计算机体系结构100中的呈现管道116)。
如图所示,UI线程202被配置为将作为GPU数据214的静态GPU数据结构208传递到组成线程216,组成线程216转而被配置为维护静态GPU数据结构220。如介绍的那样,组成线程216被配置为保留至少某些静态GPU数据结构220以用于生成多个帧。因此,如果用户接口在不同帧之间保持相对静态(在许多用户接口场景中相对普遍地发生),则组成线程216只能利用GPU 228(例如,利用GPU数据和命令224)指令GPU线程226呈现静态GPU数据结构220,并且可以针对使用同一静态GPU数据结构220的多个帧这样做。
UI线程202还可以被配置为根据用户接口层次结构206生成组成结构210。如果生成,则这些组成结构210可以描述应用于由静态GPU数据结构208表示的用户接口元素的动画。因此,UI线程202还可以被配置为将作为组成数据212的任何生成的组成结构210传递到组成线程216,并且组成线程216可以被配置为维护组成层次结构218。但是,计算机体系结构200中的组成层次结构218可以潜在维护的组成信息量远少于计算机体系结构100的组成层次结构114维护的组成信息量。例如,组成层次结构218只能维护与应用于静态GPU数据结构220的动画有关的组成信息。组成线程216然后可以被配置为使用组成层次结构218中的动画信息修改静态GPU数据结构220的多个部分,以使得(与生成新结构相反)当由GPU 228呈现时,任何对应的用户接口元素在不同帧之间以动画方式呈现。
此外,组成线程216还可以被配置为接收输入222,例如用户输入。输入222可以包括任意形式的输入,例如,触摸输入(手势)、指点设备输入、网络输入、相机输入、传感器设备输入(例如,罗盘、GPS、加速计、回转仪、温度计、光传感器)、麦克风输入等。当输入222将导致静态GPU数据结构220表示的任何用户接口元素的动画时,组成线程216可以被配置为自己启动用户接口元素的动画。因此,组成线程216可以独立于UI线程202中的组成数据创建和/或修改组成层次结构218中的动画信息,并且可以使静态GPU数据结构220表示的用户接口元素以动画方式呈现。例如,组成线程216可以被配置为根据输入修改静态GPU数据结构的多个部分(例如,通过修改GPU数据,这样将更改对应用户接口元素的位置、缩放、旋转、透明度、裁剪、颜色、透视、不透明度、模型变换和/或方向),以便当由GPU 228呈现时,对应的用户接口元素在不同帧之间以动画方式呈现。
计算机体系结构200的配置因此通过消除全部或部分呈现管道,以及通过移除组合层次结构218中的多数(甚至全部)来简化组成线程216。因此,组成线程216可以在每次执行期间占用少得多的存储器和处理资源。具体而言,组成线程216不再存储和遍历大部分重复的组成层次结构218,并且组成线程216不再每次执行时都生成新的GPU数据结构。因此,即使在具有有限资源的计算机系统中,组成线程216仍可以频繁执行(例如,以60fps的速度)以将每个帧的GPU数据和命令224馈送给GPU线程226来呈现。在多数简单的执行场景中(例如,用户接口在不同帧之间保持不变的场景),组成线程可以直接利用静态GPU数据结构240来发送GPU数据和命令。换言之,组成线程可以为GPU线程226提供GPU数据并“命令开始”,在其中已接收用户输入或者其中组成线程216需要处理动画数据的更复杂的执行场景中,组成线程216可以处理输入和/或修改组成层次结构218或静态GPU数据结构220中的一项或多项来以动画方式呈现用户接口元素。在任何一种情况下,通过处理一小组有界任务,组成线程216可以确保即使资源非常有限,用户接口也能以一贯的高帧速率绘制,并且用户接口能对输入做出响应。
另一方面,UI线程202执行的频率可以比组成线程216的执行频率低得多,以及/或者可以在执行来处理无界任务(例如,用户接口布局任务、网络任务、数据绑定任务、光栅化、棋盘形布置或其他复杂计算)时耗用额外的时间。UI线程202可以根据需要更新静态GPU结构208,但由于静态GPU结构208对应于主要为静态的用户接口元素,因此,这些更新在许多用户接口场景中发生的频率相对较低。所以,生成GPU基元的成本和将数据传送到组成线程216的成本二者与计算机体系结构100相比显著降低。因此,总而言之,计算机体系结构200可以在生成最少量的GPU数据的同时呈现用户接口并且针对具有有限资源的设备进行优化。
图3示出使用基元组成呈现程序的用户接口的示例方法300的流程图。将参考计算机体系结构200的组件和数据来描述方法300。
方法300包括在用户接口线程中遍历程序的用户接口层次结构的行为(行为302)。行为302可以包括UI线程遍历程序的用户接口层次结构的行为,所述用户接口层次结构描述程序的用户接口的一个或多个用户接口元素。例如,承载程序204或由程序204使用的UI线程202可以遍历用户接口层次结构206。用户接口层次结构206可以将信息存储在表示程序204的用户接口的用户接口元素的数据结构(例如,树形结构)中。
方法300还包括根据用户接口线程遍历用户接口层次结构,直接在用户接口线程中生成一个或多个静态GPU数据结构的行为(行为304)。行为304可以根据遍历用户接口层次结构的UI线程,包括UI线程直接生成表示用户接口层次结构的至少一部分的一个或多个静态GPU数据结构的行为。例如,UI线程202可以直接生成静态GPU数据结构208。这些GPU结构在某些实例中可以对应于在不同帧之间保持基本静态的用户接口元素。即使当某些用户接口元素以动画方式呈现,它们仍在静态GPU结构208中表示,因为组成线程216可以在稍后以动画方式呈现它们。作为GPU数据,静态GPU数据结构208例如可以包括一个或多个顶点缓冲区、索引缓冲区、纹理、着色器等。
此外,方法300还包括将一个或多个静态GPU数据结构传递到组成线程的行为(行为306)。行为306可以包括UI线程将一个或多个静态GPU数据结构传递到组成线程的行为,所述组成线程保留一个或多个静态GPU数据结构以便在生成对应于用户接口的多个视频帧期间重复使用。例如,UI线程202可以将等同于静态GPU数据结构208或通过静态GPU数据结构208导出的GPU数据214传递到组成线程216。组成线程216转而可以存储接收的GPU数据214作为静态GPU数据结构220,并且可以跨组成线程216的多次执行保留此信息以利用同一静态GPU数据结构220生成多个视频帧。
依照这些,方法300还包括在组成线程中根据一个或多个静态GPU数据结构生成多个视频帧的行为(行为308)。行为308可以包括组成线程生成对应于用户接口的多个视频帧的行为,其中包括组成线程针对多个视频帧中的每个视频帧,将根据一个或多个静态GPU数据结构导出的GPU数据和GPU命令发送到的GPU,以便组成线程在呈现对应于用户接口的多个视频帧时,重复使用从UI线程接收的一个或多个静态GPU数据结构。例如,根据静态GPU数据结构220,组成线程216可以将GPU数据和命令224发送到GPU 228来呈现。在一个或多个实施例中,组成线程216可以在组成线程216的每次执行时,针对一个或多个视频帧发送GPU数据和命令224,同时跨多次执行保留GPU数据结构220。因此,组成线程216可以在生成多个视频帧时使用同一静态GPU数据结构220。
尽管未示出,但是方法300还可以包括UI线程202生成对应于用户接口的动画的组成结构210,以及将组成数据212传递到组成线程216的行为。因此,组成线程216可以存储组成层次结构218,组成层次结构218可以包括组成数据212,组成数据212描述用户接口的一个或多个动画。因此,在将GPU数据和命令224发送到GPU 228之前,组成线程216可以修改静态GPU数据结构220以导致对应的用户接口元素在呈现时采取动画方式。例如,组成线程216可以修改GPU数据结构220中的信息,这样将导致改变对应用户接口元素的位置、缩放、旋转、透明度、裁剪、颜色、透视、不透明度、模型变换或方向中的一项或多项。同样,尽管组成线程216可以响应于从UI线程202接收到组成数据212,而修改静态GPU数据结构220,但是组成线程216也可以响应于用户输入222而自己启动动画。
在执行方法300时,UI线程202可以执行某些无界任务(例如,用户接口布局任务、网络任务、数据绑定任务、光栅化、棋盘形布置或其他复杂计算),但是组成线程216只能执行有界任务。因此,UI线程202可以根据第一计划操作,与组成线程216操作时所用的第二计划相比,所述第一计划使用频率相对较低,以及/或者UI线程202的执行时间有时可能相对较长。因此,组成线程216可以确保用户接口以高帧速率持续呈现,并且确保用户接口能及时对用户输入做出响应。
相应地,在此描述的实施例的适用范围扩及用于在用户接口线程中执行基元组成,从而增强将用户接口框架扩展到具有有限资源的计算设备的能力的方法、系统和计算机程序产品。通过直接在UI线程中生成可用于生成多个视频帧的静态GPU数据结构,组成线程中的工作负载被降低了,从而使其能够可靠地执行高帧速率。
在不偏离本发明的精神或本质特征的情况下,可以通过其他具体形式来实现本发明。所描述的实施例在各方面都仅被视为示例而非限制。因此,本发明的范围由所附权利要求而非上述描述来指出。处于权利要求的等同物的含义和范围内的所有改变也将包含在所述权利要求的范围内。

Claims (16)

1.在包括一个或多个处理器和系统存储器的计算机系统(200)中,该计算系统还包括图形处理单元(GPU)(228),一种使用基元组成来呈现程序(204)的用户接口的方法包括:
用户接口(UI)线程(202)遍历所述程序的用户接口层次结构(206)的行为,所述用户接口层次结构描述所述程序的用户接口的一个或多个用户接口元素;
根据所述UI线程遍历所述用户接口层次结构,所述UI线程直接生成表示所述用户接口层次结构的至少一部分的一个或多个静态GPU数据结构(208)的行为;
所述UI线程将所述一个或多个静态GPU数据结构传递到组成线程(216)的行为,所述组成线程保留所述一个或多个静态GPU数据结构(220)以便在生成对应于所述用户接口的多个视频帧期间重复使用;以及
所述组成线程生成对应于所述用户接口的所述多个视频帧的行为,包括所述组成线程针对所述多个视频帧中的每个视频帧,将根据所述一个或多个静态GPU数据结构导出的GPU数据和GPU命令(224)发送到所述GPU,以使得在呈现对应于所述用户接口的所述多个视频帧时,所述组成线程重复使用从所述UI线程接收的所述一个或多个静态GPU数据结构。
2.如权利要求1中所述的方法,进一步包括:
所述UI线程将与所述用户接口的一个或多个动画相关的用户接口信息传递到所述组成线程的行为;
所述组成线程维护描述所述用户接口的所述一个或多个动画的一个或多个组成数据结构的行为;以及
在将所述GPU数据和所述GPU命令发送到所述GPU之前,所述组成线程根据所述一个或多个动画修改所述一个或多个静态GPU数据结构中的至少一个数据结构,从而导致所述GPU以不同方式处理所述至少一个静态GPU数据结构的一部分以便将所述一个或多个动画应用于至少一个对应的用户接口元素的行为。
3.如权利要求2中所述的方法,其中导致所述GPU以不同方式处理所述至少一个静态GPU数据结构的一部分包括导致所述GPU修改所述对应的用户接口元素的一个或多个属性,包括修改所述对应用户接口元素的位置、缩放、旋转、透明度、裁剪、颜色、透视、不透明度、模型变换或方向中的一项或多项。
4.如权利要求1中所述的方法,进一步包括:
所述组成线程接收指示已在所述用户接口中接收输入的信息的行为;以及
作为响应,所述组成线程直接修改所述一个或多个静态GPU数据结构中的至少一个数据结构的行为。
5.如权利要求4中所述的方法,其中所述组成线程直接修改所述一个或多个静态GPU数据结构中的至少一个数据结构的行为包括所述组成线程直接修改所述至少一个静态GPU数据结构以便向受所述输入影响的对应的用户接口元素发起动画的行为。
6.如权利要求1中所述的方法,其中所述一个或多个静态GPU数据结构对应于所述用户接口中在不同帧之间基本保持不变的一个或多个静态用户接口元素。
7.如权利要求1中所述的方法,其中直接由所述UI线程生成的所述一个或多个静态GPU数据结构包括顶点缓冲区、索引缓冲区、纹理或着色器中的一项或多项。
8.如权利要求1中所述的方法,其中所述UI线程运行以便根据第一计划修改和/或生成所述一个或多个静态GPU结构,并且其中所述组成线程运行以便根据不同于所述第一计划的第二计划修改所述一个或多个静态GPU结构和/或将所述一个或多个静态GPU结构提交给所述GPU。
9.如权利要求8中所述的方法,其中所述第二计划导致所述组成线程运行得比所述第一计划导致所述UI线程运行更频繁。
10.一种在包括图形处理单元(GPU)(228)的计算机系统(200)中使用的计算机程序产品,所述计算机程序产品用于实现一种在用户接口(UI)线程中使用基元组成呈现程序(204)的用户接口的方法,所述计算机程序产品包括一个或多个具有存储在其上的计算机可执行指令的计算机存储介质,当所述计算机可执行指令在处理器上执行时,导致所述计算机系统执行所述方法,该方法包括以下各项:
利用UI线程(202)遍历所述程序的用户接口层次结构(206),所述用户接口层次结构描述所述程序的用户接口的一个或多个用户接口元素;
利用所述UI线程直接生成表示所述用户接口层次结构的至少一部分的一个或多个静态GPU数据结构(208);
将所述一个或多个静态GPU数据结构从所述UI线程传递到组成线程(216),所述组成线程保留一个或多个静态GPU数据结构(220)以便在生成对应于所述用户接口的多个视频帧期间重复使用;以及
生成对应于所述用户接口的所述多个视频帧,包括所述组成线程将根据所述一个或多个静态GPU数据结构导出的GPU数据和GPU命令(224)发送到所述GPU以呈现所述多个视频帧中的每个视频帧,以使得在针对所述多个视频帧发送GPU数据和GPU命令时,所述组成线程重复使用所述一个或多个静态GPU数据结构。
11.如权利要求10中所述的计算机程序产品,进一步包括计算机可执行指令,当所述计算机可执行指令在所述处理器上执行时,导致所述组成线程:
维护与所述用户接口的用户接口元素的一个或多个动画相关的一个或多个组成数据结构;以及
在将所述GPU数据和所述GPU命令发送到所述GPU之前,根据所述一个或多个动画修改所述一个或多个静态GPU数据结构的至少一个数据结构,从而导致所述GPU以不同方式处理所述至少一个静态GPU数据结构的一部分以便将所述一个或多个动画应用于至少一个对应的用户接口元素。
12.如权利要求11中所述的计算机程序产品,其中所述组成线程根据从所述UI线程传递的组成信息维护所述一个或多个组成数据结构。
13.如权利要求11中所述的计算机程序产品,其中所述组成线程根据在所述组成线程中接收的用户输入维护所述一个或多个组成数据结构。
14.如权利要求13中所述的计算机程序产品,其中所述组成线程响应于在所述组成线程中接收的所述用户输入而启动所述一个或多个动画。
15.一种计算机系统(200),包括:
一个或多个处理器;
图形处理单元(GPU)(228);
系统存储器;以及
一个或多个上面存储有计算机可执行指令的计算机存储介质,当执行所述计算机可执行指令时实现多个线程,包括:
     用户接口线程(202),其被配置为:
          维护描述程序(204)的用户接口的一个或多个用户接口元素的用户接口层次结构(206),
          遍历所述用户接口层次结构以便直接生成表示所述用户接口层次结构的至少一部分的一个或多个静态GPU数据结构(208),包括对应于当呈现所述用户接口时在不同帧之间保持不变的用户接口元素的至少一个静态GPU数据结构,以及
          将所述一个或多个静态GPU数据结构传递到组成线程(216);
     所述组成线程,其被配置为:
          保留一个或多个静态GPU数据结构(220)以便跨所述组成线程的多次执行而重复使用,以使得所述一个或多个静态GPU数据结构被用于生成多个视频帧,以及
          对于所述组成线程的每次执行,将用于至少一个视频帧的GPU数据和GPU命令(224)发送到GPU线程(226)来呈现,所述GPU数据和GPU命令根据所述一个或多个静态GPU数据结构导出;以及
     所述GPU线程,其被配置为从所述组成线程接收GPU数据和GPU命令,以及根据所述GPU数据和GPU命令在所述GPU中呈现图形数据。
16.一个或多个存储指令的计算机可读存储介质,当由计算设备执行时,导致所述计算设备执行如权利要求1-9中任一项所述的方法。
CN201210328495.1A 2011-09-09 2012-09-07 基元组成 Active CN102968755B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/229342 2011-09-09
US13/229,342 2011-09-09
US13/229,342 US8872838B2 (en) 2011-09-09 2011-09-09 Primitive composition

Publications (2)

Publication Number Publication Date
CN102968755A true CN102968755A (zh) 2013-03-13
CN102968755B CN102968755B (zh) 2015-08-19

Family

ID=47798885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210328495.1A Active CN102968755B (zh) 2011-09-09 2012-09-07 基元组成

Country Status (4)

Country Link
US (1) US8872838B2 (zh)
CN (1) CN102968755B (zh)
HK (1) HK1183146A1 (zh)
WO (1) WO2013036700A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105359104A (zh) * 2013-06-19 2016-02-24 微软技术许可有限责任公司 状态信息的同步点

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361715B2 (en) 2011-06-02 2016-06-07 Microsoft Technology Licensing, Llc Global composition system
US9460073B2 (en) 2013-02-27 2016-10-04 Google Inc. Systems and methods for mutations and operational transforms in a collaborative spreadsheet environment
US9542906B2 (en) 2013-05-10 2017-01-10 Microsoft Technology Licensing, Llc Shared compositional resources
US9305381B1 (en) * 2013-08-27 2016-04-05 Google Inc. Multi-threaded rasterisation
US10147158B2 (en) 2014-12-13 2018-12-04 Microsoft Technology Licensing, Llc Frame invalidation control with causality attribution
US9779466B2 (en) 2015-05-07 2017-10-03 Microsoft Technology Licensing, Llc GPU operation
CN105118089B (zh) * 2015-08-19 2018-03-20 上海兆芯集成电路有限公司 三维图形管道中的可程序化像素设定方法及使用其的装置
KR20170124447A (ko) 2016-05-02 2017-11-10 다우 글로벌 테크놀로지스 엘엘씨 탄성 하지층을 갖는 열적으로 인쇄가능한 종이 물품
KR20170131215A (ko) 2016-05-20 2017-11-29 다우 글로벌 테크놀로지스 엘엘씨 탄성 산재 층을 갖는 열적으로 인쇄 가능한 종이 물품
CN106126199A (zh) * 2016-06-13 2016-11-16 乐视控股(北京)有限公司 视图数据模型的构造方法及装置
CN105957121A (zh) * 2016-06-29 2016-09-21 努比亚技术有限公司 应用中动画的显示系统及显示方法
GB2564075B (en) * 2017-03-23 2020-04-01 Pridefield Ltd Multi-Threaded rendering system
CN108509248B (zh) * 2018-04-13 2021-11-23 网易(杭州)网络有限公司 数据处理方法和装置、存储介质、处理器及终端
US11645107B2 (en) * 2021-01-13 2023-05-09 Adobe Inc. Processing multi-frame tasks in a multi-threaded digital design system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20090225079A1 (en) * 2008-03-04 2009-09-10 Microsoft Corporation Shader-based extensions for a declarative presentation framework
US20100013842A1 (en) * 2008-07-16 2010-01-21 Google Inc. Web-based graphics rendering system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6091422A (en) 1998-04-03 2000-07-18 Avid Technology, Inc. System for editing complex visual data providing a continuously updated rendering
US8339404B2 (en) 2007-11-29 2012-12-25 Accelereyes, Llc System for improving utilization of GPU resources
US8130239B1 (en) * 2008-03-31 2012-03-06 The Mathworks, Inc. Update traversal of object trees for multiprocessor systems
US8866827B2 (en) 2008-06-26 2014-10-21 Microsoft Corporation Bulk-synchronous graphics processing unit programming
US20100013854A1 (en) 2008-07-18 2010-01-21 Microsoft Corporation Gpu bezier path rasterization
US8274516B2 (en) 2008-08-04 2012-09-25 Microsoft Corporation GPU scene composition and animation
US8400458B2 (en) 2009-09-09 2013-03-19 Hewlett-Packard Development Company, L.P. Method and system for blocking data on a GPU

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20090225079A1 (en) * 2008-03-04 2009-09-10 Microsoft Corporation Shader-based extensions for a declarative presentation framework
US20100013842A1 (en) * 2008-07-16 2010-01-21 Google Inc. Web-based graphics rendering system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105359104A (zh) * 2013-06-19 2016-02-24 微软技术许可有限责任公司 状态信息的同步点
CN105359104B (zh) * 2013-06-19 2019-05-31 微软技术许可有限责任公司 状态信息的同步点

Also Published As

Publication number Publication date
WO2013036700A3 (en) 2013-05-02
US8872838B2 (en) 2014-10-28
US20130063459A1 (en) 2013-03-14
WO2013036700A2 (en) 2013-03-14
HK1183146A1 (zh) 2013-12-13
CN102968755B (zh) 2015-08-19

Similar Documents

Publication Publication Date Title
CN102968755B (zh) 基元组成
CN101553771B (zh) 绘制超文本标记语言内容
CN101814024B (zh) 一种跨平台3d界面设计系统和方法
CN102221993B (zh) 复杂用户界面状态变更的声明性定义
CN111310936A (zh) 机器学习训练的构建方法、平台、装置、设备及存储介质
CN104756072A (zh) 使用公共描述的跨平台数据可视化
CN102449598A (zh) 程序包设计和生成
JP2011501297A (ja) ソフトウェアファクトリ仕様化及び実行モデル
KR20140017649A (ko) 사용자 인터페이스들 및 입력 컨트롤들을 적응시키는 방법
CN104137070A (zh) 用于异构cpu-gpu计算的执行模型
CN112257135A (zh) 一种基于多线程的模型加载方法、装置、存储介质及终端
CN101681523A (zh) 用于动画显示数据项的显示表示的方法和系统
CN105184847A (zh) 3d游戏渲染引擎的渲染方法
KR20140105609A (ko) 온라인 게이밍
CN107015791B (zh) 一种生成图表组件系统的处理方法、装置及系统
CN102930580A (zh) 数据帧动画
US20170278291A1 (en) Multi-Mode Animation System
Roberts et al. The history of simulation modeling
CN111868754A (zh) 信息处理装置和信息处理方法
CN102289428A (zh) 一种批量生成表单的方法和装置
CN114201156A (zh) 接入方法、装置、电子设备及计算机存储介质
CN105518618A (zh) 配置成将针对视觉元素的输入路由到图形框架的输入对象
CN102930581A (zh) 对数据帧动画的通用表示
Kress In situ visualization techniques for high performance computing
EP3834080B1 (en) Static reconcilliation of application view hierarchies

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1183146

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150703

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150703

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant