TW202219887A - 快速增量共享常數 - Google Patents
快速增量共享常數 Download PDFInfo
- Publication number
- TW202219887A TW202219887A TW110135805A TW110135805A TW202219887A TW 202219887 A TW202219887 A TW 202219887A TW 110135805 A TW110135805 A TW 110135805A TW 110135805 A TW110135805 A TW 110135805A TW 202219887 A TW202219887 A TW 202219887A
- Authority
- TW
- Taiwan
- Prior art keywords
- draw call
- constant data
- shared
- draw
- register
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本案內容提供用於快速增量共享常數的系統、設備、裝置和方法,包括在儲存媒體上編碼的電腦程式。在各態樣中,CPU可以決定/更新用於複數個繪製調用中的第一繪製調用的共享常數資料。可以與至少一個著色器相對應的共享常數資料可以是基於用於第一繪製調用的繪製調用更新來更新的。CPU可以將用於第一繪製調用的更新的共享常數資料傳送到GPU。GPU可以在至少一個暫存器中,接收來自CPU的更新的共享常數資料,並且基於與複數個繪製調用中的第一繪製調用的繪製調用更新相對應的更新的共享常數資料來配置至少一個暫存器。
Description
本專利申請案主張享有於2020年10月30日提出申請的、標題為「FAST INCREMENTAL SHARED CONSTANTS」的美國專利申請案第17/085,272的優先權,上述申請案以引用方式全部明確地併入本文中。
大體而言,本案內容係關於處理系統,以及更具體地,係關於用於圖形處理的一或多個技術。
計算設備經常執行圖形處理(例如,利用圖形處理單元(GPU))來渲染圖形資料以由計算設備進行顯示。此種計算設備可以包括例如電腦工作站、行動電話(諸如智慧型電話)、嵌入式系統、個人電腦、平板電腦和視訊遊戲控制台。GPU被配置為執行包括一或多個處理階段的圖形處理管線,該等處理階段一起操作以執行圖形處理命令並輸出訊框。中央處理單元(CPU)可以經由向GPU發出一或多個圖形處理命令,來控制GPU的操作。現代CPU通常能夠同時執行多個應用程式,每個應用程式在執行期間可能需要利用GPU。提供用於在顯示器上的視覺呈現的內容的設備可以利用GPU。
GPU操作可以是基於利用非增量常數的著色器處理技術。著色器處理技術在分箱架構中可能是有益的,因為著色器處理技術可以允許每個繪製調用是獨立的。然而,在一些例子中,非增量常數可能不是最高效的技術。因此,存在對改良的著色器處理技術的需要。
下文提供一或多個態樣的簡單概括以便提供對此種態樣的基本理解。該概括不是對所有預期態樣的詳盡概述,並且既不意欲辨識所有態樣的關鍵或重要元素,亦不意欲描述任意或全部態樣的範疇。其唯一目的是以簡化形式提供一或多個態樣的一些概念,作為後面提供的更詳細的描述的前奏。
用於著色器處理的常數資料可以載入到常數記憶體的專用區塊,並且可以在整個繪製調用中保持恆定。諸如當光照關係相對於在訊框內的條目/特徵變化時,可以針對後續繪製調用來更改經由常數資料指示的常數。為了針對後續繪製調用更改常數,可以將所有新的常數資料皆載入到常數記憶體/常數緩衝區,即使要從常數資料的先前版本更改少量的常數資料。在一些情況下,可能複製整個常數緩衝區以更改在常數緩衝區中的常數的小的子集,使得當前基於常數緩衝區的先前版本來處理的GPU命令不受常數緩衝區更改的影響。每次發生常數緩衝區更改時複製整個常數緩衝區,可能導致與決定何時釋放常數緩衝區的每個版本相關聯的顯著管理負擔,並且可能提供常數緩衝區的管線。
因此,共享常數(其是可以跨越不同著色器階段共享的常數)可以被配置為作為上下文暫存器出現在驅動程式介面中。可以以增量方式將共享常數載入到暫存器儲存中。基於著色器前序信號的執行,驅動程式可以以非增量方式對要映射到常數記憶體/常數緩衝區的共享常數/上下文暫存器進行程式設計。可以在著色器的主要部分之前在每次繪製調用時執行一次著色器前序信號,以根據需要將共享常數從上下文暫存器複製到常數記憶體/常數緩衝區。例如,若針對第一繪製調用將三個共享常數複製到的常數記憶體,以及針對第二繪製調用將另外三個共享常數複製到常數記憶體,則六個共享常數可用於第二繪製調用。在共享常數被從暫存器資料載入到常數記憶體後,可以照常執行著色器執行,無論該等常數是共享常數還是一般/非共享常數。
在本案內容的一態樣中,提供方法、電腦可讀取媒體和裝置。裝置可以包括記憶體和耦合到記憶體的至少一個處理器。記憶體可以包括指令,指令在被至少一個處理器執行時使得至少一個處理器執行以下操作:在至少一個暫存器中,接收來自CPU的共享常數資料,共享常數資料與複數個繪製調用中的第一繪製調用的繪製調用更新相對應;並且基於與第一繪製調用的繪製調用更新相對應的共享常數資料,來配置至少一個暫存器。
在本案內容的另外態樣中,提供方法、電腦可讀取媒體和裝置。裝置可以包括記憶體和耦合到記憶體的至少一個處理器。記憶體可以包括指令,指令在被至少一個處理器執行時,使得至少一個處理器執行以下操作:決定用於複數個繪製調用中的第一繪製調用的共享常數資料,共享常數資料與至少一個著色器相對應;更新用於第一繪製調用的共享常數資料,共享常數資料是基於用於第一繪製調用的繪製調用更新來更新的;並且將用於第一繪製調用的更新的共享常數資料傳送到GPU的至少一個暫存器。
為了實現前述和有關的目的,一或多個態樣包括下文充分描述並且在請求項中具體指出的特徵。下文描述和附圖詳細描述一或多個態樣的某些說明性特徵。然而,該等特徵僅指示可以以其採用各個態樣的基本原理的各種方法中的一些方法,並且本說明書意欲包括所有此種態樣及其均等物。
下文參照附圖更充分地描述系統、裝置、電腦程式產品和方法的各個態樣。然而,本案內容可以以多種不同的形式來體現,並且不應被解釋為限於貫穿本案內容提供的任何特定結構或功能。確切而言,提供該等態樣使得本案內容將是透徹和完整的,並且將向熟習此項技術者充分地傳達本案內容的範疇。基於本文中的教示,熟習此項技術者應當理解的是,本案內容的保護範疇意欲覆蓋本文所揭示的系統、裝置、電腦程式產品和方法的任何態樣,無論該態樣是獨立於本案內容的其他態樣實現的還是結合本案內容的其他態樣實現的。例如,使用本文闡述的任意數量的態樣可以實現裝置或可以實踐方法。此外,本案內容的保護範疇意欲覆蓋使用除了本文所闡述的揭示內容的各個態樣之外或者與本文所闡述的揭示內容的各個態樣不同的其他的結構、功能,或者結構和功能來實現的此種裝置或方法。本文中揭示的任何態樣可以經由請求項的一或多個元素來體現。
儘管本文描述各個態樣,但是該等態樣的許多變化和排列亦落入本案內容的範疇內。儘管提到本案內容的各態樣的一些潛在益處和優點,但是本案內容的範疇不意欲限於特定的益處、用途或目標。確切而言,本案內容的各態樣意欲廣泛地適用於不同的無線技術、系統配置、處理系統、網路和傳輸協定,其中的一些是在附圖和以下的描述中經由實例的方式進行圖示的。具體實施方式和附圖僅是對本案內容的說明而非限制,本案內容的範疇是經由所附請求項及其均等物來限定的。
若干態樣是參照各種裝置和方法來提供的。該等裝置和方法是經由各種方塊、元件、電路、過程、演算法等(統稱為「元素」)在下文的具體實施方式中描述並且在附圖中圖示的。該等元素可以使用電子硬體、電腦軟體或者其任意組合來實現。至於此種元素是被實現為硬體還是軟體,取決於特定的應用和對整體系統所施加的設計約束。
舉例而言,元素或者元素的任何部分或者元素的任意組合,可以被實現為包括一或多個處理器的「處理系統」(其亦可以稱為處理單元)。處理器的實例包括微處理器、微控制器、圖形處理單元(GPU)、通用GPU(GPGPU)、中央處理單元(CPU)、應用處理器、數位信號處理器(DSP)、精簡指令集計算(RISC)處理器、晶片上系統(SOC)、基頻處理器、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、可程式設計邏輯設備(PLD)、狀態機、閘控邏輯、分離硬體電路和被配置為執行貫穿本案內容描述的各種功能的其他適當硬體。處理系統中的一或多個處理器可以執行軟體。無論被稱為軟體、韌體、中間軟體、微代碼、硬體描述語言還是其他術語,軟體皆可以被廣泛地解釋為意指指令、指令集、代碼、程式碼片段、程式碼、程式、副程式、軟體元件、應用程式、軟體應用程式、套裝軟體、例行程式、子例行程式、物件、可執行檔案、執行的執行緒、程序、函數等等。
術語應用程式可以代表軟體。如本文所描述的,一或多個技術可以代表被配置為執行一或多個功能的應用程式(例如,軟體)。在此種實例中,應用程式可以被儲存在記憶體(例如,處理器的晶片上記憶體、系統記憶體或者任何其他記憶體)中。本文所描述的硬體(諸如處理器)可以被配置為執行應用程式。例如,應用程式可以被描述為包括代碼,代碼在由硬體執行時使得硬體執行本文所描述的一或多個技術。作為實例,硬體可以從記憶體存取代碼,並且執行從記憶體存取的代碼以執行本文所描述的一或多個技術。在一些實例中,在本案內容中辨識了元件。在此種實例中,元件可以是硬體、軟體或者其組合。元件可以是單獨的元件或者單個元件的子元件。
在本文所描述的一或多個實例中,本文所描述的功能可以用硬體、軟體或者其任意組合來實現。當用軟體實現時,功能可以作為一或多個指令或代碼在電腦可讀取媒體上進行儲存或編碼。電腦可讀取媒體包括電腦儲存媒體。儲存媒體可以是可以由電腦存取的任何可用媒體。經由實例而非限制的方式,此種電腦可讀取媒體可以包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電子可抹除可程式設計ROM(EEPROM)、光碟儲存、磁碟儲存、其他磁儲存設備、前述類型的電腦可讀取媒體的組合,或者可以用於以可以由電腦存取的指令或資料結構的形式儲存電腦可執行代碼的任何其他媒體。
如本文所使用的,術語「內容」的例子可以代表「圖形內容」、「圖像」等等,不管術語是用作形容詞、名詞還是其他詞類。在一些實例中,如本文所使用的,術語「圖形內容」可以代表由圖形處理管線的一或多個過程所產生的內容。在另外的實例中,如本文所使用的術語,「圖形內容」可以代表由被配置為執行圖形處理的處理單元所產生的內容。在另外的實例中,如本文所使用的,術語「圖形內容」可以代表由圖形處理單元所產生的內容。
用於著色器處理的常數資料可以被載入到常數記憶體的專用區塊,並且可以在整個繪製調用中保持恆定。諸如當光照關係相對於訊框內的條目/特徵發生變化時,經由常數資料指示的常數可以被更改用於後續繪製調用。為了更改用於後續繪製調用的常數,所有新的常數資料可以被載入到常數記憶體/常數緩衝區,即使要從常數資料的先前版本更改少量的常數資料。在一些情況下,可能複製整個常數緩衝區以更改在常數緩衝區中的常數的小的子集,使得當前基於常數緩衝區的先前版本來處理的GPU命令不受常數緩衝區更改的影響。每次發生常數緩衝區更改時複製整個常數緩衝區,可能導致與決定何時釋放常數緩衝區的每個版本相關聯的顯著管理負擔,並且可能提供常數緩衝區的管線。
因此,共享常數(其是可以跨越不同著色器階段共享的常數)可以被配置為作為上下文暫存器出現在驅動程式介面中。可以以增量方式將共享常數載入到暫存器儲存中。基於著色器前序信號的執行,驅動程式可以以非增量方式對要映射到常數記憶體/常數緩衝區的共享常數/上下文暫存器進行程式設計。可以在著色器的主要部分之前在每次繪製調用時執行一次著色器前序信號,以根據需要將共享常數從上下文暫存器複製到常數記憶體/常數緩衝區。例如,若針對第一繪製調用將三個共享常數複製到的常數記憶體,以及針對第二繪製調用將另外三個共享常數複製到常數記憶體,則六個共享常數可用於第二繪製調用。在共享常數被從暫存器資料載入到常數記憶體後,可以照常執行著色器執行,無論該等常數是共享常數還是一般/非共享常數。
圖1是圖示被配置為實現本案內容的一或多個技術的示例性內容產生系統100的方塊圖。內容產生系統100包括設備104。設備104可以包括用於執行本文所描述的各種功能的一或多個元件或電路。在一些實例中,設備104的一或多個元件可以是SOC的元件。設備104可以包括被配置為執行本案內容的一或多個技術的一或多個元件。在所示的實例中,設備104可以包括處理單元120、內容編碼器/解碼器122和系統記憶體124。在一些態樣中,設備104可以包括多個可選元件(例如,通訊介面126、收發機132、接收器128、傳輸器130、顯示處理器127和一或多個顯示器131)。顯示器131可以代表一或多個顯示器131。例如,顯示器131可以包括單個顯示器或多個顯示器,多個顯示器可以包括第一顯示器和第二顯示器。第一顯示器可以是左眼顯示器,以及第二顯示器可以是右眼顯示器。在一些實例中,第一顯示器和第二顯示器可以接收用於在其上進行呈現的不同的訊框。在其他實例中,第一顯示器和第二顯示器可以接收用於在其上進行呈現的相同的訊框。在另外的實例中,可以不在設備上顯示圖形處理的結果,例如,第一顯示器和第二顯示器可以不接收用於在其上進行呈現的任何訊框。替代地,訊框或圖形處理結果可以被傳送到另一設備。在一些態樣中,此舉可以稱為分離渲染。
處理單元120可以包括內部記憶體121。處理單元120可以被配置為使用圖形處理管線107來執行圖形處理。內容編碼器/解碼器122可以包括內部記憶體123。在一些實例中,設備104可以包括顯示處理器(諸如顯示處理器127),以在由一或多個顯示器131顯示由處理單元120產生的一或多個訊框之前,對該等訊框執行一或多個顯示處理技術。顯示處理器127可以被配置為執行顯示處理。例如,顯示處理器127可以被配置為對由處理單元120產生的一或多個訊框執行一或多個顯示處理技術。一或多個顯示器131可以被配置為顯示或以其他方式呈現由顯示處理器127處理的訊框。在一些實例中,一或多個顯示器131可以包括以下各項中的一項或多項:液晶顯示器(LCD)、電漿顯示器、有機發光二極體(OLED)顯示器、投影顯示設備、增強現實顯示設備、虛擬實境顯示設備、頭戴式顯示器,或者任何其他類型的顯示設備。
處理單元120和內容編碼器/解碼器122外部的記憶體(諸如系統記憶體124)可以被處理單元120和內容編碼器/解碼器122存取。例如,處理單元120和內容編碼器/解碼器122可以被配置為從外部記憶體(諸如系統記憶體124)讀取,及/或寫入到外部記憶體。處理單元120可以經由匯流排,通訊地耦合到系統記憶體124。在一些實例中,處理單元120和內容編碼器/解碼器122可以經由匯流排或經由不同的連接,通訊地耦合到內部記憶體121。
內容編碼器/解碼器122可以被配置為從任何源(諸如系統記憶體124及/或通訊介面126)接收圖形內容。系統記憶體124可以被配置為儲存所接收的經編碼或解碼的圖形內容。內容編碼器/解碼器122可以被配置為以經編碼的圖元資料的形式,例如從系統記憶體124及/或通訊介面126接收經編碼或解碼的圖形內容。內容編碼器/解碼器122可以被配置為對任何圖形內容進行編碼或解碼。
內部記憶體121或系統記憶體124可以包括一或多個揮發性或非揮發性記憶體或儲存設備。在一些實例中,內部記憶體121或系統記憶體124可以包括RAM、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、可抹除可程式設計ROM(EPROM)、EEPROM、快閃記憶體、磁資料媒體或光學儲存媒體,或者任何其他類型的記憶體。內部記憶體121或系統記憶體124可以是根據一些實例的非暫時性儲存媒體。術語「非暫時性」可以表示儲存媒體不是以載波或傳播信號來體現的。然而,術語「非暫時性」不應被解釋為意指內部記憶體121或系統記憶體124是不可移動的,或者其內容是靜態的。作為一個實例,系統記憶體124可以從設備104移除並且移動到另一設備。作為另一實例,系統記憶體124可能不可從設備104移除。
處理單元120可以是CPU、GPU、GPGPU,或者可以被配置為執行圖形處理的任何其他的處理單元。在一些實例中,處理單元120可以整合到設備104的主機板中。在另外的實例中,處理單元120可以存在於安裝在設備104的主機板的埠中的圖形卡上,或者可以以其他方式併入在被配置為與設備104交互操作的周邊設備中。處理單元120可以包括一或多個處理器,諸如一或多個微處理器、GPU、ASIC、FPGA、算數邏輯單位(ALU)、DSP、離散邏輯、軟體、硬體、韌體、其他等效的整合或離散邏輯電路系統,或其任何組合。若該等技術部分地以軟體實現,則處理單元120可以將用於軟體的指令儲存在適當的、非暫時性電腦可讀取儲存媒體(例如,內部記憶體121)中,並且可以使用一或多個處理器在硬體中執行指令以執行本案內容的技術。前述內容中的任何一種(包括硬體、軟體、硬體和軟體的組合等等)可以被認為是一或多個處理器。
內容編碼器/解碼器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所描述的任何接收功能及/或傳輸功能。
再次參照圖1,在某些態樣中,處理單元127可以包括常數增量器198,其被配置為:在至少一個暫存器中,接收來自CPU的共享常數資料,共享常數資料與複數個繪製調用的第一繪製調用的繪製調用更新相對應;並且基於與第一繪製調用的繪製調用更新相對應的共享常數資料,來配置至少一個暫存器。在另外的態樣中,常數增量器198可以被配置為:決定用於複數個繪製調用中的第一繪製調用的共享常數資料,共享常數資料與至少一個著色器相對應;更新用於第一繪製調用的共享常數資料,共享常數資料是基於用於第一繪製調用的繪製調用更新來更新的;並且將用於第一繪製調用的更新的共享常數資料傳送到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可以經由單獨的路徑將上下文暫存器封包260或繪製調用資料封包212發送給在GPU中的處理單元或區塊。此外,命令緩衝器250可以交替上下文暫存器和繪製調用的不同狀態。例如,可以按以下方式來構造命令緩衝器:上下文N的上下文暫存器、上下文N的繪製調用、上下文N+1的上下文暫存器,以及上下文N+1的繪製調用。
GPU可以以多種不同的方式來渲染圖像。在一些例子中,GPU可以使用直接渲染及/或分片式(tiled)渲染來渲染圖像。在分片式渲染中,可以將圖像劃分或分離成不同的部分或瓦片(tile)。在圖像劃分之後,可以單獨渲染每個部分或瓦片。使用分片式渲染,GPU可以將電腦圖形圖像劃分為網格格式,使得網格的每個部分(亦即,瓦片)是單獨地渲染的。在一些態樣中,在分箱(binning)通路期間,圖像可以被劃分為不同的箱體(bin)或瓦片。在一些態樣中,在分箱通路期間,在可以辨識可見基元或繪製調用的情況下可以構建可見性串流。與分片式渲染相比,直接渲染不會將訊框劃分成較小的箱體或瓦片。確切而言,在直接渲染中,一次對整個訊框進行渲染。此外,某些類型的GPU可以允許分片式渲染和直接渲染(例如,彈性(flex)渲染)兩者。
在一些態樣中,GPU可以將繪製或渲染過程應用於不同的箱體或瓦片。例如,GPU可以渲染到一個箱體,並針對在箱體中的基元或圖元執行所有繪製。在渲染到箱體的過程中,渲染目標可以位於GPU內部記憶體(GMEM)中。在一些例子中,在渲染到一個箱體之後,可以將渲染目標的內容移動到系統記憶體中,並且可以釋放GMEM以用於渲染下一個箱體。此外,GPU可以渲染到另一箱體,並針對在箱體中的基元或圖元執行繪製。因此,在一些態樣中,可能存在覆蓋一個表面中的所有繪製的少量的箱體,例如,四個箱體。此外,GPU可以循環遍歷一個箱體中的所有繪製,但針對可見的繪製調用(亦即,包含可見幾何形狀的繪製調用)執行繪製。在一些態樣中,可以產生可見性串流(例如,在分箱通路中)以決定在圖像或場景之每一者基元的可見性資訊。例如,該可見性串流可以辨識某個基元是否可見。在一些態樣中,該資訊可以用於移除不可見的基元(例如,在渲染通路中)。此外,基元中的被辨識為可見的至少一些基元可以在渲染中被渲染。
在分片式渲染的一些態樣中,可以存在多個處理階段或通路。例如,渲染可以在兩個通路中執行,例如可見性或箱體可見性通路以及渲染或箱體渲染通路。在可見性通路中,GPU可以輸入渲染工作負載,記錄基元或三角形的位置,以及隨後決定何者基元或三角形落入何者箱體或區域。在可見性通路的一些態樣中,GPU亦可以辨識或標記在可見性串流中每個基元或三角形的可見性。在渲染通路期間,GPU可以輸入可見性串流,並且一次處理一個箱體或一個區域。在一些態樣中,可以對可見性串流進行分析以決定何者基元或基元的頂點是可見的或不可見的。因此,可以對可見的基元或基元的頂點進行處理。經由如此做,GPU可以減少處理或渲染不可見的基元或三角形的不必要工作負載。
在一些態樣中,在可見性通路期間,可以處理某些類型的基元幾何(例如,僅位置幾何)。此外,根據基元或三角形的地點或位置,可以將基元分類到不同的箱體或區域中。在一些例子中,可以經由決定該等基元或三角形的可見性資訊,將基元或三角形分類到不同的箱體中。例如,GPU可以決定或寫入在每個箱體或區域之每一者基元的可見性資訊(例如,在系統記憶體中寫入)。該可見性資訊可以用於決定或產生可見性串流。在渲染通路中,可以單獨地渲染在每個箱體中的基元。在該等例子中,可見性串流可以從記憶體取得並且用於丟棄對於該箱體不可見的基元。
GPU或GPU架構的一些態樣可以提供用於渲染的多個不同的選項(例如,軟體渲染和硬體渲染)。在軟體渲染中,驅動程式或CPU可以經由一次處理每個視圖來複製整個訊框幾何形狀。此外,可以根據視圖來更改一些不同的狀態。因此,在軟體渲染中,軟體可以經由更改可以用於針對圖像之每一者視點進行渲染的一些狀態來複製整個工作負載。在某些態樣中,由於GPU可能針對圖像之每一者視點多次提交相同的工作負載,因此可能存在增加的管理負擔量。在硬體渲染中,硬體或GPU可以負責複製或處理用於圖像中每個視點的幾何形狀。因此,硬體可以管理用於圖像中每個視點的基元或三角形的複製或處理。
圖3圖示圖像或表面300,包括被劃分為多個箱體的多個基元。如在圖3中所圖示的,圖像或表面300包括區域302,區域302包括基元321、322、323和324。基元321、322、323和324被劃分或放置到不同的箱體(例如,箱體310、311、312、313、314和315)中。圖3圖示針對基元321-324使用多個視點的分片式渲染的實例。例如,基元321-324在第一視點350和第二視點351中。因此,GPU處理或渲染包括區域302的圖像或表面300,可以利用多個視點或多視圖渲染。
如本文所指示的,GPU或圖形處理器單元可以使用分片式渲染架構來降低功耗或節省記憶體頻寬。如上文進一步所說明的,該渲染方法可以將場景劃分為多個箱體,以及包括辨識在每個箱體中可見的三角形的可見性通路。因此,在分片式渲染中,全螢幕可以被劃分為多個箱體或瓦片。場景隨後可以被多次渲染,例如,針對每個箱體渲染一次或多次。
在圖形渲染的各態樣中,一些圖形應用程式可以一次或多次針對單個目標(亦即,一渲染目標)進行渲染。例如,在圖形渲染中,在系統記憶體上的訊框緩衝區可能被多次更新。訊框緩衝區可以是記憶體或隨機存取記憶體(RAM)的例如包含位元映像或儲存的一部分,以幫助儲存用於GPU的顯示資料。訊框緩衝區亦可以是包含完整的資料訊框的記憶體緩衝區。此外,訊框緩衝區可以是邏輯緩衝區。在一些態樣中,更新訊框緩衝區可以是在箱體或瓦片渲染中執行的,其中如上文所論述的,表面被劃分成多個箱體或瓦片,以及隨後每個箱體或瓦片可以單獨地渲染。此外,在分片式渲染中,訊框緩衝區可以被劃分為多個箱體或瓦片。
如本文所指示的,在一些態樣中,諸如在分箱或分片式渲染架構中,訊框緩衝區可以具有重複地儲存或寫入該等訊框緩衝區的資料(例如,當從不同類型的記憶體進行渲染時)。此舉可以被稱為解析和不解析訊框緩衝區或系統記憶體。例如,當儲存或寫入一個訊框緩衝區並且隨後切換到另一個訊框緩衝區時,在訊框緩衝區上的資料或資訊可以從在GPU處的GMEM解析到系統記憶體(亦即,雙倍資料速率記憶體(DDR)RAM或動態RAM(DRAM)中的記憶體)。
在一些態樣中,系統記憶體亦可以是例如在設備或智慧型電話上的用於儲存資料或資訊的晶片上系統(SoC)記憶體或者另一基於晶片的記憶體。系統記憶體亦可以是由CPU及/或GPU共享的實體資料儲存。在一些態樣中,系統記憶體可以是例如在設備或智慧型電話上的DRAM晶片。因此,SoC記憶體可以是用於儲存資料的基於晶片的方式。
在一些態樣中,GMEM可以是在GPU處的可以由靜態RAM(SRAM)實現的晶片上記憶體。此外,GMEM可以被儲存在設備(例如,智慧手機)上。如本文所指出的,資料或資訊可以在系統記憶體或DRAM與GMEM之間傳輸(例如,在設備處)。在一些態樣中,系統記憶體或DRAM可以在CPU或GPU處。另外,資料可以被儲存在DDR或DRAM處。在一些態樣中,諸如在分箱或分片式渲染中,記憶體的一小部分可以被儲存在GPU處(例如,在GMEM處)。在一些例子中,與在訊框緩衝區或系統記憶體處儲存資料相比,在GMEM處儲存資料可以利用較大的處理工作負載及/或功耗。
圖4是與用於提供增量共享常數的示例性技術相對應的示意圖400。在各實例中,著色器處理可以與以下各項相關聯:與GPU指令相對應的著色器代碼、可以接收用於渲染訊框的資料的資源(例如,紋理、表面等)及/或可以由應用程式載入的常數資料。常數資料(例如,c1-c8)可以在整個繪製調用中是不變的,並且可以利用專用常數RAM 410的區塊。儘管可以從繪製調用到繪製調用執行相同的著色器以渲染訊框的一部分,但是經由常數資料c1-c8指示的常數1-8可能被更改以用於渲染在訊框內的不同條目/特徵,因為常數1-8可以指示在例如照明與訊框內的條目/特徵之間的關係。對於每個繪製調用,可以將新的常數資料載入到常數RAM 410,因為先前的常數資料可能是非增量的。亦即,驅動程式可以被配置為完全地更新用於繪製調用/著色器中的每者的常數資料c1-c8(例如,即使要更改常數資料c1-c8中的少量常數資料),因為驅動程式可能不提供針對常數RAM 410的增量更新。
非增量常數資料對於分箱架構可能是有利的,其中每個繪製調用可以獨立於其他繪製調用,使得著色器執行可以迅速地進行到對於給定的箱體可見的繪製調用。然而,在應用程式級別(例如,在應用程式402),可能存在以下例子:可以經由允許常數資料c1-c8中的少量常數資料在繪製調用之間快速並且增量地更改,來提高GPU效能。然而,由於常數資料c1-c8可能是作為單個資料集合進行載入的,因此更改常數資料c1-c8的子集可能在著色器處理操作中引入複雜性。
常數1-8可以被儲存在常數緩衝區(例如,常數RAM 410)中,並且著色器可以索引常數緩衝區以載入常數1-8。在一些情況下,常數1-8可以儲存在多個常數緩衝區中。經由產生常數緩衝區,對常數1-8的更新可以在CPU上執行,因為驅動程式可以被配置為執行更新。但是,若當前正在處理/執行一或多個GPU命令,則可以基於在複製的常數緩衝區中要更改的常數子集來複製和更改整個常數緩衝區,使得當前基於常數緩衝區的先前版本來處理/執行GPU命令不受常數緩衝區更改的影響。每次發生常數緩衝區更改時複製整個常數緩衝區,可能導致與在GPU執行已經完成之後決定何時釋放常數緩衝區的每個版本相關聯的顯著管理負擔。此外,可以基於每次在常數緩衝區中常數的子集被更改時複製常數緩衝區,提供常數緩衝區的管線。
一些圖形應用程式介面(API)可以被配置為產生可以跨越不同著色器階段共享的共享常數(例如,在圖400中的值1和值2)。例如,被配置為基於紋理、照明演算法等為圖元著色的圖元著色器,可以具有與被配置為對包括該等圖元的訊框中的基元或三角形進行光柵化的頂點著色器共享的常數。共享常數亦可以被稱為根常數或推送常數,可以以低管理負擔將共享常數直接從應用程式402推送到GPU。在各實例中,應用程式402可以包括指示使用暫存器資料A-F的共享常數的指令,諸如SetSharedConstant(位置A,值1)和SetSharedConstant(位置D,值2)。來自應用程式402的shader foobar(foo)404(著色器foobar(foo)404)可以基於指令(諸如r0=r1+sharedConstantA和r2=r3*sharedConstantD)來引用共享常數。在基於指令針對應用程式402執行第一繪製調用之後,應用程式402可以更改對共享常數的指示(例如,可以將SetSharedConstant(位置A,值1)更改為SetSharedConstant(位置A,值3)),並且可以針對應用程式402執行第二繪製調用。
根據圖形API的配置,共享常數可以是32位元的常數,其數量範圍可以從32到128(例如,與用於一些硬體配置的數量範圍可以高達512的一般/非共享常數相比)。一些著色器可能使用超過512個常數。然而,成本可能與超過閾值(諸如512)的常數總數相關聯,因為過多數量的常數可能必須從主記憶體取回,而不是從晶片上記憶體中取得。相應地,多個共享常數(例如,32個共享常數)可以用於以與以下情形相比較低的管理負擔快速並且增量地更改常數資料c1-c8的一部分:基於針對著色器的每次引動而更新所有常數資料c1-c8所招致的管理負擔。
儘管一些圖形API可以基於是增量共享常數的,但是若此種共享常數被包括在常數儲存/常數記憶體緩衝區中,則共享常數可能與可以基於非增量常數儲存的分箱架構相衝突。因此,共享常數可以被配置為對於驅動程式介面表現為上下文暫存器406,使得共享常數可以被視為上下文暫存器狀態而不是常數狀態,因為上下文暫存器狀態可以是增量的。上下文暫存器406可以類似於用於繪製狀態的管線暫存器,因為上下文暫存器406可以經由GPU硬體來管線化。在將共享常數載入到上下文暫存器406(例如,暫存器A和暫存器D)中之後,資訊可以保持不變,除非/直到上下文暫存器406被驅動程式更新。
考慮到在一些GPU中的著色器可能不具有到用於提取暫存器資料A-F的暫存器匯流排的直接存取,上下文暫存器406可以以非增量方式映射到常數RAM 410。驅動程式可以將共享常數載入到上下文暫存器406中(例如,多達128個常數可以專用作與共享常數狀態相關聯的共享常數)。當驅動程式接收用於共享常數的更新資訊時,驅動程式可以更新可以常駐在GPU中的上下文暫存器406。可以跨繪製調用來維護用於上下文暫存器406的暫存器儲存,其中繪製調用各自可以包括用於定義上下文暫存器406中的一或多個上下文暫存器的命令。基於增量過程,驅動程式可以對要映射到常數RAM 410的所有共享常數暫存器(例如,暫存器A和D)進行程式設計。例如,驅動程式可以產生複數個命令,其中一些命令可以包括暫存器許可權。示例性暫存器許可權可以指示:特定上下文暫存器(例如,暫存器A和D)可以分別被映射到特定的常數(例如,常數2和3)。命令可以是基於特定暫存器的記憶體位址和要映射到特定常數的資料的。
由於驅動程式可以被配置為針對繪製調用來對複數個暫存器狀態進行程式設計,因此與共享常數(例如,值1和值2)相對應的暫存器(例如,暫存器A和D)可以與用於繪製調用的其他暫存器狀態被包括在一起。著色器硬體亦可以被配置為提供管線功能,使得當前正在處理的暫存器狀態/GPU命令不受暫存器狀態更新的影響。以此種方式,可以將共享常數資料提供給GPU。著色器硬體可以包括在著色器硬體上執行著色器指令的串流處理器(SP),諸如shader foo 412(著色器foo 412)。在各實例中,shader foo 412可以基於諸如r0=r1+c2和r2=r3*c3的指令來引用常數1-8。
著色器硬體亦可以包括高級定序器(HLSQ),HLSQ準備資訊以供SP執行。HLSQ可以執行早期前序信號/前序信號著色器,其可以是著色器代碼的在執行著色器的主要部分之前執行的一部分。前序信號著色器可以包括儲存共享常數(stsc)指令,該指令可以將共享常數(例如,暫存器A中的值1和暫存器D中的值2)從上下文暫存器406複製到常數RAM 410(例如,常數2和常數3)。在各實例中,可以基於諸如movToConstRam(sharedConstantRegA,constantRam2)和movToConstRam(sharedConstantRegD,constantRam3)的stsc指令,在著色器硬體上執行shader foo preamble 408(著色器foo前序信號408)。
前序信號著色器可能未被配置為決定由共享常數指示的實質性資訊/值。確切而言,前序信號著色器可以決定某些暫存器(諸如暫存器A和暫存器D)包括與用於執行特定繪製調用的資訊相關聯的共享常數。因此,可以執行前序信號著色器的stsc指令,以將被包括在某些暫存器中的共享常數複製到常數RAM 410中。在前序信號著色器中的其他指令可以包括:將一般/非共享常數資料載入到常數RAM 410中。常數RAM 410可以充當在SP執行主著色器之前設置的快取記憶體。由於在著色器的當前引動正在執行的同時,著色器可能正在針對著色器的下一次引動而配置共享常數,因此可以執行管線化以使得著色器的當前引動不受配置著色器的下一次引動的影響。
將資料從上下文暫存器406移動到常數儲存/常數RAM 410的HLSQ,可以在每次繪製調用之前執行一次前序信號著色器。常數資料c1-c8可以被載入到常數RAM 410中以用於特定的繪製調用,並且在下一次繪製調用中,與下一個繪製調用相對應的常數資料可以被載入到常數RAM 410中。前序信號著色器可以基於stsc指令將暫存器資料A-F從上下文暫存器406複製到常數RAM 410中。例如,若要執行利用3個共享常數的第一著色器,則前序信號著色器可以從上下文暫存器406複製3個共享常數。若要在第一著色器之後執行使用不同的共享常數集合(例如,具有或不具有重疊的常數資料c1-c8)的第二著色器,可以再次執行前序信號著色器以從上下文暫存器406載入/複製不同的共享常數集合。可以針對每個繪製調用保留共享常數,使得,基於經由前序信號著色器隨著著色器的每次引動獨立地更新共享常數而增量地累積的共享常數,若在第一繪製調用上複製了3個共享常數並且在第二繪製調用上複製了另外3個共享常數,則6個共享常數可用於第二繪製調用。因此,完整的共享常數集合可以不是一次複製的,因為前序信號著色器可以根據需要將共享常數移動到常數儲存中。
著色器編譯器可以被配置為決定何者共享常數要由著色器使用,並且可以將所決定的共享常數從暫存器資料A-F移動到常數RAM 410中。在將暫存器資料A-F載入到用於GPU的常數儲存中之後,可以照常執行著色器執行,而不管常數1-8是共享常數還是一般常數。亦即,在著色器常數狀態被載入到著色器常數RAM中之後,著色器常數狀態可以移動到類似於用於著色器執行的其他常數資料的工作常數RAM。經由允許著色器編譯器決定可以用於著色器執行的共享常數,可以單獨地載入此種常數,而不必載入共享常數的整個區塊。
圖5是根據本案內容的一或多個技術的示例性方法500的流程圖。方法500可以由裝置(諸如用於圖形處理的裝置、GPU、無線通訊設備等)來執行,如結合圖1-圖4和圖7的各態樣所使用的。
在502處,裝置可以在從CPU接收共享常數資料之前,配置用於至少一個著色器的著色器前序信號。例如,參照圖4和圖7,在著色器的主要部分之前執行的shader foo preamble 408可以在接收sharedConstantRegA和sharedConstantRegD之前被配置(例如,GPU 704可以在714處從CPU 702接收更新的共享常數資料之前,在712處配置著色器前序信號)。共享常數資料(例如,sharedConstantRegA和sharedConstantRegD)可以是基於用於至少一個著色器的著色器前序信號來接收的(例如,基於shader foo preamble 408的movToConstRam(sharedConstantRegA,constantRam2)指令及/或movToConstRam(sharedConstantRegD,constantRam3)指令的執行)。至少一個著色器可以包括頂點著色器、片段著色器或幾何著色器中的至少一項。
在504處,裝置可以在從CPU接收共享常數資料之前執行至少一個暫存器的初始配置。例如,參照圖4和圖7,暫存器A可以基於SetSharedConstant(位置A,值1)指令而被配置用於值1,以及暫存器D可以基於SetSharedConstant(位置D,值2)指令而被配置用於值2(例如,GPU 704可以在714處從CPU 702接收更新的共享常數資料之前,在712處配置上下文暫存器)。
在506處,裝置可以在至少一個暫存器中,接收來自CPU的共享常數資料,共享常數資料與複數個繪製調用中的第一繪製調用的繪製調用更新相對應。例如,參照圖4和圖7,可以基於接收值3和應用程式402的對應Draw()調用指令,更新上下文暫存器406中的上下文暫存器A(例如,GPU 704可以基於在710處的更新,在714處在GPU 704的上下文暫存器中接收來自CPU 702的更新的共享常數資料)。至少一個暫存器可以是上下文暫存器406或管線暫存器中的至少一項。參照圖2和圖4,共享常數資料(例如,值1和值2)可以與至少一個暫存器260/406的至少一個上下文暫存器狀態261相關聯。
在508處,裝置可以基於與第一繪製調用的繪製調用更新相對應的共享常數資料,來配置至少一個暫存器。例如,參照圖4和圖7,基於應用程式402的SetSharedConstant(位置A,值1)指令和SetSharedConstant(位置D,值2)指令,暫存器A和暫存器D可以被配置為分別儲存值1和值2(例如,GPU 704可以基於在714處被CPU 702指示為與第一繪製調用相對應的更新的共享常數資料,在716處配置上下文暫存器)。
在510處,裝置可以將與第一繪製調用的繪製調用更新相對應的共享常數資料發送給常數記憶體或常數緩衝區中的至少一項。在各態樣中,常數記憶體可以是常數RAM(例如,常數RAM 410/706)。例如,參照圖4和圖7,可以將暫存器A的值1和暫存器D的值2作為常數2和常數3,被從上下文暫存器406發送給常數RAM 410(例如,GPU 704可以在718處,將更新的共享常數資料發送給常數RAM 706)。
在512處,裝置可以將共享常數資料儲存在常數記憶體或常數緩衝區中的至少一項中。例如,參照圖4和圖7,值1和值2可以被儲存在常數RAM 410中(例如,GPU 704可以在720處,將更新的共享常數資料儲存在常數RAM 706中)。
在514處,裝置可以在至少一個暫存器中,接收來自CPU的更新的共享常數資料,更新的共享常數資料與複數個繪製調用中的第二繪製調用的繪製調用更新相對應,第二繪製調用在第一繪製調用之後。例如,參照圖4和圖7,可以基於應用程式402的在SetSharedConstant(位置A,值1)指令之後的Draw()調用指令和SetSharedConstant(位置A,值3)指令,將上下文暫存器406中的上下文暫存器A更新為值3(例如,GPU 704可以基於在724處的第二更新,在726處在GPU 704的上下文暫存器中接收來自CPU 702的第二更新的共享常數資料)。可以基於更新的共享常數資料(例如,值3)來更新至少一個暫存器(例如,上下文暫存器406)。在各態樣中,至少一個暫存器(例如,暫存器A)可以獨立於至少一個其他暫存器(例如,暫存器D)來更新。
在各配置中,提供用於圖形處理的方法或裝置。裝置可以是GPU,或者可以執行圖形處理的一些其他處理器。在各態樣中,裝置可以是設備104內的處理單元120,或者可以是設備104或另一設備內的某種其他硬體。裝置可以包括:用於在至少一個暫存器中,接收來自CPU的共享常數資料的構件,共享常數資料與複數個繪製調用中的第一繪製調用的繪製調用更新相對應;用於基於與第一繪製調用的繪製調用更新相對應的共享常數資料,來配置至少一個暫存器的構件。裝置亦可以包括:用於將與第一繪製調用的繪製調用更新相對應的共享常數資料發送給常數記憶體或常數緩衝區中的至少一項的構件。裝置亦可以包括:用於將共享常數資料儲存在常數記憶體或常數緩衝區中的至少一項中的構件。裝置亦可以包括:用於在從CPU接收共享常數資料之前,配置用於至少一個著色器的著色器前序信號的構件。裝置亦可以包括:用於在從CPU接收共享常數資料之前,執行至少一個暫存器的初始配置的構件。裝置亦可以包括:用於在至少一個暫存器中,接收來自CPU的更新的共享常數資料的構件,更新的共享常數資料與複數個繪製調用中的第二繪製調用的繪製調用更新相對應,第二繪製調用在第一繪製調用之後。
圖6是根據本案內容的一或多個技術的示例性方法600的流程圖。方法600可以由裝置(諸如用於圖形處理的裝置、CPU、無線通訊設備等)來執行,如結合圖1-圖4和圖7的各態樣所使用的。
在602處,裝置可以辨識複數個繪製調用中的第一繪製調用的例子。例如,參照圖4和圖7,應用程式402可以包括複數個Draw()調用指令(例如,CPU 702可以在708處辨識第一繪製調用的例子)。第一繪製調用的例子可以是基於與CPU(例如,702)的應用程式(例如,402)相關聯的指示(例如,由CPU 702)來辨識的。
在604處,裝置可以決定用於複數個繪製調用中的第一繪製調用的共享常數資料,共享常數資料與至少一個著色器相對應。例如,參照圖4和圖7,應用程式402可以將值1和值2指示為用於第一Draw()調用指令的共享常數資料(例如,CPU 702可以在710處,決定用於第一繪製調用的共享常數資料)。可以經由shader foo 404,從應用程式402引用共享常數資料。
在606處,裝置可以更新用於第一繪製調用的共享常數資料,共享常數資料是基於用於第一繪製調用的繪製調用更新來更新的。例如,參照圖4和圖7,應用程式402的SetSharedConstant指令可以基於第一Draw()調用指令,將共享常數資料更新為值1(例如,CPU 702可以在710處,更新用於第一繪製調用的共享常數資料)。
在608處,裝置可以將用於第一繪製調用的更新的共享常數資料傳送到GPU的至少一個暫存器。例如,參照圖4和圖7,基於應用程式402的SetSharedConstant(位置A,值1)指令和SetSharedConstant(位置D,值2)指令,可以將值1傳送到上下文暫存器406中的暫存器A並且將值2傳送到上下文暫存器406中的暫存器D(例如,CPU 702可以在714處,將更新的共享常數資料傳送到GPU 704的上下文暫存器)。
在610處,裝置可以辨識包括在複數個繪製調用中的第二繪製調用的例子,第二繪製調用在第一繪製調用之後。例如,參照圖4和圖7,應用程式402可以包括在第一Draw()調用指令之後的第二Draw()調用指令(例如,CPU 702可以在722處辨識第二繪製調用的例子)。第二繪製調用的例子可以是基於與CPU(例如,702)的應用程式(例如,402)相關聯的第二指示來辨識的(例如,由CPU 702辨識)。
在612處,裝置可以決定用於複數個繪製調用中的第二繪製調用的第二共享常數資料,第二共享常數資料與至少一個著色器相對應。例如,參照圖4和圖7,應用程式402可以將值3指示為用於第二Draw()調用指令的第二共享常數資料(例如,CPU 702可以在724處,決定用於第二繪製調用的第二共享常數資料)。可以經由shader foo 404,從應用程式402引用第二共享常數資料。
在614處,裝置可以更新用於第二繪製調用的第二共享常數資料,第二共享常數資料是基於用於第二繪製調用的繪製調用更新來更新的。例如,參照圖4和圖7,應用程式402的SetSharedConstant指令可以基於第二Draw()調用指令,將共享常數資料更新為值3(例如,CPU 702可以在724處,更新用於第二繪製調用的第二共享常數資料)。
在616處,裝置可以將用於第二繪製調用的更新的第二共享常數資料傳送到GPU的至少一個暫存器。例如,參照圖4和圖7,可以基於應用程式402的SetSharedConstant(位置A,值3)指令,將值3傳送到上下文暫存器406中的暫存器A(例如,CPU 702可以在726處,將第二更新的共享常數資料傳送到GPU 704的上下文暫存器)。
在各配置中,提供用於圖形處理的方法或裝置。裝置可以是CPU,或者可以執行圖形處理的某種其他處理器。在各態樣中,裝置可以是設備104內的處理單元120,或者可以是設備104或另一設備內的某種其他硬體。裝置可以包括:用於決定用於複數個繪製調用中的第一繪製調用的共享常數資料的構件,共享常數資料與至少一個著色器相對應;用於更新針對第一繪製調用的共享常數資料的構件,共享常數資料是基於用於第一繪製調用的繪製調用更新來更新的;及用於將用於第一繪製調用的更新的共享常數資料傳送到GPU的至少一個暫存器的構件。裝置亦可以包括:用於辨識複數個繪製調用中的第一繪製調用的例子的構件。裝置亦可以包括:用於辨識被包括在複數個繪製調用中的第二繪製調用的例子的構件,第二繪製調用在第一繪製調用之後。裝置亦可以包括:用於決定用於複數個繪製調用中的第二繪製調用的第二共享常數資料的構件,第二共享常數資料與至少一個著色器相對應;用於更新用於第二繪製調用的第二共享常數資料的構件,第二共享常數資料是基於用於第二繪製調用的繪製調用更新來更新的;及用於將用於第二繪製調用的更新的第二共享常數資料傳送到GPU的至少一個暫存器的構件。
圖7是圖示在CPU 702與GPU 704之間的示例性通訊的調用流程圖700。在708處,CPU 702可以辨識第一繪製調用的例子。在各態樣中,在CPU 702上執行的應用程式可以向GPU驅動程式指示第一繪製調用。GPU驅動程式亦可以在CPU 702上執行,使得CPU 702可以在708處,基於由應用程式進行的指示來辨識第一繪製調用的例子。在710處,CPU 702可以決定及/或更新用於第一繪製調用的共享常數資料。在714處,CPU 702可以將用於第一繪製調用的更新的共享常數資料傳送到GPU 704的上下文暫存器。
在712處,GPU 704可以在從CPU 702接收更新的共享常數資料之前,配置上下文暫存器。GPU亦可以在712處配置在執行主著色器之前在GPU 704上執行的著色器前序信號。在將更新的共享常數資料提供給上下文暫存器之後,GPU 704可以在716處,基於更新的共享常數資料來配置上下文暫存器。在各態樣中,GPU 704可以包括常數RAM 706。在718處,GPU 704可以將更新的共享常數資料發送給常數RAM 706以在720處儲存,以用於一或多個繪製調用。
在722處,CPU 702可以辨識第二繪製調用的例子。在各態樣中,在CPU 702上執行的應用程式可以向GPU驅動程式指示第二繪製調用,使得CPU 702可以基於由應用程式進行的指示來辨識第二繪製調用的例子。在724處,CPU 702可以決定第二共享常數資料,並且更新用於第二繪製調用的第二共享常數資料。在726處,CPU 702可以將第二更新的共享常數資料傳送到GPU 704的上下文暫存器,以用於第二繪製調用。亦即,GPU 704可以在726處,接收第二更新的共享常數資料並且基於第二更新的共享常數資料來重新配置/更新上下文暫存器,第二更新的共享常數資料亦可以被傳送到常數RAM 706並且儲存在常數RAM 706中。
應當理解的是,在所揭示的過程/流程圖中的方塊的特定順序或者層級是示例性方法的說明。應當理解的是,基於設計偏好,可以重新排列在過程/流程圖中的方塊的特定順序或者層級。此外,一些方塊可以組合或省略。所附的方法請求項以取樣順序提供各個方塊的元素,以及不意在限於提供的特定順序或層級。
提供先前描述,以使任何熟習此項技術者能夠實踐本文所描述的各個態樣。對該等態樣的各種修改對於熟習此項技術者將是顯而易見的,並且本文定義的整體原理可以適用於其他態樣。因此,請求項不意欲限於本文所展示的各態樣,而是要被賦予與請求項的語言相一致的全部範疇,其中除非特別如此說明,否則用對單數元素的引用不意欲意指「一個且僅一個」,而是「一或多個」。本文中使用「示例性的」一詞來意指「用作示例、實例或說明」。本文中描述為「示例性」的任何態樣未必要被解釋為是較佳的或者比其他態樣有優勢。
除非另外特別說明,否則術語「一些」代表一或多個,並且在上下文未另行規定的情況下術語「或」可以被解釋為「及/或」。諸如「A、B或C中的至少一項」、「A、B或C中的一或多個」、「A、B和C中的至少一項」、「A、B和C中的一或多個」以及「A、B、C或者其任意組合」的組合,包括A、B及/或C的任意組合,並且可以包括A的倍數、B的倍數或者C的倍數。具體而言,諸如「A、B或C中的至少一項」、「A、B或C中的一或多個」、「A、B和C中的至少一項」、「A、B和C中的一或多個」以及「A、B、C或者其任意組合」的組合,可以是僅A、僅B、僅C、A和B、A和C、B和C或者A和B和C,其中任意此種組合可以包含A、B或C中的一或多個成員。貫穿本案內容描述的各個態樣的元素的對於一般技術者是公知的或將要是公知的所有結構和功能均等物經由引用的方式明確地併入本文中,並且意欲由請求項包含。此外,本文中所揭示的內容不意欲奉獻給公眾,不管此種揭示內容是否明確記載在申請專利範圍中。詞語「模組」、「機制」、「元素」、「設備」等可能不是詞語「構件」的替代詞。因此,沒有請求項元素要被解釋為功能構件,除非該元素是使用短語「用於……的構件」明確記載的。
在一或多個實例中,本文所描述的功能可以用硬體、軟體、韌體或者其任意組合來實現。例如,儘管已經貫穿本案內容使用了術語「處理單元」,但是此種處理單元可以用硬體、軟體、韌體或者其任何組合來實現。若本文所描述的任何功能、處理單元、技術或其他模組是用軟體實現的,則本文所描述的功能、處理單元、技術或其他模組可以作為一或多個指令或代碼儲存在電腦可讀取媒體上或者經由電腦可讀取媒體進行傳輸。
電腦可讀取媒體可以包括電腦資料儲存媒體或通訊媒體,通訊媒體包括促進將電腦程式從一個地方傳送到另一個地方的任何媒體。用此種方式,電腦可讀取媒體通常可以對應於:(1)非暫時性的有形電腦可讀取儲存媒體;或者(2)諸如信號或載波波形的通訊媒體。資料儲存媒體可以是可以由一或多個電腦或者一或多個處理器存取以取得用於實現在本案內容中描述的技術的指令、代碼及/或資料結構的任何可用媒體。經由實例而非限制的方式,此種電腦可讀取媒體可以包括RAM、ROM、EEPROM、壓縮光碟唯讀記憶體(CD-ROM)或者其他光碟儲存、磁碟儲存或其他磁儲存設備。如本文所使用的,磁碟和光碟包括壓縮光碟(CD)、鐳射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中磁碟通常磁性地複製資料,而光碟則用鐳射來光學地複製資料。上述的組合亦應當被包括在電腦可讀取媒體的範疇內。電腦程式產品可以包括電腦可讀取媒體。
本案內容的技術可以在多種多樣的設備或裝置中實現,包括無線手機、積體電路(IC)或者一組IC(例如,晶片組)。在本案內容中描述各種元件、模組或單元,以強調被配置為執行所揭示的技術的設備的功能態樣,但不一定需要由不同的硬體單元來實現。確切而言,如上文所描述的,各個單元可以被組合在任何硬體單元中,或者經由交互操作的硬體單元集合(包括如上文所描述的一或多個處理器)結合適當的軟體及/或韌體來提供。因此,如本文所使用的術語「處理器」可以代表任何前述結構或者適合於實現本文所描述的技術的任何其他結構。此外,該等技術可以在一或多個電路或邏輯元件中完全地實現。
1:常數
2:常數
3:常數
4:常數
5:常數
6:常數
7:常數
8:常數
100:內容產生系統
104:設備
107:圖形處理管線
120:處理單元
121:內部記憶體
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:L2快取記憶體(UCHE)
240:系統記憶體
250:命令緩衝器
260:上下文暫存器封包
261:上下文狀態
300:圖像或表面
302:區域
310:箱體
311:箱體
312:箱體
313:箱體
314:箱體
315:箱體
321:基元
322:基元
323:基元
324:基元
350:第一視點
351:第二視點
400:示意圖
402:應用程式
404:著色器foo
406:上下文暫存器
408:著色器foo前序信號
410:常數RAM
412:著色器foo
500:方法
502:步驟
504:步驟
506:步驟
508:步驟
510:步驟
512:步驟
514:步驟
600:方法
602:步驟
604:步驟
606:步驟
608:步驟
610:步驟
612:步驟
614:步驟
616:步驟
700:調用流程圖
702:CPU
704:GPU
706:常數RAM
708:元件符號
710:元件符號
712:元件符號
714:元件符號
716:元件符號
718:元件符號
720:元件符號
722:元件符號
724:元件符號
726:元件符號
A:暫存器資料
B:暫存器資料
C:暫存器資料
D:暫存器資料
E:暫存器資料
F:暫存器資料
圖1是圖示根據本案內容的一或多個技術的示例性內容產生系統的方塊圖。
圖2圖示根據本案內容的一或多個技術的示例性GPU。
圖3圖示根據本案內容的一或多個技術的示例性圖像或表面。
圖4圖示與根據本案內容的一或多個技術的用於提供增量共享常數的示例性技術相對應的示意圖。
圖5是根據本案內容的一或多個技術的示例性圖形處理方法的流程圖。
圖6是根據本案內容的一或多個技術的示例性圖形處理方法的流程圖。
圖7是圖示在中央處理單元(CPU)與圖形處理單元(GPU)之間的示例性通訊的調用流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
400:示意圖
402:應用程式
404:著色器foo
406:上下文暫存器
408:著色器foo前序信號
410:常數RAM
412:著色器foo
Claims (42)
- 一種圖形處理的方法,包括以下步驟: 在至少一個暫存器中,接收來自一中央處理單元(CPU)的共享常數資料,該共享常數資料與複數個繪製調用中的一第一繪製調用的一繪製調用更新相對應;及 基於與該第一繪製調用的該繪製調用更新相對應的該共享常數資料,來配置該至少一個暫存器。
- 根據請求項1之方法,亦包括以下步驟:將與該第一繪製調用的該繪製調用更新相對應的該共享常數資料發送給一常數記憶體或一常數緩衝區中的至少一項。
- 根據請求項2之方法,亦包括以下步驟:將該共享常數資料儲存在該常數記憶體或該常數緩衝區中的該至少一項中。
- 根據請求項2之方法,其中該常數記憶體是一常數隨機存取記憶體(RAM)。
- 根據請求項1之方法,亦包括以下步驟:在接收來自該CPU的該共享常數資料之前,配置用於至少一個著色器的一著色器前序信號。
- 根據請求項5之方法,其中該共享常數資料是基於用於該至少一個著色器的該著色器前序信號來接收的。
- 根據請求項5之方法,其中該至少一個著色器包括一頂點著色器、一片段著色器或一幾何著色器中的至少一項。
- 根據請求項1之方法,亦包括以下步驟:在接收來自該CPU的該共享常數資料之前,執行該至少一個暫存器的一初始配置。
- 根據請求項1之方法,亦包括以下步驟:在該至少一個暫存器中,接收來自該CPU的更新的共享常數資料,該更新的共享常數資料與該複數個繪製調用中的一第二繪製調用的一繪製調用更新相對應,該第二繪製調用在該第一繪製調用之後。
- 根據請求項9之方法,其中該至少一個暫存器是基於該更新的共享常數資料來更新的。
- 根據請求項10之方法,其中該至少一個暫存器是獨立於至少一個其他暫存器來更新的。
- 根據請求項1之方法,其中該至少一個暫存器是一上下文暫存器或一管線暫存器中的至少一項。
- 根據請求項1之方法,其中該共享常數資料與該至少一個暫存器的至少一個上下文暫存器狀態相關聯。
- 一種圖形處理的方法,包括以下步驟: 決定用於複數個繪製調用中的一第一繪製調用的共享常數資料,該共享常數資料與至少一個著色器相對應; 更新用於該第一繪製調用的該共享常數資料,該共享常數資料是基於用於該第一繪製調用的一繪製調用更新來更新的;及 將用於該第一繪製調用的該更新的共享常數資料傳送給一圖形處理單元(GPU)的至少一個暫存器。
- 根據請求項14之方法,亦包括以下步驟:辨識該複數個繪製調用中的該第一繪製調用的一例子。
- 根據請求項15之方法,其中該第一繪製調用的該例子是基於與一中央處理單元(CPU)的一應用程式相關聯的一指示來辨識的。
- 根據請求項16之方法,亦包括以下步驟:辨識被包括在該複數個繪製調用中的一第二繪製調用的一例子,該第二繪製調用在該第一繪製調用之後。
- 根據請求項17之方法,其中該第二繪製調用的該例子是基於與該CPU的該應用程式相關聯的一第二指示來辨識的。
- 根據請求項17之方法,亦包括以下步驟: 決定用於該複數個繪製調用中的該第二繪製調用的第二共享常數資料,該第二共享常數資料與該至少一個著色器相對應; 更新用於該第二繪製調用的該第二共享常數資料,該第二共享常數資料是基於用於該第二繪製調用的一繪製調用更新來更新的;及 將用於該第二繪製調用的該更新的第二共享常數資料傳送給該GPU的該至少一個暫存器。
- 一種用於圖形處理的裝置,包括: 一記憶體;及 至少一個處理器,其耦合到該記憶體並且被配置為: 在至少一個暫存器中,接收來自一中央處理單元(CPU)的共享常數資料,該共享常數資料與複數個繪製調用中的一第一繪製調用的一繪製調用更新相對應;及 基於與該第一繪製調用的該繪製調用更新相對應的該共享常數資料,來配置該至少一個暫存器。
- 根據請求項20之裝置,其中該至少一個處理器亦被配置為:將與該第一繪製調用的該繪製調用更新相對應的該共享常數資料發送給一常數記憶體或一常數緩衝區中的至少一項。
- 根據請求項21之裝置,其中該至少一個處理器亦被配置為:將該共享常數資料儲存在該常數記憶體或該常數緩衝區中的該至少一項中。
- 根據請求項21之裝置,其中該常數記憶體是一常數隨機存取記憶體(RAM)。
- 根據請求項20之裝置,其中該至少一個處理器亦被配置為:在接收來自該CPU的該共享常數資料之前,配置用於至少一個著色器的一著色器前序信號。
- 根據請求項24之裝置,其中該共享常數資料是基於用於該至少一個著色器的該著色器前序信號來接收的。
- 根據請求項24之裝置,其中該至少一個著色器包括一頂點著色器、一片段著色器或一幾何著色器中的至少一項。
- 根據請求項20之裝置,其中該至少一個處理器亦被配置為:在接收來自該CPU的該共享常數資料之前,執行該至少一個暫存器的一初始配置。
- 根據請求項20之裝置,其中該至少一個處理器亦被配置為:在該至少一個暫存器中,接收來自該CPU的更新的共享常數資料,該更新的共享常數資料與該複數個繪製調用中的一第二繪製調用的一繪製調用更新相對應,該第二繪製調用在該第一繪製調用之後。
- 根據請求項28之裝置,其中該至少一個暫存器是基於該更新的共享常數資料來更新的。
- 根據請求項29之裝置,其中該至少一個暫存器是獨立於至少一個其他暫存器來更新的。
- 根據請求項20之裝置,其中該至少一個暫存器是一上下文暫存器或一管線暫存器中的至少一項。
- 根據請求項20之裝置,其中該共享常數資料與該至少一個暫存器的至少一個上下文暫存器狀態相關聯。
- 根據請求項20之裝置,其中該裝置是一無線通訊設備。
- 一種用於圖形處理的裝置,包括: 一記憶體;及 至少一個處理器,其耦合到該記憶體並且被配置為: 決定用於複數個繪製調用中的一第一繪製調用的共享常數資料,該共享常數資料與至少一個著色器相對應; 更新用於該第一繪製調用的該共享常數資料,該共享常數資料是基於用於該第一繪製調用的一繪製調用更新來更新的;及 將用於該第一繪製調用的該更新的共享常數資料傳送給一圖形處理單元(GPU)的至少一個暫存器。
- 根據請求項34之裝置,其中該至少一個處理器亦被配置為:辨識該複數個繪製調用中的該第一繪製調用的一例子。
- 根據請求項35之裝置,其中該第一繪製調用的該例子是基於與一中央處理單元(CPU)的應用程式相關聯的一指示來辨識的。
- 根據請求項36之裝置,其中該至少一個處理器亦被配置為:辨識被包括在該複數個繪製調用中的一第二繪製調用的一例子,該第二繪製調用在該第一繪製調用之後。
- 根據請求項37之裝置,其中該第二繪製調用的該例子是基於與該CPU的該應用程式相關聯的一第二指示來辨識的。
- 根據請求項37之裝置,其中該至少一個處理器亦被配置為: 決定用於該複數個繪製調用中的該第二繪製調用的第二共享常數資料,該第二共享常數資料與該至少一個著色器相對應; 更新用於該第二繪製調用的該第二共享常數資料,該第二共享常數資料是基於用於該第二繪製調用的一繪製調用更新來更新的;及 將用於該第二繪製調用的該更新的第二共享常數資料傳送給該GPU的該至少一個暫存器。
- 根據請求項34之裝置,其中該裝置是一無線通訊設備。
- 一種儲存電腦可執行代碼的電腦可讀取媒體,該代碼在被至少一個處理器執行時使該至少一個處理器執行以下操作: 在至少一個暫存器中,接收來自一中央處理單元(CPU)的共享常數資料,該共享常數資料與複數個繪製調用中的一第一繪製調用的一繪製調用更新相對應;及 基於與該第一繪製調用的該繪製調用更新相對應的該共享常數資料,來配置該至少一個暫存器。
- 一種儲存電腦可執行代碼的電腦可讀取媒體,該代碼在被至少一個處理器執行時使該至少一個處理器執行以下操作: 決定用於複數個繪製調用中的一第一繪製調用的共享常數資料,該共享常數資料與至少一個著色器相對應; 更新用於該第一繪製調用的該共享常數資料,該共享常數資料是基於用於該第一繪製調用的一繪製調用更新來更新的;及 將用於該第一繪製調用的該更新的共享常數資料傳送給一圖形處理單元(GPU)的至少一個暫存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/085,272 | 2020-10-30 | ||
US17/085,272 US11694384B2 (en) | 2020-10-30 | 2020-10-30 | Fast incremental shared constants |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202219887A true TW202219887A (zh) | 2022-05-16 |
Family
ID=78599119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110135805A TW202219887A (zh) | 2020-10-30 | 2021-09-27 | 快速增量共享常數 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11694384B2 (zh) |
EP (1) | EP4238050A1 (zh) |
KR (1) | KR20230097004A (zh) |
CN (1) | CN116490893A (zh) |
TW (1) | TW202219887A (zh) |
WO (1) | WO2022093462A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11694384B2 (en) | 2020-10-30 | 2023-07-04 | Qualcomm Incorporated | Fast incremental shared constants |
US11657471B2 (en) * | 2021-06-23 | 2023-05-23 | Qualcomm Incorporated | Methods and apparatus for constant data storage |
US11755336B2 (en) * | 2021-09-29 | 2023-09-12 | Advanced Micro Devices, Inc. | Distributed geometry |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7692660B2 (en) * | 2006-06-28 | 2010-04-06 | Microsoft Corporation | Guided performance optimization for graphics pipeline state management |
US8666712B2 (en) * | 2006-07-24 | 2014-03-04 | Ati Technologies Inc. | Physical simulations on a graphics processor |
US8593465B2 (en) | 2007-06-13 | 2013-11-26 | Advanced Micro Devices, Inc. | Handling of extra contexts for shader constants |
US8120608B2 (en) * | 2008-04-04 | 2012-02-21 | Via Technologies, Inc. | Constant buffering for a computational core of a programmable graphics processing unit |
US9799094B1 (en) * | 2016-05-23 | 2017-10-24 | Qualcomm Incorporated | Per-instance preamble for graphics processing |
US10430912B2 (en) * | 2017-02-14 | 2019-10-01 | Qualcomm Incorporated | Dynamic shader instruction nullification for graphics processing |
US10157443B1 (en) * | 2017-07-28 | 2018-12-18 | Qualcomm Incorporated | Deferred batching of incremental constant loads |
US11169811B2 (en) * | 2019-05-30 | 2021-11-09 | Advanced Micro Devices, Inc. | Graphics context bouncing |
US11694384B2 (en) | 2020-10-30 | 2023-07-04 | Qualcomm Incorporated | Fast incremental shared constants |
-
2020
- 2020-10-30 US US17/085,272 patent/US11694384B2/en active Active
-
2021
- 2021-09-27 TW TW110135805A patent/TW202219887A/zh unknown
- 2021-09-28 EP EP21806436.8A patent/EP4238050A1/en active Pending
- 2021-09-28 WO PCT/US2021/052291 patent/WO2022093462A1/en active Application Filing
- 2021-09-28 KR KR1020237013569A patent/KR20230097004A/ko active Search and Examination
- 2021-09-28 CN CN202180071736.6A patent/CN116490893A/zh active Pending
-
2023
- 2023-05-15 US US18/317,825 patent/US12056804B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2022093462A1 (en) | 2022-05-05 |
CN116490893A (zh) | 2023-07-25 |
KR20230097004A (ko) | 2023-06-30 |
EP4238050A1 (en) | 2023-09-06 |
US20230290034A1 (en) | 2023-09-14 |
US20220139021A1 (en) | 2022-05-05 |
US11694384B2 (en) | 2023-07-04 |
US12056804B2 (en) | 2024-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102695571B1 (ko) | 머신 러닝 워크로드들에서 텐서 오브젝트 지원을 위한 방법들 및 장치 | |
US12056804B2 (en) | Fast incremental shared constants | |
TW202215376A (zh) | 用於圖形處理單元混合渲染的裝置和方法 | |
US11037358B1 (en) | Methods and apparatus for reducing memory bandwidth in multi-pass tessellation | |
WO2022093502A1 (en) | Motion estimation based on region discontinuity | |
US11373267B2 (en) | Methods and apparatus for reducing the transfer of rendering information | |
EP4066217B1 (en) | Methods and apparatus for reducing draw command information | |
US20240256221A1 (en) | Floating point atomics using integer hardware | |
US11657471B2 (en) | Methods and apparatus for constant data storage | |
US11954758B2 (en) | Dynamic wave pairing | |
US20230086288A1 (en) | Dynamic variable rate shading | |
US20230019763A1 (en) | Methods and apparatus to facilitate a dedicated bindless state processor | |
WO2024064032A1 (en) | Improving visibility generation in tile based gpu architectures | |
CN117616446A (zh) | 基于图块的架构中的深度和阴影通道渲染的优化 | |
TW202215363A (zh) | 基於gpu硬體的深度緩衝區方向追蹤 |