当前位置: 首页 > 专利查询>苹果公司专利>正文

图形管线状态对象和模型制造技术

技术编号:14754202 阅读:44 留言:0更新日期:2017-03-02 12:04
本发明专利技术公开了一种创新型GPU框架和相关的API,所述创新型GPU框架和相关的API呈现所述目标硬件的更准确的表示,以使得所述GPU的固定功能与可编程特征之间的区别被开发者感知。这使得程序和/或通过所述程序生成或操纵的图形对象被理解为不仅仅是代码,而且是与所述代码相关联的机器状态。当限定此类对象时,需要可编程GPU特征的所述定义部件可仅被编译一次,并且根据需要可被反复再利用。类似地,在进行状态变化时,所述硬件也作出对应于所述状态变化的状态变化。另外,这些不可变对象的创建防止了开发者无意地改变所述程序或对象的使其与预期的表现不同的部分。

【技术实现步骤摘要】
【国外来华专利技术】版权声明本专利文档的公开内容的一部分包含受到(版权或光罩作品)保护的材料。由于本专利文档或本专利公开内容出现在专利与商标局专利文件或记录中,因此(版权或光罩作品)所有人不反对任何人对本专利文档或本专利公开内容的拓制,但会以其他方式保留任何形式的所有(版权或光罩作品)权利。
技术介绍
本公开整体涉及计算机编程领域。更具体地讲,但并非作为限制,本公开涉及用于对图形和计算应用进行编程以在多种图形和计算处理器上执行的技术。计算机和其他计算设备通常具有至少一个可编程处理元件,通常称为中央处理单元(CPU)。它们通常还具有其他用于各种类型的专业化处理的可编程处理器,诸如用于图形处理操作,因此通常称为图形处理单元(GPU)。GPU通常包括被设计用于在并行数据流上执行相同指令的多个核或处理元件,从而使得它们比用于其中并行地进行大数据块处理的算法的通用CPU更有效。一般来讲,CPU充当主机并且将专业化并行任务交给GPU。已经开发出用于具有CPU和GPU的异构计算平台的若干框架。这些框架包括OpenGLTM。OpenGL聚焦于使用GPU进行图形处理并且提供API以渲染2D和3D图形。OpenGL框架提供类似C的开发环境,其中用户可创建应用以在多种不同类型的CPU、GPU、数字信号处理器(DSP)和其他处理器上运行。OpenGL还提供编译器和运行环境,其中可在异构计算系统内编译和执行代码。当使用OpenGL时,开发者可使用单一的统一语言瞄准OpenGL驱动器适用的所有处理器。这是通过向开发者呈现抽象平台模型和以类似的方式使所有这些架构概念化的应用程序编程接口(API)以及在整个异构架构上支持数据和任务并行性的执行模型来实现的。当执行OpenGL程序时,一系列API调用对系统进行配置以供执行,嵌入式编译器编译OpenGL代码,并且运行时异步地协调并行任务之间的执行。典型的基于OpenGL的系统通过嵌入式编译器在终端用户系统上运行源代码,以生成在该系统上可用的目标GPU的可执行代码。然后,将可执行代码或可执行代码的部分发送到目标GPU并执行。然而,该方法,具体地讲编译步骤,对于一些类型的应用诸如图形密集的游戏可能耗时太长。在某种意义上,OpenGL本身可被视为状态机,其中每个命令可能导致状态变化,该状态变化需要生成和/或编译新的GPU代码。这是由以下事实引起的:某些GPU功能依赖于GPU中的专用电路,而其他GPU功能需要使用GPU的可编程特征。根据所用的特定GPU硬件,从计算时间角度来看这些类型的状态变化可能非常昂贵。另外,近年来,GPU硬件的演化已超过OpenGL的演化,使得在某种意义上,OpenGLAPI与其中程序将运行的硬件环境失配。结果是开发者可能无意地编写代码,所述代码对于其将在上面运行的至少一些硬件而言特别无效。因此,本领域需要用于GPU编程的框架,其将API与底层硬件更紧密地联系,使得开发者意识到现代GPU的固定功能部分与可编程部分之间的区别。这种意识可使得开发者能够编写在现代设备上更有效执行的代码。
技术实现思路
一个公开的实施方案包括非暂态计算机可读介质,其具有存储在其上以支持包含用于图形处理单元(GPU)的代码的不可变管线状态对象的指令。在被执行时,所述指令可使得一个或多个处理器创建不可变管线状态对象,所述不可变管线状态对象包含关于用于显示图形对象的一个或多个图形操作的编译信息。所述不可变管线状态对象可在应用加载时间被编译,以封装用于GPU的可执行指令并且使在改变时需要重新编译的可变属性外在化。一个或多个图形操作可包括选自顶点着色器、片段着色器和顶点拾取配置的类型的一种或多种着色器。一个或多个图形操作可包括选自混合状态、光栅化启用和多重采样掩蔽的至少一个项目。该第一公开的实施方案的非暂态计算机可读介质还可包括使得一个或多个处理器创建用于不可变状态对象的一组一个或多个相关联的状态选项的指令。所述一组一个或多个相关联的状态选项可包括数据属性,该数据属性可变化而不会导致用于GPU的可执行指令以及相关联的不可变状态对象的对应变化。此类属性的示例包括输入纹理或输入顶点数据、视口尺寸和/或遮挡查询数据。另一个公开的实施方案涉及在应用程序中生成用于图形操作的GPU代码的方法。该方法可包括将一个或多个对象(诸如目标帧缓冲区配置)限定为在由GPU执行的整个渲染过程中是持久的。该方法还可包括限定多个不可变管线状态对象,每个对象与图形操作相关联并且包含用于GPU的编译的可执行指令。该方法还可包括限定与所述不可变状态对象相关联的一个或多个状态选项。所述一个或多个状态选项可包括数据属性,该数据属性可变化以改变对应的图形操作,而不会导致用于GPU的可执行指令的变化。在该实施方案的公开方法中,用于GPU的编译的可执行指令可被布置为在除图形操作的绘制时间以外的时间仅被编译一次,并且被缓存以供以后重复使用。这个时间可为将应用安装到目标系统上的时间或将应用加载到目标系统的存储器中以供执行的时间。不可变管线状态对象还可包括影响用于GPU的编译的可执行指令的另外的参数。不可变管线状态对象还可包括诸如顶点着色器、片段着色器和顶点拾取配置的至少一种着色器以及诸如混合状态、光栅化启用和多重采样掩蔽的至少一个所选的另外的项目。另一个公开的实施方案涉及具有存储器和处理器的计算设备,所述处理器包括CPU和GPU。处理设备可被配置为执行存储器中存储的程序代码,从而创建不可变管线状态对象以及用于该不可变状态对象的一组一个或多个相关联的状态选项。不可变管线状态对象可包含关于用于显示图形对象的一个或多个图形操作的编译信息,并且可适于在除渲染图形对象的时间之外的时间被编译,以便封装用于GPU的可执行指令并且使在改变时需要重新编译的可变属性外在化(externalize)。用于不可变状态对象的一组一个或多个相关联的状态选项可包括数据属性,该数据属性可变化而不会导致用于GPU的可执行指令以及相关联的不可变状态对象的对应变化。一个或多个图形操作可包括一种或多种着色器,诸如顶点着色器、片段着色器或顶点拾取配置。一个或多个图形操作可包括诸如混合状态、光栅化启用和多重采样掩蔽的至少一个项目。除渲染图形对象的时间之外的时间可为将包含程序代码的应用安装到计算设备上的时间或将包含程序代码的应用加载到计算设备的存储器中以供执行的时间。附图说明图1为示出根据一个实施方案的程序的编译、链接和执行的框图。图2为示出根据一个实施方案的用于在图形处理单元上执行程序的计算机系统的框图。图3为示出根据一个实施方案的用于编译以及链接程序的计算机系统的框图。图4为示出根据一个实施方案的联网系统的框图。图5A为示出根据一个实施方案的示例性管线状态对象的框图。图5B为示出根据一个实施方案的渲染命令编码器的操作的框图。具体实施方式创新型GPU框架和相关的API呈现目标硬件的更准确的表示,以使得GPU的固定功能与可编程特征之间的区别被开发者感知。这使得程序和/或通过该程序生成或操纵的图形对象被理解为不仅仅是代码,而且是与代码相关联的机器状态。当限定此类对象时,需要可编程GPU特征的定义部件可仅被编译一次,并且根据需要可被反复再利用。类似地,在进行状态变化时,状态变化对应于在硬件上进行的状态变化。另外,这本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201580028651.html" title="图形管线状态对象和模型原文来自X技术">图形管线状态对象和模型</a>

