專(zhuān)利名稱(chēng):減少傳輸圖形數(shù)據(jù)的頻寬需求的系統(tǒng)與方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于圖像數(shù)據(jù)壓縮,更特別是指一種z軸數(shù)據(jù)壓縮與編碼的系統(tǒng)與方法。
背景技術(shù):
如本領(lǐng)域技術(shù)人員所知,藝術(shù)與科學(xué)上的3D計(jì)算機(jī)圖像是由3D物體的2D圖像所產(chǎn)生或繪制,再呈現(xiàn)于顯示裝置(如陰極射線管顯示器或液晶顯示器)上。此物體可能為簡(jiǎn)單的幾何基元(primitive),例如點(diǎn)、線、三角形、或是多邊形。許多復(fù)雜的物體可以由一連串相連的平面多邊形代表而繪制于顯示裝置上,舉例來(lái)說(shuō),此物體可由一連串相連的平面三角形來(lái)代表。所有幾何基元可能最后都以一個(gè)頂點(diǎn)或一組頂點(diǎn)來(lái)表示,舉例而言,坐標(biāo)(x,y,z)可能定義成一個(gè)點(diǎn),或是一條線的端點(diǎn),或是多邊形的一角。
為了產(chǎn)生一組數(shù)據(jù)讓一個(gè)3D基元的2D投影顯示于計(jì)算機(jī)監(jiān)示器或其它顯示裝置,此基元的頂點(diǎn)將在繪圖管線(pipeline)中經(jīng)過(guò)一連串的運(yùn)算或是階段。一個(gè)基本的管線僅是一連串處理單元或階段的迭合,把前一個(gè)階段的輸出當(dāng)成下一個(gè)階段的輸入。舉例來(lái)說(shuō),在一個(gè)圖形處理器中處理階段包括有頂點(diǎn)運(yùn)算、基元組合運(yùn)算、像素運(yùn)算、紋理組合運(yùn)算、描繪運(yùn)算、以及碎形運(yùn)算。
在典型圖形顯示系統(tǒng)中,圖像數(shù)據(jù)庫(kù)(例如指令列)可存有場(chǎng)景的物體描述,這些物體被描述成覆蓋在其表面的數(shù)個(gè)小多邊形。同樣地,數(shù)個(gè)小區(qū)塊(tile)也可以同樣的方式覆蓋在一墻面或其它表面。每個(gè)多邊形被表示成一個(gè)表,包括有頂點(diǎn)坐標(biāo)(模形坐標(biāo)里的X軸坐標(biāo)、Y軸坐標(biāo)、Z軸坐標(biāo)),一些材質(zhì)表面特性的敘述(顏色、紋理、亮度等),還可能有每個(gè)頂點(diǎn)構(gòu)成的表面的正規(guī)向量。對(duì)于具有復(fù)雜曲度表面的3D物體而言,多邊形通常必須為三角形或四邊形,而后者還可被分解成一對(duì)三角形。
轉(zhuǎn)換引擎對(duì)應(yīng)使用者所輸出的視角轉(zhuǎn)換物體的坐標(biāo)。此外,使用者可設(shè)定視野,產(chǎn)生的圖像大小,以及后端的可見(jiàn)度,以視需要包含或移除背景。當(dāng)視野被選擇時(shí),修剪邏輯電路便移除在視野外的多邊形(三角形),并修剪部分在視野外但部分在視野內(nèi)的多邊形。這些被修剪的多邊形將對(duì)應(yīng)到在視野內(nèi)的多邊形,并且其新邊將對(duì)應(yīng)到視野內(nèi)的邊。這些多邊形的頂點(diǎn)接著以對(duì)應(yīng)屏幕視野(X,Y坐標(biāo))和深度(Z坐標(biāo))的坐標(biāo)形式傳送至下一階段。在典型系統(tǒng)中,之后會(huì)有光源模型將光源納入考慮。多邊形的色彩值接著傳送至描繪器,描繪器系產(chǎn)生數(shù)個(gè)區(qū)塊的空白像素作為之后的可視性(visibility)決定,或隱藏表面的移除及剩余像素的紋理計(jì)算/著色。
圖1表示現(xiàn)今的隱藏表面移除(hidden surface removal)單元的實(shí)施方式,一般稱(chēng)為z軸數(shù)據(jù)處理單元。如本領(lǐng)域技術(shù)人員所知,系統(tǒng)效能是經(jīng)由使用兩階段隱藏表面移除管線的實(shí)現(xiàn)而改善。在第一階段,ZL1單元處理一區(qū)塊內(nèi)多個(gè)像素的z軸數(shù)據(jù)。當(dāng)一區(qū)塊內(nèi)像素的z軸數(shù)據(jù)超過(guò)ZL1的格式范圍時(shí),此z軸數(shù)據(jù)便必須以在像素z軸數(shù)據(jù)處理單元(有時(shí)稱(chēng)為ZL2)中作像素層級(jí)處理。
ZL1和ZL2的名稱(chēng)一般分別代表第一階Z暫存器和第二階Z暫存器。它們的名稱(chēng)會(huì)依算法的類(lèi)型而有所不同,例如超Z暫存器或階層式Z暫存器。此兩階Z單元實(shí)現(xiàn)允許較大像素圖塊的較高階深度數(shù)據(jù)儲(chǔ)存(如一個(gè)區(qū)塊),以及最小顆粒的深度數(shù)據(jù)儲(chǔ)存(如屏幕上的單一像素)。ZL1的優(yōu)點(diǎn)為減少繪圖管線中深度數(shù)據(jù)的計(jì)算復(fù)雜度。
區(qū)塊產(chǎn)生器100產(chǎn)生像素圖塊(如一個(gè)8乘8的方格)的區(qū)塊數(shù)據(jù)(亦即像素屏蔽),并傳送請(qǐng)求至ZL1快取104。區(qū)塊數(shù)據(jù)接著傳送至ZL1 102,ZL1 102耦接ZL1快取104,并在區(qū)塊層級(jí)定義可視度。若像素的z軸數(shù)據(jù)無(wú)法在ZL1102被處理的話,這些z軸數(shù)據(jù)將在像素層級(jí)的z軸數(shù)據(jù)處理單元ZL2 106被處理,ZL2 106耦接至ZL2快取108。在此設(shè)定下,ZL1 102可在一周期(cycle)中拒絕高達(dá)64個(gè)像素的處理,而未被拒絕的像素被標(biāo)示成已接受或再測(cè)試以減少ZL2 106的存儲(chǔ)器使用量。
隨著繪圖芯片的效能持續(xù)增加,當(dāng)執(zhí)行上述運(yùn)算時(shí),存儲(chǔ)器的頻寬需求變成整體效能的主要因素。根據(jù)摩爾定律(Moore’s Law),存儲(chǔ)器頻寬的增加通常落后于芯片運(yùn)算能力的增加。于是,在許多例子中,系統(tǒng)中繪圖引擎的整體效能最終受限于圖像存儲(chǔ)器頻寬的可用量。當(dāng)內(nèi)部快取和數(shù)據(jù)壓縮方案用于解決存儲(chǔ)器頻寬受限的問(wèn)題時(shí),快取方式的效率高度相關(guān)于存儲(chǔ)器存取一致性。但是,其主要的問(wèn)題在于,一個(gè)像素量相當(dāng)大的大型三角型基元不利于繪圖芯片內(nèi)的快取,故提供快取的方式幾乎變得無(wú)效。因此,一種前所未有的需求存在于業(yè)界中以解決上述的不足與缺陷。
發(fā)明內(nèi)容
減少傳輸圖像數(shù)據(jù)所需外部頻寬的一系統(tǒng)實(shí)施例,包括預(yù)測(cè)誤差計(jì)算器用以產(chǎn)生像素圖塊的z坐標(biāo)數(shù)據(jù)的預(yù)測(cè)誤差矩陣,位長(zhǎng)度計(jì)算器用以計(jì)算儲(chǔ)存此預(yù)測(cè)誤差矩陣所需的總位數(shù),數(shù)據(jù)編碼器用以像此預(yù)測(cè)誤差矩陣編碼成壓縮區(qū)塊,以及封包器用以在單一運(yùn)算中移動(dòng)此壓縮區(qū)塊至外部存儲(chǔ)器位置。
尚有另一實(shí)施例包含減少圖像數(shù)據(jù)傳輸頻寬需求的系統(tǒng),包括解封包模塊用以從外部存儲(chǔ)器位置移動(dòng)壓縮區(qū)塊并從此壓縮區(qū)塊解開(kāi)預(yù)測(cè)誤差矩陣,以及加法樹(shù)用以導(dǎo)出像素圖塊。在一些實(shí)施例中,解封包模塊還包括跳脫序列解封包器用以解壓縮此預(yù)測(cè)誤差矩陣?yán)锏拿總€(gè)跳脫序列,解封包器用于從此壓縮區(qū)塊還原出此預(yù)測(cè)誤差矩陣,以及加法樹(shù)還原出此像素圖塊。
尚有減少圖像數(shù)據(jù)傳輸頻寬需求的一方法實(shí)施例,包括通過(guò)儲(chǔ)存每個(gè)像素圖塊的預(yù)測(cè)誤差而壓縮包含數(shù)個(gè)像素圖塊的圖像數(shù)據(jù),計(jì)算像素圖塊的位長(zhǎng)度,對(duì)壓縮的z軸數(shù)據(jù)編碼成壓縮區(qū)塊,在單一運(yùn)算中移動(dòng)每個(gè)壓縮區(qū)塊至輸出總線,其中每個(gè)字組包含數(shù)個(gè)位,以及傳送這些數(shù)據(jù)從輸出總線至高速緩存供作往后還原之用。
本發(fā)明還提供一種減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,包括從高速緩存?zhèn)魉蛪嚎s數(shù)據(jù)至解封包單元;在上述解封包單元對(duì)上述壓縮數(shù)據(jù)進(jìn)行解壓縮以取得像素圖塊內(nèi)每個(gè)像素的預(yù)測(cè)誤差;傳送上述預(yù)測(cè)誤差至加法樹(shù);以及在上述加法樹(shù)里從上述預(yù)測(cè)誤差導(dǎo)出圖形數(shù)據(jù)。
其它本發(fā)明的系統(tǒng)、方法、技術(shù)特征,和/或優(yōu)點(diǎn),本領(lǐng)域技術(shù)人員可由下列敘述及所附圖示得知。所有在本發(fā)明揭露范圍內(nèi)的其它的系統(tǒng)、方法、技術(shù)特征,和/或優(yōu)點(diǎn),將受到伴隨的申請(qǐng)專(zhuān)利范圍所保護(hù)。
本發(fā)明所揭露的許多面向可由所附圖示作最好詮釋。圖標(biāo)所繪的元件并不按照比例,其用意在于清楚解釋本發(fā)明的原則。此外,在這些圖示中,相同的標(biāo)號(hào)表示相對(duì)應(yīng)的部分。雖然數(shù)個(gè)實(shí)施例相關(guān)于這些圖示,但這不意味著限制本發(fā)明于這些實(shí)施例中,相反地,這意味著有許多可能的替代方案、修改、或相等物。
圖1表示已知的z暫存器實(shí)施方式。
圖2表示z軸數(shù)據(jù)壓縮實(shí)施例的基本元件圖。
圖3A表示利用計(jì)算預(yù)測(cè)誤差來(lái)壓縮一區(qū)塊內(nèi)的z軸數(shù)據(jù)的一個(gè)實(shí)施例。
圖3B表示區(qū)塊內(nèi)不同像素的預(yù)算誤差。
圖4A表示計(jì)算儲(chǔ)存壓縮區(qū)塊所需位數(shù)的上層流程圖實(shí)施例。
圖4B表示代表8×8像素圖塊的壓縮區(qū)塊的的字段示意圖。
圖5為編碼程序中配置預(yù)測(cè)誤差與對(duì)應(yīng)的跳脫序列的上層流程圖實(shí)施例。
圖6A和6B為封包器和解封包器的代表實(shí)施例。
圖7為還原原始z軸數(shù)據(jù)在數(shù)個(gè)實(shí)施例中的上層流程圖。
圖8A說(shuō)明圖像處理系統(tǒng)810的實(shí)施例的元件方塊圖。
圖8B表示有內(nèi)嵌或電性耦接圖形運(yùn)算單元812的圖像處理系統(tǒng)810的實(shí)施例方?jīng)Q圖。
100~區(qū)塊產(chǎn)生器 102~ZL1104~ZL1快取 106~ZL2108~ZL2快取 202~z解編碼器204~預(yù)測(cè)誤差計(jì)算器 206~位長(zhǎng)度計(jì)算器208~數(shù)據(jù)編碼器 210~暫存器212~封包器 214~第二階高速緩存216~跳脫序列解封包器 218~解封包器220~加法樹(shù) 810~圖像處理系統(tǒng)812~圖形運(yùn)算單元 814~Z解編碼器816~預(yù)測(cè)誤差計(jì)算器 818~位長(zhǎng)度計(jì)算器820~數(shù)據(jù)編碼器 822~封包器824~第二階高速緩存 826~解封包階段828~加法樹(shù) 830~運(yùn)算裝置832~輸入/輸出接口834~存儲(chǔ)器836~顯示裝置 838~數(shù)據(jù)總線840~繪圖卡接口
具體實(shí)施例方式
本發(fā)明的多種實(shí)施方式將在以下用文字?jǐn)⑹霾殡S相關(guān)圖標(biāo)。當(dāng)所附圖標(biāo)用說(shuō)明文字解釋時(shí),并不意圖限制本發(fā)明于這些實(shí)施例中。相反地,其意圖涵蓋所附申請(qǐng)專(zhuān)利范圍的精神與范疇的許多替代方案、修改、以及相等物。
降低存儲(chǔ)器頻寬需求是現(xiàn)今繪圖處理單元(GPU)架構(gòu)最重要的。實(shí)現(xiàn)降低存儲(chǔ)器頻寬需求與通過(guò)壓縮像素而改善快取效能的系統(tǒng)與方法的實(shí)施例于此敘述。實(shí)施例為大量減少圖像處理系統(tǒng)在決定可視性時(shí)的存儲(chǔ)器需求的z軸數(shù)據(jù)壓縮方案。此種壓縮方式的許多實(shí)施例利用基元內(nèi)的z軸數(shù)據(jù)高度相關(guān)特性,并提供一個(gè)隨機(jī)存取外部存儲(chǔ)器數(shù)據(jù)的區(qū)塊式數(shù)據(jù)處理方案。最后,這些實(shí)施例從另一角度看,可完美地在繪圖芯片中實(shí)現(xiàn)此壓縮方案而不需變更現(xiàn)存的芯片架構(gòu)。
當(dāng)有邊角在壓縮區(qū)塊里時(shí)(亦即此壓縮區(qū)塊包含某三角形基元的其中一角),壓縮會(huì)變得較無(wú)效率。然而,Z暫存解編碼器(或稱(chēng)Z codec)的實(shí)施例則有效率地補(bǔ)償這些不足。在一個(gè)區(qū)塊里z值的線性改變是已知的,而此特質(zhì)可用作高效率的增量z壓縮方案。也就是說(shuō),許多實(shí)施例是指儲(chǔ)存z值改變量的壓縮方案。此最終結(jié)果可大量減少未壓縮的z軸數(shù)據(jù)的存儲(chǔ)器儲(chǔ)存需求。
圖形數(shù)據(jù)通常指的是在圖像處理系統(tǒng)中繪圖管線z軸數(shù)據(jù)。此外,具有三個(gè)變量的梯度函數(shù)是每個(gè)像素對(duì)于水平方向與垂直方向的z值改變的3D向量。對(duì)于每個(gè)像素,梯度向量指出預(yù)測(cè)誤差最可能出現(xiàn)的方向,并且此梯度向量對(duì)應(yīng)至該方向的改變率。三角形基元內(nèi)的z軸數(shù)據(jù)就某種程度上是多余的,因此對(duì)某一三角形基元而言,大部分的z軸數(shù)據(jù)是多余的。這表示幾千個(gè)像素里,只用兩個(gè)梯度便可有效表示所有像素。因此,z軸數(shù)據(jù)的一個(gè)特性便是在一大三角形基元里其具有固定的梯度。也就是說(shuō),在某一三角形基元里所有像素的z軸數(shù)據(jù)通常座落于相同平面。這可允許同一區(qū)塊內(nèi)的像素用線性外差的方式取得其z軸數(shù)據(jù)。一般而言,這對(duì)以熵(entropy)為基礎(chǔ)的壓縮器產(chǎn)生非常好的熵減少。
圖2表示z軸數(shù)據(jù)壓縮實(shí)施例的基本元件圖。圖2的z解編碼器202執(zhí)行z壓縮數(shù)據(jù)的許多功能。如圖所示,z解編碼器202可能包含預(yù)測(cè)誤差計(jì)算器204、位長(zhǎng)度計(jì)算器206、數(shù)據(jù)編碼器208、儲(chǔ)存所有z壓縮數(shù)據(jù)長(zhǎng)度的暫存器210、以及封包器212。這些為z壓縮數(shù)據(jù)的基本元件。只要z軸數(shù)據(jù)處于壓縮狀態(tài),第二階高速緩存214就會(huì)儲(chǔ)存z軸數(shù)據(jù)作為以后使用。當(dāng)壓縮的z軸數(shù)據(jù)被存取時(shí),壓縮的z軸數(shù)據(jù)從第二階高速緩存214提取出來(lái)并送至跳脫序列解封包器216,再傳送至數(shù)據(jù)解封包器218。數(shù)據(jù)接著再送至加法樹(shù)220還原成原始未壓縮的z軸數(shù)據(jù)。
在壓縮路徑中,預(yù)測(cè)誤差計(jì)算器204計(jì)算一區(qū)塊(8×8的像素圖塊)內(nèi)每個(gè)像素的預(yù)測(cè)誤差。先判定一個(gè)參考像素后接著導(dǎo)出兩參考梯度。再計(jì)算該區(qū)塊內(nèi)剩余像素的預(yù)測(cè)誤差并儲(chǔ)存至預(yù)測(cè)誤差矩陣。此預(yù)測(cè)誤差矩陣之后代表該區(qū)塊內(nèi)所有z軸數(shù)據(jù)。
位長(zhǎng)度計(jì)算器206計(jì)算儲(chǔ)存此預(yù)測(cè)誤差矩陣(亦即z軸數(shù)據(jù)的壓縮區(qū)塊)所需的位數(shù)?;诖藚^(qū)塊內(nèi)最大的預(yù)測(cè)誤差,決定全長(zhǎng)值與半長(zhǎng)值。當(dāng)預(yù)測(cè)誤差不為零且超過(guò)一定量時(shí),此二值對(duì)應(yīng)預(yù)測(cè)誤差矩陣所需的位數(shù)。
數(shù)據(jù)編碼器208對(duì)此區(qū)塊每個(gè)像素的預(yù)測(cè)誤差作編碼,以在處理大型三角形基元時(shí)得到效率增加并同時(shí)降低硬件復(fù)雜度。為了取得平衡,必須選擇一總量(或是位長(zhǎng)度單元)用來(lái)為z壓縮數(shù)據(jù)編碼。在數(shù)據(jù)編碼器208內(nèi),若一區(qū)塊內(nèi)一像素的預(yù)測(cè)誤差不為零且大于1時(shí),則必須決定儲(chǔ)存此預(yù)測(cè)誤差所需的位數(shù),且同時(shí)對(duì)齊所選的位長(zhǎng)度單位。代表編碼數(shù)據(jù)的壓縮數(shù)據(jù)字組的長(zhǎng)度將儲(chǔ)存至?xí)捍嫫?10作為此z壓縮數(shù)據(jù)的檔案復(fù)原之用。
接著,編碼數(shù)據(jù)傳送至封包器212以移動(dòng)此包含z軸數(shù)據(jù)編碼的壓縮區(qū)塊至存儲(chǔ)器中。視每個(gè)像素圖塊的最大預(yù)測(cè)誤差而定,壓縮區(qū)塊可能會(huì)大小不一。封包器212移動(dòng)整個(gè)壓縮區(qū)塊至存儲(chǔ)器中。在一些實(shí)施例中,封包器是指柱形移位器(barrel shifter)。然而,此封包器的多工器皆為獨(dú)立控制。在封包器212中,完整的z壓縮數(shù)據(jù)輸出至第二階高速緩存214作為稍后數(shù)據(jù)復(fù)原之用。如圖2所示,該壓縮數(shù)據(jù)段也寫(xiě)入第二階高速緩存214中。
要存取壓縮數(shù)據(jù)時(shí),從第二階高速緩存214取得z壓縮數(shù)據(jù)并送至跳脫序列解封包器216。跳脫序列解封包器216解壓縮關(guān)于一區(qū)塊內(nèi)每個(gè)像素的跳脫序列。跳脫序列接著用在解封包器218以決定數(shù)據(jù)內(nèi)每段數(shù)據(jù)的位數(shù)。此階段的數(shù)據(jù)包含預(yù)測(cè)誤差。
最后,未壓縮的預(yù)測(cè)誤差矩陣送至加法樹(shù)220以導(dǎo)出儲(chǔ)存于預(yù)測(cè)誤差矩陣內(nèi)的原始z軸數(shù)據(jù)。從預(yù)測(cè)誤差矩陣還原出z軸數(shù)據(jù)的細(xì)節(jié)說(shuō)明如下。
圖3A表示利用計(jì)算預(yù)測(cè)誤差來(lái)壓縮一區(qū)塊內(nèi)的z軸數(shù)據(jù)的一個(gè)實(shí)施例。
以一個(gè)壓縮區(qū)塊儲(chǔ)存z軸數(shù)據(jù)的角度來(lái)看,壓縮器實(shí)際儲(chǔ)存的值為預(yù)測(cè)誤差。一般來(lái)說(shuō),預(yù)測(cè)誤差是指實(shí)際值和預(yù)測(cè)值之間的差異。為了說(shuō)明本實(shí)施例的壓縮算法,在此用8×8像素的區(qū)塊作說(shuō)明,這也可稱(chēng)為壓縮區(qū)塊大小,而壓縮區(qū)塊大小不一定要限制在8×8像素。步驟310首先找出可以計(jì)算兩參考梯度的參考像素。在不同的實(shí)施例中z軸數(shù)據(jù)可能擁有不同儲(chǔ)存單位,包含但不限制于24位的z軸數(shù)據(jù)或是32位的z軸數(shù)據(jù)。
舉例而言,一個(gè)8×8像素圖塊具有下述z值Z=z00z01z02z03z04z05z06z07z10z11z12z13z14z15z16z17z20z21z22z23z24z25z26z27z30z31z32z33z34z35z36z37z40z41z42z43z44z45z46z47z50z51z52z53z54z55z56z57z60z61z62z63z64z65z66z67z70z71z72z73z74z75z76z77]]>在步驟320和330中,參考梯度dz/dx和dz/dy被計(jì)算出來(lái)。參考梯度的公式如下dzdx=zij-zi-1,j]]>,以及 [1.0]dzdy=zij-zi,j-1---[2.0]]]>從此區(qū)塊中,每個(gè)像素的預(yù)測(cè)誤差可由下列一組公式推得(步驟340)σij=zij'i=j=0zij-zi-1,j'i=1,j=0zij-zi,j-1'i=0,j=1(zij-zi-1,j)-(zi-1,j-zi-2,j),i>1,j=0(zij-zi,j-1)-(zi,j-1-zi,j-2),i=0,j>1(zij-zi,j-1)-(zi-1,j-zi-1,j-1),i>0,j>0---[3.0]]]>圖3B表示區(qū)塊內(nèi)不同像素的預(yù)算誤差。以此例來(lái)說(shuō),若此區(qū)塊完全落于一三角形基元里(亦即落于相同平面),則預(yù)測(cè)誤差矩陣可能如下列所示(步驟350)
z00dx010-100dy000-100000100100000000000100001000100-100-1000100000010001]]>此預(yù)測(cè)誤差矩陣的左上角的z值,Z00,為參考像素,而dx和dy為z梯度沿x-y軸的舍入值。最后,此預(yù)測(cè)誤差矩陣?yán)锱紶柍霈F(xiàn)的+1和-1表示舍入誤差。值得注意的是此預(yù)測(cè)誤差矩陣大多數(shù)的值皆為0,因?yàn)榇讼袼貓D塊完全位于一基元內(nèi)。
此壓縮算法在一些實(shí)施例的目的在于減少傳輸數(shù)據(jù)所需的外部存儲(chǔ)器頻寬,但不是減少外部的儲(chǔ)存量。所有壓縮區(qū)塊在存儲(chǔ)器固定地址與固定配置空間,其大小取決于未壓縮數(shù)據(jù)的大小。此外,此壓縮算法受限于因?yàn)榇鎯?chǔ)器存取量化而產(chǎn)生的顯著粒度(granularity)損失。
在某些實(shí)施例中推導(dǎo)數(shù)據(jù)編碼方案時(shí),有數(shù)個(gè)因素需納入考慮。一個(gè)考慮是想在數(shù)個(gè)完全包含數(shù)個(gè)8×8像素圖塊的大基元(例如三角形基元)達(dá)到最大壓縮效能。另一個(gè)考慮則是減少硬件復(fù)雜度。當(dāng)有許多8×8像素圖塊完全包含在一三角形基元內(nèi)時(shí),預(yù)測(cè)誤差矩陣的計(jì)算將非常相似于上述的預(yù)測(cè)誤差矩陣?yán)?。因此,因?yàn)橄袼貓D塊內(nèi)的像素都位于同一平面上,其預(yù)測(cè)誤差大部分皆為零。
于是,在一些實(shí)施例中,編碼方案可利用此架構(gòu)中z軸數(shù)據(jù)的階級(jí)性。舉例而言,由檢查壓縮區(qū)塊(例如一個(gè)8×8區(qū)塊)內(nèi)的z軸數(shù)據(jù),可決定最大預(yù)測(cè)誤差的范圍。于是,儲(chǔ)存像素所需的位元素可輕易由檢查8×8區(qū)塊的z軸數(shù)據(jù)所決定。
另一些實(shí)施例考慮的是數(shù)據(jù)編碼方案的硬件實(shí)現(xiàn)具有最小復(fù)雜度,可導(dǎo)致降低成本。為了達(dá)到這件事,第一要考慮的是必須配置表示誤差的位數(shù)(例如預(yù)測(cè)誤差的絕對(duì)值大于1),而這將取決于事先決定的量化級(jí)數(shù),以在壓縮率最大化時(shí)減少硬件復(fù)雜度與成本。
圖4A表示計(jì)算儲(chǔ)存壓縮區(qū)塊所需位數(shù)的上層流程圖實(shí)施例。在這個(gè)例子里,位長(zhǎng)度單位,或稱(chēng)量化級(jí)別,選擇為4位(步驟410)。在一些實(shí)施例中,此值提供硬件復(fù)雜度與壓縮最大化的最佳平衡點(diǎn)。位長(zhǎng)度單位(量化級(jí)別)是壓縮數(shù)據(jù)區(qū)塊可對(duì)齊的最小單位或區(qū)段。舉例來(lái)說(shuō),假設(shè)位長(zhǎng)度單位為4位,若給定一段數(shù)據(jù)為10位長(zhǎng),則兩個(gè)額外位將加入此數(shù)據(jù)區(qū)塊,因?yàn)殡x10位最近的4倍數(shù)為12位。
每個(gè)儲(chǔ)存像素圖塊的預(yù)測(cè)誤差的壓縮區(qū)塊包括固定長(zhǎng)度字段與可變長(zhǎng)度字段。也就是說(shuō),每個(gè)壓縮區(qū)塊永遠(yuǎn)包含一個(gè)相同長(zhǎng)度的字段。為了配置及指示像素的預(yù)測(cè)誤差所需的位數(shù),下列步驟將說(shuō)明如何決定。首先,先決定表示z軸數(shù)據(jù)所需的位數(shù)(步驟420)。接著,決定「全長(zhǎng)值」與「半長(zhǎng)值」(步驟430)。全長(zhǎng)值與半長(zhǎng)值意指大于1的位數(shù),可用作儲(chǔ)存預(yù)測(cè)誤差之用。此處的z軸數(shù)據(jù)表示給定8×8區(qū)塊中最大預(yù)測(cè)誤差。舉例來(lái)說(shuō),此處的z軸數(shù)據(jù)為14位長(zhǎng)。因?yàn)槲涣炕娖綖?位,因?yàn)閷?shí)際的最小長(zhǎng)度為12位。于是,可能的長(zhǎng)度為12、16、20、以及24位。這些長(zhǎng)度可能對(duì)應(yīng)到全長(zhǎng)值。在一些例子中,預(yù)測(cè)誤差可能只需少數(shù)位而獲得較佳壓縮率,在這些例子中可使用「半長(zhǎng)值編碼」。全長(zhǎng)值12、16、20、24以及24位可分別產(chǎn)生半長(zhǎng)值8、8、12、以及12位,因?yàn)槲婚L(zhǎng)度單位在此例中選擇成4位。在下一步驟440中,可決定壓縮區(qū)塊的可變字段。每個(gè)壓縮區(qū)有可變字段因?yàn)閰^(qū)塊內(nèi)的預(yù)測(cè)誤差大小可能大于1。因此,用來(lái)替預(yù)測(cè)誤差編碼的全長(zhǎng)值和半長(zhǎng)值可能每個(gè)壓縮區(qū)塊彼此不同。最后,在步驟450中,決定儲(chǔ)存壓縮區(qū)塊的固定字段以及加入此壓縮區(qū)塊的可變字段部分。壓縮區(qū)塊的固定字段包括有六十四個(gè)1位屏蔽,以及對(duì)應(yīng)像素z00、z01以及z10的三個(gè)24位。
圖4B表示代表8×8像素圖塊的壓縮區(qū)塊的字段示意圖。第一欄460包括64個(gè)1位屏蔽,對(duì)應(yīng)像素圖塊內(nèi)的每個(gè)像素,其中「0」值表示預(yù)差誤差為零,「1」值表示需要兩位的跳脫序列。第二欄470包括對(duì)應(yīng)像素z00、z01、以及z10的三個(gè)24位。字段460和470構(gòu)成壓縮區(qū)塊的固定字段。第三欄480包括剩余像素(亦即z00、z01、以及z10以外的像素)的跳脫序列。此字段是可變字段,因?yàn)橄袼乜赡苡幸部赡軟](méi)有對(duì)應(yīng)的跳脫序列,而這會(huì)發(fā)生在像素的預(yù)測(cè)誤差為零的時(shí)候,因此不需要跳脫序列。最后一欄490包括長(zhǎng)預(yù)測(cè)誤差(亦即預(yù)測(cè)誤差的大小大于1)。全長(zhǎng)值編碼或半長(zhǎng)值編碼的需求視預(yù)測(cè)誤差的大小而決定。只要編碼后的壓縮區(qū)塊長(zhǎng)度決定了,此長(zhǎng)度將儲(chǔ)存在獨(dú)立的暫存器里,且需要3位去說(shuō)明每個(gè)8×8區(qū)塊的數(shù)據(jù)長(zhǎng)度。當(dāng)還原壓縮的z軸數(shù)據(jù)時(shí),需在讀取壓縮數(shù)據(jù)前先讀取長(zhǎng)度字段以事先知道有多少數(shù)據(jù)要讀取??梢灾赖氖侨糸L(zhǎng)度字段對(duì)應(yīng)未壓縮的z軸數(shù)據(jù)時(shí)(例如24位的z軸數(shù)據(jù)用六個(gè)位長(zhǎng)度單位表示),這表示數(shù)據(jù)未被壓縮。運(yùn)用此項(xiàng)特征可避免壓縮數(shù)據(jù)大于未壓縮狀態(tài)的可能性。
圖5為編碼程序中配置預(yù)測(cè)誤差與對(duì)應(yīng)的跳脫序列的上層流程圖實(shí)施例。此階段的位配置包括第4圖步驟440的可變字段敘述。在步驟510中,在一8×8壓縮區(qū)塊內(nèi)的每個(gè)像素的預(yù)測(cè)誤差(除了左上角的三個(gè)像素之外)先與(-1,0,1}比較。在步驟520中,預(yù)測(cè)誤差「0」表示沒(méi)有誤差,于是沒(méi)有額外的位配置給此特別預(yù)測(cè)誤差。若預(yù)測(cè)誤差的絕對(duì)值等于1時(shí),則只需要兩個(gè)額外位表示此預(yù)測(cè)誤差。然而在步驟540中,若預(yù)測(cè)誤差不是1、0、或-1的話,則表示預(yù)測(cè)誤差的大小大于1。因此,此像素的預(yù)測(cè)誤差要全長(zhǎng)值編碼或半長(zhǎng)值編碼。這些步驟在步驟560重復(fù)直到所有預(yù)測(cè)誤差處理完畢。儲(chǔ)存預(yù)測(cè)誤差的所需總位數(shù)將包括儲(chǔ)存區(qū)塊的可變字段。
步驟580的兩位配置指出預(yù)測(cè)誤差大小是否為1,以及是否需要全長(zhǎng)值或半長(zhǎng)值來(lái)編碼??赡馨l(fā)生的情況總結(jié)在第1表中。
第1表像素z00、z01、以及z10的預(yù)測(cè)誤差絕對(duì)值一定永遠(yuǎn)大于1,z00為一像素圖塊左上角的參考像素。因此,這三個(gè)像素使用1位屏蔽字段指出使用半長(zhǎng)值或是全長(zhǎng)值,且此三像素不需跳脫序列。因?yàn)樽钚“腴L(zhǎng)值為8位,因此有24位(3像素×8位)可表示這些像素,將字段的總長(zhǎng)度縮小。此24位以及64位屏蔽構(gòu)成壓縮數(shù)據(jù)的固定字段,是儲(chǔ)存所有區(qū)塊所需要的。跳脫序列與全、半長(zhǎng)預(yù)測(cè)誤差構(gòu)成可變字段。若整個(gè)跳脫序列的位數(shù)不是4的倍數(shù)時(shí),額外的位將加在字組的后面以對(duì)齊位長(zhǎng)度單位(量化電平)。
圖6A和6B為封包器和解封包器的代表實(shí)施例。圖6A為有8個(gè)輸入端的封包器單元的例子。封包器將一連串的獨(dú)立字組(例如獨(dú)立輸入的預(yù)測(cè)誤差矩陣)封裝起來(lái)以避免浪費(fèi)多余填塞位(padding bits)讓獨(dú)立字組對(duì)齊字節(jié)邊緣。封包器可為柱形移位器(barrel shifter)。一般來(lái)說(shuō),柱形移位器為用作數(shù)據(jù)移位的裝置/電路。柱形移位器也可以用軟件仿真實(shí)現(xiàn)。柱形移位器在單一運(yùn)算中將數(shù)據(jù)字組移位任意數(shù)個(gè)位,這可避免一次只對(duì)一欄移動(dòng)一個(gè)數(shù)據(jù)位,因而減少整個(gè)字組的移位所需時(shí)間。一般來(lái)說(shuō),柱形移位器可由一連串的多工器實(shí)現(xiàn)。一個(gè)多工器的輸出視移位值而連接至下一多工器的輸入。
標(biāo)準(zhǔn)柱形移位器和此處所述的封包器的不同點(diǎn)在于封包器的每個(gè)多工器是獨(dú)立控制的。舉例來(lái)說(shuō),假設(shè)封包器運(yùn)算在4位的數(shù)據(jù)數(shù)組,若封包器的輸入和輸出為2048位,則一個(gè)有512個(gè)輸入端的柱形移位器將需要九個(gè)階段來(lái)作移位。每個(gè)輸入端有對(duì)應(yīng)的移位值指派給它,而每個(gè)輸入端的移位值不小于前一輸入端的移位值。
每個(gè)輸入端的多工器受控于下一輸入端的移位值的最低有效位(LSB)。每個(gè)多工器不只移位數(shù)據(jù)也同時(shí)對(duì)移位值移位,因此在每個(gè)階段丟棄最低有效位而讓下一位變成最低有效位。因此,在原始移位值上的一位對(duì)應(yīng)到一2次方的移位,此2次方的移位執(zhí)行在柱形移位器的對(duì)應(yīng)階段上的數(shù)據(jù)移位。
解封包器被用在還原z軸數(shù)據(jù)的原始狀態(tài)(亦即解壓縮z軸數(shù)據(jù))。圖6B表示解封包器利用與封包器相同長(zhǎng)度的數(shù)據(jù)信息。解封包器計(jì)算每個(gè)輸入端的移位值再傳遞此值至多工器。每行輸入-輸出的多工器使用相同的移位值,因此不需要對(duì)移位值執(zhí)行多工。因此,更精簡(jiǎn)的移位器設(shè)定可用在此解封包器。最低有效位被用在最后階段的多工器,下一位被用在先前階段的多工器等等。更多關(guān)于封包器與解封包器的功能信息可在美國(guó)專(zhuān)利公開(kāi)第20050093873和20050093872號(hào)找到,本文于此引用上述兩者所揭露的信息。
圖7為還原原始z軸數(shù)據(jù)在數(shù)個(gè)實(shí)施例中的上層流程圖。在步驟710中,z軸數(shù)據(jù)的壓縮區(qū)塊從第二階高速緩存214中取出。接著,從暫存器210讀取此壓縮區(qū)塊的數(shù)據(jù)大小(步驟720)。步驟730中,壓縮數(shù)據(jù)傳送至跳脫序列解封包器216,在跳脫序列解封包器216亦讀取每個(gè)預(yù)測(cè)誤差的1位屏蔽。所有64個(gè)預(yù)測(cè)誤差(對(duì)應(yīng)一個(gè)8×8像素圖塊)的1位屏蔽被讀取。1位屏蔽作為跳脫序列解封包器216的輸出控制?;?位屏蔽的值可以解出對(duì)應(yīng)的跳脫序列。舉例來(lái)說(shuō),若讀到一個(gè)預(yù)測(cè)誤差的1位屏蔽為「0」時(shí),表示此預(yù)測(cè)誤差為零且沒(méi)有配置多余的位儲(chǔ)存此預(yù)測(cè)誤差。然而,若讀到一個(gè)預(yù)測(cè)誤差的1位屏蔽為「1」時(shí),則表示此預(yù)測(cè)誤差存在對(duì)應(yīng)的2位跳脫序列。跳脫序列接著被解開(kāi)并用在下一階段中(解封包器218)。
解開(kāi)的跳脫序列在此階段中用來(lái)控制解封包器218。在步驟740中,解封包器218根據(jù)跳脫序列從壓縮區(qū)塊解開(kāi)并重建預(yù)測(cè)誤差矩陣,依據(jù)1位屏蔽和2位跳脫序列,讀取全長(zhǎng)值或半長(zhǎng)值。另一方面,若某預(yù)測(cè)誤差的1位屏蔽值為「0」的話,則不會(huì)有多余位被解出來(lái)。
根據(jù)跳脫序列的值,跳脫序列解封包器會(huì)讀取更多位或是繼續(xù)讀取下一個(gè)1位屏蔽。舉例來(lái)說(shuō),若跳脫序列的值為「10」時(shí),對(duì)應(yīng)半長(zhǎng)值的位數(shù)將被讀取以重建此預(yù)測(cè)誤差。另一方面,若跳脫序列的值為「00」時(shí),沒(méi)有多余位會(huì)被讀取因?yàn)榇颂囟ㄖ抵赋龃讼袼氐念A(yù)測(cè)誤差為+1。此程序?qū)⒅貜?fù)執(zhí)行直到64個(gè)預(yù)測(cè)誤差值(對(duì)應(yīng)此個(gè)8×8像素圖塊)被讀取。
最后,重建回來(lái)的預(yù)測(cè)誤差矩陣傳送至最后階段,原始的z軸數(shù)據(jù)將在加法樹(shù)里用預(yù)測(cè)誤差矩陣重建回來(lái)(步驟750)。為了使預(yù)測(cè)誤差矩陣還原回原始的z軸數(shù)據(jù),此矩陣的所有值將從矩陣的左上角以重復(fù)的方式計(jì)算。在此實(shí)施例中,z軸數(shù)據(jù)值Zij使用下列方程式從預(yù)測(cè)誤差矩陣重建回來(lái)。
zij=ZLImax-σij'i=j=0σij+zi-1,j'i=1,j=0σij+zi-1,j'i=0,j=1(σij+zi-1,j)+(zi-1,j-zi-2,j),i>1,j=0(σij+zi,j-1)+(zi,j-1-zi,j-2),i=0,j>1(σij+zi,j-1)+(zi-1,j-zi-1,j-1),i>0,j>0---[4.0]]]>σij表示位于預(yù)測(cè)誤差矩陣第i行第j列的預(yù)測(cè)誤差,而ZL1max表示整個(gè)矩陣的預(yù)測(cè)誤差最大值。
圖8A說(shuō)明圖像處理系統(tǒng)810的實(shí)施例的元件方塊圖。在一些實(shí)施例中,圖像處理系統(tǒng)810可能為但不限制于任何型式的計(jì)算裝置如桌上型計(jì)算機(jī)或筆記型計(jì)算機(jī)。
圖像處理系統(tǒng)810可能包含圖形運(yùn)算單元(GPU)812,提供某種功能如像素著色的可編程化處理。這避免需要使用專(zhuān)用硬件執(zhí)行這些功能。圖形運(yùn)算單元812可作為除了主運(yùn)算器之外的分離協(xié)處理器,如圖像處理系統(tǒng)里的中央處理器執(zhí)行它被設(shè)定的特定運(yùn)算工作。在執(zhí)行這些工作時(shí),圖形運(yùn)算單元可能釋放此中央處理器去執(zhí)行其它工作。在一些情況下,如圖形運(yùn)算單元之類(lèi)的協(xié)處理器可能實(shí)際存在于計(jì)算機(jī)系統(tǒng)的主機(jī)板上并伴隨著可能是微處理器的中央處理器。然而,在其它應(yīng)用中,本領(lǐng)域技術(shù)人員可知圖形運(yùn)算單元可能存在于獨(dú)立但電性耦合的適配卡,如本例中的繪圖卡接口840。
如圖所示,圖形運(yùn)算單元812可能包含z解編碼器814和高速緩存如用來(lái)儲(chǔ)存第二階z軸數(shù)據(jù)的第二階高速緩存824。在一些實(shí)施例中,z解編碼器814包含預(yù)測(cè)誤差計(jì)算器816、位長(zhǎng)度計(jì)算器、數(shù)據(jù)編碼器820、以及封包器822。這些模塊被用在z軸數(shù)據(jù)壓縮時(shí)。對(duì)還原壓縮的z軸數(shù)據(jù)而言,z解編碼器814還包含解封包階段826和加法器828以從預(yù)測(cè)誤差矩陣導(dǎo)出z軸數(shù)據(jù)。解封包階段826包括有跳脫序列解封包器216及解封包器218。
當(dāng)z解編碼器814的許多模塊用軟件實(shí)現(xiàn)時(shí),系統(tǒng)可以?xún)?chǔ)存在計(jì)算機(jī)可讀媒介中,以供多種計(jì)算機(jī)相關(guān)系統(tǒng)或方法使用或連接其上。在本文中計(jì)算機(jī)可讀媒介可包含電子式、磁力式、光學(xué)式、或其它實(shí)體裝置,包含供計(jì)算機(jī)相關(guān)系統(tǒng)或方法使用或連接的計(jì)算機(jī)程序。此接口可內(nèi)嵌于許多計(jì)算機(jī)可讀媒介,供指令執(zhí)行系統(tǒng)、設(shè)備、或裝置(如以計(jì)算機(jī)為基礎(chǔ)的系統(tǒng)、內(nèi)含處理器的系統(tǒng),或是其它系統(tǒng)可從指令執(zhí)行系統(tǒng)、設(shè)備、或裝置擷取指令并執(zhí)行指令的系統(tǒng))使用或連接。
本文中的計(jì)算機(jī)可讀媒介儲(chǔ)存、連接、傳遞、或運(yùn)送供多種計(jì)算機(jī)相關(guān)系統(tǒng)或方法使用或連接的程序。舉例而言,計(jì)算機(jī)可讀媒介可包含但不限制于電子式、磁力式、光學(xué)式、電磁式、紅外線式、或半導(dǎo)體系統(tǒng)、設(shè)備、裝置、或傳遞媒介。計(jì)算機(jī)可讀媒介的特定例子可包含如下有一條或數(shù)個(gè)線的電子連接點(diǎn)(電子式)、可攜式計(jì)算機(jī)磁盤(pán)(磁力式)、隨機(jī)存取存儲(chǔ)器(RAM)(電子式)、只讀存儲(chǔ)器(ROM)(電子式)、可抹除可編程只讀存儲(chǔ)器(EPROM、EEPROM、或閃存)(電子式)、光纖(光學(xué)式)、以及可攜式只讀光盤(pán)(CDROM)(光學(xué)式)。
圖8B表示有內(nèi)嵌或電性耦接圖形運(yùn)算單元812的圖像處理系統(tǒng)810的實(shí)施例方?jīng)Q圖。一般而言,圖像處理系統(tǒng)810可包括任何有線/無(wú)線運(yùn)算裝置,如桌上型計(jì)算機(jī)、可攜式計(jì)算機(jī)、專(zhuān)用服務(wù)器、多處理器運(yùn)算裝置、移動(dòng)電話、個(gè)人數(shù)字助理(PDA),手持裝或平板計(jì)算機(jī),內(nèi)嵌式裝置等等。舉例而言,無(wú)關(guān)于其特定用途,圖像處理系統(tǒng)810可包括圖形接口840、運(yùn)算裝置830、數(shù)個(gè)輸入/輸出接口832以及存儲(chǔ)器834,其中每個(gè)裝置通過(guò)數(shù)據(jù)總線838相互連接。舉例而言,顯示裝置836可包括計(jì)算機(jī)監(jiān)示器或個(gè)人計(jì)算機(jī)的電漿屏幕或手持裝置的液晶屏幕。
運(yùn)算裝置830可包含客制或市售處理器、中央處理器或介于圖像處理系統(tǒng)810的數(shù)個(gè)處理器的輔助處理器、以半導(dǎo)體為基礎(chǔ)的微處理器(以微芯片型式)、巨型處理器、一個(gè)或數(shù)個(gè)特殊應(yīng)用集成電路(ASIC)、數(shù)個(gè)適合設(shè)定的數(shù)字邏輯門(mén)、以及其它已知的電子設(shè)施,包含數(shù)個(gè)獨(dú)立元件可以多種結(jié)合方式共同完成運(yùn)算系統(tǒng)的所有操作。
存儲(chǔ)器834可包含易失性存儲(chǔ)器元件(如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器或靜態(tài)隨機(jī)存取存儲(chǔ)器等等)和非易失性存儲(chǔ)器元件(如只讀存儲(chǔ)器、硬盤(pán)、卡帶、光盤(pán)等)的組合。存儲(chǔ)器834通常包含反向操作系統(tǒng),一個(gè)或數(shù)個(gè)反向應(yīng)用程序、仿真系統(tǒng)、或仿真應(yīng)用程序,供許多操作系統(tǒng)和/或仿真硬件平臺(tái),仿真操作系統(tǒng)等使用。本領(lǐng)域技術(shù)人員可知存儲(chǔ)器834通常包含其它為求簡(jiǎn)化而省略的成份。
輸入/輸出接口832提供數(shù)個(gè)接口供數(shù)據(jù)輸入輸出。舉例而言,當(dāng)圖像處理系統(tǒng)810包括個(gè)人計(jì)算機(jī)時(shí),這些元件可能連接使用者輸入裝置,如鍵盤(pán)或鼠標(biāo)。當(dāng)圖像處理系統(tǒng)810包括手持裝置(如個(gè)人數(shù)字助理,手機(jī))時(shí),這元件可能連接功能鍵或按鈕、觸碰式屏幕等等。
本發(fā)明雖以數(shù)個(gè)實(shí)施例揭露如上,然其并非用以限定本發(fā)明的范圍,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可做些許的更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準(zhǔn)。
舉例而言,本領(lǐng)域技術(shù)人員可知本說(shuō)明書(shū)所提數(shù)個(gè)減少圖像數(shù)據(jù)傳輸頻寬需求的方法實(shí)施例,包括通過(guò)儲(chǔ)存每個(gè)像素圖塊的預(yù)測(cè)誤差而壓縮包含數(shù)個(gè)像素圖塊的圖像數(shù)據(jù),計(jì)算像素圖塊的位長(zhǎng)度,對(duì)壓縮的z軸數(shù)據(jù)編碼成壓縮區(qū)塊,在單一運(yùn)算中移動(dòng)每個(gè)壓縮區(qū)塊至輸出總線,其中每個(gè)字組包含數(shù)個(gè)位,以及傳送這些數(shù)據(jù)從輸出總線至高速緩存供作往后還原之用。在一些實(shí)施例中,圖像數(shù)據(jù)為24位z軸數(shù)據(jù)。在其它實(shí)施例中,圖像數(shù)據(jù)為32位z軸數(shù)據(jù)。在一些實(shí)施例中,z壓縮數(shù)據(jù)還包括辨別完全位于一基元內(nèi)的數(shù)個(gè)像素圖塊,其中對(duì)每個(gè)像素圖塊執(zhí)行下列步驟辨別像素圖塊內(nèi)的參考像素值z(mì)00,決定第一斜率值,決定第二值,基于第一、第二梯度值計(jì)算線性梯度,應(yīng)用此線性梯度至像素圖塊的其余像素去計(jì)算像素圖像內(nèi)每個(gè)像素的預(yù)測(cè)誤差,以及儲(chǔ)存關(guān)聯(lián)每個(gè)像素值的預(yù)測(cè)誤差。
在一些實(shí)施例中,像素圖塊包括一塊方格的像素。在一些實(shí)施例中,計(jì)算線性梯度包括水平成份及垂直成份。在一些實(shí)施例中,水平成份表示z坐標(biāo)的數(shù)據(jù)對(duì)x坐標(biāo)數(shù)據(jù)的微分。在一些實(shí)施例中,垂直成份表示z坐標(biāo)的數(shù)據(jù)對(duì)y坐標(biāo)數(shù)據(jù)的微分。在一些實(shí)施例中,一像素圖塊中最大預(yù)測(cè)誤差值為像素的z軸數(shù)據(jù)。在一些實(shí)施例中,計(jì)算位長(zhǎng)度還包括建立位長(zhǎng)度值用以決定儲(chǔ)存像素圖塊所儲(chǔ)的總位數(shù)的量化電平,基于此量化值計(jì)算半長(zhǎng)值與全長(zhǎng)值,其中像素圖塊的全部字段包括可變字段和固定字段。在一些實(shí)施例中,計(jì)算像素圖塊的可變字段還包括檢查像素圖塊的z軸數(shù)據(jù)以決定其中最大的預(yù)測(cè)誤差值并基于此最大預(yù)測(cè)誤差值配置位數(shù)。在一些實(shí)施例中,利用半長(zhǎng)值編碼所產(chǎn)生的壓縮率高于全長(zhǎng)值編碼。在一些實(shí)施例中,編碼z壓縮數(shù)據(jù)還包括設(shè)定像素圖塊內(nèi)每個(gè)像素的1位屏蔽,其中若無(wú)預(yù)測(cè)誤差則此1位屏蔽設(shè)為“0”以及若預(yù)測(cè)誤差不為零則此1位屏蔽設(shè)為“1”,以及設(shè)定2位跳脫序列,其中“00”表示預(yù)測(cè)誤差為+1,“01”表示預(yù)測(cè)誤差為-1,“10”表示預(yù)測(cè)誤差需要半長(zhǎng)值編碼,以及“11”表示預(yù)測(cè)誤差需要全長(zhǎng)值編碼。在一些實(shí)施例中,在單一運(yùn)算中移動(dòng)每個(gè)壓縮區(qū)塊至輸出總線是通過(guò)使用具有獨(dú)立控制多工器的柱形移位器。
另一個(gè)實(shí)施例包含減少圖像數(shù)據(jù)傳輸頻寬需求的方法,包括從高速緩存?zhèn)魉蛿?shù)據(jù)至解封包單元,在此解封包單元解壓縮z壓縮數(shù)據(jù)以得到像素圖塊內(nèi)每個(gè)像素的預(yù)測(cè)誤差值,傳送這些預(yù)測(cè)誤差至加法樹(shù),以及在此加法樹(shù)內(nèi)從這些預(yù)測(cè)誤差還原出z軸數(shù)據(jù)。在一些實(shí)施例中,解封包單元用以執(zhí)行下述操作解壓縮像素圖塊內(nèi)關(guān)聯(lián)每個(gè)像素的1位屏蔽,基于這些1位屏蔽解壓縮此像素圖塊內(nèi)關(guān)聯(lián)每個(gè)像素的跳脫序列,基于這些跳脫序列解壓縮此像素圖塊內(nèi)關(guān)聯(lián)每個(gè)像素的預(yù)測(cè)誤差值。在一些實(shí)施例中,導(dǎo)出z軸數(shù)據(jù)還包括基于這些預(yù)測(cè)誤差值以重復(fù)的方式從預(yù)測(cè)誤差矩陣的左上角開(kāi)始計(jì)算z軸數(shù)據(jù)。
尚有另一實(shí)施例包含減少圖像數(shù)據(jù)傳輸頻寬需求的系統(tǒng),包括預(yù)測(cè)誤差計(jì)算器用以產(chǎn)生像素圖塊的z坐標(biāo)數(shù)據(jù)的預(yù)測(cè)誤差矩陣,位長(zhǎng)度計(jì)算器用以計(jì)算儲(chǔ)存此預(yù)測(cè)誤差矩陣所需的總位數(shù),數(shù)據(jù)編碼器用以像此預(yù)測(cè)誤差矩陣編碼成壓縮區(qū)塊,以及封包器用以在單一運(yùn)算中移動(dòng)此壓縮區(qū)塊至外部存儲(chǔ)器位置。在一些實(shí)施例中,此z坐標(biāo)數(shù)據(jù)為24位z軸數(shù)據(jù)。在一些實(shí)施例中,此z坐標(biāo)數(shù)據(jù)為32位z軸數(shù)據(jù)。在一些實(shí)施例中,此壓縮區(qū)塊包括固定字段及可變字段。
尚有另一實(shí)施例包含減少圖像數(shù)據(jù)傳輸頻寬需求的系統(tǒng),包括解封包模塊用以從外部存儲(chǔ)器位置移動(dòng)壓縮區(qū)塊并從此壓縮區(qū)塊解開(kāi)預(yù)測(cè)誤差矩陣,以及加法樹(shù)用以導(dǎo)出像素圖塊。在一些實(shí)施例中,解封包模塊還包括跳脫序列解封包器用以解壓縮此預(yù)測(cè)誤差矩陣?yán)锏拿總€(gè)跳脫序列,以及解封包器用壓從此壓縮區(qū)塊解壓縮出此預(yù)測(cè)誤差矩陣。在一些實(shí)施例中,加法樹(shù)更用以從此預(yù)測(cè)誤差矩陣的左上角開(kāi)始以重復(fù)的型式導(dǎo)出此像素圖塊。
權(quán)利要求
1.一種減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,包括通過(guò)儲(chǔ)存每個(gè)像素圖塊的多個(gè)預(yù)測(cè)誤差以壓縮上述圖形數(shù)據(jù),其中上述圖形數(shù)據(jù)包括復(fù)數(shù)像素圖塊;計(jì)算上述像素圖塊的位長(zhǎng)度;將上述預(yù)測(cè)誤差編碼成壓縮區(qū)塊;移動(dòng)每個(gè)上述壓縮區(qū)塊至輸出總線;以及從上述輸出總線傳送上述壓縮區(qū)塊至高速緩存作為往后數(shù)據(jù)還原之用。
2.根據(jù)權(quán)利要求1所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中壓縮上述圖形數(shù)據(jù)還包括計(jì)算上述像素圖塊內(nèi)每個(gè)像素的線性梯度,以決定上述預(yù)測(cè)誤差。
3.根據(jù)權(quán)利要求1所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中壓縮上述圖形數(shù)據(jù)還包括辨別完全座落于基元內(nèi)的每個(gè)復(fù)數(shù)像素圖塊,其中對(duì)每個(gè)上述像素圖塊執(zhí)行下述步驟找出上述像素圖塊內(nèi)的參考像素值Z00;決定第一參考斜率值;決定第二參考斜率值;基于上述第一與第二參考斜率值,計(jì)算線性梯度;對(duì)上述像素圖塊內(nèi)的其余像素應(yīng)用上述線性梯度,以計(jì)算上述區(qū)塊內(nèi)每個(gè)像素的上述預(yù)測(cè)誤差;以及儲(chǔ)存與每個(gè)上述像素關(guān)聯(lián)的上述預(yù)測(cè)誤差。
4.根據(jù)權(quán)利要求1所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中計(jì)算上述線性梯度包括水平成份以及垂直成份。
5.根據(jù)權(quán)利要求4所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中上述水平成份代表z軸數(shù)據(jù)對(duì)x軸數(shù)據(jù)的微分,以及上述垂直成份代表z軸數(shù)據(jù)對(duì)y軸數(shù)據(jù)的微分。
6.根據(jù)權(quán)利要求1所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中給定像素圖塊的上述預(yù)測(cè)誤差的最大值為像素的z軸數(shù)據(jù)。
7.根據(jù)權(quán)利要求1所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中計(jì)算位長(zhǎng)度還包括建立位長(zhǎng)度單位以作為決定儲(chǔ)存給定像素圖塊所需的總位數(shù)的量化級(jí)別;根據(jù)上述量化級(jí)別,計(jì)算半長(zhǎng)字段值與全長(zhǎng)字段值;決定上述壓縮區(qū)塊的可變字段的長(zhǎng)度,其中上述可變字段加上上述壓縮區(qū)塊的固定字段為總長(zhǎng)度。
8.根據(jù)權(quán)利要求7所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中決定上述壓縮區(qū)塊的上述可變字段的長(zhǎng)度還包括檢查給定像素圖塊的圖形數(shù)據(jù)以決定每個(gè)像素圖塊的最大預(yù)測(cè)誤差;以及基于上述最大預(yù)測(cè)誤差分配多個(gè)位。
9.根據(jù)權(quán)利要求7所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中利用半長(zhǎng)值編碼所產(chǎn)生的壓縮率高于全長(zhǎng)值編碼。
10.根據(jù)權(quán)利要求1所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中將上述預(yù)測(cè)誤差編碼還包括設(shè)定與給定像素圖塊內(nèi)每個(gè)像素相關(guān)的1位屏蔽,其中若上述預(yù)測(cè)誤差為0則上述1位屏蔽設(shè)成「0」,且若上述預(yù)測(cè)誤差不為0則上述1位屏蔽設(shè)成「1」;以及當(dāng)上述1位屏蔽不為0時(shí),設(shè)定2位脫離序列,其中「00」代表上述預(yù)測(cè)誤差為+1;「01」代表上述預(yù)測(cè)誤差為-1;「10」代表上述預(yù)測(cè)誤差需要半長(zhǎng)值編碼;以及「11」代表上述預(yù)測(cè)誤差需要全長(zhǎng)值編碼。
11.根據(jù)權(quán)利要求1所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中在單一運(yùn)算里移動(dòng)每個(gè)上述壓縮區(qū)塊至輸出總線是通過(guò)使用具有多個(gè)獨(dú)立控制多工器的多個(gè)柱形移位器而執(zhí)行。
12.一種減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,包括從高速緩存?zhèn)魉蛪嚎s數(shù)據(jù)至解封包單元;在上述解封包單元對(duì)上述壓縮數(shù)據(jù)進(jìn)行解壓縮以取得像素圖塊內(nèi)每個(gè)像素的預(yù)測(cè)誤差;傳送上述預(yù)測(cè)誤差至加法樹(shù);以及在上述加法樹(shù)里從上述預(yù)測(cè)誤差導(dǎo)出圖形數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中上述解壓縮單元執(zhí)行下列步驟解壓縮1位屏蔽,其中上述1位屏蔽關(guān)聯(lián)于上述像素圖塊內(nèi)的每個(gè)像素;根據(jù)上述1位屏蔽解壓縮上述像素圖塊的跳脫序列;以及根據(jù)上述跳脫序列解壓縮與上述像素圖塊內(nèi)每個(gè)像素有關(guān)的上述預(yù)測(cè)誤差。
14.根據(jù)權(quán)利要求12所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的方法,其中導(dǎo)出上述圖形數(shù)據(jù)還包括從預(yù)測(cè)誤差矩陣的左上角開(kāi)始,反復(fù)計(jì)算上述預(yù)測(cè)誤差以得到多個(gè)z值。
15.一種減少傳輸圖形數(shù)據(jù)的頻寬需求的系統(tǒng),包括預(yù)測(cè)誤差計(jì)算器,用以產(chǎn)生像素圖塊的z軸數(shù)據(jù)的預(yù)測(cè)誤差矩陣;位長(zhǎng)度計(jì)算器,用以計(jì)算儲(chǔ)存上述預(yù)測(cè)誤差矩陣所需的位數(shù);數(shù)據(jù)編碼器,用以將上述預(yù)測(cè)誤差矩陣編碼成壓縮區(qū)塊;以及封包器,用以移動(dòng)上述壓縮區(qū)塊至外部存儲(chǔ)器位置。
16.根據(jù)權(quán)利要求15所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的系統(tǒng),其中上述預(yù)測(cè)誤差矩陣包括參考像素,位于上述像素圖塊中;第一參考斜率;第二參考斜率;以及多個(gè)預(yù)測(cè)誤差,與上述像素圖塊內(nèi)的剩余值有關(guān),其中上述預(yù)測(cè)誤差是應(yīng)用線性梯度至每個(gè)值而獲得,其中上述線性梯度是根據(jù)上述第一參考斜率以及上述第二參考斜率。
17.根據(jù)權(quán)利要求15所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的系統(tǒng),其中上述壓縮區(qū)塊包括固定字段以及可變字段。
18.一種減少傳輸圖形數(shù)據(jù)的頻寬需求的系統(tǒng),包括解封包器,用以從外部存儲(chǔ)器位置移動(dòng)壓縮區(qū)塊,并從上述壓縮區(qū)塊取得預(yù)測(cè)誤差矩陣;以及加法樹(shù),用以導(dǎo)出像素圖塊。
19.根據(jù)權(quán)利要求18所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的系統(tǒng),其中上述解封包器還包括跳脫序列解封包器,用以解封包跳脫序列以得到上述預(yù)測(cè)誤差矩陣的每個(gè)值。
20.根據(jù)權(quán)利要求18所述的減少傳輸圖形數(shù)據(jù)的頻寬需求的系統(tǒng),其中上述加法樹(shù)還以一種反復(fù)方式從上述預(yù)測(cè)誤差矩陣的左上角開(kāi)始計(jì)算,以取得上述像素圖塊。
全文摘要
減少傳送圖形數(shù)據(jù)的外部頻寬需求的多種實(shí)施例包含其中。一個(gè)實(shí)施例包含一種減少傳送圖形數(shù)據(jù)的外部頻寬需求的系統(tǒng),上述系統(tǒng)包括預(yù)測(cè)誤差計(jì)算器用以產(chǎn)生像素圖塊的z軸數(shù)據(jù)的預(yù)測(cè)誤差矩陣,位長(zhǎng)度計(jì)算器用以計(jì)算儲(chǔ)存所需的位數(shù),數(shù)據(jù)編碼器用以將上述預(yù)測(cè)誤差矩陣編碼成壓縮區(qū)塊,以及封包器用以在單一運(yùn)算中移動(dòng)上述壓縮區(qū)塊至外部存儲(chǔ)器位置。
文檔編號(hào)H04N7/32GK101068363SQ200710109969
公開(kāi)日2007年11月7日 申請(qǐng)日期2007年6月11日 優(yōu)先權(quán)日2006年6月9日
發(fā)明者柏瑞斯·柏克潘克, 提莫·佩塔西 申請(qǐng)人:威盛電子股份有限公司