使用著色器處理器的實(shí)時片上紋理解壓縮的制作方法
【專利摘要】用于在圖形處理單元(GPU)內(nèi)對紋理解壓縮或生成紋理的處理單元、方法和介質(zhì)。紋理以諸如JPEG的可變速率壓縮方案進(jìn)行壓縮。壓縮紋理從系統(tǒng)存儲器被檢索并且在不首先被解壓縮的情況下被轉(zhuǎn)移至GPU上的本地高速緩沖存儲器。表由高速緩沖存儲器利用以對壓縮紋理內(nèi)的各個塊定位。解壓縮著色器處理器接收壓縮塊并然后執(zhí)行塊的即時解壓縮。解壓縮塊然后照常由GPU的紋理消耗著色器處理器進(jìn)行處理。
【專利說明】使用著色器處理器的實(shí)時片上紋理解壓縮
[0001]發(fā)明背景發(fā)明領(lǐng)域
[0002]本公開大體涉及圖形處理,并且具體地涉及紋理解壓縮的處理單元、方法和介質(zhì)。
[0003]相關(guān)技術(shù)描述
[0004]計(jì)算機(jī)圖形處理系統(tǒng)通常利用執(zhí)行很大比例的處理的圖形處理單元(GPU)來處理大量的數(shù)據(jù)。GPU是被配置成執(zhí)行尤其是圖形處理任務(wù)的復(fù)雜集成電路。例如,GPU可能執(zhí)行終端用戶應(yīng)用諸如視頻游戲應(yīng)用所需要的圖形處理任務(wù)。GPU可以是分立裝置或可以被包括在與諸如中央處理器(CPU)的另一個處理器相同的裝置中。
[0005]GPU產(chǎn)生像素,所述像素根據(jù)其分量在被稱為渲染的過程中的較高層次的描述而構(gòu)成圖像。GPU通常通過使用計(jì)算元件來處理像素、紋理和幾何數(shù)據(jù)而利用連續(xù)渲染的概念。計(jì)算元件可能執(zhí)行光柵化器、設(shè)置引擎、顏色混合器、隱藏面移除以及紋理映射的功能。這些計(jì)算元件常常被稱為著色器、著色器處理器、著色器陣列、著色器管、著色器管陣列、著色器管線或著色器引擎,“著色器”是在計(jì)算機(jī)圖形中指由圖形資源主要用于執(zhí)行渲染效果的一組軟件指令或程序的術(shù)語。“著色器”也可以指用來執(zhí)行軟件指令的實(shí)際硬件部件或處理器。著色器處理器或程序可以讀取或渲染數(shù)據(jù)以及執(zhí)行數(shù)據(jù)的任意類型的處理。裝備有統(tǒng)一著色器的GPU也同時支持來自像素、頂點(diǎn)、原語的許多類型的著色器處理以及通用計(jì)算處理。
[0006]在產(chǎn)生復(fù)雜圖形場景中涉及的大部分處理涉及紋理數(shù)據(jù)。紋理可以是各種類型的數(shù)據(jù)中的任一種,諸如顏色、透明度、查詢表或其它數(shù)據(jù)。在一些實(shí)施方案中,紋理可以是將被繪制到幾何形狀上的數(shù)字化圖像以增加視覺細(xì)節(jié)。在模型被渲染以創(chuàng)建目標(biāo)圖像時,通過使用紋理可以使大量的細(xì)節(jié)映射到圖形模型的表面。紋理映射的目的是在對象的表面上提供逼真外觀。紋理可以指定許多性質(zhì),所述性質(zhì)包括顏色、像鏡面反射的表面性質(zhì)或呈法線貼圖或凹凸貼圖形式的細(xì)微的表面細(xì)節(jié)。紋理也可為圖像數(shù)據(jù)、顏色或透明度數(shù)據(jù)、粗糙度/平滑度數(shù)據(jù)、反射率數(shù)據(jù)等。‘紋素’是紋理元素,同樣地,‘像素’是圖片元素。術(shù)語‘紋素’和‘像素’在該說明書中可交換地使用。
[0007]在3D計(jì)算機(jī)圖形中,對象上的表面細(xì)節(jié)通常通過使用紋理來添加。例如,磚墻的2D位圖圖像可以使用紋理映射施加到表示建筑物的3D模型的一組多邊形以給予該對象3D渲染使外觀由磚制成。提供逼真計(jì)算機(jī)圖形通常需要許多高質(zhì)量細(xì)密的紋理。使用紋理會消耗大量的存儲空間和帶寬,并且因此,可以對紋理進(jìn)行壓縮以減小存儲空間和帶寬利用率。
[0008]一般而言,紋理壓縮因此已經(jīng)變成圖形硬件尤其是3D圖形硬件的被廣泛接受的特征。紋理壓縮的目的是降低圖形系統(tǒng)上的存儲成本和帶寬成本,同時盡量維持原始紋理的質(zhì)量。本文中所描述的壓縮和解壓縮方法可以用來壓縮各種類型的紋理信息,包括圖像數(shù)據(jù)、圖片數(shù)據(jù)、透明度信息、平滑度或粗糙度數(shù)據(jù)或任意其它類似結(jié)構(gòu)的數(shù)據(jù)。因此,本文中廣泛地使用術(shù)語紋理來指作為GPU的部分的被壓縮或解壓縮的數(shù)據(jù)。[0009]固定速率壓縮方案已經(jīng)在傳統(tǒng)上用來壓縮紋理,并且與可變速率方案相比可能通常遭受一些缺點(diǎn)。不像固定速率壓縮,可變速率壓縮更加靈活,并且可以允許根據(jù)需要對質(zhì)量進(jìn)行調(diào)整。例如,可變速率壓縮可以被設(shè)置以實(shí)現(xiàn)無損壓縮。在一些情況下,使用可變速率壓縮方案可以提供比傳統(tǒng)固定速率壓縮方案較佳的壓縮。當(dāng)由于高復(fù)雜性和實(shí)施成本而期望即時(on-the-fly)解壓縮時,可變速率壓縮方案,諸如聯(lián)合照片專家組(JPEG),通常不用于紋理壓縮。因此,在本領(lǐng)域中存在對使得能夠?qū)崿F(xiàn)可變速率壓縮紋理的低成本即時解壓縮的方法和機(jī)制的需要。
[0010]鑒于以上情況,期望用于執(zhí)行壓縮紋理的實(shí)時解壓縮的改進(jìn)的處理單元、方法和介質(zhì)。
[0011]發(fā)明實(shí)施方案概要
[0012]構(gòu)想了用于對紋理數(shù)據(jù)進(jìn)行解壓縮的處理單元、方法和介質(zhì)的各種實(shí)施方案。在一個實(shí)施方案中,多個著色器中的第一著色器可能需要紋理的塊來產(chǎn)生由顯示裝置或在進(jìn)一步處理中使用的數(shù)據(jù)。第一著色器可以被配置成計(jì)算該塊在紋理的未壓縮版本內(nèi)的虛擬地址并且以對該塊的請求將該虛擬地址傳送至高速緩沖存儲器裝置。響應(yīng)于確定該塊的未壓縮版本不存儲在高速緩沖存儲器中,多個著色器中的第二著色器可以被啟用為解壓縮著色器,并且該塊的未壓縮版本的虛擬地址可以被傳遞至解壓縮著色器。另外,響應(yīng)于確定該塊的未壓縮版本不在高速緩沖存儲器中,可以為被請求的塊分配高速緩沖存儲器線。
[0013]第二著色器可以被配置成從高速緩沖存儲器接收該塊的壓縮版本。高速緩沖存儲器可以被配置成利用表,該表將紋理的未壓縮版本的虛擬地址空間映射到紋理的壓縮版本的地址空間。高速緩沖存儲器和/或第二著色器可以被配置成根據(jù)表確定該塊的壓縮版本的位置和大小。表也可以包含附加信息,諸如紋理的每塊的壓縮版本的DC系數(shù)的值。
[0014]在從高速緩沖存儲器接收該塊的壓縮版本之后,第二著色器可以被配置成對該塊的壓縮版本解壓縮并然后將該塊的解壓縮版本寫入到高速緩沖存儲器。在已經(jīng)將該塊的解壓縮版本寫入到高速緩沖存儲器之后,第一著色器可以被配置成從高速緩沖存儲器接收該塊的解壓縮版本。第一著色器可然后被配置成處理該塊的解壓縮版本,使得它可以適用于渲染表面進(jìn)行顯示。
[0015]鑒于本文所提出的方法的下列詳細(xì)描述,這些和其它特征及優(yōu)勢對于本領(lǐng)域的那些技術(shù)人員而言將變得明顯。
[0016]附圖簡述
[0017]系統(tǒng)、方法和機(jī)制的上述和進(jìn)一步的優(yōu)勢通過參照下列描述結(jié)合附圖可以更好地來理解,在附圖中:
[0018]圖1示出計(jì)算機(jī)圖形系統(tǒng)的一個實(shí)施方案。
[0019]圖2是根據(jù)一個或多個實(shí)施方案的GPU的框圖。
[0020]圖3示出圖形處理系統(tǒng)的一個實(shí)施方案的框圖。
[0021]圖4A示出數(shù)據(jù)高速緩沖存儲器的一個實(shí)施方案的框圖。
[0022]圖4B是根據(jù)一個或多個實(shí)施方案的塊映射表。
[0023]圖5示出用于8x8紋素塊的虛擬地址空間的一個實(shí)施方案。
[0024]圖6是一部分?jǐn)?shù)據(jù)的一個實(shí)施方案的框圖。
[0025]圖7是示出用以對紋理的壓縮塊解壓縮的方法的一個實(shí)施方案的通用流程圖。[0026]詳述
[0027]在下列描述中,闡明了許多特殊細(xì)節(jié)以提供對本文所提出的方法和機(jī)制的徹底理解。然而,本領(lǐng)域的普通技術(shù)人員之一應(yīng)認(rèn)識到,各實(shí)施方案可在沒有這些特殊細(xì)節(jié)的情況下實(shí)踐。在某些情況下,為避免對本文中所描述的方法造成模糊,未詳細(xì)地示出熟知的結(jié)構(gòu)、部件、信號、計(jì)算機(jī)程序指令和技術(shù)。應(yīng)了解,為了簡單和圖示的清楚,在這些圖中示出的元件不一定按比例繪制。例如,元件中的一些的尺寸相對于其它元件可能被夸大。
[0028]該說明書包括對“一個實(shí)施方案”或“一實(shí)施方案”的引用。短語“在一個實(shí)施方案中”或“在一實(shí)施方案中”的出現(xiàn)未必指相同的實(shí)施方案。特定的特征、結(jié)構(gòu)或特性可以用與本公開一致的任意適當(dāng)?shù)姆绞胶喜ⅰ?br>
[0029]術(shù)語。下列段落為在本公開(包括所附權(quán)利要求)中找到的術(shù)語提供定義和/或背景.[0030]“包括”。該術(shù)語是開放性的。如在所附權(quán)利要求中所使用的,該術(shù)語不排除附加結(jié)構(gòu)或步驟??紤]如下敘述的權(quán)利要求:“一種包括多個著色器...的GPU?!边@樣的權(quán)利要求不排除GPU包括附加部件(例如,紋理單元、輸入/輸出電路等)。
[0031]“被配置成”。各種單元、電路、或其它部件可以被描述或聲稱為“被配置成”執(zhí)行一項(xiàng)或多項(xiàng)任務(wù)。在這樣的背景下,“被配置成”用來通過指示單元/電路/部件包括在操作期間執(zhí)行那些一項(xiàng)或多項(xiàng)任務(wù)的結(jié)構(gòu)(例如,電路)來暗示結(jié)構(gòu)。因此,即使當(dāng)指定的單元/電路/部件當(dāng)前未在操作時(例如,未通電),單元/電路/部件也能夠被說成被配置成執(zhí)行任務(wù)。與“被配置成”語言一起使用的單元/電路/部件包括硬件——例如,電路、可執(zhí)行以實(shí)施操作的存儲器存儲程序指令等。單元/電路/部件“被配置成”執(zhí)行一項(xiàng)或多項(xiàng)任務(wù)的敘述明確地不旨在對該單元/電路/部件援引35U.S.C.§114第六段。另外,“被配置成”能夠包括通用結(jié)構(gòu)(例如,通用電路),所述通用結(jié)構(gòu)由軟件和/或固件(例如,F(xiàn)PGA或通用處理器執(zhí)行軟件)操縱以能夠執(zhí)行討論中的任務(wù)的方式操作。“被配置成”還可以包括使制造過程(例如,半導(dǎo)體制作設(shè)施)適于制作實(shí)施或執(zhí)行一項(xiàng)或多項(xiàng)任務(wù)的裝置(例如,集成電路)。
[0032]“第一”、“第二”等。如本文所使用的,這些術(shù)語用作在它們后面的名詞的標(biāo)簽,并且不暗示任何類型的順序(例如,空間、時間、邏輯等)。例如,在具有八個處理元件或核心的處理器中,術(shù)語“第一”和“第二”處理元件能夠用來指八個處理元件中的任意兩個。換句話說,“第一”和“第二”處理元件并不限制于邏輯處理元件O和I。
[0033]參照圖1,示出計(jì)算機(jī)圖形系統(tǒng)的一個實(shí)施方案的框圖。計(jì)算機(jī)圖形系統(tǒng)100包括計(jì)算系統(tǒng)102和顯示裝置114。計(jì)算系統(tǒng)102包括用于處理圖形數(shù)據(jù)的圖形處理單元(GPU) 104。在一些實(shí)施方案中,GPU104可能駐留在計(jì)算系統(tǒng)102內(nèi)的顯卡上。GPU104可以處理圖形數(shù)據(jù)以便為幀的每個像素生成顏色和亮度值以便顯示在顯示裝置114上。GPU104可以包括一個或多個處理核心和/或著色器陣列以執(zhí)行像素操縱。
[0034]計(jì)算系統(tǒng)102可以包括可以在CPU(未示出)上運(yùn)行的軟件程序應(yīng)用108、應(yīng)用程序設(shè)計(jì)接口(API)IlO以及驅(qū)動器112。APIllO可以遵守工業(yè)標(biāo)準(zhǔn)規(guī)范,諸如OpenGL或DirectX。APIllO可以與驅(qū)動器112通信。驅(qū)動器112可以將從APIllO接收的標(biāo)準(zhǔn)代碼翻譯成由GPU104理解的指令的原生格式。GPU104然后可以執(zhí)行從驅(qū)動器112接收的指令。
[0035]紋理可以從計(jì)算系統(tǒng)102的系統(tǒng)存儲器(未示出)或另一個存儲裝置被轉(zhuǎn)移至GPU104。在一個實(shí)施方案中,紋理可以使用JPEG壓縮來壓縮。在其它實(shí)施方案中,可以使用其它類型的可變速率壓縮來壓縮紋理。對于該說明書的其余部分,JPEG類型編碼的示例將用來描述各實(shí)施方案。然而,這僅僅只是出于說明目的,并且其它類型的可變速率壓縮也可以與本文所描述的方法和機(jī)制一起使用。
[0036]作為圖塊化處理的部分,驅(qū)動器112可以對壓縮紋理重定格式。這種重定格式可以使得將JPEG壓縮紋理譯碼成硬件內(nèi)部JPEG格式成為必需。在其它實(shí)施方案中,JPEG壓縮紋理可以被譯碼成其它格式。硬件內(nèi)部JPEG格式可以包含附加信息以促進(jìn)解壓縮處理。例如,硬件內(nèi)部JPEG格式可以包括具有關(guān)于JPEG壓縮紋理的各個塊的位置和尺寸的信息的表。該表也可以包括關(guān)于JPEG壓縮紋理的每個8x8塊的DC系數(shù)的信息。該表可以進(jìn)一步包括用以促進(jìn)壓縮紋理的解壓縮的Huffman代碼、量化表和其它信息。驅(qū)動器112可以為由計(jì)算系統(tǒng)102利用的壓縮紋理中的每一個分配虛擬地址空間。每個虛擬地址空間的大小可能對應(yīng)于未壓縮紋理的大小。
[0037]計(jì)算系統(tǒng)102將通常具有圖1中未示出的各種其它裝置/部件,諸如CPU、總線、存儲器、外圍裝置等。例如,計(jì)算系統(tǒng)102可以包括可以耦接到除顯示裝置114之外的諸如鍵盤、打印機(jī)和鼠標(biāo)的其它裝置的I/O接口。在一些實(shí)施方案中,計(jì)算系統(tǒng)102可以包括多個GPU。
[0038]在另一個實(shí)施方案中,諸如GPU104的處理器可以用軟件來定義。軟件指令可以存儲在計(jì)算機(jī)可讀存儲介質(zhì)中,并且當(dāng)軟件指令在計(jì)算裝置上被執(zhí)行時,軟件指令可以定義處理器。在進(jìn)一步的實(shí)施方案中,處理器可以包括GPU、CPU、視頻處理單元(VPU)、協(xié)處理器和/或被配置成處理紋理數(shù)據(jù)的其它類型的處理器。在各實(shí)施方案中,GPU和CPU可以是獨(dú)立的集成電路裝置/包。在各實(shí)施方案中,GPU和CPU可以被包括在單一集成電路或包中。
[0039]參照圖2,所示為GPU200的一個實(shí)施方案的框圖??梢岳肎PU200來(例如,使用頂點(diǎn)著色器、幾何著色器、像素著色器等)執(zhí)行圖形處理相關(guān)的任務(wù)和一般計(jì)算任務(wù)(例如,數(shù)學(xué)算法、物理模擬等)。在示出的示例中,GPU200包括著色器處理器陣列210、命令處理器212、紋理存儲器220以及可以被配置成支持直接存儲器存取(DMA)的存儲器控制器222。應(yīng)注意,圖2中描繪的GPU200的實(shí)施方案僅出于說明目的,并且本領(lǐng)域的那些技術(shù)人員將領(lǐng)會,許多替代實(shí)施方案是可能的。所有這樣的替代實(shí)施方案是預(yù)期的。還應(yīng)注意,GPU200可以包括圖2中未示出的許多其它部件。
[0040]在示出的實(shí)施方案中,著色器處理器陣列210包括可并行執(zhí)行的多個處理單元。命令處理器212可以向著色器處理器陣列210的各個著色器處理器發(fā)布命令以及分配處理任務(wù)。在一些實(shí)施方案中,命令處理器212可以包括分派處理器(未示出),該分派處理器被配置成將接收的工作量劃分成線程并且在著色器處理器陣列的處理單元之間分發(fā)線程。著色器處理器陣列210可以被配置成執(zhí)行各種類型的功能,包括處理紋理數(shù)據(jù)和執(zhí)行渲染算法以將3維紋理對象轉(zhuǎn)換成2維圖像。如上文所指出的,著色器處理器陣列210可以包括多個著色器處理器,并且所述多個著色器處理器可以在頂點(diǎn)和其它紋理數(shù)據(jù)上使用寬范圍的數(shù)學(xué)運(yùn)算和邏輯運(yùn)算來實(shí)施算法。
[0041]在一些實(shí)施方案中,GPU200可以被配置成利用一個或多個片上和/或片外存儲器用于臨時存儲數(shù)據(jù)。雖然這樣的存儲器在本文中可以被稱為“高速緩沖存儲器”,但是應(yīng)注意,使用這樣的術(shù)語不一定要求這樣的存儲器的任意特定組織、結(jié)構(gòu)或策略。例如,雖然這樣的存儲器可能利用通常與中央處理單元(CPU)高速緩沖存儲器相關(guān)聯(lián)的組織和策略,諸如成組相聯(lián)組織和替換策略,但是可以利用任意期望的組織和/或存儲策略。在各實(shí)施方案中,紋理存儲器220用于存儲紋理數(shù)據(jù)。在這樣的實(shí)施方案中,相比紋理數(shù)據(jù)僅存儲在系統(tǒng)存儲器226或本地存儲器230將可能的情況,紋理存儲器220可以提供對某紋理數(shù)據(jù)諸如被頻繁使用的紋理數(shù)據(jù)的更快訪問。系統(tǒng)存儲器226可以表示GPU200和中央處理單元(CPU,未示出)都可訪問的存儲器,而本地存儲器可以表示僅可由GPU200直接訪問的存儲器。在各實(shí)施方案中,紋理存儲器220可以包括分層布置中的多個等級,如在高速緩沖存儲器技術(shù)中通常已知的。被包括在紋理高速緩沖存儲器系統(tǒng)220中的這樣的高速緩沖存儲器等級的數(shù)量可能從一個實(shí)施方案變化到另一個實(shí)施方案。紋理存儲器220可以使用諸如靜態(tài)存儲器(例如,SRAM)、使用動態(tài)存儲器(例如,DRAM)的堆棧存儲器的各種存儲器技術(shù)或以其它方式來實(shí)施。紋理存儲器220也可以包括高速緩沖存儲器邏輯。高速緩沖存儲器邏輯可以被配置成將數(shù)據(jù)高速緩沖存儲到紋理存儲器220以及被配置成實(shí)施考慮高速緩沖存儲器系統(tǒng)220對系統(tǒng)存儲器226的相對等待時間和/或帶寬的高速緩沖存儲器管理策略。
[0042]GPU200也可以包括存儲器控制器222。存儲器控制器222可以耦接到系統(tǒng)存儲器226和本地存儲器230。存儲器控制器222可以訪問系統(tǒng)存儲器226中的數(shù)據(jù),諸如壓縮紋理228。壓縮紋理228可以包括多個紋理,該多個紋理可以用各種可變速率壓縮技術(shù)中的任一種諸如JPEG來壓縮。壓縮紋理228,或壓縮紋理228內(nèi)的各個紋理的部分,可以在不首先被解壓縮的情況下(經(jīng)存儲器控制器222)轉(zhuǎn)移至GPU200的紋理存儲器220和著色器處理器陣列210。主機(jī)驅(qū)動器240可以經(jīng)系統(tǒng)存儲器226將命令和數(shù)據(jù)轉(zhuǎn)移到GPU200??梢岳帽镜卮鎯ζ?30來存儲由GPU200使用的頂點(diǎn)數(shù)據(jù)和其它數(shù)據(jù),并且GPU200可以將幀數(shù)據(jù)寫入到本地存儲器230。
[0043]現(xiàn)在參照圖3,示出圖形處理系統(tǒng)的一個實(shí)施方案的框圖。圖形處理系統(tǒng)300可以包括著色器控制器310,并且著色器控制器310可以將特定圖形處理任務(wù)分配至著色器陣列320內(nèi)的各個著色器計(jì)算單元。著色器控制器310可以在圖形處理任務(wù)和通用計(jì)算任務(wù)上執(zhí)行預(yù)處理,并且將這些任務(wù)發(fā)布給著色器陣列320。著色器控制器310可以識別著色器陣列中的哪個處理元件可用于處理新的工作量,并且著色器控制器310可以將新的工作量發(fā)送至著色器陣列320的可用處理元件。著色器控制器310可以記錄哪些工作量正由著色器陣列的不同的處理元件處理,使得多個線程能夠并行地執(zhí)行。
[0044]著色器陣列320可以包括紋理消耗著色器321和解壓縮著色器322,它們代表可以被包括在著色器陣列320中的任意數(shù)量和類型的著色器處理器。在各實(shí)施方案中,著色器陣列320可以包括可以被配置成在程序上生成紋理數(shù)據(jù)的附加著色器處理器。一般來說,程序紋理生成是指在算法上生成紋理的處理。在各實(shí)施方案中,紋理的該程序生成動態(tài)地而非事先執(zhí)行。除了其它任務(wù)之外,著色器陣列320可以用于紋理映射和為顯示裝置產(chǎn)生圖像數(shù)據(jù)。作為執(zhí)行這些操作的部分,紋理消耗著色器321可以向紋理過濾器330發(fā)布紋理請求。紋理請求可以針對紋理的一個或多個部分(例如,塊、紋素)。紋理過濾器330可以為被請求的紋理生成虛擬地址,并且通過請求向高速緩沖存儲器340傳送虛擬地址。高速緩沖存儲器340可以存儲與像素相關(guān)聯(lián)的紋素?cái)?shù)據(jù)的形式的紋理。紋理中的一些可以被壓縮,并且紋理中的一些可以不被壓縮。[0045]在從紋理過濾器330接收虛擬地址之后,高速緩沖存儲器340可以針對所有已知的虛擬地址范圍執(zhí)行地址校驗(yàn)以確定被請求的紋理是否存儲在高速緩沖存儲器340中。如果被請求的紋理的未壓縮版本存儲在高速緩沖存儲器340中,則高速緩沖存儲器340可以將紋理的未壓縮版本返回到紋理過濾器330。如果紋理的未壓縮版本未存儲在高速緩沖存儲器340中,則試圖的請求可能導(dǎo)致高速緩沖存儲器缺失。響應(yīng)于高速緩沖存儲器缺失,為了對紋理的壓縮版本解壓縮的目的,可以啟用解壓縮著色器322。在各實(shí)施方案中,著色器陣列320可以從高速緩沖存儲器340接收請求,否則,啟用解壓縮著色器。另外,響應(yīng)于高速緩沖存儲器缺失,紋理消耗著色器321可以將紋理的虛擬地址傳遞到解壓縮著色器322。用于解壓縮著色器程序的資源可以被預(yù)分配在解壓縮著色器322上以減少著色器開始等待時間和簡化資源管理。基于被請求的塊的虛擬地址,請求可以被路由至著色器陣列320的特定的著色處理器。
[0046]高速緩沖存儲器340可能被查詢紋理的壓縮版本,并且如果紋理的壓縮版本存儲在高速緩沖存儲器340中,則紋理的壓縮版本可以返回到解壓縮著色器322。如果紋理的壓縮版本未存儲在高速緩沖存儲器340中,則可以從系統(tǒng)存儲器或另一個位置檢索紋理的壓縮版本。解壓縮著色器322也可以接收附加表、紋理和/或常量來促進(jìn)解壓縮操作。解壓縮著色器322可以對用以對被請求的紋理解壓縮所必須的某附加壓縮數(shù)據(jù)解壓縮。在JPEG壓縮紋理的情況下,紋理可以從原始代碼譯碼成新的編碼方案,并且新的編碼方案可以設(shè)計(jì)成使得解壓縮更加有效。在解壓縮著色器322已經(jīng)接收紋理的壓縮版本并且對其解壓縮之后,紋理消耗著色器321可以利用紋理的解壓縮版本用于適當(dāng)?shù)匿秩居?jì)算。針對多個紋理和/或紋理的部分,該處理可以繼續(xù)。在另一個實(shí)施方案中,所描述的如由紋理過濾器330執(zhí)行的功能可以由著色器陣列320執(zhí)行,并且著色器陣列320可以直接耦接到高速緩沖存儲器340。
[0047]高速緩沖存儲器340可以利用表來確定給定虛擬地址所映射到的存儲在高速緩沖存儲器340中的紋理的壓縮版本的地址。在各實(shí)施方案中,表(或其部分)可以存儲在高速緩沖存儲器340中或其它地方。在一個實(shí)施方案中,表可以將虛擬地址映射到紋理的壓縮版本的另一個地址。虛擬地址所映射到的地址本身可以是或可不是虛擬地址。所利用的尋址方案的類型的許多選項(xiàng)是可能的并且是預(yù)期的。表可以存儲紋理的壓縮版本的每塊的偏移,其中,所述偏移給出從紋理的壓縮版本的開始到塊的位置。在各實(shí)施方案中,表可以促進(jìn)對一個或多個壓縮紋理中塊的隨機(jī)訪問。響應(yīng)于對塊的壓縮版本的請求,高速緩沖存儲器340的高速緩沖存儲器邏輯可以確定給定塊的地址。高速緩沖存儲器邏輯可以使用表來確定期望的塊以何種偏移存儲在高速緩沖存儲器的頁面或提取單元內(nèi)。著色器陣列320的多個著色器也可以使用表來確定紋理的被請求的塊的偏移。在各實(shí)施方案中,高速緩沖存儲器340可以利用具有關(guān)于多個紋理的映射信息的多個表。
[0048]在紋理數(shù)據(jù)已經(jīng)被處理之后,著色器陣列320可以將圖像數(shù)據(jù)傳送至渲染單元350。顯示單元350可以分配定義圖像幀的每個像素的獨(dú)特顏色屬性的特定數(shù)值。數(shù)值可以被傳遞至幀緩沖器360,在該幀緩沖器360處,數(shù)據(jù)可以被存儲以便在適當(dāng)?shù)臅r間使用,諸如當(dāng)它們在顯示裝置370上被渲染時。
[0049]關(guān)于隨后的操作,紋理消耗著色器321可以被配置成執(zhí)行解壓縮著色器的功能,并且解壓縮著色器322可以被配置成執(zhí)行紋理消耗著色器的功能。取決于當(dāng)前操作的要求,著色器陣列320的每個著色器處理器可以被配置成執(zhí)行各種功能。
[0050]在各實(shí)施方案中,可以利用負(fù)載平衡來將解壓縮任務(wù)分配至未充分使用的著色器。另外,一些空間可以被保留在多個計(jì)算單元中以允許解壓縮著色器在多個計(jì)算單元上開始工作。此外,多個解壓縮請求可以被裝入單指令多數(shù)據(jù)(SMD)向量。SMD向量可以促進(jìn)在一個矢量中的多個塊的解壓縮。在一個實(shí)施方案中,16個塊可以在一個矢量中被解壓縮,且每四個道(lane) —個塊。
[0051]在各實(shí)施方案中,圖形處理系統(tǒng)300可以使得紋理數(shù)據(jù)的即時程序生成成為可能。一個著色器可以生成即時紋理數(shù)據(jù),并且第二著色器可以利用生成的紋理數(shù)據(jù)用于渲染操作。解壓縮著色器可以訪問壓縮的數(shù)據(jù),并且可以利用另一個著色器來對諸如一個或多個表的附加數(shù)據(jù)解壓縮。可以使用各種壓縮技術(shù)對壓縮數(shù)據(jù)中的一些壓縮。在各實(shí)施方案中,解壓縮著色器可以從高速緩沖存儲器請求數(shù)據(jù),并且響應(yīng)于高速緩沖存儲器缺失,可以啟用另一個著色器來在程序上生成紋理數(shù)據(jù)。
[0052]現(xiàn)在轉(zhuǎn)向圖4A,示出數(shù)據(jù)高速緩沖存儲器的一個實(shí)施方案的框圖。高速緩沖存儲器410可以包含紋理420和430的部分,所述部分代表可以存儲在高速緩沖存儲器410中的紋理的任意數(shù)量的部分。紋理420和430可以是壓縮紋理,而存儲在高速緩沖存儲器410中的多個紋理可以是壓縮紋理和未壓縮紋理的混合。紋理420可以包括代表紋理420的任意數(shù)量塊的塊422和423。紋理420還可以包括表421,該表421可以將紋理420的虛擬地址空間映射到壓縮紋理420的地址空間。紋理430可以類似于紋理420被組織。在另一個實(shí)施方案中,表421可以獨(dú)立于紋理420被存儲。
[0053]當(dāng)紋理消耗著色器從高速緩沖存儲器410請求紋理的塊,并且該請求導(dǎo)致高速緩沖存儲器缺失時,高速緩沖存儲器410可以為被請求的塊分配高速緩沖存儲器線440。高速緩沖存儲器410可以將分配的高速緩沖存儲器線的地址傳送至解壓縮著色器。在解壓縮著色器已經(jīng)對對應(yīng)于被請求的塊的壓縮塊解壓縮之后,解壓縮著色器可以被配置成將解壓縮塊寫入到高速緩沖存儲器線440?;蛘?,解壓縮著色器可以將解壓縮塊寫入到高速緩沖存儲器410內(nèi)的各種位置。響應(yīng)于解壓縮著色器將解壓縮塊寫入到高速緩沖存儲器線440,紋理消耗著色器可以被配置成從高速緩沖存儲器410提取解壓縮塊。對應(yīng)的等待時間補(bǔ)償隊(duì)列可能需要被延伸以適應(yīng)起因于壓縮塊的即時解壓縮的更大的等待時間。
[0054]在該塊的解壓縮版本已經(jīng)被寫入到高速緩沖存儲器線440之后,高速緩沖存儲器410可以存儲該塊的壓縮版本和該塊的解壓縮版本。在各實(shí)施方案中,高速緩沖存儲器410可以執(zhí)行保留策略,響應(yīng)于確定兩個版本存儲在高速緩沖存儲器410中,該保留策略丟棄塊版本中的一個。在一個實(shí)施方案中,該塊的解壓縮版本可以在它已經(jīng)由紋理消耗著色器提取之后被丟棄。在另一個實(shí)施方案中,該塊的壓縮版本可以在該塊的解壓縮版本已經(jīng)被寫入到高速緩沖存儲器410之后被丟棄。在進(jìn)一步的實(shí)施方案中,該塊的壓縮版本和解壓縮版本可以被保持在高速緩沖存儲器410中持續(xù)延長的一段時間。
[0055]響應(yīng)于對紋理的塊的未壓縮版本的請求,高速緩沖存儲器410可以確定未壓縮版本未存儲在高速緩沖存儲器410中。在各實(shí)施方案中,響應(yīng)于這樣的確定,高速緩沖存儲器410可以自動地搜求該塊的壓縮版本。如果該塊的壓縮版本存儲在高速緩沖存儲器410中,則高速緩沖存儲器410可以告知著色器或其它處理單元,和/或高速緩沖存儲器410可以將該塊的壓縮版本傳送至著色器或其它處理單元。[0056]在一些實(shí)施方案中,響應(yīng)于未壓縮塊的請求上的高速緩沖存儲器缺失,可以開始獨(dú)立的軟件線程,并且該線程可以啟用解壓縮著色器。紋理消耗著色器可以將塊的虛擬地址傳送至解壓縮著色器。在各實(shí)施方案中,當(dāng)著色器完成解壓縮任務(wù)時,解壓縮著色器可以將(一個或多個)未壓縮塊傳送至高速緩沖存儲器。在其它實(shí)施方案中,當(dāng)解壓縮著色器完成解壓縮操作時,解壓縮著色器可以將著色器輸出傳送至紋理消耗著色器。
[0057]現(xiàn)在參照圖4B,示出塊映射表的一個實(shí)施方案的框圖。表421可以為(圖4A的)紋理420的多個塊存儲映射信息。在各實(shí)施方案中,表421可以以各種方式組織以具有除圖4B中所示的內(nèi)容之外的其它類型的信息。例如,在一個實(shí)施方案中,表421可以包括紋理420的每塊的DC系數(shù)值。
[0058]表421可以將紋理420的虛擬地址空間映射到(圖4A的)壓縮紋理420的物理地址空間。解壓縮著色器(未示出)可以從高速緩沖存儲器410提取或以其它方式接收紋理420的一個或多個塊,并且解壓縮著色器可以根據(jù)表421確定壓縮塊的位置和大小。壓縮塊的大小可以通過計(jì)算兩個相鄰的塊的起始物理地址之間的差來確定。在其它實(shí)施方案中,附加數(shù)據(jù)可以被提供以指示塊的大小和/或位置信息。此外,解壓縮著色器可以從表421獲得附加信息,諸如每塊的DC系數(shù)值。
[0059]在一些實(shí)施方案中,可以根據(jù)超級塊來組織紋理。超級塊可以是一組16個8x8塊,是32x32像素總共1024個像素的圖塊。紋理的索引表可以包括每個超級塊的表項(xiàng)目,并且每個表項(xiàng)目可以給出每個超級塊的起始地址。在一個實(shí)施方案中,該地址可以是紋理內(nèi)的超級塊的位置。在另一個實(shí)施方案中,該地址可以是從紋理的起點(diǎn)的偏移。每個項(xiàng)目也可以包括屬于超級塊的第一個8x8塊的4位索引。在一些實(shí)施方案中,超級塊可能未對準(zhǔn)高速緩沖存儲器的2千位(Kb)界限。每個項(xiàng)目也可以包括16位掩碼。16位掩碼可以包括指示該塊是否在下一個2Kb字中開始的每塊一個位。
[0060]在一些實(shí)施方案中,解壓縮著色器可以將8x8塊的虛擬地址轉(zhuǎn)換成32x32超級塊的虛擬地址以計(jì)算索引表的項(xiàng)目數(shù)量用于查閱目的。解壓縮著色器可以查閱索引表中對應(yīng)于超級塊的項(xiàng)目。索引表可以由著色器以與其它紋理類似的方式處理。索引表的項(xiàng)目可以被高速緩沖存儲和處理。
[0061]著色器可以從每個索引表項(xiàng)目獲得基地址,該基地址可以是虛擬地址?;刂房梢允菈嚎s的超級塊的第一提取單元。著色器也可以獲得包含需要被解壓縮的被請求的塊的提取單元的偏移?;趬K的地址,著色器也可以計(jì)算塊是被壓縮還是未被壓縮。某些地址范圍可以對應(yīng)于未壓縮塊的虛擬地址,并且其它地址范圍可以對應(yīng)于壓縮塊的物理地址。著色器也許能夠區(qū)別不同的地址范圍。
[0062]現(xiàn)在參照圖5,示出8x8塊的紋素的虛擬地址空間的一個實(shí)施方案的框圖。每個紋素可以被映射到虛擬地址空間570內(nèi)的唯一地址。對于8x8塊500的所有的64個紋素,紋素I可以被映射到地址501,紋素2可以被映射到地址502,以此類推。塊500可以是壓縮紋理內(nèi)的塊,并且虛擬地址空間570可以為壓縮紋理的塊500分配。除了塊500之外,紋理還可以包括多個塊。虛擬地址空間570也可以包括紋理中的多個塊的每個紋素的唯一地址。
[0063]為了圖示的目的,將假設(shè),未壓縮的紋素是32位值(4組8位值)。也可以以本文中所描述的方法和機(jī)制來利用未壓縮的紋素的其它大小。例如,可以以類似的方式處理具有24位值的未壓縮的紋素。在各實(shí)施方案中,紋理消耗著色器可以為各個紋素生成請求。首先,著色器可以計(jì)算紋素的虛擬地址。然后,對于對應(yīng)于紋素的虛擬地址,可查詢高速緩沖存儲器。
[0064]現(xiàn)在轉(zhuǎn)向圖6,示出壓縮的數(shù)據(jù)的一個實(shí)施方案的框圖。數(shù)據(jù)部605可以是壓縮的數(shù)據(jù)的提取單元,并且數(shù)據(jù)部605的大小可以基于未壓縮塊的大小。在一個實(shí)施方案中,提取單元可以是2Kb的大小。在其它實(shí)施方案中,提取單元可以是任意各種尺寸。多個壓縮塊可以被裝入提取單元中。在一個實(shí)施方案中,可以被裝入提取單元的最大數(shù)量的塊可以被假設(shè)為16。在其它實(shí)施方案中,其它數(shù)量的塊可以被裝入提取單元。對于一個類型的高速緩沖存儲器訪問方案,可以假設(shè),塊的數(shù)據(jù)不越過提取單元的界限。
[0065]塊可以是諸如JPEG的壓縮格式的最小的可解碼單元。對于JPEG,塊是8x8像素圖塊(具有64個像素)。當(dāng)紋理被壓縮時,并且由著色器請求的紋理的塊需要被解壓縮時,高速緩沖存儲器線可以在用于塊的高速緩沖存儲器中被分配。在一個實(shí)施方案中,高速緩沖存儲器線大小可以是2Kb以存儲整個未壓縮塊(32位*64=2Kb)。在其它實(shí)施方案中,高速緩沖存儲器線大小可以是任意各種尺寸。
[0066]如果提取單元包含未壓縮塊,則僅一個塊可以裝在提取單元中。對于包含壓縮塊的提取單元,提取單元也可以包括176位的標(biāo)題。提取單元可以假設(shè)為具有16個塊的容量。標(biāo)題可以包括16個11位的偏移值以指示壓縮塊在提取單元內(nèi)的位置。偏移定位塊的起始位位置。在其它實(shí)施方案中,在標(biāo)題中可能存在可變數(shù)量的偏移指示符。
[0067]如圖6中所示,數(shù)據(jù)部605可以包括標(biāo)題610和塊611-626。塊611-626可以是壓縮紋理的十六個不同的塊。標(biāo)題610可以包括偏移631-646。每個偏移可以是對應(yīng)于數(shù)據(jù)部605內(nèi)對應(yīng)塊的位置的11位偏移值。在其它實(shí)施方案中,可以利用偏移值的其它位大小。偏移631可以表示塊611的起始地址,偏移632可以表示塊612的起始地址,依此類推。在一些實(shí)施方案中,可能存在指示最后一個塊的最后一位的附加偏移,以減少從高速緩沖存儲器的不必要的提取。
[0068]在一些實(shí)施方案中,紋理的壓縮8x8塊可以被裝入提取單元并且越過提取單元界限。示出塊使用兩個提取單元的對應(yīng)信息可以存儲在索引表中,并且解壓縮著色器可以為越過提取單元界限的塊生成兩個提取指令(fetch)代替一個提取指令。
[0069]現(xiàn)在轉(zhuǎn)向圖7,示出用于對紋理的壓縮塊解壓縮的方法的一個實(shí)施方案。出于論述的目的,在該實(shí)施方案中的步驟以順序次序示出。應(yīng)注意的是,在下述方法的各實(shí)施方案中,所描述的元件中的一個或多個可以同時執(zhí)行、以與所示出的不同的次序執(zhí)行或可以完全省略。根據(jù)需要,也可以執(zhí)行其它附加元件。
[0070]方法700在塊705中開始,然后在塊710中,作為圖像的渲染操作的部分,多個著色器中的第一著色器可以確定對紋理的塊的需要。第一著色器可以是紋理消耗著色器。接著,第一著色器可以計(jì)算該塊的虛擬地址(塊715)。第一著色器可以具有紋理的未壓縮視圖,紋理的未壓縮視圖對應(yīng)于紋理的未壓縮版本,并且虛擬地址可以對應(yīng)于被請求的塊在未壓縮視圖內(nèi)的位置。在塊715之后,第一著色器可以從高速緩沖存儲器請求該塊并且通過請求傳送虛擬地址(塊720)。接著,高速緩沖存儲器可以確定該塊的未壓縮版本是否存儲在高速緩沖存儲器中(條件塊725)。如果該塊的未壓縮版本存儲在高速緩沖存儲器中,則第一著色器可以從高速緩沖存儲器接收該塊的未壓縮版本并且處理該塊(塊770)。[0071]如果該塊的未壓縮版本未存儲在高速緩沖存儲器中,則多個著色器中的第二著色器可以被啟用為解壓縮著色器(塊730)。用于解壓縮著色器的資源可以被預(yù)分配在一個或多個著色器處理器上以減少著色器開始等待時間和簡化資源管理。另外,被請求的塊的虛擬地址可以從第一著色器被傳遞到第二著色器。接著,可以為被請求的塊分配高速緩沖存儲器線(塊735)。然后,高速緩沖存儲器可以確定該塊的壓縮版本是否存儲在高速緩沖存儲器中(條件塊740)。在各實(shí)施方案中,高速緩沖存儲器可以響應(yīng)于第二著色器對該塊的壓縮版本的請求來做出這確定。在其它實(shí)施方案中,高速緩沖存儲器可以響應(yīng)于確定該塊的未壓縮版本未存儲在高速緩沖存儲器中來自動地做出這確定(條件塊725)。
[0072]如果該塊的壓縮版本存儲在高速緩沖存儲器中(條件塊740),則高速緩沖存儲器和/或第二著色器可以根據(jù)表確定該塊的壓縮版本的位置和大小(塊750)。如果該塊的壓縮版本未存儲在高速緩沖存儲器中(條件塊740),則該塊的壓縮版本可以(例如,從本地或系統(tǒng)存儲器)被提取并且存儲在高速緩沖存儲器中(塊745)。從系統(tǒng)存儲器提取該塊的壓縮版本可以使得提取整個壓縮紋理或紋理中的一些部分成為必需。高速緩沖存儲器可以被配置成利用表,該表將紋理的未壓縮版本的虛擬地址空間映射到紋理的壓縮版本的地址空間。高速緩沖存儲器和/或第二著色器可以根據(jù)表確定該塊的壓縮版本的位置和大小(塊750)。表也可以包含附加信息,諸如紋理的每塊的壓縮版本的DC系數(shù)的值。在塊750之后,該塊的壓縮版本可以從高速緩沖存儲器被傳送至第二著色器(塊755)。
[0073]在另一個實(shí)施方案中,如果該塊的壓縮版本不在高速緩沖存儲器中(條件塊740),則步驟745、750和755可以由替代步驟取代。在替代步驟中,該塊的壓縮版本可以從系統(tǒng)存儲器被提取并且直接提供給第二著色器。這些替代步驟與讓第二著色器從高速緩沖存儲器接收該塊的壓縮版本相比可能是更加有效的。在進(jìn)一步的實(shí)施方案中,該塊的壓縮版本可以從系統(tǒng)存儲器被提取并且直接提供給第二著色器,同時也被寫入到高速緩沖存儲器。
[0074]在第二著色器接收該塊的壓縮版本之后(塊755),第二著色器可以對該塊的壓縮版本解壓縮(塊760)。接著,第二著色器可以將該塊的解壓縮版本寫入到高速緩沖存儲器(塊765)。然后,作為當(dāng)前圖像的渲染操作的部分,第一著色器可以從高速緩沖存儲器接收該塊的解壓縮版本并且處理該塊(塊770)。在塊770之后,該方法可以在塊775中結(jié)束。對于來自多個紋理的多個塊,方法700可以重復(fù)。
[0075]雖然特征和元件在示例性實(shí)施方案中以特定的組合描述,但是每個特征和元件能夠在沒有示例性實(shí)施方案的其它特征和元件的情況下單獨(dú)地使用或在有或沒有其它特征和元件的情況下以各種組合使用。本發(fā)明可以在具有由機(jī)器、處理器和/或任意通用計(jì)算機(jī)執(zhí)行的機(jī)器可讀指令的非暫態(tài)計(jì)算機(jī)可讀存儲介質(zhì)中切實(shí)體現(xiàn)的計(jì)算機(jī)程序或固件中實(shí)施,以便與任意非易失性存儲器裝置一起使用或由任意非易失性存儲器裝置使用。計(jì)算機(jī)可讀存儲介質(zhì)可以包含可操作以實(shí)現(xiàn)該說明書中所描述的功能、方法和操作的程序指令。適當(dāng)?shù)奶幚砥靼ㄅe例來說通用處理器和專用處理器兩者。
[0076]通常,處理器將從只讀存儲器(ROM)、RAM和/或具有存儲的軟件或固件的存儲裝置接收指令和數(shù)據(jù)。適合于體現(xiàn)計(jì)算機(jī)程序指令和數(shù)據(jù)的存儲裝置包括所有形式的非易失性存儲器,所述存儲器舉例來說包括半導(dǎo)體存儲器裝置、只讀存儲器(ROM)、諸如內(nèi)置硬盤和可移動磁盤的磁性介質(zhì)、磁光介質(zhì)以及諸如⑶-ROM盤和數(shù)字通用盤(DVD)的光學(xué)介質(zhì)。[0077]上述實(shí)施方案可以使用諸如Verilog或VHDL的硬件描述語言(HDL)在軟件中設(shè)計(jì)。HDL設(shè)計(jì)可以模擬電子系統(tǒng)的行為,并且設(shè)計(jì)可以被綜合并且最終組裝到硬件裝置中。此外,HDL設(shè)計(jì)可以存儲在計(jì)算機(jī)產(chǎn)品中并且在硬件制造之前加載到計(jì)算機(jī)系統(tǒng)中。
[0078]可以由本發(fā)明或結(jié)合本發(fā)明使用的硬件部件、處理器或機(jī)器的類型包括專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、微處理器或任意集成電路。這樣的處理器可以通過使用已處理的硬件描述語言(HDL)指令(這樣的指令能夠存儲在計(jì)算機(jī)可讀介質(zhì)上)的結(jié)果來配置制造過程而制造。這樣的處理的結(jié)果可以是掩蔽作品,然后這些掩蔽作品在半導(dǎo)體制造過程中被用來制造實(shí)施本文中所描述的方法和機(jī)制的各方面的處理器。
[0079]軟件指令,諸如用來實(shí)施圖像渲染計(jì)算和著色器任務(wù)的那些軟件指令,可以存儲在計(jì)算機(jī)可讀存儲介質(zhì)上。計(jì)算機(jī)可讀存儲介質(zhì)可以包括用于以由機(jī)器(例如,計(jì)算機(jī))可讀的格式(例如,軟件、處理應(yīng)用)存儲信息的任意機(jī)制。計(jì)算機(jī)可讀存儲介質(zhì)可以包括但不限于磁性或光學(xué)介質(zhì)(例如、磁盤(固定的或可移動的)、磁帶、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW、或 Blu-Ray)、RAM(例如,同步動態(tài) RAM(SDRAM)、雙數(shù)據(jù)速率(DDR、DDR2、DDR3 等)SDRAM、低功率 DDR(LPDDR2 等)SDRAM、Rambus DRAM (RDRAM)、靜態(tài)RAM(SRAM))、ROM、經(jīng)諸如USB接口的外部接口可訪問的非易失性存儲器(例如,閃存存儲器)、微機(jī)電系統(tǒng)(MEMS)以及經(jīng)諸如網(wǎng)絡(luò)和/或無線鏈路的通信介質(zhì)可訪問的存儲介質(zhì)。
[0080]雖然已經(jīng)示出并且描述了方法的一些實(shí)施方案,但是對于本領(lǐng)域的那些普通技術(shù)人員來說明顯的是,可以對如所描述的方法做出多種改變、修改或更改。改變、修改或更改因此應(yīng)被視為在本文中所描述的方法和機(jī)制的范圍內(nèi)。還應(yīng)強(qiáng)調(diào),上述實(shí)施方案僅僅是實(shí)施方式的非限制性示例。
【權(quán)利要求】
1.一種設(shè)備,其包括: 第一著色器;以及 第二著色器 其中,所述第二著色器被配置成對可變速率壓縮紋理塊解壓縮以便由第一著色器使用。
2.如權(quán)利要求1所述的設(shè)備,其中,所述第二著色器被配置成響應(yīng)于所述第一著色器對對應(yīng)于所述可變速率壓縮紋理塊的紋理塊的請求對所述可變速率壓縮紋理塊解壓縮。
3.如權(quán)利要求2所述的設(shè)備,其中,所述第一著色器對對應(yīng)于所述可變速率壓縮紋理塊的所述紋理塊的所述請求是對用于所述可變速率壓縮紋理塊的未壓縮版本的存儲器的請求。
4.如權(quán)利要求3所述的設(shè)備,其中,所述第二著色器被配置成還響應(yīng)于確定所述可變速率壓縮紋理塊的所述未壓縮版本不在所述存儲器中而對所述可變速率壓縮紋理塊解壓縮。
5.如權(quán)利要求3所述的設(shè)備,其中,在對所述可變速率壓縮紋理塊解壓縮之前,所述第二著色器被配置成從所述存儲器接收所述可變速率壓縮紋理塊。
6.根據(jù)權(quán)利要求1所述的設(shè)備,其中,對所述可變速率壓縮紋理塊解壓縮由執(zhí)行解壓縮程序的第二著色器執(zhí)行。
7.根據(jù)權(quán)利要求 2所述的設(shè)備,其中,所述存儲器包括被配置成存儲從片外系統(tǒng)存儲器檢索的數(shù)據(jù)的片上存儲器。
8.如權(quán)利要求2所述的設(shè)備,其還包括將所述可變速率壓縮紋理塊的未壓縮版本的虛擬地址空間映射到所述可變速率壓縮紋理塊的地址空間的表。
9.如權(quán)利要求8所述的設(shè)備,其中,所述第一著色器還被配置成: 在從所述存儲器請求所述紋理塊之前,計(jì)算所述紋理塊的所述未壓縮版本在對應(yīng)紋理的未壓縮版本內(nèi)的虛擬地址;以及 將所述紋理塊的所述未壓縮版本的所述虛擬地址通過所述請求傳送至所述存儲器。
10.如權(quán)利要求7所述的設(shè)備,其中,響應(yīng)于確定所述紋理塊的所述未壓縮版本不在所述片上存儲器中,在用于所述紋理塊的所述未壓縮版本的所述片上存儲器中分配存儲。
11.如權(quán)利要求1所述的設(shè)備,其中,所述多個著色器包括被配置成在程序上生成紋理數(shù)據(jù)的著色器。
12.一種用于對紋理數(shù)據(jù)解壓縮的方法,所述方法包括: 第一著色器請求紋理塊;以及 第二著色器對可變速率壓縮紋理塊解壓縮以便由所述第一著色器使用。
13.如權(quán)利要求12所述的方法,其還包括所述第二著色器響應(yīng)于所述第一著色器從存儲器請求所述可變速率紋理塊的未壓縮版本而對所述可變速率壓縮紋理塊解壓縮。
14.如權(quán)利要求13所述的方法,其還包括所述第二著色器還響應(yīng)于確定所述可變速率壓縮紋理塊的所述未壓縮版本不在所述存儲器中而對所述可變速率壓縮紋理塊解壓縮。
15.如權(quán)利要求14所述的方法,其中,在對所述可變速率壓縮紋理塊解壓縮之前,所述方法包括所述第二著色器從所述存儲器接收所述可變速率壓縮紋理塊。
16.根據(jù)權(quán)利要求12所述的方法,其還包括由所述第二著色器使用解壓縮程序?qū)λ隹勺兯俾蕢嚎s紋理塊解壓縮。
17.根據(jù)權(quán)利要求13所述的方法,其中,所述存儲器包括被配置成存儲從片外系統(tǒng)存儲器檢索的數(shù)據(jù)的片上存儲器。
18.—種包括用以對紋理數(shù)據(jù)解壓縮的程序指令的計(jì)算機(jī)可讀存儲介質(zhì),其中,當(dāng)被執(zhí)行時,所述程序指令可操作以: 使得第一著色器能夠請求紋理塊;以及 使得第二著色器能夠?qū)勺兯俾蕢嚎s紋理塊解壓縮以便由所述第一著色器使用。
19.如權(quán)利要求18中所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,所述程序指令還可操作以使得所述第二著色器響應(yīng)于所述第一著色器從存儲器請求所述可變速率紋理塊的未壓縮版本而對所述可變速率壓縮紋理塊解壓縮。
20.如權(quán)利要求19中所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,所述程序指令還可操作以使得所述第二著色器還響應(yīng)于確定所述可變速率壓縮紋理塊的所述未壓縮版本不在所述存儲器中而對所述可變速率壓縮紋理塊解壓縮。
【文檔編號】G06T9/00GK103608848SQ201280029522
【公開日】2014年2月26日 申請日期:2012年6月14日 優(yōu)先權(quán)日:2011年6月17日
【發(fā)明者】康斯坦丁·尤里查, 約翰·W·布拉澤斯 申請人:超威半導(dǎo)體公司