專利名稱:處理支持固定管線的三維圖形的制作方法
技術(shù)領(lǐng)域:
本公開涉及處理三維(3D)圖形。
背景技術(shù):
可以獲得各種三維(3D)圖形應(yīng)用,以用于在諸如移動電話、個(gè)人數(shù)字助理 (PDA)和便攜式游戲機(jī)的移動環(huán)境上執(zhí)行。為了處理3D應(yīng)用,可以獲得針對移動環(huán) 境而設(shè)計(jì)的3D圖形應(yīng)用編程接口(API)。3D圖形API中的一些支持固定管線(fixed pipeline),而其它支持可編程管線。
發(fā)明內(nèi)容
技術(shù)問題針對處理3D圖形來描述技術(shù)、設(shè)備和系統(tǒng)。具體地,3D圖形處理技術(shù)、設(shè)備 和系統(tǒng)支持可編程管線和固定管線二者。技術(shù)方案一方面,提供了一種用于處理3D圖形的圖形處理器。所述圖形處理器包括固 定管線代碼生成器,用于把支持固定管線的應(yīng)用編程接口(API)轉(zhuǎn)換為第一微代碼;以 及渲染器(shader)管線代碼生成器,用于把支持可編程管線的API轉(zhuǎn)換為第二微代碼。 所述圖形處理器包括與固定管線代碼生成器和渲染器管線代碼生成器相通信的渲染器 管線,用于通過使用渲染器程序來處理第一和第二微代碼中的至少一個(gè)。實(shí)現(xiàn)能夠可選擇地包括一個(gè)或多個(gè)以下特征。所述處理器可以進(jìn)一步包括與 固定管線代碼生成器和渲染器管線代碼生成器相通信的API選擇器,用于接收輸入API, 并確定所接收的輸入API是否支持固定管線或可編程管線。另外,所述渲染器管線可以包括頂點(diǎn)渲染器和片段渲染器。所述固定管線代碼 生成器可以包括狀態(tài)單元,用于解析所接收的輸入API的對象的屬性,并基于該屬性來 輸出狀態(tài)信息。所述固定管線代碼生成器可以包括代碼生成器,用于基于該狀態(tài)信息 來生成第一微代碼;以及代碼緩沖器,用于存儲所生成的第一微代碼。所述處理器可以進(jìn)一步包括危險(xiǎn)(hazard)控制器,用于檢查第一和第二微代 碼中的至少一個(gè)的處理順序和執(zhí)行時(shí)間,以便標(biāo)識指示停止(stall)的危險(xiǎn)的發(fā)生并響應(yīng) 于該危險(xiǎn)而執(zhí)行處理。所述危險(xiǎn)控制器可以包括危險(xiǎn)檢查器,用于檢查每個(gè)微代碼的 處理順序和執(zhí)行時(shí)間,以檢查危險(xiǎn)是否已經(jīng)發(fā)生;以及重排序單元,用于對產(chǎn)生危險(xiǎn)的 微代碼的處理順序重排序。所述危險(xiǎn)控制器可以進(jìn)一步包括轉(zhuǎn)發(fā)單元,用于轉(zhuǎn)發(fā)產(chǎn)生 危險(xiǎn)的微代碼的先前微代碼的結(jié)果值,以用于任何其它微代碼的執(zhí)行。所述支持固定管線的API可以是OpenGL ES 1.x,而所述支持可編程管線的API 可以是 OpenGL ES 2.x。另一方面,提供了一種由用于處理3D圖形的圖形處理器執(zhí)行的方法。該方法包 括把支持固定管線的應(yīng)用編程接口(API)轉(zhuǎn)換為可由支持可編程管線的渲染器識別的
4第一微代碼;以及處理所述微代碼,以處理3D圖形。所處理的3D圖形能夠存儲在諸如 緩沖器的存儲器上。而且,所處理的3D圖形能夠顯示在移動環(huán)境的顯示單元上。方法的實(shí)現(xiàn)能夠可選擇地包括一個(gè)或多個(gè)以下特征。所述方法可以進(jìn)一步包括 把支持可編程管線的API轉(zhuǎn)換為可由渲染器識別的微代碼。把支持固定管線的API和支持可編程管線的API轉(zhuǎn)換為第一和第二微代碼的步驟 可以包括基于輸入API的對象的屬性來獲取狀態(tài)信息,以及基于所述狀態(tài)信息來生成 第一和第二微代碼中的至少一個(gè)。把支持固定管線的API和支持可編程管線的API轉(zhuǎn)換為第一和第二微代碼的步驟 可以進(jìn)一步包括檢查危險(xiǎn)是否已經(jīng)發(fā)生以致停止隨后微代碼的執(zhí)行。把支持固定管線的API和支持可編程管線的API轉(zhuǎn)換為第一和第二微代碼的步驟 可以進(jìn)一步包括當(dāng)確定危險(xiǎn)已經(jīng)發(fā)生時(shí),重排序產(chǎn)生危險(xiǎn)的微代碼。把支持固定管線 的API和支持可編程管線的API轉(zhuǎn)換為第一和第二微代碼的步驟可以進(jìn)一步包括當(dāng)確 定危險(xiǎn)已經(jīng)發(fā)生時(shí),把產(chǎn)生危險(xiǎn)的微代碼的先前微代碼的結(jié)果值轉(zhuǎn)發(fā)到不同的微代碼。再一方面,一種計(jì)算裝置包括中央處理單元(CPU);以及圖形處理器,與該 CPU耦接來處理3D圖形。所述圖形處理器包括固定管線代碼生成器,用于把支持固 定管線的API轉(zhuǎn)換為第一微代碼;渲染器管線代碼生成器,用于把支持可編程管線的API 轉(zhuǎn)換為第二微代碼;以及與固定管線代碼生成器和渲染器管線代碼生成器相通信的渲染 器管線,用于接收第一和第二微代碼中的至少一個(gè),并處理渲染器程序。計(jì)算裝置的實(shí)現(xiàn)能夠可選擇地包括一個(gè)或多個(gè)以下特征。所述圖形處理器能夠 包括與固定管線代碼生成器和渲染器管線代碼生成器相通信的API選擇器,用于接收 輸入API,并確定所接收的輸入API是否支持固定管線或可編程管線。所述渲染器管線 能夠包括頂點(diǎn)渲染器和片段渲染器。所述固定管線代碼生成器能夠包括狀態(tài)單元,用于 解析輸入API的對象的屬性,并基于所解析的屬性來輸出狀態(tài)信息。所述渲染器管線能 夠包括代碼生成器,用于基于輸出的狀態(tài)信息來生成第一微代碼。而且,所述渲染器 管線能夠包括代碼緩沖器,用于存儲第一微代碼。所述圖形處理器能夠進(jìn)一步包括 與固定管線代碼生成器和渲染器管線代碼生成器相通信的危險(xiǎn)控制器,用于檢查第一和 第二微代碼中的至少一個(gè)的處理順序和執(zhí)行時(shí)間,以便發(fā)現(xiàn)指示停止的危險(xiǎn)的發(fā)生并響 應(yīng)于該危險(xiǎn)而執(zhí)行處理。此外,所述危險(xiǎn)控制器能夠包括危險(xiǎn)檢查器,用于檢查每個(gè) 微代碼的處理順序和執(zhí)行時(shí)間,以檢查危險(xiǎn)是否已經(jīng)發(fā)生;以及重排序單元,用于對產(chǎn) 生危險(xiǎn)的微代碼的處理順序重排序。有益效果技術(shù)、設(shè)備和系統(tǒng)的實(shí)現(xiàn)能夠潛在地提供一個(gè)或多個(gè)以下優(yōu)勢。所提出的圖形 處理設(shè)備、系統(tǒng)和方法能夠提供縮小的硬件尺寸和功耗。對于可編程管線或固定管線, 不要求附加的命令或編譯,并且所要求的存儲器能夠最小化。另外,由危險(xiǎn)所導(dǎo)致的渲 染器的停止能夠被抑制,以由此改進(jìn)3D圖形的性能。
圖1圖示了使用渲染器的可編程管線的結(jié)構(gòu)。圖2是實(shí)現(xiàn)3D圖形處理的計(jì)算機(jī)裝置的示例性示意框圖。
圖3是用于處理3D圖形的圖形處理器的示例性示意框圖。圖4是固定管線代碼生成器的示例性示意框圖。圖5圖示了根據(jù)屬性的狀態(tài)的示例。圖6圖示了用于普通操作的64位微代碼的格式。圖7圖示了用于流程控制的64位微代碼的格式。圖8圖示了在霧化狀態(tài)中微代碼的生成。圖9圖示了危險(xiǎn)發(fā)生的情況。圖10是圖示了固定管線代碼生成器的控制器和代碼緩沖器的示意框圖。圖11是圖示了圖形處理方法的流程圖。
具體實(shí)施例方式OpenGL ES (用于嵌入式系統(tǒng)的OpenGL)是針對諸如移動電話、個(gè)人數(shù)字助理 (PDA)、和控制臺的嵌入式裝置而設(shè)計(jì)的OpenGL 3D圖形應(yīng)用編程接口(API)的子集。 OpenGL ES由非營利技術(shù)聯(lián)盟Khronos集團(tuán)有限公司管理。可以獲得OpenGL ES規(guī)范的幾個(gè)版本。例如,OpenGL ES 1.0針對OpenGL 1.3 規(guī)范來擬訂,OpenGL ES 1.1相對于OpenGL 1.5規(guī)范來描述,而OpenGL ES 2.0相對于 OpenGL 2.0規(guī)范來描述。2007年3月公布的OpenGLES 2.0消除了固定功能繪制管線的 大部分,而支持可編程的管線。該變換和光照(lighting)管線的幾乎全部繪制特征(諸 如,固定功能API先前指定的材料和光參數(shù)的規(guī)范)被圖形程序員所寫的渲染器所取代。OpenGL ES 1.x 包括 OpenGL ES 1.0、1.1、1.5 的至少一個(gè)版本。OpenGLES 2.x 包括OpenGL ES 2.0的至少一個(gè)版本。OpenGLES 1.x針對固定功能硬件而設(shè)計(jì),并提供加速、圖像質(zhì)量、和性能。而 且,OpenGL ES 1.x著重于API的硬件加速。與OpenGL ES 1.x相比,OpenGL ES 2.x使 能完全可編程的3D圖形。而且,OpenGL ES 2.x著重于具有創(chuàng)建渲染器和程序?qū)ο蟮哪?力及寫頂點(diǎn)和片斷渲染器的能力的可編程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支持的可編程管線使用渲染器。渲染器是軟件指令的集合,其最初用于以 高度靈活性來計(jì)算圖形硬件上的繪制效果。例如,Direct3D、OpenGL>和OpenGL ES圖形庫使用下述三種類型的渲染器。(1)頂點(diǎn)渲染器針對給予圖形處理器的每個(gè)頂點(diǎn)運(yùn)行一次。其目的是把虛擬空間 中每個(gè)頂點(diǎn)的3D位置變換為3D位置顯現(xiàn)在屏幕上的2D坐標(biāo)(以及Z緩沖器的深度值)。 頂點(diǎn)渲染器能夠操縱諸如位置、色彩、及紋理坐標(biāo)的特性。頂點(diǎn)渲染器的輸出提供至管 線中的下一級,其當(dāng)呈現(xiàn)時(shí)是幾何渲染器,或者在其它情況下是光柵化器(rasterizer)。(2)幾何渲染器能夠從網(wǎng)格添加和去除頂點(diǎn)。幾何渲染器能夠用來按程序生成幾 何,或者把體積的細(xì)節(jié)添加到現(xiàn)存網(wǎng)格,其成本太高以致不能在中央處理單元(CPU)上 處理。當(dāng)幾何渲染器正被使用時(shí),該輸出然后發(fā)送至光柵化器。(3)片斷渲染器(也稱為像素渲染器)能夠計(jì)算個(gè)別片斷(或像素)的色彩。對此級的輸入來自光柵化器,該光柵化器填充正經(jīng)由圖形管線發(fā)送的多邊形。片斷渲染器 典型地能夠用于場景光照及諸如凹凸映射(bumpmapping)和調(diào)色的相關(guān)效果。固定管線 通過把有限狀態(tài)變量調(diào)整到固定結(jié)構(gòu)來僅僅提供有限形式的計(jì)算。與之相比,片斷渲染 器通過編程而允許總體的復(fù)雜的計(jì)算,并且理論上能夠提供無限狀態(tài)變量。圖1圖示了使用渲染器的可編程管線的結(jié)構(gòu)。頂點(diǎn)渲染器110接收用戶定義的 屬性變量,并計(jì)算坐標(biāo)變換和/或光照。頂點(diǎn)渲染器110的輸出由光柵化器120變換為 光柵格式。片斷渲染器130執(zhí)行諸如紋理計(jì)算(即,計(jì)算、操作)或調(diào)色的處理。片斷 渲染器130的輸出發(fā)送至幀緩沖器140,以便被處理以進(jìn)行顯示。由于固定管線和可編程管線之間的差異,所以O(shè)penGL ES 2.x不與OpenGL ES
1.x后向兼容。可編程管線能夠向用戶提供靈活性,而固定管線在處理速度方面有優(yōu)勢。并非圖形場景中包括的全部對象都需要渲染器。由此,可以基于OpenGLES 1.x 規(guī)范而不是OpenGL ES 2.x來表達(dá)不要求壯觀、華麗圖形效果的場景部分、或要求快速計(jì) 算處理的部分。由此,本說明書中描述的技術(shù)、設(shè)備、和系統(tǒng)能夠用來支持可編程管線 和固定管線二者。通過支持可編程和固定管線二者,硬件尺寸和功率使用能夠?qū)τ诰唧w 移動環(huán)境而降低并有效率。下面描述的技術(shù)、設(shè)備、和系統(tǒng)能夠?qū)崿F(xiàn)為用于處理諸如Direct3D、OpenGL, OpenGL ES等等的不同3D圖形API (應(yīng)用編程接口)的硬件和/或軟件。OpenGL ES 1.x 可以包括OpenGL ES 1.0、1.1、1.5的至少一個(gè)版本。OpenGL ES 2.x可以包括OpenGL ES 2.0。出于闡釋性目的,OpenGLES 1.x在本說明書中描述為支持固定管線的圖形 API,而OpenGL ES 2.x描述為支持可編程管線的圖形API。本說明書中描述的技術(shù)、設(shè) 備、和系統(tǒng)能夠應(yīng)用于支持固定管線或可編程管線的其它圖形API。下面的文檔的內(nèi)容通過引用而并入于此“OpenGL ES 1.1 規(guī)范”,該規(guī)范能夠作為 http://www.khronos.org/registry/gles/ specs/1.l/es_full_spec.1.1.12.pdf 而獲得;以及“OpenGLES 2.0 規(guī)范”,該規(guī)范能夠作為http://www.khronos.org/registry/gles/ specs/2.0/es_full_spec_2.0.23.pdf 而獲得。圖2是用于實(shí)現(xiàn)3D圖形處理的計(jì)算機(jī)裝置的示例性示意框圖。計(jì)算機(jī)裝置 200可以是諸如移動電話、個(gè)人數(shù)字助理(PDA)、控制臺、移動個(gè)人計(jì)算機(jī)等等的移動裝 置。計(jì)算機(jī)裝置200包括中央處理單元(CPU) 210、存儲器220、圖形處理器230、及接 口單元240。計(jì)算機(jī)裝置200的各個(gè)元件可以經(jīng)由系統(tǒng)總線290而連接。CPU 210能夠 運(yùn)行軟件應(yīng)用。存儲器220存儲CPU 220所使用的應(yīng)用和數(shù)據(jù)。圖形處理器230執(zhí)行3D圖形處理。圖形處理器230可以處理支持固定管線的圖 形API和/或支持可編程管線的圖形API。例如,圖形處理器230可以處理支持OpenGL ES 1.x和/或OpenGL ES 2.x的API。關(guān)于FIGS X來在下文公開圖形處理器230的詳細(xì)操作。圖3是根據(jù)本說明書實(shí)施例的圖形處理器的示例性示意框圖。圖形處理器300 包括API選擇器310、固定管線代碼生成器330、渲染器管線代碼生成器340、及渲染器 管線360。
7
API選擇器310接收API,并確定所接收的API是否支持固定管線和/或可編程 管線。當(dāng)確定所接收的API支持固定管線時(shí),API選擇器310把固定管線支持API發(fā)送 至固定管線代碼生成器330。當(dāng)確定所接收的API支持可編程管線時(shí),API選擇器310把 可編程管線支持API發(fā)送至渲染器管線代碼生成器340。固定管線代碼生成器330把支持固定管線的API轉(zhuǎn)換為能夠由渲染器管線360識 別的微代碼(即,第一微代碼)。所轉(zhuǎn)換的第一微代碼標(biāo)識渲染器管線360要執(zhí)行的操 作。例如,固定管線代碼生成器330可以基于OpenGLESl.x來把該API轉(zhuǎn)換為基于渲染 的微代碼。渲染器管線代碼生成器340把支持可編程管線的API轉(zhuǎn)換為能夠由渲染器管線 360識別的其它微代碼(即,第二微代碼)。所轉(zhuǎn)換的第二管線微代碼標(biāo)識渲染器管線 360要執(zhí)行的另一操作。例如,渲染器管線代碼生成器340可以基于OpenGL ES 2.x來把 該API轉(zhuǎn)換為基于渲染器的微代碼。當(dāng)固定管線代碼生成器330所生成的第一微代碼和/或渲染器管線代碼生成器 340所生成的第二微代碼在渲染器管線360中執(zhí)行時(shí),危險(xiǎn)控制器350檢查可能導(dǎo)致停止 的危險(xiǎn)。當(dāng)危險(xiǎn)發(fā)生時(shí),危險(xiǎn)控制器350執(zhí)行處理來抑制停止。S卩,在生成這樣的危險(xiǎn) 的情況下,危險(xiǎn)控制器350可以對第一和第二微代碼進(jìn)行重排序、轉(zhuǎn)發(fā)和/或互鎖。渲染器管線360通過抽取(fetch)、解碼、和執(zhí)行第一和第二微代碼的處理來處 理渲染器程序。如圖1所示,渲染器管線360可以包括頂點(diǎn)渲染器和片斷渲染器。頂點(diǎn) 渲染器接收各個(gè)頂點(diǎn)和用來計(jì)算所述頂點(diǎn)所需要的常數(shù),計(jì)算坐標(biāo)變換和光照,并輸出 變換的值。所變換的值可以經(jīng)受剪切和光柵化處理,其然后輸入至片斷渲染器。片斷渲 染器處理紋理操作和調(diào)色。支持可編程管線的OpenGL ES 2.x基本上使用渲染器程序。由此,渲染器管線 代碼生成器340能夠生成用于渲染器管線360的第二微代碼。根據(jù)支持固定管線的OpenGL ES 1.x來生成基于渲染器的微代碼并不簡單。只 要對象的屬性改變?yōu)橹С諳penGL ES 1.x,編譯就能夠?qū)崟r(shí)地執(zhí)行。然而,這將要求硬件 的附加代碼存儲器。當(dāng)僅僅單個(gè)代碼存儲器被選擇來使用時(shí),只要從OpenGL ES 2.x到 OpenGL ES 1.x禾Π /或從OpenGL ES 1.x到OpenGL ES 2.x的轉(zhuǎn)換發(fā)生時(shí),就將生成開銷 來刪除先前代碼存儲器的命令,并插入新編譯的命令。附加代碼存儲器或移動環(huán)境中開銷的增加將伴隨著硬件尺寸和附加功耗的增 加。如此,圖形處理器300應(yīng)當(dāng)被設(shè)計(jì)為具有小硬件、低功耗、和高性能。圖4是根據(jù)本說明書實(shí)施例的固定管線代碼生成器的示例性示意框圖。固定 管線代碼生成單元330包括狀態(tài)單元331、代碼生成器332、代碼緩沖器333、和控制器 334。狀態(tài)單元331解析輸入對象的屬性,并且根據(jù)所解析的屬性來輸出狀態(tài)信息。 狀態(tài)單元331利用有限狀態(tài)機(jī)、基于用戶定義的屬性來改變狀態(tài)。每個(gè)狀態(tài)可以包括多 個(gè)子狀態(tài)。代碼生成器332基于狀態(tài)信息來生成微代碼。每個(gè)狀態(tài)輸入至微代碼多路復(fù)用 器(未示出),至少一個(gè)微代碼從該微代碼多路復(fù)用器選擇性地輸出。單個(gè)微代碼可以具 有64位。
代碼緩沖器333存儲代碼生成器332生成的微代碼,并且基于來自控制器334的 指令來把所存儲的微代碼發(fā)送至渲染器??刂破?34管理狀態(tài)單元331、代碼生成器332、和代碼緩沖器333。控制器334 可以基于對象的屬性來控制狀態(tài)單元331的狀態(tài)的改變或保持。如在本說明書中描述的固定管線代碼生成單元330可以具有常規(guī)代碼存儲器的 僅僅5%的尺寸。由此,硬件的尺寸和功耗能夠降低?,F(xiàn)在,將通過實(shí)質(zhì)的示例更詳細(xì)地描述固定管線代碼生成單元330的操作。圖5圖示了基于屬性的狀態(tài)的示例?;谳斎氲膶傩裕?dāng)前的狀態(tài)改變?yōu)槌跏?狀態(tài)、頂點(diǎn)狀態(tài)、紋理狀態(tài)、光照狀態(tài)、和霧化狀態(tài)中的至少一個(gè)。每個(gè)狀態(tài)可以包括 五十(50)到一百七十(170)個(gè)子狀態(tài)。例如,考慮OpenGL ES 1.1規(guī)范中的霧化狀態(tài)。當(dāng)被使能時(shí),霧化狀態(tài)使用混
合因子f來混合霧化色彩與光柵化片斷的后紋理色彩。此因子f根據(jù)以下三個(gè)等式之一來 計(jì)算數(shù)學(xué)式1[數(shù)學(xué).1]
權(quán)利要求
1.一種用于處理3D圖形的圖形處理器,包括固定管線代碼生成器,用于把支持固定管線的應(yīng)用編程接口(API)轉(zhuǎn)換為第一微代碼;渲染器管線代碼生成器,用于把支持可編程管線的API轉(zhuǎn)換為第二微代碼;以及 與固定管線代碼生成器和渲染器管線代碼生成器相通信的渲染器管線,用于通過使 用渲染器程序來處理第一和第二微代碼中的至少一個(gè)。
2.根據(jù)權(quán)利要求1的圖形處理器,還包括與固定管線代碼生成器和渲染器管線代碼生成器相通信的API選擇器,用于接收輸 入的API,并確定所接收的輸入API是否支持固定管線或可編程管線。
3.根據(jù)權(quán)利要求1的圖形處理器,其中,所述渲染器管線包括頂點(diǎn)渲染器和片段渲染器。
4.根據(jù)權(quán)利要求2的圖形處理器,其中,所述固定管線代碼生成器包括狀態(tài)單元,用于解析所接收的輸入API的對象的屬性,并基于所解析的屬性來輸出 狀態(tài)信息;代碼生成器,用于基于輸出的狀態(tài)信息來生成第一微代碼;以及 代碼緩沖器,用于存儲第一微代碼。
5.根據(jù)權(quán)利要求1的圖形處理器,還包括與固定管線代碼生成器和渲染器管線代碼生成器相通信的危險(xiǎn)控制器,用于檢查第 一和第二微代碼中的至少一個(gè)的處理順序和執(zhí)行時(shí)間,以便標(biāo)識指示停止的危險(xiǎn)的發(fā)生 并響應(yīng)于該危險(xiǎn)而執(zhí)行處理。
6.根據(jù)權(quán)利要求5的圖形處理器,其中,所述危險(xiǎn)控制器包括危險(xiǎn)檢查器,用于檢查每個(gè)微代碼的處理順序和執(zhí)行時(shí)間,以檢查危險(xiǎn)是否已經(jīng)發(fā) 生;以及重排序單元,用于對產(chǎn)生危險(xiǎn)的微代碼的處理順序重排序。
7.根據(jù)權(quán)利要求6的圖形處理器,其中,所述危險(xiǎn)控制器還包括轉(zhuǎn)發(fā)單元,用于轉(zhuǎn)發(fā)產(chǎn)生危險(xiǎn)的微代碼的先前微代碼的結(jié)果值,以用于任何其它微 代碼的執(zhí)行。
8.根據(jù)權(quán)利要求1的圖形處理器,其中,所述支持固定管線的API包括OpenGLES 1.x,而所述支持可編程管線的API包括OpenGL ES 2.x。
9.一種由用于處理3D圖形的圖形處理器執(zhí)行的方法,包括把支持固定管線的應(yīng)用編程接口(API)轉(zhuǎn)換為能夠由支持可編程管線的渲染器識別 的第一微代碼;以及處理所轉(zhuǎn)換的第一微代碼,以處理3D圖形。
10.根據(jù)權(quán)利要求9的方法,還包括把支持可編程管線的API轉(zhuǎn)換為能夠由渲染器管線識別的第二微代碼。
11.根據(jù)權(quán)利要求10的方法,其中,把支持固定管線的API和支持可編程管線的API 轉(zhuǎn)換為第一和第二微代碼的步驟包括基于輸入的API的對象的屬性來獲取狀態(tài)信息;以及 基于所獲取的狀態(tài)信息來生成第一和第二微代碼。
12.根據(jù)權(quán)利要求10的方法,其中,把支持固定管線的API和支持可編程管線的API 轉(zhuǎn)換為第一和第二微代碼的步驟還包括檢查每個(gè)微代碼,以確定危險(xiǎn)是否已經(jīng)發(fā)生以致停止隨后微代碼的執(zhí)行。
13.根據(jù)權(quán)利要求12的方法,其中,把支持固定管線的API和支持可編程管線的API 轉(zhuǎn)換為第一和第二微代碼的步驟還包括當(dāng)確定危險(xiǎn)已經(jīng)發(fā)生時(shí),重排序產(chǎn)生危險(xiǎn)的微代碼。
14.根據(jù)權(quán)利要求12的方法,其中,把支持固定管線的API和支持可編程管線的API 轉(zhuǎn)換為第一和第二微代碼的步驟還包括當(dāng)確定危險(xiǎn)已經(jīng)發(fā)生時(shí),把產(chǎn)生危險(xiǎn)的微代碼的先前微代碼的結(jié)果值轉(zhuǎn)發(fā)到不同的 微代碼。
15.—種計(jì)算裝置,包括 中央處理單元(CPU);以及圖形處理器,與該CPU耦接來處理3D圖形,其中,所述圖形處理器包括 固定管線代碼生成器,用于把支持固定管線的API轉(zhuǎn)換為第一微代碼; 渲染器管線代碼生成器,用于把支持可編程管線的API轉(zhuǎn)換為第二微代碼;以及 與固定管線代碼生成器和渲染器管線代碼生成器相通信的渲染器管線,用于接收第 一和第二微代碼中的至少一個(gè),并處理渲染器程序。
16.根據(jù)權(quán)利要求15的計(jì)算裝置,其中,所述圖形處理器包括與固定管線代碼生成器和渲染器管線代碼生成器相通信的API選擇器,用于接收輸 入的API,并確定所接收的輸入API是否支持固定管線或可編程管線。
17.根據(jù)權(quán)利要求15的計(jì)算裝置,其中,所述渲染器管線包括頂點(diǎn)渲染器和片段渲染ο
18.根據(jù)權(quán)利要求15的計(jì)算裝置,其中,所述固定管線代碼生成器包括狀態(tài)單元,用于解析輸入的API的對象的屬性,并基于所解析的屬性來輸出狀態(tài)信息;代碼生成器,用于基于輸出的狀態(tài)信息來生成第一微代碼;以及 代碼緩沖器,用于存儲第一微代碼。
19.根據(jù)權(quán)利要求15的計(jì)算裝置,其中,所述圖形處理器還包括與固定管線代碼生成器和渲染器管線代碼生成器相通信的危險(xiǎn)控制器,用于檢查第 一和第二微代碼中的至少一個(gè)的處理順序和執(zhí)行時(shí)間,以便標(biāo)識指示停止的危險(xiǎn)的發(fā)生 并響應(yīng)于該危險(xiǎn)而執(zhí)行處理。
20.根據(jù)權(quán)利要求19的計(jì)算裝置,其中,所述危險(xiǎn)控制器包括危險(xiǎn)檢查器,用于檢查每個(gè)微代碼的處理順序和執(zhí)行時(shí)間,以檢查危險(xiǎn)是否已經(jīng)發(fā) 生;以及重排序單元,用于對產(chǎn)生危險(xiǎn)的微代碼的處理順序重排序。
全文摘要
提供了用于處理3D圖形的技術(shù)、設(shè)備、和系統(tǒng)。一種圖形處理器包括固定管線代碼生成器,用于把支持固定管線的應(yīng)用編程接口(API)轉(zhuǎn)換為第一微代碼;渲染器管線代碼生成器,用于把支持可編程管線的API轉(zhuǎn)換為第二微代碼;以及渲染器管線,用于通過使用渲染器程序來處理第一或第二微代碼。
文檔編號G06T15/00GK102016798SQ200980116416
公開日2011年4月13日 申請日期2009年3月11日 優(yōu)先權(quán)日2008年3月11日
發(fā)明者樸貞愛, 禹正皓, 禹炫在 申請人:韓國科亞電子股份有限公司, 韓國科學(xué)技術(shù)院