封装图形库和硬件的图形引擎和环境的制作方法

文档序号:13884539阅读:208来源:国知局
封装图形库和硬件的图形引擎和环境的制作方法

相关申请的交叉引用

本申请要求2016年3月25日提交的名称为“graphicsengineandenvironmentforencapsulatinggraphicslibrariesandhardwares”的美国非临时专利申请号15/081,451的优先权,后者要求2015年6月7日提交的名称为“graphicsengineandenvironmentforencapsulatiggraphicslibrariesandhardwares”的美国临时专利申请号62/172,114的优先权,这两个专利申请据此全文以引用方式并入本文。



背景技术:

本文所公开的发明涉及图形处理领域,并且不限于将来自应用程序的图形请求定向至渲染或呈现硬件的软件操纵。

图形处理单元(gpu)对于处理数据并行图形任务来说已经变得重要。开发者现在认识到非图形数据并行任务也可由gpu处理,从而利用其大规模并行能力。供应商和标准化组织已经创建了使图形数据并行任务更易于编程的应用编程接口(api),这得益于高层级的开发者编程交互。但是,还存在更靠近硬件并且一般通过应用高层级api的输出而被采用的低层级api(或库/框架等)。换句话讲,高层级api一般只是准备应用于低层级api的程序代码。

考虑到图形编程技术的多样化以及图形硬件能力的不断变化,每个从应用程序运行通过标准路径到达硬件的图形请求可能无法使用可获得的最佳资源,以尽可能快速且有效地得到执行。此外,由于可用框架相对固定和标准的性质,图形请求的路径可不考虑其他系统状态问题或上下文信息,如果知晓,可能会影响任何特定图形请求的路径选择。



技术实现要素:

本公开整体涉及计算机编程领域。更具体地,但不作为限制,其涉及编程语言的有效操纵以及应用程序和图形硬件之间的图形流水线的该部分的灵活重新配置。更具体地,在一些实施方案中,通过虚拟逻辑机制捕获应用程序产生的图形请求,所述虚拟逻辑机制评估请求的性质,并且基于系统中的可用库/框架和/或硬件来开发最佳渲染路径。虚拟逻辑可以结合高层级框架(例如,appleinc.的spritekit)和低层级图形库(例如,opengl)或与其联合工作。

在至少一个实施方案中,虚拟化逻辑机制被构建在高层级图形框架中,在其中所护虚拟化逻辑机制评估图形请求并基于每个请求确定要使用的最佳硬件和低层级库。在其他实施方案中,虚拟化机制位于系统的高层级框架和低层级库之间,在其中所述虚拟化机制可以评估系统状态、可用资源和图形请求的性质,然后针对每个请求从属地定制图形后端。定制可涉及低层级库的选择、特定硬件处理资源的选择以及许多其他选项。

这些实施方案所指示的架构在应用程序使用图形和实际渲染图形的方式之间提供了一定程度的间接性。因此,上述实施方案允许应用程序(及其开发者)忽略图形后端。这有很多优点。例如,通过独立管理图形后端,在后端进行的任何改进都可能会归于应用程序而不会对应用程序代码进行任何更改。因此,如果存在新的经改进硬件和旨在利用该硬件的经改进的低层级库,则在一些发明实施方案下,即使是旧的应用程序也可利用新的功能。

在本公开的一些实施方案中,软件架构促进了上面讨论的期望的间接性以及新功能和后端资源的增加。在许多这些实施方案中,通过操纵抽象语法树(“ast”)来实现源代码语言的变换和简化。在一个或多个实施方案中,原始图形程序用ast表示。然后操纵ast将编程语言变换为通用中间形式。在做出关于特定程序的后端路径的决策后,可以进一步操纵ast以适应新的所选择的语言(例如,低层级库)和/或所选择的硬件。

本文公开的一些实施方案涉及图形代码的灵活和有效管理,使得可根据该情况动态地改变图形流水线的后端部分。

附图说明

图1示出了可例如被用作终端用户机器或开发者机器的一种代表性计算机节点。

图2示出了与本发明的实施方案相关联的一种示例性网络环境。

图3示出了一种示例性软件层和架构示意图。

图4a、图4b和图4c示出了例示性系统架构。

图5示出了例示性系统架构。

图6示出了例示性系统架构。

图7示出了与本发明的一些实施方案相关联的过程。

图8示出了与本发明的一些实施方案相关联的过程。

具体实施方式

本公开涉及用于改进图形系统的操作的系统、方法和计算机可读介质。本公开还涉及用于设计和/或操作图形系统的多种架构,所述架构从应用程序开始并且延伸到以像素形式或其他形式展示视觉内容。一般来讲,本发明的许多实施方案设想了根据关于如何最好地使用特定的可用硬件和软件所作出的即时决定来处理图形编程。在一些实施方案中,软件布置用于评估特定系统硬件和软件的能力,然后作出关于要遵循的最佳图形编程路径的决定。可以在鉴于要处理的图形程序的细节针对所述路径评估硬件和/或软件的替代方案之后作出关于所述最佳路径的决定。上述软件安排可以用来将应用程序与整个图形后端隔离,从而产生显著益处。例如,可以修改图形后端以考虑系统中可用的新硬件或图形库,使得传统程序(在新硬件和/或库可用之前写入且未更改)可以利用新的后端能力。这为开发人员节省了时间并允许终端用户立即获得新图形硬件和软件平台的益处,而无需等待应用程序更新。

