圖形處理系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種圖形處理系統(tǒng)。基于區(qū)塊的圖形處理管道(1)包括光柵器(3)、渲染器(6)、區(qū)塊緩沖器(10)、寫出級(jí)(13)和可編程處理級(jí)(14)。區(qū)塊緩沖器(10)存儲(chǔ)用于延遲著色操作的多個(gè)渲染對(duì)象并且可編程處理級(jí)(14)可操作以在圖形程序指令的控制下從區(qū)塊緩沖器(10)中存儲(chǔ)的延遲著色操作的一組多個(gè)渲染對(duì)象中的兩個(gè)或更多個(gè)讀取數(shù)據(jù),使用讀取的數(shù)據(jù)執(zhí)行延遲著色處理操作,并且將處理操作的結(jié)果寫入到區(qū)塊緩沖器(10)中的輸出渲染對(duì)象或者寫入到外部存儲(chǔ)器。
【專利說明】圖形處理系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種圖形處理系統(tǒng),并且具體地,涉及一種基于區(qū)塊的圖形處理系統(tǒng)。
【背景技術(shù)】
[0002]如本領(lǐng)域中所公知的,通常通過首先將諸如將要顯示的幀的將要生成的輸出劃分為多個(gè)類似的基本分量(所謂的圖元)來允許更容易地執(zhí)行圖形處理操作。這些“圖元”通常是諸如三角形的簡單的多邊形的形式。
[0003]通常使用從要求圖形輸出的應(yīng)用(例如,游戲)接收的圖形繪圖指令(請(qǐng)求)利用用于圖形處理系統(tǒng)的應(yīng)用程序接口來生成圖形圖元。
[0004]每個(gè)圖元在該級(jí)通常由一組頂點(diǎn)來限定和表示。用于圖元的每個(gè)頂點(diǎn)具有與其關(guān)聯(lián)的表示頂點(diǎn)的一組數(shù)據(jù)(例如,位置、顏色、紋理和其它屬性數(shù)據(jù))。該數(shù)據(jù)然后例如在光柵化和渲染頂點(diǎn)(頂點(diǎn)相關(guān)的圖元)以便于生成圖形處理系統(tǒng)的想要的輸出時(shí)使用該數(shù)據(jù)。
[0005]一旦已經(jīng)生成和限定了圖元及其頂點(diǎn),則能夠由圖形處理系統(tǒng)來進(jìn)行處理,以便于例如顯示該幀。
[0006]該處理基本上涉及確定覆蓋將要處理的輸出區(qū)域的采樣點(diǎn)的陣列的哪些采樣點(diǎn)被圖元覆蓋,并且然后確定每個(gè)采樣點(diǎn)應(yīng)具有的表示該采樣點(diǎn)處的圖元的外觀(例如,其顏色等等方面)。這些處理被分別統(tǒng)稱為光柵化和渲染。
[0007]光柵化處理確定應(yīng)該圖元的采樣位置(即,將要用于表示輸出(例如將要顯示的場景)中的圖元的采樣點(diǎn)的(x,y)位置)。這通常使用圖元的頂點(diǎn)的位置來進(jìn)行。
[0008]渲染處理然后獲得表示采樣點(diǎn)處的圖元所需的數(shù)據(jù)(例如,紅色、綠色和藍(lán)色(RGB)顏色值以及“阿爾法”(透明度)值)(即,對(duì)每個(gè)采樣點(diǎn)進(jìn)行“著色”)。如本領(lǐng)域中公知的那樣,這能夠包括應(yīng)用紋理、混合采樣點(diǎn)數(shù)據(jù)值等等。
[0009](在圖形文獻(xiàn)中,術(shù)語“光柵化”有時(shí)用于表示針對(duì)采樣位置的圖元轉(zhuǎn)換和渲染。然而,這里的“光柵化”將用于表示將圖元數(shù)據(jù)轉(zhuǎn)換為僅采樣點(diǎn)地址。)
[0010]這些處理通常通過下述方式來執(zhí)行:測(cè)試一個(gè)采樣點(diǎn)的組或者多于一個(gè)采樣點(diǎn)的組并且然后對(duì)于發(fā)現(xiàn)包括有問題的(被測(cè)試的)采樣點(diǎn)內(nèi)(覆蓋)的采樣點(diǎn)的每組采樣點(diǎn),生成對(duì)其執(zhí)行圖形處理操作(例如,渲染)的通常被稱為“片段”的分立圖形實(shí)體。所覆蓋的采樣點(diǎn)因此在實(shí)際上被作為將用于在有問題的采樣點(diǎn)處渲染圖元的片段來處理?!捌巍笔卿秩咎幚?渲染管道)的圖形實(shí)體。被生成和處理的每個(gè)片段可以根據(jù)如何構(gòu)造圖形處理系統(tǒng)而例如表示單個(gè)采樣點(diǎn)或一組多個(gè)采樣點(diǎn)。
[0011](“片段”因此有效地(與其關(guān)聯(lián))為插值到圖元的給定輸出空間采樣點(diǎn)而獲得的一組圖元。其還可以包括對(duì)有問題的采樣點(diǎn)(片段位置)進(jìn)行著色所要求的圖元和其它狀態(tài)數(shù)據(jù)。每個(gè)圖形片段可以通常與輸出(例如,輸出幀)的“像素”)是相同大小和位置(這是由于,當(dāng)在最終顯示時(shí)像素是奇異點(diǎn),在圖形處理器對(duì)其進(jìn)行操作(渲染)的“片段”與顯示的像素之間可以存在一一對(duì)應(yīng))。然而,能夠是下述情況,在片段與顯示像素之間不存在一一對(duì)應(yīng)關(guān)系,例如,在該情況下,在顯示最終圖像之前對(duì)渲染圖像進(jìn)行諸如下采樣的特定形式的后處理。)
[0012](還可以是下述情況,當(dāng)例如給定位置的來自不同重疊圖元的多個(gè)片段可以彼此影響(例如,由于透明度和/或混合),最終像素輸出可以根據(jù)像素位置處的多個(gè)或片段)。
[0013](因此,在采樣點(diǎn)與顯示器的像素之間可以存在一一對(duì)應(yīng)關(guān)系,但是更常見的是,在采樣點(diǎn)與顯示像素之間沒有存在一一對(duì)應(yīng)關(guān)系,這是因?yàn)榭梢詫?duì)渲染的采樣值執(zhí)行下采樣以生成用于顯示最終圖像的輸出像素值。類似地,在給定位置處的例如來自不同交疊的圖元的多個(gè)采樣點(diǎn)值彼此影響(例如,由于透明度和/或混合)的情況下,最終的像素輸出也將依賴于該像素位置處的多個(gè)交疊的采樣值)。
[0014]如本領(lǐng)域中公知的,圖形處理系統(tǒng)和圖形處理器通常被提供為具有用于執(zhí)行生成想要的輸出圖形數(shù)據(jù)組(例如,其可以表示將要生成的幀的全部或一部分)所需要的圖形處理功能(例如,獲取輸入數(shù)據(jù)、幾何處理、頂點(diǎn)著色、光柵化、渲染等等)的多個(gè)處理級(jí)的圖形處理管道的形式。
[0015]圖形處理管道的處理級(jí)可以例如為固定功能單元(硬件)的形式,或者一些或全部功能單元可以是可編程的(借助于能夠被編程以執(zhí)行想要的操作的可編程電路來提供)。例如,圖形處理管道可以包括可編程頂點(diǎn)和/或片段著色器,以執(zhí)行想要的頂點(diǎn)和/或片段著色操作。
[0016]基于區(qū)塊的圖形處理管道也將包括一個(gè)或多個(gè)所謂的區(qū)塊緩沖器,其存儲(chǔ)管道的末端處的渲染片段數(shù)據(jù)直到完成了給定的區(qū)塊并且將其寫入到諸如幀緩沖器的外部存儲(chǔ)器中以便于使用。該本地的管道存儲(chǔ)器用于在數(shù)據(jù)被最終輸出到外部存儲(chǔ)器之前本地地保持片段數(shù)據(jù)。
[0017]區(qū)塊緩沖器中的數(shù)據(jù)通常存儲(chǔ)為采樣值的陣列,其中,不同組的采樣值對(duì)應(yīng)于輸出像素的陣列的各輸出像素并且與其關(guān)聯(lián)。例如每個(gè)像素位置可以存在一個(gè)采樣,但是更常見的是,對(duì)于每個(gè)像素存在多個(gè)(例如,4個(gè))采樣,例如,以多采樣方式生成渲染輸出的情況。區(qū)塊緩沖器可以存儲(chǔ)例如包含針對(duì)有問題的區(qū)塊的顏色值的顏色緩沖器和存儲(chǔ)有問題的區(qū)塊的深度值的深度緩沖器。
[0018]為了方便將來自區(qū)塊緩沖器的渲染圖形數(shù)據(jù)寫回到諸如幀緩沖器的外部存儲(chǔ)器,圖形處理管道將通常包括耦接到為此目的的區(qū)塊緩沖器管道存儲(chǔ)器的寫入電路。圖形處理管道也可以設(shè)置有固定功能下采樣電路,用于在需要時(shí)(例如為了反鋸齒目的而以超采樣或多采樣方式渲染將要顯示的幀的情況)寫入到外部存儲(chǔ)器之前對(duì)本地存儲(chǔ)的數(shù)據(jù)進(jìn)行下采樣。
[0019]當(dāng)執(zhí)行圖形處理以執(zhí)行所謂的“延遲著色”時(shí),對(duì)這樣的處理的需求變得更加強(qiáng)烈。當(dāng)進(jìn)行延遲著色時(shí),應(yīng)用程序執(zhí)行多個(gè)渲染通道,通常在第一渲染同打掃中使用多個(gè)渲染對(duì)象以輸出顏色、深度、表面法線以及可能的其它屬性以分離渲染對(duì)象。然后在第一渲染通道的輸出中讀取以進(jìn)行復(fù)雜的光計(jì)算和組成以在第二渲染通道中產(chǎn)生最終結(jié)果。這要求大量的帶寬來讀取和寫入所有渲染對(duì)象(由于應(yīng)用程序?qū)⑼ǔ@缭诘谝煌ǖ乐袑懭攵鄠€(gè)渲染對(duì)象,并且然后在第二通道中使用渲染對(duì)象作為紋理以生成最終結(jié)果)。
[0020]在低功率和便攜裝置中的圖形處理器中,將數(shù)據(jù)從圖形處理管道寫入到外部存儲(chǔ)器以及將輸出從外部存儲(chǔ)器讀取到圖形處理管道的本地存儲(chǔ)器的反向操作以進(jìn)行延遲著色的帶寬開銷會(huì)變成嚴(yán)重的問題。帶寬消耗能夠是熱和電力消耗的主要原因,并且因此,通常希望在嵌入式圖形處理系統(tǒng)中減少外部存儲(chǔ)器讀取和寫入的帶寬消耗。
[0021]已經(jīng)提出了各種技術(shù)來減少圖形處理系統(tǒng)中外部存儲(chǔ)器讀取和寫入的帶寬消耗。這些技術(shù)包括例如使用問題和幀緩沖器壓縮來減少必須寫入/讀取的數(shù)據(jù)量和/或消除不必要的外部存儲(chǔ)器(例如,幀存儲(chǔ)器)讀取和寫入操作。
[0022]對(duì)于上述已知技術(shù), 申請(qǐng)人:相信,仍然存在對(duì)用于在圖形處理管道中(特別地,在基于區(qū)塊的圖形處理管道中)執(zhí)行延遲著色的技術(shù)進(jìn)行改進(jìn)的可能性。
【發(fā)明內(nèi)容】
[0023]根據(jù)本發(fā)明的第一方面,提供了一種操作基于區(qū)塊的圖形處理管道的方法,該圖形處理管道包括:
[0024]多個(gè)處理級(jí),所述多個(gè)處理級(jí)至少包括光柵器,其對(duì)輸入圖元進(jìn)行光柵化以生成待處理的圖形片段,每個(gè)圖形片段具有與其關(guān)聯(lián)的一個(gè)或更多個(gè)采樣點(diǎn);以及渲染器,其對(duì)由光柵器生成的片段進(jìn)行處理以生成渲染片段數(shù)據(jù);
[0025]區(qū)塊緩沖器,其被構(gòu)造為在渲染片段數(shù)據(jù)被寫入到外部存儲(chǔ)器之前相對(duì)于圖形處理管道本地地存儲(chǔ)渲染片段數(shù)據(jù);
[0026]寫入級(jí),其被構(gòu)造為將區(qū)塊緩沖器中存儲(chǔ)的數(shù)據(jù)寫入到外部存儲(chǔ)器;以及
[0027]可編程處理級(jí),其可操作以響應(yīng)于一個(gè)或更多個(gè)圖形程序指令,讀取區(qū)塊緩沖器中存儲(chǔ)的數(shù)據(jù),使用讀取的數(shù)據(jù)執(zhí)行處理操作,并且將處理操作的結(jié)果寫入到區(qū)塊緩沖器或外部存儲(chǔ)器;
[0028]該方法包括:
[0029]渲染包括將在延遲著色操作中使用的數(shù)據(jù)的多個(gè)渲染對(duì)象并且將所述多個(gè)渲染對(duì)象作為獨(dú)特渲染對(duì)象存儲(chǔ)在區(qū)塊緩沖器中;
[0030]使用可編程處理級(jí)來從區(qū)塊緩沖器中所存儲(chǔ)的多個(gè)渲染對(duì)象中的兩個(gè)或更多個(gè)讀取數(shù)據(jù),使用讀取的數(shù)據(jù)執(zhí)行延遲著色處理操作,并且將處理操作的結(jié)果寫入到區(qū)塊緩沖器中的輸出渲染對(duì)象,或者寫入到外部存儲(chǔ)器。
[0031]根據(jù)本發(fā)明的第二方面,提供了一種基于區(qū)塊的圖形處理管道,其包括:
[0032]多個(gè)處理級(jí),所述多個(gè)處理級(jí)至少包括光柵器,其對(duì)輸入圖元進(jìn)行光柵化以生成待處理的圖形片段,每個(gè)圖形片段具有與其關(guān)聯(lián)的一個(gè)或更多個(gè)采樣點(diǎn);以及渲染器,其對(duì)由光柵器生成的片段進(jìn)行處理以生成渲染片段數(shù)據(jù);
[0033]區(qū)塊緩沖器,其被構(gòu)造為在渲染片段數(shù)據(jù)被寫入到外部存儲(chǔ)器之前相對(duì)于圖形處理管道本地地存儲(chǔ)渲染片段數(shù)據(jù);
[0034]寫入級(jí),其被構(gòu)造為將區(qū)塊緩沖器中存儲(chǔ)的數(shù)據(jù)寫入到外部存儲(chǔ)器;以及
[0035]可編程處理級(jí),其可操作以在圖形程序指令的控制下,從區(qū)塊緩沖器中存儲(chǔ)的用于延遲著色操作的一組多個(gè)著色對(duì)象中的兩個(gè)或更多個(gè)讀取數(shù)據(jù),使用讀取的數(shù)據(jù)執(zhí)行延遲著色處理操作,并且將處理操作的結(jié)果寫入到區(qū)塊緩沖器中的輸出渲染對(duì)象或外部存儲(chǔ)器;
[0036]本發(fā)明的圖形處理管道包括可編程處理級(jí),其能夠直接讀取和處理來自區(qū)塊緩沖器中存儲(chǔ)的多個(gè)渲染對(duì)象的數(shù)據(jù)。通過將多個(gè)渲染對(duì)象存儲(chǔ)在區(qū)塊緩沖器中,使用可編程處理級(jí)從區(qū)塊緩沖器直接讀取和處理這些緩沖器的內(nèi)容并且然后將從可編程處理級(jí)獲得的圖像寫入到例如區(qū)塊緩沖器中的另外的渲染對(duì)象,能夠節(jié)省從外部存儲(chǔ)器讀取多個(gè)渲染對(duì)象的整個(gè)讀取帶寬。
[0037]這使得能夠?qū)τ趨^(qū)塊緩沖器中存儲(chǔ)的片段數(shù)據(jù)進(jìn)行延遲著色操作而不需要例如外部存儲(chǔ)器(例如,幀存儲(chǔ)器)中的片段數(shù)據(jù)的存儲(chǔ)和接下來的再存儲(chǔ)。事實(shí)上,本發(fā)明能夠用于以零外部帶寬開銷執(zhí)行在芯片上進(jìn)行的這樣的操作,來替代寫入和讀取大的G緩沖器,從而使得能夠在嵌入式空間中應(yīng)用這些技術(shù)。這相應(yīng)地能夠使得系統(tǒng)性能增大并且功耗降低。
[0038]如本領(lǐng)域中已知的,圖形處理管道的光柵器將生成待渲染以生成用于想要的圖形輸出(例如,將要顯示的幀)的采樣點(diǎn)的渲染圖形數(shù)據(jù)的圖形片段。由光柵器生成的每個(gè)圖形片段具有與其關(guān)聯(lián)的一組圖形輸出的采樣點(diǎn)并且將用于生成針對(duì)與該片段關(guān)聯(lián)的一組采樣點(diǎn)中的一個(gè)或更多個(gè)采樣點(diǎn)的渲染圖形數(shù)據(jù)。
[0039]光柵器可以被構(gòu)造為以任何想要的適合的方式生成用于渲染的片段。如本領(lǐng)域中已知的,其將接收例如待光柵化的圖元,針對(duì)多組采樣點(diǎn)位置對(duì)這些圖元進(jìn)行測(cè)試,并且因此生成表示圖元的片段。
[0040]渲染器應(yīng)該對(duì)由光柵器生成的片段進(jìn)行處理以生成用于片段所表示的(覆蓋的)采樣點(diǎn)的渲染片段數(shù)據(jù),如本領(lǐng)域已知的那樣。這些渲染處理可以包括例如片段著色、混合、紋理映射等等。在優(yōu)選實(shí)施方式中,渲染器為可編程片段著色器的形式或者包括可編程片段著色器。
[0041]如本領(lǐng)域中已知的,區(qū)塊緩沖器將存儲(chǔ)有問題的區(qū)塊的采樣值的陣列。區(qū)塊緩沖器將存儲(chǔ)采樣位置的陣列的數(shù)據(jù)值,并且采樣位置的各組與渲染片段數(shù)據(jù)所涉及的輸出數(shù)據(jù)陣列的各像素對(duì)應(yīng)并關(guān)聯(lián)。
[0042]這些采樣值通常并且在優(yōu)選實(shí)施方式中被分組為均與有問題的區(qū)塊中的各(例如,顯示)像素關(guān)聯(lián)的多組采樣值(例如,多組2X2采樣值)。采樣值可以例如包括顏色值(顏色緩沖器)、深度值(深度緩沖器)等等。
[0043]區(qū)塊緩沖器被構(gòu)造為能夠(并且可被構(gòu)造為)同時(shí)存儲(chǔ)多個(gè)渲染對(duì)象。這能夠根據(jù)需要來實(shí)現(xiàn)。例如,區(qū)塊緩沖器的尺寸可以調(diào)整為容納多個(gè)顏色緩沖器(能夠均用于存儲(chǔ)渲染對(duì)象)。
[0044]如本領(lǐng)域中公知的,寫入單元用于將區(qū)塊緩沖器中的數(shù)據(jù)(一旦區(qū)塊緩沖器中的數(shù)據(jù)完成)寫入到外部(主)存儲(chǔ)器(例如,幀緩沖器)。如本領(lǐng)域中公知的,這可以包括以固定或可變的方式將區(qū)塊緩沖器中的采樣值下采樣(平均)到將寫入到主存儲(chǔ)器(例如,幀緩沖器)的最終輸出(像素)值和/或其它輸出(根據(jù)需要)。
[0045]對(duì)區(qū)塊緩沖器中的數(shù)據(jù)進(jìn)行處理的可編程處理級(jí)可以包括諸如可編程處理電路的任何適合的可編程硬件元件。該可編程處理級(jí)可以作為單獨(dú)的電路元件提供給諸如片段著色器的處理管道的其它可編程級(jí)。然而,其也可以至少部分地由共享的可編程圖形處理電路形成。在優(yōu)選實(shí)施方式中,渲染器和可編程處理級(jí)共享可編程處理電路并且優(yōu)選地包括相同的物理電路塊(被不同地編程以用作片段著色器(渲染器)和可編程處理級(jí))。
[0046]可編程處理級(jí)響應(yīng)于并且在圖形程序指令的控制下操作。因此,可編程處理級(jí)優(yōu)選地可操作以響應(yīng)于并且在圖形程序指令的控制下從用于有問題的區(qū)塊的所存儲(chǔ)的輸入數(shù)據(jù)只渲染對(duì)象中的至少兩個(gè)(優(yōu)選地全部)讀取數(shù)據(jù)值,對(duì)于這些數(shù)據(jù)值執(zhí)行處理操作,并且然后將輸出結(jié)果寫入到區(qū)塊緩沖器中的另外的渲染對(duì)象或者外部存儲(chǔ)器。
[0047]類似地,在優(yōu)選實(shí)施方式中,本發(fā)明的方法包括向可編程處理級(jí)下達(dá)圖形程序指令以使得可編程處理級(jí),對(duì)于其數(shù)據(jù)存儲(chǔ)在區(qū)塊緩沖器中的多個(gè)渲染對(duì)象,對(duì)于每個(gè)渲染對(duì)象讀取區(qū)塊緩沖器中存儲(chǔ)的數(shù)據(jù),使用讀取的數(shù)據(jù)執(zhí)行延遲著色處理操作并且將處理操作的結(jié)果寫入到區(qū)塊緩沖器中或者寫入到外部存儲(chǔ)器;并且可編程處理級(jí)響應(yīng)于圖形程序指令,對(duì)于其數(shù)據(jù)存儲(chǔ)在區(qū)塊緩沖器中的各渲染對(duì)象,對(duì)于每個(gè)渲染對(duì)象讀取區(qū)塊緩沖器中存儲(chǔ)的數(shù)據(jù),使用讀取的數(shù)據(jù)執(zhí)行延遲著色處理操作,并且將處理操作的結(jié)果寫入到區(qū)塊緩沖器中或者寫入到外部存儲(chǔ)器。
[0048]優(yōu)選地在輸出值被寫入到幀緩沖存儲(chǔ)器之前,通過使用可編程圖形處理級(jí),執(zhí)行一個(gè)或更多個(gè)圖形處理線程來優(yōu)選地實(shí)現(xiàn)可編程處理級(jí)的延遲著色處理操作。因此,在圖形處理管道內(nèi)生成并且存儲(chǔ)在區(qū)塊緩沖器內(nèi)的片段數(shù)據(jù)值由可編程處理級(jí)進(jìn)行進(jìn)一步的處理以使用由對(duì)于區(qū)塊緩沖器內(nèi)的數(shù)據(jù)值進(jìn)行操作的可編程處理級(jí)執(zhí)行的圖形處理線程提供輸出結(jié)果,而沒有要求寫入到任何外部存儲(chǔ)器。
[0049]因此,可編程處理級(jí)優(yōu)選地包括執(zhí)行各圖形處理線程(在圖形程序指令的控制下)的可編程圖形處理電路。每個(gè)線程優(yōu)選地處理區(qū)塊緩沖器內(nèi)的各像素(像素位置)。對(duì)于給定的區(qū)塊,可以根據(jù)需要處理像素位置中的一些或全部。
[0050]從區(qū)塊緩沖器讀取值的可編程處理級(jí)優(yōu)選地以與諸如片段著色器的處理管道的其它可編程級(jí)類似的方式操作,但是能夠讀取并且優(yōu)選地寫入到區(qū)塊緩沖器(以直接的方式)。
[0051]可編程處理電路可以讀取與正在處理的區(qū)塊的每個(gè)渲染對(duì)象中的同一像素位置關(guān)聯(lián)的采樣值。這可以在例如延遲著色操作是延遲光照操作的情況下是適合的。
[0052]替選地或額外地,可編程處理級(jí)可以讀取與每個(gè)渲染對(duì)象中的不同像素關(guān)聯(lián)的采樣值(即,高效地可以構(gòu)造為能夠使用針對(duì)區(qū)塊緩沖器中存儲(chǔ)的多個(gè)渲染對(duì)象的隨機(jī)訪問)。這在正在執(zhí)行更復(fù)雜的延遲著色操作的情況下可以是適合的。
[0053]因此,在優(yōu)選實(shí)施方式中,可編程處理級(jí)能夠從區(qū)塊緩沖器讀取值,以對(duì)于存儲(chǔ)在區(qū)塊緩沖器中的數(shù)據(jù)所表示的各像素位置,對(duì)于沒有與有問題的像素位置關(guān)聯(lián)的一個(gè)或更多個(gè)采樣位置讀取區(qū)塊緩沖器中存儲(chǔ)的數(shù)據(jù),并且使用讀取的采樣位置數(shù)據(jù)執(zhí)行處理操作(在適合的圖形程序指令的控制下)。這意味著當(dāng)執(zhí)行針對(duì)給定像素位置的處理操作時(shí)(當(dāng)執(zhí)行針對(duì)給定像素位置的線程時(shí))的可編程處理級(jí)沒有被約束為僅讀取(使用)與該像素位置關(guān)聯(lián)的渲染對(duì)象中的采樣值,而是能夠讀取(和使用)與其它像素位置關(guān)聯(lián)的采樣值。換言之,可編程處理級(jí)以“隨機(jī)訪問”的方式高效地訪問區(qū)塊緩沖器,而不是例如僅對(duì)于當(dāng)前像素的數(shù)據(jù)進(jìn)行非常受限的訪問。
[0054]因此,當(dāng)執(zhí)行圖形處理線程以生成針對(duì)給定像素位置的結(jié)果時(shí),可編程處理級(jí)優(yōu)選地讀取和使用至少一個(gè)存儲(chǔ)在與不同像素(像素位置)關(guān)聯(lián)的每個(gè)渲染對(duì)象中的采樣值。在優(yōu)選實(shí)施方式中,讀取并使用來自多個(gè)不同像素(像素位置)的采樣值。
[0055]可編程處理級(jí)能夠?qū)τ诟魈幚聿僮鲝母麂秩緦?duì)象讀取單個(gè)采樣值,或者能夠從每個(gè)輸入數(shù)據(jù)渲染對(duì)象讀取多個(gè)采樣值作為其處理操作的輸入(這些可以都針對(duì)同一像素位置,但是優(yōu)選地針對(duì)多個(gè)不同像素位置)。因此,可編程處理級(jí)能夠優(yōu)選地讀取與一個(gè)渲染對(duì)象的多個(gè)像素關(guān)聯(lián)的采樣值,以及讀取與多個(gè)渲染對(duì)象的像素關(guān)聯(lián)的采樣值。由可編程處理級(jí)執(zhí)行的處理操作可以生成單個(gè)或多個(gè)輸出值。
[0056]可編程處理級(jí)能夠?qū)⑵涮幚聿僮鞯慕Y(jié)果寫回到區(qū)塊緩沖器和/或外部存儲(chǔ)器。在優(yōu)選實(shí)施方式中,在可編程處理級(jí)能夠?qū)⑵涮幚淼慕Y(jié)果直接寫入到外部存儲(chǔ)器的情況下,其能夠使用從可編程處理級(jí)到存儲(chǔ)器的通用加載/存儲(chǔ)來進(jìn)行。
[0057]在特別優(yōu)選的實(shí)施方式中,可編程處理級(jí)將其對(duì)于區(qū)塊緩沖器中的數(shù)據(jù)值的延遲著色操作的結(jié)果寫入到已經(jīng)分配用于接收和存儲(chǔ)延遲著色操作的區(qū)塊緩沖器中的另外的渲染對(duì)象。這另外的渲染對(duì)象然后優(yōu)選地接下來寫入到外部存儲(chǔ)器,但是可以根據(jù)需要由可編程處理級(jí)讀回以進(jìn)行進(jìn)一步的處理操作。該獲得的渲染對(duì)象能夠通過觸發(fā)從區(qū)塊緩沖器寫出的固定功能來寫出到外部存儲(chǔ)器。
[0058]在結(jié)果被寫回到區(qū)塊緩沖器的情況下,可編程處理級(jí)能夠優(yōu)選地將結(jié)果寫入到區(qū)塊緩沖器中輸出渲染對(duì)象中多于一個(gè)的采樣和/或像素位置,并且優(yōu)選地寫入到輸出渲染對(duì)象中的各和/或一個(gè)或更多個(gè)不同像素位置(在適合的圖形程序指令的控制下)。因此,可編程處理級(jí)能夠優(yōu)選地將結(jié)果寫入到渲染對(duì)象中的任何位置(并且不僅是當(dāng)前位置(像素位置)或讀取數(shù)據(jù)的位置(像素位置))。還可以將結(jié)果根據(jù)需要寫入到區(qū)塊緩沖器中多于一個(gè)的“輸出”渲染對(duì)象。因此,在優(yōu)選實(shí)施方式中,可編程處理級(jí)支持多個(gè)渲染對(duì)象輸入和多個(gè)渲染對(duì)象輸出中的至少一個(gè),并且優(yōu)選地支持這兩者。
[0059]因此,可編程處理級(jí)優(yōu)選地被構(gòu)造為能夠?qū)τ趨^(qū)塊緩沖器中的每個(gè)像素和采樣具有完全的讀取訪問(沒有生成對(duì)于外部存儲(chǔ)器的帶寬流量)。還優(yōu)選的是因此能夠具有對(duì)于區(qū)塊緩沖器中的像素和采樣具有完全的寫入訪問而沒有產(chǎn)生對(duì)于外部存儲(chǔ)器的帶寬流量。
[0060]類似地,在優(yōu)選實(shí)施方式中,可編程處理級(jí)可操作以響應(yīng)于圖形程序指令,從有問題的區(qū)塊的存儲(chǔ)的渲染對(duì)象內(nèi)的多個(gè)不同像素讀取采樣值作為對(duì)于其處理的輸入和/或?qū)⑵漭敵鼋Y(jié)果寫入到與區(qū)塊緩沖器中輸出渲染對(duì)象中多個(gè)不同像素關(guān)聯(lián)的采樣值。
[0061]可編程處理級(jí)優(yōu)選地從已經(jīng)為延遲著色操作生成的多個(gè)輸入數(shù)據(jù)渲染對(duì)象中的全部讀取數(shù)據(jù)值作為其處理操作的輸入值,但是也能夠使用來自輸入數(shù)據(jù)渲染對(duì)象中的一些而不是全部的輸入值。
[0062]在優(yōu)選實(shí)施方式中,可操作以從區(qū)塊緩沖器讀取值的可編程處理級(jí)被構(gòu)造為還能夠從外部存儲(chǔ)器讀取值(并且具有對(duì)于外部存儲(chǔ)器的完全隨機(jī)訪問)。這可以例如通過向可編程處理級(jí)提供適合的程序指令來實(shí)現(xiàn)。
[0063]在優(yōu)選實(shí)施方式中,能夠防止區(qū)塊緩沖器的特定區(qū)塊和/或渲染對(duì)象的固定功能寫出。這可以在下述情況下是有用的,例如區(qū)塊和/或渲染對(duì)象中存儲(chǔ)的數(shù)據(jù)實(shí)際不需要位于圖形處理管道外部或者數(shù)據(jù)可以借助于其它方式(例如,使用外部存儲(chǔ)器訪問進(jìn)行寫出的可編程處理級(jí)的其它手段)來寫出。能夠以靜態(tài)(即,預(yù)先確定禁止寫出)的方式來執(zhí)行區(qū)塊和/或渲染對(duì)象的固定功能寫出的防止,或者能夠以動(dòng)態(tài)的方式(在使用中)防止。類似地,區(qū)塊和/或渲染對(duì)象的固定功能寫出能夠例如公共地在所有區(qū)塊上防止,或者對(duì)于每個(gè)區(qū)塊動(dòng)態(tài)地進(jìn)行選擇。
[0064]在優(yōu)選實(shí)施方式中,可編程處理級(jí)能夠操作以防止區(qū)塊緩沖器的特定區(qū)塊和/或渲染對(duì)象的固定功能寫出。這優(yōu)選地響應(yīng)于針對(duì)可編程處理級(jí)的特定圖形程序指令。這將然后允許應(yīng)用編程器例如可選地和動(dòng)態(tài)地對(duì)于每個(gè)區(qū)塊防止區(qū)塊緩沖器的特定區(qū)塊和/或渲染對(duì)象的固定功能寫出。
[0065]可編程處理級(jí)的操作優(yōu)選地通過對(duì)其將要執(zhí)行處理操作的區(qū)塊的區(qū)塊列表中包括適合的命令來觸發(fā)。響應(yīng)于該命令,圖形處理管道優(yōu)選地首先等待直到進(jìn)行的所有片段處理操作(片段著色器)被托付給區(qū)塊緩沖器(即,直到區(qū)塊的所有輸入數(shù)據(jù)渲染對(duì)象的片段的渲染已經(jīng)完成-這確保了區(qū)塊緩沖器中的數(shù)據(jù)在開始延遲著色區(qū)塊緩沖數(shù)據(jù)處理操作之前完成)??删幊烫幚砑?jí)然后對(duì)于區(qū)塊緩沖器中的渲染對(duì)象的值執(zhí)行延遲著色處理操作。這優(yōu)選地通過大量生成給定數(shù)目的線程并且利用輸入向量將其區(qū)分(輸入向量能夠例如表示區(qū)塊(渲染對(duì)象)的線程將要工作的區(qū)域)來進(jìn)行。然后,一旦所有區(qū)塊緩沖渲染對(duì)象數(shù)據(jù)處理線程已經(jīng)完成,則能夠正常地恢復(fù)“正?!变秩?。
[0066]在優(yōu)選實(shí)施方式中,編程器還能夠在管道上信令可編程處理級(jí)進(jìn)行的區(qū)塊緩沖器中的值的處理已經(jīng)完成,使得然后能夠執(zhí)行進(jìn)一步的渲染操作。
[0067]在優(yōu)選實(shí)施方式中,使用API (應(yīng)用程序接口 ;應(yīng)用能夠使用該特征所通過的接口)機(jī)制來觸發(fā)和控制可編程處理級(jí)的操作。例如,應(yīng)用API調(diào)用和命令能夠被配置為觸發(fā)各自的區(qū)塊緩沖數(shù)據(jù)處理操作,并且例如對(duì)于有問題的區(qū)塊將適合的命令添加到區(qū)塊列表。
[0068]例如,“開始區(qū)塊處理”命令能夠響應(yīng)于涉及區(qū)塊緩沖數(shù)據(jù)處理操作(并且在優(yōu)選實(shí)施方式中,這是進(jìn)行的操作)的特定API調(diào)用添加到影響的區(qū)塊的區(qū)塊(命令)列表。該API調(diào)用優(yōu)選地還指定區(qū)塊緩沖數(shù)據(jù)處理操作將要操作的畫面的區(qū)域。
[0069]延遲著色操作能夠是任何適合的想要的延遲著色操作。
[0070]包含用于延遲著色操作的數(shù)據(jù)的多個(gè)輸入數(shù)據(jù)渲染對(duì)象的渲染能夠根據(jù)需要觸發(fā)和執(zhí)行,例如并且優(yōu)選地通過對(duì)于有問題的圖形處理管道以正常的方式觸發(fā)適合的渲染操作。如本領(lǐng)域中公知的,針對(duì)延遲著色操作的輸入數(shù)據(jù)渲染對(duì)象可以包括顏色數(shù)據(jù)、深度數(shù)據(jù)、表面法線、其它屬性等等。
[0071]用于多個(gè)渲染對(duì)象的區(qū)塊可以以任何適合的想要的方式存儲(chǔ)在區(qū)塊緩沖器中。例如,可以在對(duì)于各渲染對(duì)象在旁邊設(shè)置的區(qū)塊緩沖器中存在固定分配。
[0072]—旦給定組的輸入數(shù)據(jù)渲染對(duì)象已經(jīng)存儲(chǔ)在區(qū)塊緩沖器中,可編程處理級(jí)然后使用該數(shù)據(jù)來執(zhí)行延遲著色操作。該操作優(yōu)選地通過在針對(duì)有問題的區(qū)塊的區(qū)塊列表中包括適合的命令來觸發(fā),如上所述??删幊烫幚砑?jí)將然后從多個(gè)渲染對(duì)象中的一些或全部讀取數(shù)據(jù),對(duì)該數(shù)據(jù)進(jìn)行處理并且將結(jié)果寫入到區(qū)塊緩沖器中的另外的渲染對(duì)象或直接寫入到外部存儲(chǔ)器。
[0073]如本領(lǐng)域技術(shù)人員所了解的,該處理將對(duì)于將要生成的整個(gè)渲染輸出(例如,幀)的每個(gè)區(qū)塊重復(fù),直到最終的輸出(例如,幀)已經(jīng)完成(并且寫入到外部存儲(chǔ)器)。
[0074]在特別優(yōu)選實(shí)施方式中,本發(fā)明的方法進(jìn)一步包括防止(并且本發(fā)明的管道被構(gòu)造為防止)區(qū)塊緩沖器的初始輸入數(shù)據(jù)渲染對(duì)象的寫出,從而只有最終輸出渲染對(duì)象在數(shù)據(jù)被從區(qū)塊緩沖器寫出到外部存儲(chǔ)器時(shí)從區(qū)塊緩沖器寫出(即,被布置為只有最終(輸出結(jié)果)渲染對(duì)象被寫入到外部存儲(chǔ)器)。這也節(jié)省了用于那些渲染對(duì)象的寫入帶寬以及外部存儲(chǔ)器中那些渲染對(duì)象的存儲(chǔ)器的內(nèi)存占用。這將允許以特定的帶寬高效方式執(zhí)行延遲著色和光照,這是因?yàn)槠淠軌蛟试S整個(gè)延遲著色處理以逐個(gè)區(qū)塊的方式在管道上進(jìn)行并且具有零外部帶寬開銷。
[0075]在該情況下,如上所述,能夠以靜態(tài)的方式執(zhí)行渲染對(duì)象的固定功能寫出(即,預(yù)定禁止寫出),或者能夠以動(dòng)態(tài)的方式(在使用中)防止。
[0076]在特別優(yōu)選實(shí)施方式中,可編程處理級(jí)操作以禁止并且防止渲染對(duì)象的輸入數(shù)據(jù)組到外部存儲(chǔ)器的固定功能寫出(例如,并且優(yōu)選地,以上述方式)。
[0077]圖形處理管道還可以包含圖形處理管道可以包含的任何其它適合且想要的處理級(jí),例如,早期深度(或早期深度和模板)測(cè)試器、后期深度(或深度和模板)測(cè)試器、混合
--寸寸ο
[0078]本發(fā)明能夠用于圖形處理管道可以用于生成例如用于顯示的幀、渲染至紋理輸出等等的所有形式的輸出。
[0079]在特別優(yōu)選的實(shí)施方式中,本發(fā)明的各種功能在單個(gè)圖形處理平臺(tái)上執(zhí)行,其生成并輸出例如寫入到用于顯示裝置的幀緩沖器的渲染片段數(shù)據(jù)。
[0080]本發(fā)明能夠在任何適合的系統(tǒng)中實(shí)施,例如,適當(dāng)?shù)嘏渲玫奈⑻幚砥飨到y(tǒng)。在優(yōu)選實(shí)施方式中,本發(fā)明在計(jì)算機(jī)和/或微處理器系統(tǒng)中。
[0081]本發(fā)明的各種功能能夠以任何想要的適合的方式執(zhí)行。例如,本發(fā)明的功能能夠根據(jù)需要以硬件或軟件來實(shí)施。因此,例如,除非另有所述,否則,本發(fā)明的各種功能元件和“裝置”可以包括適合的處理器、控制器、功能單元、電路、處理邏輯、微處理器布置等等,其可操作來執(zhí)行各種功能等等,例如適當(dāng)?shù)膶S糜布?或能夠被編程來以想要的方式操作的可編程硬件元件。
[0082]這里還應(yīng)注意的是,如本領(lǐng)域技術(shù)人員所了解的,本發(fā)明的各種功能等等可以在給定處理器上復(fù)用和/或并行地執(zhí)行。同樣地,各種處理級(jí)可以根據(jù)需要共享處理電路等坐寸ο
[0083]執(zhí)行上述特定功能所需的任何硬件,圖形處理管道能夠包括圖形處理管道包括的通常功能單元等等中的任意一個(gè)或更多個(gè)或全部。
[0084]本領(lǐng)域技術(shù)人員還將了解的是,本發(fā)明的上述方面和實(shí)施方式中的全部能夠并且優(yōu)選地適當(dāng)?shù)剡M(jìn)行這里描述的優(yōu)選的可選的特征中的任意一個(gè)或更多個(gè)或全部。
[0085]根據(jù)本發(fā)明的方法可以至少部分地使用軟件(例如,計(jì)算機(jī)程序)來實(shí)施。因此將看到的是,當(dāng)從進(jìn)一步的方面看時(shí),本發(fā)明提供了在安裝在數(shù)據(jù)處理裝置上時(shí)專用于執(zhí)行這里描述的方法的計(jì)算機(jī)軟件、包括用于在程序元素運(yùn)行在數(shù)據(jù)處理裝置上時(shí)執(zhí)行這里描述的方法的計(jì)算機(jī)軟件代碼部分的計(jì)算機(jī)程序元素以及包括用于在程序運(yùn)行在數(shù)據(jù)處理系統(tǒng)上時(shí)執(zhí)行這里描述的方法的所有步驟的代碼裝置的計(jì)算機(jī)程序。數(shù)據(jù)處理器可以是微處理器系統(tǒng)、可編程FPGA(場可編程門陣列)等等。
[0086]本發(fā)明還擴(kuò)展到計(jì)算機(jī)軟件載體,其包括當(dāng)用于操作圖形處理器、渲染器或包括數(shù)據(jù)處理裝置的微處理器系統(tǒng)時(shí)與所述數(shù)據(jù)處理裝置結(jié)合地使得所述處理器、渲染器或系統(tǒng)執(zhí)行本發(fā)明的方法的步驟的軟件。這樣的計(jì)算機(jī)軟件載體能夠是諸如ROM芯片、CD ROM、RAM、閃存或盤的物理存儲(chǔ)介質(zhì),或者能夠是諸如通過電線的電信號(hào)、例如針對(duì)衛(wèi)星等等的無線電信號(hào)或光學(xué)信號(hào)。
[0087]進(jìn)一步了解的是,不是本發(fā)明的方法的所有步驟都需要由計(jì)算機(jī)軟件來執(zhí)行,并且因此根據(jù)更廣泛的方面,本發(fā)明提供了計(jì)算機(jī)軟件和安裝在計(jì)算機(jī)軟件載體上的這樣的軟件,用于執(zhí)行這里闡述的方法的步驟中的至少一個(gè)。
[0088]本發(fā)明可以因此適合地實(shí)施為計(jì)算機(jī)程序產(chǎn)品以與計(jì)算機(jī)系統(tǒng)一起使用。這樣的實(shí)施方式可以包括固定在有形的非瞬時(shí)性的介質(zhì)(例如,計(jì)算機(jī)可讀介質(zhì)(例如,磁盤、⑶-ROM、ROM、RAM、閃存或硬盤))上的一系列計(jì)算機(jī)可讀指令。還能夠包括可經(jīng)由調(diào)制解調(diào)器或其它接口裝置經(jīng)由有形介質(zhì)(包括但不限于光學(xué)或模擬通信線路)或者無形地使用無線技術(shù)(包括但不限于微波、紅外或其它傳輸技術(shù))發(fā)送到計(jì)算機(jī)系統(tǒng)的一系列計(jì)算機(jī)可讀指令。該一系列計(jì)算機(jī)可讀指令實(shí)施這里描述的功能的全部或一部分。
[0089]本領(lǐng)域技術(shù)人員將了解的是,這樣的計(jì)算機(jī)可讀指令能夠以多種編程語言來編寫以與很多計(jì)算機(jī)架構(gòu)或操作系統(tǒng)一起使用。此外,這樣的指令可以使用任何存儲(chǔ)技術(shù)(當(dāng)前或?qū)淼?,包括但不限于半?dǎo)體、磁性或光學(xué))來存儲(chǔ),或者使用任何通信技術(shù)(當(dāng)前或?qū)淼?,包括但不限于光學(xué)、紅外或微波)來發(fā)送。可想到的是,這樣的計(jì)算機(jī)程序產(chǎn)品可以作為具有隨附的打印或電子文檔的可移除介質(zhì)(例如,拆封軟件)來分發(fā),利用計(jì)算機(jī)系統(tǒng)例如預(yù)先加載在系統(tǒng)ROM或固定盤上,或者在網(wǎng)絡(luò)(例如,因特網(wǎng)或萬維網(wǎng))上從服務(wù)器或電子公告板分發(fā)。
【專利附圖】
【附圖說明】
[0090]現(xiàn)在將參考附圖借助于示例來描述本發(fā)明的多個(gè)優(yōu)選實(shí)施方式,其中:
[0091]圖1示意性地示出了能夠以本發(fā)明的方式操作的圖形處理管道;以及
[0092]圖2和圖3示意性地示出了圖1的圖形處理管道的操作的優(yōu)選實(shí)施方式。
【具體實(shí)施方式】
[0093]在附圖中,在適當(dāng)?shù)那闆r下,使用相同的附圖標(biāo)記用于相同的組件。
[0094]現(xiàn)在將在用于顯示的計(jì)算機(jī)圖形的處理的背景下描述本發(fā)明的優(yōu)選實(shí)施方式。
[0095]如本領(lǐng)域中了解的,如上所述,當(dāng)將要顯示計(jì)算機(jī)圖形圖像時(shí),通常首先定義為一系列圖元(多邊形),其圖元然后被劃分(光柵化)為用于圖形渲染的圖形片段。在正常圖形渲染操作期間,渲染器將修改(例如)與每個(gè)片段關(guān)聯(lián)的顏色(紅色、綠色和藍(lán)色,RGB)和透明度(阿爾法,α )數(shù)據(jù),從而能夠正確地顯示片段。一旦片段被完全地經(jīng)過了渲染器,則其關(guān)聯(lián)數(shù)據(jù)值被存儲(chǔ)在存儲(chǔ)器中,以便于輸出用于顯示。
[0096]圖1示意性地示出了可以根據(jù)本發(fā)明操作的圖形處理管道I。圖1中所示的圖形處理管道是基于區(qū)塊的渲染器并且因此如本領(lǐng)域中已知的,將產(chǎn)生渲染輸出數(shù)據(jù)陣列的區(qū)塊,例如,將生成的輸出幀。
[0097](如本領(lǐng)域中已知的,在基于區(qū)塊的渲染(而不是整個(gè)渲染輸出(例如,幀))中,高效地一次進(jìn)行處理,如立即模式渲染中那樣,渲染輸出(例如,將要顯示的幀)被分為多個(gè)較小的子區(qū)域(通常稱為“區(qū)塊”)。每個(gè)區(qū)塊(子區(qū)域)被單獨(dú)地(通常是一個(gè)接一個(gè)渲染),并且渲染區(qū)塊(子區(qū)域)然后重組以提供完整的渲染輸出(例如,用于顯示的幀)。在這樣的方案中,渲染輸出通常被分為常規(guī)大小和形狀的子區(qū)域(區(qū)塊)(其通常例如為方形或矩形),但是這不重要)。
[0098]渲染輸出數(shù)據(jù)陣列可以(如本領(lǐng)域中已知的)通常是用于顯示在顯示裝置(例如,屏幕或打印機(jī))上的輸出真,但是也可以例如包括用于在以后的渲染處理(也已知為“渲染至紋理”輸出)的中使用的中間數(shù)據(jù)。
[0099]圖1示出了與本實(shí)施方式的操作相關(guān)的圖形處理管道I的主要元件和管道級(jí)。如本領(lǐng)域技術(shù)人員所了解的是,可以存在圖形處理管道的圖1中未示出的其它元件。還應(yīng)注意的是,圖1僅是示意性的,并且例如,在實(shí)際中,所使出的功能元件和管道級(jí)可以共享硬件電路,即使在圖1中示意性地示出為單獨(dú)的級(jí)。還將了解的是,如圖1中所示的圖形處理管道的級(jí)、元件和單元等等中的每一個(gè)可以根據(jù)需要來實(shí)施,并且因此將包括適當(dāng)?shù)挠糜趫?zhí)行所需操作和功能的電路和/或處理邏輯。
[0100]圖1示意性地示出了已經(jīng)生成了用于光柵化處理的輸入的圖形圖元(多邊形)2之后的管道級(jí)。因此,這時(shí),圖形數(shù)據(jù)(頂點(diǎn)數(shù)據(jù))進(jìn)行了片段前端操作8 (例如,變形和光照操作(未示出)),并且圖元建立級(jí)(未示出)響應(yīng)于提供給圖形處理器的命令和頂點(diǎn)數(shù)據(jù)建立將要渲染的圖元,如本領(lǐng)域中公知的那樣。
[0101]如圖1中所示,圖形處理管道I的該部分包括多個(gè)級(jí),包括光柵化級(jí)3、早期Z(深度)和模板測(cè)試級(jí)4、片段著色級(jí)6的形式的渲染器、后期Z (深度)和模板測(cè)試級(jí)7、混合級(jí)9、區(qū)塊緩沖器10和下采樣和寫出(多采樣調(diào)色)級(jí)13。
[0102]如本領(lǐng)域中已知的,圖形處理管道I的光柵化級(jí)3操作以將構(gòu)成渲染輸出(例如,將要顯示的圖像)的圖元光柵化為用于處理的各圖形片段。為此,光柵化3接收用于渲染的圖形圖元2,將圖元光柵化為采樣點(diǎn)并且生成具有適合的位置的圖形片段(表示適合的采樣位置)以渲染圖元。
[0103]由光柵器生成的片段然后被繼續(xù)發(fā)送給管道的其余部分以進(jìn)行處理。
[0104]早期V模板級(jí)4對(duì)其從光柵器3接收的片段執(zhí)行本領(lǐng)域中已知的Z (深度)測(cè)試,以查看在該級(jí)是否能夠丟棄任何片段。為此,其將從光柵器3發(fā)出的片段(關(guān)聯(lián)的)深度值與已經(jīng)渲染的片段的深度值(存儲(chǔ)在作為區(qū)塊緩沖器10的一部分的深度(Z)緩沖器中存儲(chǔ)的深度值),以確定新的片段是否將被已經(jīng)渲染的片段堵塞。這時(shí),執(zhí)行早期模板測(cè)試。
[0105]經(jīng)過片段早期Z和模板測(cè)試級(jí)4的片段然后被發(fā)送給片段著色級(jí)6。片段著色級(jí)6對(duì)于經(jīng)過早期Z和模板測(cè)試的片段執(zhí)行適合的片段執(zhí)行操作,以對(duì)片段進(jìn)行處理以生成適合的渲染片段數(shù)據(jù),如本領(lǐng)域中公知的。
[0106]該片段處理可以包括任何適合的想要的片段著色處理,例如,對(duì)于片段執(zhí)行片段著色器程序,將紋理應(yīng)用于片段,向片段應(yīng)用霧化或其它操作等等以生成適合的片段數(shù)據(jù),如本領(lǐng)域中所公知的。在本實(shí)施方式中,片段著色級(jí)6處于著色器管道(可編程片段著色器)的形式,但是可以根據(jù)需要除了固定功能片段著色單元之外或替代固定功能片段著色單元來使用其它方案。
[0107]然后,“后期”片段Z和模板測(cè)試級(jí)7對(duì)于共享片段執(zhí)行管道深度測(cè)試的末端以確定渲染片段將在最終圖像中實(shí)際看見。該深度測(cè)試使用區(qū)塊緩沖器10中Z緩沖器中存儲(chǔ)的針對(duì)片段的位置的Z緩沖器值以通過(如本領(lǐng)域中公知的那樣)比較從片段著色級(jí)6發(fā)出的片段的(關(guān)聯(lián)的)深度值與已經(jīng)渲染的片段的深度值(深度緩沖器中存儲(chǔ)的)進(jìn)行比較來確定用于新片段的片段數(shù)據(jù)是否應(yīng)替換已經(jīng)渲染的片段的片段數(shù)據(jù)。該后期片段深度和模板測(cè)試級(jí)7還對(duì)于片段執(zhí)行任何需要的“后期”阿爾法和/或模板測(cè)試。
[0108]經(jīng)過后期片段測(cè)試級(jí)7的片段然后根據(jù)需要利用已經(jīng)存儲(chǔ)在混合器9中的區(qū)塊緩沖器10中的片段進(jìn)行任何需要的混合操作。對(duì)于片段的任何需要的其它操作(例如,遞色,等等(未示出))也在該級(jí)執(zhí)行。
[0109]最終,(混合后的)輸出片段數(shù)據(jù)(值)被從他們能夠輸出到幀緩沖器用于顯示的地方寫入到區(qū)塊緩沖器10。用于輸出片段的深度值也適當(dāng)?shù)貙懭氲絽^(qū)塊緩沖器10內(nèi)的Z緩沖器。(區(qū)塊緩沖器將如本領(lǐng)域中公知的那樣存儲(chǔ)顏色并且存儲(chǔ)適當(dāng)?shù)念伾鹊然騔值的深度緩沖器存儲(chǔ)分別用于緩沖表示(對(duì)于正在處理的區(qū)塊的每個(gè)采樣點(diǎn)來說是重要的)的每個(gè)采樣點(diǎn)的深度緩沖器)。這些緩沖器如本領(lǐng)域中公知的那樣存儲(chǔ)表示整個(gè)渲染輸出(例如將要顯示的圖像)的部分(區(qū)塊)的片段數(shù)據(jù)的陣列,緩沖器中的各組采樣值對(duì)應(yīng)于整個(gè)渲染輸出的各像素(例如,每個(gè)2 X 2組的采樣值可以對(duì)應(yīng)于輸出像素,其中,使用4的倍數(shù))。
[0110]在本實(shí)施方式中,區(qū)塊緩沖器將其片段數(shù)據(jù)存儲(chǔ)為32X32陣列(即,對(duì)應(yīng)于將要生成的輸出中(例如,將要顯示的圖像中)的采樣位置的32X32陣列)。區(qū)塊緩沖器中的每個(gè)32X32數(shù)據(jù)位置陣列能夠因此對(duì)應(yīng)于(并且將“自然地”支持)例如將以4倍抗鋸齒(SP,當(dāng)每個(gè)像素取4個(gè)采樣時(shí))顯示的幀的16X16像素“區(qū)塊”。
[0111]區(qū)塊緩沖器被設(shè)置為位于圖形處理管道(芯片)上的RAM的一部分。
[0112]來自區(qū)塊緩沖器10的數(shù)據(jù)被輸入到下采樣(多采樣調(diào)色)寫出單元13,并且因此輸出(寫回)到諸如顯示裝置(未示出)的幀緩沖器的外部存儲(chǔ)器輸出緩沖器。(顯示裝置能夠包括例如包括像素的陣列的顯示器(例如,計(jì)算機(jī)監(jiān)視器或打印機(jī)))。
[0113]下采樣和寫出單元13將區(qū)塊緩沖器10中存儲(chǔ)的片段數(shù)據(jù)下采樣到適合的分辨率用于輸出緩沖器(裝置)(即,使得生成對(duì)應(yīng)于輸出裝置的像素的像素?cái)?shù)據(jù)的陣列),以生成用于輸出到輸出緩沖器的輸出值(像素)。
[0114]一旦已經(jīng)處理了渲染輸出的區(qū)塊并且其數(shù)據(jù)輸出到主存儲(chǔ)器(例如,主存儲(chǔ)器(未示出)中的幀緩沖器)以進(jìn)行存儲(chǔ),然后對(duì)下一區(qū)塊進(jìn)行處理,以此類推,直到已經(jīng)處理了足夠的區(qū)塊,以生成整個(gè)渲染輸出(例如,將顯示幀(圖像))。然后對(duì)于下一渲染輸出(例如,幀)重復(fù)該處理,以此類推。
[0115]用于圖形處理管道I的其它布置將當(dāng)然也是可能的。
[0116]上面描述了圖1中所示的圖形處理系統(tǒng)的操作的特征?,F(xiàn)在將描述根據(jù)本發(fā)明的實(shí)施方式的圖1中所示的圖形處理系統(tǒng)的操作的進(jìn)一步的特征。
[0117]如圖1中所示,圖形處理管道I還包括能夠讀取區(qū)塊緩沖器10中的存儲(chǔ)值的區(qū)塊著色器14的形式的可編程處理級(jí)以對(duì)于這些值執(zhí)行處理操作,并且然后將其處理操作的結(jié)果寫回到區(qū)塊緩沖器10或經(jīng)由區(qū)塊寫出單元13輸出到主存儲(chǔ)器。該區(qū)塊著色操作因此利用由片段著色器等等產(chǎn)生的存儲(chǔ)在區(qū)塊緩沖器10中作為其輸入的渲染片段之而不要求那些片段值寫出到外部存儲(chǔ)器并且然后通過圖形處理管道I讀回以便于執(zhí)行區(qū)塊著色器處理操作。這允許以更少的存儲(chǔ)器帶寬和能耗執(zhí)行更多種的處理操作。
[0118]本實(shí)施方式中的區(qū)塊著色器級(jí)14與片段著色器6共享處理電路。因此,區(qū)塊著色器14和片段著色器6由可編程硬件級(jí)形式的共享硬件來提供,該可編程硬件級(jí)能夠執(zhí)行一系列圖形處理線程以首先生成并且然后在區(qū)塊緩沖器10中存儲(chǔ)片段數(shù)據(jù)值,并且然后執(zhí)行第二系列的圖形處理線程以處理區(qū)塊緩沖器10內(nèi)的片段數(shù)據(jù)值。
[0119](換言之,存在可編程硬件元件(電路),其能夠由適合的圖形程序指令配置為執(zhí)行片段著色操作(從而用作片段著色器6)或者執(zhí)行區(qū)塊著色操作(從而用作區(qū)塊著色器14)。該可編程硬件元件支持多線程處理并且因此能夠進(jìn)行這些功能和其它功能)。
[0120]在本實(shí)施方式中,區(qū)塊著色器14通過利用新的著色器類型的OpenGL ES著色語言GL_TILE_SHADER和新的內(nèi)置變量來實(shí)施。這允許支持區(qū)塊著色器級(jí)14以嵌入在現(xiàn)有的著色器編程模型內(nèi)。該新的著色器類型沒有附于程序?qū)ο螅歉接趲彌_器對(duì)象。在本實(shí)施方式中,區(qū)塊著色器14如常規(guī)的OpenGL ES著色器那樣工作,但是允許針對(duì)通用存儲(chǔ)器的讀取和寫入的功能、使用圖像寫入功能的隨機(jī)寫入-訪問至紋理和用于針對(duì)區(qū)塊緩沖器的讀取和寫入的功能。
[0121]區(qū)塊著色器14能夠讀取區(qū)塊緩沖器10中的區(qū)塊內(nèi)的任何位置作為針對(duì)任何給定的處理操作(例如,線程)的輸入,并且還能夠?qū)?shù)據(jù)寫入到存儲(chǔ)在區(qū)塊緩沖器10中的區(qū)塊內(nèi)的任何位置。這在本實(shí)施方式中借助于下述API函數(shù)來實(shí)施:
[0122]gl_ReadTiIePixeIColor(int21oc, cb, ms)
[0123]gl_ReadTiIePixelDepth(int21oc, ms)
[0124]gl_ffriteTilePixelColor(int21oc, cb, ms, color)
[0125]gl_ffriteTiIePixelDepth(ing21oc, ms, color)
[0126]其中
[0127]cb =顏色緩沖器的索引(在存在區(qū)塊緩沖器10中存儲(chǔ)的多個(gè)渲染對(duì)象(多個(gè)顏色緩沖器)的情況下使用),
[0128]ms =采樣的索引(在實(shí)施多采樣的情況下)并且
[0129]1c =畫面空間中的像素坐標(biāo)。
[0130]從區(qū)塊著色器14寫出能夠利用從區(qū)塊著色器14到存儲(chǔ)器的通用加載/存儲(chǔ)或者通過將數(shù)據(jù)寫回到區(qū)塊緩沖器10并且然后觸發(fā)利用寫出單元13的固定功能寫出來進(jìn)行。
[0131]區(qū)塊著色器14還能夠觸發(fā)或防止特定區(qū)塊緩沖器組件的常規(guī)寫出。這在本實(shí)施方式中通過調(diào)用函數(shù) gl_WriteOutColorTile (cb, [s]), gl_ffriteOutDepthTile ([s])來實(shí)現(xiàn),其中,cb是顏色緩沖器索引并且s是使用的采樣索引(該索引控制哪個(gè)采樣將寫出作為最終值)。這些函數(shù)標(biāo)志顏色或深度緩沖器是否寫出區(qū)塊。(在區(qū)塊著色器已經(jīng)結(jié)束其處理之后發(fā)生寫出(如果需要))。
[0132]在本實(shí)施方式中,利用為此目的的API調(diào)用來觸發(fā)區(qū)塊著色器14的操作:
[0133]glResolveTiles (x, y, w, h, xthreads, ythreads)
[0134]該“調(diào)色”API調(diào)用的效果是“調(diào)色”(開始區(qū)塊處理/區(qū)塊著色器觸發(fā))命令被添加到包含調(diào)色API調(diào)用(像素坐標(biāo)(x,y,w,h))中指示的矩形內(nèi)的像素的每個(gè)區(qū)塊的命令列表。
[0135]然后,當(dāng)區(qū)塊由圖形處理管道處理并且在區(qū)塊命令列表中遇到“調(diào)色”命令時(shí),圖形處理管道I如下地進(jìn)行操作。
[0136]首先,其等待針對(duì)當(dāng)前區(qū)塊的所有生成的片段線程完成并且付諸于區(qū)塊緩沖器。這確保了區(qū)塊緩沖器在區(qū)塊著色器14開始其操作之前包含了用于有問題的區(qū)塊的最終渲染數(shù)據(jù)。
[0137]區(qū)塊著色器線程然后為位于當(dāng)前區(qū)塊內(nèi)的每個(gè)位置發(fā)出以對(duì)于位于當(dāng)前區(qū)塊內(nèi)的每個(gè)位置執(zhí)行區(qū)塊著色器程序。每個(gè)線程對(duì)于區(qū)塊內(nèi)的給定像素執(zhí)行相關(guān)的區(qū)塊著色處理,并且可以額外地從與不同像素或者從替代其實(shí)際“處理”的像素的不同像素關(guān)聯(lián)的采樣位置存取作為其輸入數(shù)據(jù)。一旦完成了所有區(qū)塊著色線程,則然后恢復(fù)命令列表。
[0138]在本實(shí)施方式中,區(qū)塊著色器14用于在寫入到外部存儲(chǔ)器之前對(duì)于區(qū)塊緩沖器10中的渲染區(qū)塊執(zhí)行延遲處理操作。這可以執(zhí)行延遲光照或者任何其它想要的延遲著色操作。
[0139]區(qū)塊著色器14能夠用于允許對(duì)于每個(gè)區(qū)塊進(jìn)行整個(gè)延遲著色處理,從而顯著地節(jié)省用于執(zhí)行延遲著色的外部存儲(chǔ)器帶寬。為此,區(qū)塊緩沖器10被構(gòu)造為能夠同時(shí)保持多個(gè)渲染對(duì)象,從而用于積累輸出結(jié)果的多個(gè)G緩沖器和顏色緩沖器能夠同時(shí)存儲(chǔ)在區(qū)塊緩沖器10中。這可以根據(jù)需要來實(shí)現(xiàn)。例如,可以是能夠容納的足夠大小的區(qū)塊緩沖器(實(shí)際上在任何情況下用于多個(gè)區(qū)塊的顏色緩沖器)。在該情況下,每個(gè)區(qū)塊顏色緩沖器能夠被指定為適合的渲染對(duì)象。
[0140]在該處理中,圖形處理管道I首先被控制為對(duì)于各單獨(dú)的渲染對(duì)象渲染延遲著色操作所要求的渲染幾何形狀(G緩沖器)。該處理可以生成例如包括然后對(duì)于將要生成的整個(gè)渲染輸出(例如,幀)的各區(qū)塊單獨(dú)存儲(chǔ)在區(qū)塊緩沖器10中的顏色、深度、表面法線和其它屬性的渲染對(duì)象。(如本領(lǐng)域中公知的,當(dāng)執(zhí)行延遲著色時(shí),這些值然后用于進(jìn)行復(fù)雜的光計(jì)算和構(gòu)成以產(chǎn)生最終的想要的輸出結(jié)果。)
[0141]一旦已經(jīng)對(duì)于有問題的區(qū)塊生成了這些渲染對(duì)象,則區(qū)塊著色器14操作能通過將適合的調(diào)色命令包括在區(qū)塊命令列表中來觸發(fā),區(qū)塊著色器14被適當(dāng)?shù)乜刂埔詮膮^(qū)塊緩沖器10中的多個(gè)渲染對(duì)象讀取數(shù)據(jù),對(duì)這些數(shù)據(jù)進(jìn)行處理,并且然后將處理結(jié)果寫入到區(qū)塊緩沖器10中的單獨(dú)的輸出顏色緩沖器渲染對(duì)象。
[0142]在該操作中,區(qū)塊著色器14將因此從區(qū)塊緩沖器10中存儲(chǔ)的生成的渲染對(duì)象中的一些或全部讀取存儲(chǔ)的采樣值作為輸入值,使用這些值進(jìn)行延遲著色操作并且然后將該操作的結(jié)果存儲(chǔ)在已經(jīng)為此分配的單獨(dú)的輸出顏色緩沖器中。根據(jù)正在進(jìn)行的延遲著色操作,對(duì)于給定像素執(zhí)行延遲著色操作時(shí)的區(qū)塊著色器14可以僅讀取與各渲染對(duì)象中的像素關(guān)聯(lián)的采樣值和/或可以讀取與每個(gè)渲染對(duì)象中一個(gè)或更多個(gè)其它(不同)像素關(guān)聯(lián)的采樣值。區(qū)塊著色器14被構(gòu)造為能夠在適合的圖形程序指令的控制下執(zhí)行這些任務(wù)中的任一個(gè)。
[0143]一旦該操作已經(jīng)完成,則區(qū)塊著色器14優(yōu)選地觸發(fā)輸出結(jié)果渲染對(duì)象到外部存儲(chǔ)器的寫出,但是禁止將包含G緩沖器的渲染對(duì)象寫入到存儲(chǔ)器,從而只有用于幀緩沖器的最終區(qū)塊被寫入到存儲(chǔ)器。這能夠使用上述適合的區(qū)塊寫入功能來實(shí)現(xiàn)。這節(jié)省了在用于延遲著色操作的第一處理中生成的多個(gè)渲染對(duì)象要求的針對(duì)外部存儲(chǔ)器的讀取和寫入帶寬。
[0144]處理應(yīng)對(duì)于將要生成的輸出的每個(gè)區(qū)塊進(jìn)行重復(fù),使得能夠生成最終的延遲著色輸出(例如,幀)。
[0145]圖2和圖3示出了該處理。圖2示出了該處理,并且圖3示意性地示出了區(qū)塊緩沖器10中的渲染對(duì)象的布置。
[0146]如圖2中所示,圖形處理管道(可以例如運(yùn)行在主處理器上)的驅(qū)動(dòng)器將接收API調(diào)用以渲染用于延遲著色操作的多個(gè)渲染對(duì)象,并且然后執(zhí)行區(qū)塊著色器“調(diào)色”操作以對(duì)于多個(gè)渲染對(duì)象執(zhí)行延遲著色操作(步驟20)。響應(yīng)于此,驅(qū)動(dòng)器將生成適合的區(qū)塊命令列表,包括用于渲染多個(gè)輸入渲染對(duì)象的命令,之后是觸發(fā)區(qū)塊著色操作的“調(diào)色”命令,以及使得區(qū)塊著色器執(zhí)行延遲著色操作的命令(步驟21)。
[0147]這些命令列表然后被提供給圖形處理管道(步驟22),其然后響應(yīng)于這些命令,渲染用于整個(gè)渲染輸出的每個(gè)區(qū)塊的多個(gè)輸入數(shù)據(jù)渲染對(duì)象(步驟23)以將多個(gè)輸入數(shù)據(jù)渲染對(duì)象30逐個(gè)區(qū)塊地存儲(chǔ)在區(qū)塊存儲(chǔ)器10中。由于渲染了針對(duì)每個(gè)區(qū)塊的多個(gè)渲染對(duì)象,因此,當(dāng)圖形處理管道看到區(qū)塊“調(diào)色”命令(步驟24)時(shí),其等待直到進(jìn)行的所有渲染操作已經(jīng)完成并且然后執(zhí)行適合的區(qū)塊著色器程序以使用存儲(chǔ)的多個(gè)渲染對(duì)象執(zhí)行延遲著色操作31 (步驟25)。延遲著色操作的結(jié)果被寫入到區(qū)塊緩沖器10中的另外的“輸出”渲染對(duì)象32(步驟26)。一旦已經(jīng)處理了有問題的區(qū)塊,“輸出”渲染對(duì)象區(qū)塊32被寫出到外部存儲(chǔ)器,同時(shí)防止寫出多個(gè)輸入數(shù)據(jù)值渲染對(duì)象30 (步驟27)。處理然后移動(dòng)到下一區(qū)塊(步驟28)直到處理了用于渲染輸出的所有區(qū)塊(步驟29)。
[0148]從上面能夠看到的是,本發(fā)明,在其優(yōu)選實(shí)施方式中,至少提供了下述機(jī)制:能夠在圖形處理管道內(nèi)對(duì)于旋繞區(qū)塊數(shù)據(jù)執(zhí)行延遲著色操作,從而避免了針對(duì)外部存儲(chǔ)的數(shù)據(jù)的存儲(chǔ)和接下來的再存儲(chǔ)。在本發(fā)明的優(yōu)選實(shí)施方式中,這至少通過提供可編程處理級(jí)來實(shí)現(xiàn),該可編程處理級(jí)能夠讀取區(qū)塊緩沖器中的數(shù)據(jù),對(duì)該數(shù)據(jù)進(jìn)行處理并且然后將數(shù)據(jù)寫入到區(qū)塊緩沖器或者寫出到外部存儲(chǔ)器,而不許將區(qū)塊緩沖器中的數(shù)據(jù)寫入到外部存儲(chǔ)器或從外部存儲(chǔ)器進(jìn)行讀取。
【權(quán)利要求】
1.一種操作基于區(qū)塊的圖形處理管道的方法,所述基于區(qū)塊的圖形處理管道包括: 多個(gè)處理級(jí),所述多個(gè)處理級(jí)至少包括光柵器,該光柵器對(duì)輸入圖元進(jìn)行光柵化以生成待處理的圖形片段,每個(gè)圖形片段具有與其關(guān)聯(lián)的一個(gè)或更多個(gè)采樣點(diǎn);以及渲染器,所述渲染器對(duì)由所述光柵器生成的片段進(jìn)行處理以生成渲染后的片段數(shù)據(jù); 區(qū)塊緩沖器,所述區(qū)塊緩沖器被構(gòu)造為在渲染后的片段數(shù)據(jù)被寫出到外部存儲(chǔ)器之前相對(duì)于所述圖形處理管道本地地存儲(chǔ)所述渲染后的片段數(shù)據(jù); 寫出級(jí),所述寫出級(jí)被構(gòu)造為將所述區(qū)塊緩沖器中存儲(chǔ)的數(shù)據(jù)寫入到外部存儲(chǔ)器;以及 可編程處理級(jí),所述可編程處理級(jí)可操作以響應(yīng)于一個(gè)或更多個(gè)圖形程序指令讀取所述區(qū)塊緩沖器中存儲(chǔ)的數(shù)據(jù),使用所讀取的數(shù)據(jù)執(zhí)行處理操作,以及將所述處理操作的結(jié)果寫入到所述區(qū)塊緩沖器中或者寫入到外部存儲(chǔ)器; 所述方法包括: 對(duì)包含將在延遲著色操作中使用的數(shù)據(jù)的多個(gè)渲染對(duì)象進(jìn)行渲染并且將所述多個(gè)渲染對(duì)象作為不同的渲染對(duì)象存儲(chǔ)在所述區(qū)塊緩沖器中;以及 使用所述可編程處理級(jí)來從所述區(qū)塊緩沖器中的所存儲(chǔ)的多個(gè)渲染對(duì)象中的兩個(gè)或更多個(gè)讀取數(shù)據(jù),使用所讀取的數(shù)據(jù)執(zhí)行延遲著色處理操作,以及將所述處理操作的結(jié)果寫入到所述區(qū)塊緩沖器中的輸出渲染對(duì)象或者寫入到外部存儲(chǔ)器。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述可編程處理級(jí)讀取用于正在處理的區(qū)塊的每個(gè)渲染對(duì)象中與同一像素位置關(guān)聯(lián)的采樣值。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,所述可編程處理級(jí)讀取每個(gè)渲染對(duì)象中與不同像素位置關(guān)聯(lián)的采樣值。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其中,所述可編程處理級(jí)將所述區(qū)塊緩沖器中其對(duì)于所述數(shù)據(jù)值的延遲著色操作的結(jié)果寫入到已經(jīng)分配用于接收和存儲(chǔ)所述延遲著色操作的結(jié)果的所述區(qū)塊緩沖器中的另外的渲染對(duì)象。
5.根據(jù)權(quán)利要求1、2、3或4所述的方法,所述方法進(jìn)一步包括防止從所述區(qū)塊緩沖器的所述初始的輸入數(shù)據(jù)渲染對(duì)象的寫出。
6.根據(jù)權(quán)利要求1、2、3、4或5所述的方法,其中,所述可編程處理級(jí)操作以防止從所述區(qū)塊緩沖器的所述渲染對(duì)象中的一個(gè)或更多個(gè)的固定功能寫出。
7.根據(jù)權(quán)利要求1、2、3、4、5或6所述的方法,其中,所述可編程處理級(jí)的操作是通過將命令包括在將要對(duì)其執(zhí)行所述處理操作的區(qū)塊的區(qū)塊列表中來觸發(fā)的。
8.根據(jù)權(quán)利要求7所述的方法,其中,響應(yīng)于所述命令,所述圖形處理管道首先等待直到用于所述區(qū)塊的所述輸入數(shù)據(jù)渲染對(duì)象的渲染已經(jīng)完成并且所述可編程處理級(jí)然后對(duì)于所述區(qū)塊緩沖器中的所述值執(zhí)行其處理操作。
9.根據(jù)前述權(quán)利要求中的任一項(xiàng)所述的方法,其中,使用API機(jī)制來觸發(fā)和控制所述可編程處理級(jí)的操作。
10.一種基于區(qū)塊的圖形處理管道,所述基于區(qū)塊的圖形處理管道包括: 多個(gè)處理級(jí),所述多個(gè)處理級(jí)至少包括光柵器,該光柵器對(duì)輸入圖元進(jìn)行光柵化以生成待處理的圖形片段,每個(gè)圖形片段具有與其關(guān)聯(lián)的一個(gè)或更多個(gè)采樣點(diǎn);以及渲染器,所述渲染器對(duì)由所述光柵器生成的片段進(jìn)行處理以生成渲染后的片段數(shù)據(jù); 區(qū)塊緩沖器,所述區(qū)塊緩沖器被構(gòu)造為在渲染后的片段數(shù)據(jù)被寫出到外部存儲(chǔ)器之前相對(duì)于所述圖形處理管道本地地存儲(chǔ)所述渲染后的片段數(shù)據(jù); 寫出級(jí),所述寫出級(jí)被構(gòu)造為將所述區(qū)塊緩沖器中存儲(chǔ)的數(shù)據(jù)寫入到外部存儲(chǔ)器;以及 可編程處理級(jí),所述可編程處理級(jí)可操作以在圖形程序指令的控制下,從所述區(qū)塊緩沖器中存儲(chǔ)的用于延遲著色操作的一組多個(gè)渲染對(duì)象中的兩個(gè)或更多個(gè)讀取數(shù)據(jù),使用所讀取的數(shù)據(jù)執(zhí)行延遲著色處理操作,以及將所述處理操作的結(jié)果寫入到所述區(qū)塊緩沖器中的輸出渲染對(duì)象或者寫入到外部存儲(chǔ)器。
11.根據(jù)權(quán)利要求10所述的圖形處理管道,其中,所述可編程處理級(jí)讀取用于正在處理的區(qū)塊的每個(gè)渲染對(duì)象中與同一像素位置關(guān)聯(lián)的采樣值。
12.根據(jù)權(quán)利要求10或11所述的圖形處理管道,其中,所述可編程處理級(jí)讀取每個(gè)渲染對(duì)象中與不同像素位置關(guān)聯(lián)的采樣值。
13.根據(jù)權(quán)利要求10、11或12所述的圖形處理管道,其中,所述可編程處理級(jí)將所述區(qū)塊緩沖器中其對(duì)于所述數(shù)據(jù)值的延遲著色操作的結(jié)果寫入到已經(jīng)分配用于接收和存儲(chǔ)所述延遲著色操作的結(jié)果的所述區(qū)塊緩沖器中的另外的渲染對(duì)象。
14.根據(jù)權(quán)利要求10、11、12或13所述的圖形處理管道,所述圖形處理管道進(jìn)一步被構(gòu)造為防止從所述區(qū)塊緩沖器的所述初始的輸入數(shù)據(jù)渲染對(duì)象的寫出。
15.根據(jù)權(quán)利要求10、11、12、13或14所述的圖形處理管道,其中,所述可編程處理級(jí)操作以防止從所述區(qū)塊緩沖器的所述渲染對(duì)象中的一個(gè)或更多個(gè)的固定功能寫出。
16.根據(jù)權(quán)利要求10、11、12、13、14或15所述的圖形處理管道,其中,所述可編程處理級(jí)的操作是通過將命令包括在將要對(duì)其執(zhí)行所述處理操作的區(qū)塊的區(qū)塊列表中來觸發(fā)的。
17.根據(jù)權(quán)利要求16所述的圖形處理管道,其中,響應(yīng)于所述命令,所述圖形處理管道首先等待直到用于所述區(qū)塊的所述輸入數(shù)據(jù)渲染對(duì)象的渲染已經(jīng)完成并且所述可編程處理級(jí)然后對(duì)于所述區(qū)塊緩沖器中的所述值執(zhí)行其處理操作。
18.根據(jù)權(quán)利要求10至17中的任一項(xiàng)所述的圖形處理管道,其中,使用API機(jī)制來觸發(fā)和控制所述可編程處理級(jí)的操作。
19.一種計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包括在所述程序運(yùn)行在數(shù)據(jù)處理系統(tǒng)上時(shí)執(zhí)行根據(jù)權(quán)利要求1至9中的任一項(xiàng)所述的方法的所有步驟的代碼裝置。
【文檔編號(hào)】G06T1/00GK104134183SQ201410181969
【公開日】2014年11月5日 申請(qǐng)日期:2014年4月30日 優(yōu)先權(quán)日:2013年5月2日
【發(fā)明者】J·尼斯塔德, A·D·恩格-哈斯特韋德, S·卡卡爾拉普迪, M·斯托克斯 申請(qǐng)人:Arm有限公司