TW201926239A - 以微磚為基礎之低解析度深度儲存 - Google Patents

以微磚為基礎之低解析度深度儲存 Download PDF

Info

Publication number
TW201926239A
TW201926239A TW107142952A TW107142952A TW201926239A TW 201926239 A TW201926239 A TW 201926239A TW 107142952 A TW107142952 A TW 107142952A TW 107142952 A TW107142952 A TW 107142952A TW 201926239 A TW201926239 A TW 201926239A
Authority
TW
Taiwan
Prior art keywords
micro
gpu
values
depth
depth values
Prior art date
Application number
TW107142952A
Other languages
English (en)
Other versions
TWI786233B (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 TW201926239A publication Critical patent/TW201926239A/zh
Application granted granted Critical
Publication of TWI786233B publication Critical patent/TWI786233B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)

Abstract

本發明描述用於使用一圖形處理單元(GPU)生成用於一微磚之像素之深度值的技術。該微磚為一訊框之複數個微磚中之一者。該GPU可將用於該等像素之一第一數目之該等深度值儲存於該GPU內部之一微磚記憶體中。該微磚記憶體經組態以儲存用於該訊框之該微磚的影像內容。該GPU可將儲存於該微磚記憶體中之一第二數目之該等深度值寫入至一系統記憶體。該第二數目小於該第一數目。

Description