在以下描述中,为了解释的目的,阐述了很多具体细节以便提供对所公开构思的彻底理解。作为该描述的一部分,本公开的附图中的一些附图以框图形式表示结构和设备,以避免模糊所公开构思的新颖方面。为了清晰起见,不对实际的具体实施的所有特征进行描述。此外,本公开中所使用的语言主要是为了可读性和指导性目的而选择的,并且可能并未被选择为描绘或界定本发明的主题,从而可能必需凭借权利要求来确定此类发明主题。在本公开中提到“一个实施方案”或“实施方案”意指结合该实施方案所述的特定特征、结构或特性被包括在所公开主题的至少一个实施方案中,并且多次提到“一个实施方案”或“实施方案”不应被理解为必然地全部涉及相同的实施方案。

应当理解,在任何实际具体实施的开发中(如在任何软件和/或硬件开发项目中那样),必须要作出许多决策以实现开发者的特定目标(例如,符合与系统和商务相关的约束条件),并且这些目标在不同具体实施之间可能是不同的。还应当理解,此类开发努力可能是复杂且耗时的,但是尽管如此,对于受益于本公开的在设计和实施用户接口和响应系统和/或手势识别处理系统中的普通技术人员而言会是一项常规任务。

示例性硬件和软件

本文所述的发明实施方案可在所有类型的设备中以及相对于所有类型的设备有所涉及和使用,所述设备包括单处理器和多处理器计算系统以及包含单处理和多处理计算系统的直立式设备(例如,相机、游戏系统、电器等)。本文中的讨论是参考可作为软件开发系统或终端用户系统进行讨论的一种常见计算配置来进行的。这个通用计算配置可具有包括一个或多个微处理器的cpu资源。本论述仅用于关于样本实施方案的举例说明,并非意图要将本发明的应用限制到所公开的硬件。具有其他(现在或未来)已知或常见硬件配置的其他系统也完全被设想和预期到。在考虑上述声明的情况下,以下讨论一种典型的硬件和软件操作环境。硬件配置可例如存在于服务器、工作站、膝上型电脑、平板电脑、台式计算机、游戏平台(不管是否是便携式的)、电视机、娱乐系统、智能电话、电话、或任何其他计算设备(不管是移动式的还是固定式的)中。

参考图1,所公开实施方案可由代表性计算机系统100来执行。例如,代表性计算机系统可充当软件开发平台或终端用户设备。系统100可在任何类型的设备中实施,诸如通用计算机系统、电视机、机顶盒、媒体播放器、多媒体娱乐系统、图像处理工作站、手持式设备、或可与本文所述显示器或展示设备耦接或者可包含本文所述显示器或展示设备的任何设备。计算机系统100可包括一个或多个处理器105、存储器110(110a和110b)、一个或多个存储设备115、以及图形硬件120。计算机系统100还可具有设备传感器125,设备传感器可包括以下中的一者或多者:深度传感器(诸如深度相机)、一个或多个3d深度传感器、成像设备(诸如固定和/或支持视频的图像捕捉单元)、rgb传感器、接近传感器、环境光传感器、加速度计、陀螺仪、任何类型的静止或视频相机、lidar设备、sonar设备、麦克风、ccd(或其他图像传感器)、红外传感器、温度计等。这些传感器和其他传感器可以和一个或多个gpu、dsp或常规微处理器联合工作,并且进行适当的编程,使得传感器输出可被适当的解译和/或组合并解译。

返回图1,系统100还可包括通信接口130、用户接口适配器135、和显示器适配器140,所有这些可经由系统总线或背板145耦接。存储器110可包括处理器105和图形硬件120使用的一个或多个不同类型的介质(例如固态、dram、光学、磁等)。例如,存储器110可包括存储器高速缓存、只读存储器(rom)、和/或随机存取存储器(ram)。存储装置115可包括一个或多个非暂态存储介质,包括例如磁盘(固定盘、软盘和可移除盘)和磁带、光学介质(诸如cd-rom和数字视频光盘(dvd))、以及半导体存储器设备(诸如电可编程只读存储器(eprom)和电可擦除可编程只读存储器(eeprom))。存储器110和存储装置115可用于保持媒体(例如,音频、图像、和视频文件)、偏好信息、设备配置文件信息、被组织成一个或多个模块且以任何期望的计算机编程语言编写的计算机程序指令、和任何其他合适的数据。当被处理器105和/或图形硬件120执行时,此类计算机程序代码可实施本文所述方法或过程中的一者或多者。通信接口130可包括基于半导体的电路,并且可被用于将计算机系统100连接到一个或多个网络。示例性网络包括但不限于:本地网络诸如usb网络;商业局域网;以及广域网诸如互联网,并且可使用任何合适的技术(例如,有线或无线)。可实施的通信技术包括基于蜂窝的通信(例如,lte、cdma、gsm、hsdpa等)或其他通信(以太网、wifi、bluetooth、usb、thunderbolt、firewire等)。用户接口适配器135可用于连接键盘150、麦克风155、指针设备160、扬声器165、和其他用户接口设备诸如触摸板和/或触摸屏(未示出)。显示器适配器140可用于连接一个或多个显示单元170。

处理器105可执行实施或控制由系统100所执行的多种功能的操作(例如,评估、变换、和图形程序编译)所必要的指令。处理器105可例如驱动显示器170并可从用户接口适配器135或系统所实施的任何其他用户接口接收用户输入。用户接口135例如可呈现多种形式诸如按钮、小键盘、拨号盘、点击轮、键盘、显示屏和/或触摸屏。处理器105可以是任何类型的计算设备,诸如单独或与gpu结合工作的一个或多个微处理器、dsp、片上系统设备诸如在一些移动设备中找到的那些。处理器105可包括一个或多个专用gpu或图形子系统,其接受程序指令以生成或改变显示信息诸如像素。此外,处理器105可基于精简指令集计算机(risc)或复杂指令集计算机(cisc)架构或任何其他合适的架构,并且可包括一个或多个处理核心。图形硬件120可以是用于处理图形和/或辅助处理器105执行计算任务的专用计算硬件。在一些实施方案中,图形硬件120可包括cpu集成的图形和/或一个或多个可编程gpu。系统100(实现本文所讨论的一个或多个实施方案)可以为一个或多个用户提供通过用户活动来控制相同系统(例如,系统100)或另一个系统(例如,另一个计算机或娱乐系统)的装置,所述用户活动可包括自然活动和/或预先确定的手势诸如手部动作。

本发明的各种实施方案可采用传感器,诸如相机。相机和类似传感器系统可包括自动对焦系统,以精确地捕获最终用于解译用户意图或命令的视频或图像数据。由于用户的运动可能基于所捕获的图像中的小区域中的微妙活动(例如,手、手指、脸、嘴巴、眉毛等),可使用自动对焦系统来分别聚焦图像的多个区域,以便访问更佳的信息。

回到图1,传感器125可捕获情境和/或环境现象,诸如时间;位置信息;设备相对于照明、重力和磁北的状态;以及甚至静态和视频图像。此外,网络可访问信息诸如天气信息也可用作上下文的一部分。所有捕获的情境和环境现象可被用来提供用户活动的情境或关于用户活动的信息。例如,在访问用户的手势或表情或情感时,情境信息可以用作分析的一部分。如果时间是凌晨3点,则用户的脸部更可能表示困倦而不是悲伤。

来自传感器125的输出可至少部分地由处理器105和/或图形硬件120、和/或结合在系统100内或没有该系统的专用图像处理单元来处理。如此捕捉的信息可被存储在存储器110和/或存储装置115和/或在所附接的网络上能访问的任何存储装置中。存储器110可包括由处理器105、图形硬件120和传感器125用以执行设备功能的一个或多个不同类型的介质。存储装置115可存储数据诸如媒体(例如,音频、图像和视频文件);媒体的元数据;计算机程序指令;和其他软件;包括数据库应用程序(例如,数据库存储头像相框)、偏好信息、设备配置文件信息和任何其他合适的数据。存储器110和存储装置115可用于保持经编译形式的或者以任何期望的计算机编程语言编写的被组织成一个或多个模块的计算机程序指令或代码。当由例如处理器105执行时,此类计算机程序代码可实现本文描述的一个或多个动作或功能(例如,解译和响应包括命令和/或手势的用户活动)。

图2示出了示例性网络架构200,在该网络架构内可实施所公开的技术并且所公开的硬件可位于该网络架构内。这个示例性网络200可包括多个网络205(即,205a、205b和205c),其中每一个可采用任何形式,包括但不限于局域网(lan)或广域网(wan),诸如互联网。另外,网络205可使用任何期望的技术(有线、无线或其组合)和协议(例如,传输控制协议tcp)。能够操作服务器应用程序诸如数据库并且还能够通过网络205进行通信的数据服务器计算机210(即210a和210b)耦接到网络205。使用服务器计算机的一个实施方案可涉及一个或多个中央系统的操作以处理图形信息并将经处理的信息发布到网络上的节点。

可采用任何智能电话、游戏系统、平板电脑、计算机、机顶盒、娱乐设备/系统、电视机、电话、通信设备或智能机器(包括嵌入式系统)的形式的客户端计算机215(即,215a、215b和215c)也可耦接到网络205和/或数据服务器计算机210。在一些实施方案中,网络架构210还可包括网络打印机诸如打印机220和可用于存储多媒体项目或本文提及的其他数据的存储系统诸如225。为了便于不同网络设备(例如,数据服务器210、终端用户计算机215、网络打印机220和存储系统225)之间的通信,至少一个网关或路由器230可任选地耦接在它们之间。此外,为了便于此类通信,利用网络的每个设备可包括网络适配器电路和相关软件。例如,如果期望以太网网络用于通信,则每个参与设备必须具有以太网适配器或支持以太网的嵌入式ic。另外,所述设备可带有用于其可能参与的任何网络(包括但不限于pan、lan、wan、和蜂窝网络)的网络适配器。

