專利名稱:具有深度引擎的動(dòng)態(tài)復(fù)位的圖形系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及一種圖形系統(tǒng),且更具體地說,涉及一種具有深度引擎的動(dòng)態(tài)復(fù) 位的圖形系統(tǒng)。
M雙A
圖形系統(tǒng)可渲染用于例如視頻游戲、圖形、計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、模擬和可視 化工具、成像等各種應(yīng)用的2維(2-D)和3維(3-D)圖像??捎帽砻鎭砟M3-D圖像。 可用多邊形來近似表示每個(gè)表面,所述多邊形通常是三角形。用于表示3-D圖像的三角 形的數(shù)目可視表面的復(fù)雜性和圖像的所需分辨率而定。三角形的數(shù)目可以相當(dāng)大,例如 數(shù)百萬個(gè)三角形。每個(gè)三角形由三個(gè)頂點(diǎn)界定。每個(gè)頂點(diǎn)可與例如空間坐標(biāo)、色彩值和 紋理坐標(biāo)的各種屬性相關(guān)聯(lián)。每個(gè)屬性可具有三個(gè)或四個(gè)分量。舉例來說,空間坐標(biāo)通 常由水平(x)、垂直(y)和深度(z)坐標(biāo)給出。色彩值通常由紅色、綠色和藍(lán)色(r、 g、 b)值給出。紋理坐標(biāo)通常由水平和垂直坐標(biāo)(u和v)給出。
圖形系統(tǒng)中的圖形處理器可執(zhí)行各種圖形操作以渲染2-D或3-D圖像。所述圖像可 由許多三角形組成,且每個(gè)三角形由圖片元素(即,像素)組成。所述圖形處理器通過 確定每個(gè)三角形內(nèi)的每個(gè)像素的分量值來渲染所述三角形。圖形操作可包含光柵化、紋 理映射、著色等。
發(fā)明內(nèi)容
圖形系統(tǒng)可包含圖形處理器,其具有處理單元,所述處理單元執(zhí)行各種圖形操作以 渲染圖形圖像。
一個(gè)方面涉及- 一種設(shè)備,所述設(shè)備包括多個(gè)單元,其經(jīng)配置以處理圖形圖像;以 及深度引擎,其經(jīng)配置以接收和處理基于選擇值而從兩個(gè)單元中的一者選擇的數(shù)據(jù)。
另一方面涉及一種機(jī)器可讀存儲(chǔ)媒體,其存儲(chǔ)一組指令,包括使用若千圖形處理 模塊來處理圖形圖像;以及基亍選擇值而選擇性地將數(shù)據(jù)輸入從兩個(gè)單元中的一者切換
到深度引擎。
另 一方面涉及---種設(shè)備,所述設(shè)備包括多個(gè)用于處理圖形圖像的裝置;以及用于接收和處理基于選擇值而從兩個(gè)單元中的一者選擇的數(shù)據(jù)的深度測(cè)試裝置。
另一方面涉及一種方法,所述方法包括使用若千圖形處理模塊來處理圖形圖像; 接收選擇值;以及基于所述選擇值而選擇性地將數(shù)據(jù)輸入從兩個(gè)單元中的一者切換到深 度引擎。
圖1說明無線通信裝置。
圖2說明圖1的無線裝置內(nèi)的圖形處理器的組件。
圖3說明具有兩個(gè)深度引擎的圖形處理器的另一配置。
圖4說明具有深度引擎的動(dòng)態(tài)復(fù)位的圖形處理器的另--,配置。
具體實(shí)施例方式
圖1說明無線通信裝置100,其可在無線通信系統(tǒng)中使用。裝置ioo可以是蜂窩式
電話、終端、手機(jī)、個(gè)人數(shù)字助理(PDA)、膝上型計(jì)算機(jī)、視頻游戲單元或某一其它 裝置。裝置100可使用碼分多址(CDMA)、時(shí)分多址,例如全球移動(dòng)通信系統(tǒng)(GSM) 或某 -其它無線通信標(biāo)準(zhǔn)。
裝置100可經(jīng)由接收路徑和傳輸路徑提供雙向通信。在接收路徑上,- 個(gè)或 --個(gè)以 上基站所傳輸?shù)男盘?hào)可由天線112接收,且被提供給接收器(RCVR) 114。接收器114 調(diào)節(jié)和數(shù)字化接收到的信號(hào),且向數(shù)字部分120提供樣本以供進(jìn)一步處理。在傳輸路徑 上,傳輸器(TMTR) 116接收待從數(shù)字部分120傳輸?shù)臄?shù)據(jù),處理并調(diào)節(jié)所述數(shù)據(jù), 并產(chǎn)生經(jīng)調(diào)制的信號(hào),其經(jīng)由天線112傳輸?shù)揭粋€(gè)或---個(gè)以上基站。
可用一個(gè)或一個(gè)以上數(shù)字信號(hào)處理器(DSP)、微處理器、精簡(jiǎn)指令集計(jì)算機(jī)(RISC) 等來實(shí)施數(shù)字部分120。數(shù)字部分120還可制造在一個(gè)或一個(gè)以上專用集成電路(ASIC) 或某一其它類型的集成電路(IC)上。
數(shù)字部分120可包含各種處理和接口單元,例如調(diào)制解調(diào)器處理器122、視頻處理 器124、應(yīng)用程序處理器126、顯示處理器128、控制器/處理器130、圖形處理器140 和外部總線接口 (EBI) 160。
調(diào)制解調(diào)器處理器122執(zhí)行用于數(shù)據(jù)傳輸和接收的處理,例如編碼、調(diào)制、解調(diào)和
解碼。視頻處理器124可對(duì)視頻應(yīng)用(例如攝像放像機(jī)(camcorder)、視頻重放和視頻
會(huì)議)的視頻內(nèi)容(例如,靜止圖像、移動(dòng)視頻和移動(dòng)文本)執(zhí)行處理。應(yīng)用程序處理
器126針對(duì)例如多向呼叫、web瀏覽、媒體播放器和用戶接口的各種應(yīng)用執(zhí)行處理。顯示處理器128可執(zhí)行處理以促進(jìn)視頻、圖形和文本在顯示單元180上的顯示??刂破? 處理器130可指導(dǎo)數(shù)字部分120內(nèi)的各種處理和接口單元的操作。
高速緩沖存儲(chǔ)器系統(tǒng)150可存儲(chǔ)用于圖形處理器140的數(shù)據(jù)和/或指令。EBI 160促 進(jìn)數(shù)據(jù)在數(shù)字部分120 (例如,高速緩沖存儲(chǔ)器)與主存儲(chǔ)器170之間的轉(zhuǎn)移。
圖形處理器140可針對(duì)圖形應(yīng)用而執(zhí)行處理,且可如本文所描述那樣實(shí)施。 一般來 說,圖形處理器140可包含用于任何一組圖形操作的任何數(shù)目的處理單元或模塊。圖形 處理器40及其組件(下文以圖2到圖4描述)可在各種硬件單元中實(shí)施,所述硬件單 元例如ASIC、數(shù)字信號(hào)處理裝置(DSPD)、可編程邏輯裝置(PLD)、現(xiàn)場(chǎng)可編程門陣 列(FPGA)、處理器、控制器、微控制器、微處理器和其它電子單元。
圖形處理器140的某些部分可在固件和/或軟件中實(shí)施。舉例來說,可用執(zhí)行本文所 描述的功能的固件和/或軟件模塊(例如,程序、函數(shù)等等)來實(shí)施控制單元。固件和/ 或軟件代碼可存儲(chǔ)在存儲(chǔ)器(例如,圖1中的存儲(chǔ)器170)中,且由處理器(例如,處 理器130)執(zhí)行。存儲(chǔ)器可在處理器內(nèi)或在處理器外部實(shí)施。
圖形處理器140可實(shí)施軟件接口,例如開放式圖形庫(開放式GL)、直接3D等。 在公開可獲得的日期為2004年10月22日的題為"開放式GL⑧圖形系統(tǒng)說明書(The OpenGL Graphics System: A Specification)"版本2.0中描述開放式GL。
圖2說明圖1的無線裝置100內(nèi)的圖形處理器40的一種配置140A的---些組件或 處理單元。圖2可表示GPU(圖形處理單元)的前部。每個(gè)處理單元可以是以專用硬件、 處理器或兩者的組合實(shí)施的引擎。舉例來說,可用專用硬件來實(shí)施圖2中所示的引擎, 而可用可編程中央處理單元(CPU)或內(nèi)建處理器來實(shí)施碎片著色器214。
在其它配置中,可視所需的優(yōu)化而定以各種次序來布置處理單元200到216。舉例 來說,為了節(jié)省功率,可能希望較早在管線中執(zhí)行模板和深度測(cè)試,使得不可見的像素 較早被丟棄,如圖2中所示。作為另一實(shí)例,模板和深度引擎206可位亍紋理映射引擎 212之后,如圖3中所示。
在圖2中,各種處理單元200到216布置在管線中,以渲染2-D和3D圖像。代替 圖2中所示的單元或除圖2中所示的單元之外,圖形處理器140A的其它配置可包含其 它單元。
命令引擎200可接收并解碼傳入的指定待執(zhí)行的圖形操作的渲染命令或指令。三角 形位置和z設(shè)置引擎202可計(jì)算用于隨后的光柵化過程的必要參數(shù)。舉例來說,三角形 位置和z設(shè)置引擎202可計(jì)算用于每個(gè)三角形的三條邊的線性等式的系數(shù)、用于深度(z) 斜率的系數(shù)等。三角形位置和z設(shè)置引擎202可被稱為圖元設(shè)置,其進(jìn)行視口變換和圖元組合、對(duì)剪切窗口的圖元拒絕以及背面剔除(backface culling)。
光柵化引擎204 (或掃描轉(zhuǎn)換器)可將每個(gè)三角形或每條線分解成像素,并針對(duì)每 個(gè)像素產(chǎn)生屏幕坐標(biāo)。
深度引擎206可對(duì)每個(gè)像素執(zhí)行模板測(cè)試,以確定是否應(yīng)顯示或丟棄像素。模板緩 沖器可存儲(chǔ)正被渲染的圖像中每個(gè)像素位置的當(dāng)前模板值。深度引擎206可將每個(gè)像素 的所存儲(chǔ)的模板值與參考值進(jìn)行比較,且基于所述比較而保留或丟棄所述像素(例如, 產(chǎn)生通過或失敗旗標(biāo))。
如果適用的話,深度引擎206還可對(duì)每個(gè)像素執(zhí)行深度測(cè)試(也稱為z測(cè)試),以 確定是否應(yīng)顯示或丟棄所述像素。z緩沖器存儲(chǔ)正被渲染的圖像中的每個(gè)像素位置的當(dāng) 前z值。深度引擎206可將每個(gè)像素的z值(當(dāng)前z值)與z緩沖器中的對(duì)應(yīng)z值(所 存儲(chǔ)的z值)進(jìn)行比較,基亍所述比較而產(chǎn)生通過或失敗旗標(biāo),顯示所述像素,且更新 z緩沖器以及可能模板緩沖器(如果當(dāng)前z值比所存儲(chǔ)的z值更靠近/更近的話)。如果當(dāng) 前z值比所存儲(chǔ)的z值更遠(yuǎn),那么深度引擎206可丟棄所述像素。此早期深度/模板測(cè)試 和操作可拒絕可能的不可見像素/圖元。
屬性設(shè)置引擎208可計(jì)算用于像素屬性的隨后插入的參數(shù)。舉例來說,屬性設(shè)置引 擎208可計(jì)算用于屬性插入的線性等式的系數(shù)。像素插入引擎210可基于像素的屏幕坐 標(biāo)和來自屬性設(shè)置引擎208的使用信息來計(jì)算用于每個(gè)三角形內(nèi)的每個(gè)像素的屬性分量 值。屬性設(shè)置引擎208和像素插入引擎210可組合在屬性內(nèi)插器中,以在每一可見圖元 的像素上進(jìn)行內(nèi)插。
紋理映射引擎(或紋理引擎)212可執(zhí)行紋理映射(如果啟用的話),以將紋理應(yīng)用 于每個(gè)三角形。紋理圖像可存儲(chǔ)在紋理緩沖器中。每個(gè)三角形的三個(gè)頂點(diǎn)可與紋理圖像 中的三個(gè)( ,v)坐標(biāo)相關(guān)聯(lián),且三角形的每個(gè)像素于是可與紋理圖像中的特定紋理坐 標(biāo)相關(guān)聯(lián)??赏ㄟ^用每個(gè)像素的紋理坐標(biāo)所指示的位置處的紋理圖像的顏色修改所述像 素的顏色來實(shí)現(xiàn)紋理化。
每個(gè)像素與例如顏色、深度、紋理等信息相關(guān)聯(lián)。"碎片"是像素及其相關(guān)聯(lián)的信 息。碎片著色器214可將包括指令序列的軟件程序應(yīng)用于每個(gè)碎片。碎片著色器214可 修改z值。碎片著色器214可產(chǎn)生對(duì)是否丟棄像素的測(cè)試,并將測(cè)試結(jié)果發(fā)送到深度引 擎206。碎片著色器214還可將紋理請(qǐng)求發(fā)送到紋理映射引擎212。
碎片引擎216可完成最終像素渲染,且對(duì)每個(gè)碎片執(zhí)行例如阿爾法測(cè)試(如果啟用
的話)、霧化融合、阿爾法融合、邏輯運(yùn)算和抖動(dòng)操作等功能,且將結(jié)果提供給色彩緩
沖器。如果啟用阿爾法測(cè)試,那么碎片引擎216可將阿爾法測(cè)試的結(jié)果發(fā)送給深度引擎216,其可確定是否顯示像素。
如在圖2中那樣在早期階段執(zhí)行深度測(cè)試可節(jié)約功率和帶寬。圖形處理器140A不 需要浪費(fèi)計(jì)算功率和存儲(chǔ)器帶寬來對(duì)那些不可見像素執(zhí)行屬性設(shè)置、像素插入、紋理拾 取和應(yīng)用著色器程序。
然而,些著色器程序修改深度值。圖3說明在碎片著色器214之后執(zhí)行深度測(cè)試 300且停用早期深度引擎206的圖形處理器140B。在管線中具有兩個(gè)完全相同的深度引 擎206, 300在設(shè)計(jì)中構(gòu)成了冗余性,這對(duì)功率和微芯片面積不利。
圖4說明通過設(shè)計(jì)具有一個(gè)深度引擎400的圖形處理器140C而實(shí)現(xiàn)的對(duì)此問題的 解決方案,所述深度引擎400可基于圖形應(yīng)用而動(dòng)態(tài)地切換或復(fù)位到早期Z測(cè)試位置或 后著色器。圖形應(yīng)用可進(jìn)行早期深度(z)測(cè)試,或在著色器z值修改之后進(jìn)行后期深 度測(cè)試。圖形處理器140C中的軟件或數(shù)字部分120可事先知道著色器程序。
圖4中的"早期z"輸入可以是一位二進(jìn)制值(1或0),以指示早期z或非早期z。 如果選擇"早期z",那么第一多路復(fù)用器402將數(shù)據(jù)從光柵化引擎204傳遞到深度引擎 400,且第二多路復(fù)用器404將數(shù)據(jù)從深度引擎400傳遞到屬性設(shè)置引擎208。圖4中的 多路復(fù)用器402、 404和406可由例如開關(guān)等其它組件來實(shí)施。
如果不選擇"早期z",那么第二多路復(fù)用器404將數(shù)據(jù)從光柵化引擎204傳遞到屬 性設(shè)置引擎208,且第 一多路復(fù)用器402將數(shù)據(jù)從碎片著色器214傳遞到深度引擎400。 第三多路復(fù)用器406可將數(shù)據(jù)從深度引擎400傳遞到另一組件,例如碎片引擎216。
圖4中的圖形處理器140C具有支持早期Z和經(jīng)著色器修改的Z情況的靈活性。與 圖3相比,圖形處理器140C不需要建立兩個(gè)完全相同的深度引擎。
本文所描述的圖形系統(tǒng)可用于無線通信、計(jì)算、聯(lián)網(wǎng)、個(gè)人電子裝置等。所屬領(lǐng)域 的技術(shù)人員將容易明白對(duì)上文所描述的實(shí)施例的各種修改,且在不脫離本發(fā)明的精神或 范圍的情況下,本文所定義的一般原理可應(yīng)用于其它實(shí)施例。因此,本發(fā)明不希望限于 本文所展示的實(shí)施例,而是應(yīng)被賦予與本文所揭示的原理和新穎特征一致的最寬范圍。
權(quán)利要求
1. 一種設(shè)備,其包括多個(gè)單元,其經(jīng)配置以處理圖形圖像;以及深度引擎,其經(jīng)配置以接收和處理基于選擇值而從兩個(gè)單元中的一者選擇的數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述深度引擎經(jīng)配置以對(duì)每個(gè)像素執(zhí)行模板測(cè) 試,以確定是否丟棄所述像素,所述模板測(cè)試包括將每個(gè)像素的所存儲(chǔ)的模板值與 參考值進(jìn)行比較。
3. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述深度引擎經(jīng)配置以接收阿爾法測(cè)試結(jié)果和碎片著色器測(cè)試結(jié)果中的至少一者,對(duì)每個(gè)像素執(zhí)行模板測(cè)試,且確定是否顯示所述 像素。
4. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述深度引擎經(jīng)配置以對(duì)每個(gè)像素執(zhí)行深度測(cè) 試,以確定是否丟棄所述像素,所述深度測(cè)試包括將每個(gè)像素的當(dāng)前z值與緩沖器 中所存儲(chǔ)的對(duì)應(yīng)z值進(jìn)行比較,以及基于所述比較而確定是否丟棄所述像素。
5. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述深度引擎經(jīng)配置以接收阿爾法測(cè)試結(jié)果和碎 片著色器測(cè)試結(jié)果中的至少一者,對(duì)每個(gè)像素執(zhí)行深度測(cè)試,且確定是否顯示所述 像素,所述深度測(cè)試包括將每個(gè)像素的當(dāng)前z值與緩沖器所存儲(chǔ)的對(duì)應(yīng)z值進(jìn)行比 較。
6. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述多個(gè)單元包括命令引擎、三角形位置和z設(shè) 置單元、光柵化引擎、屬性設(shè)置引擎、像素插入引擎、紋理引擎和碎片著色器中的 至少兩者。
7. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述兩個(gè)單元包括光柵化引擎和碎片著色器。
8. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述碎片著色器經(jīng)配置以執(zhí)行修改z值和丟棄像 素中的至少一者。
9. 根據(jù)權(quán)利要求1所述的設(shè)備,其進(jìn) -步包括切換裝置,其用以接收所述選擇值且選 擇性地將數(shù)據(jù)從第一單元或第二單元傳遞到所述深度引擎。
10. 根據(jù)權(quán)利要求l所述的設(shè)備,其中所述設(shè)備是移動(dòng)電話。
11.一種機(jī)器可讀存儲(chǔ)媒體,其存儲(chǔ)一組指令,所述指令包括 使用若干圖形處理模塊來處理圖形圖像;以及基于選擇值而選擇性地將數(shù)據(jù)輸入從兩個(gè)單元中的 者切換到深度引擎。
12. 根據(jù)權(quán)利要求n所述的機(jī)器可讀存儲(chǔ)媒體,其中所述兩個(gè)單元包括光柵化引擎和碎片著色器。
13. —種設(shè)備,其包括多個(gè)用于處理圖形圖像的裝置;以及用于接收和處理基于選擇值而從兩個(gè)單元中的 者選擇的數(shù)據(jù)的深度測(cè)試裝置。
14. 根據(jù)權(quán)利要求13所述的設(shè)備,其中所述兩個(gè)單元包括光柵化引擎和碎片著色器。
15. —種方法,其包括使用若千圖形處理模塊來處理圖形圖像;接收選擇值;以及基于所述選擇值而選擇性地將數(shù)據(jù)輸入從兩個(gè)單元中的 者切換到深度引擎。
16. 根據(jù)權(quán)利要求15所述的方法,其進(jìn)一步包括對(duì)每個(gè)像素執(zhí)行模板測(cè)試,以確定是 否丟棄所述像素,所述模板測(cè)試包括將每個(gè)像素的所存儲(chǔ)的模板值與參考值進(jìn)行比 較。
17. 根據(jù)權(quán)利要求15所述的方法,其進(jìn) 步包括接收阿爾法測(cè)試結(jié)果和碎片著色器測(cè)試結(jié)果中的至少一者; 對(duì)每個(gè)像素執(zhí)行模板測(cè)試;以及 確定是否顯示所述像素。
18. 根據(jù)權(quán)利要求15所述的方法,其進(jìn)一步包括對(duì)每個(gè)像素執(zhí)行深度測(cè)試,以確定是 否丟棄所述像素,其中所述深度測(cè)試包括將每個(gè)像素的當(dāng)前z值與緩沖器中所存儲(chǔ) 的對(duì)應(yīng)z值進(jìn)行比較。
19. 根據(jù)權(quán)利要求15所述的方法,其進(jìn)一歩包括接收阿爾法測(cè)試結(jié)果和碎片養(yǎng)色器測(cè)試結(jié)果中的至少一者;對(duì)每個(gè)像素執(zhí)行深度測(cè)試,其中所述深度測(cè)試包括將每個(gè)像素的當(dāng)前z值與緩沖 器中所存儲(chǔ)的對(duì)應(yīng)Z值進(jìn)行比較;以及基于所述深度測(cè)試,確定是否顯示所述像素。
20. 根據(jù)權(quán)利要求15所述的方法,其中所述模塊包括命令引擎、三角形位置和z設(shè)置 單元、光柵化引擎、屬性設(shè)置引擎、像素插入引擎、紋理引擎和碎片養(yǎng)色器中的至 少兩者。
21. 根據(jù)權(quán)利要求15所述的方法,其中所述兩個(gè)單元包括光柵化引擎和碎片著色器。
22. 根據(jù)權(quán)利要求15所述的方法,其中所述碎片著色器經(jīng)配置以執(zhí)行修改z值和丟棄 像素中的至少-- 者。
全文摘要
一種圖形系統(tǒng)包含圖形處理器,其包括多個(gè)經(jīng)配置以處理圖形圖像的單元;以及深度引擎,其經(jīng)配置以接收和處理基于選擇值而從兩個(gè)單元中的一者選擇的數(shù)據(jù)。
文檔編號(hào)G06T15/00GK101443818SQ200780017169
公開日2009年5月27日 申請(qǐng)日期2007年5月15日 優(yōu)先權(quán)日2006年5月16日
發(fā)明者春 于, 布萊恩·魯藤伯格, 云 杜, 焦國(guó)方 申請(qǐng)人:高通股份有限公司