TWI912355B - 用於圖形處理單元混合渲染的裝置和方法 - Google Patents
用於圖形處理單元混合渲染的裝置和方法Info
- Publication number
- TWI912355B TWI912355B TW110132268A TW110132268A TWI912355B TW I912355 B TWI912355 B TW I912355B TW 110132268 A TW110132268 A TW 110132268A TW 110132268 A TW110132268 A TW 110132268A TW I912355 B TWI912355 B TW I912355B
- Authority
- TW
- Taiwan
- Prior art keywords
- rendering
- gpu
- pass
- target
- memory
- Prior art date
Links
Abstract
本案涉及用於由圖形處理單元對視訊/圖形內容進行混合渲染的方法和裝置。該設備可以配置顯示裝置的圖形處理單元以針對要在顯示裝置上顯示的場景的訊框執行多個渲染遍次。此外,該裝置可以控制圖形處理單元執行多個渲染遍次中的第一渲染遍次,以產生第一渲染目標,該第一渲染目標被儲存在GPU的片上圖形記憶體或顯示裝置的系統中。該裝置亦可以控制圖形處理單元執行第二渲染遍次,以產生第二渲染目標,該第二渲染目標可替換地儲存在顯示裝置的系統記憶體或GPU的片上圖形記憶體中。
Description
本專利申請案主張於2020年9月30日提出申請的標題為「用於圖形處理單元混合渲染的裝置和方法(APPARATUS AND METHOD FOR GRAPHICS PROCESSING UNIT HYBRID RENDERING)」的美國專利申請案第17/039,873號的優先權,該申請案被轉讓給本發明的受讓人,並且出於所有目,經由引用將其明確併入本文。
本案通常係關於處理系統,更具體地,係關於一或多個用於圖形或電腦處理的技術。
計算設備通常利用圖形處理單元(GPU)或中央處理單元(CPU)來加速圖形資料的渲染以供顯示。這種計算設備可以包括例如電腦工作站、行動電話(諸如所謂的智慧手機)、嵌入式系統、個人電腦、平板電腦和視訊遊戲控制台。GPU執行圖形處理管線(pipeline),該圖形處理管線包括一或多個處理階段,這些處理階段一起操作以執行圖形處理命令並輸出訊框。CPU可以經由向GPU發出一或多個圖形處理命令來控制GPU的操作。現代的CPU通常能夠同時執行多個應用,每個應用可能需要在執行期間利用GPU。為顯示器上的視覺呈現提供內容的設備通常包括GPU。
通常,設備的CPU或GPU被配置成執行電腦或圖形處理中的程序。然而,隨著渲染內容的日益複雜和GPU記憶體的實體限制,對改進的電腦或圖形處理的需求日益增長。
以下呈現了一或多個態樣的簡化概述,以便提供對這些態樣的基本理解。本發明內容不是所有預期態樣的廣泛概述,並且既不意圖標識所有態樣的關鍵元素,亦不意圖圖示任何或所有態樣的範疇。其唯一目的是以簡化的形式呈現一或多個態樣的一些概念,作為稍後呈現的更詳細的描述的序言。
本案涉及用於由圖形處理單元對視訊/圖形內容進行混合渲染的方法和裝置。該裝置可以配置顯示裝置的圖形處理單元以針對要在顯示裝置上顯示的場景的訊框執行多個渲染遍次(pass)。此外,該裝置可以控制圖形處理單元執行多個渲染遍次中的第一渲染遍次,以產生第一渲染目標,該第一渲染目標被儲存在GPU的片上(on-chip)圖形記憶體或顯示裝置的系統中。該裝置亦可以控制圖形處理單元執行第二渲染遍次以產生第二渲染目標,該第二渲染目標可替換地儲存在顯示裝置的系統記憶體或GPU的片上圖形記憶體中。在一個態樣,提供了一種用於對內容進行混合渲染的裝置,該裝置包括:記憶體;及至少一個處理器,其耦合到記憶體,並且被配置成:配置顯示裝置的圖形處理單元(GPU)以針對要在顯示裝置上顯示的場景的至少一個訊框執行複數個渲染遍次;控制GPU執行複數個渲染遍次中的第一渲染遍次,以產生至少一個第一渲染目標,該至少一個第一渲染目標被儲存在GPU的片上圖形記憶體中;及控制GPU執行複數個渲染遍次中的第二渲染遍次,以產生至少一個第二渲染目標,該至少一個第二渲染目標被儲存在顯示裝置的系統記憶體中。在一個態樣,該至少一個第二渲染目標在被儲存在顯示裝置的系統記憶體中之前不被儲存在GPU的片上圖形記憶體中。在一個態樣,該至少一個處理器亦被配置成控制GPU執行解析,以將儲存在GPU的片上圖形記憶體中的該至少一個第一渲染目標的內容複製到系統記憶體,以供顯示裝置顯示。在一個態樣,該至少一個第一渲染目標包括複數個渲染遍次的中間緩衝器,其中中間緩衝器包括在第一渲染遍次期間產生並在第二渲染遍次期間消耗的渲染。在一個態樣,該至少一個第二渲染目標包括複數個渲染遍次的最終緩衝器,其中最終緩衝器包括僅在第二渲染遍次期間產生並且不被後續渲染遍次消耗的渲染。在一個態樣,該至少一個第一渲染目標由工作負載產生,該工作負載的複雜性大於產生該至少一個第二渲染目標的工作負載的複雜性。在一個態樣,該至少一個處理器亦被配置成控制GPU直接將具有較低複雜性工作負載的渲染目標儲存在系統記憶體中,該等渲染目標包括由具有第二複雜性的工作負載產生的至少一個第二渲染目標。在一個態樣,工作負載的相應複雜性基於至少一個訊框的繪製(draw)的數量、至少一個訊框的每個繪製的著色器的數量、以及至少一個訊框的每個繪製的圖元的數量中的至少一個。在一個態樣,該至少一個處理器亦被配置成控制GPU產生構成場景的複數個圖元,並且在複數個渲染遍次的至少第一渲染遍次期間將該複數個圖元分類到圖形記憶體的複數個倉(bin)中。在一個態樣,該至少一個處理器亦被配置成控制GPU為訊框的每個倉產生可見性串流,該可見性串流指示相應倉中的複數個圖元中的至少一個圖元在最終渲染場景中是否可見。在一個態樣,該至少一個處理器亦被配置成控制GPU同時執行第一渲染遍次和第二渲染遍次,使得該至少一個第一渲染目標被儲存在GPU的片上圖形記憶體中,並且同時該至少一個第二渲染目標被儲存在顯示裝置的系統記憶體中。在一個態樣,該至少一個處理器亦被配置成控制GPU在第一渲染遍次和第二渲染遍次之後執行第三渲染遍次,使得在該至少一個第一渲染目標被從GPU的片上圖形記憶體中清除之後,至少一個第三渲染目標被儲存在GPU的片上圖形記憶體中。在一個態樣,該至少一個第一渲染目標包括反照率(albedo)渲染目標、位置渲染目標、法線(normal)渲染目標和深度渲染目標。
本案的一或多個實例的細節在附圖和以下描述中闡述。從說明書和附圖以及從請求項中,本案的其他特徵、目的和優點將變得顯而易見。
以下參考附圖更全面地描述了系統、裝置、電腦程式產品和方法的各種態樣。然而,本案可以以許多不同的形式體現並且不應當被解釋為限於貫穿本案所呈現的任何特定的結構或功能。相反,提供這些態樣使得本案將是徹底的和完整的,並且將向本發明所屬領域中具有通常知識者全面地傳達本案的範疇。基於本文的教導,本發明所屬領域中具有通常知識者應當理解,本案的範疇意欲覆蓋本文所揭示的系統、裝置、電腦程式產品和方法的任何態樣,無論是獨立於本案的其他態樣還是與本案的其他態樣結合實現。例如,可以使用本文闡述的任何數量的態樣來實現裝置或實踐方法。另外,本案的範疇意欲覆蓋此類裝置或方法,該裝置或方法使用除了本文闡述的揭示的各個態樣之外或者在本文闡述的揭示的各個態樣之外的其他結構、功能或者結構以及功能來實踐。本文揭示的任何態樣可以由請求項的一或多個元素來體現。
儘管本文描述了各種態樣,但是這些態樣的許多變體和置換落入本案的範疇內。儘管提出了本案的態樣一些潛在益處和優勢,但是本案的範疇不意欲限於特定的益處、用途或目標。相反,本案的各態樣意欲廣泛地可用於不同的無線技術、系統組態、網路和傳輸協定,其中的一些在圖中和以下的描述中經由實例來說明。實施方式和附圖僅是對本案的說明而非限制,本案的範疇由所附的請求項及其均等物來定義。
參考各種裝置和方法呈現了幾個態樣。經由各種塊、部件、電路、程序、演算法等(統稱為「元素」)在以下具體實施方式中描述了、並且在附圖中圖示這些態樣和方法。可以使用電子硬體、電腦軟體或其任何組合來實現這些元素。將此類元素實現為硬體還是軟體取決於特定應用和施加在整個系統上的設計約束。
舉例而言,可以將元素或者元素的任意部分或者元素的任意組合實現為包括一或多個處理器(其亦可以被稱為處理單元)的「處理系統」。處理系統中的一或多個處理器可以執行軟體。軟體可以被廣泛地解釋為平均指令、指令集、代碼、程式碼片段、程式碼、程式、副程式、軟體部件、應用、軟體應用、套裝軟體、常式、子常式、物件、可執行檔、執行執行緒、程序、函數等等,無論是被稱為軟體、韌體、中介軟體、微代碼、硬體描述語言或者其他。術語應用可以指軟體。如本文所述,一或多個技術可以指被配置成執行一或多個功能的應用(亦即,軟體)。在此實例中,應用可以被儲存在記憶體(例如,處理器的片上記憶體、系統記憶體或者任何其他記憶體)上。本文描述的硬體(諸如處理器)可以被配置成執行應用。例如,應用可以被描述為包括代碼,當由硬體執行時,該代碼使得該硬體執行本文描述的一或多個技術。作為實例,硬體可以從記憶體存取碼並且執行從處理器存取的代碼以執行本文所描述的一或多個技術。在一些實例中,在本案中標識部件。在此類實例中,部件可以是硬體、軟體或者其組合。部件可以是單獨的部件或者是單個部件的子部件。
因此,在本文所描述的一或多個實例中,該的功能可以在硬體、軟體或者其任何組合中實施。若在軟體中實施,則功能可以被儲存在電腦可讀取媒體上的一或多個指令或代碼上,或被編碼為電腦可讀取媒體上的一或多個指令或代碼。電腦可讀取媒體包括電腦儲存媒體。儲存媒體可以是可由電腦存取的任何可用的媒體。舉例而言,而非限制,此類電腦可讀取媒體可以包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電子可抹除可程式設計ROM(EEPROM)、光碟儲存、磁碟儲存、其他磁存放裝置、上述類型的電腦可讀取媒體的組合、或者可以被用於以可以由電腦存取的指令或資料結構的形式來儲存電腦可執行代碼的任何其他媒體。
總的來說,本案描述了用於在單個設備或多個設備中具有圖形處理管線、改善圖形內容的渲染及/或減少圖形處理單元(「GPU」)的負載的技術。例如,本案描述了用於利用圖形處理的任何設備中的圖形處理的技術。貫穿本案描述了其他實例益處。
如本文所使用的,術語「內容」的實例可以指「圖形內容」、「影像」,並且反之亦然。不管這些術語是用作形容詞、名詞還是其他詞類,都是如此。在一些實例中,如本文所使用的,術語「圖形內容」可以指由圖形處理管線中的一或多個程序產生的內容。在一些實例中,如本文所使用的,術語「圖形內容」可以指由被配置成執行圖形處理的處理單元產生的內容。在一些實例中,如本文所使用的,術語「圖形內容」可以指由圖形處理單元產生的內容。
在一些實例中,如本文所使用的,術語「顯示內容」可以指由被配置成執行顯示處理的處理單元產生的內容。在一些實例中,如本文所使用的,術語「顯示內容」可以指由顯示處理單元產生的內容。圖形內容可以被處理成顯示內容。例如,圖形處理單元可以將諸如訊框的圖形內容輸出到緩衝器(其可以被稱為訊框緩衝器)。顯示處理單元可以從緩衝器讀取圖形內容(諸如一或多個訊框),並且對其執行一或多個顯示處理技術以產生顯示內容。例如,顯示處理單元可以被配置成對一或多個渲染層執行組合以產生訊框。作為另一實例,顯示處理單元可以被配置成將兩層或更多層組合、混合或以其他方式結合在一起形成單個訊框。顯示處理單元可以被配置成對訊框執行縮放(例如,放大或縮小)。在一些實例中,訊框可以指的是層。在其他實例中,訊框可以指已經混合在一起以形分框的兩層或更多層,亦即,訊框包括兩層或更多層,並且包括兩層或更多層的訊框可以隨後被混合。
通常,GPU可以用來渲染三維(3D)場景。因為這種3D場景的渲染可能對記憶體頻寬非常敏感,所以可以使用專用的圖形記憶體(「GMEM」)。GMEM可以位於GPU的圖形處理核心附近,因此它具有非常高的記憶體頻寬(亦即,對GMEM的讀寫存取很快)。場景可以由GPU的圖形處理核心渲染到GMEM,並且該場景可以從GMEM被解析到記憶體(例如,訊框緩衝器),使得該場景隨後可以在顯示裝置上顯示。然而,由於實體記憶體限制,GMEM的大小受到限制,使得GMEM可能沒有足夠的記憶體容量來包含整個三維場景(例如,整個訊框)。
在一些實例中,GPU或其他處理設備可以被配置成將3D場景分割成圖塊(tile),使得構成場景的每個圖塊可以剛好放入到GMEM中。這被稱為基於圖塊的渲染或「分倉(binning)」。例如,若GMEM能夠儲存512 kB的資料,則場景可以被劃分成圖塊,使得每個圖塊中包含的圖元資料小於或等於512 kB。以這種方式,GPU或其他處理器可以經由將場景劃分成可以被渲染到GMEM中的圖塊,並且單獨地將場景的每個圖塊渲染到GMEM中,將渲染的圖塊從GMEM儲存到訊框緩衝器中,並且針對場景的每個圖塊重複渲染和儲存,來渲染場景。因此,GPU可以使用多個渲染遍次逐圖塊渲染場景,以渲染場景的每個圖塊。
在實例性實現方式中,基於圖塊的渲染可以在幾個步驟中執行。例如,實現基於圖塊的架構的GPU可以在分倉遍次期間最初處理或預處理整個場景,以定義多個倉或「圖塊」。分倉遍次之後可以是一系列渲染遍次,在此期間渲染每個定義的圖塊。在一些實例中,每個渲染遍次分三個階段完成:(1)清除/未解析(unresolve),(2)渲染,(3)解析(resolve)。在清除/未解析階段期間,GPU可以為新圖塊初始化GMEM,並將從外部記憶體讀取的值儲存到GMEM中。在渲染期間,GPU可以重建與當前圖塊相關聯的多邊形,以及產生圖元值並完成當前圖塊,使得圖塊可以顯示在顯示器上。解析步驟可以包括GPU將片上記憶體(GMEM)的內容複製到GPU外部的系統記憶體,諸如供顯示器在顯示完成的場景時使用的緩衝器。
在分倉遍次期間,GPU可以產生構成場景的多邊形(例如,三角形),並將多邊形分類到複數個倉中,這些倉可以被認為是呈現在顯示器上的最終場景的圖塊。例如,每個倉表示最終場景的一部分(例如,視訊資料訊框、電腦產生的圖形影像、靜止影像等的預定義部分)。組成場景的圖塊可以各自與記憶體中的倉相關聯,該倉儲存每個相應圖塊中包括的圖元。因此,分倉遍次可以將構成場景的圖元分類到適當的倉中。此外,分倉遍次亦可以為訊框的每個倉建立可見性串流,該可見性串流指示倉中的任何圖元在最終渲染場景中是否可見。因此,可見性串流是被配置成渲染遍次的輸入以指示當被渲染時圖元在每個圖塊中是否可見的位元串流。若倉的可見性串流指示該倉不包含任何可見圖元(亦即,該倉中的所有圖元在最終渲染的場景中皆將不可見),則若GPU經由跳過與該倉相關聯的間接緩衝器中的指令的執行而不渲染該倉中的圖元,則可以提高效能。
在多遍次渲染的實例性態樣中,場景和相關聯的物件可以被渲染多次。每次繪製物件時,可以計算物件外觀的額外態樣,並將其與之前的結果相結合。通常,這可能涉及粗略初始渲染和基於第一粗略遍次的查詢結果的詳細的第二渲染遍次。對於圖塊化系統(tiled system),這可以對應於以下序列:(1)第一遍次渲染,亦稱為粗略遍次或查詢遍次,其中圖塊化系統可以執行分倉遍次,該遍次可以針對第一遍次的渲染遍次產生可見性串流、處理負載、渲染以及儲存;(2)查詢檢查(可能由應用執行);查詢檢查是檢查查詢遍次(第一遍次)的結果的時間;及(3)第二遍次。第二遍次可以包括基於第一遍次的查詢結果完成的所有渲染。在此類實例中,基於圖塊的系統可以執行分倉遍次,產生可見性串流,並且針對該第二遍次的渲染遍次執行載入、渲染和儲存(基於應用行為,該第二遍次可以具有不同的詳細幾何形狀的集合,這是最有可能的情況)。
一般來說,圖形應用會觸發查詢,渲染粗略遍次(第一遍次),隨後結束查詢。圖形應用可以檢查查詢值(亦即,遍次的圖元數量,以偵測是否需要詳細渲染)。基於查詢結果(圖形應用可以觸發第二遍次)。當查詢為真時,可以渲染詳細的場景,當查詢為假時,可以根本不渲染場景,或者可以渲染粗略或但是彩色管道使能的場景。因此,第二遍次可以包括所有渲染,這可以基於第一遍次的查詢結果來執行,亦可以不執行。
圖1A是根據本案的一或多個技術的包括用於混合渲染的GPU的系統100的方塊圖。如通常所示,根據實例性態樣,系統100包括處理單元127、GPU 120和系統記憶體124,其被配置成渲染3D場景。處理單元127可以執行軟體應用111、作業系統(OS)113和圖形驅動器115。此外,系統記憶體124可以包括間接緩衝器,其儲存用於渲染圖元的命令串流以及將由GPU 120執行的次級命令。GPU 120可以包括圖形記憶體(GMEM)121,其可以與GPU 120「在晶片上」。如參考圖1B更詳細描述的,系統100的部件可以是設備的一部分,包括但不限於視訊設備、媒體播放機、機上盒、無線手持機(諸如行動電話和所謂的智慧手機)、個人數位助理(PDA)、桌上型電腦、膝上型電腦、遊戲控制台、視訊會議單元、平板計算設備等。
處理單元127可以是中央處理單元(CPU)。GPU 120可以是被配置成執行圖形相關功能的處理單元,諸如產生和輸出用於在顯示器上呈現的圖形資料,以及執行利用由GPU 120提供的大規模處理並行性的非圖形相關功能。因為除了圖形處理能力之外,GPU 120亦可以提供通用處理能力,所以GPU 120可以被稱為通用GPU(GP-GPU)。處理單元127和GPU 120的實例包括但不限於數位訊號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、現場可程式設計邏輯陣列(FPGA)或其他等效的整合或個別邏輯電路。在一些實例中,GPU 120可以是為特定用途設計的微處理器,諸如為處理圖形以及執行非圖形相關應用提供大規模並行處理。此外,儘管處理單元127和GPU 120被示為分離的部件,但是本案的各態樣不限於此,並且可以例如常駐在公共積體電路(IC)中。
在處理單元127上執行的軟體應用111可以包括一或多個圖形渲染指令,該指令指示處理單元127將圖形資料渲染到顯示器(圖1A中未圖示)。在一些實例中,圖形渲染指令可以包括可以符合圖形應用程式設計介面(API)的軟體指令。為了處理圖形渲染指令,處理單元127可以向GPU 120發出一或多個圖形渲染命令(例如,經由圖形驅動器115),以使GPU 120執行圖形資料的一些或全部渲染。在一些實例中,要被渲染的圖形資料可以包括圖形圖元的列表,例如,點、線、三角形、四邊形、三角形條等。
GPU 120可以被配置成執行圖形操作,以向顯示器渲染一或多個圖形圖元。因此,當在處理單元127上執行的軟體應用之一需要圖形處理時,處理單元127可以向GPU 120提供圖形命令和圖形資料,以渲染給顯示器。圖形資料可以包括例如繪圖命令、狀態資訊、圖元資訊、紋理資訊等。在一些情況下,GPU 120可以用高度並行的結構來構建,該結構提供比處理單元127更有效的複雜圖形相關操作的處理。例如,GPU 120可以包括被配置成以並行方式在多個頂點或圖元上操作的複數個處理部件。
GPU 120可以直接耦合到GMEM 121。換句話說,GPU 120可以使用本機存放區裝置而不是片外記憶體來本端處理資料。這允許GPU 120經由消除GPU 120經由例如共用匯流排讀取和寫入資料的需要而以更有效的方式操作,共用匯流排可能經歷繁重的匯流排流量。GMEM 121可以包括一或多個揮發性或非揮發性記憶體或存放裝置,諸如例如,隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)和一或多個暫存器。
處理單元127及/或GPU 120可以將渲染的影像資料儲存在訊框緩衝器128中,訊框緩衝器128可以是獨立的記憶體或者可以被分配在系統記憶體124內。顯示處理器可以從訊框緩衝器128檢索渲染的影像資料,並在顯示器上顯示渲染的影像資料。
系統記憶體124可以是設備中的記憶體,並且可以常駐在處理單元127和GPU 120的外部,亦即,相對於處理單元127是片外的,並且相對於GPU 120是片外的。系統記憶體124可以儲存由處理單元127和GPU 120執行的應用。此外,系統記憶體124可以儲存所執行的應用在其上操作的資料,以及由該應用產生的資料。
系統記憶體124可以儲存可由處理單元127的執行存取的程式模組、指令或兩者;由在處理單元127 102上執行的程式使用的資料;或者其中的兩個或兩個以上。例如,系統記憶體124可以儲存由處理單元127用來在顯示器上呈現圖形化使用者介面(GUI)的訊窗管理器應用。另外,系統記憶體124可以儲存使用者應用和與應用相關聯的應用表面資料。如下文詳細解釋的,系統記憶體124可以充當GPU 120的設備記憶體,並且可以儲存要由GPU 120操作的資料以及由GPU 120執行的操作產生的資料。例如,系統記憶體135可以儲存紋理緩衝器、深度緩衝器、範本(stencil)緩衝器、頂點緩衝器、訊框緩衝器等的任意組合。
系統記憶體124的實例包括但不限於隨機存取記憶體(RAM)、唯讀記憶體(ROM)、或電子可抹除可程式設計唯讀記憶體(EEPROM)、或可以用於以指令或資料結構的形式攜帶或儲存所需程式碼並可由電腦或處理器存取的任何其他媒體。作為一個實例,系統記憶體124可以從設備中移除,並且移動到另一個設備。作為另一個實例,基本類似於系統記憶體124的存放裝置可以被插入到該設備中。
圖1B是圖示被配置成實現本案的一或多個技術的實例內容產生系統100的更詳細的方塊圖。注意,圖1B所示的內容產生系統100對應於圖1A的內容產生系統。在這點上,圖1B的內容產生系統100包括處理單元127、GPU 120和系統記憶體124。
如進一步所示,內容產生系統100包括設備104,該設備104可以包括被配置成執行本案的一或多個技術的一或多個部件。在所示的實例中,設備104可以包括GPU 120、內容編碼器/解碼器122和系統記憶體124。在一些態樣,設備104可以包括多個額外的及/或可選的部件,例如,通訊介面126、收發器132、接收器128和發送器130,以及一或多個顯示器131。對顯示器131的引用可以指一或多個顯示器131。例如,顯示器131可以包括單個顯示器或多個顯示器。顯示器131可以包括第一顯示器和第二顯示器。在進一步的實例中,圖形處理的結果可以不顯示在設備上,例如,顯示器131可以不接收任何用於在其上呈現的訊框。相反,訊框或圖形處理結果可以被傳送到另一個設備。在一些態樣,這可以稱為混合渲染。
GPU 120包括圖形記憶體(GMEM)121。GPU 120可以被配置成諸如在圖形處理管線107中執行圖形處理。內容編碼器/解碼器122可以包括內部記憶體123。在一些實例中,設備104可以包括顯示處理器,諸如處理單元127,以在由如前述的一或多個顯示器131渲染之前,對由GPU 120產生的一或多個訊框執行一或多個顯示處理技術。顯示處理器127可以被配置成執行顯示處理。一或多個顯示器131可以被配置成顯示或以其他方式呈現由處理單元127處理的訊框。在一些實例中,一或多個顯示器131可以包括以下一或多個:液晶顯示器(LCD)、電漿顯示器、有機發光二極體(OLED)顯示器、投影顯示裝置、增強現實顯示裝置、虛擬實境顯示裝置、頭戴式顯示器或任何其他類型的顯示裝置。
GPU 120和內容編碼器/解碼器122外部的記憶體,諸如如前述的系統記憶體124,可以被GPU 120和內容編碼器/解碼器122存取。例如,GPU 120和內容編碼器/解碼器122可以被配置成從外部記憶體(諸如系統記憶體124)讀取及/或向其寫入。GPU 120和內容編碼器/解碼器122可以經由匯流排通訊地耦合到系統記憶體124。在一些實例中,GPU 120和內容編碼器/解碼器122可以經由匯流排或不同的連接彼此通訊地耦合。
內容編碼器/解碼器122可以被配置成從任何源接收圖形內容,諸如系統記憶體124及/或通訊介面126。系統記憶體124可以被配置成儲存接收到的編碼或解碼的圖形內容。內容編碼器/解碼器122可以被配置成例如從系統記憶體124及/或通訊介面126接收以編碼的圖元資料的形式的編碼或解碼的圖形內容。內容編碼器/解碼器122可以被配置成編碼或解碼任何圖形內容。
根據一些實例,GMEM 121或系統記憶體124可以是非暫時性儲存媒體。術語「非暫時性」可以指示儲存媒體沒有體現在載波或傳播訊號中。然而,術語「非暫時性」不應被解釋為意味著GMEM 121或系統記憶體124是不可移動的,或者其內容是靜態的。作為一個實例,系統記憶體124可以從設備104移除並移動到另一個設備。作為另一個實例,系統記憶體124可以不從設備104移除。
GPU可以被配置成根據本文描述的實例性技術來執行圖形處理。在一些實例中,GPU 120可以整合到設備104的主機板中。在一些實例中,GPU 120可以存在於安裝在設備104的主機板中的埠中的圖形卡上,或者可以以其他方式結合在被配置成與設備104交互動操作的周邊設備中。GPU 120可以包括一或多個處理器,諸如一或多個微處理器、GPU、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、算數邏輯單位(ALU)、數位訊號處理器(DSP)、個別邏輯、軟體、硬體、韌體、其他等效的整合或個別邏輯電路或其任意組合。若這些技術部分在軟體中實施,則GPU 120可以將軟體的指令儲存在合適的非暫時性電腦可讀取儲存媒體中,並且可以使用一或多個處理器在硬體中執行指令以執行本案的技術。前述任何一種,包括硬體、軟體、硬體和軟體的組合等,可以被認為是一或多個處理器。
內容編碼器/解碼器122可以是被配置成執行內容編碼/解碼的任何處理單元。在一些實例中,內容編碼器/解碼器122可以整合到設備104的主機板中。內容編碼器/解碼器122可以包括一或多個處理器,諸如一或多個微處理器、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、算數邏輯單位(ALU)、數位訊號處理器(DSP)、視訊處理器、個別邏輯、軟體、硬體、韌體、其他等效的整合或個別邏輯電路或其任意組合。若這些技術部分地在軟體中實施,則內容編碼器/解碼器122可以將軟體的指令儲存在合適的非暫時性電腦可讀取儲存媒體(例如,內部記憶體123)中,並且可以使用一或多個處理器在硬體中執行指令以執行本案的技術。前述任何一種,包括硬體、軟體、硬體和軟體的組合等,可以被認為是一或多個處理器。
在一些態樣,內容產生系統100可以包括可選的通訊介面126。通訊介面126可以包括接收器128和發送器130。接收器128可以被配置成執行本文關於設備104描述的任何接收功能。此外,接收器128可被配置成從另一設備接收資訊,例如,眼睛或頭部位置資訊、渲染命令或位置資訊。發送器130可以被配置成執行本文關於設備104描述的任何發送功能。例如,發送器130可以被配置成向另一設備發送資訊,該資訊可以包括對內容的請求。接收器128和發送器130可以組合成收發器132。在此類實例中,收發器132可以被配置成執行本文關於設備104描述的任何接收功能及/或發送功能。
再次參考圖1A,在一些態樣,圖形處理管線107可以包括耦合到GPU 120的混合渲染控制器198,混合渲染控制器198可以配置GPU以針對要在顯示裝置上顯示的場景的至少一訊框執行複數個渲染遍次。此外,混合渲染控制器198可以控制GPU執行複數個渲染遍次中的第一渲染遍次,以產生至少一個第一渲染目標,該至少一個第一渲染目標被儲存在GPU的片上圖形記憶體中;並且亦控制GPU執行複數個渲染遍次中的第二渲染遍次,以產生至少一個第二渲染目標,該至少一個第二渲染目標被儲存在顯示裝置的系統記憶體中。在一個態樣,混合渲染控制器198可以控制GPU執行解析,以將儲存在GPU的片上圖形記憶體中的至少一個第一渲染目標的內容複製到系統記憶體,以供顯示裝置顯示。在另一個態樣,混合渲染控制器198可以控制GPU直接將具有較低複雜性工作負載的渲染目標儲存在系統記憶體中,該等渲染目標包括由具有第二複雜性的工作負載產生的至少一個第二渲染目標。在又一態樣,混合渲染控制器198可以控制GPU產生構成場景的複數個圖元,並且在複數個渲染遍次的至少第一渲染遍次期間將複數個圖元分類到圖形記憶體的多個倉中。在另外的態樣,混合渲染控制器198可以控制GPU同時執行第一渲染遍次和第二渲染遍次,使得至少一個第一渲染目標被儲存在GPU的片上圖形記憶體中,並且同時至少一個第二渲染目標被儲存在顯示裝置的系統記憶體中。此外,混合渲染控制器198可以控制GPU在第一渲染遍次和第二渲染遍次之後執行第三渲染遍次,使得在至少一個第一渲染目標被從GPU的片上圖形記憶體中清除之後,至少一個第三渲染目標被儲存在GPU的片上圖形記憶體中。
如本文所述,設備(諸如設備104)可以指被配置成執行本文所述的一或多個技術的任何設備、裝置或系統。例如,設備可以是伺服器、基地台、使用者設備、客戶端設備、站、存取點、電腦(例如,個人電腦、桌上型電腦、膝上型電腦、平板電腦、電腦工作站或大型電腦)、終端產品、裝置、電話、智慧型電話、伺服器、視訊遊戲平臺或控制台、手持設備(例如,可攜式視訊遊戲裝置或個人數位助理(PDA))、可穿戴計算設備(例如, 智慧手錶、增強現實設備或虛擬實境設備)、不可穿戴設備、顯示器或顯示裝置、電視、電視機上盒、中間網路設備、數位媒體播放機、視訊流式設備、內容串流設備、車載電腦、任何行動設備、被配置成產生圖形內容的任何設備、或者被配置成執行本文描述的一或多個技術的任何設備。本文中的程序可以被描述為由特定部件(例如,GPU)執行,但是在進一步的實施例中,可以使用與所揭示的實施例一致的其他部件(例如,CPU)來執行。
GPU可以在GPU管線中處理多種類型的資料或資料包。例如,在一些態樣,GPU可以處理兩種類型的資料或資料包,例如,上下文暫存器包和繪製調用資料。上下文暫存器包可以是全域狀態資訊集合,例如,關於全域暫存器、著色程式或常數資料的資訊,其可以規定圖形上下文將如何被處理。例如,上下文暫存器包可以包括關於顏色格式的資訊。在上下文暫存器包的某些態樣,可以有一個位元來指示哪個工作負載屬於上下文暫存器。此外,可以有多個功能或程式同時及/或並行執行。例如,功能或程式設計可以描述特定的操作,例如,顏色模式或顏色格式。因此,上下文暫存器可以定義GPU的多個狀態。
上下文狀態可以用於決定單獨的處理單元(例如,頂點提取器(VFD)、頂點著色器(VS)、著色器處理器或幾何處理器)如何執行,及/或處理單元以什麼模式執行。為此,GPU可以使用上下文暫存器和程式設計資料。在一些態樣,GPU可以基於模式或狀態的上下文暫存器定義在管線中產生工作負載,例如,頂點或圖元工作負載。某些處理單元,例如,VFD,可以使用這些狀態來決定某些功能,例如,如何組裝頂點。由於這些模式或狀態可能會改變,GPU可能需要改變對應的上下文。此外,對應於模式或狀態的工作負載可能會跟隨模式或狀態的變化。
圖2圖示根據本案的一或多個技術的實例GPU 200。如圖2所示,GPU 200包括命令處理器(CP)210、繪製調用包212、VFD 220、VS 222、頂點快取記憶體(VPC)224、三角形設置引擎(TSE)226、光柵化器(RAS) 228、Z處理引擎(ZPE)230、圖元內插器(PI)232、片段著色器(FS)234、渲染後端(RB)236、L2快取記憶體(UCHE)238和系統記憶體240。儘管圖2顯示GPU 200包括處理單元220-238,但是GPU 200可以包括多個額外的處理單元。此外,處理單元220-238僅是一個實例,根據本案,處理單元的任何組合或順序皆可以由GPU使用。GPU 200亦包括命令緩衝器250、上下文暫存器包260和上下文狀態261。
如圖2所示,GPU可以利用CP(例如,CP 210)或硬體加速器將命令緩衝器解析成上下文暫存器包(例如,上下文暫存器包260)及/或繪製調用資料包(例如,繪製調用包212)。CP 210隨後可以經由單獨的路徑向GPU中的處理單元或塊發送上下文暫存器包260或繪製調用資料包212。此外,命令緩衝器250可以交替上下文暫存器和繪製調用的不同狀態。例如,命令緩衝器可以以下述方式構造:上下文N的上下文暫存器、上下文N的(多個)繪製調用、上下文N+1的上下文暫存器和上下文N+1的(多個)繪製調用。
如前述,GPU可以被配置成將3D場景分割成圖塊,使得構成場景的每個圖塊可以剛好放入到GMEM中。這被稱為基於圖塊的渲染或「分倉」,意欲經由將場景分成多個倉並執行辨識每個倉中可見的三角形的可見性遍次,來降低功耗並節省記憶體頻寬。
圖3是示出根據本案的各態樣在倉之間劃分的圖元的概念圖。如圖所示,倉302、304、306和308各自包含4×4圖元網格(作為實例),它們被渲染/光柵化以包含多個圖元310。通常,視訊渲染是基於現有物件或模型產生影像的程序。
一或多個圖形圖元在每個倉中可能是可見的。例如,三角形A(「Tri A」)的部分在倉302和倉306中皆是可見的。三角形B(「Tri B」)的部分在四個倉302-308的每一個中是可見的。三角形C(「Tri C」)僅在倉304中可見。在渲染遍次期間,GPU 120可以將場景分割成倉,並且可以將三角形分配給倉。若三角形在多於一個的倉中可見,則GPU 120可以將三角形分配給其中三角形可見的倉中的僅一個,使得當倉302、304、306和308中的每一個被渲染時,三角形不會被渲染多次。
GPU 120亦可以決定倉中的哪些三角形在最終渲染的場景中實際可見。例如,一些三角形可能位於一或多個其他三角形的後面,並且將在最終渲染的場景中不可見。這樣,不需要為該倉渲染不可見的三角形。如前述,這被稱為可見性遍次,它將每個倉中可見的三角形標識為遍次的輸入。
當執行特定渲染遍次時,與該特定渲染遍次相關聯的倉的圖元資料可以儲存在記憶體中,諸如GMEM 121(有時稱為倉緩衝器)。在執行渲染遍次之後,GPU 120可以將GMEM 120的內容傳輸到系統記憶體(SYSMEM)124。在將GMEM 120的內容傳送到訊框緩衝器124之後,GPU 120可以將GMEM 120初始化為預設值,並開始關於不同倉的後續渲染遍次。
在GPU處理的一些態樣,執行多樣點抗鋸齒(MSAA),其中為單個圖元產生多個樣點,隨後將它們組合(例如,求平均)以決定最終圖元值。在另一態樣,圖元處理任務可以包括圖元著色計算,其可以將值輸出到GMEM中的一或多個緩衝器作為多個渲染目標(MRT)。MRT允許圖元著色器可選地輸出到多於一個渲染目標,每個渲染目標具有相同的螢幕維度,但具有不同的圖元格式。通常,MSAA和MRT程序大大增加了顏色和深度緩衝器的有效位元深度,這反過來又減小了每個倉的大小。結果,渲染場景需要大量的倉,這會極大地影響GPU的整體效能和效率。
在延遲渲染中,GPU可以被配置用於多遍次渲染(例如,如前述的一系列渲染遍次),這將導致同時GMEM中的許多附件(attachment),這將導致倉大小更小。更小的倉大小意味著許多倉渲染遍次,這將經由局部繪製而增加處理。換句話說,返回參考圖3,若每個倉從4×4圖元倉減少到2×2圖元倉,將有更多的圖元在多個倉中(例如,「Tri C」可以在四個倉中,而不是單個倉304中),這需要多個渲染遍次。
圖4圖示根據本案的一或多個技術的倉渲染的實例圖。如圖所示,圖400圖示具有六個渲染目標442、444、446、448、450和452的多遍次渲染。通常,應當理解,六個渲染目標中的每一個包括15個倉,但是這僅僅意味著作為實例,並且如本發明所屬領域中具有通常知識者所理解的,對於每個渲染目標可以有更多或更少的倉。類似地,根據本文描述的裝置、系統和方法的各種實現方式,下文描述的每個後續渲染目標可以具有多於或少於每個渲染目標的倉數量。
如前述,第一遍次渲染410,亦可以作為遍次渲染的實例被稱為G緩衝器遍次或查詢遍次,其由GPU 120執行,其中圖塊化系統可以執行可以產生可見性串流的分倉遍次。在該實例中,第一遍次渲染410寫入四個渲染目標442(例如,反照率)、444(例如,位置)、446(例如,法線)和448(例如,深度)。在該實例中,應當理解,訊框被圖塊化成3×5個倉(例如,倉0至倉14),如B0、B1 … B14所示。如前述,每個倉是GPU 120的GMEM 121中的記憶體的一部分。
如進一步示出的,隨後執行第二遍次渲染420(例如,主遍次),其從每個渲染目標442(例如,反照率)、444(例如,位置)、446(例如,法線)的倉緩衝器讀取渲染,並寫入第五渲染目標450(例如,主)。此外,第三渲染遍次430(例如,透明物件)從渲染目標448(例如,深度)讀取到第六渲染目標452(例如,主)。應當理解,圖4所示的實例可以用任意數量的遍次數和每遍次任意數量的渲染目標來實現。然而,在這種分倉模式中渲染目標的數量越多,意味著如前述,每個倉將越小,總倉越多。
此外,GMEM將包含每個遍次的所有渲染目標附件的倉。因此,如前述,倉渲染遍次對於所有倉都是循環的。亦即,在每個渲染目標附件被儲存在GMEM 121中之後,GPU 120必須執行解析步驟,如前述,在該步驟中,GPU 120將GMEM 121的內容複製到GPU 120外部的系統記憶體124,其可以被顯示器用於顯示完成的場景。隨後,針對倉渲染遍次清除該內容。如進一步示出的,元件符號460圖示多遍次渲染處理期間GMEM 121的內容的實例。如圖所示,每個渲染目標442、444、446、448、450和452的倉N將被儲存在GMEM 121中,因為倉渲染遍次對於所有倉都是循環的。因此,對於複雜(相對的)操作,GPU 120的整體效能會受到很大的影響,諸如MSAA和MRT,如前述,它們調用較小的倉大小並導致許多倉渲染遍次,這將經由局部繪製而增加處理。
因此,在一個實例態樣,GPU 120可以被配置或調整為分割哪些渲染目標儲存在GMEM 121中,哪些渲染目標直接儲存在系統記憶體124(SYSMEM)中。換句話說,被配置用於多遍次渲染的GPU可以被進一步配置用於混合渲染,其中如前述,渲染目標的第一部分被儲存在GMEM 121的倉緩衝器中,而渲染目標的第二部分被直接儲存在SYSMEM 124中。GPU 120的混合渲染的配置可以基於渲染目標是中間渲染還是最終渲染,取決於特定渲染目標的工作負載的複雜性,取決於每次繪製的圖元數量等,現在將描述其細節。
圖5圖示根據本案的一或多個技術的內容產生處理的實例圖500。如前述,混合渲染控制器198耦合到GPU 120,以配置哪些目標渲染被本機存放區在GMEM 121中,哪些目標渲染被儲存在SYSMEM 124中。在如圖5所示的一個態樣,混合渲染控制器198配置GPU 120來儲存在一次遍次中產生並在下一次遍次中消耗以儲存在GMEM 121中的所有「中間」緩衝器(例如,G緩衝器)。此外,混合渲染控制器198配置GPU 120來儲存所有其他緩衝器(例如,如前述被配置用於顯示完成的場景的最終訊框緩衝器)。
通常,圖5圖示上面關於圖4所示的類似的多遍次渲染。亦即,圖500的多遍次渲染提供了六個渲染目標542、544、546、548、550和552,但是再次注意,可以提供本文揭示的實例性技術用於任何數量的目標。在一個態樣,第一遍次渲染510由GPU 120執行,以寫入四個渲染目標542(例如,反照率)、544(例如,位置)、546(例如,法線)和548(例如,深度)。在這個態樣,渲染目標542、544、546和548是中間渲染目標,因為第一遍次510寫入GMEM 121的相應倉,並且第二遍次520和第三遍次530還從這些渲染目標542、544、546和548讀取作為其輸入。
然而,在該態樣,與圖4的實例不同,第二遍次渲染520(例如,主遍次)從每個渲染目標542(例如,反照率)、544(例如,位置)、546(例如,法線)的倉緩衝器讀取渲染,並且寫入儲存在SYSMEM 124中而不是GMEM 121中的第五渲染目標550(例如,主)。換句話說,該渲染可以被認為是混合渲染,因為該最終渲染(亦即,沒有從渲染目標550的倉進一步讀取的遍次)。類似地,第三渲染遍次530(例如,透明物件)從渲染目標548(例如,深度)讀取並寫入亦儲存在SYSMEM 124中而不是GMEM 121中的第六渲染目標552(例如,主)。
元件符號560圖示在多遍次渲染處理期間GMEM 121的內容的實例。如圖所示,每個渲染目標542、544、546和548的倉N將被儲存在GMEM 121中,因為倉渲染遍次對於所有倉都是循環的,但是渲染目標550和552的內容被直接儲存在SYSMEM 124中。結果,混合渲染有效地釋放了GMEM 121的記憶體。反過來,應該理解的是,訊框被圖塊化成2×5的倉(例如,倉0至倉9),如B0、B1 … B9所示,並且這些倉將對應於訊框緩衝器的圖元,其在圖元態樣比圖4的多遍次渲染中所示的倉更大。反過來,更大的倉大小意味著更少的倉渲染遍次,這將經由更少的局部繪製來降低處理要求。
因此,根據一個態樣,混合渲染控制器198可以被配置成選擇渲染模式,並對每個顏色/深度渲染目標的緩衝器位置進行程式設計,使得「只寫」渲染目標可以被直接儲存在SYSMEM 124中,而不是GMEM 121中。經由這樣做,如圖4和圖5之間的對比所示,GPU 120亦可以跳過直接儲存在SYSMEM 124中的渲染目標(例如,表面)的解析/未解析程序,因為在需要複製到SYSMEM 124的倉緩衝器中不會有這些目標渲染的內容,同時保持分倉管理負擔低,即保持倉大小儘可能高。
在這個態樣,混合渲染控制器198(例如,軟體應用或驅動器)可以被配置成選擇顏色、範本及/或深度附件來儲存在SYSMEM 124或GMEM 121中。經由提供混合渲染的這種靈活性,如本文揭示的裝置和方法擴展了GPU 120的設計和配置,以實現對哪些緩衝器儲存在GMEM 121中以及哪些緩衝器儲存在SYSMEM 121中的細細微性控制。進而這又使訊框的顯示應用能夠根據緩衝器的儲存在哪裡獨立地存取緩衝器位置位元。實際上,混合渲染控制器198可以被配置成經由選擇一些要儲存在GMEM 121中的附件和其他要儲存在SYSMEM 124中的附件來產生最佳分倉佈局。
如前述,混合渲染的一個實例性選擇標準可以基於哪些附件是中間的,哪些附件是只寫的。在另一態樣,標準可以基於渲染操作的複雜性。例如,低複雜MRT附件可以直接儲存在SYSMEM 124中,以增加儲存在GMEM 121中的剩餘附件(較高複雜附件)的倉大小。
圖6圖示根據本案的一或多個技術的內容產生處理的實例圖。通常,圖6圖示如上關於圖5之多遍次渲染的細化。亦即,圖600的多遍次渲染提供了六個渲染目標642、644、646、648、650和652,但是再次注意,可以提供本文揭示的實例性技術用於任何數量的目標。在一個態樣,第一遍次渲染610由GPU 120執行,以寫入四個渲染目標642(例如,反照率)、644(例如,位置)、646(例如,法線)和648(例如,深度)。在這個態樣,GMEM 121儲存在第二遍次中讀取的渲染目標542、544、546和550。
然而,在這個態樣,與圖5的實例不同,渲染目標648和652直接儲存在系統124中。因此,類似於上述混合渲染,圖6的實例態樣可以是混合渲染,其中不太複雜的附件(例如,渲染目標648和652)直接儲存在SYSMEM 124中。換句話說,混合渲染控制器198可以被配置成基於遍次的複雜性,亦即,工作負載的複雜性,來控制及/或配置GPU 120來儲存渲染目標。在一個態樣,遍次的複雜性可以取決於遍次所需的繪製數量、每一繪製的著色器的複雜性、每一繪製的圖元數量、圖元總數等。在一個態樣,若數量高於某個預定閾值,則混合渲染控制器198可以認為工作負載「複雜」,並且配置GPU 120將渲染目標儲存在GMEM 121中,而將不太複雜的附件(例如,低於閾值)儲存在系統124中。
元件符號660圖示在圖6的多遍次渲染處理期間GMEM 121的內容的實例。如圖所示,每個渲染目標542、544、546和550的倉N將被儲存在GMEM 121中,因為倉渲染遍次對於所有倉都是循環的,但是渲染目標448和552的內容(例如,不太複雜的渲染)被直接儲存在SYSMEM 124中。結果,混合渲染有效地釋放了GMEM 121的記憶體。反過來,應當理解,對於GMEM 121中的那些倉(例如,目標渲染642、644、646和650),訊框被圖塊化成2×5的倉(例如,倉0到倉9),如B0、B1 … B9所示。結果,更大的倉大小意味著更少的倉渲染遍次,這將經由更少的局部繪製再次減少處理需求。
圖7圖示根據本案的一或多個技術的內容產生處理的實例圖。在這態樣,混合渲染類似於如前述的圖500和600。如上關於圖600所述,圖700的混合渲染類似地配置GPU 120以在GMEM 121中儲存第二遍次中讀取的倉的內容,其中剩餘的附件儲存在SYSMEM 124中。
更具體地,圖700的多遍次渲染提供了六個渲染目標742、744、746、748、750和752,其中第一遍次渲染710由GPU 120執行,以寫入四個渲染目標742(例如,反照率)、744(例如,位置)、746(例如,法線)和748(例如,深度)。在這個態樣,GMEM 121儲存渲染目標542、544和546。此外,第二遍次渲染720將渲染目標750儲存到GMEM 121。然而,在這個態樣,第一遍次和第二遍次渲染同時執行。結果,元件符號660(其圖示在第一遍次渲染710和第二遍次渲染720期間GMEM 121的內容)將包含每個渲染目標742、744、746和750的倉N,因為倉渲染遍次對於所有倉都是循環的。此外,在這個態樣,第三遍次渲染730在第一遍次渲染710和第二遍次渲染720之後獨立執行。結果,第三遍次渲染730的片上GMEM 121將儲存倉752的內容。
通常,要注意,如前述的圖500、600和700中的每一個都提供了用於產生顯示內容(例如,3D內容)的混合渲染,以便有效地管理片上GMEM 121的使用。因此,在一個態樣,混合渲染控制器198耦合到GPU 120,並被配置成調整GPU 120以控制哪些目標渲染被本機存放區在GMEM 121中,以及哪些目標渲染被儲存在SYSMEM 124中。同樣如前述,可以針對特定晶片組及/或正在實現GPU 120的特定內容產生應用來改變和控制用於調整渲染的參數。有效地,混合渲染控制器198可以被配置成經由基於定義的參數決定要儲存在GMEM 121中的某些附件和要儲存在SYSMEM 124中的其他附件來為GPU 120及/或應用111產生最佳分倉佈局。
圖8圖示根據本案的一或多個技術的內容產生的實例方法的實例流程圖。如前述,方法800可以由裝置(諸如GPU 120)來執行。在一個態樣,由虛線框突出顯示的步驟圖示本文描述的技術的一個態樣中的可選步驟。
在方塊802,CPU被配置成執行如前述的混合渲染。在一個態樣,混合渲染的選擇標準可以基於哪些附件是中間的以及哪些附件是只寫的。在另一態樣,該標準可以基於渲染操作的複雜性來決定目標渲染是儲存在GMEM 121還是SYSMEM 124中。
在方塊804,GPU 120接收要渲染的場景的第一訊框。應當理解,對於視訊內容場景的複數個訊框,可以重複本文描述的程序。在方塊806,GPU被配置成執行第一渲染遍次以產生一或多個第一渲染目標(例如,反照率渲染目標、位置渲染目標、法線渲染目標及/或深度渲染目標)。在方塊808,GPU基於如前述的混合渲染的配置,決定將一或多個第一渲染目標的內容儲存在GMEM中還是SYSMEM中。如前述,根據配置,並且因為倉渲染遍次對於所有倉循環,每個渲染目標的每個倉N將儲存在GMEM 121中。
類似地,在方塊810,GPU 120被配置成執行第二渲染遍次以產生一或多個第二渲染目標,其使用第一渲染目標的資料作為用於執行第二渲染遍次的輸入資料。在方塊812,如前述,GPU基於混合渲染的配置來決定將一或多個第二渲染目標的內容儲存在GMEM中亦是SYSMEM中。最後,在方塊814,渲染內容可以被從倉緩衝器讀出到緩衝器記憶體,例如,以隨後在顯示裝置上顯示。
本文描述的主題可以被實施來實現一或多個益處或優點。例如,本文揭示的技術使得GPU 120能夠經由配置GPU 120將多遍次渲染中的目標渲染的第一部分儲存在GMEM 121,並將多遍次渲染中的目標渲染的第二部分儲存在SYSMEM 124,來減少渲染場景所需的本機存放區。結果,對於每個遍次,片上GMEM所需的記憶體使用更少,這反過來導致更大的倉大小,因此更少的倉渲染遍次,這經由更少的局部繪製減少了整體處理需求。結果,該裝置和方法進一步降低了GPU 120的功耗和負載要求,因為它在片上圖形記憶體中儲存的資料較少。這一結果又提高了GPU的整體效能,因為等待就緒資料的時延亦減少了。因此,本文的處理技術可以改善或加速資料處理或執行,並且亦改善資源或資料利用率及/或資源效率。
本文描述的主題可以被實施來實現一或多個益處或優點。例如,所描述的圖形處理技術可以由伺服器、客戶端、GPU、CPU或能夠執行電腦或圖形處理以實施本文描述的分割渲染技術的一些其他處理器來使用。與其他電腦或圖形處理技術相比,這亦可以低成本完成。此外,本文的電腦或圖形處理技術可以改善或加快資料處理或執行。此外,本文的電腦或圖形處理技術可以提高資源或資料利用率及/或資源效率。
根據本案,術語「或」可以被解釋為「及/或」,除非上下文另有規定。此外,儘管諸如「一或多個」或「至少一個」等短語已經被用於本案的一些特徵,而不用於其他特徵,但是沒有使用此類語言的特徵可以被解釋為具有這樣暗示的意思,除非上下文另有規定。
在一或多個實例中,本文所述的功能可以在硬體、軟體、韌體、或其任何組合中實施。例如,儘管貫穿本案已經使用了術語「處理單元」,但是此類處理單元可以在硬體、軟體、韌體或其任何組合中實施。若本文所述的任何功能、處理單元、技術或其他模組在軟體中實施,則本文所述的功能、處理單元技術或其他模組可以作為一或多個指令或代碼儲存在電腦可讀取媒體上或經由其傳輸。電腦可讀取媒體可以包括電腦資料儲存媒體或者通訊媒體,該通訊媒體包括有助於電腦程式從一個地方傳輸到另一個地方的媒體。以此方式,電腦可讀取媒體通常可以對應於(1)有形的電腦可讀取儲存媒體,其是非暫時性的,或者(2)通訊媒體,諸如訊號或載波。資料儲存媒體可以是其可以被一或多個電腦或者一或多個處理器存取以檢索指令、代碼及/或資料結構來實施本案中所述的技術的任何可用媒體。舉例而言,但並非限制,此類電腦可讀取媒體可以包括RAM、ROM、EEPROM、CD-ROM或者其他光碟儲存、磁碟儲存或其他磁存放裝置。如本文所使用的,磁碟和光碟包括壓縮光碟(CD)、鐳射光碟、光學光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中磁碟通常以磁性方式再現資料,而光碟則採用鐳射以光學方式再現資料。上述的組合亦應當包括在電腦可讀取媒體的範疇內。電腦程式產品可以包括電腦可讀取媒體。
代碼可以由一或多個處理器(例如,一或多個數位訊號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、算數邏輯單元(ALU)、現場可程式設計邏輯陣列(FPGA)或者其他等效的整合或個別的邏輯電路)來執行。因此,如本文所使用的術語「處理器」可以指任何前述的結構或者適合用於本文該的技術的實施的任何其他結構。此外,技術可以完全的在一或多個電路或邏輯元件中實施。
本案的技術可以在各種設備或裝置中實施,裝置或設備包括無線手機、積體電路(IC)或IC集(例如,晶片集)。本案中描述了各種部件、模組或單元以強調被配置成執行揭示的技術的設備的功能態樣,但是不一定需要經由不同硬體來實現。相反,如前述,各種單元可以在任何硬體單元中組合或者結合合適的軟體及/或硬體由包括如前述的一或多個處理器的交互動操作的硬體單元的集合來提供。
已經描述了各種實例。這些和其他實例在所附請求項的範疇內。
100:系統 104:設備 107:圖形處理管線 111:軟體應用 113:作業系統(OS) 115:圖形驅動器 120:GPU 121:圖形記憶體(GMEM) 122:內容編碼器/解碼器 123:內部記憶體 124:系統記憶體 126:通訊介面 127:處理單元 128:接收器 130:發送器 131:顯示器 132:收發器 198:混合渲染控制器 200:GPU 210:命令處理器(CP) 212:繪製調用包 220:VFD 222:VS 224:頂點快取記憶體(VPC) 226:三角形設置引擎(TSE) 228:光柵化器(RAS) 230:Z處理引擎(ZPE) 232:圖元內插器(PI) 234:片段著色器(FS) 236:渲染後端(RB) 238:快取記憶體(UCHE) 240:系統記憶體 250:命令緩衝器 260:上下文暫存器包 261:上下文狀態 302:倉 304:倉 306:倉 308:倉 310:圖元 400:圖 410:第一遍次渲染 420:第二遍次渲染 430:第三遍次渲染 442:渲染目標 444:渲染目標 446:渲染目標 448:渲染目標 450:渲染目標 452:渲染目標 460:元件符號 500:實例圖 510:第一遍次渲染 520:第二遍次渲染 530:第三遍次渲染 542:渲染目標 544:渲染目標 546:渲染目標 548:渲染目標 550:第五渲染目標 552:第六渲染目標 560:元件符號 600:圖 610:第一遍次渲染 642:渲染目標 644:渲染目標 646:渲染目標 648:渲染目標 650:渲染目標 652:渲染目標 660:元件符號 700:圖 710:第一遍次渲染 720:第二遍次渲染 730:第三遍次渲染 742:渲染目標 744:渲染目標 746:渲染目標 748:渲染目標 750:渲染目標 752:渲染目標 760:元件符號 800:方法 802:方塊 804:方塊 806:方塊 808:方塊 810:方塊 812:方塊 814:方塊 B0:倉 B1:倉 B2:倉 B3:倉 B4:倉 B5:倉 B6:倉 B7:倉 B8:倉 B9:倉 B10:倉 B12:倉 B13:倉 B14:倉 Tri A:三角形A Tri B:三角形B Tri C:三角形C
圖1A是示出根據本案的一或多個技術的內容產生系統的實例的方塊圖。
圖1B是示出根據本案的一或多個技術的內容產生系統的實例的方塊圖。
圖2圖示根據本案的一或多個技術的實例GPU。
圖3是示出根據本案的各態樣的在倉之間劃分的圖元的概念圖。
圖4圖示根據本案的一或多個技術的倉渲染的實例圖。
圖5圖示根據本案的一或多個技術的內容產生處理的實例圖。
圖6圖示根據本案的一或多個技術的內容產生處理的實例圖。
圖7圖示根據本案的一或多個技術的內容產生處理的實例圖。
圖8圖示根據本案的一或多個技術的內容產生的實例方法的實例流程圖。
100:系統
111:軟體應用
113:作業系統(OS)
115:圖形驅動器
120:GPU
121:圖形記憶體(GMEM)
124:系統記憶體
127:處理單元
128:接收器
Claims (30)
- 一種用於對內容進行混合渲染的方法,該方法包括以下步驟: 配置一顯示裝置的一圖形處理單元(GPU)以針對要在一顯示裝置上顯示的一場景的至少一個訊框執行複數個渲染遍次; 控制該GPU執行該複數個渲染遍次中的一第一渲染遍次,以使用具有一第一複雜性且該第一複雜性超過一預定臨界值的一第一工作負載產生至少一個第一渲染目標,並將該至少一個第一渲染目標儲存在該GPU的一片上圖形記憶體中;及 控制該GPU執行該複數個渲染遍次中的一第二渲染遍次,以使用具有一第二複雜性且該第二複雜性未超過該預定臨界值的一第二工作負載產生至少一個第二渲染目標,並將該至少一個第二渲染目標儲存在該顯示裝置的一系統記憶體中,該第二渲染遍次在該第一渲染遍次之後,該第二渲染遍次從該GPU的該片上圖形記憶體讀取該至少一個第一渲染目標。
- 根據請求項1之方法,其中該至少一個第二渲染目標在被儲存在該顯示裝置的該系統記憶體中之前不被儲存在該GPU的該片上圖形記憶體中。
- 根據請求項1之方法,亦包括控制該GPU執行一解析,以將儲存在該GPU的該片上圖形記憶體中的該至少一個第一渲染目標的內容複製到該系統記憶體,以供該顯示裝置顯示。
- 根據請求項1之方法,其中該至少一個第一渲染目標包括該複數個渲染遍次的一中間緩衝器,其中該中間緩衝器包括在該第一渲染遍次期間產生並在該第二渲染遍次期間消耗的一渲染。
- 根據請求項4之方法,其中該至少一個第二渲染目標包括該複數個渲染遍次的一最終緩衝器,其中該最終緩衝器包括僅在該第二渲染遍次期間產生並且不被一後續渲染遍次消耗的一渲染。
- 根據請求項1之方法,其中該至少一個第一渲染目標由該第一工作負載產生,該第一工作負載的該第一複雜性大於產生該至少一個第二渲染目標的該第二工作負載的該第二複雜性。
- 根據請求項6之方法,亦包括控制該GPU直接將具有較低複雜性工作負載的渲染目標儲存在該系統記憶體中,該等渲染目標包括由具有該第二複雜性的該第二工作負載產生的至少一個第二渲染目標。
- 根據請求項6之方法,其中該第一工作負載的該第一複雜性和該第二工作負載的該第二複雜性各自基於該至少一個訊框的繪製的一數量、該至少一個訊框的每一繪製的著色器的一數量、以及該至少一個訊框的每一繪製的圖元的一數量中的至少一個。
- 根據請求項1之方法,亦包括控制該GPU產生構成該場景的複數個圖元,並且在該複數個渲染遍次的至少第一渲染遍次期間,將該複數個圖元分類到該片上圖形記憶體的複數個倉中。
- 根據請求項9之方法,亦包括控制該GPU為該至少一個訊框的每個倉產生一可見性串流,該可見性串流指示一相應倉中的複數個圖元中的至少一個圖元在一最終渲染場景中是否可見。
- 根據請求項1之方法,亦包括控制該GPU同時執行該第一渲染遍次和該第二渲染遍次,並將該至少一個第一渲染目標和該至少一個第二渲染目標同時儲存在該GPU的片上圖形記憶體中。
- 根據請求項11之方法,亦包括控制該GPU在該第一渲染遍次和該第二渲染遍次之後執行一第三渲染遍次,並在該至少一個第一渲染目標被從該GPU的片上圖形記憶體中清除之後,將至少一個第三渲染目標儲存在該GPU的片上圖形記憶體中。
- 根據請求項1之方法,其中該至少一個第一渲染目標包括一反照率渲染目標、一位置渲染目標、一法線渲染目標和一深度渲染目標。
- 一種用於對內容進行混合渲染的裝置,該裝置包括: 一記憶體;及 至少一個處理器,耦合到該記憶體並且被配置成: 配置一顯示裝置的一圖形處理單元(GPU)以針對要在一顯示裝置上顯示的一場景的至少一個訊框執行複數個渲染遍次; 控制該GPU執行該複數個渲染遍次中的一第一渲染遍次,以使用具有一第一複雜性且該第一複雜性超過一預定臨界值的一第一工作負載產生至少一個第一渲染目標,並將該至少一個第一渲染目標儲存在該GPU的一片上圖形記憶體中;及 控制該GPU執行該複數個渲染遍次中的一第二渲染遍次,以使用具有一第二複雜性且該第二複雜性未超過該預定臨界值的一第二工作負載產生至少一個第二渲染目標,並將該至少一個第二渲染目標儲存在該顯示裝置的一系統記憶體中,該第二渲染遍次在該第一渲染遍次之後,該第二渲染遍次從該GPU的該片上圖形記憶體讀取該至少一個第一渲染目標。
- 根據請求項14之裝置,其中該至少一個第二渲染目標在被儲存在該顯示裝置的系統記憶體中之前不被儲存在該GPU的片上圖形記憶體中。
- 根據請求項14之裝置,其中該至少一個處理器亦被配置成控制該GPU執行一解析,以將儲存在該GPU的片上圖形記憶體中的該至少一個第一渲染目標的內容複製到該系統記憶體,以供該顯示裝置顯示。
- 根據請求項14之裝置,其中該至少一個第一渲染目標包括該複數個渲染遍次的一中間緩衝器,其中該中間緩衝器包括在該第一渲染遍次期間產生並在該第二渲染遍次期間消耗的一渲染。
- 根據請求項17之裝置,其中該至少一個第二渲染目標包括該複數個渲染遍次的一最終緩衝器,其中該最終緩衝器包括僅在該第二渲染遍次期間產生並且不被一後續渲染遍次消耗的一渲染。
- 根據請求項14之裝置,其中該至少一個第一渲染目標由該第一工作負載產生,該第一工作負載的該第一複雜性大於產生該至少一個第二渲染目標的該第二工作負載的該第二複雜性。
- 根據請求項19之裝置,其中該至少一個處理器亦被配置成控制該GPU直接將具有較低複雜性工作負載的渲染目標儲存在該系統記憶體中,該等渲染目標包括由具有該第二複雜性的該第二工作負載產生的至少一個第二渲染目標。
- 根據請求項19之裝置,其中該第一工作負載的該第一複雜性和該第二工作負載的該第二複雜性各自基於該至少一個訊框的繪製的一數量、該至少一個訊框的每一繪製的著色器的一數量、以及該至少一個訊框的每一繪製的圖元的一數量中的至少一個。
- 根據請求項14之裝置,其中該至少一個處理器亦被配置成控制該GPU產生構成該場景的複數個圖元,並且在該複數個渲染遍次的至少第一渲染遍次期間,將該複數個圖元分類到該片上圖形記憶體的複數個倉中。
- 根據請求項22之裝置,其中該至少一個處理器亦被配置成控制該GPU為該至少一個訊框的每個倉產生一可見性串流,該可見性串流指示一相應倉中的複數個圖元中的至少一個圖元在一最終渲染場景中是否可見。
- 根據請求項14之裝置,其中該至少一個處理器亦被配置成控制該GPU同時執行該第一渲染遍次和該第二渲染遍次,並將該至少一個第一渲染目標和該至少一個第二渲染目標同時儲存在該GPU的片上圖形記憶體中。
- 根據請求項24之裝置,其中該至少一個處理器亦被配置成控制該GPU在該第一渲染遍次和該第二渲染遍次之後執行一第三渲染遍次,並在該至少一個第一渲染目標被從該GPU的片上圖形記憶體中清除之後,將至少一個第三渲染目標儲存在該GPU的片上圖形記憶體中。
- 根據請求項14之裝置,其中該至少一個第一渲染目標包括一反照率渲染目標、一位置渲染目標、一法線渲染目標和一深度渲染目標。
- 一種用於對內容進行混合渲染的裝置,該裝置包括: 用於配置一顯示裝置的一圖形處理單元(GPU)以針對要在一顯示裝置上顯示的一場景的至少一個訊框執行複數個渲染遍次的部件; 用於控制該GPU執行該複數個渲染遍次中的一第一渲染遍次以使用具有一第一複雜性且該第一複雜性超過一預定臨界值的一第一工作負載產生至少一個第一渲染目標的部件,並將該至少一個第一渲染目標儲存在該GPU的一片上圖形記憶體中;及 用於控制該GPU執行該複數個渲染遍次中的一第二渲染遍次以使用具有一第二複雜性且該第二複雜性未超過該預定臨界值的一第二工作負載產生至少一個第二渲染目標並將該至少一個第二渲染目標儲存在該顯示裝置的一系統記憶體中的部件,該第二渲染遍次在該第一渲染遍次之後,該第二渲染遍次從該GPU的該片上圖形記憶體讀取該至少一個第一渲染目標。
- 根據請求項27之裝置,其中該至少一個第一渲染目標包括該複數個渲染遍次的一中間緩衝器,其中該中間緩衝器包括在該第一渲染遍次期間產生並在該第二渲染遍次期間消耗的一渲染。
- 一種儲存用於由一圖形處理單元(GPU)對內容進行混合渲染的電腦可執行代碼的非暫時性電腦可讀取媒體,該代碼在由一處理器執行時使得該處理器: 配置一顯示裝置的該GPU以針對要在一顯示裝置上顯示的一場景的至少一個訊框執行複數個渲染遍次; 控制該GPU執行該複數個渲染遍次中的第一渲染遍次,以使用具有一第一複雜性且該第一複雜性超過一預定臨界值的一第一工作負載產生至少一個第一渲染目標,並將該至少一個第一渲染目標儲存在該GPU的一片上圖形記憶體中;及 控制該GPU執行該複數個渲染遍次中的一第二渲染遍次,以使用具有一第二複雜性且該第二複雜性未超過該預定臨界值的一第二工作負載產生至少一個第二渲染目標,並將該至少一個第二渲染目標儲存在該顯示裝置的一系統記憶體中,該第二渲染遍次在該第一渲染遍次之後,該第二渲染遍次從該GPU的該片上圖形記憶體讀取該至少一個第一渲染目標。
- 根據請求項29之非暫時性電腦可讀取媒體,其中該至少一個第一渲染目標包括該複數個渲染遍次的一中間緩衝器,其中該中間緩衝器包括在該第一渲染遍次期間產生並在該第二渲染遍次期間消耗的一渲染。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/039,873 | 2020-09-30 | ||
| US17/039,873 US11373268B2 (en) | 2020-09-30 | 2020-09-30 | Apparatus and method for graphics processing unit hybrid rendering |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202215376A TW202215376A (zh) | 2022-04-16 |
| TWI912355B true TWI912355B (zh) | 2026-01-21 |
Family
ID=
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150187117A1 (en) | 2013-12-27 | 2015-07-02 | Qualcomm Incorporated | Optimized multi-pass rendering on tiled base architectures |
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150187117A1 (en) | 2013-12-27 | 2015-07-02 | Qualcomm Incorporated | Optimized multi-pass rendering on tiled base architectures |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102614847B1 (ko) | 그래픽스 프로세싱 유닛 하이브리드 렌더링을 위한 장치 및 방법 | |
| JP2024506037A (ja) | 機械学習ワークロードにおけるテンソルオブジェクトサポートのための方法および装置 | |
| KR101697910B1 (ko) | 그래픽 프로세싱을 위한 임의적 제어 지점들에서의 결함-허용 선점 메커니즘 | |
| KR102703870B1 (ko) | 프리미티브들의 배치들의 지오메트리 프로세싱을 위한 스케일러블 프리미티브 레이트 아키텍처 | |
| US11037358B1 (en) | Methods and apparatus for reducing memory bandwidth in multi-pass tessellation | |
| KR20230097004A (ko) | 고속의 증분 공유된 상수 | |
| KR102777524B1 (ko) | 샘플 공간들과 연관된 포비티드 비닝된 렌더링 | |
| US11087431B2 (en) | Methods and apparatus for reducing draw command information | |
| TWI912355B (zh) | 用於圖形處理單元混合渲染的裝置和方法 | |
| KR102645239B1 (ko) | Gpu 캐시를 활용한 다운스케일링을 위한 simo 접근 방식으로의 gpu 커널 최적화 | |
| CN119866504A (zh) | 通过共享gpu硬件并发生成图块可见性信息 | |
| CN119816864A (zh) | 用于图形处理的快速msaa技术 | |
| WO2023287541A1 (en) | Optimization of depth and shadow pass rendering in tile based architectures | |
| KR102743522B1 (ko) | 상수 데이터 저장 | |
| KR102634506B1 (ko) | Gpu 하드웨어 기반 심도 버퍼 방향 추적 | |
| TWI907529B (zh) | 快速增量共享常數 | |
| US20250245041A1 (en) | Out-of-order execution for graphics processing unit hardware | |
| US11373267B2 (en) | Methods and apparatus for reducing the transfer of rendering information | |
| TW202536793A (zh) | 透過未來圖框的圖形工作負載的最佳化 | |
| CN119604894A (zh) | 密度驱动的可变速率着色 |