如上所述,本文公开的发明的实施方案包括软件。就此,提供常见计算软件架构的描述,如图3中的层图中所表述。与硬件示例类似,这里讨论的软件架构并不旨在以任何方式是排他性的,相反是例示性的。这对于层类型图尤其如此,软件开发者往往会以略微不同的方式对层类型图进行表述。在这种情况下,描述开始于从基底硬件层395开始的层,所述基底硬件层例示硬件,该硬件可包括cpu和gpu或其他处理和/或计算机硬件。在硬件层上方是o/s内核层390,该o/s内核层将一个示例示出为o/s内核345,该o/s内核是可执行存储器管理、设备管理和系统调用(常常是硬件驱动程序的权限)的内核软件。此处采用的标记一般性地旨在说明层中所示的软件元素使用来自下面的层的资源并为上面的层提供服务。然而在实践中,特定软件元素的所有部件可能并不完全按该方式作用。

返回图3,层385是由o/s服务350举例说明的o/s服务层。o/s服务可提供受保护环境中的核心o/s功能。此外,层385中所示的o/s服务可包括用于opengl351、metal352、软件光线跟踪器353和纯软件光栅器354的框架。这些具体示例都与图形和/或图形库有关并且被选择以用于说明本文多个实施方案中与图形处理有关的话题。这些具体示例还表示可在框架的较低等级中操作的图形框架/库,使得开发者可使用着色和图形基元和/或获得对图形硬件的相当紧密耦接的控制。此外,图3中指定的具体示例还可将其工作产物传递给硬件或硬件驱动程序。

再次参考图3,opengl351表示熟知的用于图形渲染(包括2d和3d图形)的库和应用编程接口的示例。metal352还表示所发布的图形库和框架,但其是比opengl351低的层级,从而支持组织、处理和提交图形和计算命令以及管理那些命令的相关联数据和资源的细粒度低层级控制。软件光线跟踪器353是用于基于跟踪图像平面中穿过像素的光路径的过程来生成图像信息的软件。纯软件光栅器354一般是指用于在没有专门的图形硬件(例如,只利用cpu)的情况下生成图形信息诸如像素的软件。在o/s服务层385内示出的这些库或框架仅仅是示例性的,并且旨在用于展示层的一般层级以及其在样本布置(例如内核操作通常在下面,并且高层级应用程序服务360通常在上面)中如何与其他软件有关。此外,可能有用的是要注意,metal352表示本领域开发人员已知的appleinc.所发布的框架/库。此外,opengl351可表示appleinc.当前发布的软件版本中存在的框架/库。

在o/s服务层385上方有应用程序服务层380,其包括spritekit361、scenekit362、核心动画363和核心图形364。o/s服务层表示通常被应用程序直接访问的高层级框架。在本公开的一些实施方案中,o/s服务层包括图形有关的框架,其是高层级,因为其对下面的图形库(诸如参考层385讨论的那些)是不可知的。在此类实施方案中,这些高层级图形框架意在以用户/开发者更加友好的方式为开发者提供对图形功能性的访问并允许开发者免除与着色和图形基元的工作。以举例的方式,spritekit361是appleinc.提供的图形渲染和动画基础结构。spritekit361可用于对纹理图像或“子图形”动画化。scenekit362是来自appleinc.的3d渲染框架,其支持在比具有类似能力的框架诸如opengl高的层级导入、操纵和渲染3d资产。核心动画363是appleinc.提供的图形渲染和动画基础结构。核心动画363可用于对视图以及应用程序的其他视觉元素动画化。核心图形364是来自appleinc.的二维绘图引擎。核心图形365提供用于应用的2d渲染。

在应用程序服务层380上方有应用程序层375,该应用程序层可包括任何类型的应用程序。举例来说,图3显示三个指定应用程序:照片371(照片管理、编辑和共享程序),quicken372(财务管理程序)和imovie373(电影制作和共享程序)。应用程序层375还示出了两个通用应用程序370和374,其表示存在任何其他应用程序可与本文所公开的本发明实施方案交互或可作为本文所公开的本发明实施方案的一部分。一般来讲,本发明的实施方案采用生成可显示/可查看内容的应用程序和/或与其交互。

在评估o/s服务层385和应用程序服务层380时,可能有用的是认识到不同框架具有较高或较低层级应用程序接口,即使框架被表示在图3示意图的相同层中也是如此。图3的例示用于提供一般性指导以及提出后面可能要讨论的示例性框架。此外,本发明的一些实施方案可说明层380中的框架利用层385中所表示的库。因此,图3提供用于这些示例的知识强化。重要地,图3并非意图限制可以任何特定方式或在任何特定实施方案中使用的框架或库的类型。一般来讲,本公开的多个实施方案提出软件活动和架构在硬件340和应用程序层375之间的层中,如c100所示。

再次参考图3,一些实施方案可建议使用高层级框架,诸如应用程序服务层380中所示的框架,但是,在对特定图形请求执行智能分析的情况下,可选择指定硬件和/或指定库或低层级框架来处理该请求。在这些实施方案中,智能分析可以提供有关图形请求至硬件的最佳遵循路径的即时决定。

虚拟化图形处理

参考图4a,本公开的一些实施方案尝试虚拟化图形处理,使得应用程序401不需要关于图形基元或硬件的知识或关注。在一个实施方案中,应用程序401可使用良好限定的编程接口,以将图形/绘图/显示请求传送给图形虚拟机402。图形虚拟机402可以指向应用程序层提供下面图形后端的虚拟化的硬件和/或软件(取决于实施方案)。在一些实施方案中,图形虚拟机402可以被实现为虚拟机,但字词虚拟和首字母缩略词vm的描述和使用不旨在将实施方案限于虚拟机。在一些实施方案中,图形虚拟机402可以将应用程序对图形/绘图/显示的请求减少为适合于提交给硬件或硬件驱动程序的形式。在一些实施方案中,图形虚拟机402可知晓以下项中的一些或全部:(i)所有可用的图形硬件,包括gpu和其他图形处理器以及非图形专用处理器(dsp、cpu等);(ii)所有可用的着色语言库;(iii)目标显示设备;以及(iv)应用程序提出的图形请求的性质(例如,图形的数学描述或图形的着色器程序)。具有该信息后,图形虚拟机402可以优化图形请求到显示元件的路径。在一些实施方案中,基于每个图形请求、每个绘图请求或每个着色器优化图形请求。

在一个或多个实施方案中,基于可用硬件、显示元件以及所请求图形的性质;虚拟机402可以(从可用的图形库中)选择最有效的图形库和/或硬件403来执行工作或渲染所请求的图形。在其他实施方案中,图形虚拟机402可能会限制只考虑一个或多个可用硬件、图形库以及所请求图形的性质。在其他实施方案中,图形虚拟机402可考虑附加因素,诸如可用硬件的加载(例如,cpu加载或gpu加载)、系统环境的情境(例如,显示元件上的照明、gps位置、显示系统的移动等)、与显示系统相关联的其他传感器信息、用户信息(例如,关于查看所显示的信息的人口统计或偏好)或主机系统或任何特定部件(诸如cpu或gpu)的电力状态。

现在参考图4b,该图示出了与参照图4a所描述的系统类似的实施方案的表示。特别地,图4b在元素分组416(虚线)中示出了一种替代图4a所示虚拟机402的架构。参考图4b,采用本发明的一些实施方案的系统可具有任意数量的高层级图形框架412,这些框架通常类似于前面讨论的应用程序服务框架。基于图4b的系统也可具有任意数量的图形库或低层级框架414,诸如以上关于o/s服务350所讨论的那些。虚拟化逻辑413可通过一个或多个高层级框架412接收应用程序图形信息,并且基于所请求的图形的性质、可用的硬件415和/或可用的库或低层级框架来决定到目标显示元件的路径。这样,因为可针对每个所请求的图形进行即时决定,所以该决定以最符合用户期望、最有效方式和/或计算环境的最佳方式的方式被路由和处理。因此,虚拟化逻辑413将应用程序开发者与图形系统的后端隔离并产生许多益处。例如,由于虚拟化逻辑413可作为o/s或其他系统更新的一部分进行修改,因此旧应用程序的性能可以利用对库的更改、新库、对硬件的更改或新硬件,而无需对应用程序进行任何编辑(即,可更新虚拟化逻辑413以利用新的/更改的库或硬件,但仍然接收相同的良好限定的输入)。此外,应用程序开发者可以请求图形而不需要进行任何低层级考虑,诸如是否使用顶点或片段编程(例如,由于虚拟化逻辑413会最佳化地进行选择,因此开发者不需要考虑着色率)。

参考图4c,其示出了另一个类似的实施方案。特别地,图4c示出在分组426(虚线)内,应用程序421可采用指定应用程序服务框架spritekit422。虚拟化逻辑423可单独地实施或集成在spritekit422中(或任何应用程序服务框架,诸如scenekit),并执行前述实施方案中描述的功能,通过低层级框架或库诸如metal424将程序流移动到硬件425上。在一些实施方案中,metal424或另一个低层级库/框架可能是流程的唯一库目标。虽然这可能会限制到图形硬件的路径的选项,但它可提高模块性的效率。例如,如果一个非常低层级的框架/库(诸如metal424)作为高层级图形框架的通用输出而出现,则可使用metal424(或类似的低层级框架/库)作为硬件级的唯一输入来快速组装虚拟化系统。

层示例

现在参考图5,其示出了例示本公开的许多潜在实施方案的概念层图。应用程序层500示出了示例性应用程序501至505,所述应用程序通过其对下面的应用编程接口的使用进行分类。该图显示,在开发过程中,传统应用程序可能使用了spritekit501、scenekit502、核心动画503、核心图形504和/或任何应用程序服务图形程序接口505。因此,当执行此类应用程序时,所述应用程序会调用应用程序服务层510,特别是对应于所使用的应用程序接口的框架511至515。因此,本发明的一些实施方案考虑了从一个或多个指定应用程序服务框架接收输出(或中间表示)的图形虚拟化逻辑521。例如,就图形和着色信息而言,许多现有高层级图形框架可在opengl531中或在诸如glsles的opengl的形式中产生输出。或者,图形虚拟化逻辑521可与应用程序服务框架510集成在一起。当接收到来自高层级框架的图形请求时,虚拟化逻辑521可清楚任何可用的下面的图形库(例如,opengl531、metal532等)、请求的图形(例如,数学或着色器程序)以及任何可用的下面的硬件(例如,gpu)。

在一些实施方案中,接收到的图形请求可以被变换为通用中间形式。中间形式的一个目的是允许图形虚拟化逻辑521在决定方面的多功能性。例如,如果图形虚拟化逻辑521可以四种可能形式接收图形请求以及五个可能的目标(例如,低层级库),则图形虚拟化逻辑521将必须基于框架种类的改变对二十种变换可能进行管理和更新。然而,通过首先将接收到的信息变换成中间形式,变换任务可被模块化为离散的逻辑模块,每个模块负责将一种语言变换成中间形式或将中间形式变换成一种语言。这提高了软件的性能和模块性,允许轻松添加和减少新的框架/库,并提高软件的整体可管理性。如图6所指示的,本公开的不同实施方案可将各种变换模块放置在图形虚拟化逻辑521内或作为集成框架/库。

再次参考图5,图形虚拟化逻辑521可基于请求的确切性质(即所请求的是什么)以及上面讨论的可用资源,针对每个单独图形请求选择较低层级的库和/或硬件(例如,gpu)。此外,本公开的一些实施方案可以即时地进行确定,意味着在应用程序生成图形请求的时间和显示或呈现所得图形的时间之间。

现在参考图6,示出了类似于图5的图,但该图旨在示出可选变换模块650以及将框架/库与虚拟化逻辑620相结合的能力。本公开的各种实施方案可集成一个或多个高层级框架(511至515)和低层级库(531至535)。在一些实施方案中,图形虚拟化逻辑620可结合一个或多个高层级框架,以及任选地对应转换模块,但不含低层级库。在其他实施方案中,图形虚拟化逻辑620可结合一个或多个低层级框架,但不含高层级库。在另外其他实施方案中,图形虚拟化逻辑620可结合一个或多个高层级框架和一个或多个低层级库,以及任选地对应变换模块。无论图形虚拟化逻辑620中是否结合了特定框架或库,图形虚拟化逻辑620可按照以上和以下所述相同方式来利用未结合的框架和库

过程例示

现在参考图7,其示出了例示本公开的许多实施方案的处理流程。在700处接收图形源,所述图形源可以是图形的可显示元素的任何描述。在一些实施方案中,所述图形源可以是可显示内容的量的数学和/或编程表示,诸如帧。在一些其他实施方案中,所述图形源可以是着色器程序。在701,可对图形源进行处理,其可包括任意数量的已知或标准操作和优化,包括扫描、令牌化和解析源代码中的一者或多者。虽然这些概念在计算机科学中是众所周知的——扫描指的是读取或评估每一行代码,令牌化指的是词法分析,由此将字符序列转换为“令牌”(即,有意义的字符串),而解析是一种语法分析,用于分析符合语法的符号串。

再次参考图7,在702处,可创建图形意图的中间表示。在一些实施方案中,所述中间表示可以用通用语言诸如通用着色器语言来表达。这种语言是通用的,因为不管源应用程序或框架是怎样的,也不管目标库或硬件是怎样的,都可以采用相同的中间语言。中间表示代表“图形意图”,因为它描述了由图形源所描述的相同的图形/绘图/显示特征。在多个实施方案中,可以采用反映与由所述图形源描述的相同的图形/绘图/显示特征的无损方式来捕获“图形意图”。在703处,可检查情境。在一些实施方案中,检查可涉及确定硬件能力或替代方案,并且/或者确定低层级框架/库的可用替代方案。例如,如果系统具有两个gpu,则可以考虑操作要求、规格以及每个gpu的当前状态。此外,如果opengl和metal是可用的低层级库,则这些库的特征也应该被考虑。在一些实施方案中,检查还可包括以下考虑项中的一者或多者:主机系统或一个或多个任何部件(诸如一个或多个gpu)的预期热曲线;图像质量要求,诸如开发者、用户或显示系统施加或期望的要求;前景初始化;后台初始化;硬件光栅器的性质和数量;系统中的软件优先级(例如,当应用程序优先级可能覆盖系统优先级时,诸如当游戏开发者希望最大优先级时,尽管通常游戏不能超过中高优先级)。

在其他实施方案中,在703处,可检查许多其他的系统特征;诸如所请求图形的性质、可用硬件的加载(例如,cpu加载或gpu加载)、系统环境的情境(例如,显示元件上的照明、gps位置、显示系统的移动等)、与显示系统相关联的其他传感器信息、用户信息(例如,关于查看所显示的信息的人口统计或偏好)、主机系统或任何部件(诸如gpu)的电力状态。

再次参考图7,在704,可以基于检查进行关于目标着色器语言和/或硬件的确定。例如,实例化可能会导致决定使用metal而非opengl,集成gpu而非附件(通常是高性能)gpu。下表提供了具体的因素并切说明了这些因素如何影响确定。最终确定可以使用经验数据或任意数量的已知数学加权和决策过程来考虑或加权因素。

表i

再次参考图7,在705处,中间形式可以变换成所选择的目标语言/库,并且可以执行任何优化以优化所选目标硬件的代码。最后,在706处,生成的代码可以发送到硬件驱动程序,或直接发送到硬件执行,只要适合即可。关于是否采用驱动程序,本公开的不同实施方案设想使用了驱动程序,而其他实施方案则不采用。通常,驱动程序可用于可商购获得的硬件,并且可增加系统的模块性,从而允许更容易地添加新模块(例如,如果驱动程序可用并接受glsles或metal,则可以毫不费力地将硬件添加到虚拟化逻辑中)。然而,在一些实施方案中,可以通过将驱动程序功能性并入到虚拟化逻辑中并由此将逻辑与硬件命令更紧密地耦接来实现效率。最终,关于使用驱动程序的决定取决于具体情况,包括实施新硬件所需的可用资源、效率需求和模块性需求。

现在参考图8,其示出了例示本公开的许多实施方案的另一个处理流程。在800处接收图形程序,所述图形程序可以是可显示的元素或图形的任何描述。在一些实施方案中,所述图形程序可以是可显示内容的量的数学和/或编程表示,诸如帧。在一些实施方案中,所述图形程序可以是着色器程序。在801处,可以将所述图形程序分解成抽象语法树(“ast”)。ast在计算机科学领域中是众所周知的并且通常被认为是源代码的抽象语法结构的树状表示。ast也可以被认为是用于表示所请求图形的极其节省内存的结构。对树结构的标引具有代表性,并且涉及数据的概念结构,而不一定涉及树的图形表示。因此,在805处,可以创建以其源编程语言表示所述图形程序的ast。

再次参考图8,在810处,可以通过操纵ast将ast的编程语言变换为中间形式(即,该编程语言仍然为ast形式)。在一些实施方案中,所述语言变换可以在形成ast之前发生。如上文所暗示的,所述中间形式为所述图形程序的“图形意图”的中间表示。在一些实施方案中,所述中间形式可以用通用语言诸如通用着色器语言来表达。这种语言/形式是通用的,因为不管源应用程序或框架是怎样的,也不管目标库或硬件是怎样的,都可以采用相同的中间形式。在一些实施方案中,ast的中间形式可以暴露所述图形程序的“图形意图”,因为该中间形式可以描述与由所述图形程序描述的相同的图形/绘图/显示特征。在一个或多个实施方案中,可以采用反映与由所述图形程序描述的相同的图形/绘图/显示特征的无损方式来捕获“图形意图”。

在一些实施方案中,使用ast对于下游操纵的容易性和效率可能很重要。由于使用中间形式可能需要多次变换(从应用程序到硬件),所以可以采用ast通过将程序表达式限制为其抽象语法结构来简化任务。因此,在一些实施方案中,使用中间形式的效率可能取决于ast的使用。

再次参考图8,项目810示出了子项目810a和810b,这两个子项目可以应用于一些实施方案中。特别地,在810a处,可以应用正常的ast优化和标准化。另外,在810b处,ast树可能得益于重新排序和重新组织,其中重新排序和重新组织取决于由源编程语言产生的失真。尽管这些项目810a和810b是一些发明实施方案的一部分,但是用于将这些一般处理应用于ast的机制在计算机科学领域中是已知的。

在815处,可以遍历ast以翻译为目标硬件815a和/或目标库/语言815b。由于遍历可能是资源密集的,所以存在可选的高速缓存实施方案,该实施方案用于消除遍历工作的部分或全部。例如,每当必须遍历ast时,可以询问高速缓存850以确定先前是否已遍历过相同的遍历操作(或其部分)。如果已执行过相同的遍历工作,则可以从高速缓存检索结果,并且可以节省用于实际遍历的处理资源。当然,为了维护高速缓存,每当遍历ast时,如果高速缓存标签(通常为识别信息)尚未被存储,则该标签连同遍历的结果可以被存储在该高速缓存中。鉴于存储器和性能方面的考虑,高速缓存可以保存像开发者可能希望提供的那样多的以往遍历。离散的高速缓存技术是本领域已知的,但是本发明所公开的进程中的高速缓存阶段对于本发明的实施方案可能是有利的。

再次返回到815,可以根据以上讨论的方式在任何时间(在遍历ast之前、期间,或者在遍历ast之后)作出关于目标硬件和/或目标库的标识的决定。在一个实施方案中,ast遍历可以是迭代的,并且可以在一次或多次遍历的过程中作出关于目标硬件和目标库的决定。例如,关于目标硬件和/或目标库的决定可以取决于ast的多个方面,使得随着树被遍历一次或多次,可以累积因素的平衡。在一些实施方案中,在进程815结束时,ast可被转换成使得其可以被解构为用于特定硬件布置和特定库的程序代码。

