CN111971655A - 用于超文本标记语言图形内容的本机运行时技术 - Google Patents

用于超文本标记语言图形内容的本机运行时技术 Download PDF

Info

Publication number
CN111971655A
CN111971655A CN201980022004.0A CN201980022004A CN111971655A CN 111971655 A CN111971655 A CN 111971655A CN 201980022004 A CN201980022004 A CN 201980022004A CN 111971655 A CN111971655 A CN 111971655A
Authority
CN
China
Prior art keywords
native
graphics
api
computer device
source code
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
CN201980022004.0A
Other languages
English (en)
Other versions
CN111971655B (zh
Inventor
A·埃兰戈
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 Technology Licensing LLC
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 Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN111971655A publication Critical patent/CN111971655A/zh
Application granted granted Critical
Publication of CN111971655B publication Critical patent/CN111971655B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本文中描述的示例总体上涉及在计算机设备处本机绘制与源代码相关联的超文本标记语言(HTML)图形内容。具体地,计算机设备在编译器处接收与基于图形的内容相关联的源代码。计算机设备还将源代码的至少一部分编译成包括至少一个图形应用程序编程接口(API)的本机代码。此外,计算机设备还在本机桥转换器处确定与计算机设备的图形处理单元相关联的至少一个本机API对应于图形API。计算机设备还向图形处理单元传输至少一个本机API以用于在计算机设备处的HTML图形内容的本机绘制。

Description

用于超文本标记语言图形内容的本机运行时技术
背景技术
本公开涉及图形绘制,并且更特别地涉及用于各种平台和/或设备上的结构化标记语言图形的本机运行时的技术。
计算机设备可以包括需要绘制复杂对象和/或场景的很多本机应用,诸如计算机游戏。为了绘制这样的对象和/或场景,这些本机应用可以使用将与图形绘制有关的计算定向到专用图形处理单元(GPU)的图形应用程序编程接口(API)。由这些GPU提供的附加处理能力可以大大提高图形质量和吞吐量。
诸如web浏览器(网络浏览器)之类的web应用(网络应用)通常可以由脚本语言组成,这些脚本语言可能无法利用提供图形硬件加速的低级图形API。相反,用于web应用的图形绘制通常可以由中央处理单元(CPU)而非GPU执行。因此,基于web的图形绘制的基于软件的方式可能会限制web应用的图形能力。但是,与本机应用不同,web应用具有很多优点。例如,web应用可以能够在多个平台上执行,不需要安装,并且比本机应用更安全。但是,即使具有上述优点,web浏览器也可能无法完全利用可用的计算资源(例如,GPU)来绘制图形。
因此,在本领域中需要改进针对与web应用相关联的内容的图形的绘制。
发明内容
以下给出了本公开的一个或多个实现的简化概述,以便提供对这种实现的基本理解。该概述不是对所有预期实现的广泛概述,并且既不旨在标识所有实现的关键或重要元素,也不旨在界定任何或所有实现的范围。其唯一目的是以简化的形式呈现本公开的一个或多个实现的一些概念,作为稍后呈现的更详细描述的序言。
本公开提供了一种在计算机设备处本机绘制与JavaScript源代码相关联的超文本标记语言(HTML)图形内容的方法。该方法可以包括在编译器处接收与基于图形的内容相关联的源代码。该方法还可以包括将源代码的至少一部分编译成包括至少一个图形应用程序编程接口(API)的本机代码。另外,该方法可以包括在本机桥转换器处确定与计算机设备的图形处理单元相关联的至少一个本机API对应于图形API。该方法还可以包括向图形处理单元传输至少一个本机API以用于在计算机设备处的HTML图形内容的本机绘制。
本公开提供了一种用于本机绘制与源代码相关联的HTML图形内容的装置,该装置包括存储器和与存储器通信的至少一个处理器。至少一个处理器可以被配置为在编译器处接收与基于图形的内容相关联的源代码。至少一个处理器还可以被配置为将源代码的至少一部分编译成包括至少一个图形API的本机代码。另外,至少一个处理器可以被配置为在本机桥转换器处确定与计算机设备的图形处理单元相关联的至少一个本机API对应于图形API。至少一个处理器还可以被配置为向图形处理单元传输至少一个本机API以用于在计算机设备处的HTML图形内容的本机绘制。
本公开提供了一种计算机可读介质,该计算机可读介质存储由电子设备可执行以在计算机设备处本机绘制与源代码相关联的HTML图形内容的指令。计算机可读介质包括用于使电子设备进行以下操作的至少一个指令:在编译器处接收与基于图形的内容相关联的源代码,将源代码的至少一部分编译成包括至少一个图形API的本机代码,在本机桥转换器处确定与计算机设备的图形处理单元相关联的至少一个本机API对应于图形API,并且向图形处理单元传输至少一个本机API以用于计算机设备处的HTML图形内容在的本机绘制。
与本公开的实现有关的其他优点和新颖特征将在下面的描述中部分地阐述,并且在对以下内容进行检查或通过实践对其进行学习之后对于本领域技术人员将部分地变得更加很清楚。
附图说明
根据参考附图阅读的以下详细描述,将能够更好地理解本公开,其中在附图说明中,相同的附图标记用于指示相同的部分:
图1是根据本公开的实现的计算机设备的示意性框图,除了其他组件以外,该计算机设备还包括被配置为本机运行结构化标记语言内容的本机运行时组件;
图2是根据本公开的实现的本机运行时组件内的源代码的处理流程的示意图;
图3A和3B是根据本公开的实现的图形内容的本机运行时的方法的流程图;以及
图4是根据本公开的实现的示例计算机设备的示意性框图。
具体实施方式
本公开涉及各种平台和/或设备上的结构化标记语言的本机运行时。本机运行时和/或应用可以针对给定系统被设计或内置到给定系统中,诸如计算机设备。例如,超文本标记语言(HTML)是一种标记语言,其用于在万维网上结构化和呈现内容。具体地,可能存在一些技术可以用于运行基于HTML的内容,诸如但不限于类似app的外壳(shell)(例如,混合app)中的HTML5游戏。这些app外壳可以是填充程序(shim),这些填充程序内托管有web浏览器组件并且在web浏览器组件上绘制HTML/HTML5内容。填充程序可以是一个小型库,其可以透明地拦截API调用并且改变传递的变量、处理操作本身、或者将操作重定向到其他地方。这等效于在web浏览器中运行HTML5内容。但是,这些外壳程序仅使人感到HTML5内容/游戏正在作为本机应用运行。如上所述,本机应用可以是针对计算机设备而设计或内置(例如,安装)到计算机设备中的应用。而且,这可能在游戏与实际图形硬件(与图形相关的处理优选地在其上运行)之间再增加一层。
此外,HTML图形内容的这样的实现的主要缺点在于,web浏览器组件可能被认为是“繁重的(heavy)”,因为其与大批特定于web浏览场景一起,诸如提供HTTP引擎、web安全性、浏览历史/书签管理、网络连接管理、会话管理、CSS绘制引擎、JavaScript运行时、工作线程(web worker)等。尽管如此,上述某些特征可能会消耗大量有限系统资源,并且甚至可能不会与游戏app相关和/或用于游戏app。而且,在填充程序(例如,web浏览器组件)中运行的HTML5内容/游戏可以被束缚为(bound to)使用由平台上的浏览器组件支持的绘制机制。HTML图形内容/游戏可能不会在内容的整个执行过程期间被硬件加速,并且可能无法基于逐游戏进行优化,主要原因是,web浏览器组件被开发以绘制网站,而不是游戏。
这样,需要在计算机设备处使用专用或硬件图形资源(例如,GPU)来改进来自web应用的HTML图形内容(诸如但不限于游戏)的图形绘制。本实现为使用结构化标记语言(例如,HTML5)图形API而开发的游戏和/或图形内容提供了本机运行时环境。例如,在这样的运行时中,开发人员和/或公司可以使用二维(2D)和/或三维(3D)HTML5图形API来开发内容/游戏,并且可以同时在多个平台和设备上发布内容。本机运行时可以获取或接收游戏的JavaScript源代码,并且将源代码转换为平台上可用的本机图形API(DirectX、开放图形库(OpenGL)、简单直接媒体层(SDL)等)。这可以为内容/游戏提供图形改进和性能提高,因为本机图形API直接在平台上可用的图形硬件(例如,GPU)上运行以进行计算和/或绘制。
平台上可用的本机图形API可以基于可用的硬件、操作系统、GPU的能力、图形驱动程序等。用于内容/游戏的本机图形API的选择可以基于要在平台上运行的游戏的最佳性能水平来确定。这可以由开发人员确定,也可以由运行时基于游戏的元数据、平台的配置和/或图形处理能力来动态地确定。本实现的本机运行时将针对HTML5游戏的支持矩阵从浏览器扩展到本机使用本机图形API的设备,诸如移动电话、平板电脑、个人计算机和游戏机。
例如,在一些实现中,计算机设备可以在计算机设备处本机绘制与源代码相关联的HTML图形内容。计算机设备还可以在编译器(例如,JavaScript引擎/编译器)处接收与基于图形的内容(例如,基于web的游戏)相关联的源代码。此外,计算机设备可以将源代码的至少一部分编译和/或解析为包括至少一个图形API的本机二进制代码。计算机设备可以在本机桥转换器处确定与计算机设备的图形处理单元相关联的至少一个本机API对应于图形API。计算机设备可以向图形处理单元传输至少一个本机API以用于在计算机设备处的HTML图形内容的本机绘制。本实现还可以适用于用于对文档或web内容进行编码的其他结构化标记语言(SGML、XHTML等)。
现在参考图1,示例计算系统100可以包括与至少一个服务器104通信的计算机设备100。计算机设备102可以包括在web浏览器106内运行的web应用108和本机运行时组件120。这些组件中的每个在下面进一步详细描述。
计算机设备102可以包括可以可连接到网络的任何移动或固定计算机设备。计算机设备102可以是例如诸如台式或膝上型或平板计算机等计算机设备、服务器、蜂窝电话、游戏设备、混合现实或虚拟现实设备、音乐设备、电视、导航系统、相机、个人数字助理(PDA)、或手持设备、或者具有与一个或多个其他设备的有线和/或无线连接能力的任何其他计算机设备。
计算机设备102可以包括存储器和被配置为控制计算机设备102的操作的CPU(未示出)。存储器可以被配置用于存储定义操作系统和/或应用和/或与操作系统和/或应用相关联的数据和/或计算机可执行指令,并且CPU可以执行操作系统和/或应用。存储器的示例可以包括但不限于计算机可用的存储器类型,诸如随机存取存储器(RAM)、只读存储器(ROM)、磁带、磁盘、光盘、易失性存储器、非易失性存储器及其任何组合。存储器可以存储由CPU执行的应用的本地版本。
CPU可以包括用于执行指令的一个或多个处理器。CPU的示例可以包括但不限于如本文中描述的特别地编程的任何处理器,包括控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、片上系统(SoC)、或其他可编程逻辑或状态机。CPU 114可以包括其他处理组件,诸如算术逻辑单元(ALU)、寄存器和控制单元。此外,操作系统可以包括存储在存储器中并且由CPU执行的指令(诸如一个或多个应用)。计算机设备102还可以包括包括存储在存储器中并且由CPU执行的指令的应用。例如,应用可以是提供基于遥测的分析以标识和补救最重要的最终用户影响问题的分析应用。
另外,计算机设备100可以包括操作系统(未示出),该操作系统协调执行专门任务和/或提供附加功能的一个或多个应用(例如,web浏览器106和web应用108),以及计算机设备102上的硬件和/或软件资源的利用。为了针对用户执行任务,除了通过由操作系统提供的硬件和/或软件框架与用户交互以外,应用还可以使用来自计算系统的计算机设备102上的硬件资源(处理器、存储器、I/O组件、无线发射器、图形处理单元(GPU)144等)。
计算机设备102可以包括用于执行本机应用和非本机应用两者的功能。尽管本机应用可以是已经被开发用于在特定平台或设备上使用的应用程序,但是非本机应用可以是已经被开发用于在多个平台或设备上使用的应用程序。特别地,计算机设备102可以包括本地安装在计算机设备102上并且特定于操作系统和/或计算机设备102上的一个或多个硬件设备的本机应用,诸如web浏览器106。这样的应用可以经由直接在计算机设备102的一个或多个CPU上执行的编译器122被编译成本机(例如,机器)代码。针对这样的应用的代码执行可以通过以下方式来进一步优化:以通用编程语言(C、C++等)和汇编语言的组合编写应用,并且利用为应用提供硬件加速(例如,图形硬件加速)的库。
此外,计算机设备102还可以包括用于执行平台无关的非本机应用的功能。具体地,计算机设备102可以使用与一个或多个服务器的网络连接从一个或多个服务器(例如,服务器104)获取web应用108,并且在web浏览器106中加载web应用108。例如,web应用108可以由web浏览器106通过互联网从应用服务器下载。
web应用108可以提供与计算系统102上的本机应用相似的特征和/或用户交互。例如,web应用108可以用作计算机游戏、电子邮件客户端、文档编辑器、媒体播放器和/或计算机辅助设计(CAD)系统。web应用108还可以包括动态用户接口元素,诸如菜单、按钮、窗口、子窗口、图标、动画、和/或模拟本机应用中的类似用户接口元素的其他图形对象。换言之,web应用108可以对应于丰富的互联网应用(RIA)。
另外,不管与计算机设备102相关联的平台的类型(操作系统、驱动程序等)如何,web应用108都可以在计算机设备102上执行。尽管诸如web应用108之类与平台无关的应用与本机应用相比可以更加便携,但是这样的应用可能缺少本机应用的某些性能能力。
具体地,诸如web应用108等非本机应用可以使用诸如JavaScript(JavaScriptTM是Sun Microsystems,Inc.的注册商标)等脚本语言来形成或编写。web应用108和/或其他非本机应用的解释性可能导致针对非本机应用的执行时间比编译本机应用的执行时间显著更慢。非本机应用也可能无法使用可用于本机应用的低级库和/或API。结果,非本机应用可能在某些任务中提供有限功能。
特别地,web应用108可能无法在图形绘制中使用图形硬件加速(例如,来自GPU144)。例如,web应用108可以用缺少与GPU 144的接口的语言(例如,JavaScript)编写,和/或可能被限制以充分利用由GPU 144提供的硬件加速的速度/速率发出绘制命令。相反,用于web应用108的图形绘制可以使用在计算机设备102的CPU而不是GPU 144上执行的软件来执行。因此,与采用或使用图形硬件加速的本机应用中的图形相比,web应用108中的绘制图形/内容可能是次优的。
用于web应用108的图形绘制的缺点还可能阻止web应用108提供使用大量图形处理资源的特征,包括经由GPU 144进行图形硬件加速。特别地,web应用108可能无法针对基于web的计算机游戏有效地绘制大量对象和/或复杂3D模型。
这样,为了使用GPU 144为web应用108提供硬件加速,计算机设备102可以包括本机运行时组件120,本机运行时组件120可以被配置为将与web应用108的图形API 126或与之相关联的图形API 126转换或绑定(binding)到GPU 144的或与GPU 144相关联的至少一个本机API 130。具体地,本机运行时组件120可以在编译器122处接收web应用108的HTML源110。编译器122可以将源代码110编译或解析为包括至少一个图形API 126的本机代码124。在一些实现中,源代码110可以对应于与形成web应用108的特定语言相关联的一组指令和/或可执行文件。在编译器122的编译之后,本机代码124可以对应于该组指令和/或可执行文件的修改形式。此外,本机桥转换器128可以分析至少一个图形API 126的一个或多个参数,诸如功能参数和/或输入参数,并且确定实现期望功能的一个或多个对应本机API 130。功能参数可以指定与图形相关的操作(例如,画线API)。输入参数可以指定用于执行功能的一个或多个数据点。在一些实现中,单个图形API 126可以对应于单个本机API 130。在一些实现中,单个图形API 126可以对应于多个本机API 130。
在将至少一个图形API 126转换或绑定到一个或多个本机API 128之后,本机桥转换器128可以将一个或多个本机API 130提供给图形处理单元144以用于web应用108的图形的本机绘制。在一些实现中,GPU 132可能不会立即需要或使用至少一个图形API 126。也就是说,在针对web应用108的图形的绘制期间,尽管至少一个图形API 126在编译器122进行编译之后从本机代码124被获取,但是图形绘制可能不需要至少一个图形API 126。因此,至少一个图形API可以被存储在虚拟上下文中或形成虚拟上下文的一部分,该虚拟上下文与尚未被GPU 144调用或利用来绘制web应用108的一个或多个API相对应。
此外,计算机设备102可以包括用于根据与GPU 144相关联的程序接口的不同集合来绘制图形的API 140的第一汇集(collection)和API 142的第二汇集。API汇集可以包括一个或多个个体API,每个个体API定义或表示用于执行与图形相关的操作的不同功能和/或子例程。在一些实现中,计算机设备102可以基于web应用108的元数据和/或GPU 144的能力来确定要使用哪个API汇集或集合。
参考图2,示意图200提供了本机运行时组件120内的源代码的处理流程。本机运行时组件120可以包括多个组件,包括形成编译器122的JavaScript引擎202以及本机桥转换器128。JavaScript引擎202可以是JavaScript编译器,本机桥转换器128可以是提供从HTML5 2D和3D图形API(例如,(多个)图形API 126)到本机图形API(例如,本机API 130)的转换的组件。
本机运行时组件120可以采用符合HTML5图形API的源代码(例如,源代码110)作为输入。然后,源代码110可以被传递给JavaScript引擎202,JavaScript引擎202编译源代码110并且使用本机桥转换器128将HTML5图形API调用绑定到本机(图形)API 130调用。换言之,本机运行时组件120将源代码110编译成本机(机器)代码124,并且在该过程中,将对HTML5图形API 126的调用替换为对本机(图形)API 130的调用。这使得可以为HTML5游戏及时编译高性能二进制文件,该HTML5游戏使用本机(图形)API 130直接在图形硬件(例如,GPU 144)上执行计算和绘制。
本机桥组件120可以提供到在不同平台和设备上可用的多个本机图形API的绑定。对本机图形API汇集的任何更新和/或增强在本机桥组件120内被抽象,从而使实际的HTML5游戏不受本机API的改变的影响。这也可以使得HTML5游戏能够利用本机图形API中不时出现的最新发展和高级图形特征。
本文中公开的针对HTML5游戏的本机运行时可以被内置到操作系统中以提供本机运行HTML5游戏的能力。这可以使得多个设备和/或平台(包括移动电话、平板电脑、运行不同操作系统的PC、游戏机和增强现实系统)能够本机运行HTML5游戏和图形内容。
本机运行时还可以基于来自源代码110(例如,游戏应用)的元数据和/或系统的图形能力,动态地确定使用可用的本机图形API之一进行绘制。以这种方式,与在web浏览器和/或基于web浏览器的填充程序上运行游戏相比,这些游戏使用本机图形API在最佳配置上运行以提供改进的图形体验和更高的性能。
此外,本机运行时组件120可以在具有图形处理和绘制能力的任何计算平台/设备上实现。本机运行时组件120使用JavaScript引擎202将HTML5图形API 126转换为由底层平台支持的本机(图形)API 130之一。当在任何平台上实现时,由于本机优势,本机运行时组件120可以提供针对HTML5内容的性能提升和改进的图形体验。作为到本机图形API 130的转换的一部分,本机运行时组件120可以提供可以改善目标平台(其可以在手机、平板电脑、PC、游戏机和AR/VR/MR平台的范围变动)上游戏/图形内容的图形体验的参数和本机图形API的汇集。
这样,本机运行时组件120可以使得HTML5游戏能够在多个平台和设备上本机运行。此外,本机运行时组件120可以提供在游戏机内部烧录(baked)的可配置本机运行时,以使用本机(图形)API 130来绘制HTML5游戏和图形。本机运行时组件120还能够向web浏览器106弹出用于绘制HTML5画布图形内容的本机外壳,就像所需的本机应用一样。本机运行时组件120可以采用应用外壳程序或图形外壳程序的形式来分发HTML5游戏,HTML5游戏要以与平台无关和与硬件无关的方式被本机运行。另外,本机运行时组件120可以向web浏览器提供在可配置图形外壳程序中运行HTML5图形内容的能力,该可配置图形外壳程序动态地选择最佳配置和对于在平台上运行的内容而言是最佳的本机图形API。本实现还可以适用于用于对文档或web内容进行编码的其他结构化标记语言(SGML、XHTML等)。
现在参考图3A和3B,示例性方法300用于在计算机设备102处本机绘制与web应用108的源代码110相关联的HTML图形内容。方法300所示的动作在时间上可以重叠。例如,在某个时刻,动作中的两个动作可以由不同的组件执行。动作的执行也可以在组件上交错。另外,方法300所示的动作可以以不同于图3A和3B所示的顺序执行。
在框302,方法300可以在编译器处接收与基于图形的内容相关联的源代码。例如,如本文所述,计算机设备102可以执行本机运行时组件120以在编译器122处接收与web应用108的基于图形的内容相关联的源代码110。在一些实现中,源代码可以是JavaScript源代码。
在一些实现中,源代码110可以对应于JavaScript源代码。此外,在一些实现中,源代码100可以包括元数据。元数据可以包括运行游戏在平台上所需要的最小图形特征/能力。例如,特征/能力可以包括抗混叠、双缓冲、阿尔法、像素深度、后处理参数、每秒目标帧数(FPS)信息中的一项或多项。在一些实现中,源代码110可以是HTML5源代码。在一些实现中,源代码110是从web应用108接收的或者形成web应用108的一部分。在一些实现中,编译器122可以对应于JavaScript编译器。
在框304,方法300可以确定与图形处理单元相关联并且在计算设备处可用于HTML图形内容的本机绘制的本机API的第一汇集和本机API的第二汇集。例如,如本文所述,计算机设备102可以执行本机运行时组件120以确定与GPU 144相关联并且在计算机设备102处可用于web应用108的HTML图形内容的本机绘制的本机API 140的第一汇集和本机API 142的第二汇集。API的汇集可以包括一个或多个个体API,每个个体API定义或表示用于执行与图形相关的操作的不同功能和/或子例程。本机API的第一汇集和本机API的第二汇集可以在一些实现中,本机API 142的第二汇集可以不同于本机API 140的第一汇集。在某些实现中,至少一个本机API 130是本机API 140的第一汇集的一部分,每个本机API 140具有不同的功能并且与GPU 144相关联。
在框306,方法300可以确定至少GPU的能力信息。例如,如本文所述,计算机设备102可以执行本机运行时组件120以确定至少GPU 144的能力信息。能力信息可以包括驱动器版本、所支持的图形API、多个图形核心、时钟速度、图形存储器大小、纹理填充速率中的至少一项。
在框308,方法300可以至少基于元数据或能力信息来选择用于HTML图形内容的绘制的本机API的第一汇集。例如,如本文所述,计算机设备102可以执行本机运行时组件120以至少基于元数据或GPU 144的能力信息来选择用于web应用108的HTML图形内容的绘制的本机API 140的第一汇集。
在框310,方法300可以将源代码的至少一部分编译成包括至少一个API的本机代码。例如,如本文所述,计算机设备102可以执行本机运行时组件120以使用编译器122将源代码110的至少一部分编译成包括至少一个图形API 126的本机代码124。
在框312,方法300可以在本机桥转换器处从编译器接收至少一个图形API。例如,如本文所述,计算机设备102和/或本机运行时组件120可以执行本机桥转换器128以从编译器122接收至少一个图形API 126。在一些实现中,本机桥转换器128可以被形成为web浏览器108的一部分或不同于web浏览器108的应用。
在框314,方法300可以在本机桥转换器处确定与计算设备的图形处理单元相关联的至少一个本机API是否对应于图形API。例如,如本文所述,计算机设备102和/或本机运行时组件120可以执行本机桥转换器以确定与计算机设备102的GPU 144相关联的至少一个本机API 130是否对应于图形API 126。
在一些实现中,至少一个图形API 126可以包括用于执行与web应用108相关联的与图形相关的功能的一个或多个参数。在一些实现中,确定与计算机设备102的GPU 144相关联的至少一个本机API 130是否对应于图形API 126可以包括:标识具有与至少一个图形API 126的一个或多个参数相对应的一个或多个本机参数的至少一个本机API 130。在一些实现中,至少一个图形API 126的一个或多个参数和至少一个本机API 130的一个或多个本机参数各自可以包括API输入参数或功能参数中的至少一项。
在一些实现中,确定与计算机设备102的GPU 144相关联的至少一个本机API 130是否对应于图形API 126可以包括:在编译HTML源代码110的至少一部分的同时或期间,在本机桥转换器128处接收至少一个图形API 126,确定至少一个图形API 126是否已经被执行,并且基于确定至少一个图形API 126尚未被执行来形成包括至少一个图形API 126的虚拟上下文132。虚拟上下文可以存储或包含已经由编译器122编译但是尚未被执行或传输到GPU 144的任何图形API 126。
在框316,方法300可以基于确定与计算设备的GPU相关联的至少一个本机API不对应于图形API来确定与图形API相对应的两个或更多个本机API。例如,如本文所述,计算机设备102可以执行GPU 144以基于确定与计算机设备102的GPU 144相关联的至少一个本机API 130不对应于图形API 126来确定与图形API 126相对应的两个或更多个本机API。
在框318,方法300可以基于确定与计算设备的GPU相关联的至少一个本机API对应于图形API,向GPU传输至少一个本机API或两个或更多个本机API以用于在计算设备处的HTML图形内容的本机绘制。例如,如本文所述,计算机设备102可以执行本机运行时组件120以基于确定与计算机设备102的GPU 144相关联的至少一个本机API 130对应于图形API126,向GPU 144传输至少一个本机API 130以用于在计算机设备102处的web应用108的HTML图形内容的本机绘制。本实现也可以适用于用于对文档或web内容进行编码的其他结构化标记语言(SGML、XHTML等)。
现在参考图4,示出了根据实现的示例计算机设备102,与图1相比,该示例计算机设备102包括附加组件细节(相对于本机运行时组件120、web浏览器106和GPU 144)。在一个示例中,计算机设备102可以包括用于执行与本文中描述的组件和功能中的一项或多项相关联的处理功能的处理器404。处理器404可以包括单组或多组处理器或多核处理器。此外,处理器404可以被实现为集成处理系统和/或分布式处理系统。在一种实现中,例如,处理器404可以包括CPU。在一个示例中,计算机设备102可以包括用于存储由处理器404可执行以执行本文中描述的功能的指令的存储器406。
此外,计算机设备102可以包括通信组件408,该通信组件408利用本文中描述的硬件、软件和服务来提供与一方或多方的通信的建立和维护。通信组件408可以在计算机设备102上的组件之间以及在计算机设备102与外部设备(诸如跨通信网络定位的设备和/或串行或本地连接到计算机设备102的设备)之间进行通信。例如,通信组件408可以包括一个或多个总线,并且还可以包括可操作用于与外部设备接口的分别与传输器和接收器相关联的传输链组件和接收链组件。
另外,计算机设备102可以包括数据存储44,数据存储44可以是硬件和/或软件的任何合适的组合,数据存储44提供结合本文中描述的实现而采用的信息、数据库和程序的大容量存储。例如,数据存储410可以是用于操作系统和/或应用的数据存储库。
计算机设备102还可以包括用户接口组件412,该用户接口组件412可操作以从计算机设备102的用户接收输入并且还可操作以生成用于呈现给用户的输出。用户接口组件412可以包括一个或多个输入设备,包括但不限于键盘、数字键盘、鼠标、触敏显示器、导航键、功能键、麦克风、语音识别组件、能够从用户接收输入的任何其他机制、或其任何组合。此外,用户接口组件412可以包括一个或多个输出设备,包括但不限于显示器、扬声器、触觉反馈机制、打印机、能够向用户呈现输出的任何其他机制、或其任何组合。
在一种实现中,用户接口组件412可以传输和/或接收与操作系统和/或应用的操作相对应的消息。另外,处理器404执行操作系统和/或应用,并且存储器406或数据存储410可以存储它们。
如本申请中使用的,术语“组件”、“系统”等旨在包括与计算机相关的实体,诸如但不限于硬件、固件、硬件和软件的组合、软件、或执行软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在计算机设备上运行的应用和计算机设备都可以是组件。一个或多个组件可以驻留在进程和/或执行线程中,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。另外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质执行。组件可以通过诸如根据具有一个或多个数据分组的信号之类的本地和/或远程过程的方式进行通信,诸如来自一个组件的数据在本地系统、分布式系统中与另一组件进行交互和/或通过网络(诸如互联网)经由信号与其他系统交互。
此外,术语“或”旨在表示包含性“或”而不是排他性“或”。也就是说,除非另有说明或从上下文中清楚得知,否则短语“X使用A或B”旨在表示任何自然的包含性排列。也就是说,以下任何一种情况都满足短语“X使用A或B”:X使用A;X使用B;或X同时使用A和B。此外,除非另有说明或从上下文中清楚得知指向单数形式,否则在本申请和所附权利要求书中使用的冠词“一个(a)”和“一个(an)”通常应当解释为表示“一个或多个”。
各种实现或特征可能已经根据可以包括多个设备、组件、模块等的系统被呈现。应当理解和意识到,各种系统可以包括附加的设备、组件、模块等,和/或可以不包括结合附图讨论的设备、组件、模块等中的所有。也可以使用这些方法的组合。
结合本文中公开的实施例而描述的各种说明性逻辑、逻辑块和方法的动作可以利用旨在执行本文中描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件、或其任何组合中的特别地编程的一种来实现或执行。通用处理器可以是微处理器,但是备选地,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可以被实现为计算机设备的组合,例如,DSP和微处理器的组合、多个微处理器、与DSP核心结合的一个或多个微处理器、或任何其他这样的配置。另外,至少一个处理器可以包括可操作以执行一个或多个上述步骤和/或动作的一个或多个组件。
此外,结合本文中公开的实现而描述的方法或算法的步骤和/或动作可以直接体现在硬件中,在由处理器执行的软件模块中,或在这两者的组合中。软件模块可以驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM、或本领域已知的任何其他形式的存储介质中。示例性存储介质可以耦合到处理器,使得处理器可以从该存储介质读取信息并且可以向该存储介质写入信息。备选地,存储介质可以与处理器成一体。此外,在一些实现中,处理器和存储介质可以驻留在ASIC中。另外,ASIC可以驻留在用户终端中。备选地,处理器和存储介质可以作为分立组件驻留在用户终端中。另外,在一些实施方案中,方法或算法的步骤和/或动作可作为一个代码和/或指令或者代码和/或指令的任何组合或集合而驻留在机器可读介质和/或计算机可读介质上,机器可读介质和/或计算机可读介质可以被并入计算机程序产品中。
在一个或多个实现中,所描述的功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则功能可以作为一个或多个指令或代码在计算机可读介质上存储或传输。计算机可读介质包括计算机存储介质和通信介质,包括有助于将计算机程序从一个地方转移到另一地方的任何介质。存储介质可以是计算机可以访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁性存储设备、或者可以用于以指令或数据结构形式执行或存储期望的程序代码并且可以由计算机访问的任何其他介质。本文中使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘通常通过激光以光学方式复制数据。上述各项的组合也应当被包括在计算机可读介质的范围内。
尽管已经结合本公开的示例描述了本公开的实现,但是本领域技术人员将理解,可以在不脱离本发明范围的情况下对上述实现进行变化和修改。通过考虑说明书或根据本文中公开的示例的实践,其他实现对于本领域技术人员将是很清楚的。

Claims (15)

1.一种在计算机设备处本机绘制与源代码相关联的超文本标记语言(HTML)图形内容的方法,包括:
在编译器处接收与基于图形的内容相关联的所述源代码;
将所述源代码的至少一部分编译成包括至少一个图形应用程序编程接口(API)的本机代码;
在本机桥转换器处确定:与所述计算机设备的图形处理单元相关联的至少一个本机API对应于所述图形API;以及
向所述图形处理单元传输所述至少一个本机API,以用于在所述计算机设备处的所述HTML图形内容的本机绘制。
2.根据权利要求1所述的方法,其中所述至少一个图形API包括用于执行与图形相关的功能的一个或多个参数,并且
其中确定与所述计算机设备的所述图形处理单元相关联的所述至少一个本机API对应于所述图形API包括:标识具有与所述至少一个图形API的所述一个或多个参数相对应的一个或多个本机参数的所述至少一个本机API。
3.根据权利要求2所述的方法,其中所述至少一个图形API的所述一个或多个参数和所述至少一个本机API的所述一个或多个本机参数各自包括API输入参数或功能参数中的至少一项。
4.根据权利要求1所述的方法,其中确定与所述计算机设备的所述图形处理单元相关联的所述至少一个本机API对应于所述图形API包括:
在编译所述源代码的所述至少一部分的同时:
在所述本机桥转换器处接收所述至少一个图形API;
确定所述至少一个图形API是否已经被执行;以及
基于确定所述至少一个图形API尚未被执行,形成包括所述至少一个图形API的虚拟上下文,所述虚拟上下文存储已经被编译但是尚未被执行的任何图形API。
5.根据权利要求1所述的方法,其中所述至少一个本机API是各自具有不同功能并且与所述图形处理单元相关联的本机API的第一汇集的一部分。
6.根据权利要求5所述的方法,其中所述源代码包括元数据,所述方法还包括:
确定与所述图形处理单元相关联并且在所述计算机设备处可用于所述HTML图形内容的本机绘制的本机API的第二汇集,所述本机API的第二汇集不同于所述本机API的第一汇集;
确定至少所述图形处理单元的能力信息;以及
至少基于所述元数据或所述能力信息来选择用于所述HTML图形内容的绘制的所述本机API的第一汇集。
7.根据权利要求1所述的方法,还包括:在所述本机桥转换器处从所述编译器接收所述至少一个图形API。
8.根据权利要求1所述的方法,其中所述编译器对应于JavaScript编译器。
9.根据权利要求1所述的方法,其中所述源代码对应于HTML5源代码。
10.根据权利要求1所述的方法,其中所述源代码从网络应用被接收。
11.根据权利要求10所述的方法,其中所述本机桥转换器被形成为网络浏览器的一部分或不同于所述网络浏览器的应用的一部分。
12.一种用于本机绘制与源代码相关联的超文本标记语言(HTML)图形内容的计算机设备,包括:
存储器;以及
至少一个处理器,与所述存储器通信,其中所述至少一个处理器被配置为:
在编译器处接收与基于图形的内容相关联的源代码;
将所述源代码的至少一部分编译成包括至少一个图形应用程序编程接口(API)的本机代码;
在本机桥转换器处确定:与所述计算机设备的图形处理单元相关联的至少一个本机API对应于所述图形API;以及
向所述图形处理单元传输所述至少一个本机API以用于在所述计算机设备处的所述HTML图形内容的本机绘制。
13.根据权利要求12所述的计算机设备,其中所述至少一个图形API包括用于执行与图形相关的功能的一个或多个参数,并且
其中为了确定与所述计算机设备的所述图形处理单元相关联的所述至少一个本机API对应于所述图形API,所述至少一个处理器还被配置为标识具有与所述至少一个图形API的所述一个或多个参数相对应的一个或多个本机参数的所述至少一个本机API。
14.根据权利要求13所述的计算机设备,其中所述至少一个图形API的所述一个或多个参数和所述至少一个本机API的所述一个或多个本机参数各自包括API输入参数或功能参数中的至少一项。
15.根据权利要求12所述的计算机设备,其中为了确定与所述计算机设备的所述图形处理单元相关联的所述至少一个本机API对应于所述图形API,所述至少一个处理器还被配置为:
在编译所述源代码的所述至少一部分的同时:
在所述本机桥转换器处接收所述至少一个图形API;
确定所述至少一个图形API是否已经被执行;以及
基于确定所述至少一个图形API尚未被执行,形成包括所述至少一个图形API的虚拟上下文,所述虚拟上下文存储已经被编译但是尚未被执行的任何图形API。
CN201980022004.0A 2018-03-28 2019-03-22 用于超文本标记语言图形内容的本机运行时技术 Active CN111971655B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/938,803 US10620980B2 (en) 2018-03-28 2018-03-28 Techniques for native runtime of hypertext markup language graphics content
US15/938,803 2018-03-28
PCT/US2019/023489 WO2019190890A1 (en) 2018-03-28 2019-03-22 Techniques for native runtime of hypertext markup language graphics content

Publications (2)

Publication Number Publication Date
CN111971655A true CN111971655A (zh) 2020-11-20
CN111971655B CN111971655B (zh) 2024-03-19

Family

ID=66334538

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980022004.0A Active CN111971655B (zh) 2018-03-28 2019-03-22 用于超文本标记语言图形内容的本机运行时技术

Country Status (4)

Country Link
US (1) US10620980B2 (zh)
EP (1) EP3752914B1 (zh)
CN (1) CN111971655B (zh)
WO (1) WO2019190890A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114222011A (zh) * 2021-11-18 2022-03-22 中国长城科技集团股份有限公司 二进制协议图例生成方法、装置、电子设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116126320B (zh) * 2022-12-21 2024-02-23 瑞庭网络技术(上海)有限公司 一种数据处理方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050034109A1 (en) * 2001-06-04 2005-02-10 Microsoft Corporation Method and system for program editing
CN1702692A (zh) * 2004-05-03 2005-11-30 微软公司 提供增强的图形流水线的系统和方法
CN101300559A (zh) * 2005-08-18 2008-11-05 Bea系统公司 可扩展远程标签标记系统和方法
US20130127858A1 (en) * 2009-05-29 2013-05-23 Luc Leroy Interception of Graphics API Calls for Optimization of Rendering
US20170173467A1 (en) * 2015-12-18 2017-06-22 Guangzhen Li Technologies for native game experience in web rendering engine

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090189892A1 (en) * 2008-01-27 2009-07-30 Nitin Desai Methods and systems for detecting a dirty region within a frame encompassing three dimensional graphics
US9176754B2 (en) 2008-07-16 2015-11-03 Google Inc. Method and system for executing applications using native code modules
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US9047390B2 (en) 2011-10-24 2015-06-02 Microsoft Technology Licensing, Llc Rendering hardware accelerated graphics in a web application
US9424089B2 (en) 2012-01-24 2016-08-23 Samsung Electronics Co., Ltd. Hardware acceleration of web applications
US20140075304A1 (en) * 2012-09-07 2014-03-13 International Business Machines Corporation Annotation of user interface documents according to related documentation
US20140074913A1 (en) * 2012-09-10 2014-03-13 Calgary Scientific Inc. Client-side image rendering in a client-server image viewing architecture
EP2976709B1 (en) 2013-03-18 2018-10-03 Cloudmask Systems and methods for intercepting, processing, and protecting user data through web application pattern detection
US9930308B2 (en) 2014-07-26 2018-03-27 Clipchamp Ip Pty Ltd Platform-agnostic video player for mobile computing devices and desktop computers
US9183020B1 (en) 2014-11-10 2015-11-10 Xamarin Inc. Multi-sized data types for managed code

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050034109A1 (en) * 2001-06-04 2005-02-10 Microsoft Corporation Method and system for program editing
CN1702692A (zh) * 2004-05-03 2005-11-30 微软公司 提供增强的图形流水线的系统和方法
CN101300559A (zh) * 2005-08-18 2008-11-05 Bea系统公司 可扩展远程标签标记系统和方法
US20130127858A1 (en) * 2009-05-29 2013-05-23 Luc Leroy Interception of Graphics API Calls for Optimization of Rendering
US20170173467A1 (en) * 2015-12-18 2017-06-22 Guangzhen Li Technologies for native game experience in web rendering engine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114222011A (zh) * 2021-11-18 2022-03-22 中国长城科技集团股份有限公司 二进制协议图例生成方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
US10620980B2 (en) 2020-04-14
WO2019190890A1 (en) 2019-10-03
EP3752914A1 (en) 2020-12-23
EP3752914B1 (en) 2023-07-19
CN111971655B (zh) 2024-03-19
US20190303184A1 (en) 2019-10-03

Similar Documents

Publication Publication Date Title
Taivalsaari et al. Web browser as an application platform
CN102246146B (zh) 针对使用本地代码模块的web应用的硬件加速图形
AU2009271181B2 (en) Method and system for executing applications using native code modules
US8675000B2 (en) Command buffers for web-based graphics rendering
US10191774B2 (en) Hardware acceleration of web applications
US20110247016A1 (en) Method for generating cross platform program and middleware platform engine thereof
CN107408052B (zh) 共享对象层级上的二进制转换的方法、系统和介质
US20130097410A1 (en) Machine processor
CN103443763B (zh) 包含对重写虚拟函数的调用的支持的isa桥接
US9710355B2 (en) Selective loading of code elements for code analysis
CN113918195A (zh) 应用界面更新方法、装置、电子设备及可读存储介质
CN111971655B (zh) 用于超文本标记语言图形内容的本机运行时技术
Taivalsaari et al. The web as a software platform: Ten years later
US20130103931A1 (en) Machine processor
US9448823B2 (en) Provision of a download script
US10268647B2 (en) Asset catalog layered image support
US20140289656A1 (en) Systems and Methods for Creating and Using Electronic Content with Displayed Objects Having Enhanced Features
CN115629795A (zh) 一种可执行文件的配置方法、装置及电子设备
CN111782196A (zh) 基于mvp架构的开发方法及装置
Son et al. Design and implementation of the smart virtual machine on iOS platform for the mobile game portability
Alymkulov Desktop Application Development Using Electron Framework: Native vs. Cross-Platform
Hashimi et al. Introducing the Android Computing Platform
Devarapalli Web Assembly (Wasm): An Innovation to Client-Side Improvement

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant