CN102246146B - 针对使用本地代码模块的web应用的硬件加速图形 - Google Patents

针对使用本地代码模块的web应用的硬件加速图形 Download PDF

Info

Publication number
CN102246146B
CN102246146B CN200980150261.9A CN200980150261A CN102246146B CN 102246146 B CN102246146 B CN 102246146B CN 200980150261 A CN200980150261 A CN 200980150261A CN 102246146 B CN102246146 B CN 102246146B
Authority
CN
China
Prior art keywords
code module
rendering command
web
image
local 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.)
Active
Application number
CN200980150261.9A
Other languages
English (en)
Other versions
CN102246146A (zh
Inventor
A·拉布尔
M·帕帕基波斯
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.)
Google LLC
Original Assignee
Google 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 Google LLC filed Critical Google LLC
Publication of CN102246146A publication Critical patent/CN102246146A/zh
Application granted granted Critical
Publication of CN102246146B publication Critical patent/CN102246146B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)
  • Stored Programmes (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

某些实施方式提供了执行web应用的系统。在操作期间,该系统将web应用加载到web浏览器中并且将与web应用相关联的本地代码模块加载到安全运行时环境内。接着,该系统使用本地代码模块向命令缓冲器写入一组渲染命令并且同时从命令缓冲器读取渲染命令。最后,该系统通过使用图形处理单元(GPU)执行渲染命令来渲染图像以供web应用使用。

Description

针对使用本地代码模块的web应用的硬件加速图形
技术领域
本实施方式涉及用于在计算机系统上执行应用的技术。更具体地,本实施方式涉及用于使用硬件加速图形和本地代码模块执行web应用的方法和系统。
背景技术
计算机系统通常包括要求渲染复杂的三维(3D)场景的多个本地应用,诸如计算机游戏和计算机辅助设计(CAD)系统。为了渲染3D场景,这些本地应用可以使用将与图形渲染有关的计算引导到专用图形处理单元(GPU)的图形应用程序设计接口(API)。此外,上述本地应用可以包括直接在一个或多个处理器上执行的机器代码。由这些处理器和/或GPU提供的计算能力可以极大地改进图形质量和吞吐量。
近年来已经变得更加流行的web应用通常以脚本语言编写,脚本语言不能利用提供图形硬件加速的低层级图形API。作为替代,针对web应用的图形渲染通常由CPU而不是GPU执行。基于web的图形渲染的基于软件的性质因而限制了web应用的图形能力。此外,脚本语言的解释的性质可能导致针对web应用的执行时间比针对本地应用的执行时间明显缓慢。然而,不同于本地应用,web应用提供了许多优点。例如,web应用能够在多个平台上执行、不需要安装,并且可以比本地应用更安全。
web应用安全和本地图形性能之间的权衡可以使用通过与本地图形硬件设备(例如,GPU)对接来为web应用渲染图形的浏览器插件处理。这样的插件可以与复杂软件系统对应,该复杂软件系统包括用于以下的各种机构:从web应用获得场景信息;存储场景信息;使用变换、效果和着色器处理场景信息;以及向用于渲染场景的图形硬件发送命令。此外,插件的处理需求可能要求使用本地代码实现插件,这在传统上是不安全的。因此,插件自身可能包括多个潜在的安全弱点,这些安全弱点可能被可能导致系统故障的其他应用和/或漏洞利用。
因此,需要一种机制,其用于安全地执行针对基于web的图形渲染的本地代码,而同时维持本地代码和图形硬件之间的通信。
发明内容
某些实施方式提供了执行web应用的系统。在操作期间,该系统将web应用加载到web浏览器中并且将与web应用相关联的本地代码模块加载到安全运行时环境内。接着,该系统使用本地代码模块向命令缓冲器写入一组渲染命令并且同时从命令缓冲器读取渲染命令。最后,该系统通过使用图形处理单元(GPU)执行渲染命令来渲染图像以供web应用使用。
在某些实施方式中,该系统在将本地代码模块加载到安全运行时环境内之前还对本地代码模块进行验证。
在某些实施方式中,该系统还在web浏览器内显示图像。
在某些实施方式中,该系统还使用本地代码模块向共享存储器缓冲器写入与渲染命令相关联的缓冲数据,并且进一步通过从共享存储器缓冲器读取缓冲数据渲染图像。
在某些实施方式中,使用模块间通信(IMC)缓冲器实现共享存储器缓冲器和命令缓冲器。
在某些实施方式中,使用授信代码模块和渲染引擎的至少一个进一步执行渲染命令。
在某些实施方式中,web应用与以下的至少一个相关联:场景图渲染器、图形库、游戏引擎、游戏、数字内容创建(DCC)工具、视频处理应用,以及图像处理应用。
在某些实施方式中,执行渲染命令包括:
(i)存储与图像中的组件相关联的渲染命令的子集;
(ii)更新与存储的渲染命令的子集相关联的一组参数;以及
(iii)使用存储的渲染命令的子集以及更新的参数来渲染图像中的组件。
附图说明
图1示出了系统的一个实施方式的示意图。
图2示出了根据该系统的实施方式,使用模块间通信(IMC)缓冲器促进本地代码模块和授信代码模块之间的交互。
图3示出了图示了执行web应用的过程的流程图。
图4示出了图示了渲染图像中的组件的过程的流程图。
具体实施方式
呈现以下描述以使得本领域任何技术人员能够进行和使用实施方式,并且在特定应用及其要求的背景下提供了接下来的描述。对本领域技术人员来说,所公开的实施方式的各种修改将是显而易见的,并且在此定义的一般原理可以应用到其他实施方式和应用而不会背离本实施方式的精神和范围。因此,该系统并非被限制到示出的实施方式,而是将依照与在此公开的原理和特征相一致的最宽范围。
在本详细描述中所描述的数据结构和代码通常存储在计算机可读存储介质上,该存储介质可以是能够存储供计算机系统使用的代码和/或数据的任何设备或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁存储设备和光存储设备(诸如盘驱动器、磁带、CD(光盘)、DVD(数字多功能光盘或数字视频光盘)),或能够存储目前已知或以后开发出的计算机可读介质的其他介质。
在详细描述部分所描述的方法和过程可以体现为可以被存储在如上所述的计算机可读存储介质中的代码和/或数据。当计算机系统读取并且执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行体现为数据结构和代码并且存储在计算机可读存储介质内的方法和过程。
此外,以下描述的方法和过程可以被包括在硬件模块中。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA),以及目前已知或以后开发出的其他可编程逻辑设备。当硬件模块被激活时,硬件模块执行包括在硬件模块内的方法和过程。
实施方式提供了用于执行web应用的方法和系统。web应用可以被加载到web浏览器中并且在诸如以下的计算系统上执行:个人计算机(PC)、移动电话、个人数字助理(PDA)、图形计算器、便携式媒体播放器、全球定位系统(GPS)接收器,和/或其他电子计算设备。web应用可以由计算系统使用与服务器的网络连接从服务器获得。例如,可以通过因特网从网站下载web应用。
更具体地,实施方式提供了用于针对web应用渲染图形的方法和系统。可以在与web浏览器相关联的插件内的安全运行时环境内执行与web应用相关联的本地代码模块。为了针对web应用渲染图形,本地代码模块可以使用命令缓冲器接口,向由插件提供的授信代码模块发布渲染命令。
为了使用命令缓冲器接口,本地代码模块可以向命令缓冲器写入渲染命令。授信代码模块继而可以从命令缓冲器读取渲染命令,并且通过使用计算系统上的图形处理单元(GPU)执行渲染命令来针对web应用渲染图像。本地代码模块可以附加地存储与图像中的组件相关联的渲染命令,以便在将来发布具有更新的参数的渲染命令。例如,本地代码模块可以发布渲染命令以通过使用针对动画的每个帧的更新的参数向命令缓冲器写入针对模型的相同渲染命令,以对跨图像的帧的模型进行动画渲染。因此,实施方式可以允许web应用安全地实现图形库、场景图渲染器、计算机游戏和游戏引擎、视频编辑和照片编辑特征,和/或数字内容创建(DCC)工具。
图1示出了系统的一个实施方式的示意图。该系统包括计算系统102,以及可选地,一组服务器(例如,服务器1 104,服务器x 106)。计算系统102包括在web浏览器110内运行的web应用116以及插件108。以下更加详细地描述这些组件中的每一个。
计算系统102可以与向用户提供一个或多个服务或功能的电子设备对应。例如,计算系统102可以像移动电话、个人计算机(PC)、全球定位系统(GPS)接收器、便携式媒体播放器、个人数字助理(PDA),和/或图形计算器一样进行操作。此外,计算系统102可以包括对计算系统102上的硬件和软件资源的使用进行协调的操作系统(未示出),以及为用户执行专门任务的一个或多个应用(例如,web浏览器110、web应用116)。例如,计算系统102可以包括诸如电子邮件客户端、地址簿、文档编辑器、web浏览器110,和/或媒体播放器之类的应用。为了为用户执行任务,如下所述,应用可以从操作系统获得对计算系统102上的硬件资源(例如,处理器、存储器、I/O组件、无线发射器等)的使用,以及通过由操作系统提供的硬件和/或软件框架与用户交互。
本领域技术人员将领会到计算系统102可以包括执行本地应用和非本地应用二者的功能。换言之,计算系统102可以包括诸如web浏览器110之类的本地应用,本地应用本地安装在计算系统102上并且对于计算系统102上的操作系统和/或一个或多个硬件设备是特定的。这样的应用可以被编译成直接在计算系统102的一个或多个中央处理器(CPU)上执行的本地(例如,机器)代码。可以通过以通用程序设计语言(例如,C、C++等)和汇编语言的组合来编写应用,以及通过利用向应用提供硬件加速(例如,图形硬件加速)的库,来对上述应用的代码执行进行进一步优化。然而,本地应用的安装可能会危及计算系统102以及存储在计算系统102上的私有数据的安全。
计算系统102还可以包括独立于执行平台的、非本地应用的功能。具体地具体地,计算系统102可以使用与服务器的网络连接从一个或多个服务器(例如,服务器1104,服务器x 106)获得web应用116,并且将web应用116加载到web浏览器110中。例如,可以由web浏览器110通过因特网从应用服务器下载web应用116。备选地,可以从其他来源(诸如盘)获得非本地应用。
一旦被加载,web应用116可以提供能与计算系统102上的本地应用所提供的相媲美的特征和用户交互性。例如,web应用116可以作为电子邮件客户端、文档编辑器、媒体播放器、计算机辅助设计(CAD)系统,和/或计算机游戏起作用。Web应用116还可以包括动态用户接口元件,诸如菜单、按钮、窗口、子窗口、图标、动画,和/或其他模拟本地应用中的类似用户接口元件的图形对象。换言之,web应用116可以与富因特网应用(RIA)对应。
此外,web应用116可以在计算系统102上执行而无需考虑与计算系统102相关联的平台的类型(例如,操作系统,驱动器等等)。尽管独立于平台的应用(诸如web应用116)可以比本地应用更加便携以及安全,然而这样的跨平台应用可能缺乏本地应用的某些性能能力。
更具体地,可以使用解释的而不是编译的脚本语言(诸如JavaScript(JavaScriptTM是Sun Microsystems,Inc.的注册商标))编写诸如web应用116之类的非本地应用。web应用116和/或其他非本地应用的解释的性质可能导致针对非本地应用的执行时间比针对编译的本地应用的执行时间明显缓慢。非本地应用还可能不能利用对本地应用可用的低层级库和/或应用程序设计接口(API)。因此,非本地应用可能在某些任务中提供有限的功能。
具体地,web应用116可能不能在图形渲染中利用图形硬件加速(例如,来自图形处理单元(GPU)124)。例如,可能以缺乏与GPU 124接口的语言(例如,Javascript)编写web应用116。作为替代,可以使用在计算系统102的CPU上而不是GPU 124上执行的软件来执行针对web应用116的图形渲染。结果,web应用116中的图形与采用图形硬件加速的本地应用中的图形相比可以是次优的。
针对web应用116的图形渲染中的限制可能进一步阻止web应用116提供利用重要图形处理资源的特征,包括图形硬件加速。这些特征可以包括但不限于:
·图形库:Direct3D(Direct3DTM是Microsoft Corp.的注册商标)、OpenGL(OpenGLTM是Silicon Graphics,Inc.的注册商标)等
·向游戏玩家提供实时3D计算机图形的游戏引擎和/或计算机游戏
·用于三维(3D)计算机图形的场景图渲染系统
·数字内容创建(DCC)和/或计算机辅助设计(CAD)工具
·视频编辑特征
·照片编辑特征
换言之,web应用116可能不能有效地实现需要对图形的计算上密集型(例如,硬件加速的)渲染的特征,这是由于不能从web应用116访问GPU 124。
为了支持针对web应用的图形支持和图形硬件加速,与图形处理有关的操作可以被卸载到计算系统102中的插件108。插件108可以向web应用116揭露GPU 124的能力,从而允许web应用116利用图形硬件加速,包括顶点和像素着色器的应用。在发明人为Robin Green、Evangelos Kokkevis、Matthew Papakipos和GreggTavares的,2008年7月16日提交的,序列号为12/174,586的,名为“Web-Based Graphics Rendering System”的共同未决的非临时申请中描述了针对web应用的基于插件的图形硬件加速,在此通过引用将该申请并入。
如图1中所示,插件108包括本地代码模块118和授信代码模块122。本地代码模块118和授信代码模块122的交互可以允许插件108提供针对web应用116的图形硬件加速。此外,如以下更详细地讨论的,由插件108中的验证器112对本地代码模块118的验证和本地代码模块118在插件108中的安全运行时环境内的执行,可以促进由GPU 124针对web应用116的渲染命令的安全执行。
与web应用116相似,可以由web浏览器110从一个或多个服务器(例如,服务器1 104,服务器x 106)获得本地代码模块118。例如,web应用116可以提供到因特网上的本地代码模块118的超级链接。Web浏览器110继而可以从在该超级链接中指定的统一资源定位符(URL)下载本地代码模块118。备选地,可以由用户或由外部来源(诸如另一个web应用和/或本地应用)指定本地代码模块118。
在一个或多个实施方式中,插件108包括多个机制以确保本地代码模块118的安全执行。具体地,在执行之前,可以通过由插件108提供的验证器112对本地代码模块进行验证。在发明人为J.Bradley Chen、Matthew T.Harren、Matthew Papakipos、David C.Sehr和Bennet S.Yee的,于2008年5月8日提交的,序列号为12/117,634的,名为“Method for Validating an Untrusted Native Code Module”的共同未决的非临时申请中描述了本地代码模块验证,在此通过引用将该申请并入。
一旦本地代码模块118通过验证,可以将本地代码模块118加载到由插件108提供的安全运行时环境114中。在发明人为J.BradleyChen、Matthew T.Harren、Matthew Papakipos、David C.Sehr、BennetS.Yee和Gregory Dardyk的,于2008年月8日提交的,序列号为12/117,650的,名为“Method for Safely Executing an Untrusted NativeCode Module on a Computing Device”的共同未决的非临时申请中描述了安全运行时环境中的本地代码执行,在此通过引用将该申请并入。
此外,由于本地代码模块118可以包括直接在硬件上运行的二进制代码,本地代码模块118相对于计算系统102的操作系统、web浏览器110,和/或计算系统102上的其他软件组件可以是独立于平台的。如在以上参考的申请中所描述的,插件108和/或本地代码模块118也可以包括用于在多个指令集架构上执行的机制,包括使用“胖二进制”和二进制翻译器。
更具体地,本地代码模块118可以与包含直接在由计算系统102(诸如CPU)提供的硬件上运行的本地代码的软件模块对应。结果,本地代码模块118可以用于为web应用116执行要求对计算系统102上的CPU资源进行大量访问的任务,包括高层级图形渲染能力。例如,本地代码模块118可以针对web应用116实现场景图渲染器。备选地,本地代码模块118可以在安全运行时环境114内安全地实现低层级渲染引擎,诸如OpenGL或Direct3D库。
此外,某些或全部web应用116可以在本地代码模块118内执行。例如,web应用116可以与在web浏览器110内运行的3D计算机游戏对应。因此,web应用116可以包括一个或多个对计算机游戏中的物理进行仿真的本地代码模块和/或一个或多个渲染计算机游戏中的实时3D图形的本地代码模块。
如之前提及的,本地代码模块118可以与授信代码模块122交互,以向web应用116提供图形硬件加速。更具体地,本地代码模块118可以通过与web应用116的图形(例如,场景图)接口从web应用116接收图形渲染请求。图形接口可以允许本地代码模块118针对web应用116获得和/或存储将被渲染的图形模型。该图形模型可以包括例如由三角形或多边形组成的一组形状、一个或多个光源、相机,和/或一个或多个渲染效果(例如,渐变、挑选、混合等等)。如在以上参考的申请中所描述的,图形模型附加地可以存储在一个或多个数据结构中,诸如场景图、缓冲器,和/或效果。
然而,本地代码模块118在安全运行时环境114内的执行可能阻止本地代码模块118访问计算系统102上的硬件设备,诸如GPU124。作为替代,本地代码模块118可以使用与授信代码模块122的命令缓冲器接口120向授信代码模块122传送一组渲染命令。具体地,本地代码模块118可以作为向由命令缓冲器接口120提供的命令缓冲器写入与图形模型对应的渲染命令的软件客户端。本地代码模块118也可以向由命令缓冲器接口120提供的共享存储器缓冲器写入缓冲数据。
授信代码模块122可以像从命令缓冲器读取渲染命令并且从共享存储器缓冲器读取缓冲数据的软件服务一样进行操作。由于授信代码模块122在安全运行时环境114外面执行,授信代码模块122可以包括与GPU 124通信的能力。结果,授信代码模块122可以通过执行渲染命令渲染图像以供web应用116使用,该渲染命令来自命令缓冲器,该命令缓冲器使用与GPU 124的直接接口和/或与渲染引擎(诸如OpenGL或Direct3D渲染器)的接口。经渲染的图像继而可以在web浏览器110内作为针对web应用116的输出而显示。在发明人为Antoine Labour的,申请日待分配的,序列号待分配的,名为“Command Buffers for Web-Based Graphics Rendering”的共同未决的非临时申请中描述了具有软件客户端、软件服务和命令缓冲器接口的安全的、基于web的图形渲染,在此通过引用将该申请并入。
在一个或多个实施方式中,使用模块间通信(IMC)缓冲器实现命令和共享存储器缓冲器。以下关于图2讨论本地代码模块118于授信代码模块122之间的渲染命令和/或缓冲数据的传输。
在一个或多个实施方式中,本地代码模块118包括存储与图形模型和/或图像中的一个或多个组件相关联的渲染命令的功能。本地代码模块继而可以通过在不进行在计算渲染命令的值的情况下向命令缓冲器写入渲染命令,而向授信代码模块122提供存储的渲染命令。渲染命令附加地可以指定与该组件相关联的一组参数,诸如顶点缓冲数据、变址缓冲数据、效果数据,和/或纹理数据。结果,可以通过向命令缓冲器写入存储的渲染命令以及使用命令缓冲器和/或共享存储器缓冲器更新针对组件的参数的值,来执行组件的多个渲染。对渲染命令的存储因此可以通过减少本地代码模块118需要以向命令缓冲器发布渲染命令的处理的量,来改进性能。
例如,计算机游戏中的角色可以与两个组件(例如,对象)相关联。为了绘制角色,本地代码模块118可以按照以下顺序向命令缓冲器发布一组渲染命令:
设定效果
针对第一对象设定变换矩阵
针对第一对象设定顶点缓冲器
绘制第一对象
针对第二对象设定变换矩阵
针对第二对象设定顶点缓冲器
绘制第二对象
为了绘制角色(例如在每个帧期间),本地代码模块118可以在仅仅改变在动画中使用的参数(例如,变换矩阵)时向命令缓冲器写入相同的渲染命令。更新的参数可以被写入或存储在命令缓冲器、共享存储器缓冲器,和/或不同集合的缓冲器(例如,顶点缓冲器)中。换言之,由于渲染命令的内在结构相同,本地代码模块118可以存储针对角色的渲染命令并且将更新的参数插入存储的命令缓冲器结构中而不是对针对动画的每个帧重新计算渲染命令。
图2示出了根据该系统的实施方式,使用模块间通信(IMC)缓冲器促进本地代码模块118和授信代码模块122之间的交互。如图2中所示,IMC缓冲器206被配置成用于存储命令缓冲器208和共享存储器缓冲器210以供本地代码模块118和授信代码模块122使用。IMC缓冲器206可以由本地代码模块118和/或授信代码模块122在始初化期间创建并且在本地代码模块118和授信代码模块122之间共享。结果,本地代码模块118和授信代码模块122二者都可以将IMC缓冲器206映射到它们各自的地址空间。此外,本地代码模块118和授信代码模块122二者都可以通过IMC接口和/或IMC运行时访问IMC缓冲器206。例如,本地代码模块118和/或授信代码模块122可以使用IMC接口和/或IMC运行时来在IMC缓冲器206内创建命令缓冲器208和/或共享存储器缓冲器210。
此外,本地代码模块118可以首先通过IMC接口访问IMC缓冲器206,继而,使用命令缓冲器接口向命令缓冲器208写入渲染命令和向共享存储器缓冲器210写入缓冲数据,以向授信代码模块122传送渲染命令和/或缓冲数据。类似地,授信代码模块122可以首先通过IMC接口访问IMC缓冲器206,继而,使用命令缓冲器接口从命令缓冲器208读取渲染命令和从存储器缓冲器210读取缓冲数据,以接收渲染命令和/或缓冲数据。
图3示出了图示执行web应用的过程的流程图。在一个或多个实施方式中,一个或多个步骤可以被省略、重复和/或按照不同顺序执行。因此,图3中示出的步骤的特定布置不应当被解释为限制技术的范围。
最初,web应用被加载到web浏览器中(操作302)。可以由web浏览器从服务器获得web应用。Web应用在为用户执行任务中也可以利用图形硬件加速。例如,web应用可以与以下相关联:场景图渲染器、图形库、游戏引擎、游戏、DCC或CDA工具、视频处理应用,和/或图像处理应用。
为了向web应用提供图形硬件加速,可以获得与web应用相关联的本地代码模块(操作304)。例如,可以从由web应用指定的来源下载本地代码模块。也可以在执行本地代码模块之前,对本地代码模块进行验证(操作306)。如果本地代码模块未通过验证,在不执行的情况下丢弃本地代码模块。
如果本地代码模块通过验证,将本地代码模块加载到安全运行时环境中(操作308)中。安全运行时环境可以由与web浏览器相关联的插件提供。在安全运行时环境内,本地代码模块生成并且使用命令缓冲器接口向命令缓冲器写入渲染命令(操作310)。(注意,从图像的表示(诸如场景图)生成上述渲染命令的过程是本领域中公知的,并且可以使用用于生成上述渲染命令的任何现有的或未来的技术。)同时,由独立执行的软件服务(诸如授信代码模块)从命令缓冲器读取渲染命令(操作312)。本地代码模块可选地也可以使用命令缓冲器接口向共享存储器缓冲器写入与渲染命令相关联的缓冲数据(操作314)。软件服务(例如,授信代码模块)继而可以从共享存储器缓冲器读取缓冲数据(操作316)。
接着,软件服务可以通过使用GPU执行渲染命令,来渲染图像以供web应用使用(操作318)。具体地,软件服务可以直接与GPU连接或者通过诸如OpenGL或Direct3D渲染器之类的渲染引擎访问GPU。继而在web浏览器中将渲染的图像(操作320)作为针对web应用的输出而显示。例如,渲染的图像可以与CAD模型的更新的视图或计算机游戏的新的帧对应。
图4示出了图示了渲染图像中的组件的过程的流程图。在一个或多个实施方式中,一个或多个步骤可以被省略、重复和/或按照不同顺序执行。因此,图4中示出的步骤的特定排列不应当被解释为限制技术的范围。
首先,针对组件获得渲染命令(操作402)。可以由用于执行渲染命令的授信代码模块从命令缓冲器获得渲染命令。同样存储渲染命令(操作404)。例如,渲染命令可以被存储在命令缓冲器外面的存储器中,以供在命令缓冲器中的渲染命令被用新的渲染命令覆盖之后,进行随后的检索和使用。
同样获得与组件相关联的一组参数(操作406)。例如,该组件可以与具有包括顶点、索引、纹理、效果,和/或其他数据的参数的场景图或渲染图中的形状对应。参数可以从命令缓冲器和/或共享存储器缓冲器获得。继而,使用参数执行渲染命令(操作408)以渲染图像中的组件。
也可以针对组件的随后渲染更新参数(操作410)。例如,可以更新参数以对图像的连续帧中的组件进行绘制。如果参数经更新,获得更新的参数(操作406),并且使用更新的参数执行存储的渲染命令(操作408)。换言之,可以将更新的参数插入与渲染命令相关联的存储的命令缓冲器结构中,而不是用来自命令缓冲器的更新的参数对渲染命令进行重新计算。
该参数可以继续被更新(操作410)并且被获得(操作406),并且使用更新的参数执行存储的渲染命令(操作408),直到在图像中不再渲染组件。例如,可以使用存储的渲染命令和参数对计算机游戏中的角色进行渲染和/或绘制,直到该角色从视图隐藏或者不再存在于该计算机游戏中。
仅仅出于说明和描述的目的呈现了实施方式的上述描述。它们并非旨在是穷尽的或旨在将实施方式限制到所公开的形式。因此,对本领域技术人员而言许多修改和变型将是显而易见的。附加地,以上公开并非旨在限制当前的实施方式。实施方式的范围由所附权利要求限定。

Claims (14)

1.一种用于执行web应用的方法,包括:
将所述web应用加载到web浏览器中;
验证与所述web应用相关联的本地代码模块;
将与所述web应用相关联的所述本地代码模块加载到安全运行时环境内;
使用所述本地代码模块向命令缓冲器写入一组渲染命令;
从所述命令缓冲器读取所述渲染命令;以及
通过使用图形处理单元(GPU)执行所述渲染命令来渲染图像以供所述web应用使用。
2.根据权利要求1所述的方法,进一步包括:
在所述web浏览器内显示所述图像。
3.根据权利要求1所述的方法,进一步包括:
使用所述本地代码模块向共享存储器缓冲器写入与所述渲染命令相关联的缓冲数据,
其中所述渲染所述图像进一步通过从所述共享存储器缓冲器读取所述缓冲数据渲染所述图像。
4.根据权利要求3所述的方法,其中使用模块间通信缓冲器实现所述共享存储器缓冲器和所述命令缓冲器。
5.根据权利要求1所述的方法,其中使用授信代码模块和渲染引擎的至少一个进一步执行所述渲染命令。
6.根据权利要求1所述的方法,其中所述web应用与以下的至少一个相关联:场景图渲染器、图形库、游戏引擎、游戏、数字内容创建工具、视频处理应用,以及图像处理应用。
7.根据权利要求1所述的方法,其中渲染所述图像包括:
存储与所述图像中的组件相关联的所述渲染命令的子集;
更新与存储的所述渲染命令的子集相关联的一组参数;以及
使用存储的所述渲染命令的子集以及更新的所述参数以渲染所述图像中的所述组件。
8.一种用于执行web应用的设备,包括:
用于将所述web应用加载到web浏览器中的装置;
用于验证与所述web应用相关联的本地代码模块的装置;
用于将与所述web应用相关联的所述本地代码模块加载到安全运行时环境内的装置;
用于使用所述本地代码模块向命令缓冲器写入一组渲染命令的装置;
用于从所述命令缓冲器读取所述渲染命令的装置;以及
用于通过使用图形处理单元(GPU)执行所述渲染命令渲染图像以供所述web应用使用的装置。
9.根据权利要求8所述的设备,进一步包括:
用于在所述web浏览器内显示所述图像的装置。
10.根据权利要求8所述的设备,进一步包括:
用于使用所述本地代码模块向共享存储器缓冲器写入与所述渲染命令相关联的缓冲数据的装置,
其中所述用于渲染所述图像的装置进一步通过从所述共享存储器缓冲器读取所述缓冲数据渲染所述图像。
11.根据权利要求10所述的设备,其中使用模块间通信缓冲器实现所述共享存储器缓冲器和所述命令缓冲器。
12.根据权利要求8所述的设备,其中使用授信代码模块和渲染引擎的至少一个进一步执行所述渲染命令。
13.根据权利要求8所述的设备,其中所述web应用与以下的至少一个相关联:场景图渲染器、图形库、游戏引擎、游戏、数字内容创建工具、视频处理应用,以及图像处理应用。
14.根据权利要求8所述的设备,其中用于渲染所述图像的装置包括:
用于存储与所述图像中的组件相关联的所述渲染命令的子集的装置;
用于更新与存储的所述渲染命令的子集相关联的一组参数的装置;以及
用于使用存储的所述渲染命令的子集以及更新的所述参数以渲染所述图像中的所述组件的装置。
CN200980150261.9A 2008-11-07 2009-11-04 针对使用本地代码模块的web应用的硬件加速图形 Active CN102246146B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/267,095 2008-11-07
US12/267,095 US8294723B2 (en) 2008-11-07 2008-11-07 Hardware-accelerated graphics for web applications using native code modules
PCT/US2009/063223 WO2010053953A2 (en) 2008-11-07 2009-11-04 Hardware-accelerated graphics for web applications using native code modules

Publications (2)

Publication Number Publication Date
CN102246146A CN102246146A (zh) 2011-11-16
CN102246146B true CN102246146B (zh) 2015-07-08

Family

ID=42153519

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980150261.9A Active CN102246146B (zh) 2008-11-07 2009-11-04 针对使用本地代码模块的web应用的硬件加速图形

Country Status (5)

Country Link
US (4) US8294723B2 (zh)
EP (1) EP2356565A4 (zh)
CN (1) CN102246146B (zh)
DE (1) DE202009019145U1 (zh)
WO (1) WO2010053953A2 (zh)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090235189A1 (en) * 2008-03-04 2009-09-17 Alexandre Aybes Native support for manipulation of data content by an application
US8675000B2 (en) * 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US8626919B1 (en) 2008-11-07 2014-01-07 Google Inc. Installer-free applications using native code modules and persistent local storage
US8294723B2 (en) 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8352967B2 (en) 2008-11-10 2013-01-08 Google Inc. Safe browser plugins using native code modules
US8610731B2 (en) * 2009-04-30 2013-12-17 Microsoft Corporation Dynamic graphics pipeline and in-place rasterization
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US9400699B2 (en) * 2010-07-28 2016-07-26 Orange Data communication between modules
FR2967856A1 (fr) * 2010-11-23 2012-05-25 France Telecom Communication entre deux applications web
US8424025B2 (en) 2011-02-22 2013-04-16 Microsoft Corporation Interface for displaying content supporting hardware acceleration
CN103827880B (zh) * 2011-03-31 2017-06-16 爱迪德技术有限公司 保护非本机代码安全的方法
US8913068B1 (en) * 2011-07-12 2014-12-16 Google Inc. Displaying video on a browser
US9195479B2 (en) * 2011-10-17 2015-11-24 Google Inc. Selective notification of native applications
US9047390B2 (en) * 2011-10-24 2015-06-02 Microsoft Technology Licensing, Llc Rendering hardware accelerated graphics in a web application
EP2798484A4 (en) * 2011-12-29 2015-08-26 Intel Corp BROWSER MEDIA SERVICE FOR MULTIMEDIA CONTENT
US9075913B2 (en) * 2012-02-27 2015-07-07 Qualcomm Incorporated Validation of applications for graphics processing unit
US9223599B1 (en) * 2012-03-30 2015-12-29 Zynga Inc. Client-side server for client-side scripting languages
US9135030B2 (en) * 2012-06-29 2015-09-15 M-Files Oy Method, an apparatus and a computer program product for extending an application in a client device
US9075618B2 (en) 2012-11-02 2015-07-07 Microsoft Technology Licensing, Llc Cross-platform data visualizations using common descriptions
CN103903507B (zh) * 2012-12-26 2018-01-30 腾讯科技(深圳)有限公司 一种地图道路渲染方法及系统
CN105359090A (zh) 2013-04-26 2016-02-24 纽约市哥伦比亚大学理事会 用于移动应用的系统和方法
US9992528B2 (en) * 2013-06-10 2018-06-05 Ani-View Ltd. System and methods thereof for displaying video content
US9508133B2 (en) 2014-11-18 2016-11-29 Duelight Llc System and method for generating an image result based on availability of a network resource
US9460118B2 (en) 2014-09-30 2016-10-04 Duelight Llc System, method, and computer program product for exchanging images
US9448771B2 (en) 2014-10-17 2016-09-20 Duelight Llc System, computer program product, and method for generating a lightweight source code for implementing an image processing pipeline
US20230061404A1 (en) * 2013-09-30 2023-03-02 Duelight Llc System, method, and computer program product for exchanging images
US9460125B2 (en) 2013-09-30 2016-10-04 Duelight Llc Systems, methods, and computer program products for digital photography
CN103617191B (zh) * 2013-11-07 2017-06-16 北京奇虎科技有限公司 使用硬件加速实现浏览器渲染的方法和浏览器
CN103559357B (zh) * 2013-11-12 2016-09-21 南京华磊易晶微电子有限公司 一种用于3d图学渲染加速的fpga芯片
KR102131644B1 (ko) 2014-01-06 2020-07-08 삼성전자주식회사 전자장치 및 전자장치에서의 웹 플랫폼 동작방법
CN103793280A (zh) * 2014-01-17 2014-05-14 深圳市东微智能科技有限公司 一种音频缓冲处理方法
US10157593B2 (en) * 2014-02-24 2018-12-18 Microsoft Technology Licensing, Llc Cross-platform rendering engine
CN104978176B (zh) * 2014-04-10 2019-03-08 腾讯科技(北京)有限公司 应用程序接口调用方法、装置及计算机可读存储介质
US10181027B2 (en) * 2014-10-17 2019-01-15 Intel Corporation Interface between a device and a secure processing environment
US9772930B2 (en) * 2015-06-22 2017-09-26 Adobe Systems Incorporated Techniques for evaluating applications through use of an auxiliary application
CN105069015A (zh) * 2015-07-13 2015-11-18 山东超越数控电子有限公司 一种国产平台网页加速技术的实现方法
US10207190B2 (en) * 2015-12-18 2019-02-19 Intel Corporation Technologies for native game experience in web rendering engine
US10575007B2 (en) 2016-04-12 2020-02-25 Microsoft Technology Licensing, Llc Efficient decoding and rendering of blocks in a graphics pipeline
US9858637B1 (en) * 2016-07-29 2018-01-02 Qualcomm Incorporated Systems and methods for reducing motion-to-photon latency and memory bandwidth in a virtual reality system
US11197010B2 (en) * 2016-10-07 2021-12-07 Microsoft Technology Licensing, Llc Browser-based video decoder using multiple CPU threads
US10958964B2 (en) 2018-12-31 2021-03-23 Telefonaktiebolaget Lm Ericsson (Publ) Distributed video and graphics rendering system
CN111400024B (zh) * 2019-01-03 2023-10-10 百度在线网络技术(北京)有限公司 渲染过程中的资源调用方法、装置和渲染引擎
US11403804B2 (en) 2020-01-03 2022-08-02 Nokia Technologies Oy Method for real time texture adaptation
CN113225616B (zh) * 2021-04-27 2022-11-15 杭州海康威视数字技术股份有限公司 视频播放方法、装置、计算机设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101067827A (zh) * 2007-06-14 2007-11-07 上海创图网络科技发展有限公司 一种基于浏览器的三维网页实现方法
CN101178739A (zh) * 2007-11-30 2008-05-14 四川长虹电器股份有限公司 嵌入式浏览系统及网页浏览方法
EP1921584A2 (en) * 2006-11-10 2008-05-14 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module, and graphics processing method

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04242852A (ja) 1990-02-13 1992-08-31 Internatl Business Mach Corp <Ibm> 多重処理のための先入れ先出しバッファ待ち行列の管理機構および方法
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6128774A (en) * 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
DE69936987T2 (de) * 1998-05-20 2008-05-15 British Telecommunications P.L.C. Wähleinrichtung
JP2000099277A (ja) * 1998-09-18 2000-04-07 Fujitsu Ltd ファイルユニット間のリモート転送方法
US6507904B1 (en) 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
WO2001080098A2 (en) 2000-04-14 2001-10-25 Mayim Llc Web browser plug-in providing 3d visualization
JP2002108600A (ja) 2000-10-02 2002-04-12 Digital Electronics Corp 制御システムの端末装置、記録媒体、および、制御システム
US7987510B2 (en) 2001-03-28 2011-07-26 Rovi Solutions Corporation Self-protecting digital content
US7069562B2 (en) 2001-12-12 2006-06-27 Sun Microsystems, Inc. Application programming interface for connecting a platform independent plug-in to a web browser
US7234144B2 (en) 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US20040123117A1 (en) * 2002-12-18 2004-06-24 Symantec Corporation Validation for behavior-blocking system
US7015915B1 (en) * 2003-08-12 2006-03-21 Nvidia Corporation Programming multiple chips from a command buffer
US7337291B2 (en) 2005-01-14 2008-02-26 Microsoft Corporation Software memory access control
US7551182B2 (en) 2005-01-18 2009-06-23 Oculus Info Inc. System and method for processing map data
US20080246757A1 (en) 2005-04-25 2008-10-09 Masahiro Ito 3D Image Generation and Display System
US20070283324A1 (en) 2005-08-30 2007-12-06 Geisinger Nile J System and method for creating programs that comprise several execution layers
US7629978B1 (en) * 2005-10-31 2009-12-08 Nvidia Corporation Multichip rendering with state control
US20070244990A1 (en) * 2006-04-03 2007-10-18 National Instruments Corporation Web browser graph user interface element with rich interactive capabilities
US20080036763A1 (en) 2006-08-09 2008-02-14 Mediatek Inc. Method and system for computer graphics with out-of-band (oob) background
US8878833B2 (en) 2006-08-16 2014-11-04 Barco, Inc. Systems, methods, and apparatus for recording of graphical display
US8286238B2 (en) * 2006-09-29 2012-10-09 Intel Corporation Method and apparatus for run-time in-memory patching of code from a service processor
EP2084671A4 (en) 2006-10-02 2011-02-09 Aftercad Software Inc METHOD AND SYSTEM FOR DELIVERING AND INTERACTIVE DISPLAYS OF THREE-DIMENSIONAL GRAPHICS
US20080144903A1 (en) * 2006-10-25 2008-06-19 Bai Wang Real-time hardware accelerated contour generation based on VOI mask
US7814234B2 (en) * 2006-10-30 2010-10-12 Microsoft Corporation Offline execution of web based applications
US20080139301A1 (en) 2006-12-11 2008-06-12 Ole-Ivar Holthe System and method for sharing gaming experiences
JP4834606B2 (ja) 2007-05-16 2011-12-14 キヤノン株式会社 画像処理方法及び画像処理装置
US8189004B2 (en) 2007-11-09 2012-05-29 Lucasfilm Entertainment Company Ltd. Translating Renderman shading language code
US8635701B2 (en) 2008-03-02 2014-01-21 Yahoo! Inc. Secure browser-based applications
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US9058483B2 (en) 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8368705B2 (en) * 2008-07-16 2013-02-05 Google Inc. Web-based graphics rendering system
US8294723B2 (en) 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8675000B2 (en) 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US8352967B2 (en) 2008-11-10 2013-01-08 Google Inc. Safe browser plugins using native code modules
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1921584A2 (en) * 2006-11-10 2008-05-14 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module, and graphics processing method
CN101067827A (zh) * 2007-06-14 2007-11-07 上海创图网络科技发展有限公司 一种基于浏览器的三维网页实现方法
CN101178739A (zh) * 2007-11-30 2008-05-14 四川长虹电器股份有限公司 嵌入式浏览系统及网页浏览方法

Also Published As

Publication number Publication date
US8294723B2 (en) 2012-10-23
EP2356565A2 (en) 2011-08-17
US20170345203A1 (en) 2017-11-30
CN102246146A (zh) 2011-11-16
DE202009019145U1 (de) 2017-01-25
EP2356565A4 (en) 2013-06-26
WO2010053953A2 (en) 2010-05-14
US20100118038A1 (en) 2010-05-13
US9767597B1 (en) 2017-09-19
US10026211B2 (en) 2018-07-17
US20130033508A1 (en) 2013-02-07
US8797339B2 (en) 2014-08-05
WO2010053953A3 (en) 2010-08-12

Similar Documents

Publication Publication Date Title
CN102246146B (zh) 针对使用本地代码模块的web应用的硬件加速图形
US10026147B1 (en) Graphics scenegraph rendering for web applications using native code modules
US8675000B2 (en) Command buffers for web-based graphics rendering
KR101626429B1 (ko) 네이티브 코드 모듈을 이용하여 애플리케이션을 실행하는 방법 및 시스템
US20120174079A1 (en) Systems and methods for simulating a mobile device application
EP3752914B1 (en) Techniques for native runtime of hypertext markup language graphics content
CN113485708A (zh) 基于Sketch的跨平台界面开发方法和系统、计算机设备和介质
Lapinski Vulkan Cookbook
KR20090000651A (ko) 온라인 게임을 위한 사용자 인터페이스 제공 장치 및 그방법
CN111796812A (zh) 图像渲染的方法、装置、电子设备及计算机可读存储介质
Nguyen WebGPU-the new powerful successor, the future of web API
CN117472336B (zh) 基于程序api的代码生成装置及其方法、设备及介质
Niemelä WebAssembly, Fourth Language in the Web
CN114816411A (zh) 增强现实模型转换的方法、装置、设备及存储介质
CN113590224A (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
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Google limited liability company

Address before: American California

Patentee before: Google Inc.

CP01 Change in the name or title of a patent holder