專利名稱:在圖形系統(tǒng)中使用二級處理器的系統(tǒng)和方法
技術領域:
本發(fā)明涉及圖形處理系統(tǒng)中的并行處理,且更特定來說,涉及結合例如中央處理 單元和圖形處理單元的其它處理單元使二級處理器的使用同步以并行執(zhí)行圖形處理,包括 由此二級處理器處理的數據重新整合到圖形處理管線中。
背景技術:
圖形處理單元(GPU)是用以產生用于在顯示裝置上顯示的計算機化圖形的專用 圖形再現(xiàn)裝置。GPU通常與通用中央處理單元(CPU) —起使用以處理圖形圖像數據,例如, 三維計算機化圖形圖像數據。在此情況下,GPU可實施多個基本圖形操作以比使用CPU繪 制用于在顯示裝置上顯示的圖像更快地建立用于在顯示裝置上顯示的三維圖像。通常,GPU 包括在硬件中實施某數目的復雜算法的硬件。典型GPU接收圖像幾何圖形且使用管線方法來產生可經輸出(例如)以用于在顯 示裝置上顯示的圖形。典型圖形管線包括并行操作的多個級,來自一個級的輸出可能用于 管線中的另一級處。舉例來說,典型圖形管線包含頂點著色器(vertex shader)、圖元裝配 器、視口變換、圖元設置,光柵化、隱藏圖元和像素拒收、屬性設置、屬性內插法和片段著色 器級。頂點著色器應用于圖像的圖像幾何圖形且產生圖像幾何圖形內的頂點坐標和頂 點的屬性。頂點屬性包括(例如)與頂點相關聯(lián)的色彩、法線和紋理坐標。圖元裝配器基于 圖像幾何圖形從頂點形成圖元,例如,點、線和三角圖元??墒褂米儞Q(例如,將圖元從規(guī)格 化裝置空間變換到屏幕空間的視口變換)將所形成的圖元從一個空間變換到另一空間。圖 元設置可用以確定圖元的面積、邊緣系數,且執(zhí)行遮擋剔除法(occlusionculling)(例如, 背面剔除法),和3-D剪輯操作。光柵化基于圖元內的頂點的XY坐標和包括于圖元中的像素的數目將圖元轉換為 像素。隱藏圖元和像素拒收使用圖元和/或像素的ζ坐標來確定和拒收經確定為隱藏的 那些圖元和像素(例如,位于圖像幀中的另一圖元或像素后的圖元或像素、透明圖元或像 素)。屬性設置確定屬性梯度,例如,對于與圖元內的像素相關聯(lián)的屬性,在水平(X)方向或 垂直(Y)方向上移動的圖元內第一像素處的屬性值與第二像素處的屬性值之間的差。屬性 內插法基于所確定的屬性梯度值在圖元內的像素上內插屬性。所內插的屬性值經發(fā)送到片 段著色器以用于像素再現(xiàn)。片段著色器的結果可經輸出到后處理塊和幀緩沖器以用于經處 理的圖像在顯示裝置上的呈現(xiàn)。促進圖形管線處理以實現(xiàn)增加的處理量為有益的。已努力通過優(yōu)化實施圖形管線 的一部分的軟件來增加處理量。然而,此方法為高成本的,因為其通常需要大量程序員的工 作和時間來產生優(yōu)化的程序代碼??墒褂脤S糜布崿F(xiàn)增加的處理量。然而,此方法涉及 專用硬件的額外成本,所述專用硬件僅可用于專用目的。
發(fā)明內容
本發(fā)明設法解決此項技術中的缺點和提供圖形圖像處理的效率以使用二級處理 單元來執(zhí)行圖形處理管線中的圖形處理以補充由其它處理單元(例如,圖形處理單元和/ 或中央處理單元)執(zhí)行的處理,以識別與此處理相關聯(lián)的數據相依性且將由二級處理單元 產生的輸出整合于圖形處理管線中以滿足此數據相依性。揭示一種系統(tǒng)、方法和設備,其中處理單元經配置以對圖形管線外的圖形管線數 據執(zhí)行二級處理,其中來自二級處理的輸出整合于圖形管線中以使得使其可用于圖形管 線。作出是否使用二級處理的確定,且在待使用二級處理的情況下,將可包含一個或一個以 上命令的命令流提供到二級處理單元,使得單元可定位且對經緩沖的圖形管線數據操作。 管理和監(jiān)視二級處理以使由二級處理和圖形管線中的一個或一個以上處理模塊進行的數 據存取同步。根據本發(fā)明的實施例,識別與圖形處理管線一起使用二級處理單元或二級處理器 的機會,且使圖形管線數據可用于二級處理單元。由二級處理單元產生的圖形管線數據經 重新整合于圖形管線中。借助于非限制性實例,二級處理器為數字信號處理器,其經配置為 照明模塊以由對來自圖形管線的數字信號處理器可用的色彩數據產生點亮色彩。如此,本發(fā)明的實施例提供使用可用二級處理器平衡處理負載的能力??赡茉?閑置的二級處理器可用以促進由圖形處理單元執(zhí)行的圖形管線處理和/或由中央處理單 元或其它處理單元執(zhí)行的處理。由此,舉例來說,可能原本等待處理資源的操作可被引導到 可用二級處理器,此產生更快的處理量。有利的是,已確定使用二級處理器比未使用二級處 理器的處理存在處理量的增加,例如,如按每秒幀來測量。另外,本發(fā)明的實施例可使用從 二級處理反饋的信息來執(zhí)行負載平衡。舉例來說,反饋可用以確定二級處理器何時已達到 特定閾值處理水平。當確定二級處理器達到閾值處理容量時,處理可被引導到另一處理單 元,例如中央處理單元。另外,本發(fā)明的實施例提供利用處理單元用于不同于其一級處理目的的能力以執(zhí) 行一個或一個以上其它第二功能(如果此處理單元可用)。可能原本閑置的此硬件(例如, 處理單元)的使用產生硬件的更有效率的使用。根據本發(fā)明的一方面,一種方法包含響應于繪制請求確定處理單元是否可用于 輔助圖形管線處理,處理單元具有一級處理功能;請求二級處理器的分配以執(zhí)行不同于處 理單元的一級處理功能的二級處理功能以輔助圖形管線處理;以及在分配請求成功的情況 下使圖形管線數據可用于處理單元;監(jiān)視由處理單元進行的處理的狀態(tài);以及將由處理 單元輸出的數據整合于圖形管線數據中。根據本發(fā)明的另一方面,提供存儲程序代碼的計算機可讀存儲器媒體,所述程序 代碼包含用于執(zhí)行以下操作的程序代碼確定處理單元是否可用于輔助圖形管線處理,處 理單元具有一級處理功能;請求二級處理器的分配以執(zhí)行不同于處理單元的一級處理功能 的二級處理功能以輔助圖形管線處理;以及在分配請求成功的情況下使圖形管線數據可 用于處理單元;監(jiān)視由處理單元進行的處理的狀態(tài);以及將由處理單元輸出的數據整合于 圖形管線數據中。根據本發(fā)明的另一方面,一種設備包含圖形處理單元,其經配置以實施圖形管 線;以及二級處理管理器,其耦合到圖形處理單元,二級處理管理器經配置以確定耦合到所述二級處理管理器的處理單元是否可用于輔助圖形管線處理,所述處理單元具有一級處 理功能;請求所述二級處理器的分配以執(zhí)行不同于所述處理單元的一級處理功能的二級處 理功能以輔助圖形管線處理;以及在分配請求成功的情況下,二級處理管理器進一步經配 置以使圖形管線數據可用于所述處理單元;監(jiān)視由所述處理單元進行處理的狀態(tài);以及 將由處理單元輸出的數據整合于圖形管線數據中。根據本發(fā)明的又一方面,一種設備包含圖形處理單元,其經配置以實施圖形管 線;以及二級處理管理裝置,其耦合到圖形處理單元,二級處理管理裝置包含用于確定耦 合到所述二級處理管理器的處理單元是否可用于輔助圖形管線處理的裝置,所述處理單元 具有一級處理功能;用于請求所述二級處理器的分配以執(zhí)行不同于所述處理單元的一級處 理功能的二級處理功能以輔助圖形管線處理的裝置;在分配請求成功的情況下,所述二級 處理管理裝置進一步包含用于使圖形管線數據可用于所述處理單元的裝置;用于監(jiān)視由 所述處理單元進行處理的狀態(tài)的裝置;以及用于將由處理單元輸出的數據整合于圖形管線 數據中的裝置。已提供此簡要概述,使得可快速理解本發(fā)明的本質??赏ㄟ^參考以下結合附圖對 本發(fā)明的優(yōu)選實施例的詳細描述而獲得本發(fā)明的更完全理解。
參考結合附圖進行的以下描述,將明白以上提及的本發(fā)明的特征和目的,其中相 同參考數字表示相同元件,且其中圖1為說明用于根據本發(fā)明的一個或一個以上實施例使用的示范性裝置的框圖。圖2說明包含根據本發(fā)明的一個或一個以上實施例而使用的組件和組件間通信 的框圖。包含圖3A和圖3B的圖3說明實施根據本發(fā)明的一個或一個以上實施例的二級處 理管理模塊的程序代碼處理流程。圖4說明實施根據本發(fā)明的一個或一個以上實施例的二級處理接口模塊的程序 代碼處理流程。圖5說明用于根據本發(fā)明的一個或一個以上實施例使用的同步程序代碼處理流程。包含圖6A和圖6B的圖6提供根據本發(fā)明的一個或一個以上實施例的同步實例。圖7提供經轉發(fā)到根據本發(fā)明的一個或一個以上實施例的二級處理模塊的配置 消息中所含有的信息的實例。圖8提供可存儲于根據本發(fā)明的一個或一個以上實施例的反饋216A中的信息的 實例。圖9根據本發(fā)明的一個或一個以上實施例說明命令流和命令流中所包括的一個 或一個以上命令的示范性內容。
具體實施例方式現(xiàn)將參看前述圖式論述本發(fā)明的特定實施例,其中相同參考數字指代相同組件。根據一個或一個以上實施例,揭示一種系統(tǒng)、方法和設備,其中二級處理器單元經 配置以對圖形管線數據操作,來自二級處理器的輸出經整合于圖形管線中,使得使輸出可用于在圖形管線中執(zhí)行的一個或一個以上模塊。根據這些實施例,作出是否使用二級處理 器的確定,且在待使用二級處理器的情況下,將命令流提供到二級處理器。舉例來說,命令 流可包含一個或一個以上命令。經提供到二級處理器的每一命令含有識別當前命令的信 息。在存在另一命令的情況下,當前命令含有識別下一命令的信息。在當前命令為最后一 個命令的情況下,當前命令含有將當前命令識別為最后一個命令的信息。命令流將信息提 供到二級處理器,所述信息可包括(但不限于)輸入和/或輸出數據存儲位置,和反饋存儲 位置。根據一個或一個以上實施例,二級處理器為數字信號處理器(DSP),其可配置以執(zhí) 行一級處理,例如,處理音頻和/或視頻數據,且其可經配置以執(zhí)行二級處理。根據一個或 一個以上此些實施例,DSP經共享以使得其可用以執(zhí)行音頻和/或視頻數據處理,且當可用 時可輔助圖形管線處理,例如,不處理音頻/視頻數據。僅出于簡單的目的,參考如DSP的 二級處理器來描述本文中所揭示的實施例。應明白,任何處理器或處理單元可與本發(fā)明的 實施例一起使用。圖1為說明用于根據本發(fā)明的一個或一個以上實施例使用的示范性計算裝置100 的框圖。示范性計算裝置100可包含個人計算機、桌上型計算機、膝上型計算機、工作站、視 頻游戲平臺或控制臺、蜂窩式或衛(wèi)星無線電電話、室內電話、因特網電話、例如便攜式視頻 游戲裝置或個人數字助理的手持式裝置、個人音樂播放器、服務器、中間網絡裝置、大型計 算機,或輸出圖形信息的另一類型的裝置。在圖1的實例中,計算裝置100包括中央處理單元(CPU) 102、GPU 104、DSP 108, 作為二級處理器的實例,顯示單元124,和存儲器模塊116,例如,一個或一個以上隨機存取 存儲器(RAM)存儲器模塊。計算裝置100的組件(例如,CPU 102、GPU 104、DSP 108和存 儲器模塊116)可使用可包含任何類型的總線的總線106或現(xiàn)在已知或稍后發(fā)現(xiàn)的裝置互 連來通信。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媒體協(xié)處理器或另一類型的圖形處理單元。舉例來說,GPU 104可經集成 于計算裝置100的主板中,可存在于安裝在計算裝置100的主板中的端口中的圖形卡上,或 可另外經配置以與計算裝置100互操作。舉例來說,耦合到計算裝置100的顯示單元124可包含監(jiān)視器、電視、投影裝置、液 晶顯示器、等離子體顯示面板、照明二極管(LED)陣列、陰極射線管顯示器、電子紙、表面?zhèn)?導電子發(fā)射型顯示器(SED)、激光電視顯示器、納米晶體顯示器,或另一類型的顯示單元。在 圖1的實例中,顯示單元124可為計算裝置100的一部分。舉例來說,顯示單元124可為移 動電話的屏幕?;蛘?,舉例來說,顯示單元124可在計算機裝置100外部且可經由有線或無 線通信連接或其它連接與計算裝置100通信。借助于非限制性實例,顯示單元124可為經 由有線或無線連接而連接到個人計算機的計算機監(jiān)視器或平板顯示器。借助于非限制性實例,軟件應用程序110可包含能夠經由CPU 102執(zhí)行的任何軟 件應用程序,例如視頻游戲、圖形用戶接口引擎、計算機輔助的工程設計程序或藝術應用程序,或使用二維(2D)或三維(3D)圖形的另一類型的軟件應用程序。借助于非限制性實例, 當CPU 102執(zhí)行軟件應用程序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執(zhí)行。舉例來說,GPU驅動程序114可包含提供圖形處理API 112與GPU104之 間的接口的軟件和/或固件指令的集合。當圖形處理API 112調用GPU驅動程序114的子 例程時,GPU驅動程序114公式化且發(fā)出致使GPU 104產生可顯示圖形信息的命令。舉例來 說,當圖形處理API 112調用GPU驅動程序114的子例程以繪制,或再現(xiàn)一批圖形圖元時, GPU驅動程序114向GPU 104提供GPU 104使用其來再現(xiàn)所述批圖形圖元的處理配置。舉 例來說,GPU 104再現(xiàn)所述批圖形圖元,且輸出圖形圖元的光柵圖像。由GPU驅動程序114公式化的命令可識別GPU 104待使用以執(zhí)行命令的圖形處理 配置,所述配置可識別待由GPU 104執(zhí)行的指令的集合、狀態(tài)寄存器值的集合,和GPU104執(zhí) 行命令可能需要的其它類型的信息。在GPU驅動程序114將圖形處理配置存儲于存儲器116中的情況下,GPU驅動程 序114可參考存儲器模塊116中對應于由GPU驅動程序114公式化的命令中的圖形處理配 置的存儲位置。當GPU 104接收命令時,GPU 104可從存儲器116檢索從GPU驅動程序114 接收的命令中所參考的圖形處理配置。根據至少一個實施例,GPU 104的命令解碼器(未圖示)解碼來自GPU驅動程序 114的命令且配置GPU 104的處理元件中的一者或一者以上以使用從存儲器116中檢索到 的數據(例如,位置、色彩、紋理等)執(zhí)行命令。根據一個或一個以上實施例,GPU 104的處理元件或模塊實施圖形管線。根據此些 實施例,GPU 104的處理元件可以并行模式實施圖形管線,使得處理元件對數據并行操作, 來自一個處理元件的輸出用作對另一處理元件的輸入。借助于非限制性實例,第一處理元 件對初始輸入數據的第一集合執(zhí)行第一圖形操作且將中間結果的第一集合輸出到第二處 理元件。舉例來說,初始輸入數據可包含對應于一個或一個以上頂點的數據,所述數據可包 含坐標和屬性數據。頂點坐標基于(例如)具有X、Y和Z (寬度、高度和深度)坐標的四維 坐標系統(tǒng)識別圖像內的位置,且W坐標形成均勻坐標(homogenouscoordinate)。舉例來說, 頂點屬性可包括與頂點相關聯(lián)的色彩、法線和紋理坐標。第二處理元件可對由第一處理元 件輸出的中間結果的第一集合執(zhí)行另一圖形操作,且將中間結果的第二集合輸出到第三處 理元件等。當第二處理元件執(zhí)行第二圖形操作時,一級處理元件可對初始輸入數據的第二 集合執(zhí)行第一圖形操作。GPU 104和其處理元件可以此方式繼續(xù),直到最后一個處理元件向存儲器模塊 116中的一個或一個以上緩沖器輸出像素對象,或向某一其它目的地輸出此新像素對象為 止。像素對象為描述像素的數據。每一像素對象可指定多個色彩值,且可指定像素的透明 度水平。在一些情形下,像素對象可以第一色彩格式指定第一色彩且以第二色彩格式指定 第二色彩。根據本發(fā)明的一個或一個以上實施例,GPU 104的處理模塊可包括由GPU 104執(zhí)行的軟件、專用硬件模塊和/或經配置以執(zhí)行GPU 104的處理模塊中的一者或一者以上的 可編程處理模塊。舉例來說,GPU 104的處理模塊實施圖形管線,其可包含頂點著色器、圖 元裝配器、視口變換、圖元設置、光柵化、隱藏圖元和像素拒收、屬性設置、屬性內插法和片 段著色器級。本發(fā)明的實施例可向DSP 108或其它二級處理器指派第二用途以操作用于圖形 管線中的數據。根據一個或一個以上實施例,第二用途不同于二級處理器的第一用途。舉 例來說,DSP 108可用以處理音頻和視頻數據,且可進一步用以實施對圖形管線數據操作的 一個或一個以上照明模塊。如此,二級處理器可補充另外用以實施圖形管線的資源。根據本發(fā)明的實施例,當確定二級處理器未用于其一級目的時,使用二級處理器。 舉例來說,在確定DSP 108為閑置,S卩,未處理音頻或視頻數據的情況下,進行請求以結合 圖形管線分配DSP 108以用作二級處理器。在此情況下,DSP 108可用以對圖形管線數據 執(zhí)行某一形式的二級處理(例如,照明)或其它處理(例如,貼皮)等。圖2說明包含根據本發(fā)明的一個或一個以上實施例而使用的組件和組件間通信 的框圖。二級處理管理模塊(SPMM)或二級處理管理器202結合一個或一個以上二級處理 接口模塊(SPIM)管理二級處理。根據一個或一個以上實施例,SPMM和SPIM模塊為單獨模 塊?;蛘?,SPMM和SPIM模塊中的一者或一者以上經組合以形成單一模塊。作為又一替代 方案,SPMM和SPIM模塊中的一者或一者以上可與其它程序代碼整合。借助于非限制性實 例,SPIM可與執(zhí)行二級處理的程序代碼整合,和/或SPIM可與執(zhí)行圖形管線的模塊的程序 代碼整合。SPMM 202確定是否可能使用二級處理器,向二級處理器提供包含一個或一個以 上命令的命令流,以及使由二級處理和一個或一個以上圖形管線處理模塊進行的數據存取 同步,其中由二級處理器操作的圖形管線數據整合于由圖形管線處理的數據中。在圖2中所示的實例中,DSP 108用作二級處理器。應明白,根據本發(fā)明的一個或 一個以上實施例,任何處理單元可用作二級處理器。當應用程序Iio發(fā)出繪制調用時,SPMM 202接收通知220。SPMM 202分析由應用程序110提供的繪制調用,和相關聯(lián)的信息,以確 定繪制調用的處理是否包括可由二級處理器執(zhí)行的處理。舉例來說,SPMM202確定繪制調用 的處理是否涉及一個或一個以上照明模型對色彩數據的應用。借助于另一非限制性實例, SPMM 202可檢查繪制調用以確定是否應用貼皮。在SP匪202確定可由二級處理器執(zhí)行處理的情況下,SPMM 202試圖分配二級處 理器以用于二級處理。舉例來說,SPMM 202與DSP 108的實時操作系統(tǒng)(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包含用以執(zhí)行二級處理的程序代碼。SPIM 208A包含經配置 以與SPMM 202介接的程序代碼,例如經由通信路徑228將反饋提供到存儲器模塊116中的 反饋存儲器區(qū)域216A。SPMM 202經由通信路徑226將信息提供到SPIM 208A,所述信息識 別反饋區(qū)域216A、輸入數據和輸出數據的存儲位置,例如,數據緩沖器216C中的位置。另 外,SPIM 208A將信息提供到處理模塊208B,所述信息可由處理模塊208B使用以執(zhí)行二級 處理,例如,照明。
根據一個或一個以上實施例,SPMM 202使用通信路徑226以提供由處理模塊208B 使用的與被稱作命令的流或命令流的命令集合相關聯(lián)的信息。根據一個或一個以上此些實 施例,SPMM 202將初始消息傳送到SPIM 208A,所述消息包含指向存儲于存儲器模塊116的 命令流區(qū)域216B中的命令流的第一命令的指針,和指向存儲器模塊116中的反饋區(qū)域216A 的指針。簡要來說,命令流中的命令包括識別輸入和輸出數據在數據緩沖器216C中的位 置、反饋216A的位置、指向流中的下一命令的指針或當前命令為最后一個命令的指示的信 息,和其它信息,例如在DSP模塊208執(zhí)行照明的情況下使用的照明模型。下文更詳細地描 述命令的內容。SPMM 202經由通信路徑224將每一命令加載到命令流216B中且經由通信路徑 226將指向命令流216B中的第一命令的指針轉發(fā)到SPIM 208A且將由SPMM 202發(fā)送的初 始消息轉發(fā)到SPIM 208A。此后,SPIM 208A使用第一,或當前命令中含有的信息來定位命 令流216B中的下一命令,或將第一 /當前命令識別為最后一個命令。SPIM 208A可基于命 令流中的給定命令中含有的信息和由SPMM 202經由通信路徑226提供的初始信息存取反 饋216A、命令流216B和/或數據緩沖器216C。舉例來說,包括SPIM 208A和處理模塊208B 的DSP模塊208可經由通信路徑228存取存儲器116的一個或一個以上區(qū)域。數據緩沖器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可使用反饋區(qū)域216A中的信息以確定何時可用命令流中的新命 令蓋寫命令流216B中的區(qū)域。借助于非限制性實例,反饋216A包含識別由二級處理模塊 208B完成的最新命令的信息。在二級處理模塊208B不再存取命令流216B中的命令,且 SPMM 202確定不再需要命令的情況下,SPMM 202可選擇使用所述區(qū)域以用于命令流中的 新命令。SPMM 202可能確定在圖形管線已完成處理對應于命令的圖形管線數據的情況下不 再需要命令。根據一個或一個以上實施例,SPMM 202、SPIM 208A和SPIM 214包含由一個或一 個以上處理單元或處理器執(zhí)行的程序代碼。此些處理單元可包括(但不限于)CPU 103、DSP 108和GPU 104。借助于非限制性實例,SPMM 202和SPIM 214包含由CPU 103執(zhí)行的程序 代碼,且SPIM 208A包含由DSP 108執(zhí)行的程序代碼。借助于另一非限制性實例,SPMM 202 的程序代碼由CPU 103執(zhí)行,SPIM 214包含由GPU 104執(zhí)行的程序代碼且SPIM 208A包含 由DSP 108執(zhí)行的程序代碼。然而,應明白,任何一個或一個以上處理單元可用以實施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說明實施根據本發(fā)明的一個或一個以上實施例的 SPMM202的程序代碼處理流程。在步驟302處,SPMM 202接收繪制調用,例如,由應用程序 110對圖形API 112進行的調用。在步驟304處,SPMM 202檢查繪制調用以識別使用二級 處理的機會。舉例來說,SPMM 202可檢查繪制調用以識別應用程序110是否請求一個或一 個以上照明模型應用于色彩數據。如果SPMM 202在步驟306處根據繪制調用的檢查確定 不存在二級處理機會,則處理在步驟312處繼續(xù)以通知圖形管線(例如,SPIM 214)不存在 二級處理。舉例來說,此通知消除SPIM 214協(xié)調由圖形管線處理模塊218對存儲于數據緩 沖器216C中的數據進行存取的需要。如果SPMM 202在步驟306處確定存在使用二級處理的機會,則處理在步驟308處 繼續(xù),其中SPMM 202請求二級處理器。舉例來說,SPMM 202將請求發(fā)送到DSP 108的RTOS 206以加載DSP模塊208,且提供用于RTOS 206的回調以通知SPMM 202SPMM 202的請求是 成功還是失敗。如果在步驟310處確定RTOS 206通知SPMM 202請求失敗,則處理在步驟 312處繼續(xù)以通知圖形管線不存在二級處理。在此情況下且根據一個或一個以上實施例, SPMM 202可通知CPU 102執(zhí)行照明。如果RTOS 206通知SPMM 202 二級處理器的請求成功,則處理在圖3B的步驟332 處繼續(xù)。在步驟322處,SPMM 202準備命令流中的第一命令且將第一命令存儲在命令流 216B中。根據一個或一個以上實施例,SPMM 202使用鏈接列表方法以將命令流傳送到二 級處理器。借助于非限制性實例,每一命令含有指向下一命令的指針。借助于另一非限制 性實例,命令可含有指向命令流中的任何命令的指針,例如指向命令流中的前一命令的指 針。在當前命令為最后一個命令的情況下,指向下一命令的指針含有一值,例如,十六進制 值OxFFFFFFFF,其將當前命令識別為最后一個命令。根據一個或一個以上實施例,SPMM 202在其將命令存儲于命令流216B中時可能 不知道是否存在額外命令。在此情況下,SPMM 202將零值存儲為指向鏈接列表中的下一命 令的指針以通知SPIM 208A可能存在額外命令。在模塊208B完成與當前命令相關聯(lián)的處理 的情況下,SPIM 208A考慮剛剛完成的命令中的指針以定位命令流216B中的下一命令(如 果存在)。如果指針經設定為零值,則SPIM 208A知道SPMM 202未更新指針。在此情況下, SPIM 208A可在檢查指針前等待一定時期以查看SPMM 202是否已更新指針。如果指針具有 非零值,則SPIM 208A檢查所述值以確定其指向命令流216B中的下一命令,或指示所完成 的命令為命令流中的最后一個命令。在后一情況下,SPMM202可在指針中存儲一值(例如, 十六進制值OxFFFFFFFF)以通知SPIM 208A在當前命令流中不存在待處理的更多命令,且 DSP 108可用以執(zhí)行其一級或其它處理。在步驟324處,SPMM 202將含有對應于第一命令的信息的初始消息發(fā)送到二級處 理器。由SPMM 202發(fā)送到SPIM 208A的消息具有對應于第一命令的信息。由SPMM 202發(fā) 送的消息通知二級處理器其可開始處理,且提供信息以定位第一命令。根據本發(fā)明的一個 或一個以上實施例,且參看圖7,初始消息700包含指向命令流存儲器216B中的命令的指 針702、識別命令流存儲器216B中的命令的存儲區(qū)域的大小的信息704,和指向存儲器模塊216的反饋216A存儲區(qū)域的指針706。再次參看圖3B,在SPMM 202在步驟324處發(fā)送通知 命令流中的第一命令的二級處理器的消息之后,SPMM 202處理在步驟326處繼續(xù)以確定命 令流中是否存在額外命令。如果SPMM 202在步驟326處確定存在待產生用于當前繪制調用的至少一個額外 命令,則處理在步驟328處繼續(xù)。在步驟328處,SPMM 202準備新命令且在命令流216B中 存儲新命令。在步驟330處,SPMM 202設定命令流216B中的緊在前面的命令(例如,第一 命令)中的指針以指向命令流216B中的新命令,例如,指向命令流216B中待存儲新命令的 位置。如同第一命令,新命令和任何隨后的命令含有指向下一命令(如果下一命令由SPMM 202產生)的指針,或新命令為最后一個命令(如果不存在下一命令)的指示符。根據一個 或一個以上實施例,在初始消息經發(fā)送到二級處理器之后,SPMM202和二級處理器的處理模 塊(例如,DSP模塊208)經由命令流216B和反饋216A進行通信。如此,開銷可經最小化, 因為兩個處理模塊之間不存在發(fā)送消息的需要。DSP模塊208導航命令流216B中的命令的 鏈接列表以處理數據,且通過將狀態(tài)信息寫入到存儲器模塊216的反饋216A而將反饋提供 到SPMM。根據一個或一個以上實施例,DSP模塊208相對于SPMM 202和圖形管線處理模塊 218異步且獨立地操作。一旦SPMM 202更新前面的命令中的指針以指向新命令,則處理在步驟326處繼續(xù) 以確定是否仍待產生任何額外命令。如果不產生,則處理在步驟332處繼續(xù)以將最后一個 命令中所含有的指針更新為一值(例如,十六進制值OxFFFFFFFF)以通知SPIM 208A所述 命令為當前命令流216B中的最后一個命令,且處理對于當前繪制調用結束。如果存在額外 繪制調用,則處理在步驟322處繼續(xù)以結合另一繪制調用準備命令流。SPIM 208A提供SP匪202與處理模塊208B之間的接口。根據一個或一個以上實 施例,SPIM 208A接收對應于由SPIM 202產生的命令流的信息,促進由處理模塊208B執(zhí)行 的處理,監(jiān)視處理模塊208B的處理狀態(tài),且提供關于處理模塊208B的處理的反饋。圖4說 明實施根據本發(fā)明的一個或一個以上實施例的SPIM 208A的程序代碼處理流程。在步驟402處,SPIM 208A接收來自SPIM 202的初始化消息。借助于非限制性實 例,SPIM 208A接收初始化消息700,其包括指向命令流216B中對應于第一命令的位置的指 針、識別第一命令的大小(例如,以字節(jié)為單位)的信息704,和指向反饋216A區(qū)域中的位 置的指針706。在步驟404處,SPIM 208A使用消息700中的信息來定位命令流216B中的 第一命令,且識別當前命令是否為最后一個命令。在步驟406處,SPIM 208A使當前命令中所含有的信息可用于處理模塊208B。舉 例來說,位置信息(例如,指針和大小信息)用以起始數據移動操作以存取(例如,加載和 /或存儲)數據緩沖器216C中的數據。另外,命令可包括數據緩沖器216C中的色彩數據 的位置,例如指向與第一頂點相關聯(lián)的輸入色彩數據的指針,和添加到指針以定位下一頂 點的色彩數據的增量。當前命令可進一步包含指向數據緩沖器216C中的與第一頂點相關 聯(lián)的輸出緩沖器中的位置的指針,以及定位與下一頂點相關聯(lián)的色彩數據的輸出位置的增 量。借助于另一非限制性實例,在處理模塊208B執(zhí)行照明的情況下,當前命令可包括一個 或一個以上照明模型。作為另一非限制性實例,在處理模塊208B執(zhí)行貼皮的情況下,命令 可包括貼皮矩陣。根據一個或一個以上實施例,第一命令可提供照明模型或貼皮矩陣的完 整集合,其中后續(xù)命令識別先前命令中指定的照明模型或貼皮矩陣的任何改變。
在步驟408處,SPIM 208A監(jiān)視處理模塊208B的進度,且在步驟410處用識別由 處理模塊208B執(zhí)行的處理的狀態(tài)的信息來更新反饋216A中的信息。圖8提供可存儲于根 據本發(fā)明的一個或一個以上實施例的反饋216A中的信息的實例。根據一個或一個以上此 些實施例,每一命令識別頂點的有限集合,且一旦處理模塊208B已處理與由命令識別的頂 點相關聯(lián)的頂點數據,則命令被視為完成。反饋216A可包含識別由處理模塊208B完成的 最新命令的信息,例如,最后一個命令識別符(10)802,和指向命令流2168中的命令的指針 804。再次參看圖4,SPIM 208A在步驟404處繼續(xù)使用當前命令中的信息來使在處理中 使用的數據可用于處理模塊208B,且用二級處理的狀態(tài)更新反饋216A。如上文所論述且根據一個或一個以上實施例,二級處理器與SPMM 202和圖形管 線處理模塊218異步且獨立地操作。然而,在至少一個情況下,二級處理(例如,由DSP模 塊208執(zhí)行的處理)與由圖形管線處理模塊218執(zhí)行的處理同步,使得由二級處理器處理 且待由圖形管線處理模塊218進一步處理的數據經同步。在此情況下,SPMM 202結合可提 供圖形管線處理模塊218與SPMM 202之間的接口的SPIM 214而操作,以管理由圖形管線 處理模塊218進行的數據存取,使得模塊218使用已由二級處理器處理的數據。根據一個 或一個以上實施例,SPMM 202和SPIM 214可包含單一模塊。圖5說明用于根據本發(fā)明的一個或一個以上實施例而使用的同步程序代碼處理 流程。根據一個或一個以上實施例,圖形管線和GPU 104對圖元的塊操作,圖元中的每一者 具有頂點的集合。舉例來說,在圖元包含三角形的情況下,每一圖元具有三個頂點的相關聯(lián) 集合。圖元的塊可表示為圖元和其頂點的列表。根據一個或一個以上實施例,SPMM 202確 定對于給定圖元列表中的圖元是否待執(zhí)行二級處理,且設定圖元列表中的值(例如,邏輯 值)以指示二級處理是否與圖元列表中所識別的圖元一起使用。根據一個或一個以上實施例,圖元列表中設定的值可由SPMM 202使用以確定 與待由圖形管線處理的圖元相關聯(lián)的數據是否首先由二級處理器處理。在步驟502處, SPMM202存取圖元列表中設定的值,且在步驟504處,SPMM 202確定是否正使用二級處理。 如果SPMM 202在步驟504處確定正執(zhí)行二級處理,則SPMM 202使由圖形管線處理模塊218 對正由二級處理器處理的數據進行的存取同步,使得二級處理器在使數據可用于模塊218 之前完成其對待由圖形管線處理模塊218進一步處理的數據的處理。借助于非限制性實例,如果圖元列表中所存儲的值指示未使用二級處理,則由圖 形管線處理模塊218存取的數據無需與由二級處理模塊208B存取的數據同步。在此情況 下,圖形管線處理模塊218可以異步模式操作,其不涉及使圖形管線處理模塊218對頂點數 據的使用與由二級處理模塊208B使用此頂點數據之間的數據存取同步。在圖元列表中所 存儲的值指示正使用二級處理,圖形管線處理模塊218以同步模式操作,以使模塊218對頂 點數據的存取與處理模塊208B的數據存取同步。如果數據存取待同步,則根據一個或一個以上實施例,SPMM 202在步驟506處使 用由SPIM 208A提供的反饋信息確定處理模塊208B的狀態(tài)。根據一個或一個以上實施例, SPIM 208A將信息存儲于反饋216A中,所述信息通過識別由處理模塊208B完成的最后一個 圖元來識別處理模塊208B的處理狀態(tài)。根據一個或一個以上實施例,圖元經指派有連續(xù)識 別符,使得SPMM 202能夠在步驟508處且基于由SPIM 208A供應的反饋信息確定其識別符等于或小于由SPIM 208A供應的圖元識別符的圖元已由處理模塊208B完成。在步驟510 處,SPMM 202結合SPIM 214允許圖形處理模塊218存取數據緩沖器216C中所存儲的與經 確定為已由處理模塊208B處理的圖元相關聯(lián)的數據。包含圖6A和圖6B的圖6提供根據本發(fā)明的一個或一個以上實施例的同步實例。 參看圖6A,模塊604和608提供圖形管線處理模塊218的實例,其存取數據緩沖器216C中 所存儲的數據。在異步模式中,預變換緩沖器602存儲頂點數據,其包括位置數據,例如,X、 Y、Z和W坐標數據、紋理數據和色彩數據。預變換緩沖器602中所存儲的色彩數據包含點 亮的色彩數據,或已以不同于使用二級處理器的方式經歷照明處理的色彩數據。舉例來說, 此可為SPMM 202確定二級處理器(例如,DSP 108)不可用于二級處理的情況。在此情況 下,CPU 102可執(zhí)行照明且將值存儲于預變換緩沖器602中。在異步模式中,模型檢視變換模塊604檢索包括點亮的色彩數據的頂點數據,對 非點亮的色彩數據的頂點數據操作且將頂點數據存儲于后變換緩沖器606中。在異步模式 中,模型檢視變換模塊604經指令以傳遞色彩數據與其它頂點數據。盡管變換模塊604未 修改色彩數據,但其從預變換緩沖器602中檢索點亮的色彩數據且如所指令將點亮的色彩 數據存儲于后變換緩沖器606中,使得色彩數據可用于由圖形管線中的隨后模塊(例如,視 口變換模塊608)處理。在圖6A中所示的實例中,視口變換模塊608存取后變換緩沖器606 以檢索由模型檢視變換模塊614轉發(fā)的點亮的色彩數據,且在其變換操作中使用點亮的色 彩數據,例如,內插色彩數據。圖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中的數據的狀態(tài),使得 視口變換模塊608檢索包括由二級處理器610輸出的點亮的色彩數據的頂點數據。借助于 非限制性實例,SPMM 202和SPIM 214可監(jiān)視反饋216A以識別二級處理器610是否已處理 與視口變換模塊608待處理的圖元相關聯(lián)的頂點,使得模塊608處理包括點亮的色彩數據 的頂點數據。舉例來說,命令可包括使命令與其頂點正由命令處理的圖元列表相關聯(lián)的信 息。根據一個或一個以上實施例,命令與相關聯(lián)的圖元列表之間存在一一對應,使得一個命 令由二級處理器610使用以處理相關聯(lián)的圖元列表中的所有圖元。由此,一旦針對給定命令將處理確定為完成,則相關聯(lián)的圖元列表中的圖元將可由視口變換模塊608處理。根據一個或一個以上實施例,每一命令被給予一識別符,且以連續(xù)次序指派命令 識別符。如此,有可能基于反饋216A中所含有的最后一個命令識別符802信息來確定針對 給定命令的處理是否完成。舉例來說,具有等于或小于最后一個命令ID 802中所識別的值 的命令識別符值的命令被視為由二級處理器610完成,而具有大于最后一個命令ID802值 的命令識別符值的命令被視為未由二級處理器610完成。圖9根據本發(fā)明的一個或一個以上實施例說明命令流和命令流中所包括的一個 或一個以上命令的示范性內容。命令流216B包含一個或一個以上命令900。每一命令900 包含命令900的一個或一個以上信息項。以下提供命令流中的命令900的內容的非限制性 實例,其包括用于與經配置以對頂點操作的程序代碼(例如照明或貼皮程序代碼)一起使 用的信息。應明白,其它信息可經添加或用以替換以下論述的信息,所述信息可適于與由根 據本發(fā)明的一個或一個以上實施例的二級處理器使用的任何程序代碼互操作。信息項902和904包含用于與當前命令900 —起使用的識別信息。根據一個或一 個以上實施例,以下信息可用以促進二級處理管理和控制。以下提供此些信息項的實例時戳識別正由二級處理器處理的當前命令。舉例來說,SPIM 208A可在反饋213A 中輸出此時戳以指示二級處理器當前正處理此命令。圖元時戳變量包含用于識別對應于當前命令900的圖元列表的時戳。舉例來說, 圖元時戳的值可用以將命令900映射到給定圖元。二級處理器可忽略圖元時戳。粒度用于根據一個或一個以上實施例使用的任選變量。粒度變量指示與命令 900相關聯(lián)的頂點的數目,所述頂點包含與命令900相關聯(lián)的頂點群組或頂點的子集。根據 一個或一個以上實施例,二級處理器輸出信息作為反饋,以指示包含已處理的頂點群組的 頂點的數目。在命令900處理頂點的情況下,粒度指令SPIM 208A在完成多個頂點(例如, 頂點群組)后便提供反饋,所述頂點為與命令900相關聯(lián)的頂點的子集。使用粒度值,SPIM 208A可在處理每一頂點群組時提供反饋,所述反饋可另外為在二級處理器完成處理與命令 900相關聯(lián)的所有頂點時由SPIM 208A提供的反饋,由此提供額外和/或更精細水平的反 饋。vertexCount 包含指示待結合當前命令900處理的頂點的數目的值的變量。nextCommandGroupSize 此變量識別下一命令的大小。如果不存在下一鏈接命令, 則變量可經設定為零。否則,值包含反映下一命令中所含有的字節(jié)的數目的值。nextCommandGroupPtr 此變量包含下一命令ID信息904的全部或一部分,其可包 含指向命令流216B中的下一命令的指針。如果不存在下一命令,則可將值設定為空值。否 則,值包含指向對應于下一命令的初始存儲位置的存儲器位置的指針,例如,在命令流216B 中。信息項906包含可用以定位所存儲的數據(例如,數據緩沖器216C中所存儲的數 據)的信息(例如,指針和跨距)。以下提供此些信息項的實例vertexInPtr 包含指向含有輸入頂點位置的緩沖器的指針的變量。根據一個或一 個以上實施例,此變量的值為空。借助于非限制性實例,正由二級處理器執(zhí)行的照明程序可 在處理涉及無限照明模型的情況下使用與頂點相關聯(lián)的法線而非位置信息。在處理涉及點 光源照明(spotlighting)或位置照明模型中的一者或一者以上的情況下,vertexInPtr可用作指向存儲待處理的一個或一個以上頂點的位置數據的存儲器的指針。vertexOutPtr 包含指向可供二級處理器寫入經貼皮頂點的緩沖器的指針的變 量。vertexOutPtr變量用于二級處理器執(zhí)行貼皮的情況下。colorsInPtr 包含指向存儲頂點色彩(RGBA)的緩沖器的指針的變量。紅色、綠 色、藍色和阿爾法值集合中的每一集合包含頂點色彩群組。在執(zhí)行雙面照明的情況下,緩沖 器在緩沖器中接連存儲兩個頂點色彩群組。每一頂點色彩群組由vertexOutSize字節(jié)分 離,使得可通過將vertexOutSize變量的值添加到當前colorsInPtr值來定位下一頂點色 彩群組。如果colorsInPtr變量具有空值,則材料數據結構用作每一頂點的輸入色彩群組。colorsOutPtr 包含指向存儲由二級處理器產生的色彩輸出的緩沖器的指針的變 量。在啟用雙面照明的情況下,由二級處理器針對每一頂點接連輸出兩個色彩群組。每一 頂點色彩群組由vertexOutSize字節(jié)分離。normalsInPtr 包含指向含有對應于由vertexInPtr所指的頂點(例如,當前正由 二級處理器處理的頂點)的頂點法線的緩沖器的指針的變量。如果normalsInPtr變量具 有空值,則二級處理器使用CurrentNormal用于所有頂點。bonelndicesPtr 包含指向將在貼皮頂點中使用的矩陣調色板編制索引的字節(jié)陣 列的指針的變量。借助于非限制性實例,索引的數目等于頂點的數目乘以每頂點骨的數目, 例如,如由boneCount變量指示。boneffeightsPtr 指向含有可在頂點貼皮處理期間使用的sl5. 16骨重量的緩沖 器的變量。借助于非限制性實例,重量的數目等于頂點的數目乘以每頂點骨的數目,例如, 如由boneCount變量指示。vertexInSize 指示一個輸入頂點結構(每頂點)中含有的字節(jié)的數目的變量。 借助于非限制性實例,與此變量相關聯(lián)的值可用作計算頂點緩沖器中的下一頂點位置的跨距。vertexOutAndColorSize 識別一個輸出頂點結構(每頂點)中所含有的字節(jié)的數 目的變量。借助于非限制性實例,與此變量相關聯(lián)的值可用作計算位置或色彩的下一輸出 位置的跨距。numDimensions 指定每位置向量的元素的數目的變量(3 = XYZ),(4 = XYZff)。如 果數目為3,則可假設W為1.0。借助于非限制性實例,與此變量相關聯(lián)的值可用作計算指 向下一頂點的位置數據的指針的跨距。信息項908包含可用于二級處理中的其它處理信息。以下提供此些信息項的實 例CurrentNormal (XYZ)含有在normalsInPtr為空指針值的情況下使用的法線的 變量。此法線應用于命令流中參考的所有頂點。rescaleNormalsFlag:指示是否重新縮放頂點法線的變量。如果旗標經設定(例 如,設定為值OxFFFFFFFF),則二級處理器在照明等式之前按照OpenGL-ES規(guī)范(第2. 11. 3 節(jié))重新縮放頂點法線。RescaleNormalizeFlag:指示何時重新縮放頂點法線的變量。如果第一有效位 (例如,位0)經設定,則二級處理器如在OpenGL-ES規(guī)范(第2. 11. 3節(jié))中所指定在變換 之后但在照明前將法線規(guī)格化。如果位1經設定,則二級處理器可使用如在OpenGL規(guī)范中所陳述的重新縮放法線算法或使用所有情況下的標準規(guī)格化。因為可在所有情況下使用規(guī) 格化,所以每當將法線規(guī)格化為適當時,可設定位0,且當準許二級處理器使用重新縮放法 線作為替代方案時,還可設定位1。twoSidedLightingFlag 指示是否執(zhí)行雙面照明的變量。如果旗標經設定(例如, 設定為值OxFFFFFFFF),則二級處理器計算每頂點兩個色彩,頂點的每一側具有一個色彩 (相對于法線)。根據一個或一個以上實施例,twoSidedLightingFlag可用以指示存在與 頂點相關聯(lián)的多個色彩,例如,每一側具有一個色彩。IightingEnabledFlag 用以指示是否執(zhí)行照明的變量。如果旗標經設定 (例如,設定為值OxFFFFFFFF),則二級處理器執(zhí)行對頂點的照明計算且依據是否啟用 twoSidedLighting旗標而輸出每頂點一個或兩個色彩。根據一個或一個以上實施例,在 在執(zhí)行多個操作(例如,照明和貼皮)的二級處理期間任選地執(zhí)行照明的情況下可使用 IightingEnabledFlag0numActiveLights 指定每頂點待應用的燈的數目的變量。根據一個或一個以上實 施例,支持高達8個燈,且有效燈處于數字表示次序。(例如,3個有效燈指代燈0、1、2)。numLightsUpdated 指定由IightingInfoPtr變量值指向的照明信息陣列的數目 的變量。根據一個或一個以上實施例,與命令一起發(fā)送的燈信息陣列在對當前命令的頂點 執(zhí)行照明計算之前經更新,且未更新的任何有效燈使用其先前值。IightUpdateMask 包含指示待使用IightingInfoArrayPtr更新哪些燈的位字段 的變量。位集合的數目對應于numLightsUpdated條目。最低有效位對應于燈0,且位7對 應于燈7。如果設定最高有效位(0x8000),則存在用于當前指令的經更新的材料結構。材料可用以(如果需要)更新照明模型數據的數據結構,如果此數據經更新???通過設定IightUpdateMask變量的最高有效字節(jié)的值來識別此結構的存在。下文提供材料 數據結構定義的實例。UpdatedLights 包含(如果需要)照明信息結構(其中每一者包含從最后一個命 令以來已改變的燈的新數據)的數目(例如,numLightsUpdated)的數據結構。根據一個 或一個以上實施例,二級處理使用IightUpdateMask變量以將燈結構映射到正更新的實際 燈。boneCount 包含貼皮中待使用的每頂點骨的數目的變量。根據一個或一個以上實 施例,如果所述值等于0 (零),則二級處理器應用包含MVT的矩陣調色板
,但在此情況 下不輸出經變換的頂點,例如,使得眼空間頂點僅用于照明計算。matrixPalettePtr-包含指向含有矩陣調色板條目的4x4固定點矩陣的緩沖器的 指針的變量從最后一個CCG改變。此緩沖器的大小由includedMatricesSize條目指示且 索引圖包含在MPInUse位掩碼中。includedMatricesSize 指示由matrixPalettePtr指向的矩陣調色板的字節(jié)的 大小的變量。根據一個或一個以上實施例,緩沖器僅需包括經更新的矩陣,且MPInUse掩碼 變量中的字段用以確定復制數據的適當索引位置。MPInUseO-15 16位掩碼,其中每一位集合對應于由matrixPalettePtr變量指向 的緩沖器中所包括的經更新的矩陣調色板。舉例來說,最低有效位對應于矩陣索引0,而最 高有效位對應于矩陣索引15。
MPInUsel6-31 16位掩碼,其中每一位集合對應于由matrixPalettePtr指向的緩 沖器中所包括的經更新的矩陣調色板。舉例來說,最低有效位對應于矩陣索引16,而最高有 效位對應于矩陣索引31。MPInUse32-47 16位掩碼,其中每一位集合對應于由matrixPalettePtr指向的緩 沖器中所包括的經更新的矩陣調色板。舉例來說,最低有效位對應于矩陣索引32,而最高有 效位對應于矩陣索引47。以下提供可由根據本發(fā)明的一個或一個以上實施例執(zhí)行的二級處理(例如,照 明)所使用的材料數據結構的內容的實例燈模型環(huán)境場景色彩(RGBA)-包含可用于照明模型的環(huán)境場景色彩集合。材料發(fā)射性(RGBA)-包含可用于材料發(fā)射性色彩的固定點RGBA色彩集合。材料環(huán)境(RGBA)-包含可用于材料環(huán)境色彩的固定點RGBA色彩集合。材料漫射(RGBA)-包含可用于材料漫射色彩的固定點RGBA色彩集合。材料鏡面反射(RGBA)-包含可用于材料鏡面反射色彩的固定點RGBA色彩集合。材料鏡面反射指數-包含固定點材料鏡面反射指數因子,其范圍可在0. 0與128. 0 之間。以下提供可由根據一個或一個以上實施例的二級處理使用的數據結構(例如,燈 模型數據結構)的額外實例。借助于非限制性實例,燈模型數據結構可針對在二級處理中 所執(zhí)行的照明中所使用的每一燈模型而存在。環(huán)境(RGBA)-包含環(huán)境光分量的固定點值。點光源向量(XYZ)-包含點光源方向向量,如果使用點光源。漫射(RGBA)-包含漫射分量的固定點值。鏡面反射(RGBA)-包含鏡面反射分量的固定點值。點光源截止余弦-包含點光源的余弦截止值。舉例來說,余弦值的范圍可從1. 0 到0.0(0度到90度)或-1(180度)。在-1(180度)的特殊情況下,光為全向光且非點光源。點光源指數_包含固定點點光源指數(如果使用點光源)。燈位置(XYZW)-包含固定點光位置或方向。如果W分量的值為0,則光為無限方向 光,否則其為位置燈。如果W為零衰減且點光源值可忽略。衰減因子(恒定)_包含衰減因子的恒定值衰減因子(線性)_包含衰減因子的線性分量衰減因子(二次)_包含衰減因子的二次分量本發(fā)明的實施例提供一種系統(tǒng)、方法和設備,其中二級處理器單元經配置以對圖 形管線數據操作,來自二級處理器的輸出經整合于圖形管線中,使得輸出可用于在圖形管 線中執(zhí)行的一個或一個以上模塊。根據此些實施例,作出是否使用二級處理器的確定,且在 待使用二級處理器的情況下,將可包含一個或一個以上命令的命令流提供到二級處理器。 二級處理使用包含在命令流中的信息且與一個或一個以上圖形管線處理模塊同步地對經 緩沖的圖形管線數據操作,使得二級處理器的處理模塊或任何圖形管線處理模塊均未蓋寫 數據。SPMM結合一個或一個以上SPIM而操作以使用包含二級處理模塊的處理狀態(tài)的反饋 信息使由二級處理和圖形管線處理模塊進行的數據存取同步。
如此,本發(fā)明的實施例提供使用可用的二級處理器平衡處理負載的能力。可能原 本閑置的二級處理器可用以促進由圖形處理單元執(zhí)行的圖形管線處理和/或由中央處理 單元或其它處理單元執(zhí)行的處理。由此,舉例來說,可能原本等待處理資源的操作可被引導 到可用二級處理器,此產生更快的處理量。有利的是,已確定使用二級處理器比未使用二級 處理器的處理存在處理量的增加,例如,如按每秒幀來測量。另外,本發(fā)明的實施例可使用 從二級處理反饋的信息來執(zhí)行負載平衡。舉例來說,反饋可用以確定二級處理器何時已達 到特定閾值處理水平。當確定二級處理器達到閾值處理容量時,處理可被引導到另一處理 單元,例如中央處理單元。另外,本發(fā)明的實施例提供利用處理單元以用于除其一級處理目的之外的目的的 能力以執(zhí)行一個或一個以上其它第二功能(如果此處理單元可用)??赡茉鹃e置的此硬 件(例如,處理單元)的使用導致硬件的更有效率的使用。在一個或一個以上示范性實施例中,可以硬件、軟件和/或固件,或任何組合實施 所描述的功能。如果以硬件實施,則功能可實施于一個或一個以上微處理器、微控制器、數 字信號處理器(DSP)、專用集成電路(ASCI)、現(xiàn)場可編程門陣列(FPGA)等中。此些組件可 駐留于通信系統(tǒng)、數據寫入和/或讀取系統(tǒng)或其它系統(tǒng)內。如果以軟件實施,則可將所述功 能作為一個或一個以上指令或代碼而存儲于計算機可讀媒體上或經由計算機可讀媒體來 傳輸。計算機可讀媒體包括有形的計算機存儲媒體與通信媒體(包括促進將計算機程序從 一個位置轉移到另一位置的任何媒體)。存儲媒體可為可由計算機存取的任何可用媒體。 借助于實例而非限制,此些計算機可讀媒體可包含RAM、快閃存儲器、只讀存儲器(ROM)、電 可擦除可編程只讀存儲器(EEPROM)、壓縮光盤只讀存儲器(CD-ROM)或其它光盤存儲裝置、 磁盤存儲裝置或其它磁性存儲裝置,或可用以存儲呈指令或數據結構的形式的所要程序代 碼且可由計算機存取的任何其它媒體。還可將術語“計算機可讀媒體”定義為有形的計算 機程序產品。如本文所使用,磁盤和光盤包括壓縮光盤(CD)、激光光盤、光盤、數字通用光盤 (DVD)、軟盤和藍光(blu-ray)光盤,其中“磁盤”通常以磁性方式再生數據,而“光盤”用激 光以光學方式再生數據。上述各項的組合也應包括在計算機可讀媒體的范圍內。盡管已依據當前被視為最實際且優(yōu)選的實施例的內容來描述所述設備和方法,但 是應理解,本發(fā)明無需限于所揭示的實施例。意欲涵蓋包括于權利要求書的精神和范圍內 的各種修改和類似布置,權利要求書的范圍應被賦予最廣泛的解釋,以涵蓋所有此些修改 和類似結構。本發(fā)明包括所附權利要求書的任何和所有實施例。
權利要求
一種方法,其包含響應于繪制請求,確定處理單元是否可用于輔助圖形管線處理,所述處理單元具有一級處理功能;請求分配所述處理單元以執(zhí)行除所述處理單元的所述一級處理功能之外的二級處理功能,以輔助圖形管線處理;在所述分配請求成功的情況下使圖形管線數據可用于所述處理單元;監(jiān)視所述處理單元的處理狀態(tài);以及使用所述處理狀態(tài)將由所述處理單元輸出的數據整合于所述圖形管線數據中。
2.根據權利要求1所述的方法,其中所述處理單元包含數字信號處理器,且所述二級 處理功能包含一個或一個以上照明功能。
3.根據權利要求1所述的方法,其中所述處理單元包含數字信號處理器,且所述二級 處理功能包含一個或一個以上貼皮功能。
4.根據權利要求1所述的方法,其進一步包含 確定所述處理單元是否正執(zhí)行其一級處理功能;以及在所述處理單元不在執(zhí)行其一級處理功能的情況下,分配所述處理單元。
5.根據權利要求1所述的方法,其中在所述分配請求成功的情況下,所述方法進一步 包含產生命令流以傳送待由所述處理單元使用的信息。
6.根據權利要求1所述的方法,其中所述將由所述處理單元輸出的數據整合于所述圖 形管線數據中進一步包含識別涉及所述處理單元和一個或一個以上圖形管線處理模塊的數據相依性; 使用所述處理狀態(tài)來確定所述處理單元是否完成處理所述數據相依性中所涉及的相 依數據;以及致使所述一個或一個以上圖形管線處理模塊等待所述相依數據,直到所述處理單元完 成處理所述相依數據為止。
7.一種設備,其包含圖形處理單元,其經配置以實施圖形管線;以及二級處理管理器,其耦合到所述圖形處理單元,所述二級處理管理器經配置以 確定耦合到所述二級處理管理器的處理單元是否可用于輔助圖形管線處理,所述處理 單元具有一級處理功能;請求分配所述處理單元以執(zhí)行除所述處理單元的所述一級處理功能之外的二級處理 功能,以輔助圖形管線處理;在所述分配請求成功的情況下,所述二級處理管理器進一步經配置以 使圖形管線數據可用于所述處理單元; 監(jiān)視所述處理單元的處理狀態(tài);以及使用所述處理狀態(tài)將由所述處理單元輸出的數據整合于所述圖形管線數據中。
8.根據權利要求7所述的設備,其中所述處理單元包含數字信號處理器,且所述二級 處理功能包含一個或一個以上照明功能。
9.根據權利要求7所述的設備,其中所述處理單元包含數字信號處理器,且所述二級 處理功能包含一個或一個以上貼皮功能。
10.根據權利要求7所述的設備,其進一步包含耦合到所述二級處理管理器的分配器, 所述分配器經配置以確定所述處理單元是否正執(zhí)行其一級處理功能;以及在所述處理單元不在執(zhí)行其一級處理功能的情況下,分配所述處理單元。
11.根據權利要求7所述的設備,其中在所述分配請求成功的情況下,所述二級處理管 理器進一步經配置以產生命令流以傳送待由所述處理單元使用的信息。
12.根據權利要求7所述的設備,其中經配置以將由所述處理單元輸出的數據整合于 所述圖形管線數據中的所述二級處理管理器進一步經配置以識別涉及所述處理單元和一個或一個以上圖形管線處理模塊的數據相依性;使用所述處理狀態(tài)確定所述處理單元是否完成處理所述數據相依性中所涉及的相依 數據;以及致使所述一個或一個以上圖形管線處理模塊等待所述相依數據,直到所述處理單元完 成處理所述相依數據為止。
13.一種存儲有計算機可執(zhí)行程序代碼的計算機可讀存儲器媒體,所述程序代碼包含 用于以下操作的代碼響應于繪制請求,確定處理單元是否可用于輔助圖形管線處理,所述處理單元具有一 級處理功能;請求分配所述處理單元以執(zhí)行除所述處理單元的所述一級處理功能之外的二級處理 功能,以輔助圖形管線處理;在所述分配請求成功的情況下使圖形管線數據可用于所述處理單元;監(jiān)視所述處理單元的處理狀態(tài);以及使用所述處理狀態(tài)將由所述處理單元輸出的數據整合于所述圖形管線數據中。
14.根據權利要求13所述的媒體,其中所述處理單元包含數字信號處理器,且所述二 級處理功能包含一個或一個以上照明功能。
15.根據權利要求13所述的媒體,其中所述處理單元包含數字信號處理器,且所述二 級處理功能包含一個或一個以上貼皮功能。
16.根據權利要求13所述的媒體,其中所述確定處理單元是否可用于輔助圖形管線處 理的程序代碼進一步包含用于以下操作的代碼確定所述處理單元是否正執(zhí)行其一級處理功能。
17.根據權利要求13所述的媒體,其進一步包含用于以下操作的程序代碼確定所述處理單元是否正執(zhí)行其一級處理功能;以及在所述處理單元不在執(zhí)行其一級處理功能的情況下,分配所述處理單元。
18.根據權利要求13所述的媒體,其中在所述分配請求成功的情況下,所述程序代碼 進一步包含用于以下操作的程序代碼產生命令流以傳送待由所述處理單元使用的信息。
19.根據權利要求13所述的媒體,其中所述將由所述處理單元輸出的數據整合于所述 圖形管線數據中的程序代碼進一步包含用于以下操作的程序代碼識別涉及所述處理單元和一個或一個以上圖形管線處理模塊的數據相依性; 使用所述處理狀態(tài)確定所述處理單元是否完成處理所述數據相依性中所涉及的相依 數據;以及致使所述一個或一個以上圖形管線處理模塊等待所述相依數據,直到所述處理單元完 成處理所述相依數據為止。
20.一種設備,其包含圖形處理單元,其經配置以實施圖形管線;以及二級處理管理裝置,其耦合到所述圖形處理單元,所述二級處理管理裝置包含 用于確定耦合到所述二級處理管理裝置的處理單元是否可用于輔助圖形管線處理的 裝置,所述處理單元具有一級處理功能;用于請求分配所述處理單元以執(zhí)行除所述處理單元的所述一級處理功能之外的二級 處理功能以輔助圖形管線處理的裝置;在所述分配請求成功的情況下,所述二級處理管理裝置進一步包含 用于使圖形管線數據可用于所述處理單元的裝置; 用于監(jiān)視所述處理單元的處理狀態(tài)的裝置;以及用于使用所述處理狀態(tài)將由所述處理單元輸出的數據整合于所述圖形管線數據中的直ο
21.根據權利要求20所述的設備,其中所述處理單元包含數字信號處理器,且所述二 級處理功能包含一個或一個以上照明功能。
22.根據權利要求20所述的設備,其中所述處理單元包含數字信號處理器,且所述二 級處理功能包含一個或一個以上貼皮功能。
23.根據權利要求20所述的設備,其進一步包含耦合到所述二級處理管理裝置的分配 裝置,所述分配裝置包含用于確定所述處理單元是否正執(zhí)行其一級處理功能的裝置;以及用于在所述處理單元不在執(zhí)行其一級處理功能的情況下分配所述處理單元的裝置。
24.根據權利要求20所述的設備,其中在所述分配請求成功的情況下,所述二級處理 管理裝置進一步包含用于產生命令流以傳送待由所述處理單元使用的信息的裝置。
25.根據權利要求20所述的設備,其中所述用于將由所述處理單元輸出的數據整合于 所述圖形管線數據中的裝置進一步包含用于識別涉及所述處理單元和一個或一個以上圖形管線處理模塊的數據相依性的裝置;用于使用所述處理狀態(tài)確定所述處理單元是否完成處理所述數據相依性中所涉及的 相依數據的裝置;以及用于致使所述一個或一個以上圖形管線處理模塊等待所述相依數據直到所述處理單 元完成處理所述相依數據為止的裝置。
全文摘要
本發(fā)明揭示一種系統(tǒng)、方法和設備,其中處理單元經配置以對圖形管線外的圖形管線數據執(zhí)行二級處理,其中來自所述二級處理的輸出經整合于所述圖形管線中,以便使其可用于所述圖形管線。作出是否使用二級處理的確定,且在將使用二級處理的情況下,將可包含一個或一個以上命令的命令流提供到所述二級處理單元,使得所述單元可定位和操作經緩沖的圖形管線數據。管理并監(jiān)視二級處理,以使由所述二級處理單元與圖形管線處理模塊進行的數據存取同步。
文檔編號G06T1/20GK101911111SQ200880124487
公開日2010年12月8日 申請日期2008年11月26日 優(yōu)先權日2007年11月30日
發(fā)明者邁克爾·D·斯特里特 申請人:高通股份有限公司