背景技術(shù):
本發(fā)明總體上涉及圖形處理。
在各種不同的情況下,需要對顯示器上將顯示的顏色進行調(diào)整。舉幾個例子,這樣的調(diào)整的示例包括皮膚膚色調(diào)調(diào)調(diào)整、色溫調(diào)整、以及顏色飽和度調(diào)整。
典型地,這些顏色變換是使用三維查找表來實現(xiàn)的。三維查找表的問題在于,查找表的維度是選定顏色空間中輸入顏色分量的數(shù)量的函數(shù)。作為示例,用于srgb顏色空間的查找表需要三個輸入,并且因此使用三維查找表。當輸入和輸出兩者都處于伴隨著每個顏色8位深度的srgb空間中時,這種查找表的大小為48兆字節(jié)。
因此,使用三維查找表涉及在存儲器容量和存儲器帶寬要求方面的巨大負擔。
附圖說明
關(guān)于以下附圖描述了一些實施例:
圖1是本發(fā)明的一個實施例的處理流程;
圖2是本發(fā)明的一個實施例的流程表;
圖3是一個實施例的示意圖;
圖4是另一實施例的示意圖;
圖5是又另一實施例的示意圖;
圖6是根據(jù)一個實施例的數(shù)據(jù)處理系統(tǒng)的框圖;
圖7是根據(jù)一個實施例在圖6所示的處理器的框圖;
圖8是根據(jù)一個實施例在圖6所示的圖形處理器的框圖;
圖9是根據(jù)一個實施例的圖形處理引擎的框圖;
圖10是根據(jù)另一實施例的圖形處理器的框圖;
圖11展示了用于一個實施例的線程執(zhí)行邏輯;
圖12是根據(jù)一個實施例的圖形處理器執(zhí)行單元指令格式的框圖;
圖13是圖形處理器的另一實施例的框圖;
圖14a是根據(jù)一個實施例的圖形處理器命令格式的框圖;
圖14b是根據(jù)一個實施例的圖形處理器命令序列的框圖;并且
圖15是用于一個實施例的圖形軟件架構(gòu)。
具體實施方式
通過從第一顏色空間轉(zhuǎn)換到第二顏色空間,可以使用一個或多個二維查找表(lut)來執(zhí)行常規(guī)地由多個三維查找表處理的任務(wù)。在一些實施例中,這可以減少存儲要求和存儲器帶寬要求。
一般地,在實現(xiàn)顏色變換算法的過程中不改變諸如亮度的給定顏色分量的任何情況下,可以轉(zhuǎn)換到僅需要二維查找表的中間色彩空間。例如,如果顏色信息是srgb形式的,并且變換僅涉及色度(cb和cr)顏色分量而不涉及亮度(明度)或y顏色分量,則在一些實施例中,通過從srgb轉(zhuǎn)換到y(tǒng)cbcr顏色空間,僅涉及cb和cr顏色分量的單一查找表是可能的。
其結(jié)果是,可以使用二維查找表。然后,在變換已經(jīng)完成之后,可以將所述顏色空間轉(zhuǎn)換回到第一顏色空間。
最終結(jié)果可能是以兩個額外顏色轉(zhuǎn)換步驟的較低成本顯著減小查找表的大小。然而,對于顏色空間轉(zhuǎn)換進行的額外數(shù)學運算可能在較低維度查找表的查找表數(shù)據(jù)的插值過程中通過較少的計算來補償。
下表示出了傳統(tǒng)三維8位rgb空間與nx2d空間之間的查找表大小的比較,其中用于2d查找表的數(shù)量的示例值n=3。顏色變換的準確度隨著查找表中的樣本數(shù)量的最大而增大:
上表示出了在一些實施例中可以實現(xiàn)存儲要求的節(jié)省。作為示例,可以使用ycbcr作為具有三個查找表(n=3)的中間顏色空間、通過將rgb顏色空間轉(zhuǎn)換到y(tǒng)cbcr顏色空間、使用三個二維查找表以及然后轉(zhuǎn)換回到rgb顏色空間來實現(xiàn)通常用三維查找表來實現(xiàn)的皮膚色調(diào)增強算法。
參考圖1,一般步驟是接收輸入像素以及然后轉(zhuǎn)換到適當?shù)念伾臻g,如框10所示。然后使用只具有所需數(shù)量的二維查找表的中間顏色空間(框12)。最后,在顏色轉(zhuǎn)換已經(jīng)發(fā)生之后,可以將中間顏色空間變換回到原始顏色空間,如框14所示。
圖2中示出了用于創(chuàng)建查找表的序列。所述序列可以以軟件、固件和/或硬件形式實現(xiàn)。在軟件和固件實施例中,所述序列可以通過存儲在一個或多個非瞬態(tài)計算機可讀介質(zhì)(例如磁性、光學或半導體存儲設(shè)備)中的計算機執(zhí)行的指令來實現(xiàn)。
最初,如框16所示,選擇顏色變換算法。舉幾個例子,這可以包括用于色域映射、顏色校正、自適應(yīng)亮度、自適應(yīng)對比度增強、皮膚色調(diào)調(diào)整、色溫或白度調(diào)整的算法。然后,如框18所示,選擇中間顏色空間。例如,可以選擇中間顏色空間,使得所述顏色空間是在顏色變換中實際只利用三個顏色空間分量中兩個顏色空間分量的顏色空間,從而有助于向一個或多個二維查找表轉(zhuǎn)變。
然后,如框20所示,選擇二維查找表所需的顏色分量。接下來,如框22所示,選擇查找表的數(shù)量。最后,如框24所示,創(chuàng)建使用所選定算法的所需數(shù)量的查找表。
可能存在需要多個查找表的情況。例如,在皮膚色調(diào)調(diào)整中,一種算法可以用于較深的皮膚色調(diào),并且另一種算法可以用于校正較淺的皮膚色調(diào)。因此,rgb輸入像素被轉(zhuǎn)換到y(tǒng)cbcr顏色空間,并且然后使用兩個查找表來調(diào)整cb和cr分量,一個查找表提供用于較深的皮膚色調(diào)提供并且另一查找表提供用于較淺的皮膚色調(diào)。在某些情況下,可能需要檢測器來評估是涉及淺皮膚色調(diào)還是較深皮膚色調(diào)。
以下示例描述了用于在像素的色相處于指定范圍內(nèi)的情況下增強所述像素的顏色飽和度的算法的查找表創(chuàng)建過程。最初,輸入和輸出顏色空間被注明,并且在這種情況下是srgb。所選定中間顏色空間是ycbcr。如果色相處于一組給定范圍內(nèi),則變換算法用于檢測色相和變換飽和度。此示例中的查找表數(shù)量為1。查找表中的樣本數(shù)為33。所創(chuàng)建的具有8位顏色深度的查找表大小為2178字節(jié)。具有傳統(tǒng)三維查找表的查找表大小為105千字節(jié)。
因此,根據(jù)一個實施例,圖3所示的硬件實施例可以實現(xiàn)用于補償皮膚色調(diào)暗度的二維查找表技術(shù)。最初,顏色信息被傳遞到顏色空間轉(zhuǎn)換單元30。在該示例中,顏色空間可以從rgb轉(zhuǎn)換到y(tǒng)cbcr。然后,皮膚暗度檢測器32檢測是否涉及皮膚色調(diào),并且如果是這樣,則確定皮膚色調(diào)是多深并且根據(jù)所述皮膚色調(diào)是比閾值更深還是比閾值更淺來選擇合適的查找表(表34或表36)。然后,基于皮膚暗度的確定,使用適當?shù)亩S查找表。最后,在顏色空間轉(zhuǎn)換單元38處將顏色空間轉(zhuǎn)換回到原始顏色空間。
根據(jù)另一實施例,可以使用二維查找表而不是三維查找表來完成部分色相和飽和度控制。檢測像素的色相,并且根據(jù)用戶的要求調(diào)整色相/飽和度。在一個實施例中,用戶可以提供用于幾個錨定顏色(色相)(在一個實施例中為六個錨定像素)的色相/飽和度調(diào)整因子。然后,在一個實施例中,可以通過圖形用戶接口上的滑塊控制來獲取用戶輸入。所述算法將rgb像素轉(zhuǎn)換到y(tǒng)cbcr像素,并且僅改變cb和cr分量。因此,單個二維查找表就足夠了。
參考圖4,硬件實施例可以由接收rgb像素的色相檢測模塊40來實現(xiàn)。在檢測到色相之后,例如從圖形用戶接口接收如框42所示的用戶色相/飽和度調(diào)整因子。然后,如框44所示,將顏色空間轉(zhuǎn)換到y(tǒng)cbcr。接下來,如框46所示,使用二維查找表(lut)基于用戶調(diào)整因子來調(diào)整cb和cr分量。最后,將顏色空間轉(zhuǎn)換回到rgb(框48)。
根據(jù)又另一實施例,可以實現(xiàn)色域壓縮算法。所述算法映射出特定顯示面板的色域內(nèi)的色域像素。所述算法將rgb像素轉(zhuǎn)換到hsv顏色空間、并且僅修改所述顏色空間的s和v分量,保持h分量不變。雖然s和v調(diào)整涉及h分量作為輸入,但是整個色相區(qū)域可以被劃分為三到六個子區(qū)域,并且可以利用具有對應(yīng)的s和v分量的那些許多二維查找表。
參考圖5,硬件實施例可以由一系列模塊來實現(xiàn)。第一模塊50檢測超出色域(outofgamut)像素。然后,如框52所示,將顏色空間從rgb轉(zhuǎn)換到hsv。如框54所示,色相區(qū)域被劃分為n個子區(qū)域。接下來,選擇n個二維lut(基于子區(qū)域的數(shù)量),并且然后修改s和v分量(框56)。最后,在修改s和v分量之后將顏色空間轉(zhuǎn)換回到rgb,如框60所示。
圖4和圖5的實施例還可以用軟件或固件來實現(xiàn)。
盡管在一些顯示器中使用了rgbw顏色空間,但具有更多顏色分量的顏色空間將是可用的。本文描述的原理可以適用于更多的顏色分量。具有n個顏色分量的顏色像素可以用數(shù)量n個m維lut進行處理,其中m<n并且n是某一選定正整數(shù)。
圖6是根據(jù)實施例的數(shù)據(jù)處理系統(tǒng)100的框圖。數(shù)據(jù)處理系統(tǒng)100包括一個或多個處理器102和一個或多個圖形處理器108,并且可以是單處理器桌面系統(tǒng)、多處理器工作站系統(tǒng)、或具有大量處理器102或處理器核107的服務(wù)器系統(tǒng)。在一個實施例中,數(shù)據(jù)處理系統(tǒng)100是用于移動設(shè)備、手持設(shè)備或嵌入式設(shè)備的片上系統(tǒng)(soc)集成電路。
數(shù)據(jù)處理系統(tǒng)100的實施例可以包括或者被并入基于服務(wù)器的游戲平臺、游戲控制臺(包括游戲和媒體控制臺)、移動游戲控制臺、手持游戲控制臺或聯(lián)網(wǎng)游戲控制臺。在一個實施例中,數(shù)據(jù)處理系統(tǒng)100是移動電話、智能電話、平板計算設(shè)備或移動因特網(wǎng)設(shè)備。數(shù)據(jù)處理系統(tǒng)100還可以包括、耦合或集成在可穿戴設(shè)備(如智能手表可穿戴設(shè)備、智能眼鏡設(shè)備、增強現(xiàn)實設(shè)備、或虛擬現(xiàn)實設(shè)備)內(nèi)。在一個實施例中,數(shù)據(jù)處理系統(tǒng)100是具有一個或多個處理器102以及由所述一個或多個圖形處理器108生成的圖形接口的電視或機頂盒設(shè)備。
所述一個或多個處理器102各自包括用于處理多個指令的一個或多個處理器核107,所述指令在被執(zhí)行時執(zhí)行用于系統(tǒng)和用戶軟件的操作。在一個實施例中,所述一個或多個處理器核107各自被配置為用于處理特定指令集109。指令集109可以有助于復雜指令集計算(cisc)、簡化指令集計算(risc)、或經(jīng)由超長指令字(vliw)的計算。多個處理器核107可以各自處理不同的指令集109,所述指令集可以包括便于其他指令集的仿真的指令。處理器核107還可以包括其他處理設(shè)備,例如數(shù)字信號處理器(dsp)。
在一個實施例中,處理器102包括高速緩沖存儲器104。取決于架構(gòu),處理器102可以具有單個內(nèi)部高速緩存或多級內(nèi)部高速緩存。在一個實施例中,高速緩存存儲器在處理器102的各個組件之間共享。在一個實施例中,處理器102還使用外部高速緩存(例如,三級(l3)高速緩存或最后一級高速緩存(llc))(未示出),所述外部高速緩存可以使用已知的高速緩存相干性技術(shù)在處理器核107之間共享。處理器102中另外包括寄存器組106,所述處理器可以包括用于存儲不同類型的數(shù)據(jù)的不同類型的寄存器(例如,整數(shù)寄存器、浮點寄存器、狀態(tài)寄存器、以及指令指針寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于處理器102的設(shè)計。
處理器102耦合至處理器總線110,用于在處理器102與系統(tǒng)100內(nèi)的其他組件之間傳輸數(shù)據(jù)信號。系統(tǒng)100使用示例性‘中樞’系統(tǒng)架構(gòu),包括存儲器控制器中樞116和輸入輸出(i/o)控制器中樞130。存儲器控制器中樞116便于存儲器設(shè)備與系統(tǒng)100的其他組件之間的通信,而i/o控制器中樞(ich)130經(jīng)由本地i/o總線提供到i/o設(shè)備的連接。
存儲器設(shè)備120可以是動態(tài)隨機存取存儲器(dram)設(shè)備、靜態(tài)隨機存取存儲器(sram)設(shè)備、閃速存儲器設(shè)備、或具有合適性能用作處理存儲器的一些其他存儲器設(shè)備。存儲器120可以存儲當處理器102執(zhí)行處理時使用的數(shù)據(jù)122和指令121。存儲器控制器中樞116還與可選的外部圖形處理器112耦合,所述外部圖形處理器可以與處理器102中的所述一個或多個圖形處理器108通信以執(zhí)行圖形和媒體操作。
ich130使得多個外圍設(shè)備能夠經(jīng)由高速i/o總線連接到存儲器120和處理器102。i/o外圍設(shè)備包括音頻控制器146、固件接口128、無線收發(fā)器126(例如,wi-fi、藍牙)、數(shù)據(jù)存儲設(shè)備124(例如,硬盤驅(qū)動、閃速存儲器等)、以及用于將傳統(tǒng)(例如,個人系統(tǒng)2(ps/2))設(shè)備耦合到系統(tǒng)的傳統(tǒng)i/o控制器。一個或多個通用串行總線(usb)控制器142連接多個輸入設(shè)備,例如鍵盤和鼠標144組合。網(wǎng)絡(luò)控制器134還可以耦合到ich130。在一個實施例中,高性能網(wǎng)絡(luò)控制器(未示出)耦合到處理器總線110。
圖7是具有一個或多個處理器核202a-n、集成存儲器控制器214、以及集成圖形處理器208的處理器200的一個實施例的框圖。處理器200可以包括多達并且包括用虛線框表示的附加核202n。所述核202a-n各自包括一個或多個內(nèi)部高速緩存單元204a-n。在一個實施例中,每個核還可以訪問一個或多個共享高速緩存單元206。
內(nèi)部高速緩存單元204a-n和共享高速緩存單元206表示處理器200內(nèi)的高速緩存存儲器層級。高速緩存存儲器層級可以包括每個核內(nèi)的至少一級指令數(shù)據(jù)高速緩存以及一級或多級共享中級高速緩存(如二級(l2)、三級(l3)、四級(l4)或其他級的高速緩存),其中在外部存儲器之前的最高級高速緩存被歸類為最后一級高速緩存(llc)。在一個實施例中,高速緩存相干性邏輯維持各高速緩存單元206和204a-n之間的相干性。
處理器200還可以包括一組一個或多個總線控制器單元216和系統(tǒng)代理210。所述一個或多個總線控制器單元管理一組外圍總線,例如一個或多個外圍組件互連總線(例如,pci、pciexpress)。系統(tǒng)代理210提供用于各個處理器組件的管理功能。在一個實施例中,系統(tǒng)代理210包括管理對各個外部存儲器設(shè)備(未示出)的訪問的一個或多個集成存儲器控制器214。
在一個實施例中,所述核202a-n中的一者或多者包括用于同時多線程的支持。在這一實施例中,系統(tǒng)代理210包括用于在多線程處理過程中協(xié)調(diào)和操作核202a-n的組件。系統(tǒng)代理210可以另外包括功率控制單元(pcu),所述功率控制單元包括用于調(diào)節(jié)核202a-n和圖形處理器208的功率狀態(tài)的邏輯和組件。
處理器200另外包括用于執(zhí)行多項圖形處理操作的圖形處理器208。在一個實施例中,圖形處理器208與所述一組共享高速緩存單元206以及包括包括一個或多個集成存儲器控制器214的系統(tǒng)代理單元210耦合。在一個實施例中,顯示控制器211與圖形處理器208耦合以將圖形處理器輸出驅(qū)動到一個或多個耦合的顯示器。顯示控制器211可以是經(jīng)由至少一個互連件與所述圖形處理器耦合的分開的模塊,或者可以集成在圖形處理器208或系統(tǒng)代理210內(nèi)。
在一個實施例中,基于環(huán)的互連單元212用于耦合處理器200的內(nèi)部組件,然而可以使用替代的互連單元,例如點對點互連、交換互連或其他技術(shù),包括本領(lǐng)域公知的技術(shù)。在一個實施例中,圖形處理器208經(jīng)由i/o鏈路213與環(huán)形互連件212耦合。
示例性i/o鏈路213表示i/o互連件的多個品種中的至少一種,包括有助于各個處理器組件與諸如edram模塊的高性能嵌入式存儲器模塊218之間的通信的封裝i/o互連件。在一個實施例中,每個核202a-n和圖形處理器208將嵌入式存儲器模塊218用作共享的最后一級高速緩存。
在一個實施例中,核202a-n是執(zhí)行相同指令集架構(gòu)的同質(zhì)核。在另一實施例中,核202a-n在指令集架構(gòu)(isa)方面是異構(gòu)的,其中核202a-n中的一者或多者執(zhí)行第一指令集,而其他核中的至少一者執(zhí)行所述第一指令集的子集或不同的指令集。
處理器200可以是一個或多個襯底的一部分或者使用多種處理技術(shù)中的任何一種(例如互補金屬氧化物半導體(cmos)、雙極結(jié)/互補金屬氧化物半導體(bicmos)或n型金屬氧化物半導體邏輯(nmos))來實施在所述一個或多個襯底上。另外,處理器200可以被實施在一個或多個芯片上或?qū)嵤榫哂兴窘M件(除此之外還具有其他組件)的片上系統(tǒng)(soc)集成電路。
圖8是圖形處理器的一個實施例的框圖,所述圖形處理器可以是分立式圖形處理單元、或者可以是與多個處理核集成的圖形處理器300。在一個實施例中,所述圖形處理器經(jīng)由存儲器映射的i/o接口以及經(jīng)由置于處理器存儲器中的命令與所述圖形處理器上的多個寄存器進行通信。圖形處理器300包括用于訪問存儲器的存儲器接口314。存儲器接口314可以是到本地存儲器、到一個或多個內(nèi)部高速緩存、到一個或多個共享外部高速緩存、和/或到系統(tǒng)存儲器的接口。
圖形處理器300還包括用于將顯示輸出數(shù)據(jù)驅(qū)動到顯示設(shè)備320的顯示控制器302。顯示控制器302包括用于顯示和組合多層視頻或用戶接口元件的一個或多個覆蓋平面的硬件。在一個實施例中,圖形處理器300包括視頻編解碼器引擎306,所述視頻編解碼器引擎用于對來自或在以下一個或多個媒體編碼格式之間的媒體進行編碼、解碼或轉(zhuǎn)碼,所述媒體編碼格式包括但不限于:運動圖像專家組(mpeg)格式,例如mpeg-2;高級視頻編碼(avc)格式,例如h.264/mpeg-4avc;以及電影與電視工程師協(xié)會(smpte)421m/vc-1和聯(lián)合圖像專家組(jpeg)格式,例如jpeg和motionjpeg(mjpeg)格式。
在一個實施例中,圖形處理器300包括塊圖像傳輸(blit)引擎304,所述blit引擎用于執(zhí)行包括例如位邊界塊傳輸?shù)亩S(2d)光柵化器操作。然而,在一個實施例中,使用圖形處理引擎(gpe)310的一個或多個組件來執(zhí)行2d圖形操作。圖形處理引擎310是用于執(zhí)行包括三維(3d)圖形操作和媒體操作的圖形操作的計算引擎。
gpe310包括用于執(zhí)行3d操作(例如使用作用于3d基元形狀(例如,矩形、三角形等)的處理功能來渲染三維圖像和場景)的3d流水線312。3d流水線312包括可編程和固定的功能元件,所述功能元件執(zhí)行元件內(nèi)的各種任務(wù)和/或向3d/媒體子系統(tǒng)315產(chǎn)生執(zhí)行線程。雖然3d流水線312可以用于執(zhí)行媒體操作,但是gpe310的實施例還包括專門用于執(zhí)行諸如視頻后處理和圖像增強的媒體操作的媒體流水線316。
在一個實施例中,媒體流水線316包括用于執(zhí)行一個或多個專門的媒體操作(例如視頻解碼加速、視頻解交織和視頻編碼加速)來代替或代表視頻編解碼器引擎306的固定功能或可編程邏輯單元。在一個實施例中,媒體流水線316另外包括用于產(chǎn)生在3d/媒體子系統(tǒng)315上執(zhí)行的線程的線程產(chǎn)生單元。所產(chǎn)生的線程對包括在所述3d/媒體子系統(tǒng)315中的一個或多個圖形執(zhí)行單元執(zhí)行用于媒體操作的計算。
3d/媒體子系統(tǒng)315包括用于執(zhí)行由3d流水線312和媒體流水線316產(chǎn)生的線程的邏輯。在一個實施例中,流水線將多個線程執(zhí)行請求發(fā)送到3d/媒體子系統(tǒng)315,所述3d/媒體子系統(tǒng)包括用于仲裁各個請求和將其分派到可用的線程執(zhí)行資源的線程分派邏輯。執(zhí)行資源包括用于處理3d和媒體線程的圖形執(zhí)行單元陣列。在一個實施例中,3d/媒體子系統(tǒng)315包括用于線程指令和數(shù)據(jù)的一個或多個內(nèi)部高速緩存。在一個實施例中,所述子系統(tǒng)還包括用于在多個線程之間共享數(shù)據(jù)并存儲輸出數(shù)據(jù)的共享存儲器,所述共享存儲器包括多個寄存器和可尋址存儲器。
圖9是用于圖形處理器的圖形處理引擎410的實施例的框圖。在一個實施例中,圖形處理引擎(gpe)410是圖8所示的gpe310的一個版本。gpe410包括3d流水線412和媒體流水線416,所述流水線各自可以不同于或類似于圖8的3d流水線312和媒體流水線316的實施方式。
在一個實施例中,gpe410與命令流傳送器(commandstreamer)403耦合,所述命令流傳送器向gpe3d流水線412和媒體流水線416提供命令流。命令流傳送器403被耦合到存儲器,所述存儲器可以是系統(tǒng)存儲器、或者是內(nèi)部高速緩存存儲器和共享高速緩存存儲器中的一者或多者。命令流傳送器403從所述存儲器接收多個命令并將所述命令發(fā)送到3d流水線412和/或媒體流水線416。3d和媒體流水線由通過相應(yīng)流水線內(nèi)的邏輯進行操作或由將一個或多個執(zhí)行線程分派到執(zhí)行單元數(shù)組414來處理命令。在一個實施例中,執(zhí)行單元陣列414是可縮放的,使得所述陣列基于gpe410的目標功率和性能水平而包括可變數(shù)量的執(zhí)行單元。
采樣引擎430與存儲器(例如,高速緩存存儲器或系統(tǒng)存儲器)和執(zhí)行單元陣列414耦合。在一個實施例中,采樣引擎430提供用于可縮放執(zhí)行單元陣列414的存儲器訪問機制,所述存儲器訪問機制允許執(zhí)行陣列414讀取來自存儲器的圖形和媒體數(shù)據(jù)。在一個實施例中,采樣引擎430包括用于執(zhí)行針對媒體的專用圖像采樣操作的邏輯。
采樣引擎430中的專用媒體采樣邏輯包括去噪/解交織模塊432、運動估計模塊434、以及圖像縮放和濾波模塊436。去噪/解交織模塊432包括用于對經(jīng)解碼的視頻數(shù)據(jù)執(zhí)行去噪或解交織算法中的一者或多者的邏輯。解交織邏輯將交織的視頻內(nèi)容的交替字段組合成單一的視頻幀。去噪邏輯減少或去除來自視頻和圖像數(shù)據(jù)中的數(shù)據(jù)噪聲。在一個實施例中,去噪邏輯和解交織邏輯是運動自適應(yīng)的、并且使用基于所述視頻數(shù)據(jù)中檢測到的運動量的空間或時間濾波。在一個實施例中,去噪/解交織模塊432包括專用運動檢測邏輯(例如,在運動估計引擎434內(nèi))。
運動估計引擎434通過對視頻數(shù)據(jù)執(zhí)行諸如運動向量估計和預測的視頻加速功能來提供用于視頻操作的硬件加速。運動估計引擎確定描述連續(xù)視頻幀之間的圖像數(shù)據(jù)的變換的運動向量。在一個實施例中,圖形處理器媒體編解碼器使用視頻運動估計引擎434對宏塊級別的視頻執(zhí)行操作,所述操作在使用通用處理器執(zhí)行時可能是計算密集型的。在一個實施例中,運動估計引擎434通??捎糜趫D形處理器組件,以幫助對視頻數(shù)據(jù)內(nèi)的運動的方向或幅度敏感或適應(yīng)的視頻解碼和處理功能。
圖像縮放和濾波模塊436執(zhí)行圖像處理操作以增強所生成的圖像和視頻的視覺質(zhì)量。在一個實施例中,縮放和濾波模塊436在將數(shù)據(jù)提供給執(zhí)行單元陣列414之前在采樣操作過程中對圖像和視頻數(shù)據(jù)進行處理。
在一個實施例中,圖形處理引擎410包括數(shù)據(jù)端口444,所述數(shù)據(jù)端口為多個圖形子系統(tǒng)提供訪問存儲器的附加機制。數(shù)據(jù)端口444便于對包括渲染目標寫入、常量緩沖器讀取、暫存存儲器空間讀取/寫入、以及媒體表面訪問的操作的存儲器訪問。在一個實施例中,數(shù)據(jù)端口444包括用于高速緩存對存儲器的訪問的高速緩存存儲空間。所述高速緩存存儲器可以是單一數(shù)據(jù)高速緩存或者被分成用于經(jīng)由所述數(shù)據(jù)端口訪問存儲器的多個子系統(tǒng)的多個高速緩存(例如,渲染緩沖器高速緩存、常量緩沖器高速緩存等)。在一個實施例中,對執(zhí)行單元陣列414中的執(zhí)行單元執(zhí)行的線程通過經(jīng)由數(shù)據(jù)分配互連件交換消息來與數(shù)據(jù)端口通信,所述數(shù)據(jù)分配互連件耦合圖形處理引擎410的每個子系統(tǒng)。
圖10是圖形處理器的另一實施例的框圖。在一個實施例中,所述圖形處理器包括環(huán)形互連502、流水線前端504、媒體引擎537、以及多個圖形核580a-n。環(huán)形互連502將所述圖形處理器耦合到其他處理單元(包括其他圖形處理器或一個或多個通用處理器核)。在一個實施例中,所述圖形處理器是集成在多核處理系統(tǒng)內(nèi)的許多處理器之一。
所述圖形處理器經(jīng)由環(huán)形互連502接收多個批次的命令。進入的命令由流水線前端504中的命令流傳送器503進行解釋。所述圖形處理器包括用于經(jīng)由圖形核580a-n執(zhí)行3d幾何結(jié)構(gòu)處理和媒體處理的可縮放執(zhí)行邏輯。對于3d幾何結(jié)構(gòu)處理命令,命令流傳送器503將所述命令提供給幾何結(jié)構(gòu)流水線536。對于至少一些媒體處理命令,命令流傳送器503將所述命令提供給與媒體引擎537耦合的視頻前端534。媒體引擎537包括用于視頻和圖像后處理的視頻質(zhì)量引擎(vqe)530以及用于提供經(jīng)硬件加速的媒體數(shù)據(jù)編碼和解碼的多格式編碼/解碼(mfx)引擎533。幾何結(jié)構(gòu)流水線536和媒體引擎537各自生成用于由至少一個圖形核580a提供的線程執(zhí)行資源的執(zhí)行線程。
所述圖形處理器包括以模塊化核580a-n(有時稱為核片)為特征的多個可縮放線程執(zhí)行資源,所述模塊化核各自具有多個子核550a-n、560a-n(有時稱為核子片)。所述圖形處理器可以具有任意數(shù)量的圖形核580a至580n。在一個實施例中,所述圖形處理器包括至少具有第一子核550a和第二子核560a的圖形核580a。在另一實施例中,所述圖形處理器是具有單個子核(例如,550a)的低功率處理器。在一個實施例中,所述圖形處理器包括多個圖形核580a-n,所述圖形核各自包括一組第一子核550a-n和一組第二子核560a-n。所述一組第一子核550a-n中的每個子核至少包括第一組執(zhí)行單元552a-n和媒體/紋理采樣器554a-n。所述一組第二子核560a-n中的每個子核至少包括第二組執(zhí)行單元562a-n和采樣器564a-n。在一個實施例中,每個子核550a-n、560a-n共享一組共享資源570a-n。在一個實施例中,所述共享資源包括共享高速緩存存儲器和像素操作邏輯。所述圖形處理器的各種實施例中還可以包括其他共享資源。
圖11示出了包括圖形處理引擎的一個實施例中所采用的處理元件陣列的線程執(zhí)行邏輯600。在一個實施例中,線程執(zhí)行邏輯600包括像素著色器602、線程分派器604、指令高速緩存606、包括多個執(zhí)行單元608a-n的可縮放執(zhí)行單元陣列、采樣器610、數(shù)據(jù)高速緩存612、以及數(shù)據(jù)端口614。在一個實施例中,所包括的組件經(jīng)由互連結(jié)構(gòu)互連,所述互連結(jié)構(gòu)鏈接到每個組件。線程執(zhí)行邏輯600包括通過指令高速緩存606、數(shù)據(jù)端口614、采樣器610、以及執(zhí)行單元陣列608a-n中的一者或多者到存儲器(如系統(tǒng)存儲器或高速緩存存儲器)的一個或多個連接件。在一個實施例中,每個執(zhí)行單元(例如608a)是能夠執(zhí)行多個同步線程并且為每個線程并行處理多個數(shù)據(jù)元素的單獨向量處理器。執(zhí)行單元陣列608a-n包括任何數(shù)量的單獨執(zhí)行單元。
在一個實施例中,執(zhí)行單元陣列608a-n主要用于執(zhí)行多個“著色器”程序。在一個實施例中,陣列608a-n中的執(zhí)行單元執(zhí)行包括用于許多標準3d圖形著色器指令的本機支持的指令集,使得來自多個圖形庫(例如,direct3d和opengl)的著色器程序以最小的轉(zhuǎn)換來執(zhí)行。所述執(zhí)行單元支持頂點和幾何結(jié)構(gòu)處理(例如,頂點程序、幾何結(jié)構(gòu)程序、頂點著色器)、像素處理(例如,像素著色器、片段著色器)以及通用處理(例如,計算和媒體著色器)。
執(zhí)行單元陣列608a-n中的每個執(zhí)行單元對多個數(shù)據(jù)元素陣列進行操作。數(shù)據(jù)元素的數(shù)量是“執(zhí)行大小”、或指令的信道數(shù)。執(zhí)行信道是指令內(nèi)的數(shù)據(jù)元素訪問、掩蔽和流控制的邏輯執(zhí)行單元。信道的數(shù)量可以獨立于特定圖形處理器的物理alu或fpu的數(shù)量。執(zhí)行單元608a-n支持整數(shù)和浮點數(shù)據(jù)類型。
所述執(zhí)行單元指令集包括多個單指令多數(shù)據(jù)(simd)指令。各個數(shù)據(jù)元素可以作為打包數(shù)據(jù)類型存儲在寄存器中,并且所述執(zhí)行單元將基于所述元素的數(shù)據(jù)大小處理各個元素。例如,當在256位寬的向量上操作時,向量的256個位被存儲在寄存器中,并且所述執(zhí)行單元對作為四個分開的64位打包數(shù)據(jù)元素(四字(qw))大小數(shù)據(jù)元素)、八個分開的32位打包數(shù)據(jù)元素(雙字(dw)大小數(shù)據(jù)元素)、十六個分開的16位打包數(shù)據(jù)元素(字(w)大小數(shù)據(jù)元素)、或三十二個分開的8位數(shù)據(jù)元素(字節(jié)(b)大小的數(shù)據(jù)元素)的向量進行操作。然而,不同的向量寬度和寄存器大小是可能的。
線程執(zhí)行邏輯600中包括了用于對所述執(zhí)行單元的線程指令進行高速緩存的一個或多個內(nèi)部指令高速緩存(例如,606)。在一個實施例中,包括了用于在線程執(zhí)行過程中對線程數(shù)據(jù)進行高速緩存的一個或多個數(shù)據(jù)高速緩存(例如,612)。包括了提供用于3d操作的紋理采樣和用于媒體操作的媒體采樣的采樣器610。在一個實施例中,采樣器610包括用于在將采樣數(shù)據(jù)提供給執(zhí)行單元之前在采樣處理過程中對紋理或媒體數(shù)據(jù)進行處理的專門紋理或媒體采樣功能。
在執(zhí)行過程中,圖形和媒體流水線通過線程產(chǎn)生和分派邏輯向線程執(zhí)行邏輯600發(fā)送線程啟動請求。線程執(zhí)行邏輯600包括本地線程分派器604,所述本地線程分派器仲裁來自圖形流水線和媒體流水線的線程發(fā)起請求、并且在一個或多個執(zhí)行單元608a-n上實例化所請求的線程。例如,幾何結(jié)構(gòu)流水線(例如,圖6的536)將頂點處理、鑲嵌(tessellation)或幾何結(jié)構(gòu)處理線程分派到線程執(zhí)行邏輯600。線程分派器604還可以對來自執(zhí)行著色器程序的運行時線程產(chǎn)生請求進行處理。
一旦一組幾何對象已經(jīng)被處理并被光柵化成像素數(shù)據(jù),像素著色器602被調(diào)用以進一步計算輸出信息并且使結(jié)果被寫入輸出表面(例如,顏色緩沖器、深度緩沖器、模板緩沖器等)。在一個實施例中,像素著色器602計算有待跨光柵化對象內(nèi)插的各個頂點屬性的值。像素著色器602然后執(zhí)行api提供的像素著色器程序。為了執(zhí)行像素著色器程序,像素著色器602經(jīng)由線程分派器604將多個線程分派到執(zhí)行單元(例如,608a)。像素著色器602使用采樣器610中的紋理采樣邏輯來訪問存儲在存儲器中的紋理圖中的紋理數(shù)據(jù)。對紋理數(shù)據(jù)和輸入幾何結(jié)構(gòu)數(shù)據(jù)的算術(shù)運算計算每個幾何結(jié)構(gòu)片段的像素顏色數(shù)據(jù)、或者丟棄來自另一處理的一個或多個像素。
在一個實施例中,數(shù)據(jù)端口614提供存儲器訪問機制,用于線程執(zhí)行邏輯600將處理后的數(shù)據(jù)輸出到存儲器,以便在圖形處理器輸出流水線上進行處理。在一個實施例中,數(shù)據(jù)端口614包括或耦合到一個或多個用于高速緩存數(shù)據(jù)的高速緩存存儲器(例如,數(shù)據(jù)高速緩存612),以被經(jīng)由所述數(shù)據(jù)端口進行存儲器訪問。
圖12是示出根據(jù)實施例的圖形處理器執(zhí)行單元指令格式的框圖。在一個實施例中,圖形處理器執(zhí)行單元支持具有多種格式的指令的指令集。實線框示出了一般包括在執(zhí)行單元指令中的組件,而虛線包括任選的或僅包括在所述指令的子集中的組件。所描述的指令格式是宏指令,因為它們是提供給執(zhí)行單元的指令,而不是一旦指令被處理時由指令解碼產(chǎn)生的微操作。
在一個實施例中,圖形處理器執(zhí)行單元在本機支持128位格式710的指令。64位壓縮指令格式730可用于基于所選指令、多個指令選項和操作數(shù)數(shù)量的一些指令。本機128位格式710提供對所有指令選項的訪問,而一些選項和操作在64位格式730中被限制。以64位格式730可用的本機指令根據(jù)實施例而變化。在一個實施例中,使用索引字段713中的一組索引值來部分地壓縮所述指令。執(zhí)行單元硬件基于所述索引值引用一組壓縮表,并且使用壓縮表輸出來以128位格式710重構(gòu)本機指令。
對于每種格式,指令操作碼712定義所述執(zhí)行單元要執(zhí)行的操作。所述執(zhí)行單元橫跨每個操作數(shù)的多個數(shù)據(jù)元素并行地執(zhí)行每條指令。例如,響應(yīng)于添加指令,所述執(zhí)行單元橫跨表示紋理元素或圖片元素的每個顏色通道執(zhí)行同步添加操作。默認情況下,所述執(zhí)行單元橫跨操作數(shù)的所有數(shù)據(jù)信道執(zhí)行每條指令。指令控制字段712使得能夠控制某些執(zhí)行選項,例如信道選擇(例如,預測)和數(shù)據(jù)信道排序(例如,攪和)。對于128位指令710,執(zhí)行大小字段716限制將并行執(zhí)行的數(shù)據(jù)信道的數(shù)量。執(zhí)行大小字段716不可用于64位緊湊指令格式730。
一些執(zhí)行單元指令具有多達三個操作數(shù),包括兩個源操作數(shù)src0720、src1722和一個目的地718。在一個實施例中,所述執(zhí)行單元支持雙目的地指令,其中所述目的地之一是隱含的。數(shù)據(jù)操作指令可以具有第三源操作數(shù)(例如,src2724),其中指令操作碼jj12確定源操作數(shù)的數(shù)量。指令的最后一個源操作數(shù)可以是與所述指令一起傳遞的立即數(shù)(例如,硬編碼)值。
在一個實施例中,基于操作碼位字段對多個指令進行分組以簡化操作碼解碼740。對于8位操作碼,位4、5和6允許所述執(zhí)行單元確定操作碼的類型。所示的精確操作碼分組是示例性的。在一個實施例中,移動和邏輯操作碼組742包括數(shù)據(jù)移動和邏輯指令(例如,mov、cmp)。移動和邏輯組742共享五個最高有效位(msb),其中移動指令采用0000xxxxb(例如,0x0x)的形式,并且邏輯指令采用0001xxxxb(例如,0x01)的形式。流控制指令組744(例如,call、jmp)包括采用0010xxxxb(例如0x20)形式的指令。雜項指令組746包括多個指令的混合,所述指令包括采用0011xxxxb(例如,0x30)形式的同步指令(例如,等待發(fā)送)。并行數(shù)學指令組748包括采用0100xxxxb(例如,0x40)形式的分量算術(shù)指令(例如,add、mul)。并行數(shù)學組748橫跨多個數(shù)據(jù)通道并行地執(zhí)行算術(shù)運算。向量數(shù)學組750包括采用0101xxxxb(例如,0x50)形式的算術(shù)指令(例如,dp4)。所述向量數(shù)學組對向量操作數(shù)執(zhí)行諸如點積計算的算術(shù)。
圖13是圖形處理器的另一實施例的框圖,所述圖形處理器包括圖形流水線820、媒體流水線830、顯示引擎840、線程執(zhí)行邏輯850、以及渲染輸出流水線870。在一個實施例中,所述圖形處理器是包括一個或多個通用處理核的多核處理系統(tǒng)內(nèi)的圖形處理器。通過對一個或多個控制寄存器(未示出)的寄存器寫入或通過經(jīng)由環(huán)形互連802發(fā)出到圖形處理器的命令來控制所述圖形處理器。環(huán)形互連802將所述圖形處理器耦合到其他處理組件,例如其他圖形處理器或通用處理器。來自環(huán)形互連的命令由命令流傳送器803進行解釋,所述命令流傳送器向圖形流水線820或媒體流水線830的多個單獨組件提供指令。
命令流傳送器803指導頂點獲取器805組件的操作,所述頂點獲取器組件讀取來自存儲器的頂點數(shù)據(jù)并且執(zhí)行由命令流傳送器803提供的頂點處理命令。頂點獲取器805將頂點數(shù)據(jù)提供給頂點著色器807,所述頂點著色器對每個頂點執(zhí)行坐標空間變換和點亮操作。頂點獲取器805和頂點著色器807通過經(jīng)由線程分派器831將執(zhí)行線程分派到執(zhí)行單元852a、852b來執(zhí)行頂點處理指令。
在一個實施例中,執(zhí)行單元852a、852b是具有用于執(zhí)行圖形和媒體操作的指令集的向量處理器陣列。執(zhí)行單元852a、852b具有附接的l1高速緩存851,所述l1高速緩存特定于每個陣列或在陣列之間共享。所述高速緩存可以被配置為數(shù)據(jù)高速緩存、指令高速緩存、或被分區(qū)以包含不同分區(qū)中的數(shù)據(jù)和指令的單個高速緩存。
在一個實施例中,圖形流水線820包括用于執(zhí)行3d對象的硬件加速鑲嵌的鑲嵌組件??删幊掏鈿ぶ?hullshader)811對所述鑲嵌操作進行配置。可編程域著色器817提供鑲嵌輸出的后端評估。鑲嵌器813在外殼著色器811的方向上操作、并且包含用于基于作為輸入提供到圖形流水線820的粗略幾何模型來生成一組詳細幾何對象的專用邏輯。如果不使用鑲嵌,則鑲嵌組件811、813、817可以被旁路。
完整的幾何結(jié)構(gòu)對象可以由幾何結(jié)構(gòu)著色器819經(jīng)由分派到執(zhí)行單元852a、852b的一個或多個線程來處理,或者可以直接進行到剪輯器829。所述幾何結(jié)構(gòu)著色器對整個幾何結(jié)構(gòu)對象進行操作,而不是像在圖形流水線的先前階段對頂點或頂點補丁進行操作。如果鑲嵌被禁用,則幾何結(jié)構(gòu)著色器819接收來自頂點著色器807的輸入。如果鑲嵌單元被禁用,則幾何結(jié)構(gòu)著色器819可由幾何結(jié)構(gòu)著色器程序編程以執(zhí)行幾何結(jié)構(gòu)鑲嵌。
在光柵化之前,頂點數(shù)據(jù)由剪輯器829進行處理,所述剪輯器是具有剪輯和幾何結(jié)構(gòu)著色器功能的固定功能剪輯器或可編程剪輯器。在一個實施例中,渲染輸出流水線870中的光柵化器873分派多個像素著色器以將所述幾何對象轉(zhuǎn)換為它們的每像素表示。在一個實施例中,線程執(zhí)行邏輯850中包括像素著色器邏輯。
圖形引擎具有互連總線、互連結(jié)構(gòu)、或允許在所述圖形引擎的主要組件之間傳遞數(shù)據(jù)和消息的一些其他互連機制。在一個實施例中,執(zhí)行單元852a、852b和相關(guān)聯(lián)的高速緩存851、紋理和媒體采樣器854、以及紋理/采樣器高速緩存858經(jīng)由數(shù)據(jù)端口856互連,所述數(shù)據(jù)端口用于執(zhí)行存儲器訪問并且與圖形引擎的渲染輸出流水線組件通信。在一個實施例中,采樣器854,高速緩存851、858以及執(zhí)行單元852a、852b各自具有分開的存儲器訪問路徑。
在一個實施例中,渲染輸出流水線870包含光柵化器和深度測試組件873,所述深度測試組件將基于頂點的對象轉(zhuǎn)換為其相關(guān)聯(lián)的基于像素的表示。在一個實施例中,光柵化器邏輯包括用于執(zhí)行固定功能三角形和線光柵化的加窗器/掩蔽器。在一個實施例中,相關(guān)聯(lián)的渲染和深度緩沖器高速緩存878、879也是可用的。像素操作組件877對數(shù)據(jù)進行基于像素的操作,然而在某些情況下,與2d操作(例如,利用混合的位塊圖像傳輸)相關(guān)聯(lián)的像素操作由2d引擎841進行、或者在顯示時使用覆蓋顯示平面由顯示控制器843替代。在一個實施例中,共享l3高速緩存875可用于所有圖形組件,從而允許在不使用主系統(tǒng)存儲器的情況下共享數(shù)據(jù)。
圖形處理器媒體流水線830包括媒體引擎837和視頻前端834。在一個實施例中,視頻前端834從命令流傳送器803接收多個流水線命令。然而,在一個實施例中,媒體流水線830包括分開的命令流傳送器。在將命令發(fā)送到媒體引擎837之前,視頻前端834對媒體命令進行處理。在一個實施例中,所述媒體引擎包括線程產(chǎn)生功能,以經(jīng)由線程分派器831產(chǎn)生用于分派到線程執(zhí)行邏輯850的線程。
在一個實施例中,所述圖形引擎包括顯示引擎840。在一個實施例中,顯示引擎840在圖形處理器的外部、并且經(jīng)由環(huán)連接件802或某些其他互連總線或結(jié)構(gòu)與圖形處理器耦合。顯示引擎840包括2d引擎841和顯示控制器843。顯示引擎840包含能獨立于3d流水線操作的專用邏輯。顯示控制器843與顯示設(shè)備(未示出)耦合,所述顯示設(shè)備可以是如膝上型計算機中的系統(tǒng)集成顯示設(shè)備、或經(jīng)由顯示設(shè)備連接器附接的外部顯示設(shè)備。
圖形流水線820和媒體流水線830可配置為基于多個圖形和媒體編程接口來執(zhí)行操作,并且不特定于任何一個應(yīng)用編程接口(api)。在一個實施例中,用于圖形處理器的驅(qū)動程序軟件將特定于具體圖形或媒體庫的api調(diào)用轉(zhuǎn)換為可由圖形處理器處理的命令。在多個不同實施例中,為khronos集團所支持的開放圖形庫(opengl)和開放式計算語言(opencl)、來自microsoft公司的direct3d庫提供支持,或者在一個實施例中為opengl和d3d兩者提供支持。還可以為開源計算機視覺庫(opencv)提供支持。如果可以將未來api的流水線映射到圖形處理器的流水線,則還將支持具有兼容3d流水線的未來api。
圖14a是示出根據(jù)實施例的圖形處理器命令格式的框圖,并且圖14b是示出根據(jù)實施例的圖形處理器命令序列的框圖。圖14a中的實線框示出了一般包括在圖形命令中的組件,而虛線包括任選的或僅包括在所述圖形命令的子集中的組件。圖14a的示例性圖形處理器命令格式900包括用于標識所述命令的目標客戶端902、命令操作代碼(操作碼)904、以及用于所述命令的相關(guān)數(shù)據(jù)906的數(shù)據(jù)字段。一些命令中還包括子操作碼905和命令大小908。
客戶端902指定對所述命令數(shù)據(jù)進行處理的圖形設(shè)備的客戶端單元。在一個實施例中,圖形處理器命令解析器檢查每個命令的客戶端字段以調(diào)節(jié)對所述命令的進一步處理并將命令數(shù)據(jù)路由到適當?shù)目蛻舳藛卧?。在一個實施例中,圖形處理器客戶端單元包括存儲器接口單元、渲染單元、2d單元、3d單元、以及媒體單元。每個客戶端單元都具有對所述命令進行處理的對應(yīng)處理流水線。一旦命令被客戶端單元接收,客戶端單元讀取操作碼904和子操作碼905(如果有的話),以確定要執(zhí)行的操作。所述客戶端單元使用所述命令的數(shù)據(jù)906字段中的信息來執(zhí)行所述命令。對于某些命令,預期顯式命令大小908指定所述命令的大小。在一個實施例中,命令解析器基于命令操作碼自動地確定所述命令中的至少一些命令的大小。在一個實施例中,多個命令通過多個雙字對齊。
圖14b中的流程圖示出了樣本命令序列910。在一個實施例中,以所述圖形處理器的實施例為特征的數(shù)據(jù)處理系統(tǒng)的軟件或固件使用了所示的命令序列的版本,以建立、執(zhí)行和終止一組圖形操作。為了示例性目的示出和描述了樣本命令序列,然而實施例不限于這些命令或此命令序列。此外,所述命令可以作為命令序列中的一批命令發(fā)出,使得圖形處理器將以至少部分并發(fā)的方式對所述命令序列進行處理。
樣本命令序列910可以以流水線轉(zhuǎn)儲清除(flush)命令912開始,以使任何活動的圖形流水線完成流水線的當前待決命令。在一個實施例中,3d流水線922和媒體流水線924并未并發(fā)地操作。執(zhí)行流水線轉(zhuǎn)儲清除以使活動的圖形流水線完成任何待決命令。響應(yīng)于流水線轉(zhuǎn)儲清除,用于所述圖形處理器的命令解析器將暫停命令處理,直到活動的繪制引擎完成待決操作并且使相關(guān)的讀取高速緩存無效。任選地,標記為‘臟’的渲染高速緩存中的任何數(shù)據(jù)都可以被轉(zhuǎn)儲清除到存儲器。流水線轉(zhuǎn)儲清除命令912可以用于流水線同步或者在將圖形處理器置于低功率狀態(tài)之前使用。
當命令序列要求圖形處理器明確地在流水線之間切換時,使用流水線選擇命令913。在發(fā)出流水線命令之前,流水線選擇命令913在執(zhí)行上下文中只需要一次,除非所述上下文是為兩條流水線發(fā)出命令。在一個實施例中,緊接在通過流水線選擇命令913進行流水線切換之前需要流水線轉(zhuǎn)儲清除命令912。
流水線控制命令914配置圖形流水線以便操作,并且用于對3d流水線922和媒體流水線924進行編程。流水線控制命令914為活動的流水線配置流水線狀態(tài)。在一個實施例中,流水線控制命令914用于流水線同步、并且在處理一批命令之前從所述活動的流水線內(nèi)的一個或多個高速緩存存儲器中清除數(shù)據(jù)。
返回緩沖器狀態(tài)命令916被用于為對應(yīng)的流水線配置一組返回緩沖器以寫入數(shù)據(jù)。一些流水線操作需要一個或多個返回緩沖器的分配、選擇、或配置,在處理過程中所述操作將中間數(shù)據(jù)寫入所述返回緩沖器中。所述圖形處理器還使用一個或多個返回緩沖器來存儲輸出數(shù)據(jù)并執(zhí)行交叉線程通信。返回緩沖器狀態(tài)916包括選擇用于一組流水線操作的返回緩沖器的大小和數(shù)量。
命令序列中的其余命令基于用于操作的活動流水線而不同?;诹魉€確定920,對于從3d流水線狀態(tài)930開始的3d流水線922或者從媒體流水線狀態(tài)940開始的媒體流水線924來定制所述命令序列。
用于3d流水線狀態(tài)930的命令包括用于頂點緩沖器狀態(tài)、頂點元素狀態(tài)、常量顏色狀態(tài)、深度緩沖器狀態(tài)、以及有待在處理3d基元命令之前配置的其他狀態(tài)變量的3d狀態(tài)設(shè)置命令。這些命令的值至少部分地基于使用中的特定3dapi來確定。如果這些元件不被使用,3d流水線狀態(tài)930命令還能夠選擇性地禁用或繞過某些流水線元件。
3d基元932命令用于提交有待由3d流水線處理的3d基元。經(jīng)由3d基元932命令傳遞給圖形處理器的命令和相關(guān)聯(lián)參數(shù)將被轉(zhuǎn)發(fā)到所述圖形流水線中的頂點獲取功能。頂點獲取功能使用3d基元932命令數(shù)據(jù)來生成多個頂點數(shù)據(jù)結(jié)構(gòu)。所述頂點數(shù)據(jù)結(jié)構(gòu)被存儲在一個或多個返回緩沖器中。3d基元932命令用于經(jīng)由多個頂點著色器對多個3d基元執(zhí)行頂點操作。為了對多個頂點著色器進行處理,3d流水線922將著色器執(zhí)行線程分派到圖形處理器執(zhí)行單元。
3d流水線922通過執(zhí)行934命令或事件觸發(fā)。在一個實施例中,寄存器寫入觸發(fā)命令執(zhí)行。在一個實施例中,通過命令序列中的‘go’或‘kick’命令來觸發(fā)執(zhí)行。在一個實施例中,使用用于通過圖形流水線轉(zhuǎn)儲清除所述命令序列的流水線同步命令來觸發(fā)命令執(zhí)行。3d流水線將執(zhí)行針對3d基元的幾何結(jié)構(gòu)處理。一旦操作完成,所得到的幾何對象就被光柵化,并且像素引擎對所得到的像素進行上色。對于這些操作,還可以包括用于控制像素著色和像素后端操作的附加命令。
當執(zhí)行媒體操作時,樣本命令序列910遵循媒體流水線924路徑。一般地,媒體流水線924的具體用途和編程方式取決于有待執(zhí)行的媒體或計算操作。在媒體解碼過程中,特定的媒體解碼操作可以被卸載到所述媒體流水線。所述媒體流水線也可以被旁路,并且可以使用由一個或多個通用處理核提供的資源來整個地或部分地執(zhí)行媒體解碼。在一個實施例中,所述媒體流水線還包括用于通用圖形處理器單元(gpgpu)操作的元件,其中所述圖形處理器用于使用多個計算著色器程序來執(zhí)行simd向量操作,所述計算著色器程序不與圖形基元的渲染明確相關(guān)。
媒體流水線924以與3d流水線922相似的方式進行配置。在媒體對象命令942之前,將一組媒體流水線狀態(tài)命令940分派或放置到命令隊列中。媒體流水線狀態(tài)命令940包括用于配置媒體流水線元件的數(shù)據(jù),所述媒體流水線元件將用于對媒體對象進行處理。所述媒體流水線狀態(tài)命令包括用于在媒體流水線中配置視頻解碼和視頻編碼邏輯的數(shù)據(jù),例如編碼或解碼格式。媒體流水線狀態(tài)命令940還支持使用指向包含一批狀態(tài)設(shè)置的“間接”狀態(tài)元素的一個或多個指針。
媒體對象命令942提供由所述媒體流水線對多個媒體對象進行處理的指針。所述媒體對象包括包含有待處理的視頻數(shù)據(jù)的存儲器緩沖器。在一個實施例中,在發(fā)出媒體對象命令942之前,所有媒體流水線狀態(tài)必須是有效的。一旦配置了流水線狀態(tài)并且媒體對象命令942排好隊,則媒體流水線924通過執(zhí)行934命令或等效的執(zhí)行事件(例如,寄存器寫入)來觸發(fā)。然后可以通過由3d流水線922或媒體流水線924提供的操作來對來自媒體流水線924的輸出進行后處理。在一個實施例中,以與媒體操作類似的方式配置和執(zhí)行g(shù)pgpu操作。
圖15示出了根據(jù)實施例的用于數(shù)據(jù)處理系統(tǒng)的示例性圖形軟件架構(gòu)。軟件架構(gòu)包括3d圖形應(yīng)用1010、操作系統(tǒng)1020、以及至少一個處理器1030。處理器1030包括圖形處理器1032和一個或多個通用處理器核1034。圖形應(yīng)用1010和操作系統(tǒng)1020各自在數(shù)據(jù)處理系統(tǒng)的系統(tǒng)存儲器1050中執(zhí)行。
在一個實施例中,3d圖形應(yīng)用1010包含一個或多個著色器程序,所述著色器程序包括多個著色器指令1012。所述著色器語言指令可以是高級著色器語言,例如高級著色器語言(hlsl)或opengl著色器語言(glsl)。所述應(yīng)用還包括適于由通用處理器核1034執(zhí)行的機器語言的可執(zhí)行指令1014。所述應(yīng)用還包括由頂點數(shù)據(jù)定義的圖形對象1016。
操作系統(tǒng)1020可以是來自microsoft公司的microsoftwindows操作系統(tǒng)、專有的unix類操作系統(tǒng)、或者使用linux內(nèi)核變體的開源unix類操作系統(tǒng)。當direct3dapi正在使用時,操作系統(tǒng)1020使用前端著色器編譯器1024以將hlsl中的任何著色器指令1012編譯成較低級的著色器語言。編譯可能是即時編譯,或者所述應(yīng)用可以執(zhí)行共享預編譯。在一個實施例中,在3d圖形應(yīng)用1010的編譯過程中,高級著色器被編譯成低級著色器。
用戶模式圖形驅(qū)動器1026可以包含用于將著色器指令1012轉(zhuǎn)換成硬件特定的表示的后端著色器編譯器1027。當openglapi正在使用時,glsl高級語言的著色器指令1012被傳遞給用戶模式圖形驅(qū)動程序1026進行編譯。用戶模式圖形驅(qū)動器使用操作系統(tǒng)內(nèi)核模式功能1028與內(nèi)核模式圖形驅(qū)動程序1029進行通信。內(nèi)核模式圖形驅(qū)動器1029與圖形處理器1032進行通信以分派命令和指令。
在本文所描述的各操作或功能程度上,它們可以被描述或定義為硬件電路、軟件代碼、指令、配置和/或數(shù)據(jù)??梢砸杂布壿嫽蚩芍苯訄?zhí)行軟件(“對象”或“可執(zhí)行”形式)、源代碼、經(jīng)設(shè)計用于在圖形引擎上執(zhí)行的高級著色器代碼、或指令集中的用于特定處理器或圖形核的低級匯編語言代碼來實施內(nèi)容。本文中所描述的實施例的軟件內(nèi)容可以經(jīng)由一種其上存儲有內(nèi)容的制品或經(jīng)由一種操作通信接口經(jīng)由通信接口發(fā)送數(shù)據(jù)的方法被提供。
一種非瞬態(tài)機器可讀存儲媒體可以使機器執(zhí)行所描述的功能或操作,并且包括存儲具有機器(例如,計算設(shè)備、電子系統(tǒng)等)可存取形式的信息的任何機制,如可記錄/不可記錄媒體(例如,只讀存儲器(rom)、隨機存取存儲器(ram)、磁盤存儲媒體、光存儲媒體、閃存設(shè)備等)。通信接口包括與硬連線、無線、光學等介質(zhì)中的任一者交互的任何機制,所述機制與諸如存儲器總線接口、處理器總線接口、因特網(wǎng)連接件、磁盤控制器等的另一設(shè)備進行通信。通過提供配置參數(shù)或發(fā)送信號來配置所述通信接口,以便制備用于提供描述軟件內(nèi)容的數(shù)據(jù)信號的通信接口。可以經(jīng)由發(fā)送到通信接口的一個或多個命令或信號來訪問通信接口。
所描述的各組件可以是用于執(zhí)行所描述的操作或功能的裝置。本文所描述的每個組件包括軟件、硬件或它們的組合。這些組件可以被實現(xiàn)為軟件模塊、硬件模塊、專用硬件(例如,專用硬件、專用集成電路(asic)、數(shù)字信號處理器(dsp)等)、嵌入式控制器、硬連線電路等。除了本文所描述的內(nèi)容之外,可以對所公開的實施例和實施方式進行各種修改,而不脫離它們的范圍。因此,本文的說明和示例應(yīng)在說明性的而非限制性意義上被解釋。本發(fā)明的范圍應(yīng)當僅參照以下權(quán)利要求書來衡量。
以下項目和/或示例涉及進一步的實施例。
一個示例性實施例可以是一種方法,所述方法包括:從第一顏色空間轉(zhuǎn)換到第二顏色空間;在所述第二顏色空間中使用二維查找表;以及從所述第二顏色空間轉(zhuǎn)換到所述第一顏色空間。所述方法還可以包括:使用多于一個二維查找表。所述方法還可以包括:其中,所述第一顏色空間是rgb,并且所述第二顏色空間是ycbcr。如權(quán)利要求1所述的方法還可以包括:使用具有n個顏色分量的顏色像素;以及用數(shù)量n個m維lut進行處理,其中m<n并且n是正整數(shù)。如權(quán)利要求1所述的方法包括:使用所述第二顏色空間來實現(xiàn)僅具有兩個變化顏色分量的校正。所述方法還可以包括:從其中所有三個分量都發(fā)生變化的所述第一顏色空間切換。所述方法還可以包括:對于給定的像素,確定將使用至少兩個二維查找表中的哪一個。所述方法還可以包括:判定像素顏色比閾值更深還是更淺。所述方法還可以包括:檢測rgb像素的色相;從用戶處接收色相和飽和度調(diào)整因子;轉(zhuǎn)換到y(tǒng)cbcr顏色空間;基于所述因子調(diào)整cb和cr顏色分量;以及然后往回轉(zhuǎn)換到rgb顏色空間。所述方法還可以包括:從rgb轉(zhuǎn)換到hsv顏色空間;將色相區(qū)域劃分為n個子區(qū)域;以及使用n個二維查找表來修改s分量和v分量。
另一示例性實施例可以是一種或多種非瞬態(tài)計算機可讀介質(zhì),存儲有指令,所述指令被執(zhí)行以便執(zhí)行包括以下各項的序列:從第一顏色空間轉(zhuǎn)換到第二顏色空間;在所述第二顏色空間中使用二維查找表;以及從所述第二顏色空間轉(zhuǎn)換到所述第一顏色空間。所述介質(zhì)可以包括:所述序列包括使用多于一個二維查找表。所述介質(zhì)可以包括所述序列,其中所述第一顏色空間是rgb。所述介質(zhì)可以包括所述序列,其中所述第二顏色空間是ycbcr。所述介質(zhì)可以包括:所述序列包括使用所述第二顏色空間來實現(xiàn)僅具有兩個變化顏色分量的校正。所述介質(zhì)可以包括:所述序列包括從其中所有三個分量都發(fā)生變化的所述第一顏色空間切換。所述介質(zhì)可以包括:所述序列包括對于給定的像素,確定將使用至少兩個二維查找表中的哪一個。所述介質(zhì)可以包括:所述序列包括判定像素顏色比閾值更深還是更淺。所述介質(zhì)可以包括:所述序列包括檢測rgb像素的色相;從用戶處接收色相和飽和度調(diào)整因子;轉(zhuǎn)換到y(tǒng)cbcr顏色空間;基于所述因子調(diào)整cb和cr顏色分量;以及然后往回轉(zhuǎn)換到rgb顏色空間。所述介質(zhì)可以包括:所述序列包括從rgb轉(zhuǎn)換到hsv顏色空間;將色相區(qū)域劃分為n個子區(qū)域;以及使用n個二維查找表來修改s分量和v分量。
另一示例性實施例可以是一種裝置,所述裝置包括:硬件設(shè)備,所述硬件設(shè)備用于從第一顏色空間轉(zhuǎn)換到第二顏色空間,在所述第二顏色空間中使用二維查找表,并且從所述第二顏色空間轉(zhuǎn)換到所述第一顏色空間;以及存儲設(shè)備,所述存儲設(shè)備被耦合到所述設(shè)備。所述裝置可以包括:所述設(shè)備用于使用多于一個二維查找表。所述裝置可以包括:其中所述第一顏色空間是rgb。所述裝置可以包括:其中所述第二顏色空間是ycbcr。所述裝置可以包括:所述設(shè)備用于使用所述第二顏色空間來實現(xiàn)僅具有兩個變化顏色分量的校正。所述裝置可以包括:所述設(shè)備用于從其中所有三個分量都發(fā)生變化的所述第一顏色空間切換。所述裝置可以包括:所述設(shè)備用于對于給定的像素,確定將使用至少兩個二維查找表中的哪一個。所述裝置可以包括:所述設(shè)備用于判定像素顏色比閾值更深還是更淺。所述裝置可以包括:所述設(shè)備用于檢測rgb像素的色相;從用戶處接收色相和飽和度調(diào)整因子;轉(zhuǎn)換到y(tǒng)cbcr顏色空間;基于所述因子調(diào)整cb和cr顏色分量;并且然后往回轉(zhuǎn)換到rgb顏色空間。所述裝置可以包括:所述設(shè)備用于從rgb轉(zhuǎn)換到hsv顏色空間;將色相區(qū)域劃分為n個子區(qū)域;以及使用n個二維查找表來修改s分量和v分量。
本文所描述的圖形處理技術(shù)可以采用各種硬件架構(gòu)來實現(xiàn)。例如,圖形功能可以被集成在芯片組內(nèi)??商娲?,可以使用分立式圖形處理器。作為又另一實施例,圖形功能可以由包括多核處理器的通用處理器來實現(xiàn)。
貫穿本說明書對“一個實施例”或“實施例”的引用意味著結(jié)合該實施例描述的特定特征、結(jié)構(gòu)或特性包含在本公開內(nèi)涵蓋的至少一個實施方式中。因此,短語“一個實施例”或“在實施例中”的出現(xiàn)不一定指代相同的實施例。此外,除了所示的特定實施例以外,可以以其他適當?shù)男问絹韺崿F(xiàn)所述特定特征、結(jié)構(gòu)或特性,并且所有這樣的形式都可以涵蓋在本申請的權(quán)利要求內(nèi)。
盡管已經(jīng)描述了有限數(shù)量的實施例,但是本領(lǐng)域技術(shù)人員將由此意識到許多的修改和變化。旨在使得所附權(quán)利要求書覆蓋落入本公開的真正精神和范圍的所有此類修改和變體。