專利名稱:使用三維流水線伸拉位閃的方法和裝置的制作方法
技術領域:
本發明涉及電子裝置的圖形顯示。更具體地說,本發明涉及對由電子裝置顯示的 圖形的伸拉位閃(stretch blitting)操作。
背景技術:
經過二十多年個人計算機已經走入了日常家用。用于教育和娛樂的游戲已經有用 于PC的強大的應用軟件并且由于三維(3D)圖示技術的引入而得以增強。特定紋理的實時 圖片3D圖示技術將提供對具有全視點自由度、可見到的真實世界位置的準確模擬。高質量實時3D圖示技術的關鍵是,要具有支持雜亂場景的著色的系統結構和存 儲器訪問方案,在所述雜亂場景中有抬高了像素存儲器訪問次數的多層對象。相關的處理 負荷必須不會把系統刷新率降低到我們所認為的實時(30Hz)以下。一些提出的解決方案 把處理卸載給應用程序(application’ s shoulders),因而在對簡單場景進行實時著色時 有困難。更好的加速器將加速那些處理器增強的硬件功能,留著處理器用于高級功能。一 般,定制的加速硬件(專用集成電路ASIC-硅)執行著色功能更快,為軟件應用程序留有更 多時間。這種圖形3D著色引擎,即3D流水線,使用大量的乘法和加法電路。電視會議和其他視頻圖像處理也提到日程中。一個期望用在可視電信會議中的特 征是在傳輸前把視頻圖像縮放到各種大小的能力。圖像越小、同時提供的細節越少,則需要 的通信帶寬越小并且能被接收者計算機越快地再現。一般,攝相機將產生其最大尺寸由攝 相機圖像傳感器限定的視頻圖像。然后可由縮放裝置把該圖像縮放成更小或更大的圖像。采用對源像素的進行數字濾波來提供縮放的輸出的現有的視頻攝相機被設計成 在源像素時鐘的單個周期內產生每個輸出像素。換言之,多抽頭濾波器的抽頭中的每個必 須用在同一個時鐘周期中。因此,需要大量乘法和加法電路來并行處理每個單獨的濾波器 抽頭。隨著乘法和加法電路的數量增加,濾波器傳播延遲和功耗也增加。而且,當縮放裝置 是用集成電路(IC)來實現時,加法和乘法電路的增加的數量轉變為增加的實現IC的芯片 尺寸。最終結果是更昂貴的縮放引擎。如果計算機系統包括3D著色以及視頻成像系統,則用于輔助加速計算的硬件就 面積和門而論變得昂貴。因而,如果減少用于包括三維著色和視頻縮放的成像系統的門數 量,則會有好處。
發明內容
本發明提供用于圖像縮放的方法和裝置。3D流水線包括啟動矩形模式的命令流控 制器。所述3D流水線包括產生由各頂點定義的矩形的地址的窗口器(windower)。濾波器 在基于相對位置的相鄰點之間進行內插,以產生每個像素的屬性。色彩計算器調整輸出數據并且把輸出數據寫到目標表面。
在附圖中,以舉例的方式、而不是以限定的方式說明本發明,并且在附圖中類似的 標號表示類似的元件,其中圖1是本發明可以在其中實現的計算機系統的方框圖;圖2是用于處理視頻圖像的3D流水線的一個實施例的方框圖;圖3是視頻圖像伸拉處理的一個實施例的流程圖;圖4說明用于16比12的矩形的目標數據;圖5A說明由用于3D著色和用于伸拉位閃的窗口器執行的邊緣測試;圖5B說明由用于3D著色和用于伸拉位閃的窗口器執行的邊緣測試。
具體實施例方式現在描述用于以紋理映射引擎進行圖示技術的伸拉位閃的方法和裝置。在以下描 述中,為說明起見,給出大量特定細節以便提供對本發明的全面理解。但是顯然,對于本專 業的技術人員,可以不用這些特定的細節來實踐本發明。另外,以方框圖的形式表示結構和 裝置以避免使本發明模糊不清。在說明書中提到“一個實施例”或“實施例”指的是聯系實施例描述的具體特征、 結構或特性是被包括在本發明的至少一個實施例中的。“在一個實施例中”這個短語在說明 書中各個位置的出現不一定都指的是同一實施例。在包括三維著色和視頻的計算機系統中,實現重復使用輔助3D著色和伸拉位閃 的硬件所用的門的系統。用于伸拉位閃和3D著色的計算是類似的。因而,可以使用帶有修 改的、用于對三維圖像著色的3D流水線來對視頻圖像放大和縮小、濾波、改變表面格式,以 及改變彩色空間。如下所述,在3D流水線中用紋理映射引擎來進行圖像處理。這是有好處 的,因為用于修改3D流水線以允許圖像處理的門數量,與單獨地實現這些功能相比,大大 地減少了。采用3D流水線來執行伸拉位閃導致性能改善、并且節省了孤立的伸拉位閃引擎 所需要的門。還通過利用3D流水線的功能性由于具有更好縮放和濾波而改進了伸拉位閃 引擎。而且,3D流水線的高度流水格式被有利地用來提高伸拉位閃引擎的性能。實現對標準3D流水線的很多變化。修改設置引擎和窗口器以使3D流水線能處理 除三角形之外的矩形。另外,修改映射地址產生器以便能夠在4:2:2和4:2:0數據中尋址。 另外,修改高速緩存以便能夠對這些類型的數據尋址。下面將更詳細地討論所有這些變化。圖1是本發明可以在其中實現的計算機系統的方框圖。該系統可包括一個或一個 以上的處理器110。可把所述處理器110耦合到主機總線115。可把所述主機總線115耦合 到主機橋接器120,以便把圖形卡或圖形子系統130耦合到處理器110。也可把存儲器125 耦合到主機橋接器120。可進一步把所述主機橋接器120耦合到系統總線150上,如PCI總 線150。可把PCI總線150耦合到PCI至ISA橋接器160。可把端口以及擴展ISA總線耦 合到PCI至ISA橋接器160。圖形加速器130包括用于對三維圖像著色的3D引擎140。正如下面將要描述的,3D引擎140還可用于伸拉位閃。可把各種輸入和輸出裝置耦合到圖形卡130,如視頻輸入、 顯示器、電視機等。圖形卡130還可包括用于加速圖形操作的局部內存147。另外,中央單 元140、145可包括局部高速緩沖存儲器,如下所述。可把圖形卡130經總線135或類似的 連接裝置耦合到主機橋接器120上。圖2是3D流水線的方框圖。3D引擎210包括紋理流水線215。如本領域中眾所 周知的,可把這種3D引擎用于三維著色。如下面將要描述的,還可把3D流水線用于伸拉位 閃。在一個實施例中,響應指定了矩形基元類型的、在這里稱為GFXPRIMITIVE的具體命令 (以下稱為GFX矩形命令)而執行伸拉位閃解碼;但是,也可以使用其他命令名稱和格式。命令流控制器220連接成從外部信源例如處理器或緩沖器接收命令。命令流控制 器220對命令分析和解碼以執行適當的控制功能。如果收到的命令不是GFX矩形命令,命 令流控制器220把控制信號和數據傳遞給設置引擎225。命令流控制器220還控制關于非 GFX矩形命令的內存管理、狀態變量管理、二維操作等等。在一個實施例中,當命令流控制器220收到GFX矩形命令時,把頂點信息送到設置 引擎225。在一個實施例中,命令流控制器220為設置引擎225提供矩形的左上頂點、右下 頂點和左下頂點。設置引擎225用這些頂點來計算平面方程的三項關于X、關于Y以及原 點的屬性變化率。另外,當執行紋理映射時,設置引擎225確定包含由頂點定義的三角形的有邊界 框。設置引擎225從命令流控制器220接收目標位置的左上頂點、右下頂點和左下頂 點。設置引擎225還接收定義原始尺寸、在每個頂點處的第二組坐標。設置引擎225計算 兩組坐標的比值以確定伸拉的比例,在尺寸上或者擴展或者縮小。目標坐標是相對窗口的, 而源的坐標是相對于源圖像的左上角、即左上角坐標總是(0,0)。注意,設置引擎方程是為 用于3D著色的三角形所做計算的子集。因而,不需要附加的硬件。設置引擎225還產生邊 緣,定義矩形基元的有邊界框。設置引擎225向窗口器230提供有邊界框信息。窗口器230產生目標平面的地址。窗口器230 —般通過劃出經過每對頂點的線來 產生這些地址。頂端線510以上的區域被標為負的,而頂端線510以下的區域被賦予正值。 底線520以下區域被標為負的,而底線520以上區域被賦予正值。在邊緣線530以內的區 域被賦予正值,而在邊緣線530以外的區域被標為負的。這稱為邊緣測試。這確定了顯示 的三角形540。在圖5A和5B中說明了這些。對于伸拉位閃,使用了窗口器230的另一方面。窗口器230永遠不顯示在由設置引 擎225傳遞給窗口器230的有邊界框590以外的區域。因而,迫使邊緣測試總為正,由此把 該區域定義為有邊界框590的整個區域。窗口器230在有邊界框內迭代像素以產生由GFX 矩形命令寫入的數據的讀和寫地址。換言之,總是傳遞三角形邊緣方程,這使窗口器230能 處理整個矩形而不是停留在三角形邊界上。這些讀和寫地址被傳遞給映射地址發生器。窗口器230產生像素讀寫地址以把數據接入高速緩沖存儲器,在圖2中未示出。窗 口器230還向色彩計算器280提供用于阿爾法(a)混合步驟的目標項。窗口器230從幀 緩沖器獲得目標信息。窗口器230利用在3D流水線中可獲得的深層流水線作業。當窗口器230從設置 引擎225接收了有邊界框和頂點時,窗口器230開始產生地址。用于這些地址的數據是從存儲器中取出的。存儲器具有相對長的延遲。因而,當窗口器230產生地址時,請求對數據 進行流水作業,以FIFO(先進先出)方式設置每個請求的控制部分。因而,對用于每個產生 的地址的數據的請求隨著地址產生而連續地被送往存儲器。因而,存儲器延遲僅影響所請 求的第一像素數據。通過流水線作業,消除了存儲器延遲對隨后的像素數據的影響,并且可 以按每一個時鐘脈沖產生像素,維持通過量。流水線作業就面積而論是昂貴的,而把現有的 流水線作業再用于3D引擎是有利的。映射地址產生器240產生實際地址以在紋理映射中提取特定的像素。在一個實施 例中,映射地址發生器240按照以下方程計算目標區 域這個方程對于那些熟悉3D著色的人是眾所周知的。通過使用下表中的值,復雜的紋理映射方程可以被簡化以用于伸拉位閃計算,由 此使硬件能用于兩個目的。cxs和C。s被直接發送給映射地址產生器240作為平面系數。
這迫使在上述方程中的分母為1。這產生簡化的方程u (x,y) = CxS x+CyX y+C0S這個方程定義了一個簡單平面Ax+By+C。進一步修改映射地址產生器240以接受 對于頂點的非歸一化值。視頻地址一般都不是歸一化的,而3D著色坐標組一般是歸一化 的。通過修改映射地址產生器240可操作的值,使3D流水線可用于伸拉位閃。讀取單元245執行存儲器管理和串行化。讀取單元245請求存儲在高速緩存260 或存儲器中的源映射。讀取單元245把由映射地址產生器240提供的讀取地址轉換成高速 緩存地址。由讀取單元245產生的高速緩存地址被送往高速緩存260。如果在高速緩存260 中未發現數據,讀取單元245向存儲器請求數據,并且當數據到達時把它放入高速緩存。存儲在高速緩存地址中的像素數據被送往濾波器250。映射地址產生器240把部 分像素定位數據和關于相鄰像素的高速緩存地址發送到濾波器250。在本領域中濾波技術 是眾所周知的,這里不再進一步討論。內插器270可用于產生用于混合的內插a值。a混合使部分已經在幀緩沖器中 的圖像和部分源圖像能被看到。術語a定義源的不透明度。對于一個實施例,a值對于 伸拉位閃是固定的,并且未使用內插器270。如果a值不固定,則使用如上所述關于映射 地址產生器240的同樣方程。對于另一個實施例,指定所有三個頂點的a值,并且內插器 270產生在各頂點的a值之間的光滑混合。a值被傳遞到色彩計算器280。在下表中說明彩色空間轉換和通道分配格式的一個實施例。
注bpp_每像素位數,bpt-對于另一個實施例,可從支持的源表面和輸出方式中產生其他目標表面。通道操作單元255執行顏色通道分配操作(Y、U和V通道)。它還執行從YUV到 RGB的彩色空間轉換。對于另一個實施例,通道操作單元255可以既進行通道分配、又進行 彩色空間轉換。對于一個實施例,對YUV通道轉換要用三遍。首先,每個像素被上抽樣(up sampled)為4:4:4格式,對中間像素內插U和V值。然后,可能發生三遍表面格式轉換。在 第一遍中,寫入Y值,在第二遍中寫入U值,而在第三遍中寫入V值。這提供了從平面到打 包格式的便宜轉換,并且不需要三個地址流式磁帶機。這些轉換可能用于電視會議和其他 用途。對于一個實施例,在色彩計算器280的數據校準寄存器中進行從4 2 0到4 2 2 的通道轉換。對于一個實施例,色彩計算器280尤其是使用以下混合方程色彩=a*源+(l-a)* 目標色彩計算器280接收三個輸入值來自通道操作單元255的源色彩;由窗口器230 取出的、來自存儲器的目標色彩;以及來自內插器270的a值(它可能是固定的)。在色 彩計算器280中的打包邏輯(packing logic)對數據進行校準并且把它寫到目標平面。圖3是圖像伸拉過程的流程圖。在塊310中,啟動矩形基元類型。矩形基元類型使 3D引擎能識別由三個點描述為矩形的對象。所述矩形是由按照與啟動的淘汰順序(culling order) 一致的正確提升順序(winding order)的三個頂點描述的軸校準的矩形。這些頂點描述了一個直角三角形,其中三角形的底邊與X軸平行而三角形的垂直邊與Y軸平行。基 于這三個頂點而知道第四點。對于一個實施例,如果當開始伸拉位閃時已經啟動矩形基元 類型,這個步驟可以刪去。在塊320,矩形命令被送到3D引擎,矩形命令向3D引擎指出以下信息將被伸拉位 閃,而不是三維著色信息。在塊330,該過程測試3D流水線是否被刷新。對于一個實施例,因為3D流水線允 許并行操作,所以,在開始視頻伸拉之前它被刷新。對于一個實施例,這一步驟和步驟335 可被刪去。如果3D流水線未被刷新,則過程繼續到塊335,其中過程等待直到3D流水線被 刷新。然后該過程繼續到塊340。如果3D流水線已被刷新,則過程直接繼續到塊340。在塊340,矩形數據被送到3D流水線210中的設置引擎225。矩形數據定義所操 作的數據的矩形。在塊345,在窗口器中計算XY坐標。XY坐標定義圖象目標表面。在塊350,在映射地址產生器(MAG)中計算UV坐標。U和V坐標定義圖像源平面。在塊360,提取像素數據并將其高速緩存。對于一個實施例,這在產生像素地址后 發生。對于一個實施例,像素數據以4 X 4數據塊被高速緩存。在塊370,內插像素值。這產生在目標表面上每個像素的屬性。在塊380,執行通道分配和彩色空間轉換步驟。對于一個實施例,僅在被請求時才 執行這些步驟。對于另一實施例,總是執行這些步驟。在塊390,色彩計算器對數據進行a混合、校準數據并把它寫到目標表面。這產 生目標圖像。在這個過程的結尾,在目標圖像中的每個像素都是已知的,并且顯示出目標圖像。在前述的說明書中,已經參照其特定的示例性實施例描述了本發明。但是,顯然, 只要不違背如所附權利要求書中所陳述的本發明的更廣的精神和范圍,可以做各種修改和 變化。因此,說明書和附圖是為了說明而非為了限定。
10
權利要求
一種用于三維著色和伸拉位圖的3D流水線,所述用于伸拉位圖的3D流水線包括用于啟動矩形方式的命令流控制器;用于產生由頂點定義的矩形的地址的窗口器;在基于相對位置的相鄰點之間插入的、用于每個像素以產生每個像素的屬性的濾波器;用于校準輸出數據并且把所述輸出數據寫到目標表面的色彩計算器。
2.權利要求1的3D流水線,其特征在于還包括設置引擎,它計算關于X和Y及原點的屬性變化率、產生源和目標地址的坐標比、并產 生由傳遞給所述窗口器的所述矩形定義的有邊界框的。
3.權利要求1的3D流水線,其特征在于還包括產生在像素映射中提取特定像素的實際地址的映射地址產生器。
4.權利要求3的3D流水線,其特征在于,所述映射地址產生器利用頂點的非歸一化值。
5.權利要求1的3D流水線,其特征在于還包括 用于提供存儲管理和緩存處理的讀取單元。
6.權利要求1的3D流水線,其特征在于還包括 用于執行YUV空間中的通道轉換的通道操作單元。
7.權利要求6的3D流水線,其特征在于所述轉換是從4 2 2YUV空間到 4:2: OYUV 空間。
8.權利要求1的3D流水線,其特征在于所述色彩計算器還要執行彩色空間轉換。
9.權利要求8的3D流水線,其特征在于所述彩色空間轉換是從YUV到RGB。
10.權利要求1的3D流水線,其特征在于還包括 用于產生α混合的α值的內插器。
11.權利要求10的3D流水線,其特征在于所述色彩計算器還用于使用由所述內插器 提供的所述α值對所述輸出數據進行α混合。
12.權利要求1的3D流水線,其特征在于所述窗口器產生用于目標表面的地址。
13.權利要求12的3D流水線,其特征在于所述目標表面是強制通過對整個有邊界框 的邊緣測試而產生的。
14.權利要求1的3D流水線,其特征在于所述窗口器用深層流水線作業以持續產生 地址、并且隨著產生地址而把所述地址持續地發送到存儲器,由此減小存儲器延遲的影響。
15.一種在三維(3D)流水線中的方法,它包括 接收信號;接收定義一個區域的兩個或兩個以上坐標點; 基于所述信號確定所述區域是三角形還是矩形; 如果所述區域是三角形則基于關于所述區域的數據而產生3D圖像;和 如果所述區域是矩形,則對關于所述區域的數據執行伸拉位圖操作。
16.權利要求15的方法,其特征在于還包括基于所述信號設置所述3D流水線的狀態,所述狀態表示所述坐標點是定義視頻圖像 還是定義用于著色的三維圖像。
17.權利要求15的方法,其特征在于還包括如果所述區域是矩形,則在處理所述數據之前刷新所述3D流水線。
18.權利要求15的方法,其特征在于所述信號是矩形命令。
19.權利要求15的方法,其特征在于所述多個坐標點包括定義直角三角形的左上頂 點、右下頂點和左下頂點的三個點,通過確定右上頂點來定義所述矩形。
20.一種在三維(3D)流水線中對數字視頻數據進行伸拉位圖的方法,所述方法包括 接收矩形命令;接收定義直角三角形的左上頂點、右下頂點和左下頂點; 標識定義矩形的有邊界框; 計算圖像目標表面; 計算圖像源表面; 抽取和緩存像素值;內插所述像素值以產生在所述目標表面中的像素;和 顯示所述目標表面。
全文摘要
提供一種用于圖像縮放的方法和裝置。3D流水線包括命令流控制器以啟動矩形方式。所述3D流水線包括窗口器以產生用于由頂點定義的矩形的地址。濾波器內插在基于相對位置的相鄰點之間,以產生每個像素的屬性。色彩計算器調整輸出數據并把輸出數據寫到目標表面。
文檔編號G06F17/10GK101853487SQ20101015564
公開日2010年10月6日 申請日期2000年1月12日 優先權日1999年1月15日
發明者S·W·詹森, V·G·庫克 申請人:英特爾公司