以微磚為基礎之低解析度深度儲存
本揭示係關於圖形處理。
計算器件通常利用圖形處理單元(GPU)來促進對顯示器之圖形資料的再現,並利用顯示處理器來生成驅動顯示器之信號。此類計算器件可包括例如電腦工作台、諸如所謂智慧型電話之行動電話、嵌入式系統、個人電腦、平板電腦及視訊遊戲控制台。GPU典型地執行圖形處理流水線,該圖形處理流水線包括一同操作以執行圖形處理命令之複數個處理階段。主機中央處理單元(CPU)可藉由向GPU發出一或多個圖形處理命令來控制GPU之操作。顯示處理器擷取由GPU生成之影像內容並進一步處理該影像內容以生成用以驅動顯示器之信號,從而促使顯示器呈現影像內容。
本揭示描述用於儲存在影像訊框之影像內容之再現期間所生成之深度值的技術。在以微磚為基礎之圖形處理單元(GPU)架構中,GPU判定諸如顏色、不透明度之像素值及用於微磚中之像素的深度值,其中微磚為影像訊框之一部分。在稱為解析微磚記憶體之過程中,GPU將像素值儲存於GPU內部之本地微磚記憶體中,且在再現微磚之後,將像素值儲存至GPU外部之系統記憶體。在一些實例中,GPU可將深度值之子集(例如少於全部)自微磚記憶體寫入至系統記憶體,而非寫出全部所判定之深度值。以此方式,在將像素值自微磚記憶體解析至系統記憶體期間,GPU限制所需寫出之深度值的量,其可促進高效帶寬及記憶體利用率,且減少了處理。
在一個實例中,本揭示描述一種生成影像內容之方法,該方法包含使用圖形處理單元(GPU)生成用於訊框之微磚之像素的深度值;將用於像素之第一數目之深度值儲存於GPU內部之微磚記憶體中,其中微磚記憶體經組態以儲存用於訊框之微磚的影像內容;及將儲存於微磚記憶體中之第二數目之深度值寫入至系統記憶體,其中第二數目小於第一數目。
在一個實例中,本揭示描述一種用於生成影像內容之器件,該器件包含系統記憶體及包括微磚記憶體之圖形處理單元(GPU)。GPU經組態以生成用於訊框之微磚之像素的深度值;將用於像素之第一數目之深度值儲存於微磚記憶體中,其中微磚記憶體經組態以儲存用於訊框之微磚的影像內容;及將儲存於微磚記憶體中之第二數目之深度值寫入至系統記憶體,其中第二數目小於第一數目。
在一個實例中,本揭示描述一種其上儲存有指令之電腦可讀儲存媒體,該等指令在執行時促使圖形處理單元(GPU)生成用於訊框之微磚之像素的深度值;將用於像素之第一數目之深度值儲存於GPU內部之微磚記憶體中,其中微磚記憶體經組態以儲存用於訊框之微磚的影像內容;及將儲存於微磚記憶體中之第二數目之深度值寫入至系統記憶體,其中第二數目小於第一數目。
在一個實例中,本揭示描述一種用於生成影像內容之器件,該器件包含系統記憶體及包括微磚記憶體之圖形處理單元(GPU)。GPU進一步包含:用於生成用於訊框之微磚之像素的深度值的構件;用於將用於像素之第一數目之深度值儲存於微磚記憶體中的構件,其中微磚記憶體經組態以儲存用於訊框之微磚的影像內容;及用於將儲存於微磚記憶體中之第二數目之深度值寫入至系統記憶體的構件,其中第二數目小於第一數目。
在附圖及以下描述中闡述本揭示之一或多個實例的細節。本揭示之其他特徵、目標及優勢將自描述及圖式以及自申請專利範圍顯而易見。
根據 35 U.S.C. §119 優先權主張
本專利申請案主張2017年12月5日申請之名為「TILE-BASED LOW-RESOLUTION DEPTH STORAGE」的第15/832,118號非臨時申請案之優先權,該非臨時申請案轉讓給其受讓人且特此以引用之方式明確併入本文中。
在諸如作為兩個非限制性實例之虛擬實境(VR)及/或擴增實境(AR)系統的一些圖形再現系統中,影像訊框之像素的深度值可適用於用以對影像訊框之影像內容進行合成之合成器(例如顯示處理器)。因此,圖形處理單元(GPU)生成用於像素之顏色值、不透明度(通常標記為α)值及深度值作為對影像訊框之再現的部分。在一些技術中,GPU將深度值之全部內容儲存於與GPU分離之系統記憶體中,其可能費帶寬且費時間。
本揭示描述用以減少儲存至系統記憶體之深度值之數目的實例技術。該等實例技術參照以微磚為基礎之GPU架構來描述。在以微磚為基礎之GPU架構中,訊框包括複數個框組(或微磚)。在裝倉遍次期間,GPU判定哪些繪製在每一微磚中可見(例如,諸如訊框之基元的哪一影像內容屬於哪一微磚),且判定一些額外基元可見度資訊。在再現遍次期間,GPU對用於微磚之像素的影像內容進行再現(例如生成顏色、不透明度及深度資訊),且在逐微磚基礎上重複此過程。
對於微磚,在將微磚記憶體寫出至系統記憶體之前(例如在解析微磚記憶體之前),GPU將顏色值、不透明度值及深度值儲存於GPU之微磚記憶體中。微磚記憶體在GPU內部,且系統記憶體在GPU外部。在一或多個實例中,GPU可寫出微磚中之像素之深度值的僅一部分(例如少於全部),而非寫出微磚中之像素的全部深度值。舉例而言,用於每一像素之深度值對於諸如VR中之時間扭曲(TimeWarp)操作之後處理操作可能並非必要。相反,可能僅需要深度值之一小部分(例如少於10%,且甚至低至1%)來達成相對高品質之後處理。舉例而言,GPU即便使用深度值之僅一小部分亦可達成時間扭曲操作之所要效果。
作為說明,假設對於大小為N乘M之微磚,GPU生成N乘M個像素值,且因此N乘M個深度值。在一些實例中,諸如低解析度深度緩衝器,或所謂低解析度Z緩衝器或LRZ緩衝器,GPU可生成N/X乘M/X個深度值,其中X為大於一之正值。然而,可能僅需要ND 乘MD 個深度值,其中ND 在不使用LRZ緩衝器之實例中小於N,且在使用LRZ緩衝器之實例中為N/X,且MD 在不使用LRZ緩衝器之實例中小於M,且在使用LRZ緩衝器之實例中為M/X。
在本揭示中所描述之實例技術中,GPU可經組態以將ND 乘MD 個深度值(而非N乘M個)或N/X乘M/X個深度值寫出至系統記憶體,進而節省帶寬及時間且具有經減少之處理。舉例而言,微磚記憶體可儲存N乘M個及/或N/X乘M/X個深度值,但作為將深度值自微磚記憶體寫出至系統記憶體之部分,GPU可僅寫出ND 乘MD 個深度值。GPU可在對微磚之影像內容的再現之後且在再現下一微磚之影像內容之前執行此類操作。換言之,GPU可在對微磚之影像內容的再現之後在逐微磚基礎上執行此類操作。
此處GPU可以各種方式判定將哪些深度值寫入至系統記憶體。作為一個實例,GPU可寫出N個深度值之每第10個深度值,並寫出M個深度值之每第10個深度值(例如寫出每第100個深度值)以將所寫深度值減小100×。若GPU寫出N個深度值之每第8個深度值及M個深度值之每第5個深度值,則所寫深度值可存在40×之減小。作為另一實例,顯影器可對將寫出哪些深度值進行限定。
此處GPU可以各種方式寫出ND 乘MD 個深度值。作為一個實例,GPU可執行擷取N乘M個深度值作為來自微磚記憶體之紋理映射的著色器(例如片段著色器或解析著色器之一實例)。著色器經組態以捨棄(N-ND )乘(M-MD )個深度值,並寫出ND 乘MD 個深度值。然而,在此實例中,著色器需要對N乘M個像素中之每一者執行N乘M次。舉例而言,在此實例中,紋理映射可經限定為具有大小N乘M。因此,著色器在大小為N乘M之紋理映射中之每一紋素上執行。紋素為用以指代N乘M紋理映射中之樣本(例如紋理元素)的通用術語。在此實例中,紋素為深度樣本。
舉例而言,深度樣本指代N乘M紋理映射中之樣本。每一深度樣本與指示深度樣本之深度的深度值相關聯。另外,每一深度樣本與微磚中之像素相關聯。
在一些實例中,著色器處理器可執行經組態以僅對需要保留之深度樣本進行操作的著色器。舉例而言,在微磚記憶體中之特定位置處,著色器可針對待保留之深度樣本中之每一者限定大小為1乘1之紋理映射,以使得GPU寫出ND 乘MD 個深度值。著色器可執行彼紋素(例如深度樣本)並寫出彼紋素(例如深度樣本)作為深度值。在此實例中,著色器可僅執行ND 乘MD 次。
作為一些額外實例,著色器可限定具有不同大小(例如A乘B,其中A乘B小於N乘M)之複數個紋理映射。著色器可執行以擷取A乘B個值。著色器可對該等值取平均值,判定具有最高值的值,或以某一其他方式執行篩選以判定用於寫入至系統記憶體之最終深度值。
在一些實例中,為執行此著色器,在用以再現微磚之影像內容的全部其他繪製調用之後,顯影器可包括新的繪製調用。此繪製調用可利用著色器,該著色器包括用以提取並讀取來自微磚記憶體之深度值並寫出所判定之深度值的命令判定。顯影器亦可將用以寫出完整深度資訊之命令捨棄。在一些實例中,編譯器或圖形驅動器可在本申請案之源碼(例如經由圖形驅動器)中或目標碼(例如經由編譯器)中包括繪製調用,而非顯影器包括此類繪製調用。
用以提取並讀取深度值之命令可為當前在現有API中可用之命令。因此,可能並不需要對現有API進行修改來執行本揭示中所描述之實例技術。換言之,可使用現有API中之命令來執行實例技術以減少需要儲存之深度值的量。
圖1為說明可用以實施本揭示之技術之一實例計算器件2的框圖。計算器件2可包含:攝影機、電腦(例如個人電腦、桌上型電腦、膝上型電腦、平板電腦及/或電腦工作站)、視訊遊戲平台或控制台、諸如無線通信器件(例如行動電話、蜂巢式電話、衛星電話及/或行動電話手持機)之行動器件、固定電話、網際網路電話、諸如便攜式視訊遊戲器件或個人數位助理(PDA)之手持式器件、個人音樂播放器、視訊播放器、顯示器件、電視、機上盒、廣播接收器、伺服器、中間網路器件、主機電腦或處理及/或顯示圖形資料之任一其他類型的器件。
如圖1之實例中所說明,計算器件2包括使用者輸入接口4、CPU 6、記憶體控制器8、系統記憶體10、圖形處理單元(GPU) 12、GPU 12之本地記憶體14、顯示處理器16、顯示器18、位姿監視器電路19及匯流排20。使用者輸入接口4、CPU 6、記憶體控制器8、GPU 12及顯示處理器16可使用匯流排20彼此通信。匯流排20可為多種匯流排結構中之任一種,諸如第三代匯流排(例如超傳輸(HyperTransport)匯流排或無線帶寬(InfiniBand)匯流排)、第二代匯流排(例如高級圖形埠匯流排、周邊組件互連(PCI)快速匯流排或高級可擴展接口(AXI)匯流排)或另一類型之匯流排或器件互連件。應注意,圖1中所示之不同組件之間的匯流排及通信接口之特定組態僅為例示性的,且計算器件之其他組態及/或具有相同或不同組件之其他圖形處理系統可用以實施本揭示之技術。
CPU 6可包含控制計算器件2之操作的通用或專用處理器。使用者可向計算器件2提供輸入以促使CPU 6執行一或多種軟體應用程式。CPU 6上所執行之軟件應用程式可包括例如操作系統、文書處理器應用程式、電子郵件應用程式、總分析表應用程式、媒體播放器應用程式、媒體編輯應用程式、視訊遊戲應用程式、圖形使用者介面應用程式、電話會議應用程式或另一種程式。使用者可經由一或多個輸入器件(未展示)向計算器件2提供輸入,該等輸入器件諸如鍵盤、滑鼠、麥克風、觸控板或經由使用者輸入接口4耦接至計算器件2之另一輸入器件。
CPU 6上所執行之軟體應用程式可包括指示CPU 6促使對顯示器18之圖形資料之再現的一或多個圖形再現指令。在一些實例中,軟體指令可符合圖形應用程式設計介面(API),諸如開放圖形程式館(OpenGL® ) API、開放圖形程式館嵌入式系統(OpenGL ES) API、Direct3D API、X3D API、RenderMan API、WebGL API或任何其他公用或專用標準圖形API。為處理圖形再現指令,CPU 6可向GPU 12發出一或多個圖形再現命令以促使GPU 12執行對圖形資料之再現的一些或全部。在一些實例中,待再現之圖形資料可包括例如點、線、三角形、四邊形、三角形帶等的圖形基元之列表。
記憶體控制器8促進將資料轉移進入至及離開系統記憶體10。舉例而言,記憶體控制器8可接收記憶體讀取及寫入命令,且對關於記憶體10之此類命令進行服務以便提供用於計算器件2中之組件的記憶體服務。將記憶體控制器8以通信方式耦接至系統記憶體10。儘管在圖1之實例計算器件2中將記憶體控制器8說明為與CPU 6及系統記憶體10兩者分離之處理模組,但在其他實例中,可將記憶體控制器8之功能性中的一些或全部實施於CPU 6及系統記憶體10中之一者或兩者上。
系統記憶體10可儲存可由CPU 6存取以用於執行之程式模組及/或指令及/或由在CPU 6上執行之程式使用的資料。舉例而言,系統記憶體10可儲存使用者應用程式及與該應用程式相關聯之圖形資料。系統記憶體10可額外地儲存供計算器件2之其他組件使用及/或由該計算器件之其他組件所生成的資訊。舉例而言,系統記憶體10可充當用於GPU 12之器件記憶體,且可儲存待由GPU 12操作之資料以及產生於藉由GPU 12執行之操作的資料。舉例而言,系統記憶體10可儲存紋理緩衝器、深度緩衝器、模板緩衝器、頂點緩衝器、訊框緩衝器或類似者之任何組合。另外,系統記憶體10可儲存命令串流以供GPU 12處理。系統記憶體10可包括一或多種揮發性或非揮發性記憶體或儲存器件,諸如隨機存取記憶體(RAM)、靜態RAM (SRAM)、動態RAM (DRAM)、唯讀記憶體(ROM)、可擦除可程式化ROM (EPROM)、電可擦除可程式化ROM (EEPROM)、快閃記憶體、磁性資料媒體或光學儲存媒體。
GPU 12可經組態以執行圖形操作從而向顯示器18再現一或多個圖形基元。因此,當於CPU 6上執行之軟體應用程式中的一者需要圖形處理時,CPU 6可向GPU 12提供圖形命令及圖形資料以用於向顯示器18再現。圖形命令可包括例如繪製命令(諸如繪製調用)、GPU狀態程式設計命令、記憶體轉移命令、通用計算命令、核心執行命令等。在一些實例中,CPU 6可藉由將命令及圖形資料寫入至記憶體10而將命令及圖形資料提供至GPU 12,該記憶體可由GPU 12存取。在一些實例中,GPU 12可進一步經組態以針對在CPU 6上執行之應用程式執行通用計算。
在一些情況下,相較於CPU 6,GPU 12可建構有提供對向量運算更有效之處理的高度並行結構。舉例而言,GPU 12可包括經組態以按並行方式對多個頂點或像素進行操作之複數個處理元件。在一些情況下,相較於使用CPU 6直接將場景繪製至顯示器18,GPU 12之高度並行性質可允許GPU 12更快速地將圖形影像(例如GUI及二維(2D)及/或三維(3D)圖形場景)繪製至顯示器18上。另外,相較於CPU 6,GPU 12之高度並行性質可允許GPU 12更快速地對用於通用計算應用程式之某些類型之向量及矩陣運算進行處理。
在一些情況下,GPU 12可經整合至計算器件2之母板中。在其他情況下,GPU 12可存在於圖形卡上,該圖形卡安裝於計算器件2之母板中的埠中或可以其他方式併入經組態以與計算器件2交互操作之周邊器件內。在其他情況下,GPU 12可定位於與CPU 6相同之微晶片上,從而形成系統單晶片(SoC)。GPU 12可包括一或多個處理器,諸如一或多個微處理器、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)、數位信號處理器(DSP),或其他等效積體電路或離散邏輯電路。
GPU 12可直接經耦接至GPU本地記憶體14。因此,GPU 12可在不必使用匯流排20之情況下自GPU本地記憶體14讀取資料以及將資料寫入至該GPU本地記憶體。換言之,GPU 12可使用本地儲存器而非晶片外記憶體在本地處理資料。此藉由消除GPU 12經由匯流排20讀取及寫入資料之需要來允許GPU 12以更高效之方式操作,該經由匯流排之讀取及寫入可經歷繁重之匯流排業務。然而,在一些情況下,GPU 12可不包括單獨快取記憶體,但代替地經由匯流排20利用系統記憶體10。GPU本地記憶體14可包括一或多個揮發性或非揮發性記憶體或儲存器件,諸如隨機存取記憶體(RAM)、靜態RAM (SRAM)、動態RAM (DRAM)、可擦除可程式化ROM (EPROM)、電可擦除可程式化ROM (EEPROM)、快閃記憶體、磁性資料媒體或光學儲存媒體。
CPU 6及/或GPU 12可將經再現影像資料儲存於分配在系統記憶體10內之訊框緩衝器中。顯示處理器16可自訊框緩衝器擷取資料且將顯示器18組態為顯示由經再現影像資料所表示之影像。在一些實例中,顯示處理器16可包括經組態以將自訊框緩衝器擷取之數位值轉換為顯示器18可消耗之類比信號的數位至類比轉換器(DAC)。在其他實例中,顯示處理器16可直接將數位值傳遞至顯示器18以用於處理。顯示器18可包括:監視器、電視、投影器件、液晶顯示器(LCD)、電漿顯示板、發光二極體(LED)陣列、陰極射線管(CRT)顯示器、電子紙、表面傳導電子發射顯示器(SED)、雷射電視顯示器、奈米晶體顯示器或另一類型之顯示單元。
顯示器18可經整合於計算器件2內。舉例而言,顯示器18可為行動電話手持機或平板電腦之螢幕。替代地,顯示器18可為經由有線或無線通信鏈路耦接至計算器件2之獨立器件。舉例而言,顯示器18可為經由電纜或無線鏈路連接至個人電腦之電腦監視器或平板顯示器。
如上文所描述,GPU 12生成最終顯示器之影像內容。影像內容之實例包括影像訊框之像素的像素值。像素值包括顏色值、深度值及/或不透明度值。顏色值可包括紅色分量值、綠色分量值及藍色分量值(例如RGB值)。
深度值指示像素在影像訊框中之相對深度。舉例而言,可在影像訊框中為每一像素指定(x, y, z)座標。x、y座標值可指示像素在影像訊框中之位置,且z座標值可指示像素在影像訊框中之深度。不透明度值指示像素不透明之程度,以及是否一像素遮擋另一像素及遮擋之程度。舉例而言,完全不透明且相較於另一像素具有較小z座標值之像素可完全遮擋另一像素。然而,部分不透明且相較於另一像素具有較小z座標值之像素可能並不完全遮擋另一像素。在此實例中,兩個像素之顏色值可摻混在一起以生成用於顯示器之最終像素值,其中該摻混係基於各別不透明度值。
顯示於顯示器18上之最終影像訊框為2D影像。然而,使像素具有深度值可適用於各種應用程式。作為一個實例,深度值可適用於虛擬實境(VR)或擴增實境(AR)應用程式。
在諸如遊戲應用程式之一些VR應用程式中,使用者將計算器件2附接至其頭部(例如計算器件2為頭戴式顯示器(HMD)器件)並觀看顯示器18上之影像內容。因為計算器件2判定使用者相對於正顯示之影像內容之位置及觀看角度,所以使用者可透過影像內容「移動」。作為一實例,顯示器18可呈現走廊之影像內容,其中沿走廊有房間且走廊中有物件。使用者感知到如同其(he/she)步行穿過走廊並進入房間或朝四周(例如後方、左側或右側)觀看走廊中之物件一般。在此等實例中,用於像素之深度值可適用於判定需要再現什麼部分以使得使用者不會體驗到遮擋區(例如空白空間)。
在一些AR應用程式中,虛擬物件連同現實世界物件一起呈現。使用者可與虛擬物件互動或以其他方式在現實世界空間中操控虛擬物件。在此等實例中,使像素具有深度值亦可適用於判定需要再現及/或顯示之影像內容。
深度值可適用於使用3D空間之應用程式。VR及AR應用程式為使用3D空間之應用程式的兩個實例,且該等技術不限於VR及AR應用程式。更一般而言,本揭示中所描述之實例技術可適用於使用深度值之應用程式,無論該等應用程式是否供用於3D空間中。為易於描述,參照VR及AR應用程式來描述實例,但該等技術並不如此受限制。
在VR應用程式中,存在處理之眼部緩衝器輪次及處理之扭曲輪次。在眼部緩衝器輪次中,GPU 12基於如藉由位置電路(未說明)所判定之使用者正在何處觀看影像內容(例如基於頭部及/或眼部位置)來再現影像內容。另外,在使用者做出頭部或眼部位置之任何突然改變之情況下,GPU 12可再現超出使用者當前可觀看影像內容之影像內容,以使得存在可供用於使用者觀看之影像內容。
在扭曲輪次中,GPU 12可利用在眼部緩衝器輪次期間再現之影像內容,並在眼部緩衝器輪次之後,在使用者移動其(他/她)頭部之情況下基於當前頭部位置使影像內容扭曲。在此情況下,若存在頭部位置移動,則GPU 12可使用在眼部緩衝器輪次期間再現之影像內容以用於扭曲,以使得影像內容目前可用。舉例而言,在四自由度(4DOF)異步時間扭曲(例如扭曲)中,GPU 12可使用深度值基於平移頭部移動(例如在接收到用於眼部緩衝器輪次之影像資訊並再現影像內容以用於顯示之後的時間內之頭部移動)來改善扭曲。
作為眼部緩衝器輪次之部分,GPU 12可向系統記憶體10之眼部緩衝器寫入經再現像素之像素值。舉例而言,GPU 12可寫入顏色值、不透明度值及深度值。然而,就功率及效能而言,對深度值之儲存可為昂貴的。舉例而言,GPU 12可典型地利用用於儲存深度值之行動VR應用程式中之眼部緩衝器訊框時間(例如在眼部緩衝器輪次期間寫入像素值所需之時間)的大約30%至40%。
在一些實例中,在儲存深度值之前,GPU 12可執行壓縮及/或下取樣(例如多重取樣去鋸齒(MSAA)下取樣)。壓縮及/或下取樣可為一種實例方式,GPU 12可以該方式減少儲存之深度值的量。在一些實例中,除壓縮及/或下取樣以外或替代壓縮及/或下取樣,GPU 12可執行實例技術以進一步減少儲存之深度值的量。然而,無需在每一實例中執行用以進一步減少儲存之深度值的量之技術。在一些實例中,GPU 12可並不經組態以執行壓縮及/或下取樣。
此外,對深度值之讀取可能導致延遲扭曲操作。舉例而言,因為在眼部緩衝器輪次期間寫入深度值,所以GPU 12可利用在扭曲輪次期間讀回深度值之時間及功率。此外,因為系統記憶體10可儲存全部深度值,所以系統記憶體10中之記憶體空間可能並未有效利用。
在一些實例中,並非全部深度值均用於再現對影像品質具有受限效果(例如即使並不使用全部深度值,影像品質亦可處於所要水準下)之影像內容。在一些情況下,可使用少至1%的深度值。
本揭示描述一種靈活方式,GPU 12可以該方式僅儲存有限數目之深度值,以減少GPU 12需要寫入至系統記憶體10且隨後需要自系統記憶體10讀取之資訊的量。實例技術可為靈活的以使得顯影器可選擇性判定應寫入多少深度值。如此,對於使用相對高的量之深度值的應用程式,或對於使用相對低的量之深度值的應用程式,顯影器可確保使用實例技術來寫入正確數目之深度值。
因此,在將深度值用作再現之部分的圖形處理技術中,因為所使用之時間及處理,所以可能在儲存深度值方面存在問題。本揭示描述可解決圖形處理之深度值儲存問題的實例技術。以此方式,GPU 12之操作可經增強,因為GPU 12執行其操作需要較少時間及效能。在一或多個實例中,為限制需要儲存之深度值的量,GPU 12可充分利用圖形處理流水線操作之部分以使得可使用GPU 12之現成實例來執行實例技術。舉例而言,實例技術可藉由廣泛多種不同類型之GPU 12來執行,而無需對GPU 12之底層結構進行修改。
如更詳細地描述,在根據以微磚為基礎之架構對GPU 12進行組態的實例中,在微磚之再現之間的操作時,GPU 12可儲存有限數目之深度值。在以微磚為基礎之架構中,影像訊框分為複數個微磚(例如藉由CPU 6或GPU 12)。GPU 12隨後在逐微磚基礎上進行操作,從而對每一微磚執行兩個遍次以判定微磚之影像內容。
第一遍次稱為裝倉遍次,其中GPU 12判定哪些繪製屬於哪一框組(亦稱作微磚)且哪些繪製可見(例如生成可見度資訊)。框組或微磚為影像訊框之部分的實例。在第二遍次(稱為再現遍次)中,GPU 12依序基於對哪些繪製屬於哪一微磚及繪製之可見度的判定來再現每一部分(例如微磚或框組)。
此類雙重遍次圖形處理架構(有時稱為以流式輸出為基礎之裝倉架構)可適用於各種原因。作為一個實例,諸如域著色器、曲面細分及/或幾何著色器之額外處理階段可經添加至GPU 12,且由於時間分離幾何及點陣化處理而存在有效裝倉重疊及再現重疊(例如GPU 12可再現一個影像表面同時對下一表面執行裝倉)。
作為再現遍次之部分,GPU 12寫入用於在GPU 12本地之微磚記憶體(例如微磚記憶體為本地記憶體14之部分)之基元的像素值。在稱為解析微磚記憶體之過程中,GPU 12可隨後將微磚之像素值寫入至系統記憶體10。微磚記憶體可為在GPU 12判定彼微磚之全部像素值時暫時儲存微磚之像素值的儲存空間。一旦GPU 12判定微磚之全部像素的像素值,GPU 12便藉由將像素值寫入至系統記憶體10來解析微磚記憶體。GPU 12隨後在逐微磚基礎上重複此等操作。
舉例而言,對於第一微磚,GPU 12可將彼微磚之像素的像素值寫入至微磚記憶體。GPU 12可隨後將像素值自微磚記憶體寫入至系統記憶體10。隨後,GPU 12可將第二微磚之像素的像素值寫入至微磚記憶體,且隨後將像素值自微磚記憶體寫入至系統記憶體10,以此類推。
在一或多個實例中,GPU 12可寫入用於來自微磚記憶體之有限數目之深度樣本的深度值,而非等待將來自微磚記憶體之深度樣本(例如與像素中之每一者相關聯的深度值)完全解析的命令。舉例而言,GPU 12可將用於像素之第一數目的深度值儲存於微磚記憶體中,但GPU 12可將來自微磚記憶體之第二數目的深度值寫入至系統記憶體10。在此實例中,第二數目小於第一數目。
作為一實例,假設在微磚中存在1000個像素。GPU 12可將微磚中之1000個像素的深度值儲存至微磚記憶體。在此實例中,第一數目為1000。GPU 12可向系統記憶體10寫入10個像素之深度值。在此實例中,第二數目為10。GPU 12可能並不需要儲存微磚記憶體中之全部1000個像素的深度值,且GPU 12可將多於或少於10個深度值寫入至系統記憶體10。
如更詳細地所描述,GPU 12可執行稱為深度值繪製調用之繪製調用以有助於避免與其他繪製調用混淆。回應於執行深度值繪製調用,GPU 12可將微磚之有限數目之像素(例如少於全部像素)的深度值自微磚記憶體寫入至系統記憶體10。換言之,GPU 12可回應於執行深度值繪製調用而將儲存於微磚記憶體中之第二數目的深度值寫入至系統記憶體10。在此實例中,微磚記憶體可儲存第一數目之深度值,且第二數目小於第一數目。
作為一個實例,顯影器在一系列繪製調用之後可包括深度值繪製調用,其中該等一系列繪製調用生成正在處理之當前微磚的影像內容。在一系列繪製調用之後的此深度值繪製調用可為在生成微磚之影像內容的全部其他繪製調用之後的最末繪製調用。然而,技術不限於作為在生成微磚之影像內容的全部其他繪製調用之後之最末繪製調用的深度值繪製調用。此外,使用深度值繪製調用來促使GPU 12將有限數目之像素的深度值或微磚之深度樣本自微磚記憶體輸出至系統記憶體10為一種實例方式,其中GPU 12限制寫入至系統記憶體10之深度值的量。限制自微磚記憶體寫入至系統記憶體10之深度值的量之其他可能的方式為可能的。
繪製調用為包括於在CPU 6上執行之應用程式中的指令,該CPU生成GPU 12再現之影像內容。繪製調用指令包括指示GPU 12關於紋理、狀態、待執行之著色器程式、再現物件、緩衝器等的全部資訊。在一些實例中,在CPU 6上所執行之應用程式包括促使GPU 12再現彼物件之用於每一物件的一組繪製調用。如此,藉由執行複數個繪製調用組,GPU 12可再現微磚之全部物件,且生成微磚中之像素中之每一者的像素值。
深度值繪製調用與其他繪製調用的不同之處可在於,在一或多個實例中,深度值繪製調用不用於再現影像內容。相反,深度值繪製調用識別著色器程式,當GPU 12執行著色器程式時,GPU 12將微磚之所選像素(例如所選深度樣本)的深度值寫入至系統記憶體10。為易於參考,將促使GPU 12寫入微磚之所選像素之深度值的著色器程式稱為微磚深度解析著色器,且因為其對像素操作,因此可為片段著色器之一實例。以此方式,出於將受限深度值(例如受限深度樣本之深度值)選擇性寫入至系統記憶體10之目的,GPU 12可充分利用對著色器程式(例如微磚深度解析著色器)之使用而不對GPU 12之底層結構進行任何改變。下文更詳細地描述微磚深度解析著色器之實例操作。
大體而言,在圖1中,GPU 12可生成微磚之像素的深度值,其中該微磚為訊框之複數個微磚中之一者。GPU 12可將像素之深度值儲存於經組態以儲存訊框之微磚之影像內容的本地記憶體14之微磚記憶體中。GPU 12可執行著色器(例如微磚深度解析著色器)以將儲存於微磚記憶體中之深度值的子集(例如有限數目之像素的實際深度值)寫出至系統記憶體10。在一些實例中,對深度值之壓縮為可能的,但即使此類壓縮亦可在深度值之子集上進行。如上文所描述,GPU 12可回應於繪製調用 (例如深度值繪製調用)而執行微磚深度解析著色器。可在用以再現微磚之影像內容的繪製調用之後包括深度值繪製調用。
GPU 12可在逐微磚基礎上重複此等操作。舉例而言,在微磚中之每一者的依序再現遍次中,GPU 12可在微磚記憶體中儲存複數個微磚中之每一者的經再現影像內容。GPU 12亦可在微磚中之每一者的每一依序再現遍次中執行著色器(例如微磚深度解析著色器)以將儲存於微磚記憶體中之深度值的各別子集依序寫出至系統記憶體10。
如上文所描述,GPU 12可將像素之第一數目的深度值儲存於微磚記憶體中,且將儲存於微磚記憶體中之第二較少數目之深度值寫入至系統記憶體10。除深度值以外,微磚記憶體亦可儲存微磚之像素的顏色值或不透明度值。舉例而言,微磚記憶體可儲存微磚之像素的第三數目之顏色值或不透明度值。第三數目與第一數目可相同,但不必在全部實例中。第三數目大於第二數目。GPU 12可將微磚之像素的第三數目之顏色值或不透明度值寫入至系統記憶體10。以此方式,在一些實例中,GPU 12可儲存像素之子集的深度值,但可將像素之全部或大於該子集之顏色值或不透明度值儲存於系統記憶體10中。在本揭示中,顏色值或不透明度值包括僅顏色值、僅不透明度值或顏色值及不透明度值兩者。
圖2為進一步詳細說明圖1之計算器件2之CPU 6、GPU 12及記憶體10的框圖。如圖2中所示,CPU 6以通信方式耦接至GPU 12及記憶體10,且GPU 12以通信方式耦接至CPU 6及記憶體10。在一些實例中,GPU 12可與CPU 6一起整合至母板上。在額外實例中,GPU 12可實施於安裝在包括CPU 6之母板之埠中的圖形卡上。在其他實例中,GPU 12可併入於經組態以與CPU 6交互操作之周邊器件內。在額外實例中,GPU 12可經定位於與CPU 6相同之微晶片上,例如形成系統單晶片(SoC)之部分。
如圖2中所示,CPU 6經組態以執行應用程式38、圖形應用程式設計介面(API) 40、GPU驅動器42及操作系統44。在圖2之實例中,GPU 12包括控制器46、著色器核心48及一或多個固定功能單元50。為簡單起見,本地記憶體14亦經說明為GPU 12之一部分但亦可在外部。另外,如所說明,本地記憶體14包括微磚記憶體52。
軟體應用程式38可包括促使圖形內容顯示之一或多個指令或促使非圖形任務(例如通用計算任務)在GPU 12上執行的一或多個指令中之至少一些。軟體應用程式38可向圖形API 40發出指令。圖形API 40可為將自軟體應用程式38接收到之指令轉換為可由GPU驅動器42消耗之格式的運行時間服務。在一些實例中,圖形API 40及GPU驅動器42可為同一軟體服務之部分。
GPU驅動器42經由圖形API 40自軟體應用程式38接收指令,並控制GPU 12之操作以服務指令。舉例而言,GPU驅動器42可制定一或多個命令串流,將該等命令串流置放至記憶體10中,且指示GPU 12執行命令串流。GPU驅動器42可將命令串流置放至記憶體10中且經由操作系統44 (例如經由一或多個系統調用)與GPU 12通信。
控制器46經組態以擷取儲存於命令串流中之命令,並調度命令以用於在著色器核心48及一或多個固定功能單元50上執行。控制器46可調度來自命令串流之命令以用於在一或多個固定功能單元50或著色器核心48及一或多個固定功能單元50之子集上執行。控制器46可為GPU 12之硬體,可為執行於GPU 12上之軟體或韌體或兩者之組合。
著色器核心48包括可程式化電路(例如在其上執行軟體之處理核心)。一或多個固定功能單元50包括經組態以按最小功能靈活性執行受限操作之固定功能電路。著色器核心48及一或多個固定功能單元50共同形成經組態以執行圖形處理之圖形流水線。
著色器核心48可經組態以執行自CPU 6下載至GPU 12上之一或多個著色器程式。在一些實例中,著色器程式可為以高級著色語言(例如OpenGL著色語言(GLSL)、高級著色語言(HLSL)、用於圖形之C (Cg)著色語言等)所編寫之程式的經編譯版本。在一些實例中,著色器核心48可包括經組態以並行操作之複數個處理單元(例如SIMD流水線)。著色器核心48可具有儲存著色器程式指令之程式記憶體及指示程式化記憶體中之當前指令正在執行或下一指令待經提取的執行狀態寄存器(例如程式計數器寄存器)。在著色器核心48上執行的著色器程式之實例包括(例如)頂點著色器、像素著色器(亦稱為片段著色器)、幾何形狀著色器、殼著色器、域著色器、計算著色器及/或統一著色器。如更詳細地描述,著色器核心48亦可執行微磚深度解析著色器以將深度值之子集自微磚記憶體52寫入至系統記憶體10。
固定功能單元50可包括作為用以執行某些功能之硬佈線的硬體。雖然固定功能硬體可經由一或多個控制信號來組態(例如)以執行不同功能,但固定功能硬體典型地不包括能夠接收使用者編譯之程式的程式記憶體。在一些實例中,一或多個固定功能單元50可包括(例如)執行柵格操作(例如深度測試、剪刀測試、α摻合等)之處理單元。
CPU 6之GPU驅動器42可經組態以將命令串流寫入至記憶體10,且GPU 12之控制器46可經組態以自記憶體10讀取命令串流中之一或多個命令。在一些實例中,命令串流中之一者或兩者可作為環形緩衝器儲存於記憶體10中。環形緩衝器可為具有圓形尋址方案之緩衝器,其中CPU 6及GPU 12維持與資料至環形緩衝器之寫入及資料自環形緩衝器之讀取相關聯的同步狀態變量。舉例而言,若第一命令串流為環形緩衝器,則CPU 6及GPU 12中之每一者可將指示待寫入至之下一位址的寫入指針儲存於環形緩衝器中,且將指示待經讀取之下一位址的讀取指針儲存於環形緩衝器中。
當CPU 6將新的命令寫入至環形緩衝器時,CPU 6可更新CPU 6中之寫入指針並指示GPU 12更新GPU 12中之寫入指針。類似地,當GPU 12自環形緩衝器讀取新的命令時,GPU 12可更新GPU 12中之讀取指針並指示CPU 6更新CPU 6中之讀取指針。其他同步機制為可能的。當讀取及/或寫入指針到達在經分配用於環形緩衝器之位址範圍內的最高位址時,讀取及/或寫入指針可繞回至最低位址以實施圓形尋址方案。
現將參照圖2來描述實例GPU驅動器42及實例GPU控制器46之實例操作。GPU驅動器42自軟體應用程式38接收指定待由GPU 12執行之圖形操作及/或通用計算操作的一或多個指令。GPU驅動器42將輸出命令串流置放至可由GPU控制器46存取之記憶體10中。GPU驅動器42通知GPU控制器46對應於軟體應用程式38之命令串流可供用於處理。舉例而言,GPU驅動器42可將指示命令串流準備好執行之一或多個值寫入至GPU寄存器(例如由GPU 12輪詢之GPU硬體寄存器及/或由GPU 12輪詢之GPU記憶體映射寄存器)。
在命令串流準備好執行之通知後,GPU 12之控制器46可判定資源當前是否可用於GPU 12上以開始執行命令串流。若資源為可用的,則控制器46開始調度命令串流中之命令。
作為圖形處理之部分,CPU 6可將某些圖形處理任務分流至GPU 12。舉例而言,應用程式38可生成針對經互連以形成圖形物件之基元的複數個頂點之屬性的屬性資料。應用程式38可將屬性資料儲存於記憶體10中之頂點緩衝器中。GPU驅動器42可指示控制器46擷取用於處理以生成用於顯示之圖形資料的頂點之屬性的屬性資料。
如上文所描述,GPU 12可經組態以在兩種遍次中生成影像內容:裝倉遍次及再現遍次。雖然參照兩種遍次來描述實例技術,但該等實例技術並不如此受限制。
在裝倉遍次中,GPU驅動器42及/或控制器46可限定微磚(亦稱為框組)之大小,其中每一微磚具有大小N×M (例如N×M數目之像素)。微磚不必全部為相同大小,且N與M在一些實例中可相等。
控制器46可隨後促使著色器核心48及固定功能單元50執行各別操作,以判定哪些基元屬於哪一微磚中以及哪些頂點可見。在再現遍次中,控制器46可促使著色器核心48及固定功能單元50在每微磚基礎上執行各別操作以在 逐微磚基礎上再現影像內容。再現遍次之輸出可為微磚之像素的像素值,包括微磚之像素的顏色值、不透明度值及深度值。微磚記憶體52可將像素值儲存為微磚之影像內容,且GPU 12將所得影像內容自微磚記憶體52儲存至系統記憶體10以用於擷取及顯示。GPU 12可隨後在逐微磚處理中使用微磚記憶體52來儲存下一微磚之像素值。
如上文所描述,因為並非全部深度值均可為用於生成顯示之最終影像內容所必需,所以GPU 12可經組態以選擇性輸出儲存於微磚記憶體52中之深度值的子集(例如深度樣本或像素之子集的深度值)。作為一實例,微磚記憶體52可儲存像素之第一數目的深度值,且GPU 12可經組態以將儲存於微磚記憶體52中之第二數目的深度值寫入至系統記憶體10。在一些實例中,GPU 12可將儲存於微磚記憶體52中之像素的顏色值或不透明度值寫入至系統記憶體10,但僅將深度值之子集寫入至系統記憶體10。
舉例而言,GPU 12可再現影像內容作為眼部緩衝器輪次之部分,且GPU 12可隨後使用影像內容,在眼部緩衝器輪次期間再現以用於作為扭曲輪次之部分的扭曲。眼部緩衝器輪次之部分所判定之深度值可適用於執行作為扭曲輪次之部分的扭曲。GPU 12可使用深度值作為扭曲輪次之部分來判定再現哪些像素以及如何再現該等像素。
GPU 12可寫入深度值之子集的一種實例方式為使用執行於著色器核心48上之微磚深度解析著色器。微磚深度解析著色器可經組態以選擇性輸出儲存於微磚記憶體52中之深度值。舉例而言,微磚深度解析著色器可讀入微磚記憶體52之深度值作為「紋理映射」。紋理映射一般為映射至網格模型上以形成3D物件之影像內容(例如位元映射)。在一些實例中,雖然儲存於微磚記憶體52中之深度值經讀取為紋理映射,但深度值並非為映射至網格模型上以形成3D物件之實際影像內容。相反地,將深度值視為紋理映射以允許GPU 12利用當前可用之處理技術,以使得僅將來自微磚記憶體52之深度值的子集寫入至系統記憶體10。
舉例而言,經由微磚深度解析著色器之執行,著色器核心48可將深度值讀取為對微磚記憶體52具有單個紋理提取而非對微磚記憶體52具有多個提取之紋理映射。舉例而言,可將紋理映射視為儲存複數個深度樣本,其中每一深度樣本與微磚中之像素及像素之深度值相關聯。用以提取具有單個提取之深度值的一個實例指令為GL_ARM_shader_framebuffer_fetch_depth_stencil,其可在OpenGL API中找到。在此實例中,微磚深度解析著色器可包括gl_LastFragDepthARM命令以自微磚記憶體52擷取深度值。可存在其他實例指令(諸如在不同API或實施方案特定命令中),經由微磚深度解析著色器之執行,著色器核心48可利用該等指令自微磚記憶體52擷取深度值。以此方式,為寫入深度值之子集(例如第二數目之深度值,其中微磚記憶體52儲存第一數目之深度值),GPU 12可讀取第二數目之深度值作為具有單個紋理提取之紋理映射並基於所讀取深度值寫入第二數目之深度值。
在著色器核心48經由微磚深度解析著色器之執行而接收深度值之後,經由微磚深度解析著色器之執行,著色器核心48可將深度值之子集輸出至系統記憶體10。舉例而言,假設微磚之大小為N乘M,其中僅需要將ND 乘MD 個深度值自微磚記憶體52寫入至系統記憶體10。在此實例中,微磚記憶體52可儲存N乘M數目之深度值(例如第一數目之深度值等於N*M),且可寫入ND 乘MD 數目之深度值(例如第二數目之深度值等於ND *MD )。
作為一個實例,微磚深度解析著色器可執行微磚之每一像素(例如N乘M紋理映射中之每一深度樣本),但僅輸出像素之子集的深度值。在此實例中,應用程式38或控制器46可限定N乘M四邊形,該四邊形限定微磚深度解析著色器可能需要讀取哪些像素。在一些實例中,微磚深度解析著色器可將四邊形大小限定為N乘M。藉由單個紋理提取,微磚深度解析著色器可促使著色器核心48自微磚記憶體52讀取深度值。微磚深度解析著色器可經組態以將N乘M個深度樣本之僅ND 乘MD 個深度樣本的深度值寫入至系統記憶體10。舉例而言,微磚深度解析著色器可經組態以捨棄(N-ND )乘(M-MD )個深度樣本之深度值。
對於此實例,因為微磚深度解析著色器執行N乘M個深度樣本中之每一者,且作為執行之部分而寫入僅ND 乘MD 個深度樣本的深度值,所以總像素工作負荷為N乘M。因此,用以寫入深度值之總帶寬為(ND *MD )*bytes_per_depth_sample。作為一實例,若ND 等於N/10,且MD 等於M/10,則在此實例中,與寫出全部深度值之情況相比較,可能不存在像素工作負荷之任何減少;然而,存在帶寬之100×減小。
在以上實例中,微磚深度解析著色器可對每一像素(例如對每一深度樣本)執行N乘M次;然而,實例技術不如此受限制。在一些實例中,替代使用一個N乘M大小之四邊形來限定微磚深度解析著色器應在哪些像素上操作,應用程式38或控制器46可限定複數個點或較小四邊形。舉例而言,應用程式38或控制器46可限定ND 乘MD 個較小四方形。舉例而言,應用程式38或控制器46可限定複數個四邊形,其中每一四邊形為像素或像素之較小集合的大小。在四邊形為像素之大小的實例中,應用程式38或控制器46所限定之四邊形的數目等於ND 乘MD 。如上所述,在一些實例中,微磚深度解析著色器可限定ND 乘MD 大小之四邊形。
在四邊形之大小為單個像素之實例中,微磚深度解析著色器可執行僅ND 乘MD 次(例如對ND 乘MD 數目之深度樣本中之每一者執行一次)。以此方式,隱含地不保留除ND 乘MD 個深度樣本之深度值以外的深度值。舉例而言,微磚深度解析著色器可僅在對應於ND 乘MD 個深度樣本之深度樣本上執行,且將其深度值儲存於系統記憶體10中。在此實例中,總像素工作負荷可為ND 乘MD ,而非N乘M。總帶寬可為ND *MD *bytes_per_depth樣本。作為一實例,若ND 等於N/10,且MD 等於M/10,則在此實例中,與寫出全部深度值之情況相比較,可存在像素工作負荷之100×的減少。亦可存在帶寬之100×減小。
在以上實例中,微磚深度解析著色器經描述為將ND 乘MD 個深度值輸出至系統記憶體10。然而,在一些實例中,微磚深度解析著色器可在寫入至系統記憶體10之前對深度值執行額外操作。作為一個實例,微磚深度解析著色器可讀入N乘M個深度值之A乘B個深度值,並對A乘B個深度值取平均值或判定A乘B個深度值之最大者以生成ND 乘MD 個深度值。對A乘B個深度值取平均值或判定A乘B個深度值之最大者為實例篩選技術。微磚深度解析著色器可執行除取平均值或判定最大值以外的篩選技術或篩選技術之組合。微磚深度解析著色器可隨後輸出ND 乘MD 個深度值。
此處GPU 12可以各種方式執行微磚深度解析著色器。作為一個實例,顯影器可在用以再現OpenGL之訊框緩衝器物件(FBO)或DirectX之訊框靶向模型之影像內容的應用程式38中包括複數個繪製調用。在給定FBO或訊框靶向模型之繪製調用之後,顯影器可包括使用微磚深度解析著色器之深度值繪製調用。
在一些實例中,微磚深度解析著色器將讀取深度值,且不必將深度值寫入至微磚記憶體52而係寫入至系統記憶體10。因此,在一些實例中,用以調用微磚深度解析著色器之執行的繪製調用可禁用將深度值寫入至微磚記憶體52。另外,測試深度值以判定像素之遮擋可並非必要,且因此繪製調用可禁用深度測試。
在一些實例中,編譯應用程式38之編譯器可包括深度值繪製調用,而非顯影器包括深度值繪製調用。作為另一實例,GPU驅動器42可將深度值繪製調用包括於應用程式38中。將深度值繪製調用包括於應用程式38中之其他方式係有可能的。
亦可存在各種方式來判定寫入至系統記憶體10之N乘M個深度值的ND 乘MD 個深度值。作為一個實例,微磚深度解析著色器可經組態以擷取水平地儲存於微磚記憶體52中之每第X個深度值及垂直地儲存於微磚記憶體52中之每第Y個深度值。在此實例中,ND 等於N/X,且MD 等於M/Y。
作為另一實例,顯影器可對將讀取哪些深度值進行限定。作為另一實例,應用程式38可經組態以對將讀取哪些深度值進行限定。
微磚深度解析著色器可將深度值自微磚記憶體52寫入至具有無序存取視圖(UAV)之系統記憶體10。UAV可允許對多個線程之系統記憶體10的讀取/寫入存取(例如微磚深度解析著色器之指令的實例)而不產生記憶體衝突。舉例而言,因為GPU 12提供多線程及高水平之並行處理,所以微磚深度解析著色器之多個實例可並行執行,其中微磚深度解析著色器之每一實例操作於不同像素之深度值上。
由於微磚深度解析著色器之不同實例的並行執行,因而微磚深度解析著色器之兩個或兩個以上實例可能需要在重疊時間處對系統記憶體10進行存取。UAV允許微磚深度解析著色器之兩個或兩個以上實例對系統記憶體10進行存取而不導致記憶體衝突。
雖然UAV可允許記憶體存取而無記憶體衝突,但可能存在關於當儲存於系統記憶體10中時,哪一深度值與哪一像素相關聯之信息的缺失。因此,控制器46可追蹤哪些深度值與微磚之哪些像素相關聯來判定待基於微磚深度值著色器所執行之像素寫入UAV中之何處。
舉例而言,如上文所描述,深度值可用於作為扭曲輪次之部分的扭曲影像內容。因此,控制器46可能需要判定特定深度值與影像訊框之哪一部分相關聯。舉例而言,若將保留1%的深度值(例如1%的深度樣本之深度值),則控制器46可能需要追蹤影像訊框中1%的深度樣本之深度值中之每一者與其相關聯的位置。作為說明,假設影像訊框之大小為1000×1000像素。在此實例中,GPU 12可將深度值保留為1000×1000像素中之10,000。因此,第一深度值可與像素(10, 10)相關聯,第二深度值可與像素(20, 10)相關聯,且第100深度值可與像素(1000, 10)相關聯,且隨後第101深度值可與像素(10, 20)相關聯,第102深度值可與像素(20, 20)相關聯,以此類推。
在此實例中,控制器46可儲存指示以下各者之資訊:第一深度值針對像素(10, 10),第二深度值針對像素(20, 10),以此類推。將進行之一種實例方式為藉由將位置(10, 10)處之像素(10, 10)的深度值儲存於系統記憶體10中,將位置(20, 10)處之像素(20, 10)的深度值儲存於系統記憶體10中,以此類推。使深度值與特定像素相關聯之其他實例方式係有可能的。
隨後,在扭曲輪次期間,控制器46可利用指示深度值與哪一像素相關聯之資訊。舉例而言,為判定800×700周圍之位置中的深度,控制器46可利用可供用於系統記憶體10中來儲存深度值的ND ×MD 空間中之80×70深度樣本處的深度值。
在一或多個實例中,微磚深度值著色器可經組態以執行將深度值自微磚記憶體52解析至系統記憶體10之操作。舉例而言,微磚深度值著色器可將深度值之子集自微磚記憶體52寫入至系統記憶體10。因此,可能不必將深度值中之全部自微磚記憶體52解析至系統記憶體10。
舉例而言,在OpenGL中,藉由默認,當再現FBO結束時,始終保留深度值之完整集合(例如存在深度值之完整解析)。顯影器、編譯器或GPU驅動器42可包括用以使深度值失效或捨棄深度值以使得GPU 12無需將其儲存於系統記憶體10中之指令。因為微磚深度解析著色器已保留所需深度值,所以可使該等深度值失效或捨棄該等深度值。作為一實例,顯影器可將glInvalidateFramebuffer() /glDiscardFramebufferEXT()包括於GL_DEPTH_ATTACHMENT指令上以使深度值失效或捨棄深度值。
圖2說明一或多個實例,其中在裝倉遍次期間,控制器46、著色器核心48及固定功能單元50可判定哪些基元屬於訊框之複數個微磚的哪些微磚。隨後,在再現遍次期間,著色器核心48及固定功能單元50可生成微磚之一或多個像素的深度值,該微磚於裝倉遍次期間經判定屬於正針對其生成深度值的微磚。舉例而言,著色器核心48及固定功能單元50可以逐微磚基礎來判定像素之像素值,且在特定微磚之再現遍次期間執行此類判定。
著色器核心48及/或固定功能單元50可將像素之深度值儲存於GPU 12內部之微磚記憶體52中。如所描述,微磚記憶體52可經組態以儲存訊框之微磚的影像內容。作為一個實例,執行於著色器核心48上之像素(或片段著色器)可將微磚中之像素的深度值輸出至微磚記憶體52,但包括固定功能單元50中之一或多者的其它組件可將微磚中之像素的深度值輸出至微磚記憶體52。
用以生成像素之深度值並將其儲存於微磚記憶體52中的實例操作可基於包括於應用程式38中之繪製調用來執行,著色器核心48及固定功能單元50執行該應用程式。在一些實例中,應用程式38於用以再現微磚之影像內容的至少部分之繪製調用之後(例如在用以再現OpenGL之framebuffer物件(FBO)或DirectX之訊框靶向模型的影像內容之應用程式38中之複數個繪製調用之後)可包括深度值繪製調用。
著色器核心48可執行微磚深度解析著色器作為深度值繪製調用之部分,從而將儲存於微磚記憶體52中之深度值的子集寫入至系統記憶體10(例如深度值之子集的實際深度值或自深度值之子集的實際深度值壓縮之經壓縮深度值)。作為一個實例,經由微磚深度解析著色器之執行,著色器核心48可自微磚記憶體52將深度值讀取為對微磚記憶體52具有單個紋理提取之紋理映射。在一些實例中,經由微磚深度解析著色器之執行,著色器核心48可自微磚記憶體52讀取微磚之全部深度值,且將深度值之子集選擇性寫入至系統記憶體10。在一些實例中,經由微磚深度解析著色器之執行,著色器核心48可自微磚記憶體52讀取微磚之深度值的子集,且將深度值之子集寫入至系統記憶體10。以此方式,GPU 12根據儲存於微磚記憶體中之深度值僅將深度值之子集寫入至系統記憶體10。
GPU 12可在逐微磚基礎上重複此類操作。舉例而言,著色器核心48及/或固定功能單元50可在微磚中之每一者的依序再現遍次中儲存複數個微磚中之每一者的再現影像內容。著色器核心48可在微磚中之每一者的每一依序再現遍次中執行微磚深度解析著色器以將儲存於微磚記憶體52中之深度值(例如微磚中之每一者的深度值)的各別子集依序寫入至系統記憶體10。
帶寬之減小及所儲存之深度值的量之減少對帶寬使用率及記憶體儲存使用率可為有益的。一些技術可將全部深度值自微磚記憶體52寫入至系統記憶體10。隨後,為減少正在使用之記憶體儲存的量,此等其他技術可將深度值採樣為紋理映射,經由電腦著色器再現ND 乘MD 個像素並將ND 乘MD 個像素解析至系統記憶體10。雖然此類技術可減少系統記憶體10中所使用之儲存空間的量,但總帶寬可等於N*M+2*ND *MD *bytes_per_pixel+快取記憶體無效率(例如由於部分讀取且依賴於下取樣之量)。從而,雖然此等技術可減少系統記憶體10中所使用之儲存空間的量,但帶寬可遠大於使用ND *MD *bytes_per_pixel (或bytes_per_depth樣本)之實例技術。
在總帶寬經限定為N*M+2*ND *MD * bytes_per_pixel+快取記憶體無效率之一些技術中,因為全部深度值均被讀回,所以總帶寬可基於全部深度值(例如N*M)。另外,對所保留之深度值的讀取為ND *MD *bytes_per_pixel。然而,在此情況下,亦存在對深度值之寫回,且因此,總帶寬亦包括N*M及2*ND *MD *bytes_per_pixel兩者(例如N*M+2*ND *MD *bytes_per _pixel)。此外,如上所指出,因為存在部分讀取及對下取樣之依賴性,所以存在快取記憶體無效率。因此,一些其他技術中之總帶寬為N*M+2*ND *MD *bytes_per_pixel+快取記憶體無效率。
圖3A及圖3B為說明經評估以用於儲存深度值之像素的概念圖。圖3A及圖3B說明具有大小H乘E之微磚的一實例。舉例而言,微磚包括像素54A,A至像素54H,E。
在圖3A之實例中,微磚深度解析著色器著色器核心48可執行像素54A,A至像素54H,E中之每一者的微磚深度解析著色器之一個實例。舉例而言,微磚深度解析著色器可接收H乘E的值作為輸入,該值限定一空間,微磚深度解析著色器根據該空間自微磚記憶體52將深度值讀取為紋理映射。
控制器46及/或應用程式38可限定四邊形56,且將四邊形56之資訊(例如大小)提供至微磚深度解析著色器。如由四邊形56所限定,微磚深度解析著色器可隨後在單次紋理映射提取中自微磚記憶體52提取深度值,且執行深度值中之每一者。微磚深度解析著色器可經組態以捨棄除選定少數所識別深度值以外之全部深度值。舉例而言,微磚深度解析著色器可經組態以捨棄除像素54A,A、像素54H,A、像素54E,C、像素54A,E及像素54H,E的彼等深度值以外之全部深度值。微磚深度解析著色器可將像素54A,A、像素54H,A、像素54E,C、像素54A,E及像素54H,E之深度值儲存於系統記憶體10中。
在圖3B中所說明之實例中,替代針對每一像素執行微磚深度解析著色器,著色器核心48可針對選定數目之像素執行微磚深度解析著色器之實例。舉例而言,控制器46及/或應用程式38可限定各自涵蓋微磚中之一個像素的複數個四邊形56A至四邊形56E (統稱為四邊形56)。控制器46及/或應用程式38可基於待保留之深度值來限定四邊形56。在此實例中,存在五個四邊形56。因此,著色器核心48可執行微磚深度解析著色器之五個實例,而非針對像素54A,A至像素54H,E中之每一者執行一個實例。著色器核心48可將像素54A,A、像素54H,A、像素54E,C、像素54A,E及像素54H,E之深度值儲存於系統記憶體10中。
圖4為說明儲存深度值之一實例方法的流程圖。作為一個實例,GPU 12可生成用於微磚之像素的深度值,其中該微磚為訊框之複數個微磚中之一者(60)。舉例而言,在裝倉遍次期間,GPU 12可判定哪些基元屬於複數個微磚中之哪些微磚。在再現遍次期間,GPU 12可生成微磚之基元之像素的深度值,該微磚在裝倉遍次期間經判定屬於正針對其生成深度值的微磚。
GPU 12可將像素之第一數目的深度值儲存於GPU 12內部之微磚記憶體52中(62)。微磚記憶體52可經組態以儲存訊框之微磚的影像內容。舉例而言,著色器核心48及/或固定功能單元50可形成圖形流水線,且圖形流水線之操作的輸出可為像素值,諸如顏色值、不透明度值及深度值。GPU 12之著色器核心48及/或固定功能單元50可儲存像素值,包括再現至GPU 12內部之微磚記憶體52 (例如不需要圖1之匯流排20來存取微磚記憶體52)之微磚的深度值。
GPU 12可將儲存於該微磚記憶體52中之第二數目的深度值寫入至系統記憶體10 (64)。第二數目少於第一數目。作為一個實例,為寫入第二數目之深度值,GPU 12可執行GPU 12上之著色器(例如微磚深度解析著色器)以將儲存於微磚記憶體52中之第二數目的深度值寫入至系統記憶體10 (64)。GPU 12可回應於在用以再現微磚之影像內容中的至少部分之繪製調用之後所包括之繪製調用而寫入第二數目之深度值。作為一個實例,著色器核心48可回應於在用以再現微磚之影像內容中的至少部分之繪製調用之後所包括之繪製調用 (例如深度值繪製調用)而執行微磚深度解析著色器。
在一些實例中,GPU 12可將第二數目之深度值讀取為具有單個紋理提取之紋理映射,並基於所讀取深度值寫入第二數目之深度值。舉例而言,在執行微磚深度解析著色器時,著色器核心48可將深度值讀取為對微磚記憶體52具有單個紋理提取之紋理映射。以此方式,GPU 12可根據儲存於微磚記憶體52中之深度值(例如第一數目之深度值)僅將深度值之子集(例如第二數目之深度值)寫入至系統記憶體10。
如上文所描述,實例技術可適用於扭曲影像內容。舉例而言,作為扭曲之部分,GPU 12可自系統記憶體10讀取在眼部緩衝器輪次期間所儲存之微磚之像素的顏色值及不透明度值。另外,GPU 12可讀取在根據本揭示中所描述之實例技術的眼部緩衝器輪次期間所儲存之微磚之深度值的子集(例如第二數目之深度值)。GPU 12可隨後基於微磚之像素的所讀取深度值及所讀取顏色值及不透明度值而使微磚之影像內容扭曲。實例扭曲技術包括時間扭曲,其中頭部位置用以對影像內容(例如微磚之像素的顏色值)進行紋理映射。
此外,在一些實例中,雖然GPU 12可儲存像素之深度值的子集,但GPU 12可儲存像素中之更多個的顏色值或不透明度值。舉例而言,若微磚記憶體52儲存微磚之像素之第一數目的深度值,則微磚記憶體52可儲存像素之第三數目的顏色值或不透明度值。第三數目可與第一數目相同,但該等技術不如此受限制。GPU 12可寫入微磚之像素的第三數目之顏色值或不透明度值,其中第三數目大於第二數目。舉例而言,GPU 12可使用記憶體解析命令將顏色值或不透明度值自微磚記憶體52解析至系統記憶體10。然而,因為GPU 12可能已寫出第二數目之深度值(例如藉由微磚深度解析著色器之執行),所以此等記憶體解析命令可不包括用以解析深度值之命令。
本揭示中所描述之技術可至少部分地實施於硬體、軟體、韌體或其任何組合中。舉例而言,所描述之技術的各種態樣可實施於一或多個處理器中,包括一或多個微處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA),或任何其他等效積體或離散邏輯電路,以及此類組件之任何組合。術語「處理器」或「處理電路」一般可指代前述邏輯電路中之任一者,單獨或與其他邏輯電路組合,或任何其他等效電路,諸如執行處理之離散式硬體。
此類硬體、軟體及韌體可經實施於相同器件內或分離器件內以支援本揭示中所描述之各種操作及功能。另外,可將所描述單元、模組或組件中之任一者一起實施或單獨實施為離散但可互操作之邏輯器件。將不同特徵作為模組或單元之描述意欲突出不同功能性態樣,且不必暗示此類模組或單元必須由分離硬體或軟體組件來實現。相反,與一或多個模組或單元相關聯之功能性可由分離硬體、韌體及/或軟體組件來執行或經整合於常見或分離硬體或軟體組件內。
本揭示中所描述之技術亦可經儲存、實施或編碼於電腦可讀媒體中,諸如儲存指令之電腦可讀儲存媒體。經嵌入或編碼於電腦可讀媒體中之指令可促使一或多個處理器執行本文中所描述之技術,例如當該等指令由一或多個處理器執行時。電腦可讀儲存媒體可包括隨機存取儲存器(RAM)、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可擦除可程式化唯讀記憶體(EPROM)、以電子方式可擦除可程式化唯讀記憶體(EEPROM)、快閃記憶體、硬碟、CD-ROM、軟碟、晶匣、磁性媒體、光學媒體或其他有形的電腦可讀儲存媒體。
已描述各種態樣及實例。然而,可在不脫離以下申請專利範圍之範疇的情況下對本揭示之結構或技術做出修改。
2‧‧‧計算器件
4‧‧‧使用者輸入接口
6‧‧‧CPU
8‧‧‧記憶體控制器
10‧‧‧系統記憶體
12‧‧‧圖形處理單元
14‧‧‧本地記憶體
16‧‧‧顯示處理器
18‧‧‧顯示器
19‧‧‧位姿監視器電路
20‧‧‧匯流排
38‧‧‧應用程式
40‧‧‧圖形應用程式設計介面
42‧‧‧GPU驅動器
44‧‧‧操作系統
46‧‧‧控制器
48‧‧‧著色器核心
50‧‧‧固定功能單元
52‧‧‧微磚記憶體
54A,A‧‧‧像素
54A,E‧‧‧像素
54E,C‧‧‧像素
54H,A‧‧‧像素
54H,E‧‧‧像素
56‧‧‧四邊形
56A‧‧‧四邊形
56B‧‧‧四邊形
56C‧‧‧四邊形
56D‧‧‧四邊形
56E‧‧‧四邊形
60‧‧‧步驟
62‧‧‧步驟
64‧‧‧步驟
圖1為說明可用以實施本揭示之技術之一實例計算器件的框圖。
圖2為進一步詳細說明圖1之計算器件之CPU、GPU及記憶體的框圖。
圖3A及圖3B為說明經評估以用於儲存深度值之像素的概念圖。
圖4為說明儲存深度值之一實例方法的流程圖。

