亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

具有邊繪制單元的圖形引擎以及合并有該圖形引擎的電子裝置及存儲(chǔ)器的制作方法

文檔序號(hào):2527728閱讀:253來(lái)源:國(guó)知局
專利名稱:具有邊繪制單元的圖形引擎以及合并有該圖形引擎的電子裝置及存儲(chǔ)器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種圖形引擎以及合并有該圖形引擎的電子裝置和存儲(chǔ)器。
背景技術(shù)
本發(fā)明應(yīng)用于電子裝置的顯示器,特別是便攜式或控制臺(tái)電子裝置上的小面積顯示器。存在很多這種裝置,例如PDA、無(wú)繩電話、移動(dòng)電話和桌面電話、汽車內(nèi)信息控制板、手持電子游戲設(shè)備、多功能手表等。
在現(xiàn)有技術(shù)中,通常具有主CPU,該主CPU產(chǎn)生命令,并接收顯示命令,對(duì)這些顯示命令進(jìn)行處理,并以描述各個(gè)顯示像素屬性的像素?cái)?shù)據(jù)的形式將處理結(jié)果傳送給顯示模塊。傳送到顯示模塊的數(shù)據(jù)量與顯示器分辨率和色濃度(colour depth)成正比。例如,具有四級(jí)灰度的96×96像素的小單色顯示器需要向顯示模塊傳送非常小的數(shù)據(jù)量。然而,這種屏幕不能滿足用戶對(duì)更吸引人和更能夠提供信息的顯示器的需求。
隨著對(duì)彩色顯示器和對(duì)需要較高屏幕分辨率的復(fù)雜圖形的需求,由CPU處理并傳送給顯示模塊的數(shù)據(jù)量變得很大。更加復(fù)雜的圖形處理增加了CPU的負(fù)擔(dān)并使裝置的速度減慢,使得顯示器的反應(yīng)和刷新速率變得難以接受。對(duì)于游戲應(yīng)用尤其存在問題。另一問題是圖形處理的增加導(dǎo)致耗電量增加,這顯著地縮短了電池供電裝置的充電時(shí)間間隔。
以可接受的速度顯示復(fù)雜圖形的問題通常由附加卡(extra card)上的硬件圖形引擎(也被稱為圖形加速器)來(lái)解決,該附加卡安裝在處理器殼體中,或作為主板上的嵌入單元。圖形引擎負(fù)責(zé)主CPU的至少一部分顯示命令處理。圖形引擎是專門為圖形處理而開發(fā),所以與處理相同圖形任務(wù)的CPU相比較,圖形引擎更加快速并使用更少的電力。隨后將所得到的視頻數(shù)據(jù)從處理器殼體發(fā)送給單獨(dú)的"?。@示模塊。
在PC中使用的已知圖形引擎專門為大面積顯示器設(shè)計(jì),因此是非常復(fù)雜的系統(tǒng),需要所使用的大量門的單獨(dú)硅電路小片。將這些引擎并入便攜式裝置是行不通的,因?yàn)楸銛y式裝置的顯示器面積小,尺寸和重量有嚴(yán)格限制,而且電力資源有限。
此外,PC圖形引擎被設(shè)計(jì)用來(lái)處理在大面積顯示器中所使用的數(shù)據(jù)類型,例如復(fù)雜圖像的多個(gè)位圖。目前,傳送給移動(dòng)的小面積顯示器的數(shù)據(jù)可以是矢量圖形的形式。矢量圖形語(yǔ)言的示例有MacroMediaFlashTM及SVGTM。矢量圖形定義也用于許多游戲應(yīng)用編程接口(API),例如Microsoft Directx和OpenGL。
在矢量圖形中,圖像被定義為多個(gè)復(fù)雜的多邊形。這使得矢量圖形適合于能夠容易地通過數(shù)學(xué)函數(shù)來(lái)定義的圖像,例如游戲場(chǎng)景、文本和GPS導(dǎo)航地圖。對(duì)于這些圖像,矢量圖形比相應(yīng)位圖的效率高得多。也就是,定義與位圖文件(以各個(gè)單個(gè)顯示像素的方式)相同細(xì)節(jié)的矢量圖形文件(以復(fù)雜多邊形的方式)將包含較少的字節(jié)。將矢量圖形文件轉(zhuǎn)換成多邊形內(nèi)部的像素(或子像素)的坐標(biāo)流,以形成位圖,通常被稱為″光柵化(rasterisation)″。位圖文件是像素格式的最終圖像數(shù)據(jù),可以直接復(fù)制到顯示器。
復(fù)雜多邊形是自交叉(self-intersect)并且其中具有″孔″的多邊形。復(fù)雜多邊形的示例有字母和數(shù)字,例如″X″和″8″以及漢字字符。當(dāng)然,矢量圖形也適于定義諸如構(gòu)成許多計(jì)算機(jī)游戲的基本圖元的三角形的簡(jiǎn)單多邊形。多邊形由直線邊或曲線邊以及填充命令來(lái)定義。理論上,各個(gè)多邊形的邊數(shù)不受限制。然而,例如包含復(fù)雜場(chǎng)景的相片的矢量圖形文件將包含比相應(yīng)位圖多幾倍的字節(jié)。
已知適于與例如由小面積顯示器采用的高級(jí)/矢量圖形語(yǔ)言一起使用的圖形處理算法。例如,在″Computer GraphicsPrinciples and Practice″Foley,Van Damn,F(xiàn)einer,Hughes 1996 Edition,ISBN 0-201-84840-6中提供了一些算法。
圖形引擎通常是軟件圖形算法,采用具有鏈表和排序操作的內(nèi)部動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)。給出一個(gè)多邊形的多邊形邊數(shù)據(jù)的所有矢量圖形命令在其開始再現(xiàn)(rendering)(從所接收的高級(jí)命令產(chǎn)生用于顯示的圖像)之前必須被讀取到軟件引擎中,并且存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中。用于各個(gè)多邊形的命令例如存儲(chǔ)在各個(gè)多邊形邊的起始點(diǎn)和終止點(diǎn)的控制列表(master list)中。逐條掃描線地繪制(光柵化)多邊形。對(duì)于顯示器的各條掃描線,該軟件首先檢查整個(gè)列表(或至少檢查可能與所選擇的掃描線相關(guān)的部分列表)并選擇哪個(gè)多邊形邊(“有效(active)邊”)與掃描線交叉。然后識(shí)別各個(gè)所選擇的邊在何處與掃描線交叉,并且對(duì)它們進(jìn)行排序(通常從左到右),從而從顯示區(qū)域的左邊開始,將交叉點(diǎn)標(biāo)記為1、2、3...。對(duì)交叉點(diǎn)進(jìn)行排序后,可以在它們之間填充多邊形(例如,使用在奇交叉點(diǎn)開始填充而在下一(偶)交叉點(diǎn)停止的奇/偶規(guī)則)。
各個(gè)頂點(diǎn)需要存儲(chǔ)x和y。通常為32位浮點(diǎn)值。對(duì)于″n″邊多邊形,所需的最大存儲(chǔ)是″n″乘以頂點(diǎn)數(shù)(該定點(diǎn)數(shù)是未知的)。因此,可以處理的控制列表的大小受到軟件可用的存儲(chǔ)器容量的限制。已知的軟件算法因此具有下述缺點(diǎn)需要大量的存儲(chǔ)空間以在再現(xiàn)之前存儲(chǔ)復(fù)雜多邊形的所有命令。這使它們難以轉(zhuǎn)換成硬件,并可能使制造商產(chǎn)生偏見而反對(duì)在移動(dòng)裝置中并入矢量圖形處理。
硬件圖形引擎更有可能使用三角形光柵化器(rasteriser)電路,該三角形光柵化器電路將各個(gè)多邊形分為多個(gè)三角形(或者用的較少的梯形),分別處理各個(gè)三角形以產(chǎn)生該三角形的填充像素,然后重新組合經(jīng)處理的三角形以生成整個(gè)多邊形。雖然劃分三角形可以由硬件或軟件來(lái)執(zhí)行,但是隨后的再現(xiàn)幾乎始終是在硬件中進(jìn)行的。
該技術(shù)有時(shí)被稱為三角形化(或三角形鑲嵌法(triangle tessellation)),而且是目前大多數(shù)圖形硬件使用的再現(xiàn)2D和3D對(duì)象的傳統(tǒng)方法。
讀入各個(gè)三角形的幾何形狀,對(duì)其進(jìn)行光柵化而產(chǎn)生該三角形內(nèi)的所有像素的像素坐標(biāo)。通常逐條線地輸出像素坐標(biāo),但也可以采用其它次序。
由于各個(gè)三角形的光柵化所需的幾何形狀信息是固定的(x和y表示的3個(gè)頂點(diǎn)),所以在硬件中實(shí)現(xiàn)時(shí)沒有存儲(chǔ)的問題。
事實(shí)上,這些頂點(diǎn)所需的存儲(chǔ)空間可以為任意大小,例如,可以存在各個(gè)頂點(diǎn)的顏色和其它信息。然而,對(duì)于光柵化,這些信息不是必須的,所以光柵化所需的數(shù)據(jù)是固定的。
然而,對(duì)于更復(fù)雜的多邊形,三角形化并不容易,尤其是對(duì)那些自交叉的多邊形,因?yàn)楸仨氃谌切位拜斎氩⒋鎯?chǔ)整個(gè)復(fù)雜的多邊形,以避免充填以后將成為“孔”的像素。很明顯,即使在開始處理簡(jiǎn)單的凸多邊形之前,也需要多個(gè)(如果不是所有)邊來(lái)表明邊的哪一側(cè)要進(jìn)行填充。一種實(shí)現(xiàn)該處理的方法是在開始三角形化之前等待″填充″命令,這在定義多邊形的所有邊之后進(jìn)行。
希望克服現(xiàn)有技術(shù)的固有缺點(diǎn),并減少便攜式電子裝置中用于顯示目的的CPU負(fù)荷和/或數(shù)據(jù)流量。

發(fā)明內(nèi)容
在獨(dú)立權(quán)利要求中限定了本發(fā)明,現(xiàn)對(duì)其進(jìn)行說(shuō)明。在從屬權(quán)利要求中限定了優(yōu)選特征。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供了一種圖形引擎,用于根據(jù)所接收的定義多邊形的高級(jí)圖形命令再現(xiàn)顯示像素的圖像數(shù)據(jù),該圖形引擎包括邊繪制單元,用于讀入與單個(gè)多邊形邊相對(duì)應(yīng)的語(yǔ)言的命令語(yǔ)句,并基于該命令語(yǔ)句將該命令轉(zhuǎn)換成該邊的空間表達(dá)。
因此,優(yōu)選實(shí)施例的圖形引擎包括控制電路/邏輯,用于一次讀入一條高級(jí)圖形(例如,向量圖形)命令,并將該命令轉(zhuǎn)換成空間表達(dá)(即,繪制該邊)。如果該圖形引擎并行工作,或者可以設(shè)置多個(gè)邊繪制單元,則該圖形引擎可以同時(shí)讀入并轉(zhuǎn)換多條線。
在此所述的命令或命令語(yǔ)句不一定僅表示單個(gè)命令行,而是包括定義多邊形的一部分(例如,邊或顏色)所需的所有命令行。
該圖形引擎的邏輯結(jié)構(gòu)具有多個(gè)具體的優(yōu)點(diǎn)。一個(gè)優(yōu)點(diǎn)在于,在將多邊形邊讀入引擎后,不需要存儲(chǔ)空間來(lái)保存它??梢怨?jié)約相當(dāng)大的存儲(chǔ)空間和電力,使圖形引擎不但特別適合用于便攜式電子裝置,而且也適用于不需便攜的大的電子裝置。
另外,在讀取命令時(shí)向空間信息的簡(jiǎn)單轉(zhuǎn)換使得圖形引擎的邏輯結(jié)構(gòu)能夠比現(xiàn)有技術(shù)中的小,從而可顯著地減少硬件版本中的門和軟件版本中所需的處理以及再現(xiàn)所需的存儲(chǔ)空間。
圖形引擎可以在處理下一命令之前丟棄原始命令,當(dāng)然,如果邊繪制單元并行工作,則下一命令無(wú)需是命令串中的后續(xù)命令,而可以是下一可用命令。
優(yōu)選地,邊繪制單元讀入一命令語(yǔ)句(與有效邊或可直接顯示的邊相對(duì)應(yīng)),并立即將任何有效邊轉(zhuǎn)換成空間表達(dá)。
這使得可以盡可能快地刪除命令或命令語(yǔ)句。優(yōu)選地,僅在將不應(yīng)處理的(例如,觀察區(qū)域之外的線)或不能處理的(例如,曲線)(無(wú)效)線轉(zhuǎn)換成可以由圖形引擎再現(xiàn)的有效格式時(shí)才需要中間處理。
優(yōu)選地,除了多邊形邊與先前或同時(shí)被讀入并轉(zhuǎn)換的邊重疊的情況之外,空間表達(dá)僅基于該命令語(yǔ)句。很明顯,使邊重疊生產(chǎn)了不同的結(jié)果,這避免任何可能出現(xiàn)的不正確的顯示數(shù)據(jù)。
在優(yōu)選實(shí)施例中,邊的空間表達(dá)為子像素格式,使得隨后可以重新組合為顯示像素。這與比屏幕分辨率更高的常用于命令語(yǔ)言中的尋址相對(duì)應(yīng)。
子像素(顯示器的各個(gè)對(duì)應(yīng)像素具有一個(gè)以上的子像素)的提供也使得在并入顯示器尺寸之前以擴(kuò)展空間的形式對(duì)數(shù)據(jù)的操縱和防混疊處理(anti-aliasing)更加便利。每個(gè)對(duì)應(yīng)的顯示像素的子像素的數(shù)量決定了有效的防混疊處理程度。
優(yōu)選地,空間表達(dá)限定了最終顯示像素的位置。因此,在已繪制了邊的情況下,通常,與多個(gè)邊內(nèi)的子像素相對(duì)應(yīng)的像素與所填充的多邊形的最終顯示像素相對(duì)應(yīng)。這在減少處理方面有明顯的優(yōu)點(diǎn)。
優(yōu)選地,圖形引擎還包括邊緩沖器,用于存儲(chǔ)空間表達(dá)。
因此,在優(yōu)選實(shí)施例中,圖形引擎包括邊繪制邏輯/電路,該邊繪制邏輯/電路與(有限分辨率的)邊緩沖器相連,以存儲(chǔ)讀入引擎內(nèi)的任何多邊形(的邊)的空間信息。邊緩沖器結(jié)構(gòu)不僅使得可以在各條邊的原始數(shù)據(jù)被讀入該緩沖器后,容易地丟棄該原始數(shù)據(jù),這與現(xiàn)有的軟件引擎相反,而且還具有下述優(yōu)點(diǎn)其對(duì)要繪制的多邊形的復(fù)雜度沒有進(jìn)行限制。在使用現(xiàn)有技術(shù)的高級(jí)命令的鏈表存儲(chǔ)的情況下,可能受到這種限制。
邊緩沖器的分辨率可以比顯示存儲(chǔ)器的前置緩沖器的分辨率高。例如,如前所述,可以將邊緩沖器設(shè)置用來(lái)存儲(chǔ)子像素,多個(gè)子像素與單個(gè)顯示像素相對(duì)應(yīng)。
邊緩沖器可以是柵格的形式,并且各個(gè)柵格方塊或子像素優(yōu)選地在設(shè)置和未設(shè)置狀態(tài)之間切換,以存儲(chǔ)空間信息。僅使用未設(shè)置和設(shè)置狀態(tài)意味著邊緩沖器需要每子像素一比特的存儲(chǔ)空間。
優(yōu)選地,邊緩沖器將多邊形邊存儲(chǔ)為被設(shè)置的邊界子像素,并且這些邊界子像素在邊緩沖器中的位置與該邊在最終圖像中的位置相關(guān)。
優(yōu)選地,根據(jù)前述權(quán)利要求中的任何一個(gè)的圖形引擎的特征在于,單個(gè)多邊形邊的輸入和轉(zhuǎn)換使得可以再現(xiàn)多邊形而不需進(jìn)行三角形化,并且使得可以在獲得多邊形的所有邊數(shù)據(jù)之前開始再現(xiàn)該多邊形。
該圖形引擎可以包括填充器電路/邏輯,用于填充其邊已存儲(chǔ)在邊緩沖器中的多邊形。該雙通道方法(two-pass method)的優(yōu)點(diǎn)在于,在產(chǎn)生所填充的多邊形的顏色之前,可以再次使用每子像素1比特的(邊緩沖器)格式。所得到的設(shè)置子像素不需要重新存儲(chǔ)在邊緩沖器中,而可以在處理的下一步驟中直接使用。
圖形引擎優(yōu)選地包括后置緩沖器,以在將圖像傳送到顯示驅(qū)動(dòng)存儲(chǔ)器的前置緩沖器之前,存儲(chǔ)部分或者全部圖像。使用后置緩沖器避免了直接再現(xiàn)到前置緩沖器,并防止顯示圖像中的閃爍。
后置緩沖器優(yōu)選地具有與顯示存儲(chǔ)器的前置緩沖器相同的分辨率。也就是,將后置緩沖器中的各個(gè)像素映射到前置緩沖器的對(duì)應(yīng)像素。后置緩沖器優(yōu)選地具有與前置緩沖器相同的每像素比特?cái)?shù),以顯示像素的顏色和色濃度(RGBA值)。
存在設(shè)置用來(lái)將由填充器電路產(chǎn)生的各個(gè)填充多邊形組合到后置緩沖器中的組合邏輯/電路。該組合可以順序進(jìn)行或者并行進(jìn)行。通過這種方式,在傳送到前置緩沖器用于顯示之前,在后置緩沖器中,逐個(gè)多邊形地構(gòu)建圖像。
優(yōu)選地,根據(jù)正在進(jìn)行處理的多邊形中的像素的顏色、由該多邊形覆蓋的像素的百分比以及后置緩沖器中的對(duì)應(yīng)像素已有的顏色,來(lái)確定存儲(chǔ)在后置緩沖器中的各個(gè)像素的顏色。該顏色混合步驟適合于防混疊處理。
在一個(gè)優(yōu)選實(shí)施例中,邊緩沖器以柵格的形式存儲(chǔ)子像素,該柵格的方塊數(shù)為各個(gè)顯示像素的子像素?cái)?shù)。例如,邊緩沖器中的4×4子像素的柵格可以與一個(gè)顯示像素相對(duì)應(yīng)。根據(jù)待繪制的邊來(lái)設(shè)置或不設(shè)置各個(gè)子像素。
在一另選實(shí)施例中,在邊緩沖器中,每隔一個(gè)子像素地使用子像素,以使每顯示像素設(shè)置的子像素的方格數(shù)減半(″棋盤格″模式)。在該實(shí)施例中,如果邊繪制電路需要設(shè)置未利用的子像素,則相鄰(被利用的)子像素在其位置處被設(shè)置。該另選實(shí)施例具有下述優(yōu)點(diǎn),對(duì)于各個(gè)顯示像素,邊緩沖器中需要較少的位,但是在某種程度上降低了防混疊的質(zhì)量。
可以根據(jù)邊的端點(diǎn)計(jì)算各個(gè)多邊形邊的斜率,然后沿著該線設(shè)置柵格的各個(gè)子像素。優(yōu)選地,使用下面的規(guī)則設(shè)置子像素對(duì)于各個(gè)多邊形邊,子像素柵格的每條水平線只設(shè)置一個(gè)子像素;從上到下(沿y方向)設(shè)置子像素;對(duì)該線的最后子像素不進(jìn)行設(shè)置;使設(shè)置在線下方的任何子像素反向。
在該實(shí)施例中,填充器電路可以包括用作為橫穿子像素柵格的虛擬筆(子像素狀態(tài)設(shè)置填充器)的邏輯/代碼,所述筆初始為關(guān),并在每次遇到以設(shè)置的子像素時(shí),在關(guān)和開之間進(jìn)行切換。所得到的數(shù)據(jù)優(yōu)選地提供給用于組合與各個(gè)像素相對(duì)應(yīng)的多個(gè)子像素的混合(amalgamation)電路。
虛擬筆優(yōu)選地設(shè)置邊界子像素內(nèi)的所有子像素,并且包括右側(cè)邊界的邊界像素,并清除左側(cè)邊界的邊界像素,或者相反。這避免了在數(shù)學(xué)上不重疊的多邊形的交疊子像素。虛擬筆可以覆蓋一條線的子像素(以并行地對(duì)它們進(jìn)行處理),并同時(shí)填充多個(gè)子像素。
優(yōu)選地,對(duì)虛擬筆的橫穿進(jìn)行限制,以使得不需要考慮多邊形邊外部的子像素。例如,可以提供包圍該多邊形的限制框。
優(yōu)選地,在組合到后置緩沖器之前,將與單個(gè)顯示像素相對(duì)應(yīng)的子像素(來(lái)自填充器電路)混合成單個(gè)像素。混合使得后置緩沖器的分辨率比邊緩沖器(每像素而不是每子像素地保存數(shù)據(jù))的分辨率低,因而減少了存儲(chǔ)空間需求。當(dāng)然,如上所述,邊緩沖器中為各個(gè)位置保存的數(shù)據(jù)是最小的(每子像素一比特),而后置緩沖器保存各個(gè)像素的顏色值(例如,16比特)。
可以提供組合電路/邏輯用于到后置緩沖器的組合,由所填充的多邊形覆蓋的各個(gè)所混合的像素的子像素?cái)?shù)量確定了將所混合的像素組合到后置緩沖器中的混合系數(shù)。
在完全再現(xiàn)由后置緩沖器為其保存信息的部分顯示器上的圖像之后,將后置緩沖器復(fù)制到顯示存儲(chǔ)器的前置緩沖器。事實(shí)上,后置緩沖器的大小可以與前置緩沖器的大小相同,并保存整個(gè)顯示器的信息。另選地,后置緩沖器可以比前置緩沖器小,并且只存儲(chǔ)部分顯示器的信息,通過一系列的外部通道從后置緩沖器構(gòu)建前置緩沖器中的圖像。
在后一另選方案中,如果僅將與要保存在后置緩沖器中的部分圖像相關(guān)的命令通過各個(gè)外部通道(到處理器)發(fā)送到圖形引擎,則縮短了該處理。
該圖形引擎可以具有多種附加特征以提高其性能。
該圖形引擎可以進(jìn)一步包括曲線鑲嵌器(tessellator),以將任何曲線多邊形邊分成多個(gè)直線段,并在邊緩沖器中存儲(chǔ)所得到的多個(gè)線段。
可以調(diào)整圖形引擎,以使后置緩沖器保存一個(gè)或更多個(gè)圖形(預(yù)定的圖元),將這些圖元傳送到前置緩沖器的由高級(jí)語(yǔ)言確定的一個(gè)或更多個(gè)位置。該圖形可以是靜止圖像或運(yùn)動(dòng)圖像(子圖形),甚至是文本字母。
該圖形引擎可以具有標(biāo)線(hairline)模式,其中通過在一位圖中設(shè)置多個(gè)子像素而且將該位圖存儲(chǔ)在邊緩沖器中的多個(gè)位置以形成一條線,來(lái)將多條標(biāo)線存儲(chǔ)在邊緩沖器中。這種標(biāo)線限定了一個(gè)像素濃度的多條線,并且常用于繪制多邊形輪廓。
優(yōu)選地,邊繪制單元可以并行地工作,以同時(shí)將多個(gè)命令語(yǔ)句轉(zhuǎn)換為空間表達(dá)。
作為另一改進(jìn),該圖形引擎可以包括裁剪(clipper)單元,該裁剪單元在讀取并轉(zhuǎn)換所得到的在屏幕可視區(qū)域中的經(jīng)處理的多邊形邊之前,對(duì)在所期望的屏幕可視區(qū)域外部的多邊形邊的任何部分進(jìn)行處理。這使得能夠刪除任何無(wú)效線而不生成空間表達(dá)。
優(yōu)選地,除了限定多邊形填充的起始位置所需的邊之外,裁剪單元?jiǎng)h除所期望的屏幕可視區(qū)域外部的所有邊,在這種情況下,該邊被轉(zhuǎn)換成與相關(guān)可視區(qū)域邊界相重合。
作為對(duì)設(shè)計(jì)的進(jìn)一步改進(jìn),該邊繪制單元可以包括阻斷和/或限制單元,用于通過將空間表達(dá)分組為多個(gè)數(shù)據(jù)塊和/或創(chuàng)建與所再現(xiàn)的多邊形相對(duì)應(yīng)的限制框,隨后不讀取框外部的數(shù)據(jù),來(lái)減少存儲(chǔ)空間的使用。
該圖形引擎可以以硬件的形式實(shí)現(xiàn),并且在這種情況下,優(yōu)選地在規(guī)模上少于100K門,更優(yōu)選地少于50K門。
該圖形引擎不必以硬件的形式實(shí)現(xiàn),而是可以另選地為軟件圖形引擎。在這種情況下,可以將所需的代碼邏輯保存在CPU中,如果需要,可以存儲(chǔ)在以上詳細(xì)描述的優(yōu)選特征中的任何一個(gè)的充足的代碼/存儲(chǔ)空間中。對(duì)于以上提及的電路,本領(lǐng)域技術(shù)人員應(yīng)該理解,可以在軟件實(shí)施例的代碼部分中獲得相同的功能。例如,該圖形引擎可以以軟件的方式實(shí)現(xiàn),該軟件將在具有顯示器的電子裝置的處理器模塊中運(yùn)行。
該圖形引擎可以是程序,優(yōu)選地保存在處理單元中,或可以是載體上的記錄,或采用信號(hào)的形式。
根據(jù)本發(fā)明的另一實(shí)施例,提供了一種電子裝置,其包括如前所述的圖形引擎;顯示模塊;處理器模塊;和存儲(chǔ)器模塊,其中將高級(jí)圖形命令傳送給圖形引擎以再現(xiàn)用于顯示像素的圖像數(shù)據(jù)。
因此,本發(fā)明的實(shí)施例使得便攜式電子裝置可以配備能夠根據(jù)矢量圖形命令顯示圖像,而同時(shí)保持快速的顯示器刷新和響應(yīng)時(shí)間以及較長(zhǎng)的電池壽命的顯示器。
該電子裝置可以是便攜式的和/或具有小面積顯示器。存在如在此所述的減少了電力和存儲(chǔ)空間需求的簡(jiǎn)單圖形引擎的重要應(yīng)用領(lǐng)域。
在此所述的小面積顯示器包括具有旨在便攜式電子裝置中使用的大小的顯示器,并排除了例如用于PC的顯示器。
在此所述的便攜式裝置包括可以由用戶攜帶的足夠小和輕的手持、佩戴、袋裝以及控制板裝置等。
該圖形引擎可以是嵌入存儲(chǔ)器模塊中的或者另選地集成在顯示模塊中的硬件圖形引擎。
該圖形引擎可以是以一體或共享存儲(chǔ)器體系結(jié)構(gòu)的方式與總線連接的、或者保持在處理器模塊中、或者在包括處理器模塊的基帶或伴隨IC中的硬件圖形引擎。
根據(jù)本發(fā)明的另一實(shí)施例,提供了一種存儲(chǔ)器IC(集成電路),其包含嵌入式硬件圖形引擎,其中該圖形引擎使用標(biāo)準(zhǔn)存儲(chǔ)器IC物理接口,并且利用先前未分配的命令空間進(jìn)行圖形處理。優(yōu)選地,該圖形引擎如前所述。
存儲(chǔ)器IC(或芯片)往往具有未分配的命令和接點(diǎn)(pad),因?yàn)樗鼈兏鶕?jù)通用標(biāo)準(zhǔn)設(shè)計(jì),而不是針對(duì)特定的應(yīng)用。由于其創(chuàng)造性構(gòu)造,而使得在其硬件版本中,圖形引擎的門數(shù)較少,這第一次使得圖形引擎能夠集成在標(biāo)準(zhǔn)存儲(chǔ)芯片的空閑存儲(chǔ)空間中,并且無(wú)需改變物理接口(接點(diǎn))。


