专利名称:在图形系统中使用二级处理器的系统和方法
技术领域:
本发明涉及图形处理系统中的并行处理,且更特定来说,涉及结合例如中央处理 单元和图形处理单元的其它处理单元使二级处理器的使用同步以并行执行图形处理,包括 由此二级处理器处理的数据重新整合到图形处理管线中。
背景技术:
图形处理单元(GPU)是用以产生用于在显示装置上显示的计算机化图形的专用 图形再现装置。GPU通常与通用中央处理单元(CPU) —起使用以处理图形图像数据,例如, 三维计算机化图形图像数据。在此情况下,GPU可实施多个基本图形操作以比使用CPU绘 制用于在显示装置上显示的图像更快地建立用于在显示装置上显示的三维图像。通常,GPU 包括在硬件中实施某数目的复杂算法的硬件。典型GPU接收图像几何图形且使用管线方法来产生可经输出(例如)以用于在显 示装置上显示的图形。典型图形管线包括并行操作的多个级,来自一个级的输出可能用于 管线中的另一级处。举例来说,典型图形管线包含顶点着色器(vertex shader)、图元装配 器、视口变换、图元设置,光栅化、隐藏图元和像素拒收、属性设置、属性内插法和片段着色 器级。顶点着色器应用于图像的图像几何图形且产生图像几何图形内的顶点坐标和顶 点的属性。顶点属性包括(例如)与顶点相关联的色彩、法线和纹理坐标。图元装配器基于 图像几何图形从顶点形成图元,例如,点、线和三角图元。可使用变换(例如,将图元从规格 化装置空间变换到屏幕空间的视口变换)将所形成的图元从一个空间变换到另一空间。图 元设置可用以确定图元的面积、边缘系数,且执行遮挡剔除法(occlusionculling)(例如, 背面剔除法),和3-D剪辑操作。光栅化基于图元内的顶点的XY坐标和包括于图元中的像素的数目将图元转换为 像素。隐藏图元和像素拒收使用图元和/或像素的ζ坐标来确定和拒收经确定为隐藏的 那些图元和像素(例如,位于图像帧中的另一图元或像素后的图元或像素、透明图元或像 素)。属性设置确定属性梯度,例如,对于与图元内的像素相关联的属性,在水平(X)方向或 垂直(Y)方向上移动的图元内第一像素处的属性值与第二像素处的属性值之间的差。属性 内插法基于所确定的属性梯度值在图元内的像素上内插属性。所内插的属性值经发送到片 段着色器以用于像素再现。片段着色器的结果可经输出到后处理块和帧缓冲器以用于经处 理的图像在显示装置上的呈现。促进图形管线处理以实现增加的处理量为有益的。已努力通过优化实施图形管线 的一部分的软件来增加处理量。然而,此方法为高成本的,因为其通常需要大量程序员的工 作和时间来产生优化的程序代码。可使用专用硬件实现增加的处理量。然而,此方法涉及 专用硬件的额外成本,所述专用硬件仅可用于专用目的。
发明内容
本发明设法解决此项技术中的缺点和提供图形图像处理的效率以使用二级处理 单元来执行图形处理管线中的图形处理以补充由其它处理单元(例如,图形处理单元和/ 或中央处理单元)执行的处理,以识别与此处理相关联的数据相依性且将由二级处理单元 产生的输出整合于图形处理管线中以满足此数据相依性。揭示一种系统、方法和设备,其中处理单元经配置以对图形管线外的图形管线数 据执行二级处理,其中来自二级处理的输出整合于图形管线中以使得使其可用于图形管 线。作出是否使用二级处理的确定,且在待使用二级处理的情况下,将可包含一个或一个以 上命令的命令流提供到二级处理单元,使得单元可定位且对经缓冲的图形管线数据操作。 管理和监视二级处理以使由二级处理和图形管线中的一个或一个以上处理模块进行的数 据存取同步。根据本发明的实施例,识别与图形处理管线一起使用二级处理单元或二级处理器 的机会,且使图形管线数据可用于二级处理单元。由二级处理单元产生的图形管线数据经 重新整合于图形管线中。借助于非限制性实例,二级处理器为数字信号处理器,其经配置为 照明模块以由对来自图形管线的数字信号处理器可用的色彩数据产生点亮色彩。如此,本发明的实施例提供使用可用二级处理器平衡处理负载的能力。可能原本 闲置的二级处理器可用以促进由图形处理单元执行的图形管线处理和/或由中央处理单 元或其它处理单元执行的处理。由此,举例来说,可能原本等待处理资源的操作可被引导到 可用二级处理器,此产生更快的处理量。有利的是,已确定使用二级处理器比未使用二级处 理器的处理存在处理量的增加,例如,如按每秒帧来测量。另外,本发明的实施例可使用从 二级处理反馈的信息来执行负载平衡。举例来说,反馈可用以确定二级处理器何时已达到 特定阈值处理水平。当确定二级处理器达到阈值处理容量时,处理可被引导到另一处理单 元,例如中央处理单元。另外,本发明的实施例提供利用处理单元用于不同于其一级处理目的的能力以执 行一个或一个以上其它第二功能(如果此处理单元可用)。可能原本闲置的此硬件(例如, 处理单元)的使用产生硬件的更有效率的使用。根据本发明的一方面,一种方法包含响应于绘制请求确定处理单元是否可用于 辅助图形管线处理,处理单元具有一级处理功能;请求二级处理器的分配以执行不同于处 理单元的一级处理功能的二级处理功能以辅助图形管线处理;以及在分配请求成功的情况 下使图形管线数据可用于处理单元;监视由处理单元进行的处理的状态;以及将由处理 单元输出的数据整合于图形管线数据中。根据本发明的另一方面,提供存储程序代码的计算机可读存储器媒体,所述程序 代码包含用于执行以下操作的程序代码确定处理单元是否可用于辅助图形管线处理,处 理单元具有一级处理功能;请求二级处理器的分配以执行不同于处理单元的一级处理功能 的二级处理功能以辅助图形管线处理;以及在分配请求成功的情况下使图形管线数据可 用于处理单元;监视由处理单元进行的处理的状态;以及将由处理单元输出的数据整合于 图形管线数据中。根据本发明的另一方面,一种设备包含图形处理单元,其经配置以实施图形管 线;以及二级处理管理器,其耦合到图形处理单元,二级处理管理器经配置以确定耦合到所述二级处理管理器的处理单元是否可用于辅助图形管线处理,所述处理单元具有一级处 理功能;请求所述二级处理器的分配以执行不同于所述处理单元的一级处理功能的二级处 理功能以辅助图形管线处理;以及在分配请求成功的情况下,二级处理管理器进一步经配 置以使图形管线数据可用于所述处理单元;监视由所述处理单元进行处理的状态;以及 将由处理单元输出的数据整合于图形管线数据中。根据本发明的又一方面,一种设备包含图形处理单元,其经配置以实施图形管 线;以及二级处理管理装置,其耦合到图形处理单元,二级处理管理装置包含用于确定耦 合到所述二级处理管理器的处理单元是否可用于辅助图形管线处理的装置,所述处理单元 具有一级处理功能;用于请求所述二级处理器的分配以执行不同于所述处理单元的一级处 理功能的二级处理功能以辅助图形管线处理的装置;在分配请求成功的情况下,所述二级 处理管理装置进一步包含用于使图形管线数据可用于所述处理单元的装置;用于监视由 所述处理单元进行处理的状态的装置;以及用于将由处理单元输出的数据整合于图形管线 数据中的装置。已提供此简要概述,使得可快速理解本发明的本质。可通过参考以下结合附图对 本发明的优选实施例的详细描述而获得本发明的更完全理解。
参考结合附图进行的以下描述,将明白以上提及的本发明的特征和目的,其中相 同参考数字表示相同元件,且其中图1为说明用于根据本发明的一个或一个以上实施例使用的示范性装置的框图。图2说明包含根据本发明的一个或一个以上实施例而使用的组件和组件间通信 的框图。包含图3A和图3B的图3说明实施根据本发明的一个或一个以上实施例的二级处 理管理模块的程序代码处理流程。图4说明实施根据本发明的一个或一个以上实施例的二级处理接口模块的程序 代码处理流程。图5说明用于根据本发明的一个或一个以上实施例使用的同步程序代码处理流程。包含图6A和图6B的图6提供根据本发明的一个或一个以上实施例的同步实例。图7提供经转发到根据本发明的一个或一个以上实施例的二级处理模块的配置 消息中所含有的信息的实例。图8提供可存储于根据本发明的一个或一个以上实施例的反馈216A中的信息的 实例。图9根据本发明的一个或一个以上实施例说明命令流和命令流中所包括的一个 或一个以上命令的示范性内容。
具体实施例方式现将参看前述图式论述本发明的特定实施例,其中相同参考数字指代相同组件。根据一个或一个以上实施例,揭示一种系统、方法和设备,其中二级处理器单元经 配置以对图形管线数据操作,来自二级处理器的输出经整合于图形管线中,使得使输出可用于在图形管线中执行的一个或一个以上模块。根据这些实施例,作出是否使用二级处理 器的确定,且在待使用二级处理器的情况下,将命令流提供到二级处理器。举例来说,命令 流可包含一个或一个以上命令。经提供到二级处理器的每一命令含有识别当前命令的信 息。在存在另一命令的情况下,当前命令含有识别下一命令的信息。在当前命令为最后一 个命令的情况下,当前命令含有将当前命令识别为最后一个命令的信息。命令流将信息提 供到二级处理器,所述信息可包括(但不限于)输入和/或输出数据存储位置,和反馈存储 位置。根据一个或一个以上实施例,二级处理器为数字信号处理器(DSP),其可配置以执 行一级处理,例如,处理音频和/或视频数据,且其可经配置以执行二级处理。根据一个或 一个以上此些实施例,DSP经共享以使得其可用以执行音频和/或视频数据处理,且当可用 时可辅助图形管线处理,例如,不处理音频/视频数据。仅出于简单的目的,参考如DSP的 二级处理器来描述本文中所揭示的实施例。应明白,任何处理器或处理单元可与本发明的 实施例一起使用。图1为说明用于根据本发明的一个或一个以上实施例使用的示范性计算装置100 的框图。示范性计算装置100可包含个人计算机、桌上型计算机、膝上型计算机、工作站、视 频游戏平台或控制台、蜂窝式或卫星无线电电话、室内电话、因特网电话、例如便携式视频 游戏装置或个人数字助理的手持式装置、个人音乐播放器、服务器、中间网络装置、大型计 算机,或输出图形信息的另一类型的装置。在图1的实例中,计算装置100包括中央处理单元(CPU) 102、GPU 104、DSP 108, 作为二级处理器的实例,显示单元124,和存储器模块116,例如,一个或一个以上随机存取 存储器(RAM)存储器模块。计算装置100的组件(例如,CPU 102、GPU 104、DSP 108和存 储器模块116)可使用可包含任何类型的总线的总线106或现在已知或稍后发现的装置互 连来通信。CPU 102可包含通用或专用微处理器。举例来说,CPU 102可包含由具有位于世 界各处的办公室,包括Irvine,CA,且母公司为Cambridge,UK的ARM Holdings PLC的ARM Inc.设计的精简指令集计算机(RISC)处理器。借助于另一非限制性实例,CPU 102可包含 由 Santa Clara, California 的 Intel Corporation 提供的 Core2 处理器或另一类型的微 处理器。GPU 104为专用图形计算装置。举例来说,GPU 104可为由Sunnyvale,CA的AMD 提供的Imageon媒体协处理器或另一类型的图形处理单元。举例来说,GPU 104可经集成 于计算装置100的主板中,可存在于安装在计算装置100的主板中的端口中的图形卡上,或 可另外经配置以与计算装置100互操作。举例来说,耦合到计算装置100的显示单元124可包含监视器、电视、投影装置、液 晶显示器、等离子体显示面板、照明二极管(LED)阵列、阴极射线管显示器、电子纸、表面传 导电子发射型显示器(SED)、激光电视显示器、纳米晶体显示器,或另一类型的显示单元。在 图1的实例中,显示单元124可为计算装置100的一部分。举例来说,显示单元124可为移 动电话的屏幕。或者,举例来说,显示单元124可在计算机装置100外部且可经由有线或无 线通信连接或其它连接与计算装置100通信。借助于非限制性实例,显示单元124可为经 由有线或无线连接而连接到个人计算机的计算机监视器或平板显示器。借助于非限制性实例,软件应用程序110可包含能够经由CPU 102执行的任何软 件应用程序,例如视频游戏、图形用户接口引擎、计算机辅助的工程设计程序或艺术应用程序,或使用二维(2D)或三维(3D)图形的另一类型的软件应用程序。借助于非限制性实例, 当CPU 102执行软件应用程序110时,软件应用程序110可调用图形处理应用编程接口 (API) 112 的子例程,例如 OpenVG API、OpenGL API、Direct3D API、图形装置接口(GDI)、 Quartz、QuickDraw中的任何一者或一者以上或另一类型的2D或3D图形处理API。根据至少一个实施例,当软件应用程序110调用图形处理API 112的子例程时,图 形处理API 112调用GPU驱动程序114的一个或一个以上子例程,其经由计算装置100上 的CPU 102执行。举例来说,GPU驱动程序114可包含提供图形处理API 112与GPU104之 间的接口的软件和/或固件指令的集合。当图形处理API 112调用GPU驱动程序114的子 例程时,GPU驱动程序114公式化且发出致使GPU 104产生可显示图形信息的命令。举例来 说,当图形处理API 112调用GPU驱动程序114的子例程以绘制,或再现一批图形图元时, GPU驱动程序114向GPU 104提供GPU 104使用其来再现所述批图形图元的处理配置。举 例来说,GPU 104再现所述批图形图元,且输出图形图元的光栅图像。由GPU驱动程序114公式化的命令可识别GPU 104待使用以执行命令的图形处理 配置,所述配置可识别待由GPU 104执行的指令的集合、状态寄存器值的集合,和GPU104执 行命令可能需要的其它类型的信息。在GPU驱动程序114将图形处理配置存储于存储器116中的情况下,GPU驱动程 序114可参考存储器模块116中对应于由GPU驱动程序114公式化的命令中的图形处理配 置的存储位置。当GPU 104接收命令时,GPU 104可从存储器116检索从GPU驱动程序114 接收的命令中所参考的图形处理配置。根据至少一个实施例,GPU 104的命令解码器(未图示)解码来自GPU驱动程序 114的命令且配置GPU 104的处理元件中的一者或一者以上以使用从存储器116中检索到 的数据(例如,位置、色彩、纹理等)执行命令。根据一个或一个以上实施例,GPU 104的处理元件或模块实施图形管线。根据此些 实施例,GPU 104的处理元件可以并行模式实施图形管线,使得处理元件对数据并行操作, 来自一个处理元件的输出用作对另一处理元件的输入。借助于非限制性实例,第一处理元 件对初始输入数据的第一集合执行第一图形操作且将中间结果的第一集合输出到第二处 理元件。举例来说,初始输入数据可包含对应于一个或一个以上顶点的数据,所述数据可包 含坐标和属性数据。顶点坐标基于(例如)具有X、Y和Z (宽度、高度和深度)坐标的四维 坐标系统识别图像内的位置,且W坐标形成均勻坐标(homogenouscoordinate)。举例来说, 顶点属性可包括与顶点相关联的色彩、法线和纹理坐标。第二处理元件可对由第一处理元 件输出的中间结果的第一集合执行另一图形操作,且将中间结果的第二集合输出到第三处 理元件等。当第二处理元件执行第二图形操作时,一级处理元件可对初始输入数据的第二 集合执行第一图形操作。GPU 104和其处理元件可以此方式继续,直到最后一个处理元件向存储器模块 116中的一个或一个以上缓冲器输出像素对象,或向某一其它目的地输出此新像素对象为 止。像素对象为描述像素的数据。每一像素对象可指定多个色彩值,且可指定像素的透明 度水平。在一些情形下,像素对象可以第一色彩格式指定第一色彩且以第二色彩格式指定 第二色彩。根据本发明的一个或一个以上实施例,GPU 104的处理模块可包括由GPU 104执行的软件、专用硬件模块和/或经配置以执行GPU 104的处理模块中的一者或一者以上的 可编程处理模块。举例来说,GPU 104的处理模块实施图形管线,其可包含顶点着色器、图 元装配器、视口变换、图元设置、光栅化、隐藏图元和像素拒收、属性设置、属性内插法和片 段着色器级。本发明的实施例可向DSP 108或其它二级处理器指派第二用途以操作用于图形 管线中的数据。根据一个或一个以上实施例,第二用途不同于二级处理器的第一用途。举 例来说,DSP 108可用以处理音频和视频数据,且可进一步用以实施对图形管线数据操作的 一个或一个以上照明模块。如此,二级处理器可补充另外用以实施图形管线的资源。根据本发明的实施例,当确定二级处理器未用于其一级目的时,使用二级处理器。 举例来说,在确定DSP 108为闲置,S卩,未处理音频或视频数据的情况下,进行请求以结合 图形管线分配DSP 108以用作二级处理器。在此情况下,DSP 108可用以对图形管线数据 执行某一形式的二级处理(例如,照明)或其它处理(例如,贴皮)等。图2说明包含根据本发明的一个或一个以上实施例而使用的组件和组件间通信 的框图。二级处理管理模块(SPMM)或二级处理管理器202结合一个或一个以上二级处理 接口模块(SPIM)管理二级处理。根据一个或一个以上实施例,SPMM和SPIM模块为单独模 块。或者,SPMM和SPIM模块中的一者或一者以上经组合以形成单一模块。作为又一替代 方案,SPMM和SPIM模块中的一者或一者以上可与其它程序代码整合。借助于非限制性实 例,SPIM可与执行二级处理的程序代码整合,和/或SPIM可与执行图形管线的模块的程序 代码整合。SPMM 202确定是否可能使用二级处理器,向二级处理器提供包含一个或一个以 上命令的命令流,以及使由二级处理和一个或一个以上图形管线处理模块进行的数据存取 同步,其中由二级处理器操作的图形管线数据整合于由图形管线处理的数据中。在图2中所示的实例中,DSP 108用作二级处理器。应明白,根据本发明的一个或 一个以上实施例,任何处理单元可用作二级处理器。当应用程序Iio发出绘制调用时,SPMM 202接收通知220。SPMM 202分析由应用程序110提供的绘制调用,和相关联的信息,以确 定绘制调用的处理是否包括可由二级处理器执行的处理。举例来说,SPMM202确定绘制调用 的处理是否涉及一个或一个以上照明模型对色彩数据的应用。借助于另一非限制性实例, SPMM 202可检查绘制调用以确定是否应用贴皮。在SP匪202确定可由二级处理器执行处理的情况下,SPMM 202试图分配二级处 理器以用于二级处理。举例来说,SPMM 202与DSP 108的实时操作系统(RTOS) 206通信222 以请求DSP 108。通信222包括由RTOS 206使用的回调以通知SP匪202 DSP108是否可 用,例如,SPMM 202的分配请求是否成功。如果RTOS 206确定DSP 108可用,例如,不用于 其一级目的,则RTOS 206加载DSP模块208,其包含二级处理模块208B和二级处理接口模 块(SPIM)208A。二级处理模块208B包含用以执行二级处理的程序代码。SPIM 208A包含经配置 以与SPMM 202介接的程序代码,例如经由通信路径228将反馈提供到存储器模块116中的 反馈存储器区域216A。SPMM 202经由通信路径226将信息提供到SPIM 208A,所述信息识 别反馈区域216A、输入数据和输出数据的存储位置,例如,数据缓冲器216C中的位置。另 外,SPIM 208A将信息提供到处理模块208B,所述信息可由处理模块208B使用以执行二级 处理,例如,照明。
根据一个或一个以上实施例,SPMM 202使用通信路径226以提供由处理模块208B 使用的与被称作命令的流或命令流的命令集合相关联的信息。根据一个或一个以上此些实 施例,SPMM 202将初始消息传送到SPIM 208A,所述消息包含指向存储于存储器模块116的 命令流区域216B中的命令流的第一命令的指针,和指向存储器模块116中的反馈区域216A 的指针。简要来说,命令流中的命令包括识别输入和输出数据在数据缓冲器216C中的位 置、反馈216A的位置、指向流中的下一命令的指针或当前命令为最后一个命令的指示的信 息,和其它信息,例如在DSP模块208执行照明的情况下使用的照明模型。下文更详细地描 述命令的内容。SPMM 202经由通信路径224将每一命令加载到命令流216B中且经由通信路径 226将指向命令流216B中的第一命令的指针转发到SPIM 208A且将由SPMM 202发送的初 始消息转发到SPIM 208A。此后,SPIM 208A使用第一,或当前命令中含有的信息来定位命 令流216B中的下一命令,或将第一 /当前命令识别为最后一个命令。SPIM 208A可基于命 令流中的给定命令中含有的信息和由SPMM 202经由通信路径226提供的初始信息存取反 馈216A、命令流216B和/或数据缓冲器216C。举例来说,包括SPIM 208A和处理模块208B 的DSP模块208可经由通信路径228存取存储器116的一个或一个以上区域。数据缓冲器216C中所含有的数据由处理模块208B和图形管线处理模块218两者 使用。在模块208B与模块218中的至少一者之间存在至少一个数据相依性的情况下,SPMM 202基于存储于反馈216A中的由SPIM 208A提供的信息和由结合图形管线处理模块218操 作的SPIM 214所提供的信息使由模块208B和218进行的数据存取同步。举例来说,SPMM 202可使用反馈216A中的信息以通知SPIM 214点亮的色彩数据可用于由一个或一个以上 图形管线处理模块218处理。借助于另一非限制性实例,一旦SPMM202确定对应于由剪辑 模块所需的所有图元的色彩数据已由处理模块208B处理,则可使点亮的色彩数据可用于 图形管线处理模块218的剪辑模块。SPMM 202和SPIM 214可经由通信通路232通信,例 如,SPIM 214通知SPMM 202图形管线处理模块218中的一者或一者以上准备好处理数据, 且/或SPMM 202通知SPIM 214数据可用于由图形管线处理模块218处理。另外,SPMM 202可使用反馈区域216A中的信息以确定何时可用命令流中的新命 令盖写命令流216B中的区域。借助于非限制性实例,反馈216A包含识别由二级处理模块 208B完成的最新命令的信息。在二级处理模块208B不再存取命令流216B中的命令,且 SPMM 202确定不再需要命令的情况下,SPMM 202可选择使用所述区域以用于命令流中的 新命令。SPMM 202可能确定在图形管线已完成处理对应于命令的图形管线数据的情况下不 再需要命令。根据一个或一个以上实施例,SPMM 202、SPIM 208A和SPIM 214包含由一个或一 个以上处理单元或处理器执行的程序代码。此些处理单元可包括(但不限于)CPU 103、DSP 108和GPU 104。借助于非限制性实例,SPMM 202和SPIM 214包含由CPU 103执行的程序 代码,且SPIM 208A包含由DSP 108执行的程序代码。借助于另一非限制性实例,SPMM 202 的程序代码由CPU 103执行,SPIM 214包含由GPU 104执行的程序代码且SPIM 208A包含 由DSP 108执行的程序代码。然而,应明白,任何一个或一个以上处理单元可用以实施SPMM 202,SPIM 208A和SPIM 214的程序代码。借助于另一非限制性实例,总线106可用以促进 SPMM 202、RTOS 206、包含SPIM 208A和处理模块208B的DSP模块208、存储器模块116、SPIM 214与图形管线处理模块218之间的通信路径220、222、224、226、228、230和232和/ 或通信。举例来说,通信路径230可由图形管线处理模块218中的一者或一者以上使用以 存取存储于数据缓冲器216C中的图形管线数据。包含图3A和图3B的图3说明实施根据本发明的一个或一个以上实施例的 SPMM202的程序代码处理流程。在步骤302处,SPMM 202接收绘制调用,例如,由应用程序 110对图形API 112进行的调用。在步骤304处,SPMM 202检查绘制调用以识别使用二级 处理的机会。举例来说,SPMM 202可检查绘制调用以识别应用程序110是否请求一个或一 个以上照明模型应用于色彩数据。如果SPMM 202在步骤306处根据绘制调用的检查确定 不存在二级处理机会,则处理在步骤312处继续以通知图形管线(例如,SPIM 214)不存在 二级处理。举例来说,此通知消除SPIM 214协调由图形管线处理模块218对存储于数据缓 冲器216C中的数据进行存取的需要。如果SPMM 202在步骤306处确定存在使用二级处理的机会,则处理在步骤308处 继续,其中SPMM 202请求二级处理器。举例来说,SPMM 202将请求发送到DSP 108的RTOS 206以加载DSP模块208,且提供用于RTOS 206的回调以通知SPMM 202SPMM 202的请求是 成功还是失败。如果在步骤310处确定RTOS 206通知SPMM 202请求失败,则处理在步骤 312处继续以通知图形管线不存在二级处理。在此情况下且根据一个或一个以上实施例, SPMM 202可通知CPU 102执行照明。如果RTOS 206通知SPMM 202 二级处理器的请求成功,则处理在图3B的步骤332 处继续。在步骤322处,SPMM 202准备命令流中的第一命令且将第一命令存储在命令流 216B中。根据一个或一个以上实施例,SPMM 202使用链接列表方法以将命令流传送到二 级处理器。借助于非限制性实例,每一命令含有指向下一命令的指针。借助于另一非限制 性实例,命令可含有指向命令流中的任何命令的指针,例如指向命令流中的前一命令的指 针。在当前命令为最后一个命令的情况下,指向下一命令的指针含有一值,例如,十六进制 值OxFFFFFFFF,其将当前命令识别为最后一个命令。根据一个或一个以上实施例,SPMM 202在其将命令存储于命令流216B中时可能 不知道是否存在额外命令。在此情况下,SPMM 202将零值存储为指向链接列表中的下一命 令的指针以通知SPIM 208A可能存在额外命令。在模块208B完成与当前命令相关联的处理 的情况下,SPIM 208A考虑刚刚完成的命令中的指针以定位命令流216B中的下一命令(如 果存在)。如果指针经设定为零值,则SPIM 208A知道SPMM 202未更新指针。在此情况下, SPIM 208A可在检查指针前等待一定时期以查看SPMM 202是否已更新指针。如果指针具有 非零值,则SPIM 208A检查所述值以确定其指向命令流216B中的下一命令,或指示所完成 的命令为命令流中的最后一个命令。在后一情况下,SPMM202可在指针中存储一值(例如, 十六进制值OxFFFFFFFF)以通知SPIM 208A在当前命令流中不存在待处理的更多命令,且 DSP 108可用以执行其一级或其它处理。在步骤324处,SPMM 202将含有对应于第一命令的信息的初始消息发送到二级处 理器。由SPMM 202发送到SPIM 208A的消息具有对应于第一命令的信息。由SPMM 202发 送的消息通知二级处理器其可开始处理,且提供信息以定位第一命令。根据本发明的一个 或一个以上实施例,且参看图7,初始消息700包含指向命令流存储器216B中的命令的指 针702、识别命令流存储器216B中的命令的存储区域的大小的信息704,和指向存储器模块216的反馈216A存储区域的指针706。再次参看图3B,在SPMM 202在步骤324处发送通知 命令流中的第一命令的二级处理器的消息之后,SPMM 202处理在步骤326处继续以确定命 令流中是否存在额外命令。如果SPMM 202在步骤326处确定存在待产生用于当前绘制调用的至少一个额外 命令,则处理在步骤328处继续。在步骤328处,SPMM 202准备新命令且在命令流216B中 存储新命令。在步骤330处,SPMM 202设定命令流216B中的紧在前面的命令(例如,第一 命令)中的指针以指向命令流216B中的新命令,例如,指向命令流216B中待存储新命令的 位置。如同第一命令,新命令和任何随后的命令含有指向下一命令(如果下一命令由SPMM 202产生)的指针,或新命令为最后一个命令(如果不存在下一命令)的指示符。根据一个 或一个以上实施例,在初始消息经发送到二级处理器之后,SPMM202和二级处理器的处理模 块(例如,DSP模块208)经由命令流216B和反馈216A进行通信。如此,开销可经最小化, 因为两个处理模块之间不存在发送消息的需要。DSP模块208导航命令流216B中的命令的 链接列表以处理数据,且通过将状态信息写入到存储器模块216的反馈216A而将反馈提供 到SPMM。根据一个或一个以上实施例,DSP模块208相对于SPMM 202和图形管线处理模块 218异步且独立地操作。一旦SPMM 202更新前面的命令中的指针以指向新命令,则处理在步骤326处继续 以确定是否仍待产生任何额外命令。如果不产生,则处理在步骤332处继续以将最后一个 命令中所含有的指针更新为一值(例如,十六进制值OxFFFFFFFF)以通知SPIM 208A所述 命令为当前命令流216B中的最后一个命令,且处理对于当前绘制调用结束。如果存在额外 绘制调用,则处理在步骤322处继续以结合另一绘制调用准备命令流。SPIM 208A提供SP匪202与处理模块208B之间的接口。根据一个或一个以上实 施例,SPIM 208A接收对应于由SPIM 202产生的命令流的信息,促进由处理模块208B执行 的处理,监视处理模块208B的处理状态,且提供关于处理模块208B的处理的反馈。图4说 明实施根据本发明的一个或一个以上实施例的SPIM 208A的程序代码处理流程。在步骤402处,SPIM 208A接收来自SPIM 202的初始化消息。借助于非限制性实 例,SPIM 208A接收初始化消息700,其包括指向命令流216B中对应于第一命令的位置的指 针、识别第一命令的大小(例如,以字节为单位)的信息704,和指向反馈216A区域中的位 置的指针706。在步骤404处,SPIM 208A使用消息700中的信息来定位命令流216B中的 第一命令,且识别当前命令是否为最后一个命令。在步骤406处,SPIM 208A使当前命令中所含有的信息可用于处理模块208B。举 例来说,位置信息(例如,指针和大小信息)用以起始数据移动操作以存取(例如,加载和 /或存储)数据缓冲器216C中的数据。另外,命令可包括数据缓冲器216C中的色彩数据 的位置,例如指向与第一顶点相关联的输入色彩数据的指针,和添加到指针以定位下一顶 点的色彩数据的增量。当前命令可进一步包含指向数据缓冲器216C中的与第一顶点相关 联的输出缓冲器中的位置的指针,以及定位与下一顶点相关联的色彩数据的输出位置的增 量。借助于另一非限制性实例,在处理模块208B执行照明的情况下,当前命令可包括一个 或一个以上照明模型。作为另一非限制性实例,在处理模块208B执行贴皮的情况下,命令 可包括贴皮矩阵。根据一个或一个以上实施例,第一命令可提供照明模型或贴皮矩阵的完 整集合,其中后续命令识别先前命令中指定的照明模型或贴皮矩阵的任何改变。
在步骤408处,SPIM 208A监视处理模块208B的进度,且在步骤410处用识别由 处理模块208B执行的处理的状态的信息来更新反馈216A中的信息。图8提供可存储于根 据本发明的一个或一个以上实施例的反馈216A中的信息的实例。根据一个或一个以上此 些实施例,每一命令识别顶点的有限集合,且一旦处理模块208B已处理与由命令识别的顶 点相关联的顶点数据,则命令被视为完成。反馈216A可包含识别由处理模块208B完成的 最新命令的信息,例如,最后一个命令识别符(10)802,和指向命令流2168中的命令的指针 804。再次参看图4,SPIM 208A在步骤404处继续使用当前命令中的信息来使在处理中 使用的数据可用于处理模块208B,且用二级处理的状态更新反馈216A。如上文所论述且根据一个或一个以上实施例,二级处理器与SPMM 202和图形管 线处理模块218异步且独立地操作。然而,在至少一个情况下,二级处理(例如,由DSP模 块208执行的处理)与由图形管线处理模块218执行的处理同步,使得由二级处理器处理 且待由图形管线处理模块218进一步处理的数据经同步。在此情况下,SPMM 202结合可提 供图形管线处理模块218与SPMM 202之间的接口的SPIM 214而操作,以管理由图形管线 处理模块218进行的数据存取,使得模块218使用已由二级处理器处理的数据。根据一个 或一个以上实施例,SPMM 202和SPIM 214可包含单一模块。图5说明用于根据本发明的一个或一个以上实施例而使用的同步程序代码处理 流程。根据一个或一个以上实施例,图形管线和GPU 104对图元的块操作,图元中的每一者 具有顶点的集合。举例来说,在图元包含三角形的情况下,每一图元具有三个顶点的相关联 集合。图元的块可表示为图元和其顶点的列表。根据一个或一个以上实施例,SPMM 202确 定对于给定图元列表中的图元是否待执行二级处理,且设定图元列表中的值(例如,逻辑 值)以指示二级处理是否与图元列表中所识别的图元一起使用。根据一个或一个以上实施例,图元列表中设定的值可由SPMM 202使用以确定 与待由图形管线处理的图元相关联的数据是否首先由二级处理器处理。在步骤502处, SPMM202存取图元列表中设定的值,且在步骤504处,SPMM 202确定是否正使用二级处理。 如果SPMM 202在步骤504处确定正执行二级处理,则SPMM 202使由图形管线处理模块218 对正由二级处理器处理的数据进行的存取同步,使得二级处理器在使数据可用于模块218 之前完成其对待由图形管线处理模块218进一步处理的数据的处理。借助于非限制性实例,如果图元列表中所存储的值指示未使用二级处理,则由图 形管线处理模块218存取的数据无需与由二级处理模块208B存取的数据同步。在此情况 下,图形管线处理模块218可以异步模式操作,其不涉及使图形管线处理模块218对顶点数 据的使用与由二级处理模块208B使用此顶点数据之间的数据存取同步。在图元列表中所 存储的值指示正使用二级处理,图形管线处理模块218以同步模式操作,以使模块218对顶 点数据的存取与处理模块208B的数据存取同步。如果数据存取待同步,则根据一个或一个以上实施例,SPMM 202在步骤506处使 用由SPIM 208A提供的反馈信息确定处理模块208B的状态。根据一个或一个以上实施例, SPIM 208A将信息存储于反馈216A中,所述信息通过识别由处理模块208B完成的最后一个 图元来识别处理模块208B的处理状态。根据一个或一个以上实施例,图元经指派有连续识 别符,使得SPMM 202能够在步骤508处且基于由SPIM 208A供应的反馈信息确定其识别符等于或小于由SPIM 208A供应的图元识别符的图元已由处理模块208B完成。在步骤510 处,SPMM 202结合SPIM 214允许图形处理模块218存取数据缓冲器216C中所存储的与经 确定为已由处理模块208B处理的图元相关联的数据。包含图6A和图6B的图6提供根据本发明的一个或一个以上实施例的同步实例。 参看图6A,模块604和608提供图形管线处理模块218的实例,其存取数据缓冲器216C中 所存储的数据。在异步模式中,预变换缓冲器602存储顶点数据,其包括位置数据,例如,X、 Y、Z和W坐标数据、纹理数据和色彩数据。预变换缓冲器602中所存储的色彩数据包含点 亮的色彩数据,或已以不同于使用二级处理器的方式经历照明处理的色彩数据。举例来说, 此可为SPMM 202确定二级处理器(例如,DSP 108)不可用于二级处理的情况。在此情况 下,CPU 102可执行照明且将值存储于预变换缓冲器602中。在异步模式中,模型检视变换模块604检索包括点亮的色彩数据的顶点数据,对 非点亮的色彩数据的顶点数据操作且将顶点数据存储于后变换缓冲器606中。在异步模式 中,模型检视变换模块604经指令以传递色彩数据与其它顶点数据。尽管变换模块604未 修改色彩数据,但其从预变换缓冲器602中检索点亮的色彩数据且如所指令将点亮的色彩 数据存储于后变换缓冲器606中,使得色彩数据可用于由图形管线中的随后模块(例如,视 口变换模块608)处理。在图6A中所示的实例中,视口变换模块608存取后变换缓冲器606 以检索由模型检视变换模块614转发的点亮的色彩数据,且在其变换操作中使用点亮的色 彩数据,例如,内插色彩数据。图6B说明涉及处于二级处理同步模式的变换模块604与608和缓冲器602与606 的处理。在图6B中所示的实例中,二级处理器610 (例如,实施处理模块208B的DSP108)从 预变换缓冲器602中检索非点亮的顶点色彩数据以及位置数据。二级处理器610使用所检 索信息连同其它数据(例如,照明模型数据、贴皮矩阵数据等)以处理色彩数据。在照明的 情况下,二级处理器610使用一个或一个以上照明模型和顶点数据,以产生二级处理器610 在使用命令流216B中所含有的信息所识别的位置处存储于后变换缓冲器606中的点亮的 顶点色彩数据。在异步模式中,模型检视变换模块604将色彩数据写入到后变换缓冲器606。然 而,如果变换模块604将色彩数据写入到后变换缓冲器606,则变换模块604可盖写由二级 处理器610写入到缓冲器606的点亮的色彩数据。在同步模式中,模型检视变换模块604 接收通知(例如,来自SPIM 214的通知)以不将色彩数据传递到后变换缓冲器606。通过 作为由模型检视变换模块604写入到后变换缓冲器606的顶点数据的部分的色彩数据之前 述传递,变换模块604避免盖写由二级处理器610写入到后变换缓冲器606的点亮的色彩 数据。在同步模式中,SPIM 214可提供存储于后变换缓冲器606中的数据的状态,使得 视口变换模块608检索包括由二级处理器610输出的点亮的色彩数据的顶点数据。借助于 非限制性实例,SPMM 202和SPIM 214可监视反馈216A以识别二级处理器610是否已处理 与视口变换模块608待处理的图元相关联的顶点,使得模块608处理包括点亮的色彩数据 的顶点数据。举例来说,命令可包括使命令与其顶点正由命令处理的图元列表相关联的信 息。根据一个或一个以上实施例,命令与相关联的图元列表之间存在一一对应,使得一个命 令由二级处理器610使用以处理相关联的图元列表中的所有图元。由此,一旦针对给定命令将处理确定为完成,则相关联的图元列表中的图元将可由视口变换模块608处理。根据一个或一个以上实施例,每一命令被给予一识别符,且以连续次序指派命令 识别符。如此,有可能基于反馈216A中所含有的最后一个命令识别符802信息来确定针对 给定命令的处理是否完成。举例来说,具有等于或小于最后一个命令ID 802中所识别的值 的命令识别符值的命令被视为由二级处理器610完成,而具有大于最后一个命令ID802值 的命令识别符值的命令被视为未由二级处理器610完成。图9根据本发明的一个或一个以上实施例说明命令流和命令流中所包括的一个 或一个以上命令的示范性内容。命令流216B包含一个或一个以上命令900。每一命令900 包含命令900的一个或一个以上信息项。以下提供命令流中的命令900的内容的非限制性 实例,其包括用于与经配置以对顶点操作的程序代码(例如照明或贴皮程序代码)一起使 用的信息。应明白,其它信息可经添加或用以替换以下论述的信息,所述信息可适于与由根 据本发明的一个或一个以上实施例的二级处理器使用的任何程序代码互操作。信息项902和904包含用于与当前命令900 —起使用的识别信息。根据一个或一 个以上实施例,以下信息可用以促进二级处理管理和控制。以下提供此些信息项的实例时戳识别正由二级处理器处理的当前命令。举例来说,SPIM 208A可在反馈213A 中输出此时戳以指示二级处理器当前正处理此命令。图元时戳变量包含用于识别对应于当前命令900的图元列表的时戳。举例来说, 图元时戳的值可用以将命令900映射到给定图元。二级处理器可忽略图元时戳。粒度用于根据一个或一个以上实施例使用的任选变量。粒度变量指示与命令 900相关联的顶点的数目,所述顶点包含与命令900相关联的顶点群组或顶点的子集。根据 一个或一个以上实施例,二级处理器输出信息作为反馈,以指示包含已处理的顶点群组的 顶点的数目。在命令900处理顶点的情况下,粒度指令SPIM 208A在完成多个顶点(例如, 顶点群组)后便提供反馈,所述顶点为与命令900相关联的顶点的子集。使用粒度值,SPIM 208A可在处理每一顶点群组时提供反馈,所述反馈可另外为在二级处理器完成处理与命令 900相关联的所有顶点时由SPIM 208A提供的反馈,由此提供额外和/或更精细水平的反 馈。vertexCount 包含指示待结合当前命令900处理的顶点的数目的值的变量。nextCommandGroupSize 此变量识别下一命令的大小。如果不存在下一链接命令, 则变量可经设定为零。否则,值包含反映下一命令中所含有的字节的数目的值。nextCommandGroupPtr 此变量包含下一命令ID信息904的全部或一部分,其可包 含指向命令流216B中的下一命令的指针。如果不存在下一命令,则可将值设定为空值。否 则,值包含指向对应于下一命令的初始存储位置的存储器位置的指针,例如,在命令流216B 中。信息项906包含可用以定位所存储的数据(例如,数据缓冲器216C中所存储的数 据)的信息(例如,指针和跨距)。以下提供此些信息项的实例vertexInPtr 包含指向含有输入顶点位置的缓冲器的指针的变量。根据一个或一 个以上实施例,此变量的值为空。借助于非限制性实例,正由二级处理器执行的照明程序可 在处理涉及无限照明模型的情况下使用与顶点相关联的法线而非位置信息。在处理涉及点 光源照明(spotlighting)或位置照明模型中的一者或一者以上的情况下,vertexInPtr可用作指向存储待处理的一个或一个以上顶点的位置数据的存储器的指针。vertexOutPtr 包含指向可供二级处理器写入经贴皮顶点的缓冲器的指针的变 量。vertexOutPtr变量用于二级处理器执行贴皮的情况下。colorsInPtr 包含指向存储顶点色彩(RGBA)的缓冲器的指针的变量。红色、绿 色、蓝色和阿尔法值集合中的每一集合包含顶点色彩群组。在执行双面照明的情况下,缓冲 器在缓冲器中接连存储两个顶点色彩群组。每一顶点色彩群组由vertexOutSize字节分 离,使得可通过将vertexOutSize变量的值添加到当前colorsInPtr值来定位下一顶点色 彩群组。如果colorsInPtr变量具有空值,则材料数据结构用作每一顶点的输入色彩群组。colorsOutPtr 包含指向存储由二级处理器产生的色彩输出的缓冲器的指针的变 量。在启用双面照明的情况下,由二级处理器针对每一顶点接连输出两个色彩群组。每一 顶点色彩群组由vertexOutSize字节分离。normalsInPtr 包含指向含有对应于由vertexInPtr所指的顶点(例如,当前正由 二级处理器处理的顶点)的顶点法线的缓冲器的指针的变量。如果normalsInPtr变量具 有空值,则二级处理器使用CurrentNormal用于所有顶点。bonelndicesPtr 包含指向将在贴皮顶点中使用的矩阵调色板编制索引的字节阵 列的指针的变量。借助于非限制性实例,索引的数目等于顶点的数目乘以每顶点骨的数目, 例如,如由boneCount变量指示。boneffeightsPtr 指向含有可在顶点贴皮处理期间使用的sl5. 16骨重量的缓冲 器的变量。借助于非限制性实例,重量的数目等于顶点的数目乘以每顶点骨的数目,例如, 如由boneCount变量指示。vertexInSize 指示一个输入顶点结构(每顶点)中含有的字节的数目的变量。 借助于非限制性实例,与此变量相关联的值可用作计算顶点缓冲器中的下一顶点位置的跨距。vertexOutAndColorSize 识别一个输出顶点结构(每顶点)中所含有的字节的数 目的变量。借助于非限制性实例,与此变量相关联的值可用作计算位置或色彩的下一输出 位置的跨距。numDimensions 指定每位置向量的元素的数目的变量(3 = XYZ),(4 = XYZff)。如 果数目为3,则可假设W为1.0。借助于非限制性实例,与此变量相关联的值可用作计算指 向下一顶点的位置数据的指针的跨距。信息项908包含可用于二级处理中的其它处理信息。以下提供此些信息项的实 例CurrentNormal (XYZ)含有在normalsInPtr为空指针值的情况下使用的法线的 变量。此法线应用于命令流中参考的所有顶点。rescaleNormalsFlag:指示是否重新缩放顶点法线的变量。如果旗标经设定(例 如,设定为值OxFFFFFFFF),则二级处理器在照明等式之前按照OpenGL-ES规范(第2. 11. 3 节)重新缩放顶点法线。RescaleNormalizeFlag:指示何时重新缩放顶点法线的变量。如果第一有效位 (例如,位0)经设定,则二级处理器如在OpenGL-ES规范(第2. 11. 3节)中所指定在变换 之后但在照明前将法线规格化。如果位1经设定,则二级处理器可使用如在OpenGL规范中所陈述的重新缩放法线算法或使用所有情况下的标准规格化。因为可在所有情况下使用规 格化,所以每当将法线规格化为适当时,可设定位0,且当准许二级处理器使用重新缩放法 线作为替代方案时,还可设定位1。twoSidedLightingFlag 指示是否执行双面照明的变量。如果旗标经设定(例如, 设定为值OxFFFFFFFF),则二级处理器计算每顶点两个色彩,顶点的每一侧具有一个色彩 (相对于法线)。根据一个或一个以上实施例,twoSidedLightingFlag可用以指示存在与 顶点相关联的多个色彩,例如,每一侧具有一个色彩。IightingEnabledFlag 用以指示是否执行照明的变量。如果旗标经设定 (例如,设定为值OxFFFFFFFF),则二级处理器执行对顶点的照明计算且依据是否启用 twoSidedLighting旗标而输出每顶点一个或两个色彩。根据一个或一个以上实施例,在 在执行多个操作(例如,照明和贴皮)的二级处理期间任选地执行照明的情况下可使用 IightingEnabledFlag0numActiveLights 指定每顶点待应用的灯的数目的变量。根据一个或一个以上实 施例,支持高达8个灯,且有效灯处于数字表示次序。(例如,3个有效灯指代灯0、1、2)。numLightsUpdated 指定由IightingInfoPtr变量值指向的照明信息阵列的数目 的变量。根据一个或一个以上实施例,与命令一起发送的灯信息阵列在对当前命令的顶点 执行照明计算之前经更新,且未更新的任何有效灯使用其先前值。IightUpdateMask 包含指示待使用IightingInfoArrayPtr更新哪些灯的位字段 的变量。位集合的数目对应于numLightsUpdated条目。最低有效位对应于灯0,且位7对 应于灯7。如果设定最高有效位(0x8000),则存在用于当前指令的经更新的材料结构。材料可用以(如果需要)更新照明模型数据的数据结构,如果此数据经更新。可 通过设定IightUpdateMask变量的最高有效字节的值来识别此结构的存在。下文提供材料 数据结构定义的实例。UpdatedLights 包含(如果需要)照明信息结构(其中每一者包含从最后一个命 令以来已改变的灯的新数据)的数目(例如,numLightsUpdated)的数据结构。根据一个 或一个以上实施例,二级处理使用IightUpdateMask变量以将灯结构映射到正更新的实际 灯。boneCount 包含贴皮中待使用的每顶点骨的数目的变量。根据一个或一个以上实 施例,如果所述值等于0 (零),则二级处理器应用包含MVT的矩阵调色板
,但在此情况 下不输出经变换的顶点,例如,使得眼空间顶点仅用于照明计算。matrixPalettePtr-包含指向含有矩阵调色板条目的4x4固定点矩阵的缓冲器的 指针的变量从最后一个CCG改变。此缓冲器的大小由includedMatricesSize条目指示且 索引图包含在MPInUse位掩码中。includedMatricesSize 指示由matrixPalettePtr指向的矩阵调色板的字节的 大小的变量。根据一个或一个以上实施例,缓冲器仅需包括经更新的矩阵,且MPInUse掩码 变量中的字段用以确定复制数据的适当索引位置。MPInUseO-15 16位掩码,其中每一位集合对应于由matrixPalettePtr变量指向 的缓冲器中所包括的经更新的矩阵调色板。举例来说,最低有效位对应于矩阵索引0,而最 高有效位对应于矩阵索引15。
MPInUsel6-31 16位掩码,其中每一位集合对应于由matrixPalettePtr指向的缓 冲器中所包括的经更新的矩阵调色板。举例来说,最低有效位对应于矩阵索引16,而最高有 效位对应于矩阵索引31。MPInUse32-47 16位掩码,其中每一位集合对应于由matrixPalettePtr指向的缓 冲器中所包括的经更新的矩阵调色板。举例来说,最低有效位对应于矩阵索引32,而最高有 效位对应于矩阵索引47。以下提供可由根据本发明的一个或一个以上实施例执行的二级处理(例如,照 明)所使用的材料数据结构的内容的实例灯模型环境场景色彩(RGBA)-包含可用于照明模型的环境场景色彩集合。材料发射性(RGBA)-包含可用于材料发射性色彩的固定点RGBA色彩集合。材料环境(RGBA)-包含可用于材料环境色彩的固定点RGBA色彩集合。材料漫射(RGBA)-包含可用于材料漫射色彩的固定点RGBA色彩集合。材料镜面反射(RGBA)-包含可用于材料镜面反射色彩的固定点RGBA色彩集合。材料镜面反射指数-包含固定点材料镜面反射指数因子,其范围可在0. 0与128. 0 之间。以下提供可由根据一个或一个以上实施例的二级处理使用的数据结构(例如,灯 模型数据结构)的额外实例。借助于非限制性实例,灯模型数据结构可针对在二级处理中 所执行的照明中所使用的每一灯模型而存在。环境(RGBA)-包含环境光分量的固定点值。点光源向量(XYZ)-包含点光源方向向量,如果使用点光源。漫射(RGBA)-包含漫射分量的固定点值。镜面反射(RGBA)-包含镜面反射分量的固定点值。点光源截止余弦-包含点光源的余弦截止值。举例来说,余弦值的范围可从1. 0 到0.0(0度到90度)或-1(180度)。在-1(180度)的特殊情况下,光为全向光且非点光源。点光源指数_包含固定点点光源指数(如果使用点光源)。灯位置(XYZW)-包含固定点光位置或方向。如果W分量的值为0,则光为无限方向 光,否则其为位置灯。如果W为零衰减且点光源值可忽略。衰减因子(恒定)_包含衰减因子的恒定值衰减因子(线性)_包含衰减因子的线性分量衰减因子(二次)_包含衰减因子的二次分量本发明的实施例提供一种系统、方法和设备,其中二级处理器单元经配置以对图 形管线数据操作,来自二级处理器的输出经整合于图形管线中,使得输出可用于在图形管 线中执行的一个或一个以上模块。根据此些实施例,作出是否使用二级处理器的确定,且在 待使用二级处理器的情况下,将可包含一个或一个以上命令的命令流提供到二级处理器。 二级处理使用包含在命令流中的信息且与一个或一个以上图形管线处理模块同步地对经 缓冲的图形管线数据操作,使得二级处理器的处理模块或任何图形管线处理模块均未盖写 数据。SPMM结合一个或一个以上SPIM而操作以使用包含二级处理模块的处理状态的反馈 信息使由二级处理和图形管线处理模块进行的数据存取同步。
如此,本发明的实施例提供使用可用的二级处理器平衡处理负载的能力。可能原 本闲置的二级处理器可用以促进由图形处理单元执行的图形管线处理和/或由中央处理 单元或其它处理单元执行的处理。由此,举例来说,可能原本等待处理资源的操作可被引导 到可用二级处理器,此产生更快的处理量。有利的是,已确定使用二级处理器比未使用二级 处理器的处理存在处理量的增加,例如,如按每秒帧来测量。另外,本发明的实施例可使用 从二级处理反馈的信息来执行负载平衡。举例来说,反馈可用以确定二级处理器何时已达 到特定阈值处理水平。当确定二级处理器达到阈值处理容量时,处理可被引导到另一处理 单元,例如中央处理单元。另外,本发明的实施例提供利用处理单元以用于除其一级处理目的之外的目的的 能力以执行一个或一个以上其它第二功能(如果此处理单元可用)。可能原本闲置的此硬 件(例如,处理单元)的使用导致硬件的更有效率的使用。在一个或一个以上示范性实施例中,可以硬件、软件和/或固件,或任何组合实施 所描述的功能。如果以硬件实施,则功能可实施于一个或一个以上微处理器、微控制器、数 字信号处理器(DSP)、专用集成电路(ASCI)、现场可编程门阵列(FPGA)等中。此些组件可 驻留于通信系统、数据写入和/或读取系统或其它系统内。如果以软件实施,则可将所述功 能作为一个或一个以上指令或代码而存储于计算机可读媒体上或经由计算机可读媒体来 传输。计算机可读媒体包括有形的计算机存储媒体与通信媒体(包括促进将计算机程序从 一个位置转移到另一位置的任何媒体)。存储媒体可为可由计算机存取的任何可用媒体。 借助于实例而非限制,此些计算机可读媒体可包含RAM、快闪存储器、只读存储器(ROM)、电 可擦除可编程只读存储器(EEPROM)、压缩光盘只读存储器(CD-ROM)或其它光盘存储装置、 磁盘存储装置或其它磁性存储装置,或可用以存储呈指令或数据结构的形式的所要程序代 码且可由计算机存取的任何其它媒体。还可将术语“计算机可读媒体”定义为有形的计算 机程序产品。如本文所使用,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘 (DVD)、软盘和蓝光(blu-ray)光盘,其中“磁盘”通常以磁性方式再生数据,而“光盘”用激 光以光学方式再生数据。上述各项的组合也应包括在计算机可读媒体的范围内。尽管已依据当前被视为最实际且优选的实施例的内容来描述所述设备和方法,但 是应理解,本发明无需限于所揭示的实施例。意欲涵盖包括于权利要求书的精神和范围内 的各种修改和类似布置,权利要求书的范围应被赋予最广泛的解释,以涵盖所有此些修改 和类似结构。本发明包括所附权利要求书的任何和所有实施例。
权利要求
一种方法,其包含响应于绘制请求,确定处理单元是否可用于辅助图形管线处理,所述处理单元具有一级处理功能;请求分配所述处理单元以执行除所述处理单元的所述一级处理功能之外的二级处理功能,以辅助图形管线处理;在所述分配请求成功的情况下使图形管线数据可用于所述处理单元;监视所述处理单元的处理状态;以及使用所述处理状态将由所述处理单元输出的数据整合于所述图形管线数据中。
2.根据权利要求1所述的方法,其中所述处理单元包含数字信号处理器,且所述二级 处理功能包含一个或一个以上照明功能。
3.根据权利要求1所述的方法,其中所述处理单元包含数字信号处理器,且所述二级 处理功能包含一个或一个以上贴皮功能。
4.根据权利要求1所述的方法,其进一步包含 确定所述处理单元是否正执行其一级处理功能;以及在所述处理单元不在执行其一级处理功能的情况下,分配所述处理单元。
5.根据权利要求1所述的方法,其中在所述分配请求成功的情况下,所述方法进一步 包含产生命令流以传送待由所述处理单元使用的信息。
6.根据权利要求1所述的方法,其中所述将由所述处理单元输出的数据整合于所述图 形管线数据中进一步包含识别涉及所述处理单元和一个或一个以上图形管线处理模块的数据相依性; 使用所述处理状态来确定所述处理单元是否完成处理所述数据相依性中所涉及的相 依数据;以及致使所述一个或一个以上图形管线处理模块等待所述相依数据,直到所述处理单元完 成处理所述相依数据为止。
7.一种设备,其包含图形处理单元,其经配置以实施图形管线;以及二级处理管理器,其耦合到所述图形处理单元,所述二级处理管理器经配置以 确定耦合到所述二级处理管理器的处理单元是否可用于辅助图形管线处理,所述处理 单元具有一级处理功能;请求分配所述处理单元以执行除所述处理单元的所述一级处理功能之外的二级处理 功能,以辅助图形管线处理;在所述分配请求成功的情况下,所述二级处理管理器进一步经配置以 使图形管线数据可用于所述处理单元; 监视所述处理单元的处理状态;以及使用所述处理状态将由所述处理单元输出的数据整合于所述图形管线数据中。
8.根据权利要求7所述的设备,其中所述处理单元包含数字信号处理器,且所述二级 处理功能包含一个或一个以上照明功能。
9.根据权利要求7所述的设备,其中所述处理单元包含数字信号处理器,且所述二级 处理功能包含一个或一个以上贴皮功能。
10.根据权利要求7所述的设备,其进一步包含耦合到所述二级处理管理器的分配器, 所述分配器经配置以确定所述处理单元是否正执行其一级处理功能;以及在所述处理单元不在执行其一级处理功能的情况下,分配所述处理单元。
11.根据权利要求7所述的设备,其中在所述分配请求成功的情况下,所述二级处理管 理器进一步经配置以产生命令流以传送待由所述处理单元使用的信息。
12.根据权利要求7所述的设备,其中经配置以将由所述处理单元输出的数据整合于 所述图形管线数据中的所述二级处理管理器进一步经配置以识别涉及所述处理单元和一个或一个以上图形管线处理模块的数据相依性;使用所述处理状态确定所述处理单元是否完成处理所述数据相依性中所涉及的相依 数据;以及致使所述一个或一个以上图形管线处理模块等待所述相依数据,直到所述处理单元完 成处理所述相依数据为止。
13.一种存储有计算机可执行程序代码的计算机可读存储器媒体,所述程序代码包含 用于以下操作的代码响应于绘制请求,确定处理单元是否可用于辅助图形管线处理,所述处理单元具有一 级处理功能;请求分配所述处理单元以执行除所述处理单元的所述一级处理功能之外的二级处理 功能,以辅助图形管线处理;在所述分配请求成功的情况下使图形管线数据可用于所述处理单元;监视所述处理单元的处理状态;以及使用所述处理状态将由所述处理单元输出的数据整合于所述图形管线数据中。
14.根据权利要求13所述的媒体,其中所述处理单元包含数字信号处理器,且所述二 级处理功能包含一个或一个以上照明功能。
15.根据权利要求13所述的媒体,其中所述处理单元包含数字信号处理器,且所述二 级处理功能包含一个或一个以上贴皮功能。
16.根据权利要求13所述的媒体,其中所述确定处理单元是否可用于辅助图形管线处 理的程序代码进一步包含用于以下操作的代码确定所述处理单元是否正执行其一级处理功能。
17.根据权利要求13所述的媒体,其进一步包含用于以下操作的程序代码确定所述处理单元是否正执行其一级处理功能;以及在所述处理单元不在执行其一级处理功能的情况下,分配所述处理单元。
18.根据权利要求13所述的媒体,其中在所述分配请求成功的情况下,所述程序代码 进一步包含用于以下操作的程序代码产生命令流以传送待由所述处理单元使用的信息。
19.根据权利要求13所述的媒体,其中所述将由所述处理单元输出的数据整合于所述 图形管线数据中的程序代码进一步包含用于以下操作的程序代码识别涉及所述处理单元和一个或一个以上图形管线处理模块的数据相依性; 使用所述处理状态确定所述处理单元是否完成处理所述数据相依性中所涉及的相依 数据;以及致使所述一个或一个以上图形管线处理模块等待所述相依数据,直到所述处理单元完 成处理所述相依数据为止。
20.一种设备,其包含图形处理单元,其经配置以实施图形管线;以及二级处理管理装置,其耦合到所述图形处理单元,所述二级处理管理装置包含 用于确定耦合到所述二级处理管理装置的处理单元是否可用于辅助图形管线处理的 装置,所述处理单元具有一级处理功能;用于请求分配所述处理单元以执行除所述处理单元的所述一级处理功能之外的二级 处理功能以辅助图形管线处理的装置;在所述分配请求成功的情况下,所述二级处理管理装置进一步包含 用于使图形管线数据可用于所述处理单元的装置; 用于监视所述处理单元的处理状态的装置;以及用于使用所述处理状态将由所述处理单元输出的数据整合于所述图形管线数据中的直ο
21.根据权利要求20所述的设备,其中所述处理单元包含数字信号处理器,且所述二 级处理功能包含一个或一个以上照明功能。
22.根据权利要求20所述的设备,其中所述处理单元包含数字信号处理器,且所述二 级处理功能包含一个或一个以上贴皮功能。
23.根据权利要求20所述的设备,其进一步包含耦合到所述二级处理管理装置的分配 装置,所述分配装置包含用于确定所述处理单元是否正执行其一级处理功能的装置;以及用于在所述处理单元不在执行其一级处理功能的情况下分配所述处理单元的装置。
24.根据权利要求20所述的设备,其中在所述分配请求成功的情况下,所述二级处理 管理装置进一步包含用于产生命令流以传送待由所述处理单元使用的信息的装置。
25.根据权利要求20所述的设备,其中所述用于将由所述处理单元输出的数据整合于 所述图形管线数据中的装置进一步包含用于识别涉及所述处理单元和一个或一个以上图形管线处理模块的数据相依性的装置;用于使用所述处理状态确定所述处理单元是否完成处理所述数据相依性中所涉及的 相依数据的装置;以及用于致使所述一个或一个以上图形管线处理模块等待所述相依数据直到所述处理单 元完成处理所述相依数据为止的装置。
全文摘要
本发明揭示一种系统、方法和设备,其中处理单元经配置以对图形管线外的图形管线数据执行二级处理,其中来自所述二级处理的输出经整合于所述图形管线中,以便使其可用于所述图形管线。作出是否使用二级处理的确定,且在将使用二级处理的情况下,将可包含一个或一个以上命令的命令流提供到所述二级处理单元,使得所述单元可定位和操作经缓冲的图形管线数据。管理并监视二级处理,以使由所述二级处理单元与图形管线处理模块进行的数据存取同步。
文档编号G06T1/20GK101911111SQ200880124487
公开日2010年12月8日 申请日期2008年11月26日 优先权日2007年11月30日
发明者迈克尔·D·斯特里特 申请人:高通股份有限公司