欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

圖形處理系統(tǒng)的制作方法

文檔序號:6545427閱讀:157來源:國知局
圖形處理系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種圖形處理系統(tǒng)。基于區(qū)塊的圖形處理管道(1)包括光柵器(3)、渲染器(6)、區(qū)塊緩沖器(10)、寫出級(13)和可編程處理級(14)。區(qū)塊緩沖器(10)存儲用于延遲著色操作的多個渲染對象并且可編程處理級(14)可操作以在圖形程序指令的控制下從區(qū)塊緩沖器(10)中存儲的延遲著色操作的一組多個渲染對象中的兩個或更多個讀取數據,使用讀取的數據執(zhí)行延遲著色處理操作,并且將處理操作的結果寫入到區(qū)塊緩沖器(10)中的輸出渲染對象或者寫入到外部存儲器。
【專利說明】圖形處理系統(tǒng)

【技術領域】
[0001]本發(fā)明涉及一種圖形處理系統(tǒng),并且具體地,涉及一種基于區(qū)塊的圖形處理系統(tǒng)。

【背景技術】
[0002]如本領域中所公知的,通常通過首先將諸如將要顯示的幀的將要生成的輸出劃分為多個類似的基本分量(所謂的圖元)來允許更容易地執(zhí)行圖形處理操作。這些“圖元”通常是諸如三角形的簡單的多邊形的形式。
[0003]通常使用從要求圖形輸出的應用(例如,游戲)接收的圖形繪圖指令(請求)利用用于圖形處理系統(tǒng)的應用程序接口來生成圖形圖元。
[0004]每個圖元在該級通常由一組頂點來限定和表示。用于圖元的每個頂點具有與其關聯(lián)的表示頂點的一組數據(例如,位置、顏色、紋理和其它屬性數據)。該數據然后例如在光柵化和渲染頂點(頂點相關的圖元)以便于生成圖形處理系統(tǒng)的想要的輸出時使用該數據。
[0005]一旦已經生成和限定了圖元及其頂點,則能夠由圖形處理系統(tǒng)來進行處理,以便于例如顯示該幀。
[0006]該處理基本上涉及確定覆蓋將要處理的輸出區(qū)域的采樣點的陣列的哪些采樣點被圖元覆蓋,并且然后確定每個采樣點應具有的表示該采樣點處的圖元的外觀(例如,其顏色等等方面)。這些處理被分別統(tǒng)稱為光柵化和渲染。
[0007]光柵化處理確定應該圖元的采樣位置(即,將要用于表示輸出(例如將要顯示的場景)中的圖元的采樣點的(x,y)位置)。這通常使用圖元的頂點的位置來進行。
[0008]渲染處理然后獲得表示采樣點處的圖元所需的數據(例如,紅色、綠色和藍色(RGB)顏色值以及“阿爾法”(透明度)值)(即,對每個采樣點進行“著色”)。如本領域中公知的那樣,這能夠包括應用紋理、混合采樣點數據值等等。
[0009](在圖形文獻中,術語“光柵化”有時用于表示針對采樣位置的圖元轉換和渲染。然而,這里的“光柵化”將用于表示將圖元數據轉換為僅采樣點地址。)
[0010]這些處理通常通過下述方式來執(zhí)行:測試一個采樣點的組或者多于一個采樣點的組并且然后對于發(fā)現(xiàn)包括有問題的(被測試的)采樣點內(覆蓋)的采樣點的每組采樣點,生成對其執(zhí)行圖形處理操作(例如,渲染)的通常被稱為“片段”的分立圖形實體。所覆蓋的采樣點因此在實際上被作為將用于在有問題的采樣點處渲染圖元的片段來處理?!捌巍笔卿秩咎幚?渲染管道)的圖形實體。被生成和處理的每個片段可以根據如何構造圖形處理系統(tǒng)而例如表示單個采樣點或一組多個采樣點。
[0011](“片段”因此有效地(與其關聯(lián))為插值到圖元的給定輸出空間采樣點而獲得的一組圖元。其還可以包括對有問題的采樣點(片段位置)進行著色所要求的圖元和其它狀態(tài)數據。每個圖形片段可以通常與輸出(例如,輸出幀)的“像素”)是相同大小和位置(這是由于,當在最終顯示時像素是奇異點,在圖形處理器對其進行操作(渲染)的“片段”與顯示的像素之間可以存在一一對應)。然而,能夠是下述情況,在片段與顯示像素之間不存在一一對應關系,例如,在該情況下,在顯示最終圖像之前對渲染圖像進行諸如下采樣的特定形式的后處理。)
[0012](還可以是下述情況,當例如給定位置的來自不同重疊圖元的多個片段可以彼此影響(例如,由于透明度和/或混合),最終像素輸出可以根據像素位置處的多個或片段)。
[0013](因此,在采樣點與顯示器的像素之間可以存在一一對應關系,但是更常見的是,在采樣點與顯示像素之間沒有存在一一對應關系,這是因為可以對渲染的采樣值執(zhí)行下采樣以生成用于顯示最終圖像的輸出像素值。類似地,在給定位置處的例如來自不同交疊的圖元的多個采樣點值彼此影響(例如,由于透明度和/或混合)的情況下,最終的像素輸出也將依賴于該像素位置處的多個交疊的采樣值)。
[0014]如本領域中公知的,圖形處理系統(tǒng)和圖形處理器通常被提供為具有用于執(zhí)行生成想要的輸出圖形數據組(例如,其可以表示將要生成的幀的全部或一部分)所需要的圖形處理功能(例如,獲取輸入數據、幾何處理、頂點著色、光柵化、渲染等等)的多個處理級的圖形處理管道的形式。
[0015]圖形處理管道的處理級可以例如為固定功能單元(硬件)的形式,或者一些或全部功能單元可以是可編程的(借助于能夠被編程以執(zhí)行想要的操作的可編程電路來提供)。例如,圖形處理管道可以包括可編程頂點和/或片段著色器,以執(zhí)行想要的頂點和/或片段著色操作。
[0016]基于區(qū)塊的圖形處理管道也將包括一個或多個所謂的區(qū)塊緩沖器,其存儲管道的末端處的渲染片段數據直到完成了給定的區(qū)塊并且將其寫入到諸如幀緩沖器的外部存儲器中以便于使用。該本地的管道存儲器用于在數據被最終輸出到外部存儲器之前本地地保持片段數據。
[0017]區(qū)塊緩沖器中的數據通常存儲為采樣值的陣列,其中,不同組的采樣值對應于輸出像素的陣列的各輸出像素并且與其關聯(lián)。例如每個像素位置可以存在一個采樣,但是更常見的是,對于每個像素存在多個(例如,4個)采樣,例如,以多采樣方式生成渲染輸出的情況。區(qū)塊緩沖器可以存儲例如包含針對有問題的區(qū)塊的顏色值的顏色緩沖器和存儲有問題的區(qū)塊的深度值的深度緩沖器。
[0018]為了方便將來自區(qū)塊緩沖器的渲染圖形數據寫回到諸如幀緩沖器的外部存儲器,圖形處理管道將通常包括耦接到為此目的的區(qū)塊緩沖器管道存儲器的寫入電路。圖形處理管道也可以設置有固定功能下采樣電路,用于在需要時(例如為了反鋸齒目的而以超采樣或多采樣方式渲染將要顯示的幀的情況)寫入到外部存儲器之前對本地存儲的數據進行下采樣。
[0019]當執(zhí)行圖形處理以執(zhí)行所謂的“延遲著色”時,對這樣的處理的需求變得更加強烈。當進行延遲著色時,應用程序執(zhí)行多個渲染通道,通常在第一渲染同打掃中使用多個渲染對象以輸出顏色、深度、表面法線以及可能的其它屬性以分離渲染對象。然后在第一渲染通道的輸出中讀取以進行復雜的光計算和組成以在第二渲染通道中產生最終結果。這要求大量的帶寬來讀取和寫入所有渲染對象(由于應用程序將通常例如在第一通道中寫入多個渲染對象,并且然后在第二通道中使用渲染對象作為紋理以生成最終結果)。
[0020]在低功率和便攜裝置中的圖形處理器中,將數據從圖形處理管道寫入到外部存儲器以及將輸出從外部存儲器讀取到圖形處理管道的本地存儲器的反向操作以進行延遲著色的帶寬開銷會變成嚴重的問題。帶寬消耗能夠是熱和電力消耗的主要原因,并且因此,通常希望在嵌入式圖形處理系統(tǒng)中減少外部存儲器讀取和寫入的帶寬消耗。
[0021]已經提出了各種技術來減少圖形處理系統(tǒng)中外部存儲器讀取和寫入的帶寬消耗。這些技術包括例如使用問題和幀緩沖器壓縮來減少必須寫入/讀取的數據量和/或消除不必要的外部存儲器(例如,幀存儲器)讀取和寫入操作。
[0022]對于上述已知技術, 申請人:相信,仍然存在對用于在圖形處理管道中(特別地,在基于區(qū)塊的圖形處理管道中)執(zhí)行延遲著色的技術進行改進的可能性。


