处理支持固定管线的三维图形的利记博彩app

文档序号:6593503阅读:177来源:国知局
专利名称:处理支持固定管线的三维图形的利记博彩app
技术领域
本公开涉及处理三维(3D)图形。
背景技术
可以获得各种三维(3D)图形应用,以用于在诸如移动电话、个人数字助理 (PDA)和便携式游戏机的移动环境上执行。为了处理3D应用,可以获得针对移动环 境而设计的3D图形应用编程接口(API)。3D图形API中的一些支持固定管线(fixed pipeline),而其它支持可编程管线。

发明内容
技术问题针对处理3D图形来描述技术、设备和系统。具体地,3D图形处理技术、设备 和系统支持可编程管线和固定管线二者。技术方案一方面,提供了一种用于处理3D图形的图形处理器。所述图形处理器包括固 定管线代码生成器,用于把支持固定管线的应用编程接口(API)转换为第一微代码;以 及渲染器(shader)管线代码生成器,用于把支持可编程管线的API转换为第二微代码。 所述图形处理器包括与固定管线代码生成器和渲染器管线代码生成器相通信的渲染器 管线,用于通过使用渲染器程序来处理第一和第二微代码中的至少一个。实现能够可选择地包括一个或多个以下特征。所述处理器可以进一步包括与 固定管线代码生成器和渲染器管线代码生成器相通信的API选择器,用于接收输入API, 并确定所接收的输入API是否支持固定管线或可编程管线。另外,所述渲染器管线可以包括顶点渲染器和片段渲染器。所述固定管线代码 生成器可以包括状态单元,用于解析所接收的输入API的对象的属性,并基于该属性来 输出状态信息。所述固定管线代码生成器可以包括代码生成器,用于基于该状态信息 来生成第一微代码;以及代码缓冲器,用于存储所生成的第一微代码。所述处理器可以进一步包括危险(hazard)控制器,用于检查第一和第二微代 码中的至少一个的处理顺序和执行时间,以便标识指示停止(stall)的危险的发生并响应 于该危险而执行处理。所述危险控制器可以包括危险检查器,用于检查每个微代码的 处理顺序和执行时间,以检查危险是否已经发生;以及重排序单元,用于对产生危险的 微代码的处理顺序重排序。所述危险控制器可以进一步包括转发单元,用于转发产生 危险的微代码的先前微代码的结果值,以用于任何其它微代码的执行。所述支持固定管线的API可以是OpenGL ES 1.x,而所述支持可编程管线的API 可以是 OpenGL ES 2.x。另一方面,提供了一种由用于处理3D图形的图形处理器执行的方法。该方法包 括把支持固定管线的应用编程接口(API)转换为可由支持可编程管线的渲染器识别的
4第一微代码;以及处理所述微代码,以处理3D图形。所处理的3D图形能够存储在诸如 缓冲器的存储器上。而且,所处理的3D图形能够显示在移动环境的显示单元上。方法的实现能够可选择地包括一个或多个以下特征。所述方法可以进一步包括 把支持可编程管线的API转换为可由渲染器识别的微代码。把支持固定管线的API和支持可编程管线的API转换为第一和第二微代码的步骤 可以包括基于输入API的对象的属性来获取状态信息,以及基于所述状态信息来生成 第一和第二微代码中的至少一个。把支持固定管线的API和支持可编程管线的API转换为第一和第二微代码的步骤 可以进一步包括检查危险是否已经发生以致停止随后微代码的执行。把支持固定管线的API和支持可编程管线的API转换为第一和第二微代码的步骤 可以进一步包括当确定危险已经发生时,重排序产生危险的微代码。把支持固定管线 的API和支持可编程管线的API转换为第一和第二微代码的步骤可以进一步包括当确 定危险已经发生时,把产生危险的微代码的先前微代码的结果值转发到不同的微代码。再一方面,一种计算装置包括中央处理单元(CPU);以及图形处理器,与该 CPU耦接来处理3D图形。所述图形处理器包括固定管线代码生成器,用于把支持固 定管线的API转换为第一微代码;渲染器管线代码生成器,用于把支持可编程管线的API 转换为第二微代码;以及与固定管线代码生成器和渲染器管线代码生成器相通信的渲染 器管线,用于接收第一和第二微代码中的至少一个,并处理渲染器程序。计算装置的实现能够可选择地包括一个或多个以下特征。所述图形处理器能够 包括与固定管线代码生成器和渲染器管线代码生成器相通信的API选择器,用于接收 输入API,并确定所接收的输入API是否支持固定管线或可编程管线。所述渲染器管线 能够包括顶点渲染器和片段渲染器。所述固定管线代码生成器能够包括状态单元,用于 解析输入API的对象的属性,并基于所解析的属性来输出状态信息。所述渲染器管线能 够包括代码生成器,用于基于输出的状态信息来生成第一微代码。而且,所述渲染器 管线能够包括代码缓冲器,用于存储第一微代码。所述图形处理器能够进一步包括 与固定管线代码生成器和渲染器管线代码生成器相通信的危险控制器,用于检查第一和 第二微代码中的至少一个的处理顺序和执行时间,以便发现指示停止的危险的发生并响 应于该危险而执行处理。此外,所述危险控制器能够包括危险检查器,用于检查每个 微代码的处理顺序和执行时间,以检查危险是否已经发生;以及重排序单元,用于对产 生危险的微代码的处理顺序重排序。有益效果技术、设备和系统的实现能够潜在地提供一个或多个以下优势。所提出的图形 处理设备、系统和方法能够提供缩小的硬件尺寸和功耗。对于可编程管线或固定管线, 不要求附加的命令或编译,并且所要求的存储器能够最小化。另外,由危险所导致的渲 染器的停止能够被抑制,以由此改进3D图形的性能。