現(xiàn)將完全以示例的方式,參照附圖描述本發(fā)明的優(yōu)選特征。在附圖中圖1是表示優(yōu)選圖形引擎的功能塊的方框圖;圖2是表示優(yōu)選圖形引擎的操作的流程圖;
圖3是表示待繪制的多邊形的邊和生成該多邊形的繪制圖命令的邊緩沖器示意圖;圖4是表示為各個(gè)邊命令設(shè)置的子像素的邊緩沖器示意圖;圖5是表示被填充的多邊形的邊緩沖器示意圖;圖6a是圖5所示的被填充多邊形的混合像素的示意圖;圖6b是減少了存儲(chǔ)空間需求的邊緩沖器配置的示意圖;圖7a和圖7b分別表示二次和三次貝塞爾曲線;圖8表示根據(jù)本發(fā)明實(shí)施例的曲線鑲嵌處理;圖9給出了線性和徑向梯度的四個(gè)示例;圖10表示標(biāo)準(zhǔn)梯度正方形;圖11表示在邊緩沖器中的待繪制標(biāo)線;圖12表示用于在邊緩沖器中繪制標(biāo)線的原始圓形及其偏移位置;圖13表示在已繪制標(biāo)線時(shí)邊緩沖器中的最終內(nèi)容;圖14表示顯示邊緩沖器、后置緩沖器和前置緩沖器的內(nèi)容的次序,其中在各個(gè)通道中,后置緩沖器保存顯示圖像的1/3;圖15表示將后置緩沖器中的一個(gè)子圖形復(fù)制到前置緩沖器中的兩個(gè)位置;圖16表示一示例,其中再現(xiàn)了數(shù)以百計(jì)的小的2D子圖形,以模擬小粒子的濺射;圖17表示圖形引擎的通用硬件實(shí)現(xiàn);圖18表示圖形引擎的具體硬件實(shí)現(xiàn)的一些模塊;圖19表示圖18的實(shí)現(xiàn)中的裁剪單元的功能;圖20表示圖18的實(shí)現(xiàn)中的刷子單元的功能;圖21是根據(jù)本發(fā)明實(shí)施例的圖形引擎的示意圖,其集成在LCD或相應(yīng)類型的顯示器的源IC中;圖22是根據(jù)本發(fā)明實(shí)施例的圖形引擎的示意圖,其集成在顯示模塊中,并為L(zhǎng)CD或相應(yīng)類型的顯示器的兩個(gè)源IC服務(wù);圖23是合并有圖形引擎及其與CPU、顯示區(qū)域和選通驅(qū)動(dòng)IC的連接的源驅(qū)動(dòng)IC的示意圖;
圖24是使用公共總線上的一體存儲(chǔ)器的圖形引擎的示意圖;圖25是使用公共總線上的共享存儲(chǔ)器的圖形引擎的示意圖;圖26是使用機(jī)頂盒應(yīng)用中的一體存儲(chǔ)器的圖形引擎的示意圖;圖27是包含在游戲控制板體系結(jié)構(gòu)中的圖形引擎的示意圖;圖28是具有集成緩沖器的圖形引擎的示意圖;圖29是嵌入在存儲(chǔ)器中的圖形引擎的示意圖。
具體實(shí)施例方式
功能概述圖1中的功能框示出了示例性圖形引擎1的主要邏輯門塊。首先,將矢量圖形命令通過輸入/輸出部分10傳送給曲線鑲嵌器11,該曲線鑲嵌器11將任意曲線邊分成多個(gè)直線段。該信息傳送到邊和標(biāo)線繪制邏輯模塊12,該邊和標(biāo)線繪制邏輯模塊12在邊緩沖器13中存儲(chǔ)結(jié)果,在本示例中,邊緩沖器13為每顯示像素16比特。將邊緩沖器信息傳送給掃描線填充器部分14,以根據(jù)矢量圖形語(yǔ)言的填充命令的要求來(lái)填充多邊形。將所填充多邊形的信息傳送給后置緩沖器15(在本示例中,也是每顯示像素16比特),后置緩沖器15進(jìn)而將圖像中繼給圖像傳送模塊16,以傳送給前置緩沖器。
圖2中所示的流程圖概括了所填充多邊形的整個(gè)再現(xiàn)過程。多邊形邊定義數(shù)據(jù)一次一條邊地(以一條直線或曲線的形式)進(jìn)入引擎。命令語(yǔ)言通常從后向前地定義圖像,從而在前景中的多邊形之前定義圖像的背景中的多邊形(讀取也是如此)。如果是曲線,則在將該邊存儲(chǔ)在邊緩沖器中之前對(duì)其進(jìn)行鑲嵌化。在存儲(chǔ)該邊之后,丟棄繪制該邊的命令。
在矢量圖形中,在填充多邊形之前,通過諸如″move″、″line″和″curve″命令的命令來(lái)定義多邊形的所有邊。因而在讀取填充命令之前,重復(fù)本發(fā)明實(shí)施例的鑲嵌化和線繪制循環(huán)(在所謂的第一通道中)。隨后處理進(jìn)行到以邊緩沖器格式填充多邊形顏色。這被稱為第二通道。下一步驟是使用已在后置緩沖器中的相同位置中存在的顏色來(lái)合成多邊形顏色。將所填充的多邊形一次一個(gè)像素地添加到后置緩沖器。只有后置緩沖器的相關(guān)像素(被多邊形覆蓋的那些)與邊緩沖器組合。
如上所述,在將一個(gè)多邊形存除在后置緩沖器中之后,過程隨后返回以讀取下一多邊形。進(jìn)而將下一多邊形(其在前一多邊形的前面)組合到后置緩沖器中。在繪制了所有的多邊形之后,將圖像從后置緩沖器傳送到前置緩沖器,前置緩沖器可以例如在LCD顯示器的源驅(qū)動(dòng)IC中。
邊緩沖器為了說(shuō)明的目的,減小了圖3中所示的邊緩沖器尺寸,并用于30個(gè)像素(6×5)的顯示器。它具有與顯示器的各個(gè)像素相對(duì)應(yīng)的4×4子像素(16比特)的子像素柵格。每一子像素只需要一個(gè)比特,其采用未設(shè)置(缺省的)或已設(shè)置的值。
虛線20表示根據(jù)以下命令繪制的多邊形的多個(gè)邊●move To(12,0)●Line To(20,19)●Line To(0,7)●Line To(12,0)●move To(11,4)●Line To(13,12)●Line To(6,8)●Line To(11,4)●Fill(black)命令語(yǔ)言涉及子像素坐標(biāo),這對(duì)于角的精確定位是通用的。除填充命令之外的所有命令都作為第一通道的一部分進(jìn)行處理。填充命令開始第二通道以對(duì)多邊形進(jìn)行填充,并將其組合到后置緩沖器。
圖4表示為各個(gè)線命令設(shè)置的子像素。為了說(shuō)明的目的,只沿虛線示出了所設(shè)置的子像素21。由于減少了其大小,所以它們不能精確地表示將使用以下所示的命令或規(guī)則和代碼進(jìn)行了設(shè)置的子像素。
以在命令語(yǔ)言中進(jìn)行定義的順序?qū)⒍鄺l邊繪制到邊緩沖器中。對(duì)于各條線,根據(jù)端點(diǎn)計(jì)算斜率,然后沿著該線設(shè)置子像素。可以每一時(shí)鐘周期設(shè)置一子像素。
將以下規(guī)則用于設(shè)定子像素對(duì)于各條多邊形邊,子像素柵格的每條水平線上只設(shè)置一個(gè)子像素;從上到下(沿y方向)設(shè)置子像素;使設(shè)置在線下方的任何子像素反向;不設(shè)置線的最后子像素(即使這意味著沒有設(shè)置子像素)。
反向規(guī)則用于處理復(fù)雜多邊形(例如,符號(hào)″X″)中的自交叉。不使用反向規(guī)則,確切的交叉點(diǎn)將僅僅是一個(gè)所設(shè)置的子像素,這將會(huì)干擾稍后描述的填充算法。很明顯,對(duì)反向規(guī)則的需求使避免邊的端點(diǎn)重疊變得很重要。由于反向,使得任何這種點(diǎn)都會(huì)消失。
為了避免相同多邊形上的連續(xù)線的這種重疊端點(diǎn),不設(shè)置最低的子像素。
例如,使用命令列表Moveto(0,0)Lineto(0,100)Lineto(0,200)從0,00到0,99有效地繪制第一邊,并從0,100開始到0,199有效地繪制第二條線。結(jié)果是一條實(shí)線。因?yàn)閺纳系较吕L制該線,所以最后的子像素也是最低的子像素(除非該線完全水平,在這種情況下,由于只為各個(gè)y值設(shè)置了一個(gè)子像素,所以沒有設(shè)置子像素)。
下面的代碼段實(shí)現(xiàn)用于根據(jù)上述規(guī)則設(shè)定邊界子像素的算法并假定分辨率為176×220像素(如在此以示例的方式提供的多個(gè)其它代碼段所執(zhí)行的)。在″for(iy=y(tǒng)0+1;iy<y1;iy++)″循環(huán)之前的代碼每條邊運(yùn)行一次,并且″for(iy=y(tǒng)0+1;iy<y1;iy++)”循環(huán)中的代碼每個(gè)時(shí)鐘周期運(yùn)行一次。
<pre listing-type="program-listing"><![CDATA[ void edgedraw(int x0,int y0,int x1,int y1) {float tmpx,tmpy;float step,dx,dy; int iy,ix; int bit,idx;∥Remove non visible lines if((y0==y(tǒng)1))return; ∥Horizontal line if((y0<0)&amp;&amp;(y1<0))return; ∥OUT top if((x0>(176*4))&amp;&amp;(x1>(176*4)))return; ∥OUT right if((y0>(220*4))&amp;&amp;(y1>(220*4)))return; ∥OUT bottom∥Always draw from top to bottom(Y Sort) if(y1<y0) { tmpx=x0;x0=x1;x1=tmpx; tmpy=y(tǒng)0;y0=y(tǒng)1;y1=tmpy; }∥Init linedx=x1-x0;dy=y(tǒng)1-y0;if(dy==0) dy=1;step=dx/dy; ∥Calculate slope of the lineix=x0;iy=y(tǒng)0;∥Bit order in sbuf(16 sub-pixels per pixel)∥0123∥4567∥89ab∥cdef∥Index=Y(jié)YYYYYYXXXXXXXyyxx∥four lsb of index used to index bits within the unsigned shortif(ix<0)ix=0;if(ix>(176*4)) ix=176*4; if(iy>0) {idx=((ix>>2)&amp;511)|((iy>>2)<<9);∥Integer partbit=(ix&amp;3)|(iy&amp;3)<<2;sbuf[idx&amp;262143]^=(1<<bit); } for(iy=y(tǒng)0+1;iy<y1;iy++) { if(iy<0)continue;if(iy>220*4)continue;ix=x0+step*(iy-y0);if(ix<0)ix=0;if(ix>(176*4))ix=176*4;idx=((ix>>2)&amp;511)|((iy>>2)<<9); ∥Integer partbit=(ix&amp;3)|(iy&amp;3)<<2;sbuf[idx&amp;262143]^=(1<<bit); }}]]></pre>盡管描述了邊的順序繪制,但是本領(lǐng)域的技術(shù)人員可以很容易地理解,可以實(shí)現(xiàn)一些并行處理。例如,可以將同一多邊形的兩個(gè)或更多個(gè)邊同時(shí)繪制到邊緩沖器中。在這種情況下,必須提供邏輯電路以確??梢赃m當(dāng)?shù)靥幚磉@些線之間的任何重疊。同樣地,可以并行地再現(xiàn)兩個(gè)或更多個(gè)多邊形,如果所獲得的經(jīng)增大的處理速度的超負(fù)荷,則需要更復(fù)雜的邏輯/電路??梢詫?duì)再現(xiàn)處理的任何部分實(shí)施并行處理。
圖5表示在子像素定義中所填充的多邊形。暗的子像素是已設(shè)置的。應(yīng)該注意,充填處理由填充器電路執(zhí)行,并且無(wú)需在邊緩沖器中重新存儲(chǔ)該結(jié)果。該圖僅僅表示發(fā)送到該處理的下一步驟的所設(shè)置的子像素。這里,多邊形由覆蓋單個(gè)子像素并橫穿子像素柵格的虛擬標(biāo)記或筆來(lái)填充,該筆最初關(guān)閉,而在每次遇到所設(shè)置的子像素時(shí),在關(guān)和開之間進(jìn)行切換。該筆還可以覆蓋多于一個(gè)的子像素,這些子像素優(yōu)選地在子像素的線上(例如,在下面的特定硬件實(shí)現(xiàn)中的四個(gè)子像素)。在這種情況下,它也可以被稱為刷子。在該示例中,該筆一次一個(gè)子像素地從左移動(dòng)到右。如果該筆向上并且設(shè)置了子像素,則像素保持為被設(shè)置,然后該筆設(shè)置后面的像素,直到其到達(dá)另一被設(shè)置的像素為止。該清除該第二設(shè)置像素,該筆保持向上而且繼續(xù)向右。
該方法包括在多邊形左邊的邊界子像素但不考慮右邊的邊界子像素。原因是如果兩個(gè)相鄰的多邊形共享相同的邊,則必須存在關(guān)于分配有任何給定子像素的那個(gè)多邊形的一致性,以避免在數(shù)學(xué)上不重疊的多邊形的子像素重疊。
再已填充邊緩沖器中的多邊形之后,可以混合屬于各個(gè)像素的子像素并組合到后置緩沖器中。各個(gè)4×4小柵格的覆蓋率給出了色度。例如,從像素的最高行的左邊開始的第三個(gè)像素具有12/16個(gè)被設(shè)置的像素,其覆蓋率是75%。
組合到后置緩沖器中圖6a表示將要組合到后置緩沖器中的各個(gè)像素及其根據(jù)圖5所示的對(duì)每個(gè)像素設(shè)置的子像素而計(jì)算的4比特(0...F hex)混合系數(shù)。每個(gè)時(shí)鐘周期可以將一個(gè)像素組合到后置緩沖器中。只有覆蓋率值大于0的像素才被進(jìn)行組合。
后置緩沖器無(wú)需為與邊緩沖器相同的圖像部分(多個(gè)顯示像素)保存數(shù)據(jù)?;蛘弑4嬲麄€(gè)顯示器或其一部分的數(shù)據(jù)。然而,為使處理更加容易,一個(gè)的大小應(yīng)該是另一個(gè)的多倍。在一個(gè)優(yōu)選實(shí)施例中,邊緩沖器和后置緩沖器都保存整個(gè)顯示器的數(shù)據(jù)。
在該例子中,后置緩沖器中的多邊形的分辨率是在邊緩沖器中其大小的四分之一(當(dāng)然,這取決于每像素的子像素的數(shù)量,這可以根據(jù)防混疊的需要和其它因素進(jìn)行選擇)。兩通道方法和在后置緩沖器中存儲(chǔ)多邊形之前進(jìn)行混合的優(yōu)點(diǎn)是顯著地減少了所需的總的存儲(chǔ)空間。邊緩沖器需要每子像素1比特用于設(shè)置值和未設(shè)置值。然而,后置緩沖器需要較多的每像素比特(這里為16)來(lái)表示待顯示的陰影(shade),如果后置緩沖器用來(lái)設(shè)定邊界子像素而且填充所得到的多邊形,則所需存儲(chǔ)空間的量將大于邊緩沖器和后置緩沖器的組合的八倍,也就是說(shuō)需要16比特的緩沖而不是2比特的緩沖。
在組合中,每個(gè)像素子像素?cái)?shù)的系數(shù)、顏色值所需的比特、以及邊緩沖器和后置緩沖器保存的顯示的比例意味著邊緩沖器的存儲(chǔ)空間需求通常小于或等于后置緩沖器的存儲(chǔ)空間需求,而前置緩沖器的存儲(chǔ)空間需求大于或等于后置緩沖器的存儲(chǔ)空間需求。
邊緩沖存儲(chǔ)空間需求壓縮到8比特上述邊緩沖器具有被構(gòu)造為4×4比特的16比特值。通過將每像素的邊緩沖器數(shù)據(jù)降低到8比特,一種另選(″棋盤格″)結(jié)構(gòu)減少了50%的存儲(chǔ)空間需求。
如圖6b所示,通過從單個(gè)顯示像素的4×4結(jié)構(gòu)中去除奇數(shù)XY位置來(lái)實(shí)現(xiàn)這種結(jié)構(gòu)。
如果將要繪制到邊緩沖器的子像素具有屬于沒有存儲(chǔ)比特的位置的坐標(biāo),則將其向右移動(dòng)一步。例如,將上面所示的部分柵格中的右上子像素向右移動(dòng)到下一顯示像素的部分柵格。在一個(gè)具體示例中,在上面所示的代碼中增加以下的代碼行if((LSB(X)xor LSB(Y))==1)X=X+1;∥LSB()返回最下方比特的坐標(biāo)這在4×4結(jié)構(gòu)內(nèi)只留下了八個(gè)可以接收子像素的位置。這些位置壓縮為8比特?cái)?shù)據(jù),并如前面一樣存儲(chǔ)到邊緩沖器中。
每像素8比特的邊緩沖器是每像素16比特的緩沖器的另選方案。雖然防混疊質(zhì)量降低,但影響很小,所以所需存儲(chǔ)空間減少50%的優(yōu)點(diǎn)勝過該缺點(diǎn)。
曲線的再生圖7a和圖7b分別表示二次和三次貝塞爾曲線。通常兩者都相對(duì)對(duì)稱控制點(diǎn)對(duì)稱。通過將曲線分成多個(gè)短的線段(鑲嵌化)來(lái)實(shí)現(xiàn)繪制這種曲線的多邊形。將曲線數(shù)據(jù)作為矢量圖形命令傳送給圖形引擎。在圖形引擎中而不是在CPU中進(jìn)行的鑲嵌化減少了每個(gè)多邊形發(fā)送給顯示模塊的數(shù)據(jù)量。如圖7a所示的二次貝塞爾曲線具有三個(gè)控制點(diǎn)??梢詫⑵涠x為Moveto(x1,y1),CurveQto(x2,y2,x3,y3)。
三次貝塞爾曲線始終通過端點(diǎn),并且與后兩個(gè)控制點(diǎn)和前兩個(gè)控制點(diǎn)之間的直線相切??梢詫⑷吻€定義為Moveto(x1,y1),CurveCto(x2,y2,x3,y3,x4,y4)。
下面的代碼示出了兩個(gè)函數(shù)。在鑲嵌化處理期間,每一個(gè)函數(shù)被調(diào)用N次,其中N是所產(chǎn)生的直線段的數(shù)量。函數(shù)Bezier3用于二次曲線,函數(shù)Bezier4用于三次曲線。輸入值p1-p4是控制點(diǎn),而mu是在鑲嵌化處理期間從0增加到1的值。mu的值為0時(shí),返回p1,mu的值為1時(shí),返回最后的控制點(diǎn)。
<pre listing-type="program-listing"><![CDATA[XY Bezier3(XY p1,XY p2,XY p3,double mu){ double mum1,mum12,mu2; XY p; mu2=mu*mu; mum1=1-mu; mum12=mum1*mum1; p.x=p1.x*mum12+2*p2.x*mum1*mu+p3.x*mu2; p.y=p1.y*mum12+2*p2.y*mum1*mu+p3.y*mu2; return(p);}XY Bezier4(XY p1,XY p2,XY p3,XY p4,double mu){ double mum1,mum13,mu3; XY p;mum1=1-mu; mum13=mum1*mum1*mum1; mu3=mu*mu*mu; p.x=mum13*p1.x+3*mu*mum1*mum1*p2.x+ 3*mu*mu*mum1*p3.x+mu3*p4.x; p.y=mum13*p1.y+3*mu*mum1*mum1*p2.y+ 3*mu*mu*mum1*p3.y+mu3*p4.y; return(p);}]]></pre>以下代碼是如何對(duì)由三個(gè)控制點(diǎn)(sx,sy),(x0,y0)和(x1,y1)限定的二次貝塞爾曲線進(jìn)行鑲嵌化的示例。鑲嵌化計(jì)數(shù)器x從1開始,這是因?yàn)槿绻鼮?,則函數(shù)將返回第一控制點(diǎn),導(dǎo)致直線的長(zhǎng)度為零。
<pre listing-type="program-listing"><![CDATA[XY p1,p2,p3;p1.x=sx;P1.Y=sy;p2.x=x0;p2.y=y(tǒng)0;p3.x=x1;p3.y=y(tǒng)1;#define split 8for(x=1;x<=split;x++){ P=Bezier3(p1,p2,p3,x/split);∥Calculate next point on curve path LineTo(p.x,p.y);∥Send LineTo command to Edge Draw unit}]]></pre>
圖8表示在上述代碼段中定義的曲線鑲嵌化處理并返回N個(gè)直線段。對(duì)各個(gè)直線段重復(fù)中間的循環(huán)。
填充類型以高級(jí)語(yǔ)言定義的多邊形的顏色可以是原色(solid)(即,整個(gè)多邊形的一個(gè)恒定RGBA(紅、綠、藍(lán)、阿爾法(alpha))值),或者可以具有徑向或線性梯度。
梯度可以具有多達(dá)八個(gè)的控制點(diǎn)。在控制點(diǎn)之間對(duì)顏色進(jìn)行插值以形成顏色漸變(ramp)。各個(gè)控制點(diǎn)由一比率和一RGBA顏色限定。該比率確定控制點(diǎn)在梯度中的位置,RGBA值確定其顏色。
無(wú)論哪種填充類型,當(dāng)將所填充的多邊形組合到后置緩沖器時(shí),在混合處理期間計(jì)算各個(gè)像素的顏色。徑向和線性梯度類型僅需要更復(fù)雜的處理,以沿著顏色漸變合并各個(gè)單獨(dú)像素的位置。
圖9給出了線性和徑向梯度的四個(gè)示例。所有這些都可以由本發(fā)明的圖形引擎自由使用。
圖10表示一標(biāo)準(zhǔn)的梯度正方形。在被稱為梯度正方形的標(biāo)準(zhǔn)空間中定義所有的梯度。梯度正方形的中心為(0,0),并從(-16384,-16384)延伸到(16384,16384)。
在圖10中,將線性梯度映射到圓心為(2048,2048),直徑為4096個(gè)單位的圓上。
該映射所需的2×3矩陣為

即,將梯度換算為其原始大小的八分之一(32768/4096=8),而且平移到(2048,2048)。
圖11表示將要繪制到邊緩沖器中的標(biāo)線23。標(biāo)線是具有一個(gè)像素的寬度的直線。圖形引擎以特殊的模式支持標(biāo)線的再現(xiàn)。當(dāng)標(biāo)線模式有效時(shí),邊繪制單元不采用為正常邊繪制制定的四個(gè)特殊規(guī)則。另外,對(duì)邊緩沖器的內(nèi)容的處理也不同。將標(biāo)線繪制到邊緩沖器中,同時(shí)在空閑時(shí)(on the fly)進(jìn)行填充操作。也就是,沒有獨(dú)立的填充操作。因此,在對(duì)當(dāng)前繪制的圖元(例如,多邊形輪廓)繪制了所有的標(biāo)線后,邊緩沖器中的各個(gè)像素包含為掃描線填充器準(zhǔn)備的填充子像素,以計(jì)算用于覆蓋率信息的已設(shè)置子像素并對(duì)像素進(jìn)行正常的顏色操作(混合到后置緩沖器中)。這里所使用的直線步進(jìn)算法是對(duì)子像素級(jí)別進(jìn)行分級(jí)(stepping)的標(biāo)準(zhǔn)的公知的Bresenham直線算法。
對(duì)于各個(gè)步驟,將實(shí)心圓的4×4像素圖像24繪制(利用OR操作)到邊緩沖器中。即圖11中所示的較暗形狀。由于該4×4子像素的形狀的偏移并不始終與邊緩沖器中的4×4子像素精確地對(duì)準(zhǔn),所以邊緩沖器需要使用多達(dá)四個(gè)讀-修正-寫循環(huán),以將數(shù)據(jù)沿X和Y方向位移到正確位置。
實(shí)現(xiàn)Bresenham算法的邏輯非常簡(jiǎn)單,并且可以作為邊繪制單元中的獨(dú)立模塊來(lái)提供。在正常的多邊形再現(xiàn)操作中其是空閑的。
圖12表示原始的圓形及其偏移位置。左側(cè)圖像表示用于將直線“繪制”到邊緩沖器中的4×4子像素形狀。右側(cè)是向右三步并且向下兩步偏移的位圖的示例。將整個(gè)形狀繪制到存儲(chǔ)器中需要4次存儲(chǔ)器存取。
可以將相同的原理用于繪制大于一個(gè)像素的寬度的線,但由于形狀與較早繪制的形狀的重疊區(qū)域?qū)⒆兇螅孕蕦@著降低。
圖13表示邊緩沖器的最終內(nèi)容,具有如上面所述同時(shí)繪制和填充的子像素標(biāo)線25。下一步驟是混合及組合到后置緩沖器中。
以下是可以在互聯(lián)網(wǎng)上獲得的使用Pascal語(yǔ)言實(shí)現(xiàn)的Bresenham直線算法的一個(gè)通用示例。在各個(gè)時(shí)鐘周期運(yùn)行以注釋″{Draw the Pixels(繪制像素)}″開始的代碼,并且每子像素線運(yùn)行一次其余的代碼。
<pre listing-type="program-listing"><![CDATA[procedure Line(x1,y1,x2,Y2integer;colorbyte); var i,deltax,deltay,numpixels, d,dinc1,dinc2, x,xinc1,xinc2, y,yinc1,yinc2integer; begin {Calculate deltax and deltay for initialisation}deltax=abs(x2-x1); deltay=abs(y2-y1); {Initialize all vars based on which is the independent variable} if deltax>=deltay then begin {x is independent variable} numpixels=deltax+1; d=(2*deltay)-deltax; dinc1=deltay Shl 1; dinc2=(deltay-deltax)shl 1; xinc1=1; xinc2=1; yinc1=0; yinc2=1; endelse begin {y is independent variable} numpixels=deltay+1; d=(2*deltax)-deltay; dinc1=deltax Shl 1; dinc2=(deltax-deltay)shl 1; xinc1=0; xinc2=1; yinc1=1; yinc2=1;end;{Make sure x and y move in the right directions}ifx1>x2 then begin xinc1=-xinc1; xinc2=-xinc2; end; ify1>y2 then begin yinc1=-yinc1; yinc2=-yinc2; end;{Start drawing at} x=x1; y=y(tǒng)1;{draw the pixels} for i=1 to numpixels do beginPutPixel(x,y,color);if d<0 then begind=d+dinc1; x=x+xinc1; y=y(tǒng)+yinc1; end else begind=d+dinc2; x=x+xinc2; y=y(tǒng)+yinc2;end; end;end;]]></pre>后置緩沖器大小在傳送到顯示模塊之前將所有多邊形存儲(chǔ)在后置緩沖器中,后置緩沖器理想地具有與前置緩沖器相同的大小(以及顯示模塊分辨率,也就是在任何時(shí)候,后置緩沖器的一個(gè)像素始終與顯示器的一個(gè)像素相對(duì)應(yīng))。但是,在某些構(gòu)造中,由于大小/成本的原因,不可能具有實(shí)際大小的后置緩沖器。
可以在硬件實(shí)現(xiàn)之前選擇后置緩沖器的大小,其大小始終與前置緩沖器的相同或小于前置緩沖器的大小。如果比前置緩沖器小,則其通常與整個(gè)顯示器寬度相對(duì)應(yīng),而只與顯示器高度的一部分相對(duì)應(yīng),如圖14所示。在這種情況下,邊緩沖器13的大小不需要與前置緩沖器相同。在任何情況下,每個(gè)后置緩沖器的像素具有邊緩沖器的一個(gè)子像素柵格是必需的。
如果如圖4所示,后置緩沖器15比前置緩沖器17小,則在多個(gè)外部通道中完成再現(xiàn)操作。這意味著例如在主機(jī)CPU上運(yùn)行的軟件必須向圖形引擎重新傳送至少部分?jǐn)?shù)據(jù),這增加了為相同的結(jié)果圖像傳送的數(shù)據(jù)總量。
圖14的示例表示沿垂直方向?yàn)榍爸镁彌_器17的1/3的后置緩沖器15。在該示例中,只再現(xiàn)了一個(gè)三角形。該三角形在三個(gè)通道中再現(xiàn),在三個(gè)步驟中填充前置緩沖器。在將后置緩沖器復(fù)制到前置緩沖器之前,完全再現(xiàn)后置緩沖器中的該部分圖像的每個(gè)細(xì)節(jié)是重要的。所以,不論最終圖像的復(fù)雜度(多邊形的數(shù)量)如何,在該示例的結(jié)構(gòu)中,始終從后置緩沖器向前置緩沖器傳送最多三個(gè)圖像。
無(wú)需向圖形引擎發(fā)送三次主機(jī)應(yīng)用中的包含所有moveto、lineto、curveto命令的完整數(shù)據(jù)庫(kù)。只有在圖像的當(dāng)前區(qū)域中的命令,或穿過當(dāng)前區(qū)域的頂邊或底邊的命令是需要的。因此,在圖14的示例中,無(wú)需發(fā)送為頂部區(qū)域限定三角形的左下邊的lineto命令,因?yàn)槠洳唤佑|第一(頂部)區(qū)域。在第二區(qū)域中,因?yàn)樗械木€都接觸該區(qū)域,所以必須發(fā)送所有三個(gè)lineto命令。而在第三區(qū)域中,不需傳送三角形左上邊的線。
很明顯,雖然不選擇要發(fā)送的代碼,最終結(jié)果也將是正確的,但是選擇減少了CPU和圖形引擎之間的帶寬需求。例如,對(duì)于在屏幕上再現(xiàn)大量文本的應(yīng)用,對(duì)要再現(xiàn)的各個(gè)文本串的限制框的快速檢查將導(dǎo)致許多再現(xiàn)命令被快速拒絕。
子圖形既然已經(jīng)示出了較小大小的后置緩沖器的概念及其向前置緩沖器的傳送,因而很容易理解如何可以將相似的過程用于再現(xiàn)2D或3D圖形或子圖形。子圖形通常是運(yùn)動(dòng)圖像,例如游戲中的角色或圖標(biāo)。子圖形是被傳送到前置緩沖器的限定位置的完整實(shí)體。因此,在后置緩沖器比前置緩沖器小的情況下,可以將各個(gè)通道中的后置緩沖器內(nèi)容看作為一個(gè)2D子圖形。
可以使用多邊形再現(xiàn)子圖形的內(nèi)容,或者簡(jiǎn)單地從CPU傳送一位圖來(lái)再現(xiàn)子圖形的內(nèi)容。
通過設(shè)置寬度、高度和XY偏移來(lái)表示將后置緩沖器的哪一部分傳送到前置緩沖器中的哪個(gè)XY位置,可以將2D子圖形傳送到前置緩沖器。
圖14的示例實(shí)際上對(duì)前置緩沖器再現(xiàn)三個(gè)子圖形,其中子圖形的大小為整個(gè)后置緩沖器,并且從上到下移動(dòng)目的的偏移以覆蓋整個(gè)前置緩沖器。另外,在圖像傳送之間再現(xiàn)子圖形(后置緩沖器)的內(nèi)容。
圖15表示被復(fù)制到前置緩沖器中的兩個(gè)位置的后置緩沖器中的一個(gè)子圖形。由于可以設(shè)置子圖形的寬度、高度和XY偏移,所以可以在后置緩沖器中存儲(chǔ)多個(gè)不同的子圖形,并以任何次序?qū)⑺鼈兝L制在前置緩沖器中的任何位置,而且可以進(jìn)行多次而無(wú)需將子圖形位圖從主機(jī)上載到圖形引擎。這種操作的一個(gè)實(shí)際示例是在后置緩沖器中存儲(chǔ)字體集的各個(gè)字符的小位圖。然后可以通過從CPU發(fā)出圖像傳送命令將位圖文本/字體繪制到前置緩沖器中,其中為各個(gè)字母定義源(后置緩沖器)的XY偏移。
圖16表示其中再現(xiàn)數(shù)以百計(jì)的小的2D子圖形以模擬小粒子的濺射的示例。
低功率模式除了使時(shí)鐘無(wú)效以外,存在其它的LCD節(jié)電模式,該LCD節(jié)電模式使得圖形裝置能夠如在此所述那樣運(yùn)行,而通過將顏色分辨率減少為每像素3比特,來(lái)降低LCD顯示器的功耗。對(duì)于各個(gè)像素,使紅、綠和藍(lán)分量有效或無(wú)效。這樣使電力的效率更高(對(duì)于LCD顯示器)。然而,如果將顏色簡(jiǎn)單地限制為″0″或″1″,則顯示質(zhì)量非常差。為了改善這種情況,可以使用抖動(dòng)處理。
抖動(dòng)處理的原則是公知的,并且在許多圖形裝置中使用。往往在獲得的顏色精度(例如,每種顏色m比特)比可以顯示的顏色精度(例如,每種顏色n比特)高的情況下使用抖動(dòng)處理。通過將一些隨機(jī)數(shù)引入顏色值中來(lái)進(jìn)行抖動(dòng)處理。
使用隨機(jī)數(shù)生成器來(lái)產(chǎn)生(m-n)比特的無(wú)符號(hào)隨機(jī)數(shù)。然后將其添加到原始m比特顏色值中,并將高n比特輸入顯示器。
在一個(gè)簡(jiǎn)單的實(shí)施例中,隨機(jī)數(shù)是根據(jù)像素地址的所選比特產(chǎn)生的偽隨機(jī)數(shù)。
圖形引擎的硬件實(shí)現(xiàn)如圖17所示,已實(shí)現(xiàn)一種通用的硬件實(shí)現(xiàn)。該圖表示該實(shí)現(xiàn)的內(nèi)部單元的更詳細(xì)的方框圖。
邊繪制電路由圖17中所示的邊繪制單元以及邊緩沖器存儲(chǔ)控制器形成。
填充器電路被表示為掃描線填充器,在掩碼生成器單元中具有虛擬筆和混合邏輯(用于將子像素混合成對(duì)應(yīng)的像素)。后置緩沖器存儲(chǔ)控制器將所混合的像素組合到后置緩沖器中。
“裁剪器”機(jī)制用于去除該硬件實(shí)現(xiàn)中的不可見的線。其目的在于對(duì)多邊形邊進(jìn)行裁剪,以使它們的端點(diǎn)始終在屏幕區(qū)域內(nèi),同時(shí)保持線的斜率和位置。這基本上是性能優(yōu)化模塊,并且其功能可以由edgedraw函數(shù)中的以下四個(gè)“if”語(yǔ)句來(lái)實(shí)現(xiàn)if(iy<0)continue;if(iy>220*4)continue;if(ix<0)ix=0;if(ix>(176*4))ix=176*4;如果兩個(gè)端點(diǎn)都位于顯示器屏幕區(qū)域的同一側(cè)的外部,則不對(duì)該邊進(jìn)行處理;否則,對(duì)于屏幕區(qū)域外部的任何端點(diǎn),裁剪器計(jì)算該邊在何處進(jìn)入屏幕,并僅處理從交叉點(diǎn)開始的邊的″可見″部分。
在硬件中,如上所述裁剪端點(diǎn)比丟棄單個(gè)子像素更有意義,因?yàn)槿绻撨叿浅iL(zhǎng)并且在屏幕外部非常遠(yuǎn)的地方,則硬件將花費(fèi)大量的時(shí)鐘周期而沒有產(chǎn)生可用的子像素。這些時(shí)鐘周期用在裁剪上比較好。
填充橫貫單元從邊緩沖器讀取數(shù)據(jù),并將所輸入的數(shù)據(jù)發(fā)送給掩碼生成器。填充橫貫不需要穿過整個(gè)子像素柵格。例如它可以僅處理屬于包圍整個(gè)多邊形的矩形(限制框)的所有像素。這可以保證掩碼生成器接收到多邊形的所有子像素。在某些情況下,該限制框與最佳橫貫?zāi)J较嗖詈苓h(yuǎn)。理想地,填充橫貫單元將忽略多邊形外部的子像素。存在多種方式用于提高填充橫貫單元的智能性,以避免從邊緩沖器讀取空子像素。這種優(yōu)化的一個(gè)示例是為每條掃描線(或子像素的水平線)存儲(chǔ)被發(fā)送到邊緩沖器的最左側(cè)和最右側(cè)的子像素,然后只在這些左右端之間橫貫。
掩碼生成器單元僅包含用于輸入邊緩沖器子像素的填充操作的″虛擬筆″以及計(jì)算所得到的覆蓋率的邏輯。隨后將該數(shù)據(jù)發(fā)送到后置緩沖器存儲(chǔ)控制器,以組合到后置緩沖器(顏色混合)中。
下表表示圖形引擎內(nèi)部的各種單元的大致門數(shù),以及與較早描述相關(guān)的適當(dāng)注釋。

具體硅實(shí)現(xiàn)在圖18中示出了更具體的硬件實(shí)現(xiàn),該硬件實(shí)現(xiàn)被設(shè)計(jì)用來(lái)優(yōu)化硅的使用并減小對(duì)存儲(chǔ)空間的需求。在該示例中,通過只使用緩沖器中的另選(″棋盤格″)位置,可以使整個(gè)處理的內(nèi)存需求減小50%,如上所述并在圖6b中示出的。另選地,整個(gè)處理可以使用所有的子像素位置。
在圖18中的各個(gè)方框表示一個(gè)硅模塊,邊緩沖器左邊的方框用在第一通道(鑲嵌化和線繪制)中,邊緩沖器右邊的方框用在第二通道(填充多邊形顏色)中。下面分別描述各個(gè)模塊的輸入、輸出和功能。不具體描述鑲嵌功能。
子像素設(shè)置器總體上如上所述,該模塊設(shè)置定義多邊形邊的子像素。
輸入高級(jí)圖形命令,例如move to和line to命令。
輸出多邊形邊上的子像素的坐標(biāo)。
功能邊繪制單元首先檢查各條線,以查看是否需要根據(jù)屏幕大小進(jìn)行裁剪。如果需要裁剪,則將其傳送給裁剪單元,并且邊繪制單元等待返回所裁剪的線。
隨后對(duì)各條直線或直線段進(jìn)行光柵化。根據(jù)上述光柵化規(guī)則,光柵化生成各個(gè)水平子像素掃描線的子像素。
裁剪單元該模塊裁剪或者″轉(zhuǎn)換″不能或不在最終顯示圖像中顯示的線。
輸入需要進(jìn)行裁剪的線(例如,屏幕區(qū)域外部或期望觀看區(qū)域外部的線)。
輸出經(jīng)裁剪的線。
功能裁剪單元對(duì)期望觀看區(qū)域(通常為屏幕區(qū)域)外部的輸入線段進(jìn)行裁剪。如圖19所示,如果線與屏幕的B、C或D側(cè)相交,則該線在屏幕區(qū)域外部的部分被去除。相反,如果線穿過A側(cè),則通過將該點(diǎn)的x坐標(biāo)設(shè)置為0,將屏幕區(qū)域外部的部分投影到A側(cè)上。由于必須有使從左到右的填充開始的觸發(fā)器,所以這確保了可以獲得偽邊,在第二通道中從該偽邊開始進(jìn)行填充。無(wú)論何時(shí)執(zhí)行了裁剪操作,都計(jì)算具有新端點(diǎn)的新線段,并將其發(fā)送回子像素設(shè)置器。在子像素設(shè)置器中不存儲(chǔ)原始線段。這確保了不會(huì)人為地產(chǎn)生裁剪操作的任何錯(cuò)誤。
阻斷及限制單元該單元以兩種模式工作,以使處理最優(yōu)。第一模式將子像素設(shè)置到塊中,以使數(shù)據(jù)處理/存儲(chǔ)器訪問更加容易。在通過這種方式對(duì)整個(gè)多邊形進(jìn)行了處理后,第二模式指示將考慮哪些塊,以及哪些塊將因?yàn)樗鼈儾话瑪?shù)據(jù)(在限制框之外)而要被忽略。
輸入來(lái)自子像素設(shè)置器的將設(shè)置在邊緩沖器中的子像素的坐標(biāo)。
輸出模式04×1像素塊,其包含要設(shè)置在邊緩沖器中的子像素。各個(gè)像素包含8個(gè)子像素(在棋盤格版本中),所以總數(shù)為32比特。還輸出4×1塊的x和y坐標(biāo)以及用于限制的最小值和最大值。
模式1限制多邊形的區(qū)域。逐行發(fā)送該區(qū)域,同時(shí)輸出所設(shè)置的子像素的坐標(biāo)。
功能阻斷和限制單元有兩種模式。首先以模式0處理各個(gè)多邊形。隨后該單元切換到模式1以完成該操作。
模式0該單元包含子像素高速緩存。該高速緩存包含4個(gè)像素寬1個(gè)像素高的區(qū)域的子像素以及地址。該高速緩存初始包含零。如果輸入的子像素在高速緩存內(nèi),則切換高速緩存中的子像素值。如果該子像素在高速緩存外部,則將地址改變?yōu)樾挛恢?,將高速緩存?nèi)容和地址輸出到邊緩沖器,將高速緩存重置為全零,并且將新高速緩存中與輸入的子像素相對(duì)應(yīng)的位置設(shè)置為1。
高速緩存與邊緩沖器中的塊位置相對(duì)應(yīng)。多邊形周邊可以在塊的外部并重新輸入塊內(nèi),在這種情況下,向邊緩沖器輸出塊內(nèi)容兩次,一次用于一條邊,一次用于另一條邊。
由于輸入了子像素,所以計(jì)算限定限制區(qū)域的低分辨率限制框。例如,將其存儲(chǔ)為最小和最大的y值,以及最小和最大x值的表。各個(gè)最小值、最大值對(duì)與多個(gè)像素行相對(duì)應(yīng)。該表可以是固定大小,所以對(duì)于較高屏幕分辨率,各個(gè)表項(xiàng)與多個(gè)像素行相對(duì)應(yīng)。如果多邊形向上延伸直至/超過屏幕邊緣,則限制框可以穿過該多邊形。
模式1模式1獲得從限制框的開始到結(jié)束的整條線。最后一次刷新高速緩存,并且隨后從左到右逐條線地對(duì)限制區(qū)域進(jìn)行光柵化。這里,阻斷和限制單元輸出該區(qū)域內(nèi)的各個(gè)4×1像素塊的(x,y)地址,并獲得該塊中將要輸出的相關(guān)邊數(shù)據(jù)。
MMUMMU(存儲(chǔ)器管理單元)是有效的存儲(chǔ)器接口。
輸入來(lái)自阻斷和限制單元的高速緩存的子像素邊數(shù)據(jù)(模式0)。
多個(gè)4×1塊的地址(模式1)來(lái)自邊緩沖器的要發(fā)送到填充覆蓋單元(稍后描述)的存儲(chǔ)器讀取數(shù)據(jù)。
輸出整個(gè)多邊形的子像素邊數(shù)據(jù)存儲(chǔ)器地址和邊緩沖器的寫入數(shù)據(jù)功能MMU與邊緩沖器存儲(chǔ)器相連。與阻斷和限制單元的模式0和模式1相對(duì)應(yīng),存在兩種類型的存儲(chǔ)器訪問。在操作的第一模式(高速緩存操作)中,使用讀-修正-寫操作,將邊子像素?cái)?shù)據(jù)與邊緩沖器的內(nèi)容進(jìn)行異或(例如,如果兩條線通過相同的塊時(shí),這是必需的)。在第二模式中,讀取限制框中的邊緩沖器的內(nèi)容并將其輸出到填充覆蓋單元。
填充覆蓋該單元填充多邊形,該多邊形的邊已存儲(chǔ)在邊緩沖器中。該單元一次兩個(gè)像素地產(chǎn)生顏色值。
輸入來(lái)自阻斷和限制單元的行信號(hào)的終止通過MMU來(lái)自阻斷和限制單元的坐標(biāo)成塊的邊緩沖器數(shù)據(jù)輸出覆蓋率值坐標(biāo)功能該單元將邊緩沖器的內(nèi)容轉(zhuǎn)換為各個(gè)像素的覆蓋率值。通過填充存儲(chǔ)在邊緩沖器中的多邊形(雖然不恢復(fù)所填充的多邊形),并隨后如圖20所示計(jì)算各個(gè)像素的被填充子像素的數(shù)量來(lái)進(jìn)行該轉(zhuǎn)換。
使用″刷子″用來(lái)執(zhí)行該填充操作。這包括4個(gè)比特,每個(gè)比特用于像素行中的一個(gè)子行。逐行進(jìn)行該填充。對(duì)每一行,將刷子初始化為全零。隨后逐個(gè)子像素地移動(dòng)該行。在各個(gè)位置,如果設(shè)置了邊緩沖器中的任何一個(gè)子像素,則切換該刷子中的對(duì)應(yīng)比特。通過這種方式,將屏幕中的各個(gè)子像素限定為″1″或″0″。
該方法可以使用一查找表對(duì)各個(gè)4×4子像素區(qū)域并行工作,該查找表保存刷子比特和子像素區(qū)域的值。
在一個(gè)實(shí)施例中,在各個(gè)周期中處理兩個(gè)完整像素。只需要覆蓋率值,因此,稍后計(jì)算顏色,并且子像素塊中所設(shè)置的子像素的位置不再重要,并被有效地丟棄。覆蓋率值是為各個(gè)像素設(shè)置的子像素的數(shù)量,范圍為0到8。
對(duì)于各個(gè)像素行,如果在行結(jié)束時(shí)刷子為全零,則在無(wú)需在該行設(shè)置另外的像素。如果刷子不是全零,則這表示下述情況多邊形的右側(cè)在屏幕外部,并且必須設(shè)置當(dāng)前位置和屏幕右側(cè)之間的所有像素(這里,如前所述,限制框?qū)⒋┻^該多邊形)。填充覆蓋單元隨后進(jìn)入下述模式其使用當(dāng)前刷子值繼續(xù)填充操作直到屏幕的右側(cè)。
始終從上向下地繪制被裁剪到屏幕區(qū)域中的線的組合、線,并且不繪制最后的像素意味著不設(shè)置子像素的底行。為了防止該操作導(dǎo)致人為缺陷,在填充操作期間,將倒數(shù)第二個(gè)子像素行有效地復(fù)制到底行中。
混合輸入來(lái)自填充覆蓋單元的像素坐標(biāo)和覆蓋率值。
顏色值;其在命令流中單獨(dú)設(shè)置。
輸出已在后置緩沖器中的所填充的多邊形和其它任何對(duì)象。
對(duì)于3D場(chǎng)景,通常將多邊形從前到后預(yù)先排序。這可以通過例如使用畫家算法(painter algorithm)轉(zhuǎn)換為z緩沖器中的Z值來(lái)進(jìn)行。反序使得能夠具有合適的防混疊功能。每像素覆蓋率值已存儲(chǔ)在后置(或幀)緩沖器中。在繪制任何多邊形之前,將幀緩沖器中的覆蓋率值重新設(shè)定為零。每次繪制像素,rgb顏色值都乘以覆蓋率/8(對(duì)于棋盤格結(jié)構(gòu))并加入到幀緩沖器中的顏色值中。將該覆蓋率值加入到幀緩沖器中的覆蓋率值中。通過8比特的整數(shù)來(lái)表示rgb值,所以覆蓋率值的1/8與rgb值相乘可能導(dǎo)致舍入誤差。為了減少由此引起的人為缺陷的數(shù)量,而使用下列算法1.如果幀緩沖器中現(xiàn)有的覆蓋率值是8,則像素已被完全覆蓋,忽略新的像素。
2.如果總的覆蓋率值小于8,則表示像素沒有被完全覆蓋,顏色=(幀緩沖器中的顏色+1/8x輸入顏色)3.如果總覆蓋率值是8,則表示像素目前已被完全覆蓋,顏色=幀緩沖器中的顏色+最大顏色值-((1-1/8x覆蓋率)x輸入顏色)4.如果總覆蓋率值大于8,則減小新像素的覆蓋率值,以使總覆蓋率正好為8,并應(yīng)用前面的情況。
對(duì)所有的中間值進(jìn)行舍入,并表示為8比特的整數(shù)。
在這種模式中,不支持非線性眼響應(yīng)(non-linear eye response)或每多邊形阿爾法(透明)的伽馬校正(gamma correction)。作為對(duì)透明多邊形的補(bǔ)充,覆蓋率值可以用來(lái)選擇多個(gè)伽馬值之一。隨后可以將覆蓋率和伽馬值相乘,以給出5比特的伽馬校正阿爾法值。將該阿爾法值與第二每多邊形阿爾法值相乘。
光柵化光柵化是將幾何表達(dá)轉(zhuǎn)換成多邊形中的像素(或子像素)的坐標(biāo)流的處理。
在上述的特定硅中,以3個(gè)階段進(jìn)行光柵化1.在子像素設(shè)置單元、阻斷和限制單元模式0和MMU中,將幾何形狀轉(zhuǎn)換成每子像素表達(dá)并存儲(chǔ)在邊緩沖器中。
2.在阻斷和限制模式1中,使用限制區(qū)域來(lái)進(jìn)行像素坐標(biāo)生成的第一階段。其輸出限制區(qū)域中所有4×1像素塊的地址。注意,這可以包含完全在多邊形外部的像素或者甚至4×1像素塊。
3.在填充覆蓋單元中,將這些4×1像素塊和邊緩沖器的內(nèi)容用于產(chǎn)生多邊形中的所有子像素的坐標(biāo)。
圖形引擎在具有顯示器的電子裝置中的位置可以將圖形引擎連接到顯示模塊(具體地為硬件顯示驅(qū)動(dòng)器,位于公共總線上由CPU(IC)控制,或者甚至嵌入在存儲(chǔ)單元或裝置內(nèi)的其它位置內(nèi))。下面的優(yōu)選實(shí)施例不是限制性的,而是示出了具有圖形引擎的各種應(yīng)用。
將圖形引擎集成到顯示模塊中圖21的示意圖表示顯示模塊5,其包括根據(jù)本發(fā)明實(shí)施例的圖形引擎1,圖形引擎1集成在LCD或相應(yīng)類型顯示器8的源IC3中。所示的CPU2遠(yuǎn)離顯示模塊5。將該引擎直接集成到源驅(qū)動(dòng)IC中具有特殊的優(yōu)點(diǎn)。特別地,在同一硅結(jié)構(gòu)內(nèi)的互連,使該連接比分別封裝具有更高的電力效率。此外,不需要特別的I/O緩沖器和控制電路。也不需要分別制造和測(cè)試,并且使重量和大小增加最小。
該圖表示典型的結(jié)構(gòu),在該結(jié)構(gòu)中,LCD顯示器的源IC也用作為門IC4的控制IC。
圖22是包括根據(jù)本發(fā)明實(shí)施例的圖形引擎1的顯示模塊5的示意圖,圖形引擎1集成在顯示模塊中,并為L(zhǎng)CD或相應(yīng)類型顯示器的兩個(gè)源IC3服務(wù)??梢栽趫D形引擎IC上設(shè)置圖形引擎,該圖形引擎IC將安裝在與顯示控制IC相鄰的顯示模塊的背面。占用裝置殼體內(nèi)的最小的額外空間,并成為顯示模塊封裝的一部分。
在該示例中,源IC3再次用作為門IC4的控制器。將CPU命令輸入圖形引擎并在該引擎中分成用于各個(gè)源IC的信號(hào)。
圖23是具有嵌入源驅(qū)動(dòng)IC的顯示模塊5的示意圖,源驅(qū)動(dòng)IC合并有圖形引擎及其與CPU、顯示區(qū)域和選通驅(qū)動(dòng)IC的連接。圖中更詳細(xì)地表示了這些部分之間的通信。源IC(即驅(qū)動(dòng)IC和控制IC)具有用于控制選通驅(qū)動(dòng)器、LCD驅(qū)動(dòng)電路、接口電路和圖形加速器的控制電路。接口電路和源驅(qū)動(dòng)(旁路了圖形引擎)之間的直接連接使得顯示器能夠在沒有圖形引擎的情況下工作。
在與本申請(qǐng)同日提交的國(guó)際申請(qǐng)中描述了顯示驅(qū)動(dòng)IC、TFT型結(jié)構(gòu)、尋址和定時(shí)圖、以及源驅(qū)動(dòng)電路中的組件方框的進(jìn)一步的細(xì)節(jié)。該申請(qǐng)要求GB 0210764.7的優(yōu)先權(quán),名稱為″Display driver IC,display module andelectrical device incorporating a graphics engine″,在此通過引用將其并入。
當(dāng)然,本發(fā)明不限于單個(gè)顯示器的類型。對(duì)于本領(lǐng)于的技術(shù)人員可以知道許多適合的顯示器類型。這些都能夠進(jìn)行X-Y(列/行)尋址并僅僅在驅(qū)動(dòng)實(shí)現(xiàn)和術(shù)語(yǔ)方面與所述文獻(xiàn)中的特定LCD實(shí)現(xiàn)不同。本發(fā)明可以應(yīng)用于所有的LCD顯示器類型,例如STN、非晶TFT、LTPS(低溫多晶硅)和LCoS顯示器。它還可以用于基于LED的顯示器,例如OLED(有機(jī)LED)顯示器。
例如,本發(fā)明的一個(gè)特殊應(yīng)用是由用戶佩戴或手持的遠(yuǎn)程顯示器的形式的移動(dòng)設(shè)備的配件。顯示器可以通過藍(lán)牙(Bluetooth)或類似的無(wú)線協(xié)議與該設(shè)備連接。
在許多情況下,移動(dòng)設(shè)備本身很小,以致于增加高分辨率的屏幕是不可行的(或不是期望的)。在這種情況下,可以在用戶耳機(jī)或用戶眼鏡上的單獨(dú)的接近眼睛(NTE)的或者其它顯示器是特別有優(yōu)勢(shì)的。
該顯示器可以是LCoS類型,其適于在NTE應(yīng)用中的可佩戴式顯示器。NTE應(yīng)用使用具有放大器的單個(gè)LCoS顯示器,使放大器靠近眼睛,以產(chǎn)生放大的虛擬圖像。具有這種顯示器的具有網(wǎng)絡(luò)功能的無(wú)線裝置可以使用戶能夠?qū)⒕W(wǎng)頁(yè)作為大的虛擬圖像進(jìn)行觀看。
顯示器變型及流量的示例顯示器描述顯示器的分辨率(X*Y)像素為該顯示器上的像素?cái)?shù)量(=X*Y)16個(gè)顏色比特是刷新/繪制整個(gè)屏幕的實(shí)際數(shù)據(jù)量(假定用16比特來(lái)描述各個(gè)像素的屬性)幀速率@25MB/S描述顯示器每秒刷新的次數(shù),假定數(shù)據(jù)傳輸速率為25Mbit/秒Mb/s@15fps表示為保證整個(gè)屏幕每秒15次更新所需的數(shù)據(jù)傳輸速率。