【發(fā)明內容】

[0023]根據本發(fā)明的第一方面,提供了一種操作基于區(qū)塊的圖形處理管道的方法,該圖形處理管道包括:
[0024]多個處理級,所述多個處理級至少包括光柵器,其對輸入圖元進行光柵化以生成待處理的圖形片段,每個圖形片段具有與其關聯(lián)的一個或更多個采樣點;以及渲染器,其對由光柵器生成的片段進行處理以生成渲染片段數據;
[0025]區(qū)塊緩沖器,其被構造為在渲染片段數據被寫入到外部存儲器之前相對于圖形處理管道本地地存儲渲染片段數據;
[0026]寫入級,其被構造為將區(qū)塊緩沖器中存儲的數據寫入到外部存儲器;以及
[0027]可編程處理級,其可操作以響應于一個或更多個圖形程序指令,讀取區(qū)塊緩沖器中存儲的數據,使用讀取的數據執(zhí)行處理操作,并且將處理操作的結果寫入到區(qū)塊緩沖器或外部存儲器;
[0028]該方法包括:
[0029]渲染包括將在延遲著色操作中使用的數據的多個渲染對象并且將所述多個渲染對象作為獨特渲染對象存儲在區(qū)塊緩沖器中;
[0030]使用可編程處理級來從區(qū)塊緩沖器中所存儲的多個渲染對象中的兩個或更多個讀取數據,使用讀取的數據執(zhí)行延遲著色處理操作,并且將處理操作的結果寫入到區(qū)塊緩沖器中的輸出渲染對象,或者寫入到外部存儲器。
[0031]根據本發(fā)明的第二方面,提供了一種基于區(qū)塊的圖形處理管道,其包括:
[0032]多個處理級,所述多個處理級至少包括光柵器,其對輸入圖元進行光柵化以生成待處理的圖形片段,每個圖形片段具有與其關聯(lián)的一個或更多個采樣點;以及渲染器,其對由光柵器生成的片段進行處理以生成渲染片段數據;
[0033]區(qū)塊緩沖器,其被構造為在渲染片段數據被寫入到外部存儲器之前相對于圖形處理管道本地地存儲渲染片段數據;
[0034]寫入級,其被構造為將區(qū)塊緩沖器中存儲的數據寫入到外部存儲器;以及
[0035]可編程處理級,其可操作以在圖形程序指令的控制下,從區(qū)塊緩沖器中存儲的用于延遲著色操作的一組多個著色對象中的兩個或更多個讀取數據,使用讀取的數據執(zhí)行延遲著色處理操作,并且將處理操作的結果寫入到區(qū)塊緩沖器中的輸出渲染對象或外部存儲器;
[0036]本發(fā)明的圖形處理管道包括可編程處理級,其能夠直接讀取和處理來自區(qū)塊緩沖器中存儲的多個渲染對象的數據。通過將多個渲染對象存儲在區(qū)塊緩沖器中,使用可編程處理級從區(qū)塊緩沖器直接讀取和處理這些緩沖器的內容并且然后將從可編程處理級獲得的圖像寫入到例如區(qū)塊緩沖器中的另外的渲染對象,能夠節(jié)省從外部存儲器讀取多個渲染對象的整個讀取帶寬。
[0037]這使得能夠對于區(qū)塊緩沖器中存儲的片段數據進行延遲著色操作而不需要例如外部存儲器(例如,幀存儲器)中的片段數據的存儲和接下來的再存儲。事實上,本發(fā)明能夠用于以零外部帶寬開銷執(zhí)行在芯片上進行的這樣的操作,來替代寫入和讀取大的G緩沖器,從而使得能夠在嵌入式空間中應用這些技術。這相應地能夠使得系統(tǒng)性能增大并且功耗降低。
[0038]如本領域中已知的,圖形處理管道的光柵器將生成待渲染以生成用于想要的圖形輸出(例如,將要顯示的幀)的采樣點的渲染圖形數據的圖形片段。由光柵器生成的每個圖形片段具有與其關聯(lián)的一組圖形輸出的采樣點并且將用于生成針對與該片段關聯(lián)的一組采樣點中的一個或更多個采樣點的渲染圖形數據。
[0039]光柵器可以被構造為以任何想要的適合的方式生成用于渲染的片段。如本領域中已知的,其將接收例如待光柵化的圖元,針對多組采樣點位置對這些圖元進行測試,并且因此生成表示圖元的片段。
[0040]渲染器應該對由光柵器生成的片段進行處理以生成用于片段所表示的(覆蓋的)采樣點的渲染片段數據,如本領域已知的那樣。這些渲染處理可以包括例如片段著色、混合、紋理映射等等。在優(yōu)選實施方式中,渲染器為可編程片段著色器的形式或者包括可編程片段著色器。
[0041]如本領域中已知的,區(qū)塊緩沖器將存儲有問題的區(qū)塊的采樣值的陣列。區(qū)塊緩沖器將存儲采樣位置的陣列的數據值,并且采樣位置的各組與渲染片段數據所涉及的輸出數據陣列的各像素對應并關聯(lián)。
[0042]這些采樣值通常并且在優(yōu)選實施方式中被分組為均與有問題的區(qū)塊中的各(例如,顯示)像素關聯(lián)的多組采樣值(例如,多組2X2采樣值)。采樣值可以例如包括顏色值(顏色緩沖器)、深度值(深度緩沖器)等等。
[0043]區(qū)塊緩沖器被構造為能夠(并且可被構造為)同時存儲多個渲染對象。這能夠根據需要來實現(xiàn)。例如,區(qū)塊緩沖器的尺寸可以調整為容納多個顏色緩沖器(能夠均用于存儲渲染對象)。
[0044]如本領域中公知的,寫入單元用于將區(qū)塊緩沖器中的數據(一旦區(qū)塊緩沖器中的數據完成)寫入到外部(主)存儲器(例如,幀緩沖器)。如本領域中公知的,這可以包括以固定或可變的方式將區(qū)塊緩沖器中的采樣值下采樣(平均)到將寫入到主存儲器(例如,幀緩沖器)的最終輸出(像素)值和/或其它輸出(根據需要)。
[0045]對區(qū)塊緩沖器中的數據進行處理的可編程處理級可以包括諸如可編程處理電路的任何適合的可編程硬件元件。該可編程處理級可以作為單獨的電路元件提供給諸如片段著色器的處理管道的其它可編程級。然而,其也可以至少部分地由共享的可編程圖形處理電路形成。在優(yōu)選實施方式中,渲染器和可編程處理級共享可編程處理電路并且優(yōu)選地包括相同的物理電路塊(被不同地編程以用作片段著色器(渲染器)和可編程處理級)。
[0046]可編程處理級響應于并且在圖形程序指令的控制下操作。因此,可編程處理級優(yōu)選地可操作以響應于并且在圖形程序指令的控制下從用于有問題的區(qū)塊的所存儲的輸入數據只渲染對象中的至少兩個(優(yōu)選地全部)讀取數據值,對于這些數據值執(zhí)行處理操作,并且然后將輸出結果寫入到區(qū)塊緩沖器中的另外的渲染對象或者外部存儲器。
[0047]類似地,在優(yōu)選實施方式中,本發(fā)明的方法包括向可編程處理級下達圖形程序指令以使得可編程處理級,對于其數據存儲在區(qū)塊緩沖器中的多個渲染對象,對于每個渲染對象讀取區(qū)塊緩沖器中存儲的數據,使用讀取的數據執(zhí)行延遲著色處理操作并且將處理操作的結果寫入到區(qū)塊緩沖器中或者寫入到外部存儲器;并且可編程處理級響應于圖形程序指令,對于其數據存儲在區(qū)塊緩沖器中的各渲染對象,對于每個渲染對象讀取區(qū)塊緩沖器中存儲的數據,使用讀取的數據執(zhí)行延遲著色處理操作,并且將處理操作的結果寫入到區(qū)塊緩沖器中或者寫入到外部存儲器。
[0048]優(yōu)選地在輸出值被寫入到幀緩沖存儲器之前,通過使用可編程圖形處理級,執(zhí)行一個或更多個圖形處理線程來優(yōu)選地實現(xiàn)可編程處理級的延遲著色處理操作。因此,在圖形處理管道內生成并且存儲在區(qū)塊緩沖器內的片段數據值由可編程處理級進行進一步的處理以使用由對于區(qū)塊緩沖器內的數據值進行操作的可編程處理級執(zhí)行的圖形處理線程提供輸出結果,而沒有要求寫入到任何外部存儲器。
[0049]因此,可編程處理級優(yōu)選地包括執(zhí)行各圖形處理線程(在圖形程序指令的控制下)的可編程圖形處理電路。每個線程優(yōu)選地處理區(qū)塊緩沖器內的各像素(像素位置)。對于給定的區(qū)塊,可以根據需要處理像素位置中的一些或全部。
[0050]從區(qū)塊緩沖器讀取值的可編程處理級優(yōu)選地以與諸如片段著色器的處理管道的其它可編程級類似的方式操作,但是能夠讀取并且優(yōu)選地寫入到區(qū)塊緩沖器(以直接的方式)。
[0051]可編程處理電路可以讀取與正在處理的區(qū)塊的每個渲染對象中的同一像素位置關聯(lián)的采樣值。這可以在例如延遲著色操作是延遲光照操作的情況下是適合的。
[0052]替選地或額外地,可編程處理級可以讀取與每個渲染對象中的不同像素關聯(lián)的采樣值(即,高效地可以構造為能夠使用針對區(qū)塊緩沖器中存儲的多個渲染對象的隨機訪問)。這在正在執(zhí)行更復雜的延遲著色操作的情況下可以是適合的。
[0053]因此,在優(yōu)選實施方式中,可編程處理級能夠從區(qū)塊緩沖器讀取值,以對于存儲在區(qū)塊緩沖器中的數據所表示的各像素位置,對于沒有與有問題的像素位置關聯(lián)的一個或更多個采樣位置讀取區(qū)塊緩沖器中存儲的數據,并且使用讀取的采樣位置數據執(zhí)行處理操作(在適合的圖形程序指令的控制下)。這意味著當執(zhí)行針對給定像素位置的處理操作時(當執(zhí)行針對給定像素位置的線程時)的可編程處理級沒有被約束為僅讀取(使用)與該像素位置關聯(lián)的渲染對象中的采樣值,而是能夠讀取(和使用)與其它像素位置關聯(lián)的采樣值。換言之,可編程處理級以“隨機訪問”的方式高效地訪問區(qū)塊緩沖器,而不是例如僅對于當前像素的數據進行非常受限的訪問。
[0054]因此,當執(zhí)行圖形處理線程以生成針對給定像素位置的結果時,可編程處理級優(yōu)選地讀取和使用至少一個存儲在與不同像素(像素位置)關聯(lián)的每個渲染對象中的采樣值。在優(yōu)選實施方式中,讀取并使用來自多個不同像素(像素位置)的采樣值。
[0055]可編程處理級能夠對于各處理操作從各渲染對象讀取單個采樣值,或者能夠從每個輸入數據渲染對象讀取多個采樣值作為其處理操作的輸入(這些可以都針對同一像素位置,但是優(yōu)選地針對多個不同像素位置)。因此,可編程處理級能夠優(yōu)選地讀取與一個渲染對象的多個像素關聯(lián)的采樣值,以及讀取與多個渲染對象的像素關聯(lián)的采樣值。由可編程處理級執(zhí)行的處理操作可以生成單個或多個輸出值。
[0056]可編程處理級能夠將其處理操作的結果寫回到區(qū)塊緩沖器和/或外部存儲器。在優(yōu)選實施方式中,在可編程處理級能夠將其處理的結果直接寫入到外部存儲器的情況下,其能夠使用從可編程處理級到存儲器的通用加載/存儲來進行。
[0057]在特別優(yōu)選的實施方式中,可編程處理級將其對于區(qū)塊緩沖器中的數據值的延遲著色操作的結果寫入到已經分配用于接收和存儲延遲著色操作的區(qū)塊緩沖器中的另外的渲染對象。這另外的渲染對象然后優(yōu)選地接下來寫入到外部存儲器,但是可以根據需要由可編程處理級讀回以進行進一步的處理操作。該獲得的渲染對象能夠通過觸發(fā)從區(qū)塊緩沖器寫出的固定功能來寫出到外部存儲器。
[0058]在結果被寫回到區(qū)塊緩沖器的情況下,可編程處理級能夠優(yōu)選地將結果寫入到區(qū)塊緩沖器中輸出渲染對象中多于一個的采樣和/或像素位置,并且優(yōu)選地寫入到輸出渲染對象中的各和/或一個或更多個不同像素位置(在適合的圖形程序指令的控制下)。因此,可編程處理級能夠優(yōu)選地將結果寫入到渲染對象中的任何位置(并且不僅是當前位置(像素位置)或讀取數據的位置(像素位置))。還可以將結果根據需要寫入到區(qū)塊緩沖器中多于一個的“輸出”渲染對象。因此,在優(yōu)選實施方式中,可編程處理級支持多個渲染對象輸入和多個渲染對象輸出中的至少一個,并且優(yōu)選地支持這兩者。
[0059]因此,可編程處理級優(yōu)選地被構造為能夠對于區(qū)塊緩沖器中的每個像素和采樣具有完全的讀取訪問(沒有生成對于外部存儲器的帶寬流量)。還優(yōu)選的是因此能夠具有對于區(qū)塊緩沖器中的像素和采樣具有完全的寫入訪問而沒有產生對于外部存儲器的帶寬流量。
[0060]類似地,在優(yōu)選實施方式中,可編程處理級可操作以響應于圖形程序指令,從有問題的區(qū)塊的存儲的渲染對象內的多個不同像素讀取采樣值作為對于其處理的輸入和/或將其輸出結果寫入到與區(qū)塊緩沖器中輸出渲染對象中多個不同像素關聯(lián)的采樣值。
[0061]可編程處理級優(yōu)選地從已經為延遲著色操作生成的多個輸入數據渲染對象中的全部讀取數據值作為其處理操作的輸入值,但是也能夠使用來自輸入數據渲染對象中的一些而不是全部的輸入值。
[0062]在優(yōu)選實施方式中,可操作以從區(qū)塊緩沖器讀取值的可編程處理級被構造為還能夠從外部存儲器讀取值(并且具有對于外部存儲器的完全隨機訪問)。這可以例如通過向可編程處理級提供適合的程序指令來實現(xiàn)。
[0063]在優(yōu)選實施方式中,能夠防止區(qū)塊緩沖器的特定區(qū)塊和/或渲染對象的固定功能寫出。這可以在下述情況下是有用的,例如區(qū)塊和/或渲染對象中存儲的數據實際不需要位于圖形處理管道外部或者數據可以借助于其它方式(例如,使用外部存儲器訪問進行寫出的可編程處理級的其它手段)來寫出。能夠以靜態(tài)(即,預先確定禁止寫出)的方式來執(zhí)行區(qū)塊和/或渲染對象的固定功能寫出的防止,或者能夠以動態(tài)的方式(在使用中)防止。類似地,區(qū)塊和/或渲染對象的固定功能寫出能夠例如公共地在所有區(qū)塊上防止,或者對于每個區(qū)塊動態(tài)地進行選擇。
[0064]在優(yōu)選實施方式中,可編程處理級能夠操作以防止區(qū)塊緩沖器的特定區(qū)塊和/或渲染對象的固定功能寫出。這優(yōu)選地響應于針對可編程處理級的特定圖形程序指令。這將然后允許應用編程器例如可選地和動態(tài)地對于每個區(qū)塊防止區(qū)塊緩沖器的特定區(qū)塊和/或渲染對象的固定功能寫出。
[0065]可編程處理級的操作優(yōu)選地通過對其將要執(zhí)行處理操作的區(qū)塊的區(qū)塊列表中包括適合的命令來觸發(fā)。響應于該命令,圖形處理管道優(yōu)選地首先等待直到進行的所有片段處理操作(片段著色器)被托付給區(qū)塊緩沖器(即,直到區(qū)塊的所有輸入數據渲染對象的片段的渲染已經完成-這確保了區(qū)塊緩沖器中的數據在開始延遲著色區(qū)塊緩沖數據處理操作之前完成)。可編程處理級然后對于區(qū)塊緩沖器中的渲染對象的值執(zhí)行延遲著色處理操作。這優(yōu)選地通過大量生成給定數目的線程并且利用輸入向量將其區(qū)分(輸入向量能夠例如表示區(qū)塊(渲染對象)的線程將要工作的區(qū)域)來進行。然后,一旦所有區(qū)塊緩沖渲染對象數據處理線程已經完成,則能夠正常地恢復“正常”渲染。
[0066]在優(yōu)選實施方式中,編程器還能夠在管道上信令可編程處理級進行的區(qū)塊緩沖器中的值的處理已經完成,使得然后能夠執(zhí)行進一步的渲染操作。
[0067]在優(yōu)選實施方式中,使用API (應用程序接口 ;應用能夠使用該特征所通過的接口)機制來觸發(fā)和控制可編程處理級的操作。例如,應用API調用和命令能夠被配置為觸發(fā)各自的區(qū)塊緩沖數據處理操作,并且例如對于有問題的區(qū)塊將適合的命令添加到區(qū)塊列表。
[0068]例如,“開始區(qū)塊處理”命令能夠響應于涉及區(qū)塊緩沖數據處理操作(并且在優(yōu)選實施方式中,這是進行的操作)的特定API調用添加到影響的區(qū)塊的區(qū)塊(命令)列表。該API調用優(yōu)選地還指定區(qū)塊緩沖數據處理操作將要操作的畫面的區(qū)域。
[0069]延遲著色操作能夠是任何適合的想要的延遲著色操作。
[0070]包含用于延遲著色操作的數據的多個輸入數據渲染對象的渲染能夠根據需要觸發(fā)和執(zhí)行,例如并且優(yōu)選地通過對于有問題的圖形處理管道以正常的方式觸發(fā)適合的渲染操作。如本領域中公知的,針對延遲著色操作的輸入數據渲染對象可以包括顏色數據、深度數據、表面法線、其它屬性等等。
[0071]用于多個渲染對象的區(qū)塊可以以任何適合的想要的方式存儲在區(qū)塊緩沖器中。例如,可以在對于各渲染對象在旁邊設置的區(qū)塊緩沖器中存在固定分配。
[0072]—旦給定組的輸入數據渲染對象已經存儲在區(qū)塊緩沖器中,可編程處理級然后使用該數據來執(zhí)行延遲著色操作。該操作優(yōu)選地通過在針對有問題的區(qū)塊的區(qū)塊列表中包括適合的命令來觸發(fā),如上所述??删幊烫幚砑墝⑷缓髲亩鄠€渲染對象中的一些或全部讀取數據,對該數據進行處理并且將結果寫入到區(qū)塊緩沖器中的另外的渲染對象或直接寫入到外部存儲器。
[0073]如本領域技術人員所了解的,該處理將對于將要生成的整個渲染輸出(例如,幀)的每個區(qū)塊重復,直到最終的輸出(例如,幀)已經完成(并且寫入到外部存儲器)。
[0074]在特別優(yōu)選實施方式中,本發(fā)明的方法進一步包括防止(并且本發(fā)明的管道被構造為防止)區(qū)塊緩沖器的初始輸入數據渲染對象的寫出,從而只有最終輸出渲染對象在數據被從區(qū)塊緩沖器寫出到外部存儲器時從區(qū)塊緩沖器寫出(即,被布置為只有最終(輸出結果)渲染對象被寫入到外部存儲器)。這也節(jié)省了用于那些渲染對象的寫入帶寬以及外部存儲器中那些渲染對象的存儲器的內存占用。這將允許以特定的帶寬高效方式執(zhí)行延遲著色和光照,這是因為其能夠允許整個延遲著色處理以逐個區(qū)塊的方式在管道上進行并且具有零外部帶寬開銷。
[0075]在該情況下,如上所述,能夠以靜態(tài)的方式執(zhí)行渲染對象的固定功能寫出(即,預定禁止寫出),或者能夠以動態(tài)的方式(在使用中)防止。
[0076]在特別優(yōu)選實施方式中,可編程處理級操作以禁止并且防止渲染對象的輸入數據組到外部存儲器的固定功能寫出(例如,并且優(yōu)選地,以上述方式)。
[0077]圖形處理管道還可以包含圖形處理管道可以包含的任何其它適合且想要的處理級,例如,早期深度(或早期深度和模板)測試器、后期深度(或深度和模板)測試器、混合
--寸寸ο
[0078]本發(fā)明能夠用于圖形處理管道可以用于生成例如用于顯示的幀、渲染至紋理輸出等等的所有形式的輸出。
[0079]在特別優(yōu)選的實施方式中,本發(fā)明的各種功能在單個圖形處理平臺上執(zhí)行,其生成并輸出例如寫入到用于顯示裝置的幀緩沖器的渲染片段數據。
[0080]本發(fā)明能夠在任何適合的系統(tǒng)中實施,例如,適當地配置的微處理器系統(tǒng)。在優(yōu)選實施方式中,本發(fā)明在計算機和/或微處理器系統(tǒng)中。
[0081]本發(fā)明的各種功能能夠以任何想要的適合的方式執(zhí)行。例如,本發(fā)明的功能能夠根據需要以硬件或軟件來實施。因此,例如,除非另有所述,否則,本發(fā)明的各種功能元件和“裝置”可以包括適合的處理器、控制器、功能單元、電路、處理邏輯、微處理器布置等等,其可操作來執(zhí)行各種功能等等,例如適當的專用硬件元件和/或能夠被編程來以想要的方式操作的可編程硬件元件。
[0082]這里還應注意的是,如本領域技術人員所了解的,本發(fā)明的各種功能等等可以在給定處理器上復用和/或并行地執(zhí)行。同樣地,各種處理級可以根據需要共享處理電路等坐寸ο
[0083]執(zhí)行上述特定功能所需的任何硬件,圖形處理管道能夠包括圖形處理管道包括的通常功能單元等等中的任意一個或更多個或全部。
[0084]本領域技術人員還將了解的是,本發(fā)明的上述方面和實施方式中的全部能夠并且優(yōu)選地適當地進行這里描述的優(yōu)選的可選的特征中的任意一個或更多個或全部。
[0085]根據本發(fā)明的方法可以至少部分地使用軟件(例如,計算機程序)來實施。因此將看到的是,當從進一步的方面看時,本發(fā)明提供了在安裝在數據處理裝置上時專用于執(zhí)行這里描述的方法的計算機軟件、包括用于在程序元素運行在數據處理裝置上時執(zhí)行這里描述的方法的計算機軟件代碼部分的計算機程序元素以及包括用于在程序運行在數據處理系統(tǒng)上時執(zhí)行這里描述的方法的所有步驟的代碼裝置的計算機程序。數據處理器可以是微處理器系統(tǒng)、可編程FPGA(場可編程門陣列)等等。
[0086]本發(fā)明還擴展到計算機軟件載體,其包括當用于操作圖形處理器、渲染器或包括數據處理裝置的微處理器系統(tǒng)時與所述數據處理裝置結合地使得所述處理器、渲染器或系統(tǒng)執(zhí)行本發(fā)明的方法的步驟的軟件。這樣的計算機軟件載體能夠是諸如ROM芯片、CD ROM、RAM、閃存或盤的物理存儲介質,或者能夠是諸如通過電線的電信號、例如針對衛(wèi)星等等的無線電信號或光學信號。
[0087]進一步了解的是,不是本發(fā)明的方法的所有步驟都需要由計算機軟件來執(zhí)行,并且因此根據更廣泛的方面,本發(fā)明提供了計算機軟件和安裝在計算機軟件載體上的這樣的軟件,用于執(zhí)行這里闡述的方法的步驟中的至少一個。
[0088]本發(fā)明可以因此適合地實施為計算機程序產品以與計算機系統(tǒng)一起使用。這樣的實施方式可以包括固定在有形的非瞬時性的介質(例如,計算機可讀介質(例如,磁盤、⑶-ROM、ROM、RAM、閃存或硬盤))上的一系列計算機可讀指令。還能夠包括可經由調制解調器或其它接口裝置經由有形介質(包括但不限于光學或模擬通信線路)或者無形地使用無線技術(包括但不限于微波、紅外或其它傳輸技術)發(fā)送到計算機系統(tǒng)的一系列計算機可讀指令。該一系列計算機可讀指令實施這里描述的功能的全部或一部分。
[0089]本領域技術人員將了解的是,這樣的計算機可讀指令能夠以多種編程語言來編寫以與很多計算機架構或操作系統(tǒng)一起使用。此外,這樣的指令可以使用任何存儲技術(當前或將來的,包括但不限于半導體、磁性或光學)來存儲,或者使用任何通信技術(當前或將來的,包括但不限于光學、紅外或微波)來發(fā)送??上氲降氖?,這樣的計算機程序產品可以作為具有隨附的打印或電子文檔的可移除介質(例如,拆封軟件)來分發(fā),利用計算機系統(tǒng)例如預先加載在系統(tǒng)ROM或固定盤上,或者在網絡(例如,因特網或萬維網)上從服務器或電子公告板分發(fā)。