Claims (28)

  1. 一種生成影像內容之方法,該方法包含: 使用一圖形處理單元(GPU)生成用於一訊框之一微磚之像素的深度值; 將用於該等像素之一第一數目之該等深度值儲存於該GPU內部之一微磚記憶體中,其中該微磚記憶體經組態以儲存用於該訊框之該微磚的影像內容;及 將儲存於該微磚記憶體中之一第二數目之該等深度值寫入至一系統記憶體,其中該第二數目小於該第一數目。
  2. 如請求項1之方法,其中寫入該第二數目之該等深度值包含對該GPU執行一著色器以將儲存於該微磚記憶體中之該第二數目的該等深度值寫入至該系統記憶體。
  3. 如請求項1之方法,其中寫入該第二數目之該等深度值包含回應於在用以再現該微磚之該影像內容中的至少一部分之繪製調用之後所包括之一繪製調用而寫入該第二數目之該等深度值。
  4. 如請求項1之方法,其進一步包含: 將該第二數目之該等深度值讀取為對該微磚記憶體具有一單個紋理提取之一紋理映射, 其中寫入該第二數目之該等深度值包含基於該等所讀取深度值來寫入該第二數目之該等深度值。
  5. 如請求項1之方法,其進一步包含: 生成用於該微磚之該等像素的顏色值或不透明度值; 儲存用於該微磚之該等像素的一第三數目之該等顏色值或該等不透明度值,其中該第三數目大於該第二數目;及 寫入用於該微磚之該等像素的該第三數目之該等顏色值或該等不透明度值。
  6. 如請求項1之方法,其中該微磚為該訊框之複數個微磚中之一者,該方法進一步包含: 在一裝倉遍次期間,判定哪些基元屬於該複數個微磚中之哪些微磚, 其中生成該等深度值包含在一再現遍次期間生成用於該微磚之該等基元之像素的該等深度值,該等基元在該裝倉遍次期間經判定屬於正針對其生成該等深度值的該微磚。
  7. 如請求項1之方法,其進一步包含: 讀取用於該微磚之該等像素的顏色值及不透明度值; 讀取該微磚之該第二數目的該等深度值;及 基於用於該微磚之該等像素的該等所讀取深度值及該等所讀取顏色值及該等不透明度值而使該微磚之該影像內容扭曲。
  8. 一種用於生成影像內容之器件,該器件包含: 一系統記憶體;及 一圖形處理單元(GPU),其包括一微磚記憶體,該GPU經組態以: 生成用於一訊框之一微磚之像素的深度值; 將用於該等像素之一第一數目的該等深度值儲存於該微磚記憶體中,其中該微磚記憶體經組態以儲存用於該訊框之該微磚的影像內容;及 將儲存於該微磚記憶體中之一第二數目的深度值寫入至該系統記憶體,其中該第二數目小於該第一數目。
  9. 如請求項8之器件,其中為寫入該第二數目之該等深度值,該GPU經組態以執行一著色器以將儲存於該微磚記憶體中之該第二數目的該等深度值寫入至該系統記憶體。
  10. 如請求項8之器件,其中為寫入該第二數目之深度值,該GPU經組態以回應於在用以再現該微磚之該影像內容中的至少一部分之繪製調用之後所包括的一繪製調用而寫入該第二數目之深度值。
  11. 如請求項8之器件,其中該GPU經組態以: 將該第二數目之深度值讀取為對該微磚記憶體具有一單個紋理提取之一紋理映射, 其中寫入該第二數目之深度值包含基於該等所讀取深度值來寫入該第二數目之深度值。
  12. 如請求項8之器件,其中該GPU經組態以: 生成用於該微磚之該等像素的顏色值或不透明度值; 儲存用於該微磚之該等像素的一第三數目之該等顏色值或該等不透明度值,其中該第三數目大於該第二數目;及 寫入用於該微磚之該等像素的該第三數目之該等顏色值或該等不透明度值。
  13. 如請求項8之器件,其中該微磚為該訊框之複數個微磚中之一者,其中該GPU經組態以: 在一裝倉遍次期間,判定哪些基元屬於該複數個微磚中之哪些微磚, 其中為生成該等深度值,該GPU經組態以在一再現遍次期間生成用於該微磚之該等基元之像素的該等深度值,該等基元在該裝倉遍次期間經判定屬於正針對其生成該等深度值的該微磚。
  14. 如請求項8之器件,其中該GPU經組態以: 讀取用於該微磚之該等像素的顏色值及不透明度值; 讀取該微磚之該第二數目的深度值;及 基於用於該微磚之該等像素的該等所讀取深度值及該等所讀取顏色值及該等不透明度值而使該微磚之該影像內容扭曲。
  15. 一種儲存指令之電腦可讀儲存媒體,該等指令在執行時促使一圖形處理單元(GPU): 生成用於一訊框之一微磚之像素的深度值; 將用於該等像素的一第一數目之該等深度值儲存於該GPU內部之一微磚記憶體中,其中該微磚記憶體經組態以儲存用於該訊框之該微磚的影像內容;及 將儲存於該微磚記憶體中之一第二數目之該等深度值寫入至一系統記憶體,其中該第二數目小於該第一數目。
  16. 如請求項15之電腦可讀儲存媒體,其中促使該GPU寫入該第二數目之該等深度值的該等指令包含促使該GPU執行一著色器以將儲存於該微磚記憶體中之該第二數目之該等深度值寫入至該系統記憶體的指令。
  17. 如請求項15之電腦可讀儲存媒體,其中促使該GPU寫入該第二數目之該等深度值的該等指令包含促使該GPU回應於在用以再現用於該微磚之該影像內容中的至少一部分之繪製調用之後所包括之一繪製調用而寫入該第二數目之該等深度值的指令。
  18. 如請求項15之電腦可讀儲存媒體,其進一步包含指令,該等指令促使該GPU: 將該第二數目之該等深度值讀取為對該微磚記憶體具有一單個紋理提取之一紋理映射,且 其中促使該一或多個GPU寫入該第二數目之該等深度值的該等指令包含促使該GPU基於該等所讀取深度值而寫入該第二數目之該等深度值的指令。
  19. 如請求項15之電腦可讀儲存媒體,其進一步包含指令,該等指令促使該GPU: 生成用於該微磚之該等像素的顏色值或不透明度值; 儲存用於該微磚之該等像素的一第三數目之該等顏色值或該等不透明度值,其中該第三數目大於該第二數目;及 寫入用於該微磚之該等像素的該第三數目之該等顏色值或該等不透明度值。
  20. 如請求項15之電腦可讀儲存媒體,其中該微磚為該訊框之複數個微磚中之一者,該儲存媒體進一步包含指令,該等指令促使該GPU: 在一裝倉遍次期間,判定哪些基元屬於該複數個微磚中之哪些微磚, 其中促使該GPU生成該等深度值之該等指令包含促使該GPU在一再現遍次期間生成用於該微磚之該等基元之像素的該等深度值的指令,該等基元在該裝倉遍次期間經判定屬於正針對其生成該等深度值的該微磚。
  21. 如請求項15之電腦可讀儲存媒體,其進一步包含指令,該等指令促使該GPU: 讀取用於該微磚之該等像素的顏色值及不透明度值; 讀取該微磚之該第二數目的該等深度值;及 基於用於該微磚之該等像素的該等所讀取深度值及該等所讀取顏色值及該等不透明度值而使該微磚之該影像內容扭曲。
  22. 一種用於生成影像內容之器件,該器件包含: 一系統記憶體;及 一圖形處理單元(GPU),其包括一微磚記憶體,其中該GPU進一步包含: 用於生成用於一訊框之一微磚之像素的深度值的構件; 用於將用於該等像素的一第一數目之該等深度值儲存於該微磚記憶體中的構件,其中該微磚記憶體經組態以儲存用於該訊框之該微磚的影像內容;及 用於將儲存於該微磚記憶體中之一第二數目之該等深度值寫入至一系統記憶體的構件,其中該第二數目小於該第一數目。
  23. 如請求項22之器件,其中用於寫入該第二數目之該等深度值的該等構件包含用於對該GPU執行一著色器以將儲存於該微磚記憶體中之該第二數目之該等深度值寫入至該系統記憶體的構件。
  24. 如請求項22之器件,其中用於寫入該第二數目之該等深度值的該等構件包含用於回應於在用以再現用於該微磚之該影像內容中的至少一部分之繪製調用之後所包括的一繪製調用而寫入該第二數目之該等深度值的構件。
  25. 如請求項22之器件,其進一步包含: 用於將該第二數目之該等深度值讀取為對該微磚記憶體具有一單個紋理提取之一紋理映射的構件, 其中用於寫入該第二數目之該等深度值的該等構件包含用於基於該等所讀取深度值來寫入該第二數目之該等深度值的構件。
  26. 如請求項22之器件,其進一步包含: 用於生成用於該微磚之該等像素之顏色值或不透明度值的構件; 用於儲存用於該微磚之該等像素的一第三數目之該等顏色值或該等不透明度值的構件,其中該第三數目大於該第二數目;及 用於寫入用於該微磚之該等像素的該第三數目之該等顏色值或該等不透明度值的構件。
  27. 如請求項22之器件,其中該微磚為該訊框之複數個微磚中之一者,該器件進一步包含: 用於在一裝倉遍次期間判定哪些基元屬於該複數個微磚中之哪些微磚的構件, 其中用於生成該等深度值之該等構件包含用於在一再現遍次期間生成用於該微磚之該等基元之像素的該等深度值的構件,該等基元在該裝倉遍次期間經判定屬於正針對其生成該等深度值的該微磚。
  28. 如請求項22之器件,其進一步包含: 用於讀取用於該微磚之該等像素之顏色值及不透明度值的構件; 用於讀取該微磚之該第二數目之該等深度值的構件;及 用於基於用於該微磚之該等像素的該等所讀取深度值及該等所讀取顏色值及該等不透明度值而使該微磚之該影像內容扭曲的構件。
TW107142952A 2017-12-05 2018-11-30 關於以微磚為基礎之低解析度深度儲存之方法、器件與非暫時性電腦可讀儲存媒體 TWI786233B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/832,118 2017-12-05
US15/832,118 US10580151B2 (en) 2017-12-05 2017-12-05 Tile-based low-resolution depth storage

Publications (2)

Publication Number Publication Date
TW201926239A true TW201926239A (zh) 2019-07-01
TWI786233B TWI786233B (zh) 2022-12-11

Family

ID=64665415

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107142952A TWI786233B (zh) 2017-12-05 2018-11-30 關於以微磚為基礎之低解析度深度儲存之方法、器件與非暫時性電腦可讀儲存媒體

Country Status (5)

Country Link
US (1) US10580151B2 (zh)
EP (1) EP3721416A1 (zh)
CN (1) CN111406277B (zh)
TW (1) TWI786233B (zh)
WO (1) WO2019112859A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI778780B (zh) * 2020-10-06 2022-09-21 美商高通公司 用於圖形處理的方法、裝置以及計算設備

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11222397B2 (en) 2016-12-23 2022-01-11 Qualcomm Incorporated Foveated rendering in tiled architectures
US10885607B2 (en) * 2017-06-01 2021-01-05 Qualcomm Incorporated Storage for foveated rendering
US10818067B1 (en) * 2019-05-31 2020-10-27 Texas Instruments Incorporated GPU assist using DSP pre-processor system and method
US11893654B2 (en) * 2021-07-12 2024-02-06 Qualcomm Incorporated Optimization of depth and shadow pass rendering in tile based architectures

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484208B1 (en) 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
JP4327180B2 (ja) * 2006-07-24 2009-09-09 株式会社東芝 表示装置
GB2449398B (en) * 2006-09-29 2009-02-11 Imagination Tech Ltd Improvements in memory management for systems for generating 3-dimensional computer images
US8174534B2 (en) * 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods
US8493404B2 (en) * 2010-08-24 2013-07-23 Qualcomm Incorporated Pixel rendering on display
US8982136B2 (en) * 2011-05-16 2015-03-17 Qualcomm Incorporated Rendering mode selection in graphics processing units
US9183664B2 (en) 2012-05-03 2015-11-10 Apple Inc. Tiled forward shading with improved depth filtering
KR102109130B1 (ko) 2013-08-12 2020-05-08 삼성전자주식회사 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들
US9299181B2 (en) * 2013-08-28 2016-03-29 Qualcomm Incorporated Target independent stenciling in graphics processing
US9552633B2 (en) * 2014-03-07 2017-01-24 Qualcomm Incorporated Depth aware enhancement for stereo video
US9652882B2 (en) * 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
GB2524121B (en) * 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
US9978171B2 (en) * 2014-07-29 2018-05-22 Nvidia Corporation Control of a sample mask from a fragment shader program
US9489710B2 (en) * 2015-02-10 2016-11-08 Qualcomm Incorporated Hybrid rendering in graphics processing
US10341632B2 (en) 2015-04-15 2019-07-02 Google Llc. Spatial random access enabled video system with a three-dimensional viewing volume
US10621690B2 (en) 2015-09-17 2020-04-14 Qualcomm Incorporated Storing bandwidth-compressed graphics data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI778780B (zh) * 2020-10-06 2022-09-21 美商高通公司 用於圖形處理的方法、裝置以及計算設備

Also Published As

Publication number Publication date
CN111406277B (zh) 2022-06-14
US10580151B2 (en) 2020-03-03
WO2019112859A1 (en) 2019-06-13
US20190172213A1 (en) 2019-06-06
CN111406277A (zh) 2020-07-10
TWI786233B (zh) 2022-12-11
EP3721416A1 (en) 2020-10-14

Similar Documents

Publication Publication Date Title
US10885607B2 (en) Storage for foveated rendering
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
TWI786233B (zh) 關於以微磚為基礎之低解析度深度儲存之方法、器件與非暫時性電腦可讀儲存媒體
EP3108452B1 (en) Shader pipeline with shared data channels
JP5166552B2 (ja) グラフィックス処理システムにおけるオフスクリーンサーフェスのためのマルチバッファサポート
US10621690B2 (en) Storing bandwidth-compressed graphics data
CN109564694B (zh) 用于基于入库的图形处理的顶点着色器
CN108027956B (zh) 后期深度测试与保守深度测试之间的动态切换
US10078883B2 (en) Writing graphics data from local memory to system memory
US9646359B2 (en) Indefinite texture filter size for graphics processing
US10416808B2 (en) Input event based dynamic panel mode switch
CN110892383A (zh) 增量常量负载的延迟批处理