【技术保护点】
一种非暂态计算机可读介质,包括存储在其上以支持不可变管线状态对象的指令,所述不可变管线状态对象包含用于图形处理单元(GPU)的代码,所述指令在被执行时使得一个或多个处理器:创建包含关于用于显示图形对象的一个或多个图形操作的编译信息的不可变管线状态对象,所述不可变管线状态对象将在应用加载时间被编译,以封装用于GPU的可执行指令并且使在改变时需要重新编译的可变属性外在化。

【技术特征摘要】
【国外来华专利技术】2014.05.30 US 62/005,131;2014.09.30 US 14/501,9331.一种非暂态计算机可读介质,包括存储在其上以支持不可变管线状态对象的指令,所述不可变管线状态对象包含用于图形处理单元(GPU)的代码,所述指令在被执行时使得一个或多个处理器:创建包含关于用于显示图形对象的一个或多个图形操作的编译信息的不可变管线状态对象,所述不可变管线状态对象将在应用加载时间被编译,以封装用于GPU的可执行指令并且使在改变时需要重新编译的可变属性外在化。2.根据权利要求1所述的非暂态计算机可读介质,其中所述一个或多个图形操作包括选自由顶点着色器、片段着色器和顶点拾取配置构成的组的类型的至少一种着色器。3.根据权利要求2所述的非暂态计算机可读介质,其中所述至少一种着色器包括顶点着色器和片段着色器。4.根据权利要求1所述的非暂态计算机可读介质,其中所述一个或多个图形操作包括选自由混合状态、光栅化启用和多重采样掩蔽构成的组的至少一个项目。5.根据权利要求1所述的非暂态计算机可读介质,还包括指令,所述指令在被执行时使得一个或多个处理器:创建用于不可变状态对象的一个或多个相关联的状态选项的集合,所述一个或多个相关联的状态选项的集合包括数据属性,所述数据属性能够变化而不会导致用于所述GPU的可执行指令以及所述相关联的不可变状态对象的对应变化。6.根据权利要求5所述的非暂态计算机可读介质,其中所述一个或多个数据属性包括输入纹理或输入顶点数据。7.根据权利要求5所述的非暂态计算机可读介质,其中所述一个或多个数据属性包括视口尺寸。8.根据权利要求5所述的非暂态计算机可读介质,其中所述一个或多个数据属性包括遮挡查询数据。9.一种生成用于应用程序中的图形操作的GPU代码的方法,所述方法包括:将一个或多个对象限定为在由GPU执行的整个渲染过程中是持久的,所述一个或多个对象包括目标帧缓冲区配置;限定多个不可变管线状态对象,每个对象与图形操作相关联并且包含用于所述GPU的编译的可执行指令;以及限定与所述不可变状态对象相关联的一个或多个状态选项,所述一个或多个状态选项包括数据属性,所述数据属性能够变化以改变对应的图形操作,而不会导致用于所述GPU的所...

【专利技术属性】
技术研发人员:G·阿维卡罗古拉里E·O·苏纳普R·W·施雷耶尔A·K·坎
申请(专利权)人:苹果公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1