在820处,剩余的程序代码可以被放置在到硬件的最终流水线中。在当前的典型实施方案中(但不一定在所有实施方案中),这可能涉及提交给硬件驱动程序,从而可能涉及系统内核的操作。取决于所述实施方案,所选择的库可以直接应用于硬件,在这种情况下,将不需要驱动程序。然而,更常见的是,在一些实施方案中,驱动程序860可以进一步操纵低级库源并且为硬件830创建特定的执行语句。另外,在某些以appleinc.的操作系统为基础建立的实施方案中,可以在825处产生第二中间代码形式。这第二中间形式可以包括apple中间表示(“air”)。一般来讲,air是一种图形代码形式,该图形代码形式针对运行时编译进行了优化,使得air可以预先准备好并且仍然允许在运行时进行非常快速的渲染。

与相对于815讨论过的ast遍历类似,驱动程序创建air的工作825和进一步组装为执行语句的工作830可能是资源密集的。因此,这表示另一个可能得益于高速缓存的阶段,该阶段可以在提交给驱动程序之前在820处完成或者在驱动程序开始其工作之前在825处完成。无论是否使用高速缓存、也无论是否发现高速缓存命中,一旦准备好执行语句,代码就可以在硬件上运行840并且图形就可以得到渲染。

动态环境

从许多实施方案认识到,计算机系统是其中系统参数(例如资源的存在性和可用性)可以时刻改变的动态环境。因此,在一些实施方案中,随着系统参数改变,必须重新考虑应用程序和屏幕之间的图形流水线的配置(如上所述)。在一个或多个实施方案中,重新考虑仅适用于在系统参数改变之后作出的图形请求。在其他实施方案中,基于参数改变的调整可能导致重新评估和/或改变进程中的决定(例如,关于已接收到的图形请求,以及关于其中请求尚未提交的低级库和硬件的潜在决定)。例如,如果从macbook计算机拔掉电源,则一个实施方案可以重新评估其选择,并且以节省瓦特的方式重新实例化着色器和资产。此外,在热插拔部件的示例中,诸如可以添加到正在运行的系统中或从正在运行的系统中移除的假设的图形卡,当资源突然变得可用或不可用时,可能需要进行类似的重新评估。

在其他实施方案中,系统可以对用户活动或优先级的改变作出反应。在这些实施方案中,重新实例化着色器和资产和/或重新评估流水线路径可以作为对用户相关活动的反应而发生。例如,用户可能会玩一个百分之百占用相关系统资源的游戏。如果该用户暂停与也需要gpu资源的视频聊天应用程序的交互,则预期所述游戏将持续在视图端口中运行。为了操作游戏(其百分之百占用相关资源)和聊天应用程序,游戏的渲染流水线可以在最小状态下重新配置以释放先前所需的资源。同样,当焦点返回到游戏时,该游戏可以收回所述资源。

在另外其他实施方案中,当系统具有多个图形硬件选项(例如大量的离散图形卡或gpu)时,系统可以确定图形负载可以在可用的图形系统之间平衡。在这种情况下,图形工作可以在离散的图形系统之间进行划分,在每种情况下使用不同的参数。在这些情形下,可以根据算法诸如先拣分、中拣分或后拣分在展示之前重新构成最终图像。在一些实施方案中,这一最终的重新构成阶段可能涉及定制的构成硬件。

在图形可以跨多个gpu划分的这些实施方案中,可以由资源的gpu关联性构建表,并相应地创建资源。在绘制操作期间,使用先拣分、中拣分或后拣分算法,可以将图像部分分派给多个gpu。如可用的,并且根据拣分规则,可以在指定的合成gpu上或专用于该目的的专门的合成(即分层)硬件上采集和合成结果(例如,在传统系统中,鼠标光标图像位于硬件合成层上)。

本公开的各种实施方案设想了在以下情况中的一者或多者之下重新评估流水线的选择和潜在重新配置:硬件资源变得可用,例如,由于添加了热插拔部件;硬件资源丢失;或者出现硬件可用性,例如当硬件被其他软件放弃时。硬件可用性或不可用性的一些原因在于:由于某个进程在先前为后台进程之后变为聚焦进程,硬件变得不可用;由于移除热插拔部件,硬件变得不可用;由于热过载或先前过载的部件返回,硬件变得可用/不可用;由于功率(瓦特)限制或功率(瓦特)限制解除,硬件变得可用/不可用;由于某个进程变为后台进程,硬件变得不可用;或者由于较高优先级请求诸如某些通信请求(例如,facetime呼叫),硬件变得不可用。

应当理解,以上描述旨在是示例性的而非限制性的。已呈现材料以使得本领域的任何技术人员能够制作和使用受权利要求保护的发明,并在特定实施方案的上下文中提供该材料,其变化对于本领域的技术人员而言将是显而易见的(例如,可以彼此结合使用所公开的实施方案中的多个实施方案)。此外应当理解,本文所标识的操作中的一些操作可以不同的顺序来执行。因此应当参考所附权利要求以及赋予此类权利要求的等同形式的完整范围来确定本发明的范围。在所附权利要求中,术语“包括(including)”和“其中(inwhich)”被用作相应术语“包括(comprising)”和“其中(wherein)”的通俗的英语等同形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1