图1图示了使用渲染器的可编程管线的结构。图2是实现3D图形处理的计算机装置的示例性示意框图。
图3是用于处理3D图形的图形处理器的示例性示意框图。图4是固定管线代码生成器的示例性示意框图。图5图示了根据属性的状态的示例。图6图示了用于普通操作的64位微代码的格式。图7图示了用于流程控制的64位微代码的格式。图8图示了在雾化状态中微代码的生成。图9图示了危险发生的情况。图10是图示了固定管线代码生成器的控制器和代码缓冲器的示意框图。图11是图示了图形处理方法的流程图。
具体实施例方式OpenGL ES (用于嵌入式系统的OpenGL)是针对诸如移动电话、个人数字助理 (PDA)、和控制台的嵌入式装置而设计的OpenGL 3D图形应用编程接口(API)的子集。 OpenGL ES由非营利技术联盟Khronos集团有限公司管理。可以获得OpenGL ES规范的几个版本。例如,OpenGL ES 1.0针对OpenGL 1.3 规范来拟订,OpenGL ES 1.1相对于OpenGL 1.5规范来描述,而OpenGL ES 2.0相对于 OpenGL 2.0规范来描述。2007年3月公布的OpenGLES 2.0消除了固定功能绘制管线的 大部分,而支持可编程的管线。该变换和光照(lighting)管线的几乎全部绘制特征(诸 如,固定功能API先前指定的材料和光参数的规范)被图形程序员所写的渲染器所取代。OpenGL ES 1.x 包括 OpenGL ES 1.0、1.1、1.5 的至少一个版本。OpenGLES 2.x 包括OpenGL ES 2.0的至少一个版本。OpenGLES 1.x针对固定功能硬件而设计,并提供加速、图像质量、和性能。而 且,OpenGL ES 1.x着重于API的硬件加速。与OpenGL ES 1.x相比,OpenGL ES 2.x使 能完全可编程的3D图形。而且,OpenGL ES 2.x着重于具有创建渲染器和程序对象的能 力及写顶点和片断渲染器的能力的可编程3D图形管线。OpenGL ES 2.x不支持OpenGL ES 1.x的固定功能变换和片段管线。因此,OpenGL ES 2.x不与OpenGL ES 1.x后向兼 容。如上所述,OpenGLES 1.x支持固定管线,而OpenGL ES 2.x支持可编程管线。
OpenGL ES 2.x支持的可编程管线使用渲染器。渲染器是软件指令的集合,其最初用于以 高度灵活性来计算图形硬件上的绘制效果。例如,Direct3D、OpenGL>和OpenGL ES图形库使用下述三种类型的渲染器。(1)顶点渲染器针对给予图形处理器的每个顶点运行一次。其目的是把虚拟空间 中每个顶点的3D位置变换为3D位置显现在屏幕上的2D坐标(以及Z缓冲器的深度值)。 顶点渲染器能够操纵诸如位置、色彩、及纹理坐标的特性。顶点渲染器的输出提供至管 线中的下一级,其当呈现时是几何渲染器,或者在其它情况下是光栅化器(rasterizer)。(2)几何渲染器能够从网格添加和去除顶点。几何渲染器能够用来按程序生成几 何,或者把体积的细节添加到现存网格,其成本太高以致不能在中央处理单元(CPU)上 处理。当几何渲染器正被使用时,该输出然后发送至光栅化器。(3)片断渲染器(也称为像素渲染器)能够计算个别片断(或像素)的色彩。对此级的输入来自光栅化器,该光栅化器填充正经由图形管线发送的多边形。片断渲染器 典型地能够用于场景光照及诸如凹凸映射(bumpmapping)和调色的相关效果。固定管线 通过把有限状态变量调整到固定结构来仅仅提供有限形式的计算。与之相比,片断渲染 器通过编程而允许总体的复杂的计算,并且理论上能够提供无限状态变量。图1图示了使用渲染器的可编程管线的结构。顶点渲染器110接收用户定义的 属性变量,并计算坐标变换和/或光照。顶点渲染器110的输出由光栅化器120变换为 光栅格式。片断渲染器130执行诸如纹理计算(即,计算、操作)或调色的处理。片断 渲染器130的输出发送至帧缓冲器140,以便被处理以进行显示。由于固定管线和可编程管线之间的差异,所以OpenGL ES 2.x不与OpenGL ES
1.x后向兼容。可编程管线能够向用户提供灵活性,而固定管线在处理速度方面有优势。并非图形场景中包括的全部对象都需要渲染器。由此,可以基于OpenGLES 1.x 规范而不是OpenGL ES 2.x来表达不要求壮观、华丽图形效果的场景部分、或要求快速计 算处理的部分。由此,本说明书中描述的技术、设备、和系统能够用来支持可编程管线 和固定管线二者。通过支持可编程和固定管线二者,硬件尺寸和功率使用能够对于具体 移动环境而降低并有效率。下面描述的技术、设备、和系统能够实现为用于处理诸如Direct3D、OpenGL, OpenGL ES等等的不同3D图形API (应用编程接口)的硬件和/或软件。OpenGL ES 1.x 可以包括OpenGL ES 1.0、1.1、1.5的至少一个版本。OpenGL ES 2.x可以包括OpenGL ES 2.0。出于阐释性目的,OpenGLES 1.x在本说明书中描述为支持固定管线的图形 API,而OpenGL ES 2.x描述为支持可编程管线的图形API。本说明书中描述的技术、设 备、和系统能够应用于支持固定管线或可编程管线的其它图形API。下面的文档的内容通过引用而并入于此“OpenGL ES 1.1 规范”,该规范能够作为 http://www.khronos.org/registry/gles/ specs/1.l/es_full_spec.1.1.12.pdf 而获得;以及“OpenGLES 2.0 规范”,该规范能够作为http://www.khronos.org/registry/gles/ specs/2.0/es_full_spec_2.0.23.pdf 而获得。图2是用于实现3D图形处理的计算机装置的示例性示意框图。计算机装置 200可以是诸如移动电话、个人数字助理(PDA)、控制台、移动个人计算机等等的移动装 置。计算机装置200包括中央处理单元(CPU) 210、存储器220、图形处理器230、及接 口单元240。计算机装置200的各个元件可以经由系统总线290而连接。CPU 210能够 运行软件应用。存储器220存储CPU 220所使用的应用和数据。图形处理器230执行3D图形处理。图形处理器230可以处理支持固定管线的图 形API和/或支持可编程管线的图形API。例如,图形处理器230可以处理支持OpenGL ES 1.x和/或OpenGL ES 2.x的API。关于FIGS X来在下文公开图形处理器230的详细操作。图3是根据本说明书实施例的图形处理器的示例性示意框图。图形处理器300 包括API选择器310、固定管线代码生成器330、渲染器管线代码生成器340、及渲染器 管线360。
7
API选择器310接收API,并确定所接收的API是否支持固定管线和/或可编程 管线。当确定所接收的API支持固定管线时,API选择器310把固定管线支持API发送 至固定管线代码生成器330。当确定所接收的API支持可编程管线时,API选择器310把 可编程管线支持API发送至渲染器管线代码生成器340。固定管线代码生成器330把支持固定管线的API转换为能够由渲染器管线360识 别的微代码(即,第一微代码)。所转换的第一微代码标识渲染器管线360要执行的操 作。例如,固定管线代码生成器330可以基于OpenGLESl.x来把该API转换为基于渲染 的微代码。渲染器管线代码生成器340把支持可编程管线的API转换为能够由渲染器管线 360识别的其它微代码(即,第二微代码)。所转换的第二管线微代码标识渲染器管线 360要执行的另一操作。例如,渲染器管线代码生成器340可以基于OpenGL ES 2.x来把 该API转换为基于渲染器的微代码。当固定管线代码生成器330所生成的第一微代码和/或渲染器管线代码生成器 340所生成的第二微代码在渲染器管线360中执行时,危险控制器350检查可能导致停止 的危险。当危险发生时,危险控制器350执行处理来抑制停止。S卩,在生成这样的危险 的情况下,危险控制器350可以对第一和第二微代码进行重排序、转发和/或互锁。渲染器管线360通过抽取(fetch)、解码、和执行第一和第二微代码的处理来处 理渲染器程序。如图1所示,渲染器管线360可以包括顶点渲染器和片断渲染器。顶点 渲染器接收各个顶点和用来计算所述顶点所需要的常数,计算坐标变换和光照,并输出 变换的值。所变换的值可以经受剪切和光栅化处理,其然后输入至片断渲染器。片断渲 染器处理纹理操作和调色。支持可编程管线的OpenGL ES 2.x基本上使用渲染器程序。由此,渲染器管线 代码生成器340能够生成用于渲染器管线360的第二微代码。根据支持固定管线的OpenGL ES 1.x来生成基于渲染器的微代码并不简单。只 要对象的属性改变为支持OpenGL ES 1.x,编译就能够实时地执行。然而,这将要求硬件 的附加代码存储器。当仅仅单个代码存储器被选择来使用时,只要从OpenGL ES 2.x到 OpenGL ES 1.x禾Π /或从OpenGL ES 1.x到OpenGL ES 2.x的转换发生时,就将生成开销 来删除先前代码存储器的命令,并插入新编译的命令。附加代码存储器或移动环境中开销的增加将伴随着硬件尺寸和附加功耗的增 加。如此,图形处理器300应当被设计为具有小硬件、低功耗、和高性能。图4是根据本说明书实施例的固定管线代码生成器的示例性示意框图。固定 管线代码生成单元330包括状态单元331、代码生成器332、代码缓冲器333、和控制器 334。状态单元331解析输入对象的属性,并且根据所解析的属性来输出状态信息。 状态单元331利用有限状态机、基于用户定义的属性来改变状态。每个状态可以包括多 个子状态。代码生成器332基于状态信息来生成微代码。每个状态输入至微代码多路复用 器(未示出),至少一个微代码从该微代码多路复用器选择性地输出。单个微代码可以具 有64位。
代码缓冲器333存储代码生成器332生成的微代码,并且基于来自控制器334的 指令来把所存储的微代码发送至渲染器。控制器334管理状态单元331、代码生成器332、和代码缓冲器333。控制器334 可以基于对象的属性来控制状态单元331的状态的改变或保持。如在本说明书中描述的固定管线代码生成单元330可以具有常规代码存储器的 仅仅5%的尺寸。由此,硬件的尺寸和功耗能够降低。现在,将通过实质的示例更详细地描述固定管线代码生成单元330的操作。图5图示了基于属性的状态的示例。基于输入的属性,当前的状态改变为初始 状态、顶点状态、纹理状态、光照状态、和雾化状态中的至少一个。每个状态可以包括 五十(50)到一百七十(170)个子状态。例如,考虑OpenGL ES 1.1规范中的雾化状态。当被使能时,雾化状态使用混
合因子f来混合雾化色彩与光栅化片断的后纹理色彩。此因子f根据以下三个等式之一来 计算数学式1[数学.1]
权利要求
1.一种用于处理3D图形的图形处理器,包括固定管线代码生成器,用于把支持固定管线的应用编程接口(API)转换为第一微代码;渲染器管线代码生成器,用于把支持可编程管线的API转换为第二微代码;以及 与固定管线代码生成器和渲染器管线代码生成器相通信的渲染器管线,用于通过使 用渲染器程序来处理第一和第二微代码中的至少一个。
2.根据权利要求1的图形处理器,还包括与固定管线代码生成器和渲染器管线代码生成器相通信的API选择器,用于接收输 入的API,并确定所接收的输入API是否支持固定管线或可编程管线。
3.根据权利要求1的图形处理器,其中,所述渲染器管线包括顶点渲染器和片段渲染器。
4.根据权利要求2的图形处理器,其中,所述固定管线代码生成器包括状态单元,用于解析所接收的输入API的对象的属性,并基于所解析的属性来输出 状态信息;代码生成器,用于基于输出的状态信息来生成第一微代码;以及 代码缓冲器,用于存储第一微代码。
5.根据权利要求1的图形处理器,还包括与固定管线代码生成器和渲染器管线代码生成器相通信的危险控制器,用于检查第 一和第二微代码中的至少一个的处理顺序和执行时间,以便标识指示停止的危险的发生 并响应于该危险而执行处理。
6.根据权利要求5的图形处理器,其中,所述危险控制器包括危险检查器,用于检查每个微代码的处理顺序和执行时间,以检查危险是否已经发 生;以及重排序单元,用于对产生危险的微代码的处理顺序重排序。
7.根据权利要求6的图形处理器,其中,所述危险控制器还包括转发单元,用于转发产生危险的微代码的先前微代码的结果值,以用于任何其它微 代码的执行。
8.根据权利要求1的图形处理器,其中,所述支持固定管线的API包括OpenGLES 1.x,而所述支持可编程管线的API包括OpenGL ES 2.x。
9.一种由用于处理3D图形的图形处理器执行的方法,包括把支持固定管线的应用编程接口(API)转换为能够由支持可编程管线的渲染器识别 的第一微代码;以及处理所转换的第一微代码,以处理3D图形。
10.根据权利要求9的方法,还包括把支持可编程管线的API转换为能够由渲染器管线识别的第二微代码。
11.根据权利要求10的方法,其中,把支持固定管线的API和支持可编程管线的API 转换为第一和第二微代码的步骤包括基于输入的API的对象的属性来获取状态信息;以及 基于所获取的状态信息来生成第一和第二微代码。
12.根据权利要求10的方法,其中,把支持固定管线的API和支持可编程管线的API 转换为第一和第二微代码的步骤还包括检查每个微代码,以确定危险是否已经发生以致停止随后微代码的执行。
13.根据权利要求12的方法,其中,把支持固定管线的API和支持可编程管线的API 转换为第一和第二微代码的步骤还包括当确定危险已经发生时,重排序产生危险的微代码。
14.根据权利要求12的方法,其中,把支持固定管线的API和支持可编程管线的API 转换为第一和第二微代码的步骤还包括当确定危险已经发生时,把产生危险的微代码的先前微代码的结果值转发到不同的 微代码。
15.—种计算装置,包括 中央处理单元(CPU);以及图形处理器,与该CPU耦接来处理3D图形,其中,所述图形处理器包括 固定管线代码生成器,用于把支持固定管线的API转换为第一微代码; 渲染器管线代码生成器,用于把支持可编程管线的API转换为第二微代码;以及 与固定管线代码生成器和渲染器管线代码生成器相通信的渲染器管线,用于接收第 一和第二微代码中的至少一个,并处理渲染器程序。
16.根据权利要求15的计算装置,其中,所述图形处理器包括与固定管线代码生成器和渲染器管线代码生成器相通信的API选择器,用于接收输 入的API,并确定所接收的输入API是否支持固定管线或可编程管线。
17.根据权利要求15的计算装置,其中,所述渲染器管线包括顶点渲染器和片段渲染ο
18.根据权利要求15的计算装置,其中,所述固定管线代码生成器包括状态单元,用于解析输入的API的对象的属性,并基于所解析的属性来输出状态信息;代码生成器,用于基于输出的状态信息来生成第一微代码;以及 代码缓冲器,用于存储第一微代码。
19.根据权利要求15的计算装置,其中,所述图形处理器还包括与固定管线代码生成器和渲染器管线代码生成器相通信的危险控制器,用于检查第 一和第二微代码中的至少一个的处理顺序和执行时间,以便标识指示停止的危险的发生 并响应于该危险而执行处理。
20.根据权利要求19的计算装置,其中,所述危险控制器包括危险检查器,用于检查每个微代码的处理顺序和执行时间,以检查危险是否已经发 生;以及重排序单元,用于对产生危险的微代码的处理顺序重排序。
全文摘要
提供了用于处理3D图形的技术、设备、和系统。一种图形处理器包括固定管线代码生成器,用于把支持固定管线的应用编程接口(API)转换为第一微代码;渲染器管线代码生成器,用于把支持可编程管线的API转换为第二微代码;以及渲染器管线,用于通过使用渲染器程序来处理第一或第二微代码。
文档编号G06T15/00GK102016798SQ200980116416
公开日2011年4月13日 申请日期2009年3月11日 优先权日2008年3月11日
发明者朴贞爱, 禹正皓, 禹炫在 申请人:韩国科亚电子股份有限公司, 韩国科学技术院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1