不同接口的功耗的示例CMADSi/f @25Mb/s0.5mW →20uW/MbCMOSi/f @25MB/S1mW →40uW/Mb下文是說(shuō)明CPU和顯示器之間的總線上的流量降低的4個(gè)總線流量示例(注意這些示例只說(shuō)明總線流量而不說(shuō)明CPU負(fù)荷)。
示例1全屏漢字文本(靜態(tài))代表了一種復(fù)雜的情況,對(duì)于176×240的顯示器大小產(chǎn)生42240個(gè)像素或84480個(gè)字節(jié)(16比特/像素=2字節(jié)/像素)。假設(shè)一個(gè)漢字字符為最小16×16像素,這實(shí)現(xiàn)了每屏165個(gè)漢字字符。一個(gè)漢字字符平均由大約223個(gè)字節(jié)描述,產(chǎn)生總計(jì)36855字節(jié)的數(shù)據(jù)量。
字節(jié) 84480像素 4224016<--一個(gè)漢字的X*YY-像 24015素X-像 17611素5 165<---#全屏漢字顯示223<--字節(jié)/漢字(SVG)流量 流量位圖 SVG84480 36855
在該具體示例中,使用SVG加速器需要傳輸36K字節(jié),而對(duì)于位圖刷新(=不使用加速器繪制或刷新整個(gè)屏幕),則需要傳輸84K字節(jié)的數(shù)據(jù)(減少了56%)。
由于SVG的基本屬性(可縮放),所以假定字符的數(shù)量相同,則不論屏幕分辨率如何,36K字節(jié)保持不變。而在位映射系統(tǒng)中不是這種情況,其中流量與像素的數(shù)量(x*y)成正比地增長(zhǎng)。
示例2動(dòng)畫(@15fps)工作屏幕(165個(gè)漢字字符)(顯示器176×240)84480 36855fps151267200 552825比特uW 4050.722.1 uW 對(duì)于總線40表示40μw/mbit的數(shù)據(jù)。
CPU到GE的流量為552kbits/s(22uW),而GE到顯示器的流量為1267kbits/s(50uW)示例3全屏填充三角形全屏-比特映射(=?jīng)]有加速器)84480字節(jié)數(shù)據(jù)(屏幕176×240,16比特顏色),-對(duì)于SVG加速器只有16字節(jié)(減少99.98%)。
示例4動(dòng)畫(@15fps)旋轉(zhuǎn)填充三角形(顯示器176×240)8448016fps15 1267200 240比特uW 40 50.7 0.01 uW對(duì)于總線40表示40μw/mbit的數(shù)據(jù)。
CPU到GE的流量為240kbits/s(0.01uW),GE到顯示器的流量為1267kbits/s(50uW)最后的示例表示圖形引擎在游戲(例如,基于動(dòng)畫Flash(TM Macromedia)的游戲)中使用的適用性。
在具有一體或共享存儲(chǔ)器的公共總線上的圖形引擎圖24表示使用總線連接各個(gè)模塊的設(shè)計(jì),這在片上系統(tǒng)(system-on-a-chip)的設(shè)計(jì)中是常見的。然而,可以通過獨(dú)立芯片(IC)之間的外部總線來(lái)使用相同的總體結(jié)構(gòu)。在該示例中,存在單個(gè)的一體存儲(chǔ)器系統(tǒng)。邊緩沖器、前置緩沖器和后置緩沖器都使用該存儲(chǔ)器的一部分。
各個(gè)組件通常具有分配給其專用的存儲(chǔ)區(qū)域。另外,存儲(chǔ)區(qū)域可以由多個(gè)設(shè)備訪問,以使得數(shù)據(jù)能夠從一個(gè)設(shè)備傳送到另一個(gè)設(shè)備。
因?yàn)楣蚕泶鎯?chǔ)器,所以在各個(gè)時(shí)鐘周期期間只有一個(gè)設(shè)備可以訪問存儲(chǔ)器。因此使用某種形式的判定。當(dāng)單元需要訪問存儲(chǔ)器時(shí),向判定器發(fā)送請(qǐng)求。如果在該周期中,沒有其它的單元正在請(qǐng)求存儲(chǔ)器,則立即允許該請(qǐng)求,否則根據(jù)某種判定算法,立即或在后續(xù)周期中允許該請(qǐng)求。
往往將一體存儲(chǔ)器模型改進(jìn)為包括一個(gè)或更多個(gè)具有更多專門用途的額外存儲(chǔ)器。在大多數(shù)情況下,該存儲(chǔ)器仍是“一體”的,因?yàn)槿魏文K可以訪問該存儲(chǔ)器的任何部分,但模塊訪問本地存儲(chǔ)器的速度更快。在下面的示例中,將存儲(chǔ)器分為兩個(gè)部分,一個(gè)用于所有與屏幕相關(guān)的功能(圖形、視頻),一個(gè)用于其它功能。
雖然在圖中示出,但是顯然可以將圖形引擎組合到CPU模塊/IC中以加快向圖形引擎的傳送命令。
直接存儲(chǔ)器存取在圖形操作型系統(tǒng)中,通常由CPU來(lái)產(chǎn)生要顯示的信息。對(duì)于CPU來(lái)說(shuō),可以將圖形命令直接傳送給圖形引擎,但是如果圖形設(shè)備不能足夠快地處理這些命令,則存在使CPU產(chǎn)生延遲的風(fēng)險(xiǎn)。通常的解決方案是將命令寫入由圖形單元和CPU共享的存儲(chǔ)區(qū)域中。隨后使用直接存儲(chǔ)器存取單元(DMA)來(lái)讀取這些命令并將它們發(fā)送給圖形單元。該DMA可以是任何設(shè)備可用的中央DMA,或者可以與圖形單元組合。
當(dāng)將所有的數(shù)據(jù)發(fā)送到圖形引擎時(shí),DMA可以可選地中斷CPU以請(qǐng)求更多的數(shù)據(jù)。在雙緩沖器方案中,具有兩個(gè)相同的存儲(chǔ)區(qū)域也是常見的。圖形引擎處理來(lái)自第一存儲(chǔ)區(qū)域的數(shù)據(jù),而CPU向第二存儲(chǔ)區(qū)域?qū)懭朊?。圖形引擎隨后從第二存儲(chǔ)區(qū)域進(jìn)行讀取,而CPU向第一存儲(chǔ)區(qū)域?qū)懭胄旅?,等等?br> 圖形引擎在機(jī)頂盒應(yīng)用或游戲控制臺(tái)中的使用對(duì)于機(jī)頂盒應(yīng)用,連接到存儲(chǔ)器總線的模塊通常包括CPU;mpeg解碼器;傳輸流多路分解器;智能卡接口;控制板接口;PAL/NTSC編碼器。也可以具有其它接口,例如磁盤驅(qū)動(dòng)器、DVD播放機(jī)、USB/Firewire。如圖26所示,圖形引擎可以以與其它設(shè)備連接相類似的方式連接到存儲(chǔ)器總線。
圖27表示連接到游戲控制臺(tái)的存儲(chǔ)器總線的模塊。這些模塊通常包括CPU、游戲操縱桿/游戲鍵盤接口、音頻、LCD顯示器和圖形引擎。
嵌入在存儲(chǔ)器中的圖形引擎描述將圖形引擎集成到顯示IC中的初始應(yīng)用部分具有取決于用戶應(yīng)用和情況的一些優(yōu)點(diǎn)和缺點(diǎn)。
如隨后所述,也可以在其它領(lǐng)域中實(shí)施圖形引擎,例如基帶(為移動(dòng)電話或其它便攜式設(shè)備中的模塊,用于控制CPU和所需的大部分或所有數(shù)字和模擬處理,可以包含一個(gè)或更多個(gè)IC)或應(yīng)用處理器,或者單獨(dú)的伴隨IC(除了基帶之外,用于控制附加值功能,例如mpeg、MP3和照片處理)等。由于這些IC通常使用更先進(jìn)的處理,所以與基帶處理進(jìn)行組合的主要優(yōu)點(diǎn)是降低成本。成本的進(jìn)一步降低來(lái)自于UMA(一體存儲(chǔ)器體系結(jié)構(gòu))的使用,因?yàn)檫@種存儲(chǔ)器已在很大程度上可用。所以不需要另外的封裝、組裝等。
然而,在基帶的情況下,存在的困難是存儲(chǔ)器帶寬的限制。在顯示IC應(yīng)用中,這不是問題,因?yàn)閳D形引擎可已使用顯示IC中的嵌入存儲(chǔ)器,該存儲(chǔ)器與UMA相分離。為了解決存儲(chǔ)器帶寬的問題,存在多種可能性,例如使用較高帶寬的存儲(chǔ)器(DDR=雙倍數(shù)據(jù)速率)或集中分配所述基帶中的所使用的存儲(chǔ)器。這意味著在UMA中,一些存儲(chǔ)器在基帶之外,并嵌入了一些集中使用的存儲(chǔ)器。其優(yōu)點(diǎn)在于所需帶寬較低,但必須承受對(duì)于基帶(嵌入式存儲(chǔ)器)的高IC成本。
使用外部UMA的另一個(gè)問題是UMA的隨機(jī)訪問。在隨機(jī)訪問存儲(chǔ)器的情況下,等待時(shí)間使整個(gè)處理變慢,因此效率很低。為解決該問題,可以將一些本地緩沖器(存儲(chǔ)器)加入到基帶中,以進(jìn)行高速緩存,并使用突發(fā)模式傳送到外部存儲(chǔ)器或從外部存儲(chǔ)器傳送。隨著基帶模塊/IC的硅尺寸的增加,也會(huì)有一些負(fù)面的影響。
圖29表示其中將圖形引擎嵌入在存儲(chǔ)器中的實(shí)施例。在這種情況下,在已存在于電子顯示裝置中的移動(dòng)存儲(chǔ)器(芯片)中保持圖形引擎。這種構(gòu)造具有許多優(yōu)點(diǎn),具體地,由于使用三個(gè)緩沖器(邊緩沖器、前置緩沖器、后置緩沖器)和雙通道方法,使得圖形引擎必須頻繁地讀/寫存儲(chǔ)器。術(shù)語(yǔ)移動(dòng)表示存儲(chǔ)器特別適合于移動(dòng)設(shè)備,該存儲(chǔ)器通常為DRAM,其具有對(duì)于移動(dòng)使用的耗能低和其它特征。然而,該示例也可以使用其它存儲(chǔ)器,例如在PC行業(yè)中普遍使用的存儲(chǔ)器。
將圖形引擎嵌入存儲(chǔ)器中的一些優(yōu)點(diǎn)如下這種設(shè)置減少了來(lái)自該體系結(jié)構(gòu)的CPU側(cè)(基帶側(cè))的存儲(chǔ)器帶寬的需求。GE本地訪問移動(dòng)存儲(chǔ)器IC內(nèi)的存儲(chǔ)器。由于它的體系結(jié)構(gòu),移動(dòng)存儲(chǔ)器IC可以具有一些″空閑″硅區(qū)域,由此使得能夠低成本地集成GE,否則這些硅區(qū)域不被使用。由于移動(dòng)存儲(chǔ)器IC接收命令,所以不需要或需要很少的附加焊盤。因此,可以使用一個(gè)(或更多個(gè))命令來(lái)命令/控制GE。這與顯示IC/傳統(tǒng)的情況相似。在基帶上的附加I/O以及整個(gè)移動(dòng)IC上的附加部件上上沒有附加封裝(因?yàn)檫@是存儲(chǔ)器的集成部分),因此,對(duì)現(xiàn)有(預(yù)加速)系統(tǒng)幾乎不進(jìn)行任何物理改變。
嵌入包含任何附加存儲(chǔ)器的GE要求該GE具有z緩沖器或任何高級(jí)采樣緩沖器(在傳統(tǒng)的防混疊的情況下)。該體系結(jié)構(gòu)可以完美地與DSP進(jìn)行組合,以容納MPEG流,并將其與圖形接口(圖形周圍的窗口中的視頻)進(jìn)行組合。
上述實(shí)施例具有下述共同特征沒有將圖形引擎容納在單獨(dú)的IC中,而是集成在已有的、需要所考慮的電子裝置的功能所需的IC或模塊中。因此,圖形引擎可以完全保持在IC或芯片組(CPU、DSP、存儲(chǔ)器,片上系統(tǒng)、基帶或伴隨IC)中,或甚至分開在兩個(gè)或更多個(gè)的已有IC中。
硬件形式的圖形引擎有利于減少門數(shù)量,并且可以利用任何空閑的硅區(qū)域,甚至任何空閑的連接焊盤。這使得圖形引擎能夠嵌入在存儲(chǔ)器(或其它)IC中,而不需要改變存儲(chǔ)器IC的物理接口。例如,在將圖形引擎嵌入集中使用內(nèi)存的芯片中(在一個(gè)或多個(gè)CPU IC中)的情況下,對(duì)于存儲(chǔ)器IC,可以避免對(duì)物理IC接口的任何改變和作為一個(gè)整體的母板的布局及設(shè)計(jì)。圖形引擎也可以利用IC中未分配的命令存儲(chǔ)空間來(lái)執(zhí)行圖形操作。
權(quán)利要求
1.一種圖形引擎,用于根據(jù)所接收的定義多邊形的高級(jí)圖形命令再現(xiàn)顯示像素的圖像數(shù)據(jù),該圖形引擎包括邊繪制單元,用于讀入與單個(gè)多邊形邊相對(duì)應(yīng)的語(yǔ)言的命令語(yǔ)句,以及基于該命令語(yǔ)句將該命令轉(zhuǎn)換成邊的空間表達(dá)。
2.根據(jù)權(quán)利要求1所述的圖形引擎,其中所述邊繪制單元讀入一有效命令語(yǔ)句,并立即將其轉(zhuǎn)換成空間表達(dá)。
3.根據(jù)權(quán)利要求1或2所述的圖形引擎,其中除了所述多邊形邊與以前或同時(shí)讀取并轉(zhuǎn)換的邊重疊的情況之外,所述空間表達(dá)僅基于所述命令語(yǔ)句。
4.根據(jù)前述任一權(quán)利要求所述的圖形引擎,其中所述邊的空間表達(dá)為子像素的格式。
5.根據(jù)前述任一權(quán)利要求所述的圖形引擎,其中所述空間表達(dá)限定了最終顯示像素的位置。
6.根據(jù)前述任一權(quán)利要求所述的圖形引擎,進(jìn)一步包括邊緩沖器,用于所述空間表達(dá)。
7.根據(jù)權(quán)利要求6所述的圖形引擎,其中所述邊緩沖器為柵格的形式,而且各個(gè)單個(gè)柵格方塊可以在設(shè)置值和未設(shè)置值之間切換。
8.根據(jù)前述任一權(quán)利要求所述的圖形引擎,其中所述邊繪制單元包括控制電路或邏輯,用于在對(duì)原始命令進(jìn)行轉(zhuǎn)換后將其丟棄。
9.根據(jù)權(quán)利要求6或其任一從屬權(quán)利要求所述的圖形引擎,其中所述圖形引擎包括控制電路或邏輯,用于將讀入所述引擎的多邊形的邊依次存儲(chǔ)到所述邊緩沖器中。
10.根據(jù)權(quán)利要求6或其任一從屬權(quán)利要求所述的圖形引擎,其中所述邊緩沖器將各個(gè)多邊形邊存儲(chǔ)為已設(shè)置的邊界子像素,并且這些邊界子像素在所述邊緩沖器中的位置與該邊在最終圖像中的位置相對(duì)應(yīng)。
11.根據(jù)前述任一權(quán)利要求所述的圖形引擎,其中單個(gè)多邊形邊的輸入和轉(zhuǎn)換使得能夠再現(xiàn)多邊形,而不需進(jìn)行三角形化。
12.根據(jù)前述任一權(quán)利要求所述的圖形引擎,其中各個(gè)多邊形邊的輸入和轉(zhuǎn)換使得在獲得多邊形的所有邊數(shù)據(jù)之前能夠開始再現(xiàn)所述多邊形。
13.根據(jù)前述任一權(quán)利要求所述的圖形引擎,其中所述圖形引擎進(jìn)一步包括填充器電路或邏輯,用于填充多邊形,該多邊形的邊已由所述邊繪制單元進(jìn)行了存儲(chǔ)。
14.根據(jù)前述任一權(quán)利要求所述的圖形引擎,其中所述圖形引擎包括后置緩沖器,用于在將所填充的圖像傳送到顯示存儲(chǔ)器的前置緩沖器之前,存儲(chǔ)該圖像的一部分或全部。
15.根據(jù)權(quán)利要求14所述的圖形引擎,其中將所述后置緩沖器中的各個(gè)像素映射到所述前置緩沖器的一像素,并且所述后置緩沖器優(yōu)選地具有與前置緩沖器相同的每像素比特?cái)?shù),以表示各個(gè)顯示像素的顏色,即RGBA值。
16.根據(jù)權(quán)利要求14或15所述的圖形引擎,其中所述圖形引擎包括組合邏輯或電路,用于將來(lái)自所述填充器電路或邏輯的各個(gè)所填充的多邊形組合到所述后置緩沖器中。
17.根據(jù)權(quán)利要求14到16中的任何一項(xiàng)所述的圖形引擎,其中根據(jù)所處理的多邊形中的像素的顏色、被所述多邊形覆蓋的像素的百分比、以及所述后置緩沖器中的對(duì)應(yīng)像素中已有的顏色來(lái)確定存儲(chǔ)在所述后置緩沖器中的各個(gè)像素的顏色。
18.根據(jù)權(quán)利要求6到17中的任何一項(xiàng)所述的圖形引擎,其中所述邊緩沖器包括柵格形式的子像素,所述柵格具有與各個(gè)顯示像素相對(duì)應(yīng)的子像素方塊數(shù)。
19.根據(jù)權(quán)利要求18所述的圖形引擎,其中在所述邊緩沖器中每隔一個(gè)子像素地利用子像素,以使為各個(gè)顯示像素提供的子像素方格數(shù)減半。
20.根據(jù)權(quán)利要求7或其任一從屬權(quán)利要求所述的圖形引擎,其中根據(jù)邊端點(diǎn)計(jì)算各條多邊形邊的斜率,然后沿著所述線設(shè)置所述柵格的子像素。
21.根據(jù)權(quán)利要求7或其任一從屬權(quán)利要求所述的圖形引擎,其中將以下規(guī)則用于設(shè)置子像素對(duì)于各條多邊形邊,所述子像素柵格的每條水平線僅切換一個(gè)子像素;從上到下(沿Y方向)切換子像素;不切換所述線的最后子像素。
22.根據(jù)權(quán)利要求13或其任一從屬權(quán)利要求所述的圖形引擎,其中所述填充器電路包括用作為橫穿子像素柵格的虛擬筆的邏輯,所述筆最初關(guān)閉,并在每次遇到已設(shè)置的子像素時(shí),在關(guān)狀態(tài)和開狀態(tài)之間切換。
23.根據(jù)權(quán)利要求22所述的圖形引擎,其中所述虛擬筆設(shè)置所述邊界子像素內(nèi)部的所有子像素,并包括右側(cè)邊界的邊界像素,而清除左側(cè)邊界的邊界像素,或者相反。
24.根據(jù)權(quán)利要求22或23所述的圖形引擎,其中所述虛擬筆覆蓋子像素的一條線以同時(shí)填充多個(gè)子像素。
25.根據(jù)權(quán)利要求13、14中的任何一個(gè)或其任一從屬權(quán)利要求所述的圖形引擎,其中與顯示像素相對(duì)應(yīng)的填充的子像素在組合到所述后置緩沖器之前被混和為單個(gè)像素。
26.根據(jù)權(quán)利要求25所述的圖形引擎,其中由所填充的多邊形覆蓋的各個(gè)混合像素的子像素?cái)?shù)確定了將混合像素組合到所述后置緩沖器中的混合系數(shù)。
27.根據(jù)權(quán)利要求14或其任一從屬權(quán)利要求所述的圖形引擎,其中在完全再現(xiàn)由所述后置緩沖器為其保存信息的部分顯示器上的圖像后,將所述后置緩沖器復(fù)制到顯示存儲(chǔ)器的所述前置緩沖器。
28.根據(jù)權(quán)利要求14或其任一從屬權(quán)利要求所述的圖形引擎,其中所述后置緩沖器的大小與所述前置緩沖器的大小相同,并保存整個(gè)顯示器的信息。
29.根據(jù)權(quán)利要求14或其任一從屬權(quán)利要求所述的圖形引擎,其中所述后置緩沖器小于所述前置緩沖器,并且只存儲(chǔ)部分顯示器的信息,通過一系列外部通道從所述后置緩沖器構(gòu)建所述前置緩沖器中的圖像。
30.根據(jù)權(quán)利要求29所述的圖形引擎,其中僅將與要保存在所述后置緩沖器中的部份圖像相關(guān)的命令通過各個(gè)外部通道發(fā)送給所述圖形引擎。
31.根據(jù)前述任一權(quán)利要求所述的圖形引擎,其中所述圖形引擎還包括曲線鑲嵌器,用于在讀取并轉(zhuǎn)換所獲得的多邊形邊之前,將任何曲線多邊形邊分成多個(gè)直線段。
32.根據(jù)權(quán)利要求14或其任一從屬權(quán)利要求所述的圖形引擎,其中調(diào)整所述圖形引擎,以使所述后置緩沖器可以保存一個(gè)或更多個(gè)預(yù)定的圖元,將所述圖元傳送到所述前置緩沖器中由高級(jí)語(yǔ)言確定的一個(gè)或更多個(gè)位置。
33.根據(jù)權(quán)利要求6或其任一從屬權(quán)利要求所述的圖形引擎,其中所述圖形引擎可以以標(biāo)線模式工作,在標(biāo)線模式中,通過在一位圖中設(shè)置子像素并在所述邊緩沖器中的多個(gè)位置中存儲(chǔ)該位圖以形成一直線,來(lái)將標(biāo)線存儲(chǔ)在所述邊緩沖器中。
34.根據(jù)前述任一權(quán)利要求所述的圖形引擎,其中所述邊繪制單元可以并行工作,以同時(shí)將多個(gè)命令語(yǔ)句轉(zhuǎn)換為空間表達(dá)。
35.根據(jù)前述任一權(quán)利要求所述的圖形引擎,包括裁剪單元,用于在讀入并轉(zhuǎn)換所獲得的在屏幕觀看區(qū)域內(nèi)的經(jīng)裁剪的多邊形邊之前,對(duì)在所期望的屏幕觀看區(qū)域外部的多邊形邊的任何部份進(jìn)行處理。
36.根據(jù)權(quán)利要求35所述的圖形引擎,其中所述裁剪單元?jiǎng)h除所期望的屏幕觀看區(qū)域外部的除了定義多邊形填充的起始位置所需的邊以外的所有邊,在這種情況下,將所述邊轉(zhuǎn)換為與相關(guān)觀看區(qū)域的邊界一致。
37.根據(jù)前述權(quán)利要求中的任何一項(xiàng)所述的圖形引擎,其中所述邊繪制單元包括阻斷和/或限制單元,用于通過將所述空間表達(dá)分成多個(gè)數(shù)據(jù)塊和/或生成與所再現(xiàn)的多邊形相對(duì)應(yīng)的限制框,并且不讀取該限制框外部的數(shù)據(jù),來(lái)減少存儲(chǔ)空間的使用。
38.根據(jù)前述權(quán)利要求中的任何一項(xiàng)所述的圖形引擎,其中所述圖形引擎以硬件實(shí)現(xiàn),并且優(yōu)選地在規(guī)模上少于100K門,更優(yōu)選地少于50K門。
39.根據(jù)前述權(quán)利要求中任何一項(xiàng)所述的圖形引擎,其中所述圖形引擎由軟件實(shí)現(xiàn),所述軟件將在具有顯示器的電子裝置的處理器模塊中運(yùn)行。
40.一種電子裝置,其包括前述權(quán)利要求中的任何一項(xiàng)所述的圖形引擎、顯示模塊、處理器模塊、和存儲(chǔ)器模塊,其中將高級(jí)圖形命令傳送給所述圖形引擎以再現(xiàn)顯示像素的圖像數(shù)據(jù)。
41.根據(jù)權(quán)利要求40所述的電子裝置,其中所述圖形引擎是嵌入在所述存儲(chǔ)器模塊中的硬件圖形引擎。
42.根據(jù)權(quán)利要求40所述的電子裝置,其中所述圖形引擎是集成在所述顯示模塊中的硬件圖形引擎。
43.根據(jù)權(quán)利要求40所述的電子裝置,其中所述圖形引擎是與總線連接的硬件圖形引擎,優(yōu)選地以一體或共享存儲(chǔ)器體系結(jié)構(gòu)的形式。
44.根據(jù)權(quán)利要求40所述的電子裝置,其中所述圖形引擎保持在所述處理器模塊中,或者在包括處理器模塊的基帶IC或伴隨IC中。
45.一種存儲(chǔ)器集成電路,其包含嵌入式圖形引擎,其中所述圖形引擎使用標(biāo)準(zhǔn)的存儲(chǔ)器IC物理接口,并且使用先前未分配的命令空間進(jìn)行圖形處理。
46.根據(jù)權(quán)利要求45所述的存儲(chǔ)器集成電路,其中所述圖形引擎為根據(jù)前述圖形引擎權(quán)利要求中的任何一項(xiàng)所述的圖形引擎。
47.根據(jù)前述電子裝置權(quán)利要求中的任何一項(xiàng)所述的電子裝置,其中所述裝置是便攜式的。
48.根據(jù)前述電子裝置權(quán)利要求中的任何一項(xiàng)所述的電子裝置,其中所述裝置具有小面積顯示器。
全文摘要
本發(fā)明提供了一種圖形引擎,用于根據(jù)所接收的定義多邊形的高級(jí)圖形命令來(lái)再現(xiàn)顯示像素的圖像數(shù)據(jù),該圖形引擎包括邊繪制單元,用于讀入與單個(gè)多邊形邊相對(duì)應(yīng)的語(yǔ)言的命令語(yǔ)句,并基于該命令語(yǔ)句將該命令轉(zhuǎn)換為空間表達(dá)。還提供了合并有該圖形引擎的電子裝置以及具有嵌入式圖形引擎的存儲(chǔ)器集成電路。
文檔編號(hào)G09G5/00GK1653487SQ03810585
公開日2005年8月10日 申請(qǐng)日期2003年5月9日 優(yōu)先權(quán)日2002年5月10日
發(fā)明者梅托德·科舍利亞, 米卡·圖奧米 申請(qǐng)人:比特波伊斯有限責(zé)任公司, 日本電氣電子株式會(huì)社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1