【專利附圖】

【附圖說明】
[0090]現(xiàn)在將參考附圖借助于示例來描述本發(fā)明的多個優(yōu)選實施方式,其中:
[0091]圖1示意性地示出了能夠以本發(fā)明的方式操作的圖形處理管道;以及
[0092]圖2和圖3示意性地示出了圖1的圖形處理管道的操作的優(yōu)選實施方式。

【具體實施方式】
[0093]在附圖中,在適當的情況下,使用相同的附圖標記用于相同的組件。
[0094]現(xiàn)在將在用于顯示的計算機圖形的處理的背景下描述本發(fā)明的優(yōu)選實施方式。
[0095]如本領域中了解的,如上所述,當將要顯示計算機圖形圖像時,通常首先定義為一系列圖元(多邊形),其圖元然后被劃分(光柵化)為用于圖形渲染的圖形片段。在正常圖形渲染操作期間,渲染器將修改(例如)與每個片段關聯(lián)的顏色(紅色、綠色和藍色,RGB)和透明度(阿爾法,α )數據,從而能夠正確地顯示片段。一旦片段被完全地經過了渲染器,則其關聯(lián)數據值被存儲在存儲器中,以便于輸出用于顯示。
[0096]圖1示意性地示出了可以根據本發(fā)明操作的圖形處理管道I。圖1中所示的圖形處理管道是基于區(qū)塊的渲染器并且因此如本領域中已知的,將產生渲染輸出數據陣列的區(qū)塊,例如,將生成的輸出幀。
[0097](如本領域中已知的,在基于區(qū)塊的渲染(而不是整個渲染輸出(例如,幀))中,高效地一次進行處理,如立即模式渲染中那樣,渲染輸出(例如,將要顯示的幀)被分為多個較小的子區(qū)域(通常稱為“區(qū)塊”)。每個區(qū)塊(子區(qū)域)被單獨地(通常是一個接一個渲染),并且渲染區(qū)塊(子區(qū)域)然后重組以提供完整的渲染輸出(例如,用于顯示的幀)。在這樣的方案中,渲染輸出通常被分為常規(guī)大小和形狀的子區(qū)域(區(qū)塊)(其通常例如為方形或矩形),但是這不重要)。
[0098]渲染輸出數據陣列可以(如本領域中已知的)通常是用于顯示在顯示裝置(例如,屏幕或打印機)上的輸出真,但是也可以例如包括用于在以后的渲染處理(也已知為“渲染至紋理”輸出)的中使用的中間數據。
[0099]圖1示出了與本實施方式的操作相關的圖形處理管道I的主要元件和管道級。如本領域技術人員所了解的是,可以存在圖形處理管道的圖1中未示出的其它元件。還應注意的是,圖1僅是示意性的,并且例如,在實際中,所使出的功能元件和管道級可以共享硬件電路,即使在圖1中示意性地示出為單獨的級。還將了解的是,如圖1中所示的圖形處理管道的級、元件和單元等等中的每一個可以根據需要來實施,并且因此將包括適當的用于執(zhí)行所需操作和功能的電路和/或處理邏輯。
[0100]圖1示意性地示出了已經生成了用于光柵化處理的輸入的圖形圖元(多邊形)2之后的管道級。因此,這時,圖形數據(頂點數據)進行了片段前端操作8 (例如,變形和光照操作(未示出)),并且圖元建立級(未示出)響應于提供給圖形處理器的命令和頂點數據建立將要渲染的圖元,如本領域中公知的那樣。
[0101]如圖1中所示,圖形處理管道I的該部分包括多個級,包括光柵化級3、早期Z(深度)和模板測試級4、片段著色級6的形式的渲染器、后期Z (深度)和模板測試級7、混合級9、區(qū)塊緩沖器10和下采樣和寫出(多采樣調色)級13。
[0102]如本領域中已知的,圖形處理管道I的光柵化級3操作以將構成渲染輸出(例如,將要顯示的圖像)的圖元光柵化為用于處理的各圖形片段。為此,光柵化3接收用于渲染的圖形圖元2,將圖元光柵化為采樣點并且生成具有適合的位置的圖形片段(表示適合的采樣位置)以渲染圖元。
[0103]由光柵器生成的片段然后被繼續(xù)發(fā)送給管道的其余部分以進行處理。
[0104]早期V模板級4對其從光柵器3接收的片段執(zhí)行本領域中已知的Z (深度)測試,以查看在該級是否能夠丟棄任何片段。為此,其將從光柵器3發(fā)出的片段(關聯(lián)的)深度值與已經渲染的片段的深度值(存儲在作為區(qū)塊緩沖器10的一部分的深度(Z)緩沖器中存儲的深度值),以確定新的片段是否將被已經渲染的片段堵塞。這時,執(zhí)行早期模板測試。
[0105]經過片段早期Z和模板測試級4的片段然后被發(fā)送給片段著色級6。片段著色級6對于經過早期Z和模板測試的片段執(zhí)行適合的片段執(zhí)行操作,以對片段進行處理以生成適合的渲染片段數據,如本領域中公知的。
[0106]該片段處理可以包括任何適合的想要的片段著色處理,例如,對于片段執(zhí)行片段著色器程序,將紋理應用于片段,向片段應用霧化或其它操作等等以生成適合的片段數據,如本領域中所公知的。在本實施方式中,片段著色級6處于著色器管道(可編程片段著色器)的形式,但是可以根據需要除了固定功能片段著色單元之外或替代固定功能片段著色單元來使用其它方案。
[0107]然后,“后期”片段Z和模板測試級7對于共享片段執(zhí)行管道深度測試的末端以確定渲染片段將在最終圖像中實際看見。該深度測試使用區(qū)塊緩沖器10中Z緩沖器中存儲的針對片段的位置的Z緩沖器值以通過(如本領域中公知的那樣)比較從片段著色級6發(fā)出的片段的(關聯(lián)的)深度值與已經渲染的片段的深度值(深度緩沖器中存儲的)進行比較來確定用于新片段的片段數據是否應替換已經渲染的片段的片段數據。該后期片段深度和模板測試級7還對于片段執(zhí)行任何需要的“后期”阿爾法和/或模板測試。
[0108]經過后期片段測試級7的片段然后根據需要利用已經存儲在混合器9中的區(qū)塊緩沖器10中的片段進行任何需要的混合操作。對于片段的任何需要的其它操作(例如,遞色,等等(未示出))也在該級執(zhí)行。
[0109]最終,(混合后的)輸出片段數據(值)被從他們能夠輸出到幀緩沖器用于顯示的地方寫入到區(qū)塊緩沖器10。用于輸出片段的深度值也適當地寫入到區(qū)塊緩沖器10內的Z緩沖器。(區(qū)塊緩沖器將如本領域中公知的那樣存儲顏色并且存儲適當的顏色等等或Z值的深度緩沖器存儲分別用于緩沖表示(對于正在處理的區(qū)塊的每個采樣點來說是重要的)的每個采樣點的深度緩沖器)。這些緩沖器如本領域中公知的那樣存儲表示整個渲染輸出(例如將要顯示的圖像)的部分(區(qū)塊)的片段數據的陣列,緩沖器中的各組采樣值對應于整個渲染輸出的各像素(例如,每個2 X 2組的采樣值可以對應于輸出像素,其中,使用4的倍數)。
[0110]在本實施方式中,區(qū)塊緩沖器將其片段數據存儲為32X32陣列(即,對應于將要生成的輸出中(例如,將要顯示的圖像中)的采樣位置的32X32陣列)。區(qū)塊緩沖器中的每個32X32數據位置陣列能夠因此對應于(并且將“自然地”支持)例如將以4倍抗鋸齒(SP,當每個像素取4個采樣時)顯示的幀的16X16像素“區(qū)塊”。
[0111]區(qū)塊緩沖器被設置為位于圖形處理管道(芯片)上的RAM的一部分。
[0112]來自區(qū)塊緩沖器10的數據被輸入到下采樣(多采樣調色)寫出單元13,并且因此輸出(寫回)到諸如顯示裝置(未示出)的幀緩沖器的外部存儲器輸出緩沖器。(顯示裝置能夠包括例如包括像素的陣列的顯示器(例如,計算機監(jiān)視器或打印機))。
[0113]下采樣和寫出單元13將區(qū)塊緩沖器10中存儲的片段數據下采樣到適合的分辨率用于輸出緩沖器(裝置)(即,使得生成對應于輸出裝置的像素的像素數據的陣列),以生成用于輸出到輸出緩沖器的輸出值(像素)。
[0114]一旦已經處理了渲染輸出的區(qū)塊并且其數據輸出到主存儲器(例如,主存儲器(未示出)中的幀緩沖器)以進行存儲,然后對下一區(qū)塊進行處理,以此類推,直到已經處理了足夠的區(qū)塊,以生成整個渲染輸出(例如,將顯示幀(圖像))。然后對于下一渲染輸出(例如,幀)重復該處理,以此類推。
[0115]用于圖形處理管道I的其它布置將當然也是可能的。
[0116]上面描述了圖1中所示的圖形處理系統(tǒng)的操作的特征?,F(xiàn)在將描述根據本發(fā)明的實施方式的圖1中所示的圖形處理系統(tǒng)的操作的進一步的特征。
[0117]如圖1中所示,圖形處理管道I還包括能夠讀取區(qū)塊緩沖器10中的存儲值的區(qū)塊著色器14的形式的可編程處理級以對于這些值執(zhí)行處理操作,并且然后將其處理操作的結果寫回到區(qū)塊緩沖器10或經由區(qū)塊寫出單元13輸出到主存儲器。該區(qū)塊著色操作因此利用由片段著色器等等產生的存儲在區(qū)塊緩沖器10中作為其輸入的渲染片段之而不要求那些片段值寫出到外部存儲器并且然后通過圖形處理管道I讀回以便于執(zhí)行區(qū)塊著色器處理操作。這允許以更少的存儲器帶寬和能耗執(zhí)行更多種的處理操作。
[0118]本實施方式中的區(qū)塊著色器級14與片段著色器6共享處理電路。因此,區(qū)塊著色器14和片段著色器6由可編程硬件級形式的共享硬件來提供,該可編程硬件級能夠執(zhí)行一系列圖形處理線程以首先生成并且然后在區(qū)塊緩沖器10中存儲片段數據值,并且然后執(zhí)行第二系列的圖形處理線程以處理區(qū)塊緩沖器10內的片段數據值。
[0119](換言之,存在可編程硬件元件(電路),其能夠由適合的圖形程序指令配置為執(zhí)行片段著色操作(從而用作片段著色器6)或者執(zhí)行區(qū)塊著色操作(從而用作區(qū)塊著色器14)。該可編程硬件元件支持多線程處理并且因此能夠進行這些功能和其它功能)。
[0120]在本實施方式中,區(qū)塊著色器14通過利用新的著色器類型的OpenGL ES著色語言GL_TILE_SHADER和新的內置變量來實施。這允許支持區(qū)塊著色器級14以嵌入在現(xiàn)有的著色器編程模型內。該新的著色器類型沒有附于程序對象,而是附于幀緩沖器對象。在本實施方式中,區(qū)塊著色器14如常規(guī)的OpenGL ES著色器那樣工作,但是允許針對通用存儲器的讀取和寫入的功能、使用圖像寫入功能的隨機寫入-訪問至紋理和用于針對區(qū)塊緩沖器的讀取和寫入的功能。
[0121]區(qū)塊著色器14能夠讀取區(qū)塊緩沖器10中的區(qū)塊內的任何位置作為針對任何給定的處理操作(例如,線程)的輸入,并且還能夠將數據寫入到存儲在區(qū)塊緩沖器10中的區(qū)塊內的任何位置。這在本實施方式中借助于下述API函數來實施:
[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中存儲的多個渲染對象(多個顏色緩沖器)的情況下使用),
[0128]ms =采樣的索引(在實施多采樣的情況下)并且
[0129]1c =畫面空間中的像素坐標。
[0130]從區(qū)塊著色器14寫出能夠利用從區(qū)塊著色器14到存儲器的通用加載/存儲或者通過將數據寫回到區(qū)塊緩沖器10并且然后觸發(fā)利用寫出單元13的固定功能寫出來進行。
[0131]區(qū)塊著色器14還能夠觸發(fā)或防止特定區(qū)塊緩沖器組件的常規(guī)寫出。這在本實施方式中通過調用函數 gl_WriteOutColorTile (cb, [s]), gl_ffriteOutDepthTile ([s])來實現(xiàn),其中,cb是顏色緩沖器索引并且s是使用的采樣索引(該索引控制哪個采樣將寫出作為最終值)。這些函數標志顏色或深度緩沖器是否寫出區(qū)塊。(在區(qū)塊著色器已經結束其處理之后發(fā)生寫出(如果需要))。
[0132]在本實施方式中,利用為此目的的API調用來觸發(fā)區(qū)塊著色器14的操作:
[0133]glResolveTiles (x, y, w, h, xthreads, ythreads)
[0134]該“調色”API調用的效果是“調色”(開始區(qū)塊處理/區(qū)塊著色器觸發(fā))命令被添加到包含調色API調用(像素坐標(x,y,w,h))中指示的矩形內的像素的每個區(qū)塊的命令列表。
[0135]然后,當區(qū)塊由圖形處理管道處理并且在區(qū)塊命令列表中遇到“調色”命令時,圖形處理管道I如下地進行操作。
[0136]首先,其等待針對當前區(qū)塊的所有生成的片段線程完成并且付諸于區(qū)塊緩沖器。這確保了區(qū)塊緩沖器在區(qū)塊著色器14開始其操作之前包含了用于有問題的區(qū)塊的最終渲染數據。
[0137]區(qū)塊著色器線程然后為位于當前區(qū)塊內的每個位置發(fā)出以對于位于當前區(qū)塊內的每個位置執(zhí)行區(qū)塊著色器程序。每個線程對于區(qū)塊內的給定像素執(zhí)行相關的區(qū)塊著色處理,并且可以額外地從與不同像素或者從替代其實際“處理”的像素的不同像素關聯(lián)的采樣位置存取作為其輸入數據。一旦完成了所有區(qū)塊著色線程,則然后恢復命令列表。
[0138]在本實施方式中,區(qū)塊著色器14用于在寫入到外部存儲器之前對于區(qū)塊緩沖器10中的渲染區(qū)塊執(zhí)行延遲處理操作。這可以執(zhí)行延遲光照或者任何其它想要的延遲著色操作。
[0139]區(qū)塊著色器14能夠用于允許對于每個區(qū)塊進行整個延遲著色處理,從而顯著地節(jié)省用于執(zhí)行延遲著色的外部存儲器帶寬。為此,區(qū)塊緩沖器10被構造為能夠同時保持多個渲染對象,從而用于積累輸出結果的多個G緩沖器和顏色緩沖器能夠同時存儲在區(qū)塊緩沖器10中。這可以根據需要來實現(xiàn)。例如,可以是能夠容納的足夠大小的區(qū)塊緩沖器(實際上在任何情況下用于多個區(qū)塊的顏色緩沖器)。在該情況下,每個區(qū)塊顏色緩沖器能夠被指定為適合的渲染對象。
[0140]在該處理中,圖形處理管道I首先被控制為對于各單獨的渲染對象渲染延遲著色操作所要求的渲染幾何形狀(G緩沖器)。該處理可以生成例如包括然后對于將要生成的整個渲染輸出(例如,幀)的各區(qū)塊單獨存儲在區(qū)塊緩沖器10中的顏色、深度、表面法線和其它屬性的渲染對象。(如本領域中公知的,當執(zhí)行延遲著色時,這些值然后用于進行復雜的光計算和構成以產生最終的想要的輸出結果。)
[0141]一旦已經對于有問題的區(qū)塊生成了這些渲染對象,則區(qū)塊著色器14操作能通過將適合的調色命令包括在區(qū)塊命令列表中來觸發(fā),區(qū)塊著色器14被適當地控制以從區(qū)塊緩沖器10中的多個渲染對象讀取數據,對這些數據進行處理,并且然后將處理結果寫入到區(qū)塊緩沖器10中的單獨的輸出顏色緩沖器渲染對象。
[0142]在該操作中,區(qū)塊著色器14將因此從區(qū)塊緩沖器10中存儲的生成的渲染對象中的一些或全部讀取存儲的采樣值作為輸入值,使用這些值進行延遲著色操作并且然后將該操作的結果存儲在已經為此分配的單獨的輸出顏色緩沖器中。根據正在進行的延遲著色操作,對于給定像素執(zhí)行延遲著色操作時的區(qū)塊著色器14可以僅讀取與各渲染對象中的像素關聯(lián)的采樣值和/或可以讀取與每個渲染對象中一個或更多個其它(不同)像素關聯(lián)的采樣值。區(qū)塊著色器14被構造為能夠在適合的圖形程序指令的控制下執(zhí)行這些任務中的任一個。
[0143]一旦該操作已經完成,則區(qū)塊著色器14優(yōu)選地觸發(fā)輸出結果渲染對象到外部存儲器的寫出,但是禁止將包含G緩沖器的渲染對象寫入到存儲器,從而只有用于幀緩沖器的最終區(qū)塊被寫入到存儲器。這能夠使用上述適合的區(qū)塊寫入功能來實現(xiàn)。這節(jié)省了在用于延遲著色操作的第一處理中生成的多個渲染對象要求的針對外部存儲器的讀取和寫入帶寬。
[0144]處理應對于將要生成的輸出的每個區(qū)塊進行重復,使得能夠生成最終的延遲著色輸出(例如,幀)。
[0145]圖2和圖3示出了該處理。圖2示出了該處理,并且圖3示意性地示出了區(qū)塊緩沖器10中的渲染對象的布置。
[0146]如圖2中所示,圖形處理管道(可以例如運行在主處理器上)的驅動器將接收API調用以渲染用于延遲著色操作的多個渲染對象,并且然后執(zhí)行區(qū)塊著色器“調色”操作以對于多個渲染對象執(zhí)行延遲著色操作(步驟20)。響應于此,驅動器將生成適合的區(qū)塊命令列表,包括用于渲染多個輸入渲染對象的命令,之后是觸發(fā)區(qū)塊著色操作的“調色”命令,以及使得區(qū)塊著色器執(zhí)行延遲著色操作的命令(步驟21)。
[0147]這些命令列表然后被提供給圖形處理管道(步驟22),其然后響應于這些命令,渲染用于整個渲染輸出的每個區(qū)塊的多個輸入數據渲染對象(步驟23)以將多個輸入數據渲染對象30逐個區(qū)塊地存儲在區(qū)塊存儲器10中。由于渲染了針對每個區(qū)塊的多個渲染對象,因此,當圖形處理管道看到區(qū)塊“調色”命令(步驟24)時,其等待直到進行的所有渲染操作已經完成并且然后執(zhí)行適合的區(qū)塊著色器程序以使用存儲的多個渲染對象執(zhí)行延遲著色操作31 (步驟25)。延遲著色操作的結果被寫入到區(qū)塊緩沖器10中的另外的“輸出”渲染對象32(步驟26)。一旦已經處理了有問題的區(qū)塊,“輸出”渲染對象區(qū)塊32被寫出到外部存儲器,同時防止寫出多個輸入數據值渲染對象30 (步驟27)。處理然后移動到下一區(qū)塊(步驟28)直到處理了用于渲染輸出的所有區(qū)塊(步驟29)。
[0148]從上面能夠看到的是,本發(fā)明,在其優(yōu)選實施方式中,至少提供了下述機制:能夠在圖形處理管道內對于旋繞區(qū)塊數據執(zhí)行延遲著色操作,從而避免了針對外部存儲的數據的存儲和接下來的再存儲。在本發(fā)明的優(yōu)選實施方式中,這至少通過提供可編程處理級來實現(xiàn),該可編程處理級能夠讀取區(qū)塊緩沖器中的數據,對該數據進行處理并且然后將數據寫入到區(qū)塊緩沖器或者寫出到外部存儲器,而不許將區(qū)塊緩沖器中的數據寫入到外部存儲器或從外部存儲器進行讀取。
【權利要求】
1.一種操作基于區(qū)塊的圖形處理管道的方法,所述基于區(qū)塊的圖形處理管道包括: 多個處理級,所述多個處理級至少包括光柵器,該光柵器對輸入圖元進行光柵化以生成待處理的圖形片段,每個圖形片段具有與其關聯(lián)的一個或更多個采樣點;以及渲染器,所述渲染器對由所述光柵器生成的片段進行處理以生成渲染后的片段數據; 區(qū)塊緩沖器,所述區(qū)塊緩沖器被構造為在渲染后的片段數據被寫出到外部存儲器之前相對于所述圖形處理管道本地地存儲所述渲染后的片段數據; 寫出級,所述寫出級被構造為將所述區(qū)塊緩沖器中存儲的數據寫入到外部存儲器;以及 可編程處理級,所述可編程處理級可操作以響應于一個或更多個圖形程序指令讀取所述區(qū)塊緩沖器中存儲的數據,使用所讀取的數據執(zhí)行處理操作,以及將所述處理操作的結果寫入到所述區(qū)塊緩沖器中或者寫入到外部存儲器; 所述方法包括: 對包含將在延遲著色操作中使用的數據的多個渲染對象進行渲染并且將所述多個渲染對象作為不同的渲染對象存儲在所述區(qū)塊緩沖器中;以及 使用所述可編程處理級來從所述區(qū)塊緩沖器中的所存儲的多個渲染對象中的兩個或更多個讀取數據,使用所讀取的數據執(zhí)行延遲著色處理操作,以及將所述處理操作的結果寫入到所述區(qū)塊緩沖器中的輸出渲染對象或者寫入到外部存儲器。
2.根據權利要求1所述的方法,其中,所述可編程處理級讀取用于正在處理的區(qū)塊的每個渲染對象中與同一像素位置關聯(lián)的采樣值。
3.根據權利要求1或2所述的方法,其中,所述可編程處理級讀取每個渲染對象中與不同像素位置關聯(lián)的采樣值。
4.根據權利要求1、2或3所述的方法,其中,所述可編程處理級將所述區(qū)塊緩沖器中其對于所述數據值的延遲著色操作的結果寫入到已經分配用于接收和存儲所述延遲著色操作的結果的所述區(qū)塊緩沖器中的另外的渲染對象。
5.根據權利要求1、2、3或4所述的方法,所述方法進一步包括防止從所述區(qū)塊緩沖器的所述初始的輸入數據渲染對象的寫出。
6.根據權利要求1、2、3、4或5所述的方法,其中,所述可編程處理級操作以防止從所述區(qū)塊緩沖器的所述渲染對象中的一個或更多個的固定功能寫出。
7.根據權利要求1、2、3、4、5或6所述的方法,其中,所述可編程處理級的操作是通過將命令包括在將要對其執(zhí)行所述處理操作的區(qū)塊的區(qū)塊列表中來觸發(fā)的。
8.根據權利要求7所述的方法,其中,響應于所述命令,所述圖形處理管道首先等待直到用于所述區(qū)塊的所述輸入數據渲染對象的渲染已經完成并且所述可編程處理級然后對于所述區(qū)塊緩沖器中的所述值執(zhí)行其處理操作。
9.根據前述權利要求中的任一項所述的方法,其中,使用API機制來觸發(fā)和控制所述可編程處理級的操作。
10.一種基于區(qū)塊的圖形處理管道,所述基于區(qū)塊的圖形處理管道包括: 多個處理級,所述多個處理級至少包括光柵器,該光柵器對輸入圖元進行光柵化以生成待處理的圖形片段,每個圖形片段具有與其關聯(lián)的一個或更多個采樣點;以及渲染器,所述渲染器對由所述光柵器生成的片段進行處理以生成渲染后的片段數據; 區(qū)塊緩沖器,所述區(qū)塊緩沖器被構造為在渲染后的片段數據被寫出到外部存儲器之前相對于所述圖形處理管道本地地存儲所述渲染后的片段數據; 寫出級,所述寫出級被構造為將所述區(qū)塊緩沖器中存儲的數據寫入到外部存儲器;以及 可編程處理級,所述可編程處理級可操作以在圖形程序指令的控制下,從所述區(qū)塊緩沖器中存儲的用于延遲著色操作的一組多個渲染對象中的兩個或更多個讀取數據,使用所讀取的數據執(zhí)行延遲著色處理操作,以及將所述處理操作的結果寫入到所述區(qū)塊緩沖器中的輸出渲染對象或者寫入到外部存儲器。
11.根據權利要求10所述的圖形處理管道,其中,所述可編程處理級讀取用于正在處理的區(qū)塊的每個渲染對象中與同一像素位置關聯(lián)的采樣值。
12.根據權利要求10或11所述的圖形處理管道,其中,所述可編程處理級讀取每個渲染對象中與不同像素位置關聯(lián)的采樣值。
13.根據權利要求10、11或12所述的圖形處理管道,其中,所述可編程處理級將所述區(qū)塊緩沖器中其對于所述數據值的延遲著色操作的結果寫入到已經分配用于接收和存儲所述延遲著色操作的結果的所述區(qū)塊緩沖器中的另外的渲染對象。
14.根據權利要求10、11、12或13所述的圖形處理管道,所述圖形處理管道進一步被構造為防止從所述區(qū)塊緩沖器的所述初始的輸入數據渲染對象的寫出。
15.根據權利要求10、11、12、13或14所述的圖形處理管道,其中,所述可編程處理級操作以防止從所述區(qū)塊緩沖器的所述渲染對象中的一個或更多個的固定功能寫出。
16.根據權利要求10、11、12、13、14或15所述的圖形處理管道,其中,所述可編程處理級的操作是通過將命令包括在將要對其執(zhí)行所述處理操作的區(qū)塊的區(qū)塊列表中來觸發(fā)的。
17.根據權利要求16所述的圖形處理管道,其中,響應于所述命令,所述圖形處理管道首先等待直到用于所述區(qū)塊的所述輸入數據渲染對象的渲染已經完成并且所述可編程處理級然后對于所述區(qū)塊緩沖器中的所述值執(zhí)行其處理操作。
18.根據權利要求10至17中的任一項所述的圖形處理管道,其中,使用API機制來觸發(fā)和控制所述可編程處理級的操作。
19.一種計算機程序,所述計算機程序包括在所述程序運行在數據處理系統(tǒng)上時執(zhí)行根據權利要求1至9中的任一項所述的方法的所有步驟的代碼裝置。
【文檔編號】G06T1/00GK104134183SQ201410181969
【公開日】2014年11月5日 申請日期:2014年4月30日 優(yōu)先權日:2013年5月2日
【發(fā)明者】J·尼斯塔德, A·D·恩格-哈斯特韋德, S·卡卡爾拉普迪, M·斯托克斯 申請人:Arm有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
观塘区| 洛浦县| 新丰县| 南昌市| 杭锦后旗| 绥滨县| 甘泉县| 黄浦区| 山阳县| 余干县| 尼勒克县| 芦溪县| 万全县| 灵璧县| 通城县| 怀远县| 通河县| 乌苏市| 绵阳市| 徐州市| 泽库县| 石柱| 南岸区| 土默特右旗| 南华县| 汤阴县| 军事| 怀集县| 若尔盖县| 浠水县| 白银市| 磴口县| 吴桥县| 大兴区| 唐山市| 鹤峰县| 田阳县| 中西区| 健康| 张家口市| 万年县|