TWI778780B - 用於圖形處理的方法、裝置以及計算設備 - Google Patents

用於圖形處理的方法、裝置以及計算設備 Download PDF

Info

Publication number
TWI778780B
TWI778780B TW110133360A TW110133360A TWI778780B TW I778780 B TWI778780 B TW I778780B TW 110133360 A TW110133360 A TW 110133360A TW 110133360 A TW110133360 A TW 110133360A TW I778780 B TWI778780 B TW I778780B
Authority
TW
Taiwan
Prior art keywords
lrz
buffer
gpu
depth
commands
Prior art date
Application number
TW110133360A
Other languages
English (en)
Other versions
TW202215363A (zh
Inventor
斯里哈里巴布 阿拉
艾迪穆隆 瑞麥許巴布
喬納拉加達 納根德拉庫瑪
阿維納什 西薩拉馬亞
王韜
湯學豐
湯瑪斯艾德文 弗里辛格
安德魯艾文 格魯柏
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW202215363A publication Critical patent/TW202215363A/zh
Application granted granted Critical
Publication of TWI778780B publication Critical patent/TWI778780B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/10Mixing of images, i.e. displayed pixel being the result of an operation, e.g. adding, on the corresponding input pixels
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Image Generation (AREA)

Abstract

本案涉及用於圖形處理的方法和裝置。示例性方法大體包括:在圖形處理單元(GPU)處接收對應於跨訊框的複數個繪製的複數個命令,該複數個命令中的每一個指示相對於對應繪製的低解析度深度(LRZ)緩衝區的深度測試方向。該方法通常包括在GPU維持LRZ狀態緩衝區,以在GPU處理複數個命令時儲存第一命令的對應深度測試方向。該方法包括在處理具有與儲存在LRZ狀態緩衝區中的對應深度測試方向不同的深度測試方向的複數個命令中的命令之後,在GPU處禁止使用該LRZ緩衝區用於剩餘未處理的複數個命令中的任何命令的深度測試。

Description

用於圖形處理的方法、裝置以及計算設備
本專利申請案主張於2020年10月6日提出申請的美國非臨時申請案17/064,188號的權益和優先權,該申請案在此被轉讓給受讓人,並且在此經由引用將其全部內容明確地併入本文,如同在下文中完全闡述的一般,並用於所有適用的目的。
本案大體上係關於處理系統,且更特別地,係關於用於圖形處理的一或多個技術。
計算設備通常利用圖形處理單元(GPU)來加速圖形資料的渲染以用於顯示。此類計算設備可以包括,例如,電腦工作站、諸如所謂智慧型電話的行動電話、嵌入式系統、個人電腦、平板電腦和視訊遊戲控制台。GPU執行圖形處理流水線,該流水線包括一或多個處理階段,這些處理階段一起操作來執行圖形處理命令並輸出訊框。中央處理單元(CPU)可以經由向GPU發佈一或多個圖形處理命令來控制GPU的操作。當今的CPU通常能夠同時執行多個應用,每一應用可能需要在執行期間利用GPU。提供用於在顯示器上視覺呈現的內容的設備通常包括GPU。
通常,設備的GPU被配置成執行圖形處理流水線中的程序。然而,隨著無線通訊和較小的掌上型設備的出現,對改進圖形處理的需求增加了。
以下內容呈現一或多個態樣的簡要總結以便提供對此類態樣的基本理解。本發明內容不是對所有預期態樣的廣泛概述,並且既不意欲辨識所有態樣的關鍵元素,亦不意欲圖示任何或所有態樣的範疇。其唯一目的是以簡化形式呈現一或多個態樣的一些概念,作為稍後呈現的更詳細描述的序言。
在本案的一態樣,提供一種方法、電腦可讀取媒體、裝置和計算設備。
在某些態樣,實例方法通常包括:在圖形處理單元(GPU)處接收對應於跨訊框的複數個繪製的複數個命令,該等複數個命令中的每一個指示相對於對應繪製的低解析度深度(LRZ)緩衝區的深度測試方向。該方法通常包括在GPU維持LRZ狀態緩衝區,以在GPU處理複數個命令時儲存第一命令的對應深度測試方向。該方法包括在處理具有與儲存在LRZ狀態緩衝區中的對應深度測試方向不同的深度測試方向的複數個命令中的命令之後,在GPU處禁止使用該LRZ緩衝區用於剩餘未處理的複數個命令中的任何命令的深度測試。
在某些態樣,實例裝置通常包括LRZ緩衝區、LRZ狀態緩衝區和GPU。GPU可以被配置成接收對應於跨 訊框的複數個繪製的複數個命令,複數個命令中的每一個指示相對於對應繪製的LRZ緩衝區的深度測試方向。GPU可以被配置成維持LRZ狀態緩衝區,以在GPU處理複數個命令時儲存第一命令的對應深度測試方向。GPU可以被配置成在處理具有與儲存在LRZ狀態緩衝區中的對應深度測試方向不同的深度測試方向的複數個命令中的命令之後,禁止使用LRZ緩衝區用於剩餘未處理的複數個命令中的任何命令的深度測試。
在某些態樣,實例計算設備通常包括中央處理單元(CPU)、顯示器、LRZ緩衝區、LRZ狀態緩衝區和GPU。GPU被配置成從CPU接收複數個命令,該等複數個命令對應於用於在顯示器上顯示的跨訊框的複數個繪製,該等複數個命令中的每一個指示相對於對應繪製的LRZ緩衝區的深度測試方向。GPU被配置成維持LRZ狀態緩衝區,以在GPU處理複數個命令時儲存第一命令的對應深度測試方向。GPU被配置成在處理具有與儲存在LRZ狀態緩衝區中的對應深度測試方向不同的深度測試方向的複數個命令中的命令之後,禁止使用LRZ緩衝區用於剩餘未處理的複數個命令中的任何命令的深度測試。
在附圖和以下描述中闡述了本案的一或多個實例的細節。本案的其他特徵、目標和優點將從描述和附圖以及從請求項而顯而易見。
通常,圖形處理系統的軟體驅動器可以負責處置圖形處理的一些態樣,包括基於方向測試來啟用/禁用用於LRZ深度測試的低解析度(LRZ)深度緩衝區。在某些態樣,要顯示的訊框被分成諸如固定大小的圖塊(或面元)。每一圖塊(或面元)可以在LRZ深度緩衝區中具有對應的條目,該條目指示該圖塊/面元的最遠深度值。當GPU處理用於渲染的面元內的元素(例如,三角形)的繪製命令時,可以執行深度測試來決定該元素是否可見(例如,若它被另一元素重疊或者不重疊),且因此當繪製命令指示深度測試被啟用時決定該元素是否需要被渲染及/或繪製命令是否被處理。例如,繪製命令的深度值可以與儲存在LRZ深度緩衝區中的深度值進行比較,並且若可見,則渲染該元素。
繪製命令亦指示用於對應繪製的相對於LRZ緩衝區的深度測試方向。若深度測試方向在面元中的後續繪製之間改變,則可能需要禁止LRZ深度緩衝區的使用,因為方向的改變意味著LRZ深度緩衝區不能再用於比較其他繪製是否可見。通常,軟體驅動器追蹤深度測試方向的變化,並在對GPU的繪製命令中包括是否啟用或禁止LRZ深度緩衝區的使用的指示。
然而,許多GPU包括多個執行緒,用於處理由驅動器發送到GPU的繪製命令(例如,由多執行緒應用程式設計介面(API)存取)。例如,GPU可以並行地從多個不同的命令緩衝區中提取繪製命令。因此,驅動器不一定具有關於某些繪製命令將由GPU處理的順序的先驗資訊,且因此,可能無法預測何時啟用/禁止LRZ深度緩衝區的使用。
根據本文論述的態樣,決定是否啟用/禁止LRZ深度緩衝區的使用可以代替由GPU基於其實際處理命令的順序來執行。因此,若GPU是處置深度緩衝區方向追蹤的實體,驅動器可能不再需要追蹤深度緩衝區方向,並且可能總是僅僅指示在繪製命令中啟用了LRZ深度緩衝區。
在下文參考附圖更充分地描述系統、裝置、電腦程式產品和方法的各態樣。然而,本案可以許多不同形式來體現,並且不應被理解為限於貫穿本案呈現的任何特定結構或功能。而是,提供這些態樣使得本案將是透徹且完整的,且將本案的範疇充分傳達到本發明所屬領域中具有通常知識者。基於本文的教示,本發明所屬領域中具有通常知識者應瞭解,本案的範疇意欲覆蓋本文揭示的系統、裝置、電腦程式產品和方法的任何態樣,無論是獨立於本案的其他態樣實現還是與本案的其他態樣結合實現。例如,可以使用本文闡述的任何數量的態樣來實現裝置或實踐方法。另外,本案的範疇意欲覆蓋此類裝置或方法,該裝置或方法使用除了或不同於本文闡述的本案的各態樣之外的其他結構、功能性或結構和功能性來實踐。本文揭示的任何態樣可以由請求項的一或多個元件來體現。
儘管本文描述了各態樣,但是這些態樣的許多變化和變換皆落入本案的範疇內。儘管本案各態樣的一些潛在益處和優點被提及,但是本案的範疇並不意欲限於特定的益處、用途或目標。相反,本案的各態樣意欲廣泛適用於不同的圖形技術、系統組態等,其中一些在附圖和以下描述中以實例的方式示出。實施方式和附圖僅僅是對本案的說明而不是限制,本案的範疇由所附請求項及其均等物限定。
參考各種裝置和方法來呈現若干態樣。這些裝置和方法將在以下實施方式中進行描述,並在附圖中經由各種塊、部件、電路、程序、演算法等(統稱為「元件」)進行說明。這些元件可以使用電子硬體、電腦軟體或其任何組合來實現。此類元件是實現為硬體還是軟體取決於特定應用和強加於整個系統的設計約束。
舉例而言,元件或元件的任何部分或元件的任何組合可以被實現為包括一或多個處理器的「處理系統」(亦可以稱作處理單元)。處理器的實例包括微處理器、微控制器、圖形處理單元(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可以包括單個顯示器或多個顯示器。顯示器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和內容編碼器/解碼器122可以經由匯流排通訊地耦接到系統記憶體124。在一些實例中,處理單元120和內容編碼器/解碼器122可以經由匯流排或不同的連接彼此通訊地耦接。
內容編碼器/解碼器122可以被配置成從任何源接收圖形內容,諸如系統記憶體124及/或通訊介面126。系統記憶體124可以被配置成儲存所接收的經編碼或解碼的圖形內容。內容編碼器/解碼器122可以被配置成例如從系統記憶體124及/或通訊介面126接收編碼圖元資料形式的經編碼或解碼的圖形內容。內容編碼器/解碼器122可以被配置成編碼或解碼任何圖形內容。
內部記憶體121或系統記憶體124可以包括一或多個揮發性或非揮發性記憶體或存放裝置。在一些實例中,內部記憶體121或系統記憶體124可以包括RAM、SRAM、DRAM、可抹除可程式設計ROM(EPROM)、電子可抹除可程式設計ROM(EEPROM)、快閃記憶體、磁性資料媒體或光學儲存媒體、或任何其他類型的記憶體。
根據一些實例,內部記憶體121或系統記憶體124可以是非暫時性儲存媒體。術語「非暫時性」可以指示儲存媒體沒有體現為載波或傳播訊號。然而,術語「非暫時性」不應被解釋為意味著內部記憶體121或系統記憶體124是不可移動的或者其內容是靜態的。作為一個實例,系統記憶體124可以從設備104移除並移動到另一設備。作為另一實例,系統記憶體124可以不從設備104移除。
處理單元120可以是中央處理單元(CPU)、圖形處理單元(GPU)、通用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,在某些態樣,圖形處理流水線107可以包括低解析度(LRZ)禁用部件198,其被配置成禁止使用LRZ緩衝區用於深度測試。LRZ禁用部件198亦可以被配置成接收對應於跨訊框的複數個繪製的複數個命令,複數個命令中的每一個指示相對於對應繪製的LRZ緩衝區的深度測試方向。LRZ禁用部件198亦可以被配置成維持LRZ狀態緩衝區,以在GPU處理複數個命令時儲存第一命令的對應深度測試方向。LRZ禁用部件198可以被配置成在處理具有與儲存在LRZ狀態緩衝區中的對應深度測試方向不同的深度測試方向的複數個命令中的命令之後,禁止使用LRZ緩衝區用於剩餘未處理的複數個命令中的任何命令的深度測試。LRZ禁用部件198亦可以被配置成比較包括該命令的一或多個命令中的每一個的對應深度測試方向與儲存在LRZ狀態緩衝區中的對應深度測試方向,其中禁止使用LRZ緩衝區是回應於該比較。LRZ禁用部件198亦可以被配置成經由禁止使用命令和在該命令之後處理的複數個命令中的每一個的LRZ緩衝區來禁止使用LRZ緩衝區。
如本文所描述,諸如設備104的設備可以指被配置成執行本文描述的一或多個技術的任何設備、裝置或系統。例如,設備可以是伺服器、基地台、使用者設備、客戶端設備、站、存取點、電腦(例如,個人電腦、桌上型電腦、膝上型電腦、平板電腦、電腦工作站或大型電腦)、最終產品、裝置、電話、智慧型電話、伺服器、視訊遊戲平臺或控制台、掌上型設備(例如,可攜式視訊遊戲裝置或個人數位助理(PDA))、可穿戴計算設備(例如,智慧手錶、增強現實設備或虛擬實境設備)、不可穿戴設備、顯示器或顯示裝置、電視機、電視機上盒、中間網路設備、數位媒體播放機、視訊流式設備、內容流式設備、車載電腦、任何行動設備、被配置成產生圖形內容的任何設備、或者被配置成執行本文描述的一或多個技術的任何設備。本文的程序可以被描述為由特定硬體部件(例如,GPU)執行,但在其他實施例中,可以使用與所揭示的實施例一致的其他硬體部件(例如,CPU)來執行。
GPU可以在GPU流水線中處理多種類型的資料或資料包。例如,在一些態樣,GPU可以處理兩種類型的資料或資料包,例如上下文暫存器包和繪製調用資料。上下文暫存器包可以是一組全域狀態資訊,例如,關於全域暫存器、著色程式或常數資料的資訊,其可以規制圖形上下文將如何被處理。例如,上下文暫存器包可以包括關於顏色格式的資訊。在上下文暫存器包的一些態樣,可以存在指示哪個工作負荷屬於上下文暫存器的位元(bit)。此外,可以存在同時及/或並行執行的多個功能或程式設計。例如,功能或程式設計可以描述某些操作,例如顏色模式或顏色格式。因此,上下文暫存器可以定義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、虛擬分割緩存(VSC)239以及系統記憶體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可以用多種不同方式來渲染影像。在一些情況下,GPU可以使用渲染或平鋪渲染來渲染影像。在平鋪渲染GPU中,影像可以被劃分或分離成不同的區段或圖塊(tile),亦稱作面元(bin)。在影像的劃分之後,每一區段或圖塊可以被分別渲染。平鋪渲染GPU可以將電腦圖形影像劃分為網格格式,使得網格的每一部分(亦即,圖塊)被分別渲染。在一些態樣,在面元化(binning)程序期間,影像可以被劃分成不同的面元或圖塊。此外,在面元化程序中,不同的圖元可以在某些面元中被著色,例如,使用繪製調用。在一些態樣,在面元化程序期間,可以構建可見性串流,其中可以辨識可見的圖元或繪製調用。
在一些態樣,GPU可以向不同的面元或圖塊應用繪製或渲染程序。例如,GPU可以渲染到一個面元,並且隨後為面元中的圖元或圖元執行所有繪製。此外,GPU可以渲染到另一面元,並且為該面元中的圖元或圖元執行繪製。因此,在一些態樣,可能有少量面元(例如,四個面元)覆蓋一個表面中的所有繪製。此外,GPU可以在一個面元中循環所有的繪製,但是為可見的繪製調用執行繪製,即包括可見幾何圖形的繪製調用。在一些態樣,可以例如在面元化程序中產生可見性串流,以決定影像或場景中每一圖元的可見性資訊。例如,該可見性串流可以辨識某個圖元是否可見。在一些態樣,該資訊可以用於移除例如在渲染程序中不可見的圖元。此外,至少一些被辨識為可見的圖元可以在渲染程序中被渲染。
在平鋪渲染的一些態樣,可以存在多個處理階段或程序。例如,渲染可以在兩個程序中執行,例如可見性或面元可見性程序和渲染或面元渲染程序。在可見性程序期間,GPU可以輸入渲染工作負載,記錄圖元或三角形的位置,並且隨後決定哪些圖元或三角形落入哪個面元或區。在可見性程序的一些態樣,GPU亦可以辨識或標記可見性串流中每一圖元或三角形的可見性。在渲染程序期間,GPU可以輸入可見性串流,並一次處理一個面元或區。在一些態樣,可以分析可見性串流以決定哪些圖元或圖元的頂點可見或不可見。因而,可見的圖元或圖元的頂點可以被處理。經由這樣做,GPU可以減少處理或渲染不可見圖元或三角形的不必要工作負載。
在一些態樣,在可見性程序期間,可以處理某些類型的圖元幾何形狀,例如僅位置幾何形狀。此外,根據圖元或三角形的位置或定位,圖元可以被分類到不同的面元或區中。在一些情況下,可以經由決定圖元或三角形的可見性資訊來將這些圖元或三角形分類到不同的面元中。例如,GPU可以在每一面元或區中,例如在系統記憶體中,決定或寫入每一圖元的可見性資訊。該可見性資訊可以用於決定或產生可見性串流。在渲染程序中,每一面元中的圖元可以被單獨渲染。在這些情況下,可見性串流可以從用於丟棄對於該面元不可見的圖元的記憶體中提取。
GPU或GPU架構的一些態樣可以提供許多不同的渲染選項,例如軟體渲染和硬體渲染。在軟體渲染中,驅動器或CPU可以經由一次處理每一視圖來複製整個訊框幾何形狀。此外,一些不同的狀態可能會根據視圖而改變。因而,在軟體渲染中,軟體可以經由改變可以用於為影像中的每一視點渲染的一些狀態來複製整個工作負載。在某些態樣,由於GPU可能會為影像中的每一視點多次提交相同的工作負載,因此可能會增加管理負擔。在硬體渲染中,硬體或GPU可以負責複製或處理影像中每一視點的幾何形狀。因此,硬體可以管理影像中每一視點的圖元或三角形的複製或處理。
圖3示出影像或表面300,包括分為多個面元的多個圖元。如圖3中所示,影像或表面300包括區302,該區包括圖元321、322、323和324。圖元321、322、323和324被劃分或放置到不同的面元中,例如面元310、311、312、313、314和315。圖3示出使用圖元321-324的多個視點的平鋪渲染的實例。例如,圖元321-324在第一視點350和第二視點351中。因而,處理或渲染包括區302的影像或表面300的GPU可以利用多個視點或多視圖渲染。
如本文所指示,GPU或圖形處理器單元可以使用平鋪渲染架構來降低功耗或節省記憶體頻寬。如上文進一步所述,該渲染方法可以將場景劃分為多個面元,並且包括辨識每一面元中可見的三角形的可見性程序。因此,在平鋪渲染中,全屏可以被分成多個面元或圖塊。隨後,場景可以被渲染多次,例如,每一面元一次。
如前述,GPU可以在一個面元中循環每一繪製調用,並執行可見的繪製調用。在一些態樣,落入給定面元中的繪製調用被認為是即時繪製調用,而落入面元外部的繪製調用被認為是失效繪製調用。有效地跳過失效繪製調用可以降低多次渲染場景導致的硬體管理負擔。
對於GPU的每一功能,可以有一個指派的組,即工作負載組或圖形狀態組。工作負載或圖形狀態組亦可以包括對應狀態或上下文狀態。因此對應於特定狀態或上下文狀態的工作負載或圖形狀態組中的每一個可以執行GPU的功能。例如,深度狀態可以是一個工作負載或圖形狀態組,混合狀態可以是另一工作負載或圖形狀態組,且片段著色器狀態可以是另一工作負載或圖形狀態組。
對於每一面元或圖塊,GPU可以執行所有工作負載或圖形狀態組,並提取該特定面元的每一即時繪製。此外,GPU可以為每一面元渲染提取命令串流。此外,如上文指示,在可見性程序中,GPU可以處理該命令串流。GPU亦可以決定在可見性程序期間哪個繪製調用在特定的面元中可見。
在可見性程序期間,GPU亦可以為每一繪製調用中的每一圖形狀態組構建一組狀態資訊或上下文狀態資訊。在一些態樣,當CPU或軟體提供遞增或變化的狀態或上下文狀態時,GPU亦可以為每一繪製調用構建完整的狀態資訊集。因此,在可見性程序期間,CPU可以為工作負載或圖形狀態組傳達這些遞增狀態或上下文狀態。在一些態樣,命令串流可以在執行每一繪製調用之前發送,例如在可見性程序中。因而,命令串流可以在GPU渲染或繪製之前在可見性程序中傳輸。
在一些情況下,CPU或軟體可以在繪製調用之間為每一圖形狀態組構建或寫入完整狀態或上下文狀態。經由這樣做,CPU可以説明GPU或硬體跳到下一繪製調用,而非為失效繪製調用提取命令串流。因此,在一些態樣,無論特定圖形狀態組的狀態或上下文狀態是否已經改變,CPU皆可以為每一圖形狀態組構建或寫入完整的狀態資訊集。例如,若繪製調用1-3是失效繪製調用,為了從繪製調用0跳轉到繪製調用4,CPU或軟體可以在繪製調用之間為每一圖形狀態組構建完整的狀態資訊集。
為了構建每一圖形狀態組的完整狀態資訊集,CPU可以利用每一圖形狀態組的圖形狀態,例如上下文暫存器、常數、著色器和資源描述符。實際上,在一些態樣,每一繪製調用可能包含完整的上下文狀態資訊集,這會增加相當大的驅動器管理負擔。
如前述,工作負載或圖形狀態組可以包括常數、頂點著色器、片段著色器、幾何形狀著色器、上下文暫存器、提取器、資源描述符、混合狀態、資料狀態、深度狀態等。工作負載或圖形狀態組的量可以是任何適當數量,例如8、16、32或64。此外,每一工作負載或圖形狀態組可以對應於例如在GPU執行的特定狀態或上下文狀態。在一些態樣,CPU可以指示GPU如何將其工作負載劃分為不同的工作負載或圖形狀態組。GPU隨後可以處理這些不同的工作負載或圖形狀態組。在一些態樣,GPU可能不知道哪個組對應於特定狀態或上下文狀態。 在GPU的示例性LRZ深度方向追蹤
本案大體上涉及處理系統,且更特別地,涉及用於圖形處理的一或多個技術。例如,如前述,經由使用圖形處理單元(GPU)來處置低解析度(LRZ)深度方向追蹤,即使在多執行緒環境中,亦可以有效地啟用/禁止用於LRZ深度測試的LRZ深度緩衝區的使用。
LRZ深度測試是一項特徵,它允許GPU在影像處理流水線的早期以增加的速率拒絕不可見的圖元,整體上提高了效能。由於深度測試是在粗略的水平上進行的,在一些極端狀況下,LRZ深度測試是不可能的。例如,每當在深度寫入位啟用時,深度測試方向發生變化時,LRZ深度測試可能不可用。通常,軟體驅動器追蹤命令的一或多個繪製上的深度方向變化,以決定是啟用還是禁用LRZ深度測試(例如,經由LRZEn位元,如下所示)。在下文的實例1中,由於驅動器按照執行順序追蹤每一繪製的LRZ緩衝區方向。特別地,驅動器偵測draw4處的方向變化(例如,方向從「LESS」切換到「GREATER」),並在渲染的剩餘部分禁用LRZ(例如,LRZEn = 0)。 實例1 Draw1:方向是LESS,LRZEn=1 LRZWriteEn=1;depthWrites=1; Draw2:方向是LESS,LRZEn=1 LRZWriteEn=1;depthWrites=1; Draw3:方向是LESS,LRZEn=1 LRZWriteEn=0;depthWrites=0; Draw4:方向是GREATER,LRZEn=0 LRZWriteEn=0;depthWrites=1; Draw5:方向是LESS,LRZEn=0 LRZWriteEn=0;depthWrites=1; Draw6:方向是LESS,LRZEn=0 LRZWriteEn=0;depthWrites=0;
然而,隨著下一代處理器及/或多執行緒圖形應用程式設計介面(API)的出現,在將繪製記錄到各種命令緩衝區時,驅動器可能不知道繪製的執行順序。例如,如下文實例2和3所示,驅動器可以有兩個不同的命令緩衝區,其中一個可以在另一個之前提交。在實例2中,若命令緩衝區1在命令緩衝區2之前提交,LRZEn位將類似於上述實例1被程式設計。然而,若命令緩衝區2在命令緩衝區1之前提交,如實例3所示,則對於命令緩衝區1中的繪製或命令緩衝區2的繪製4和5,將不會啟用LRZ(例如,LRZEn = 0)。命令緩衝區1的LRZEn被設為0,因為在前一個命令緩衝區(命令緩衝區2)中有緩衝區方向改變。由於這種不決定性,驅動器禁用LRZ深度測試(例如,對於輔助命令緩衝區、深度負載情況等)以避免意外渲染(例如深度剔除)。 實例2 命令緩衝區1: Draw1:方向是LESS,LRZEn=1 LRZWriteEn=1;depthWrites=1; Draw2:方向是LESS,LRZEn=1 LRZWriteEn=1;depthWrites=1; Draw3:方向是LESS,LRZEn=1 LRZWriteEn=0;depthWrites=0; 命令緩衝區2: Draw4:方向是GREATER,LRZEn=0 LRZWriteEn=0;depthWrites=1; Draw5:方向是LESS,LRZEn=0 LRZWriteEn=0;depthWrites=1; Draw6:方向是LESS,LRZEn=0 LRZWriteEn=0;depthWrites=0; 實例3 命令緩衝區2: Draw4:方向是GREATER,LRZEn=1 LRZWriteEn=1;depthWrites=1; Draw5:方向是LESS,LRZEn=0 LRZWriteEn=0;depthWrites=1; Draw6:方向是LESS,LRZEn=0 LRZWriteEn=0;depthWrites=0; 命令緩衝區1: Draw1:方向是LESS,LRZEn=0 LRZWriteEn=0;depthWrites=1; Draw2:方向是LESS,LRZEn=0 LRZWriteEn=0;depthWrites=1; Draw3:方向是LESS,LRZEn=0 LRZWriteEn=0;depthWrites=0;
因此,某些態樣有利地利用GPU而不是驅動器來追蹤深度緩衝區的方向,以便每當GPU偵測到深度緩衝區方向改變時,啟用/禁用LRZ深度測試。在一些情況下,當遇到啟用深度寫入的給定訊框(例如,給定訊框的給定面元)的第一次繪製時,GPU可以將深度緩衝區的方向儲存在(例如,額外的較小)緩衝區(例如,狀態緩衝區)中。隨後,GPU可以將其他繪製的深度方向與儲存在狀態緩衝區中的方向進行比較,隨後基於每個繪製來決定允許/不允許LRZ深度測試,並且在一些情況下,基於偵測到深度緩衝區方向變化(例如,從LESS到GREATER或從GREATER到LESS)而禁用給定訊框(例如,訊框的給定面元)中後續繪製的LRZ。因此,本文的某些態樣允許驅動器不再需要追蹤繪製的方向深度。在此情況下,驅動器可以簡單地基於深度函數對所有適用的繪製啟用LRZ深度測試(例如,LRZEn = 1),而無需實際追蹤深度方向。
在某些態樣,GPU負責根據偵測到的深度緩衝區方向變化來自動禁用LRZ(或保持LRZ啟用)。這可以允許驅動器及/或GPU在許多可能的情形下更有效地使用LRZ深度測試。如下文實例4所示,可以為每一繪製命令啟用LRZ深度測試(例如,對於6個繪製中的每一繪製,LRZEn = 1)。亦即,驅動器可以假設將執行LRZ深度測試,並且可以由GPU進行禁用LRZ深度測試的決策。
在命令緩衝區1先於命令緩衝區2執行的情況下,GPU可以負責偵測深度緩衝區方向變化。因此,GPU可以將LESS儲存在狀態緩衝區中(例如,每個Draw1),並將儲存在狀態緩衝區中的LESS值與剩餘5個繪製(例如,或N-1個繪製,給定N個繪製)中的每一個進行比較。如下所示,在Draw4,GPU可以偵測到深度方向緩衝區中的方向現在是GREATER,並決定對剩餘的繪製(例如,對於Draw4、Draw5和Draw6)禁用LRZ深度測試。 實例4 命令緩衝區1: Draw1:方向是LESS,LRZEn=1 LRZWriteEn=1;depthWrites=1; Draw2:方向是LESS,LRZEn=1 LRZWriteEn=1;depthWrites=1; Draw3:方向是LESS,LRZEn=1 LRZWriteEn=0;depthWrites=0; 命令緩衝區2: Draw4:方向是GREATER,LRZEn=1 LRZWriteEn=1;depthWrites=1;Draw5:方向是LESS,LRZEn=1 LRZWriteEn=1;depthWrites=1; Draw6:方向是LESS,LRZEn=1 LRZWriteEn=0;depthWrites=0。
在一些情況下,GPU可以為訊框內的每一面元(例如,面元310、311、312、313、314、315)重新啟用LRZ深度測試(例如,LRZEn=1)。例如,若在完成第一面元的渲染之後,在一組繪製中的N次繪製之後,LRZEn = 0,則GPU可以將LRZEn重置為1,以處理下一面元的繪製。
在某些態樣,為每一面元提供單獨的LRZ狀態緩衝區,或者一或多個LRZ狀態緩衝區包括用於每一面元的單獨條目。例如,設備104(例如,處理單元120)可以包括一或多個LRZ狀態緩衝區。
在某些態樣,GPU可以並行處理訊框的不同面元的繪製命令,或者按照在為訊框的給定面元處理所有繪製命令之前跨面元處理一些繪製命令的順序來處理訊框的不同面元的繪製命令。例如,假設對於面元310,一訊框總共有1000個繪製命令要處理。例如,GPU可以首先處理繪製命令1-500,並且隨後繼續處理另一面元(諸如面元311)的繪製命令。GPU稍後可以返回處理面元310的繪製命令501。因此,經由為每一面元的LRZ狀態緩衝區保持單獨的資訊,GPU可以稍後檢查對於當前訊框的面元310是否先前禁用了LRZ深度測試,並且若沒有,它可以檢查在面元310的繪製命令500和繪製命令501之間是否存在深度緩衝區方向改變,以決定是否禁止面元310使用LRZ深度狀態緩衝區。
此外,在某些態樣,啟用/禁止LRZ深度緩衝區的使用是在訊框內的逐個面元基礎上執行的。例如,禁用一個面元中的LRZ深度緩衝區不會影響LRZ深度緩衝區是否用於另一面元。此外,在某些態樣,啟用/禁止LRZ深度緩衝區的使用是逐訊框執行的,這意味著若在一個訊框中對某些面元禁止使用LRZ深度緩衝區,則在下一訊框中重新啟用。
圖4是示出由GPU進行的LRZ深度測試的示例性操作400的示例性串流程圖。在某些態樣,操作400可以由GPU執行,諸如在圖1的處理單元120的圖形處理流水線107中。
操作可以在405開始,GPU接收對應於跨訊框的複數個繪製的複數個命令,複數個命令中的每一個指示相對於對應繪製的LRZ緩衝區的深度測試方向。例如,複數個命令中的每一個都是從驅動器接收的,並且包括應為對應的繪製啟用LRZ緩衝區的使用用於深度測試的指示。在此情況下,GPU從複數個命令緩衝區接收複數個命令。
在410,GPU維持LRZ狀態緩衝區,以在GPU處理複數個命令時儲存第一命令的對應深度測試方向。
在415,在處理具有與儲存在LRZ狀態緩衝區中的對應深度測試方向不同的深度測試方向的複數個命令中的命令之後,GPU禁止使用LRZ緩衝區用於剩餘未處理的複數個命令中的任何命令的深度測試。在一些情況下,GPU可以執行複數個繪製中的每一個。另外地或替代地,GPU對於第二訊框的深度測試可以重新啟用LRZ緩衝區的使用。
在一些情況下,基於深度方向改變以外的因素,可以禁止使用LRZ緩衝區用於深度測試。例如,若對於第一繪製(例如,Draw1)啟用了LRZ緩衝區的使用,則若深度寫入(例如,depthWrite= 0)被關閉,則GPU可以禁止使用用於第二繪製(例如,Draw2)的LRZ緩衝區,而不管是否有任何深度方向改變。在此情況下,GPU可以決定為第三繪製(例如,Draw3)重新啟用LRZ緩衝區的使用,即使所有的繪製可能針對同一訊框中的同一面元。換句話說,GPU可以基於處理指示禁用深度測試的給定命令來禁止使用LRZ緩衝區用於深度測試,並且隨後對於在該給定命令之後處理的至少一個命令,重新啟用LRZ緩衝區的使用用於深度測試。
在另一情況下,GPU可以基於深度方向變化(例如,對於給定訊框的給定面元),例如基於GPU在此類禁用之後接收(並處理)深度清除命令,來決定在禁用後重新啟用對LRZ緩衝區的使用(例如,對於給定訊框的給定面元)。特別地,基於深度清除命令,LRZ緩衝區被清除(並且隨後用新值更新,諸如用於訊框的面元)。在此情況下,即使深度方向發生變化,GPU仍然可以在深度清除命令之後重新啟用LRZ緩衝區的使用,諸如用於訊框的面元。例如,Draw1命令可以啟用LRZ緩衝區的使用。此外,Draw2命令可以基於深度方向變化而禁止使用LRZ緩衝區。此外,在Draw2之後接收深度清除命令。因此,對於深度清除命令之後的Draw3,GPU可以重新啟用LRZ緩衝區。所有此類繪製可以用於同一訊框的同一面元。
在某些態樣,GPU比較包括該命令的一或多個命令中的每一個的對應深度測試方向與儲存在LRZ狀態緩衝區中的對應深度測試方向。在此情況下,禁止使用LRZ緩衝區是回應於該比較。
在一些情況下,GPU經由禁用命令和在該命令之後處理的複數個命令中的每一個的LRZ緩衝區的使用來禁用LRZ緩衝區的使用。
在某些態樣,該訊框可以包括對應於訊框的不同部分的複數個面元,GPU接收用於多個面元中的每一個的對應多個命令,並且GPU維持用於多個面元中的每一個的對應LRZ狀態緩衝區。在此情況下,對於多個面元中的每一個,獨立地禁止使用LRZ緩衝區用於深度測試。
在某些態樣,操作400亦包括比較包括該命令的一或多個命令中的每一個的對應深度測試方向與儲存在LRZ狀態緩衝區中的對應深度測試方向,其中禁止使用LRZ緩衝區是回應於該比較。
在操作400的某些態樣,在415禁止使用LRZ緩衝區包括禁止使用LRZ緩衝區用於該命令和該命令之後處理的複數個命令中的每一個。
在操作400的某些態樣,訊框包括對應於該訊框的不同部分的多個面元。在此情況下,GPU接收對應於多個面元中的每一個的對應複數個命令,並且維持用於多個面元中的每一個的對應LRZ狀態緩衝區。在操作400的某些態樣,對於多個面元中的每一個,獨立地禁止使用LRZ緩衝區用於深度測試。
在操作400的某些態樣,複數個命令中的每一個都是從驅動器接收的,並且包括應為對應的繪製啟用LRZ緩衝區的該用於深度測試的指示。在操作400的某些態樣,GPU從複數個命令緩衝區接收複數個命令。
在某些態樣,操作400亦包括執行複數個繪製中的每一個。
在某些態樣,操作400亦包括重新啟用LRZ緩衝區的使用,用於第二訊框的深度測試。
在某些態樣,在415處禁用之前,操作400亦包括基於處理指示禁用深度測試的給定命令來禁止使用LRZ緩衝區用於深度測試,並且隨後對於在該給定命令之後處理的至少一個命令,重新啟用LRZ緩衝區的使用用於深度測試。
在某些態樣,在415處的禁用之後,操作400亦包括基於處理深度清除命令,重新啟用LRZ緩衝區的使用用於深度測試。
在一個配置中,提供一種用於圖形處理的方法或裝置。該裝置可以是CPU、GPU、或可以執行圖形處理的某一其他處理器。在一個態樣,該裝置可以是設備104內的處理單元120,或可以是設備104或另一設備內的某一其他硬體。裝置可以包括用於在GPU接收對應於跨訊框的複數個繪製的複數個命令的部件,複數個命令中的每一個指示相對於對應繪製的LRZ緩衝區的深度測試方向。該裝置可以包括用於在GPU維持LRZ狀態緩衝區以在GPU處理複數個命令時儲存第一命令的對應深度測試方向的部件。該裝置可以包括用於在處理具有與儲存在LRZ狀態緩衝區中的對應深度測試方向不同的深度測試方向的複數個命令中的命令之後在GPU處禁止使用LRZ緩衝區以用於剩餘未處理的複數個命令中的任何命令的深度測試的部件。裝置可以包括用於比較包括該命令的一或多個命令中的每一個的對應深度測試方向與儲存在LRZ狀態緩衝區中的對應深度測試方向的部件,其中禁止使用LRZ緩衝區是回應於該比較。該裝置可以包括用於執行複數個繪製中的每一個的部件。該裝置可以包括用於重新啟用LRZ緩衝區的使用以用於第二訊框的深度測試的部件。
本文描述的主題可以被實現來實現一或多個益處或優點。例如,所描述的圖形處理技術可以由GPU、CPU或可以執行圖形處理的某一其他處理器使用,以實現本文所述的狀態資訊技術。與其他圖形處理技術相比,這亦可以以較低的成本實現。此外,本文的圖形處理技術可以改進或加速資料處理或執行。此外,本文的圖形處理技術可以改進資源或資料利用及/或資源效率。
根據本發明,術語「或」可以被解釋為「及/或」,除非上下文另有規定。此外,儘管諸如「一或多個」或「至少一個」等短語可能已用於本文揭示的一些特徵而不是其他特徵,但是沒有使用此類語言的特徵可以被解釋為在上下文沒有另外規定的情況下具有隱含的含義。
在一或多個實例中,本文所描述的功能可以用硬體、軟體、韌體或其任何組合來實現。例如,儘管術語「處理單元」已經在本案中到處使用,但是此類處理單元可以用硬體、軟體、韌體或其任何組合來實現。若本文描述的任何功能、處理單元、技術或其他模組用軟體實現,則本文描述的功能、處理單元、技術或其他模組可以作為一或多個指令或代碼儲存在電腦可讀取媒體上或經由其傳輸。電腦可讀取媒體可以包括電腦資料儲存媒體或通訊媒體,包括有助於將電腦程式從一處傳遞到另一處的任何媒體。以此方式,電腦可讀取媒體通常可以對應於:(1)有形電腦可讀取儲存媒體,其為非暫時性的;或者(2)通訊媒體,諸如訊號或載波。資料儲存媒體可以是可由一或多個電腦或一或多個處理器存取以檢索用於實現本案中描述的技術的指令、代碼及/或資料結構的任何可用媒體。舉例而言(且非限制),此類電腦可讀取媒體可以包含RAM、ROM、EEPROM、CD-ROM或其他光碟記憶體、磁碟記憶體、或其他磁性存放設備。如本文所使用,磁碟和光碟包括壓縮光碟(CD)、鐳射光碟、光學光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中磁碟通常磁性地再現資料而光碟使用鐳射光學地再現資料。上述的組合亦應包括在電腦可讀取媒體的範疇內。電腦程式產品可以包括電腦可讀取媒體。
代碼可以由一或多個處理器執行,諸如一或多個數位訊號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、算數邏輯單位(ALU)、現場可程式設計邏輯陣列(FPGA),或其他等效整合或個別邏輯電路。因此,如本文中所使用的術語「處理器」可以代表上述結構中的任一者或適於實現本文所描述的技術的任何其他結構。而且,可以將這些技術充分實現在一或多個電路或邏輯部件中。
本案的技術可以實現在廣泛多種設備或裝置中,包括無線手機、積體電路(IC)或一組IC(例如,晶片組)。在本案中描述各種部件、模組或單元以強調被配置成執行所揭示的技術的設備的功能態樣,但未必需要經由不同的硬體單元來實現。相反,如前述,各種單元可以組合在任何硬體單元中,或由互通性硬體單元的集合(包括如前述的一或多個處理器)結合合適的軟體及/或韌體來提供。
已描述各種實例。這些和其他實例在隨附請求項的範疇內。
100:內容產生系統 104:設備 107:圖形處理流水線 120:處理單元 121:內部記憶體 122:內容編碼器/解碼器 123:內部記憶體 124:系統記憶體 126:通訊介面 127:顯示處理器
128:接收器
130:發射器
131:顯示器
132:收發器
198:低解析度(LRZ)禁用部件
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)
239:虛擬分割緩存(VSC)
240:系統記憶體
250:命令緩衝區
260:上下文暫存器包
261:上下文狀態
300:影像或表面
302:區 310:面元 311:面元 312:面元 313:面元 314:面元 315:面元 321:圖元 322:圖元 323:圖元 324:圖元 350:第一視點 351:第二視點 400:操作 405:方塊 410:方塊 415:方塊
圖1是示出根據本案的某些態樣的實例內容產生系統的方塊圖。
圖2示出根據本案的某些態樣的實例GPU。
圖3示出根據本案的某些態樣的實例影像或表面。
圖4示出根據本案的某些態樣的用於由圖形處理單元(GPU)進行的低解析度(LRZ)深度測試的示例性操作的流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
400:操作
405:方塊
410:方塊
415:方塊

Claims (33)

  1. 一種圖形處理的方法,包含以下步驟:在一圖形處理單元(GPU)處接收對應於跨一訊框的複數個繪製的複數個命令,該等複數個命令中的每一個指示相對於該對應繪製的一低解析度深度(LRZ)緩衝區的一深度測試方向;在該GPU處維持一LRZ狀態緩衝區,以在該GPU處理該等複數個命令時儲存一第一命令的一對應深度測試方向;及在處理具有與儲存在該LRZ狀態緩衝區中的該對應深度測試方向不同的一深度測試方向的該等複數個命令中的一命令之後,在該GPU處禁止使用該LRZ緩衝區用於剩餘未處理的該等複數個命令中的任何命令的深度測試。
  2. 根據請求項1之方法,亦包含將包括該命令的一或多個命令中的每一個的一對應深度測試方向與儲存在該LRZ狀態緩衝區中的該對應深度測試方向進行比較,其中禁止使用該LRZ緩衝區是回應於該比較。
  3. 根據請求項1之方法,其中禁止使用該LRZ緩衝區包含禁止將該LRZ緩衝區用於該命令和該命令之後處理的該等複數個命令中的每一個。
  4. 根據請求項1之方法,其中該訊框包含對應於該訊框的不同部分的多個面元,其中該GPU接收用於該多個面元中的每一個的對應複數個命令,其中該 GPU維持用於該多個面元中的每一個的一對應LRZ狀態緩衝區。
  5. 根據請求項4之方法,其中對於該多個面元中的每一個,獨立地禁止用於深度測試的該LRZ緩衝區的使用。
  6. 根據請求項1之方法,其中該等複數個命令中的每一個皆是從一驅動器接收的,並且包括應為該對應的繪製啟用用於深度測試的該LRZ緩衝區的使用的一指示。
  7. 根據請求項6之方法,其中該GPU從複數個命令緩衝區接收該等複數個命令。
  8. 根據請求項1之方法,亦包含執行該等複數個繪製中的每一個。
  9. 根據請求項1之方法,亦包含為一第二訊框重新啟用用於深度測試的該LRZ緩衝區的使用。
  10. 根據請求項1之方法,亦包含,在該禁用用於深度測試的該LRZ緩衝區的使用之前:基於處理指示禁用深度測試的一給定命令來禁用用於深度測試的該LRZ緩衝區的使用,並且隨後對於在該給定命令之後處理的至少一個命令,重新啟用用於深度測試的該LRZ緩衝區的使用。
  11. 根據請求項1之方法,亦包含,在該禁用用於深度測試的該LRZ緩衝區的使用之後:基於處理一深度清除命令,重新啟用用於深度測試的 該LRZ緩衝區的使用。
  12. 一種用於圖形處理的裝置,包含:一低解析度深度(LRZ)緩衝區;一LRZ狀態緩衝區;及一圖形處理單元(GPU),被配置成:接收對應於跨一訊框的複數個繪製的複數個命令,該等複數個命令中的每一個指示相對於該對應繪製的該LRZ緩衝區的一深度測試方向;維持該LRZ狀態緩衝區,以在該GPU處理該等複數個命令時儲存一第一命令的一對應深度測試方向;及在處理具有與儲存在該LRZ狀態緩衝區中的該對應深度測試方向不同的一深度測試方向的該等複數個命令中的一命令之後,禁止使用該LRZ緩衝區用於剩餘未處理的該等複數個命令中的任何命令的深度測試。
  13. 根據請求項12之裝置,其中該GPU亦被配置成將包括該命令的一或多個命令中的每一個的一對應深度測試方向與儲存在該LRZ狀態緩衝區中的該對應深度測試方向進行比較,其中禁止使用該LRZ緩衝區是回應於該比較。
  14. 根據請求項12之裝置,其中禁止使用該LRZ緩衝區包含禁止將該LRZ緩衝區用於該命令和該命令之後處理的該等複數個命令中的每一個。
  15. 根據請求項12之裝置,其中該訊框包含對應於該訊框的不同部分的多個面元,其中該GPU接收用於該多個面元中的每一個的對應複數個命令,其中該GPU維持用於該多個面元中的每一個的一對應LRZ狀態緩衝區。
  16. 根據請求項15之裝置,其中對於該多個面元中的每一個,獨立地禁止用於深度測試的該LRZ緩衝區的使用。
  17. 根據請求項12之裝置,其中該等複數個命令中的每一個皆是從一驅動器接收的,並且包括應為該對應的繪製啟用用於深度測試的該LRZ緩衝區的使用的一指示。
  18. 根據請求項17之裝置,其中該GPU從複數個命令緩衝區接收該等複數個命令。
  19. 根據請求項12之裝置,其中該GPU亦被配置成執行該等複數個繪製中的每一個。
  20. 根據請求項12之裝置,其中該GPU亦被配置成為一第二訊框重新啟用用於深度測試的該LRZ緩衝區的使用。
  21. 根據請求項12之裝置,其中該GPU亦被配置成,在該禁用用於深度測試的該LRZ緩衝區的使用之前:基於處理指示禁用深度測試的一給定命令來禁用用於深度測試的該LRZ緩衝區的使用,並且隨後對於在該 給定命令之後處理的至少一個命令,重新啟用用於深度測試的該LRZ緩衝區的使用。
  22. 根據請求項12之裝置,其中該GPU亦被配置成,在該禁用用於深度測試的該LRZ緩衝區的使用之後:基於一處理深度清除命令,重新啟用用於深度測試的該LRZ緩衝區的使用。
  23. 一種用於圖形處理的計算設備,包含:一中央處理單元(CPU);一顯示器;一低解析度深度(LRZ)緩衝區;一LRZ狀態緩衝區;及一圖形處理單元(GPU),其被配置成:從該CPU接收複數個命令,該等複數個命令對應於用於在該顯示器上顯示的跨一訊框的複數個繪製,該等複數個命令中的每一個指示相對於該對應繪製的該LRZ緩衝區的一深度測試方向;維持該LRZ狀態緩衝區,以在該GPU處理該等複數個命令時儲存一第一命令的一對應深度測試方向;及在處理具有與儲存在該LRZ狀態緩衝區中的該對應深度測試方向不同的一深度測試方向的該等複數個命令中的一命令之後,禁止使用該LRZ緩衝區用於剩餘未處理的該等複數個命令中的任何命令的深度測 試。
  24. 根據請求項23之計算設備,其中該GPU亦被配置成將包括該命令的一或多個命令中的每一個的一對應深度測試方向與儲存在該LRZ狀態緩衝區中的該對應深度測試方向進行比較,其中禁止使用該LRZ緩衝區是回應於該比較。
  25. 根據請求項23之計算設備,其中禁止使用該LRZ緩衝區包含禁止將該LRZ緩衝區用於該命令和該命令之後處理的該等複數個命令中的每一個。
  26. 根據請求項23之計算設備,其中該訊框包含對應於該訊框的不同部分的多個面元,其中該GPU接收用於該多個面元中的每一個的對應複數個命令,其中該GPU維持用於該多個面元中的每一個的一對應LRZ狀態緩衝區。
  27. 根據請求項26之計算設備,其中對於該多個面元中的每一個,獨立地禁止用於深度測試的該LRZ緩衝區的使用。
  28. 根據請求項23之計算設備,其中該等複數個命令中的每一個皆是從一驅動器接收的,並且包括應為該對應的繪製啟用用於深度測試的該LRZ緩衝區的使用的一指示。
  29. 根據請求項28之計算設備,其中該GPU從複數個命令緩衝區接收該等複數個命令。
  30. 根據請求項23之計算設備,其中該GPU 亦被配置成執行該等複數個繪製中的每一個。
  31. 根據請求項23之計算設備,其中該GPU亦被配置成為一第二訊框重新啟用用於深度測試的該LRZ緩衝區的使用。
  32. 根據請求項23之計算設備,其中該GPU亦被配置成,在該禁用用於深度測試的該LRZ緩衝區的使用之前:基於處理指示禁用深度測試的一給定命令來禁用用於深度測試的該LRZ緩衝區的使用,並且隨後對於在該給定命令之後處理的至少一個命令,重新啟用用於深度測試的該LRZ緩衝區的使用。
  33. 根據請求項23之計算設備,其中該GPU亦被配置成,在該禁用用於深度測試的該LRZ緩衝區的使用之後:基於處理一深度清除命令,重新啟用用於深度測試的該LRZ緩衝區的使用。
TW110133360A 2020-10-06 2021-09-08 用於圖形處理的方法、裝置以及計算設備 TWI778780B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/064,188 2020-10-06
US17/064,188 US11176734B1 (en) 2020-10-06 2020-10-06 GPU hardware-based depth buffer direction tracking

Publications (2)

Publication Number Publication Date
TW202215363A TW202215363A (zh) 2022-04-16
TWI778780B true TWI778780B (zh) 2022-09-21

Family

ID=78086943

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110133360A TWI778780B (zh) 2020-10-06 2021-09-08 用於圖形處理的方法、裝置以及計算設備

Country Status (7)

Country Link
US (1) US11176734B1 (zh)
EP (1) EP4226329A1 (zh)
KR (1) KR102634506B1 (zh)
CN (1) CN116368527A (zh)
BR (1) BR112023005611A2 (zh)
TW (1) TWI778780B (zh)
WO (1) WO2022076960A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068272B1 (en) * 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
CN104169974A (zh) * 2012-03-15 2014-11-26 高通股份有限公司 图形处理单元中基于可见性的状态更新
CN105659291A (zh) * 2013-10-23 2016-06-08 高通股份有限公司 选择性合并部分覆盖图块以执行分层z剔除
US20180349315A1 (en) * 2017-05-30 2018-12-06 Arm Limited Hidden surface removal in graphics processing systems
TW201926239A (zh) * 2017-12-05 2019-07-01 美商高通公司 以微磚為基礎之低解析度深度儲存

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751291A (en) * 1996-07-26 1998-05-12 Hewlett-Packard Company System and method for accelerated occlusion culling
US6462743B1 (en) * 1999-12-21 2002-10-08 Ati International Srl Pipeline processing system and method
US8207975B1 (en) * 2006-05-08 2012-06-26 Nvidia Corporation Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US8907979B2 (en) * 2006-10-24 2014-12-09 Adobe Systems Incorporated Fast rendering of knockout groups using a depth buffer of a graphics processing unit
GB2518902B (en) * 2013-10-07 2020-07-01 Advanced Risc Mach Ltd Early depth testing in graphics processing
US9824412B2 (en) * 2014-09-24 2017-11-21 Intel Corporation Position-only shading pipeline
GB2530996B (en) * 2014-10-06 2016-09-14 Imagination Tech Ltd Depth forwarding in a graphics processing system
US10002455B2 (en) 2015-04-20 2018-06-19 Intel Corporation Optimized depth buffer cache apparatus and method
US11055904B2 (en) * 2019-08-27 2021-07-06 Arm Limited Optimizing depth testing in graphics processing systems that perform early and late depth testing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068272B1 (en) * 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
CN104169974A (zh) * 2012-03-15 2014-11-26 高通股份有限公司 图形处理单元中基于可见性的状态更新
CN105659291A (zh) * 2013-10-23 2016-06-08 高通股份有限公司 选择性合并部分覆盖图块以执行分层z剔除
US20180349315A1 (en) * 2017-05-30 2018-12-06 Arm Limited Hidden surface removal in graphics processing systems
TW201926239A (zh) * 2017-12-05 2019-07-01 美商高通公司 以微磚為基礎之低解析度深度儲存

Also Published As

Publication number Publication date
EP4226329A1 (en) 2023-08-16
KR102634506B1 (ko) 2024-02-06
TW202215363A (zh) 2022-04-16
KR20230048455A (ko) 2023-04-11
BR112023005611A2 (pt) 2023-05-09
US11176734B1 (en) 2021-11-16
WO2022076960A1 (en) 2022-04-14
CN116368527A (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
US11373268B2 (en) Apparatus and method for graphics processing unit hybrid rendering
TW202219887A (zh) 快速增量共享常數
US20200311859A1 (en) Methods and apparatus for improving gpu pipeline utilization
US11080928B2 (en) Methods and apparatus for visibility stream management
TWI778780B (zh) 用於圖形處理的方法、裝置以及計算設備
US11615537B2 (en) Methods and apparatus for motion estimation based on region discontinuity
US20220114694A1 (en) Methods and apparatus for optimizing gpu kernel with simo approach for downscaling utilizing gpu cache
EP4066217B1 (en) Methods and apparatus for reducing draw command information
US11373267B2 (en) Methods and apparatus for reducing the transfer of rendering information
US11893654B2 (en) Optimization of depth and shadow pass rendering in tile based architectures
US11727631B2 (en) Dynamic variable rate shading
US20220172695A1 (en) Methods and apparatus for plane planning for overlay composition
WO2022081293A1 (en) Configurable apron support for expanded-binning

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent