TW202101368A - 對在圖形管線中所渲染的基元的元素的一或多種屬性進行內插的方法、圖形管線級及圖形處理單元 - Google Patents
對在圖形管線中所渲染的基元的元素的一或多種屬性進行內插的方法、圖形管線級及圖形處理單元 Download PDFInfo
- Publication number
- TW202101368A TW202101368A TW109116385A TW109116385A TW202101368A TW 202101368 A TW202101368 A TW 202101368A TW 109116385 A TW109116385 A TW 109116385A TW 109116385 A TW109116385 A TW 109116385A TW 202101368 A TW202101368 A TW 202101368A
- Authority
- TW
- Taiwan
- Prior art keywords
- primitive
- interpolation
- attribute
- value
- constant
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000012545 processing Methods 0.000 title claims description 31
- 238000009877 rendering Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 description 35
- 238000005457 optimization Methods 0.000 description 25
- 238000003860 storage Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 18
- 239000000872 buffer Substances 0.000 description 14
- 238000004590 computer program Methods 0.000 description 13
- 238000012937 correction Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 230000005484 gravity Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 208000019300 CLIPPERS Diseases 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 208000021930 chronic lymphocytic inflammation with pontine perivascular enhancement responsive to steroids Diseases 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/10—Geometric effects
- G06T15/20—Perspective computation
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
-
- 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
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
當GPU硬體已被程式化或設置為實行線性透視內插時,圖形管線可藉由以下方式減少將倒數、乘法或加法計算用於內插計算的次數:當已在著色器程式中指定線性透視內插技術時,判斷基元的每一頂點的齊次座標是否在1的預定臨限值內,且基於基元的每一頂點的齊次座標在1的預定臨限值內,使用線性內插技術來確定元素的一或多種屬性。
Description
本文中所揭露的標的是有關於圖形處理單元(graphics processing unit,GPU)。更具體而言,本文中所揭露的標的是有關於當GPU硬體已被程式化為實行線性透視內插時,可減少將倒數、乘法及/或加法計算用於內插計算的次數的系統及方法。
畫素/片段著色器程式通常處理稱為「屬性」的多個輸入資料元素。通常,為單一樣本執行的每一著色器程式執行緒可處理十六或更多種不同的屬性,儘管亦可處理更少的屬性。屬性可藉由內插計算來處理。一般而言,每一元素可獨立於其他元素。
對於大部分應用程式化介面(Application Programming Interface,API),畫素/片段著色器資料的內插可使用三種內插模式(平坦內插模式、線性內插模式或線性透視內插模式)中的一者。對於欲使用的平坦內插模式,給定基元的所有樣本的所有值相同。對於欲使用的線性內插模式,以如同給定基元的所有樣本的所有值位於一個平坦平面上一樣的方式計算所述值。對於欲使用的線性透視內插模式,以平面方式且應用透視校正(稱為「透視翹曲(perspective warping)」)計算給定基元的所有樣本的所有值。計算成本最大的內插模式是線性透視內插,且透視校正的計算不是線性的。
在圖形管線中,影像內的位置資訊可使用四個座標((影像中的水平位置)、(影像中的垂直位置)、(影像中距眼睛的深度或距離)及(齊次座標))來表示。齊次座標可用於實行透視校正內插。影像中的基元的每一頂點具有一個位置以及與所述頂點相關聯的其他屬性的零或多個值。
一種常用的API不為應用程式設計師提供線性內插模式選項。為提供線性內插,設計師選擇線性透視模式,並將基元的所有頂點的座標的值設置為等於1.0。這樣做會提供線性內插,但亦會使用與線性透視內插相關聯的全部計算成本。完全線性透視內插的最大單一成本可能是的內插、隨後使用倒數過程根據計算、然後將與線性內插結果相乘。
典型的GPU可具有為內插且具體而言為倒數計算而提供的有限區域。因此,內插的倒數、乘法或除法計算可能會造成效能瓶頸。
示例性實施例提供一種內插在圖形管線中所渲染的基元的元素的一或多種屬性的方法,其中所述方法可包括:基於已針對渲染所述基元指定線性透視內插技術,確定所述元素的齊次座標在1的預定臨限值內;基於所述元素的所述齊次座標在1的預定臨限值內,使用線性內插技術來內插所述元素的所述屬性;以及基於所述元素的所述齊次座標在1的所述預定臨限值之外,使用線性透視內插技術來內插所述元素的所述屬性。在一個實施例中,判斷所述基元的所述齊次座標是否在1的所述預定臨限值內可更包括判斷所述基元的每一頂點的所述齊次座標是否等於1。在另一實施例中,元素的所述屬性可進一步與所述基元的頂點相關聯。在又一實施例中,所述基元可為三角形或線。
示例性實施例提供一種圖形管線級,所述圖形管線級可包括輸入、比較器以及內插器。所述輸入可接收基元的一或多種屬性。所述比較器可將所述基元的所述屬性的齊次座標的值與1進行比較,以基於已針對渲染所述基元指定線性透視內插技術,判斷所述齊次座標的所述值是否在1的預定臨限值內。所述內插器可基於所述齊次座標的所述值被確定為在1的所述預定臨限值內,使用線性內插技術來內插所述基元的所述屬性,且可基於所述齊次座標的所述值被確定為在1的所述預定臨限值之外,使用所述線性透視內插技術來內插所述基元的所述屬性。在一個實施例中,所述比較器可基於已針對渲染所述基元指定線性透視內插技術,進一步判斷基元的齊次座標的所述值是否是不等於1的常數,且所述內插器可進一步基於所述齊次座標的所述值被確定為不等於1的常數,使用所述線性內插技術來內插所述基元的所述屬性,且基於所述齊次座標的所述值不是不等於1的常數,使用所述線性透視內插技術來內插所述基元的所述屬性。在另一實施例中,所述比較器可進一步判斷所述基元的屬性的平面方程式的係數是否恆定,且所述內插器可進一步基於所述平面方程式的所述係數被確定為不恆定,內插所述基元的所述屬性,且可基於所述平面方程式的所述係數被確定為恆定,省略對所述基元的所述屬性的內插。
示例性實施例提供一種圖形處理單元,所述圖形處理單元可包括圖形管線級以及著色器單元。所述圖形管線級可包括輸入、比較器以及內插器。所述輸入可接收基元的一或多種屬性。所述比較器可基於已針對渲染所述基元指定線性透視內插技術,判斷基元的齊次座標的值是否是不等於1的常數。所述內插器可基於所述齊次座標的所述值被確定為不等於1的常數,使用線性內插技術來內插所述基元的所述屬性,且可基於所述齊次座標的所述值不是不等於1的常數,使用所述線性透視內插技術來內插所述基元的所述屬性。所述著色器可接收所述內插器的輸出並可渲染所述基元。在一個實施例中,所述比較器可進一步將所述基元的所述屬性的所述齊次座標的所述值與1進行比較,以基於已針對渲染所述基元指定線性透視內插技術,判斷所述齊次座標的所述值是否在1的預定臨限值內,且所述內插器可進一步基於所述齊次座標的所述值被確定為在1的所述預定臨限值內,使用所述線性內插技術來內插所述基元的所述屬性,且可基於所述齊次座標的所述值被確定為在1的所述預定臨限值之外,使用所述線性透視內插技術來內插所述基元的所述屬性。在另一實施例中,所述比較器可進一步判斷所述基元的屬性的平面方程式的係數是否恆定,且所述內插器可進一步基於所述平面方程式的所述係數被確定為不恆定,內插所述基元的所述屬性,且可基於所述平面方程式的所述係數被確定為恆定,省略對所述基元的所述屬性的內插。
在以下詳細說明中,闡述眾多具體細節來提供對本揭露的透徹理解。然而,熟習此項技術者應理解,無需該些具體細節亦可實踐所揭露的各個態樣。在其他情形中,未詳細闡述眾所習知的方法、程序、組件及電路,以免使本文中所揭露的標的模糊不清。
本說明書通篇中所提及的「一個實施例(one embodiment)」或「實施例(an embodiment)」意指結合所述實施例所闡述的特定特徵、結構或特性可包含於本文中所揭露的至少一個實施例中。因此,在本說明書通篇中各處出現的片語「在一個實施例中(in one embodiment)」或「在實施例中(in an embodiment)」或者「根據一個實施例(according to one embodiment)」(或具有相似含義的其他片語)可能未必均指同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可採用任何適合的方式進行組合。就此而言,本文中所使用的詞「示例性(exemplary)」意指「用作例子、實例或例示」。本文被闡述為「示例性」的任何實施例不應被視為與其他實施例相較必定是較佳的或有利的。另外,在一或多個實施例中,特定特徵、結構或特性可以任何合適的方式加以組合。此外,根據本文中的論述的上下文而定,單數用語可包括對應的複數形式且複數用語可包括對應的單數形式。相似地,帶連字符的用語(例如,「二維(two-dimensional)」、「預定(pre-determined)」、「畫素專有(pixel-specific)」等)偶爾可與對應的未帶連字符的版本(例如,「二維(two dimensional)」、「預定(predetermined)」、「畫素專有(pixel specific)」等)可互換地使用,且大寫詞條(例如,「計數器時脈(Counter Clock)」、「列選擇(Row Select)」、「PIXOUT」等)可與對應的非大寫版本(例如,「計數器時脈(counter clock)」、「列選擇(row select)」、「pixout」等)可互換地使用。此種偶爾的可互換使用不應被視為彼此不一致。
更應注意,本文中所示及所論述的各個圖(包括組件圖)僅是出於例示目的,而並非按比例繪製。相似地,示出各種波形及時序圖僅是用於例示目的。舉例而言,為清晰起見,可相對於其他元件誇大元件中的一些元件的尺寸。此外,在適當情況下,在各個圖中重複使用參考編號來指示對應的元件及/或類似元件。
本文中所使用的術語僅是用於闡述一些示例性實施例的目的,而非旨在限制所主張的標的。除非上下文另外清楚地指明,否則本文中所使用的單數形式「一(a、an)」及「所述(the)」旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。
本文中所使用的用語「第一(first)」、「第二(second)」等被用作位於所述用語後面的名詞的標籤,且除非明確定義,否則所述用語並不暗示任何類型的次序(例如,空間、時間、邏輯等)。此外,在二或更多個圖中可使用相同的參考編號來指代具有相同或相似的功能性的部件、組件、區塊、電路、單元或模組。然而,此種用法僅是為了使例示簡潔且易於論述起見;所述用法並不暗示此類組件或單元的構造細節或架構細節在所有實施例中是相同的或者此類通常提及的部件/模組是實施本文中所揭露示例性實施例中的一些的唯一方式。
除非另外定義,否則本文中所使用的所有用語(包括技術及科學用語)的含義均與本標的所屬技術中具有通常知識者所通常理解的含義相同。更應理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非在本文中明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
本文中所使用的用語「模組」是指被配置成結合模組提供本文中所述功能性的軟體、韌體及/或硬體的任何組合。軟體可被實施為軟體封包、碼及/或指令集或指令,且在本文中所述任何實施方案中所使用的用語「硬體」可例如以單獨形式或以任何組合的形式包括硬佈線電路系統、可程式化電路系統、狀態機電路系統及/或儲存由可程式化電路系統執行的指令的韌體。各模組可共同地或各別地實施為形成較大系統(例如但不限於積體電路(integrated circuit,IC)、系統晶片(system on-chip,SoC)等等)一部分的電路系統。本文中所揭露的各種組件及/或功能區塊可被實施為可包括軟體、韌體及/或硬體的模組,所述軟體、韌體及/或硬體結合所述各種組件及/或功能區塊來提供本文中所述的功能性。
本文中所揭露的標的提供一種平坦最佳化,當GPU硬體可能已被程式化為實行線性透視內插時,所述平坦最佳化可減少將倒數、乘法及/或加法計算用於內插計算的次數。可檢測當已藉由API指定線性透視內插時可使用線性內插的條件,且可修改計算以便使用線性計算。判斷是否可使用本文中所揭露的最佳化的一種方法是判斷基元的頂點的值是否皆等於1.0。判斷是否可使用本文中所揭露的最佳化的另一方式是判斷根據對應於的基元的頂點計算的平面方程式(plane-equation,Peqn)係數或重心因子是否等於1.0。應用本文中所揭露的最佳化可節省GPU內的面積及/或可提高圖形管線的效能。亦可節省能源,且可進一步最佳化功率、效能及面積(Power, Performance and Area,PPA)。
本文中所揭露的標的可在圖形管線中的幾個位置中的一者中實施。在一個示例性實施例中,最佳化可在實際實行大部分內插計算的最終內插階段處實施。
兩種演算法主要用於內插資料:平面方程式內插演算法及重心內插演算法。所述兩種演算法通常包括相似的計算,且產生相同的結果。以下論述著重於平面方程式內插;然而,相同的原理亦適用於重心內插。考量自人的眼睛觀察的三維(3D)空間中的圖1A中的示例性物體100。此種圖被稱為觀視範圍101,如圖1A中所繪示。舉例而言,若物體100在3D空間中遠離觀察者(或朝向觀察者)傾斜,則物體100的自眼睛視點觀察的形狀改變,物體的位置處的影像資料亦改變。當物體100被投影至二維(2D)螢幕102上時(例如圖1B中所繪示),表示物體100的資料必須以考量被稱為透視翹曲的3D傾斜的方式來計算。所述資料應以透視校正的方式計算。
圖2A繪示在觀察者的觀視範圍(未示出)內遠離觀察者傾斜的平面物體200的立體圖。如圖2B中所繪示,若平面物體200垂直於觀察者的眼點(eye point),則物體200的例如表面201處的資料可在其表面上線性(平面)內插。
根據本文中所揭露的標的,線性內插可用於線性內插及線性透視內插二者的內插計算。首先將闡述線性內插,然後闡述可對線性內插作出的用於實行線性透視內插的修改。
方程式(1)闡述可用於線性內插的平面方程式。可根據方程式(1)中的所述三個平面方程式係數計算的值。,(1)
其中係數是屬性在維度中的梯度。係數是屬性在維度中的梯度,且係數是屬性在(x, y) = (0, 0)處的值。
若係數在(0, 0)處的值並非好數字(例如無窮大或IEEE浮點「非數字(Not a Number,NaN)」),或者在內插硬體的動態範圍之外,則可修改方程式(1),以確保提供正確的結果。種子位置(seed location)通常被選擇為處於基元(例如頂點中的一者)內部。方程式(1)可如方程式(2)中所示進行修改。對於經修改的方程式(2),係數是屬性在種子位置處的值。,(2)
其中是種子位置的座標,且是種子位置的y座標。
線性透視內插演算法可藉由以下方式改變方程式(1)及(2)的線性內插:修改用於計算平面方程式係數的屬性值,以及在評估平面方程式之後應用校正。舉例而言,以下過程或步驟可用於修改線性內插方程式(1)及(2)。
首先,在計算平面方程式係數之前,可藉由將頂點屬性值除以每一頂點處的座標來修改頂點屬性值,此被稱為內插校正前計算(pre-interpolation correction computation)。作為第二步驟,可線性內插(是平面的),且可在每一內插位置處實行倒數計算。作為第三步驟,可藉由內插後校正計算(post-interpolation correction computation)在樣本點(sample point)處乘以來修改每一樣本點處的內插結果。
在第二步驟期間,可在每一頂點處計算的倒數(即,)。欲利用透視校正進行內插的頂點處的屬性值可乘以,從而得到頂點處的值,且平面方程式是根據該些值而不是原始頂點值來計算。因此,實際上可使用線性內插進行內插。可能不是平面的,且實際上是藉由線性內插來計算,如上所述,是平面的。通常可根據頂點處的深度值(值)來計算。
光柵化(Rasterization)在正在渲染(即,產生)的影像中產生樣本位置(sample location)。基於基元頂點的位置,樣本位置在基元的邊界內。在基元的光柵化期間,可產生較基元的頂點數目多得多的樣本位置。另外,對應於每一樣本位置的屬性被內插。舉例而言,可被定義為具有三個頂點的三角形的基元可覆蓋自所述基元產生的10、50、1000或更多個樣本位置(通常稱為畫素)。
可選地,可最佳化以上所述的修改線性內插以實行線性透視內插(即,修改方程式(1)及(2))的第一步驟,儘管益處可能僅為藉由在修改線性內插的第二步驟處進行最佳化所提供的益處的約5%。益處的不同可基於與第二步驟一起發生的光柵化所導致的擴展。因此,最佳化修改線性內插的第一步驟的成本/益處可能受到限制,且在第一步驟期間應用最佳化可能不會影響在第二步驟期間應用最佳化。第一步驟的最佳化可被視為可選的附加原因是,若第一步驟在計算平面方程式係數之前在屬性前乘以且若= 1.0,則= 1.0。在屬性預乘以1.0不會改變平面方程式係數。然而,第一步驟可被最佳化,在此種情形中,可對每一基元的每一頂點實行一次最佳化。修改的第二步驟的最佳化可提供最大的益處。修改的第二步驟處的最佳化可對每一基元重複實行。
根據本文中所揭露的標的,容許最佳化及最佳化的實施的條件的檢測可在圖形管線中的不同位置處實行,且可以硬體、軟體或者硬體與軟體的組合來實施。舉例而言,檢測及實施可在圖形管線中相對較早的級處(例如裁切、剔除及視埠(clip, cull and viewport,CCV)級或單元處或者基元設置(primitive setup,SU)級或單元處)實行。條件檢測及實施亦可在實行最終內插及校正後計算的內插管線級或單元處實行。利用本文中所揭露的最佳化的任何潛在益處的大部分可在內插管線級中。
若在計算平面方程式係數(或重心因子)的設置計算之前(即,在圖形管線中相對較早)檢測到最佳化條件,則可測試頂點的值,以判斷基元的頂點的值是否正好為1.0。作為另一選擇,基元的頂點的值可被確定為在1.0的預定臨限值內,例如1.0 ± 0.001。若基元的所有頂點的值等於1.0(或者在1.0的預定臨限值內),則不需要線性透視內插計算,且可應用本文中所揭露的最佳化。
若在已計算平面方程式係數之後(即,在圖形管線中相對較晚)檢測到最佳化條件,則可測試平面方程式係數(或重心因子),以判斷屬性的值是否正好為1.0。即,平面方程式的係數及被確定為0.0(或在預定臨限值內),且可測試係數以判斷其是否正好為1.0(或在預定臨限值內)。在一個實施例中,係數及的預定臨限值可± 0.001,且係數的預定臨限值可± 0.001。
圖形管線架構中的多個級可受益於本文中所揭露的最佳化。舉例而言,CCV單元可受益於減少的線性透視內插計算工作以及對應的功率降低。SU單元可受益於減少的計算工作以及對應的功率降低。IPA單元可減少計算工作(降低功率、提高效能)。
圖3繪示根據本文中所揭露的標的,可包含平坦最佳化的示例性圖形處理單元(GPU)300的內插管線部分的方塊圖。圖3中所繪示的GPU 300的示例性實施例的所述部分可包括處理元件(processing element,PE)四元組301及硬體內插器(hardware interpolator,HWInterp)單元310。PE四元組301可包括一或多個PE 302a、302b、302c及302d、一或多個負載儲存單元(load-store unit,LSU)303a及303b以及一或多個翹曲定序器(WARP sequence,WSQ)304。硬體內插器(HWInterp)單元310可包括著色器處理控制器(shader processing controller,SPC)311、一或多個光柵及Z單元(RASTZ)312、一或多個內插單元(IPA)313a-313b以及一或多個內插設置(interpolation setup,ISetup)單元314。著色器處理控制器311可包括一或多個畫素著色器構造器(pixel shader constructor,PSC)315以及一或多個翹曲排程器(WARP scheduler,WS)316。應理解,形成圖3中所繪示的內插管線的部分的各種組件可為模組,其可為被配置成提供本文中結合組件或模組闡述的功能性的軟體、韌體及/或硬體的任意組合。
一般而言,內插操作的控制流可如下。在一個實施例中,RASTZ 312向SPC 311的PSC 315發送畫素四元組,所述畫素四元組具有例如X, Y座標、畫素或樣本遮罩、基元標識符(identity,ID)、基元及繪製結束資訊等資訊。在一個例子中,PSC 315構造可例如包含八個四元組的畫素著色器(pixel shader,PS)翹曲,且向WS 316作出請求。WS 316可分配翹曲ID且為PS翹曲提供其他控制資訊,並將所述分配傳遞回PSC 315。WS 316亦可通知PE四元組301中的WSQ 304準備執行翹曲。PSC 315可將畫素四元組的翹曲ID、X, Y座標、遮罩及基元資訊傳遞至例如IPA 313a或IPA 313b。IPA 313a(或IPA 313b)基於例如屬性遮罩以及狀態暫存器403(圖4)中的內插模式開始內插。IPA 313a實行所述內插。
在一個實施例中,IPA 313a可藉由負載儲存單元(LSU,303(303a或303b))向PE四元組301的處理元件(PE,302(302a、302b、302c或302d))中的向量暫存器檔案(register file,RF)發送內插結果。LSU 303在將翹曲的最末屬性資料寫入向量RF之後通知WSQ 304,以使WSQ 304可更新翹曲的狀態,並使翹曲為著色器執行做好準備。在一個實施例中,當IPA 313a完成基元的內插時,IPA 313a將基元完成訊號傳遞至PSC 315。當PSC 315自IPA 313a及313b中的一或兩者接收到基元的基元完成訊號時,PSC 315向SU314返回最終的基元完成訊號。ISetup單元314亦可包括平面方程式表(plane equation table,PET)317,其將屬性平面方程式及三角形種子位置提供至IPA內的共享區塊內插器及倒數單元(shared block interpolator and reciprocal unit,SBR)。平面方程式可由ISetup單元314產生並儲存於PET 317中。在與基元相關聯的所有內插完成之後,可釋放平面方程式。
圖4繪示根據本文中所揭露的標的,可被配置成包含平坦最佳化的IPA 313的示例性實施例的方塊圖。在一個實施例中,IPA 313可包括用於PSC 315、ISetup單元314、GPSN及GPSW的介面,所述介面分別是用於控制資料及由例如著色器程式進行內插的請求的互連匯流排。在一個實施例中,IPA 313可包括一或多個區塊內插器401a-401b、一或多個四元組畫素內插器402a-402b、狀態暫存器403、請求緩衝器404、排程器405、位置屬性管理器406、緩衝器407、透視校正乘法器(perspective correction multiplier,PCM)408、共享區塊及倒數單元(RCP前端)409以及輸出緩衝器410。形成IPA 313的其他數目的模組亦是可能的。應理解,形成圖4中所繪示的IPA 313的示例性實施例的各種組件可為模組,其可為被配置成提供本文中結合組件或模組闡述的功能性的軟體、韌體及/或硬體的任意組合。
在一個實施例中,請求緩衝器404可儲存來自圖3中的PE 302的請求,所述請求可包含與著色器翹曲的每一畫素的內插精度、透視除法賦能旗標(perspective division enable flag)、內插位置、開始屬性槽號及組件遮罩(start attribute slot number and component mask)、有效線道遮罩(valid lane mask)、可程式化畫素偏移及樣本索引(programmable pixel offset and sample index)以及請求同步旗標(request synchronization flag)相關的資訊。內插可分割成兩個步驟(8×8區塊內插以及畫素內插)。對於相同的8×8區塊內的畫素,區塊結果可被重複使用,從而容許區塊內插器401用於倒數計算。區塊內插器401可接收輸入畫素四元組所位於的8×8區塊的屬性平面方程式、三角形種子位置及X, Y座標,且可實行區塊內插。區塊內插的結果可被轉送至四元組畫素內插器402,並用作四元組畫素內插的基礎。區塊內插器401亦可實行對透視校正中所使用的值的倒數計算。
在一個實施例中,IPA 313可處置每一畫素或子樣本處的變化的屬性內插以及畫素著色器輸入的畫素螢幕座標的合併。變化的屬性內插可以兩個階段實行,第一階段可為使用區塊內插器401中的一或多者在8×8畫素區塊的中心處進行的區塊級基礎內插(block level base interpolation),且第二階段可為使用所述一或多個四元組畫素內插器402中的一或多者在8×8畫素區塊內進行的畫素級內插(pixel level interpolation)。一旦IPA 313接收到例如2×2畫素四元組的XY螢幕座標,且在輸出緩衝器410中存在可用空間,IPA 313便可開始處理畫素區塊。
若基元在8×8畫素區塊中覆蓋多於一個2×2四元組,則IPA 313可實行最佳化以重複使用現有的8×8內插結果,而無需重新計算所述結果以及避免任何不必要的平面方程式讀取,此可減少資源消耗(例如,處理能力、物理硬體面積等)。PAM 406可接收PSC 315的畫素四元組資訊,且可將四元組位置、畫素及樣本遮罩以及基元ID打包至翹曲資料結構中。PAM 406可進一步自ISetup單元314中的PET 317請求屬性平面方程式及三角形種子位置,並將所述資訊傳遞至區塊內插器單元401以實行內插。
四元組畫素內插器402可基於屬性平面方程式、8×8區塊內插結果及8×8區塊內的畫素的X, Y偏移來實行四元組畫素內插。在一個例子中,緩衝器407可儲存來自四元組畫素內插器402的內插的值以及來自區塊內插器401的倒數,且可向區塊內插器401發送內插的W值以用於倒數計算,且向PCM 408發送倒數以用於最終乘法。
排程器405可基於每一翹曲來排程內插請求,且亦可對區塊內插器401及四元組畫素內插器402的請求進行排序,以進行區塊、畫素內插及倒數計算。PCM 408可在所選擇的內插位置處實行將倒數與每一內插的屬性值相乘。輸出緩衝器410可在透視校正之後收集內插結果的最終輸出。輸出緩衝器410可補償內插管線的潛時(latency),且可有助於使到互連匯流排的輸出業務量(output traffic)平滑。
圖4至圖6繪示根據本文中所揭露的標的,在本文中所揭露的示例性圖形管線中可高效地檢測齊次係數是否等於或接近等於1.0的示例性位置。判斷是否等於或接近等於1.0在概念上可被視為測試各別頂點或測試各別基元的頂點。判斷是否等於或接近等於1.0可在硬體中藉由例如一或多個比較器、在軟體中、在韌體中或在硬體、軟體及/或韌體的組合中實行。另外,判斷是否等於或接近等於1.0的結果可順沿圖形管線傳遞以供在稍後的級處使用。
當就是否等於或接近等於1.0測試各別頂點時,圖形管線中的高效位置可在裁切-剔除-視埠(CCV)單元的輸入處及/或在ISetup單元314的輸入處。當測試各別基元的頂點時,圖形管線中的高效位置可在圖形管線中的IPA單元313中的位置屬性管理器模組406的輸入處。作為另一選擇,可使用測試各別頂點及測試各別基元的頂點二者來實施對應用本文中所揭露的最佳化的條件的檢測。本文中所揭露的最佳化所提供的計算節省可自CCV單元至ISetup單元314增加,且再次在IPA 313處增加。
可在圖4中所繪示的示例性IPA單元313的位置屬性管理器模組406的輸入(在411處指示)處逐個基元地判斷是否等於或接近等於1.0。另外,在偏移C等於或接近等於1的同時,可判斷及Y梯度是否等於或接近等於0。判斷在IPA單元313內是否等於或接近等於1.0可容許每一畫素地或每一樣本地跳過在每一畫素或樣本位置處線性內插並計算為的操作。另外,亦可跳過輸出屬性校正(即,)。操作的確定及跳過可應用於所有拼貼渲染遍次(tile rendering pass)。
圖5繪示方塊圖,其示出根據本文中所揭露的標的,CCV單元500的輸入處可高效地檢測齊次係數是否等於或接近等於1.0的示例性位置。CCV單元500可包括頂點管線模組501、命令處理器模組502、基元處理器模組503、裁切器模組(clipper module)504及輸出控制模組505。形成CCV單元500的相應模組組件可實施為被配置成提供本文中結合CCV單元500闡述的功能性的軟體、韌體及/或硬體的任意組合。應理解,CCV單元500可包括圖5中未示出的附加組件、模組及/或功能區塊。
頂點管線模組501可接收輸入資料,且命令處理器模組502可自串流輸出(stream-out,SO)單元506接收命令。頂點管線模組501的輸出可被輸入至基元處理器模組503。命令處理器模組502可基於自SO單元506接收的命令來控制頂點管線模組501及基元處理器模組503。基元處理器模組503亦可由裁切器模組504控制。基元處理器模組503的輸出可被輸入至輸出控制模組505。輸出控制模組505可將經處理的基元輸出至ISetup單元314及分級(binning,BIN)單元507。
可在CCV單元500的輸入處針對各別頂點判斷是否等於或接近等於1.0。更具體而言,可在頂點管線模組501的輸入(如508處所示)處判斷是否等於或接近等於1.0。判斷是否等於或接近等於1.0可在硬體中藉由例如一或多個比較器、在軟體中、在韌體中或在硬體、軟體及/或韌體的組合中實行。
在CCV單元500的輸入處判斷是否等於或接近等於1.0可容許跳過計算等於或接近等於1.0的每一頂點的屬性的操作。另外,可跳過涉及例如、及等正規化裝置座標(normalized device coordinate,NDC)位置計算的操作。操作的確定及跳過可應用於所有處理遍次,包括分級及所有拼貼渲染遍次。
圖6繪示方塊圖,其示出根據本文中所揭露的標的,ISetup單元314內可高效地檢測齊次係數是否等於或接近等於1.0的示例性位置。ISetup單元314可包括CCV位置輸入介面模組601、CCV屬性輸入介面模組602、位置輸入及緩沖模組603、光柵化設置模組604、屬性輸入及佇列模組605、平面方程式(Peqn)設置模組606、光柵輸出介面模組607以及平面方程式表317(圖3)。形成ISetup單元314的相應模組組件可實施為被配置成提供本文中結合ISetup單元314闡述的功能性的軟體、韌體及/或硬體的任意組合。應理解,SU單元314可包括圖6中未示出的附加組件、模組及/或功能區塊。
可在位置輸入及緩沖模組603的輸入(在608處指示)處及/或屬性輸入及佇列模組605的輸入(在609處指示)處針對各別頂點判斷是否等於或接近等於1.0。判斷是否等於或接近等於1.0可在硬體中藉由例如一或多個比較器、在軟體中、在韌體中或在硬體、軟體及/或韌體的組合中實行。在ISetup單元314內判斷是否等於或接近等於1.0可容許跳過計算等於或接近等於1.0的每一頂點的屬性的操作。具體而言,可被容許跳過的操作可包括對於未裁切的基元或在peqn設置606處裁切的基元,在屬性輸入及佇列605處以透視方式在頂點屬性預乘以(即,)。對於,無需創建平面方程式並將其儲存於平面方程式表317中。操作的確定及跳過可應用於所有拼貼渲染遍次。
圖7繪示根據本文中所揭露的標的,若已在例如著色器程式中指定線性透視內插技術,則內插與在圖形管線中渲染的基元相關聯的元素的一或多種屬性的方法700的流程圖。應理解,可針對內插與以不同於著色器程式的方式渲染的基元相關聯的元素的屬性指定線性透視內插技術。所述過程開始於701處,可能自圖8中的810而來。在702處,判斷是否已針對內插基元的元素的屬性指定線性透視內插技術。若已針對內插基元的元素的屬性指定線性透視內插技術,則流程繼續至703,否則流程繼續至704,在此如針對屬性所指定的那般實行內插。流程繼續至707,在此方法700結束。
在703處,判斷基元狀態= 1是否設定。若基元狀態= 1設定,則流程繼續至705,在此可使用線性內插技術來確定與基元相關聯的元素的一或多種屬性。流程繼續至707,在此,舉例而言,著色器程式繼續執行。若在703處基元狀態= 1未設定,則流程繼續至706,在此可使用線性透視內插技術來確定與基元相關聯的元素的一或多種屬性。流程繼續至707,在此著色器程式繼續執行。
圖8繪示根據本文中所揭露的標的,可使用的在判斷齊次係數是否等於或接近等於1.0的過程之後的最佳化的示例性實施例的流程圖800。所述過程開始於801處。在802處,自SU314接收平面方程式。可接收基元的或者基元的屬性的平面方程式。通過IPA 313的計算資料路徑被共享用於內插及常規屬性內插。在803處,判斷平面方程式是否用於。若平面方程式用於,則流程繼續至804,在此判斷基元狀態(或接近等於1)?若基元狀態(或接近等於1),則流程繼續至805,在此將針對= 1的基元狀態設定。流程繼續至809,在此針對的內插完成。
若在804處確定基元狀態不等於1(或不接近等於1),則流程繼續至806,在此清除基元狀態。流程繼續至807,在此將提交至IPA管線。在808處,實行倒數運算來計算值。流程繼續至809,在此的內插完成。
若是平坦的且不等於1.0,則不需要在預乘以或在後乘以,此乃因不存在透視翹曲。然而,若在ISetup單元314中應用在預乘以平坦,則在內插期間仍然需要後乘。若是平坦的,則可移除預乘及後乘二者,但是必須一起移除該兩種乘法,否則兩種乘法可能均無法被移除。僅當時,才可移除所述乘法中的僅一者。即,僅當時,才可移除預乘或後乘。
在替代實施例中,可被檢測以便可使用本文中所揭露的平坦最佳化的附加條件包括檢測屬性的平面方程式的係數是否是常數(即,= 0,= 0,=常數)。對於被確定為常數的屬性,不需要內插,而對於常數屬性,不需要產生平面方程式。此會將轉換為傳播。即,值可作為屬性值自平面方程式表317經由內插管線傳播。在又一替代實施例中,若基元的頂點中的所有者均相同但不等於1.0,則可使用本文中所揭露的平坦最佳化。
圖9繪示包括包含圖形管線的GPU 960的電子系統900,當GPU 960已例如被程式化為實行線性透視內插時,所述圖形管線可減少將倒數、乘法或除法計算用於內插計算的次數。電子系統900可用於但不限於計算裝置、個人數位助理(personal digital assistant,PDA)、膝上型電腦、行動電腦、網路平板電腦(web tablet)、無線電話、蜂巢式電話、智慧型電話、數位音樂播放機或者有線或無線電子裝置。電子系統900可包括藉由匯流排950彼此耦合的控制器910、輸入/輸出裝置920(例如(但不限於)小鍵盤、鍵盤、顯示器、觸摸式螢幕顯示器、照相機及/或影像感測器)、記憶體裝置930及介面940。控制器910可包括例如至少一個微處理器、至少一個數位訊號處理、至少一個微控制器等。記憶體裝置930可被配置成儲存欲由控制器910使用的命令碼或者使用者資料。電子系統900及GPU 960的各種系統組件可包括圖形管線,當GPU 960已被程式化為實行線性透視內插時,所述圖形管線可減少將倒數、乘法或除法計算用於內插計算的次數。介面940可被配置成包括無線介面,所述無線介面被配置成使用射頻(radio frequency,RF)訊號向無線通訊網路傳輸資料或自無線通訊網路接收資料。無線介面940可包括例如天線、無線收發機等等。電子系統900亦可用於通訊系統的通訊介面協定中,例如但不限於分碼多重存取(Code Division Multiple Access,CDMA)、全球行動通訊系統(Global System for Mobile Communications,GSM)、北美數位通訊(North American Digital Communications,NADC)、擴展式分時多重存取(Extended Time Division Multiple Access,E-TDMA)、寬頻CDMA(Wideband CDMA,WCDMA)、CDMA2000、無線保真(wireless fidelity,Wi-Fi)、城市Wi-Fi(Municipal Wi-Fi,Muni Wi-Fi)、藍芽、數位增強型無線電訊(Digital Enhanced Cordless Telecommunications,DECT)、無線通用串列匯流排(Wireless Universal Serial Bus)(無線USB(Wireless USB))、具有無縫切換的快速低潛時存取正交分頻多工(Fast low-latency access with seamless handoff Orthogonal Frequency Division Multiplexing,Flash-OFDM)、電氣及電子工程師學會(Institute of Electrical and Electronic Engineers,IEEE)802.20、通用分包無線服務(General Packet Radio Service,GPRS)、埃博斯特(iBurst)、無線寬頻(Wireless Broadband,WiBro)、全球互通微波存取(Worldwide Interoperability for Microwave Access,WiMAX)、高級WiMAX(WiMAX-Advanced)、通用行動電訊服務-分時雙工(Universal Mobile Telecommunication Service – Time Division Duplex,UMTS-TDD)、高速分包存取(High Speed Packet Access,HSPA)、演進資料最佳化(Evolution Data Optimized,EVDO)、高級長期演進(Long Term Evolution - Advanced)(高級LTE(LTE-Advanced))、多通道多點分佈服務(Multichannel Multipoint Distribution Service,MMDS)等。
在本說明書中闡述的標的及操作的實施例可在數位電子電路系統中實施,或者在電腦軟體、韌體或硬體(包括在本說明書中揭露的結構及其等效結構)中或者以其中的一或多者的組合實施。本說明書中闡述的標的的實施例可被實施為一或多個電腦程式(即,電腦程式指令的一或多個模組),所述一或多個電腦程式編碼於電腦儲存媒體上以便由資料處理設備執行或控制資料處理設備的操作。作為另一選擇或另外,程式指令可編碼於人工產生的傳播訊號上,所述人工產生的傳播訊號為例如被產生以對用於傳輸至適合的接收器設備的資訊進行編碼以便由資料處理設備執行的由機器產生的電性訊號、光學訊號或電磁訊號。電腦儲存媒體可為電腦可讀取儲存裝置、電腦可讀取儲存基板、隨機或串列存取記憶體陣列或裝置或者其組合,或者可包括於電腦可讀取儲存裝置、電腦可讀取儲存基板、隨機或串列存取記憶體陣列或裝置或者其組合中。此外,儘管電腦儲存媒體不是傳播訊號,然而電腦儲存媒體可為編碼於人工產生的傳播訊號中的電腦程式指令的來源(source)或目的地(destination)。電腦儲存媒體亦可為一或多個單獨的物理組件或媒體(例如,多個光碟(compact disc,CD)、碟片(disk)或其他儲存裝置),或者可包括於所述一或多個單獨的物理組件或媒體(例如,多個CD、碟片或其他儲存裝置)中。
本說明書中闡述的操作可被實施為由資料處理設備對儲存於一或多個電腦可讀取儲存裝置上的資料或自其他來源接收的資料實行的操作。
用語「資料處理設備」囊括用於處理資料的所有種類的設備、裝置及機器,包括例如可程式化處理器、電腦、系統晶片或者前述中的多者(或組合)。所述設備可包括專用邏輯電路系統,例如現場可程式化閘陣列(field programmable gate array,FPGA)或應用專用積體電路(application-specific integrated circuit,ASIC)。所述設備可除硬體之外亦包括為電腦程式創建執行環境的碼,例如構成處理器韌體、協定堆疊、資料庫管理系統、作業系統、跨平台運行時間環境、虛擬機或其組合的碼。所述設備及執行環境可達成各種不同的計算模型基礎架構,例如網路服務、分佈式計算及網格式計算基礎架構。
電腦程式(亦稱為程式、軟體、軟體應用、腳本或碼)可以包括編譯或解譯語言、宣告性語言或程序性語言在內的任何形式的程式化語言來編寫,且電腦程式可以任何形式來部署,包括作為獨立程式或作為模組、組件、次常式、對象或適合於在計算環境中使用的其他單元。電腦程式可但無需對應於檔案系統中的檔案。程式可儲存於檔案的保持其他程式或資料(例如,儲存於標示語言文件中的一或多個腳本)的一部分中、專用於所述及的所述程式的單一檔案中或者多個協調的檔案(例如,儲存一或多個模組、子程式或碼部分的檔案)中。電腦程式可被部署成在位於一個站點(site)處的一個電腦上或在分佈於多個站點上並藉由通訊網路互連的多個電腦上執行。
本說明書中闡述的過程及邏輯流程可由一或多個可程式化處理器來實行,所述一或多個可程式化處理器執行一或多個電腦程式,以藉由對輸入資料進行操作並產生輸出來實行動作。過程及邏輯流程亦可由專用邏輯電路系統來實行,且設備亦可被實施為專用邏輯電路系統,例如現場可程式化閘陣列(FPGA)或應用專用積體電路(ASIC)。
舉例而言,適合於執行電腦程式的處理器包括通用微處理器與專用微處理器二者以及任何種類的數位電腦的任何一或多個處理器。一般而言,處理器可自唯讀記憶體或隨機存取記憶體或兩者接收指令及資料。電腦的基本元件是用於根據指令實行動作的處理器以及用於儲存指令及資料的一或多個記憶體裝置。一般而言,電腦亦將包括用於儲存資料的一或多個巨量儲存裝置(例如磁碟、磁光碟或光碟),或者被操作地耦合以自所述一或多個巨量儲存裝置接收資料或向所述一或多個巨量儲存裝置傳送資料或者進行兩者。然而,電腦不必具有此種裝置。此外,電腦可嵌置於例如(舉幾個例子)行動電話、個人數位助理(PDA)、行動音訊或視訊播放機、遊戲主控台(game console)、全球定位系統(Global Positioning System,GPS)接收器或可攜式儲存裝置(例如,通用串列匯流排(USB)快閃驅動器)等另一裝置中。適合於儲存電腦程式指令及資料的裝置包括所有形式的非揮發性記憶體、媒體及記憶體裝置,包括例如:半導體記憶體裝置,例如可抹除可程式化唯讀記憶體(erasable programmable read only memory,EPROM)、電子可抹除可程式化唯讀記憶體(electrically erasable programmable read only memory,EEPROM)及快閃記憶體裝置;磁碟,例如內部硬碟或可移除式碟片(removable disk);磁光碟;以及光碟唯讀記憶體(compact disc-read only memory,CD-ROM)及數位多功能光碟唯讀記憶體(digital versatile disc-read only memory,DVD-ROM)碟片。處理器及記憶體可藉由專用邏輯電路系統來補充或包含於專用邏輯電路系統中。
為提供與使用者的交互,本說明書中闡述的標的的實施例可在電腦上實施,所述電腦具有例如陰極射線管(cathode ray tube,CRT)或液晶顯示器(liquid crystal display,LCD)監視器等用於向使用者顯示資訊的顯示裝置以及可被使用者用於向電腦提供輸入的鍵盤及指針裝置(例如鼠標或軌跡球)。亦可使用其他種類的裝置來提供與使用者的交互;舉例而言,提供至使用者的回饋可為任何形式的感覺回饋,例如視覺回饋、聽覺回饋或觸覺回饋;且來自使用者的輸入可以包括聲響、語音或觸覺輸入在內的任何形式接收。
本說明書中闡述的標的的實施例可在計算系統中實施,所述計算系統包括後端組件,例如作為資料伺服器;或者包括中間體組件,例如應用伺服器;或者包括前端組件,例如具有圖形使用者介面或網路瀏覽器的使用者電腦,使用者可經由圖形使用者介面或網路瀏覽器與本說明書中闡述的標的的實施方案進行交互;或者一或多個此種後端組件、中間體組件或前端組件的任何組合。系統的組件可藉由任何數位資料通訊形式或媒體(例如,通訊網路)來互連。通訊網路的例子包括區域網路(local area network,LAN)及廣域網路(wide area network,WAN)、網間網路(inter-network)(例如,網際網路)及同級間網路(peer-to-peer networks)(例如,特定同級間網路(ad hoc peer-to-peer networks))。
計算系統可包括使用者及伺服器。使用者與伺服器一般彼此遠離,且通常經由通訊網路進行交互。使用者與伺服器的關係是憑藉在相應的電腦上運行且彼此具有使用者-伺服器關係的電腦程式而產生。
儘管本說明書包含諸多具體的實施細節,然而該些實施細節不應被視為對任何發明的範圍或可主張的範圍的限制,而應被視為對特定發明的特定實施例的專有特徵的說明。本說明書中在單獨的實施例的上下文中闡述的某些特徵亦可在單一實施例中以組合方式實施。相反,在單一實施例的上下文中闡述的各種特徵亦可在多個實施例中單獨地實施或以任何適合的子組合來實施。此外,儘管上文可將特徵闡述為在某些組合中起作用且甚至最初如此主張,然而在一些情形中,可自所主張的組合中去除來自所述組合的一或多個特徵,且所主張的組合可針對子組合或子組合的變型。
相似地,儘管在圖式中以特定次序繪示操作,然而此不應被理解為要求以所示的特定次序或以順序次序實行此種操作或者要求實行所有所示操作以達成所期望的結果。在某些情況中,多任務及平行處理可為有利的。此外,上述實施例中的各種系統組件的分離不應被理解為在所有實施例中均需要此種分離,且應理解,所闡述的程式組件及系統一般可一起整合於單一軟體產品中或者被封裝至多個軟體產品中。
因此,已闡述標的的特定實施例。其他實施例處於以下申請專利範圍的範圍內。在一些情形中,申請專利範圍中陳述的動作可以不同的次序實行,且仍然會達成所期望的結果。另外,附圖中繪示的過程未必需要所示的特定次序或順序次序來達成所期望的結果。在某些實施方案中,多任務及平行處理可為有利的。
如熟習此項技術者將認識到,可在廣大範圍的應用中對本文中所述創新概念進行修改及變化。因此,所主張標的的範圍不應僅限於以上所論述的任何具體示例性教示內容,而是由以下申請專利範圍來界定。
100:物體
101:觀視範圍
102:二維(2D)螢幕
200:物體/平面物體
201:表面
300、960:圖形處理單元(GPU)
301:處理元件(PE)四元組
302a、302b、302c、302d:PE
303a、303b:負載儲存單元(LSU)
304:翹曲定序器(WSQ)
310:硬體內插器(HWInterp)單元
311:著色器處理控制器(SPC)
312:光柵及Z單元(RASTZ)
313、313a、313b:內插單元(IPA)
314:內插設置(ISetup)單元
315:畫素著色器構造器(PSC)
316:翹曲排程器(WS)
317:平面方程式表(PET)
401a、401b:區塊內插器
402a、402b:四元組畫素內插器
403:狀態暫存器
404:請求緩衝器
405:排程器
406:位置屬性管理器/位置屬性管理器模組
407:緩衝器
408:透視校正乘法器(PCM)
409:共享區塊及倒數單元(RCP前端)
410:輸出緩衝器
411、508、608、609:輸入
500:CCV單元
501:頂點管線模組
502:命令處理器模組
503:基元處理器模組
504:裁切器模組
505:輸出控制模組
506:串流輸出(SO)單元
507:分級(BIN)單元
601:CCV位置輸入介面模組
602:CCV屬性輸入介面模組
603:位置輸入及緩沖模組
604:光柵化設置模組
605:屬性輸入及佇列模組
606:平面方程式(Peqn)設置模組
607:光柵(rast)輸出介面模組
608、609:輸入
700:方法
701、702、703、704、705、706、707、801、802、803、804、805、806、807、808、809、810:步驟
800:流程圖
900:電子系統
910:控制器
920:輸入/輸出裝置
930:記憶體裝置
940:介面/無線介面
950:匯流排
在以下章節中,將參照圖中所示的示例性實施例來闡述本文中所揭露的標的的態樣,在所述圖中:
圖1A繪示可自人的眼睛觀察的三維(three-dimensional,3D)空間中的示例性物體。
圖1B繪示投影至二維(two-dimensional,2D)螢幕上的圖1A所示示例性物體。
圖2A繪示在觀察者的觀視範圍(未示出)內遠離觀察者傾斜的示例平面物體的立體圖。
圖2B繪示投影至2D螢幕(未示出)上的圖2A所示例子。
圖3繪示根據本文中所揭露的標的,可包含平坦最佳化的示例性GPU的內插管線部分的方塊圖。
圖4繪示根據本文中所揭露的標的,可被配置成包含平坦最佳化的內插單元的示例性實施例的方塊圖。
圖5繪示方塊圖,其示出根據本文中所揭露的標的,裁切-剔除-視埠單元(clip-cull-viewport unit)的輸入處可高效地檢測齊次係數是否等於或接近等於1.0的示例性位置。
圖6繪示方塊圖,其示出根據本文中所揭露的標的,設置單元內可高效地檢測齊次係數是否等於或接近等於1.0的示例性位置。
圖7繪示根據本文中所揭露的標的,若已在例如著色器程式中指定線性透視內插技術,則內插與在圖形管線中渲染的基元相關聯的元素的一或多種屬性的方法的流程圖。
圖8繪示根據本文中所揭露的標的,可使用的在判斷齊次係數是否等於或接近等於1.0的過程之後的最佳化的示例性實施例的流程圖。
圖9繪示包括圖形管線的電子裝置,當GPU硬體已例如被程式化為實行線性透視內插時,所述圖形管線可減少將倒數、乘法或除法計算用於內插計算的次數。
300:圖形處理單元(GPU)
301:處理元件(PE)四元組
302a、302b、302c、302d:PE
303a、303b:負載儲存單元(LSU)
304:翹曲定序器(WSQ)
310:硬體內插器(HWInterp)單元
311:著色器處理控制器(SPC)
312:光柵及Z單元(RASTZ)
313a、313b:內插單元(IPA)
314:內插設置(ISetup)單元
315:畫素著色器構造器(PSC)
316:翹曲排程器(WS)
317:平面方程式表(PET)
Claims (20)
- 一種對在圖形管線中所渲染的基元的元素的一或多種屬性進行內插的方法,所述方法包括: 基於指定為用於渲染所述基元的線性透視內插技術,確定所述元素的齊次座標在1的預定臨限值內; 基於所述元素的所述齊次座標在1的所述預定臨限值內,使用線性內插技術來內插所述元素的所述屬性;以及 基於所述元素的所述齊次座標在1的所述預定臨限值之外,使用所述線性透視內插技術來內插所述元素的所述屬性。
- 如請求項1所述的方法,其中所述元素的所述屬性與所述基元的頂點相關聯。
- 如請求項1所述的方法,其中判斷所述元素的所述齊次座標是否在1的所述預定臨限值內更包括判斷所述基元的每一頂點的所述齊次座標是否等於1。
- 如請求項1所述的方法,其中所述基元包括三角形及線中的一者。
- 如請求項1所述的方法,其中判斷所述元素的所述齊次座標是否在1的所述預定臨限值內包括在圖形管線級的輸入及輸出中的一者處判斷所述元素的所述齊次座標是否在1的所述預定臨限值內。
- 如請求項5所述的方法,其中所述圖形管線級包括裁切-剔除-視埠單元、設置單元及內插單元中的一者。
- 如請求項1所述的方法,更包括: 基於指定為渲染所述基元的所述線性透視內插技術,判斷所述基元的齊次座標的值是否是不等於1的常數; 基於所述齊次座標的所述值被確定為不等於1的常數,使用所述線性內插技術來內插所述基元的所述屬性;以及 基於所述齊次座標的所述值不是不等於1的常數,使用所述線性透視內插技術來內插所述基元的所述屬性。
- 如請求項1所述的方法,更包括: 判斷所述基元的屬性的平面方程式的係數是否恆定; 基於所述平面方程式的所述係數被確定為不恆定,內插所述基元的所述屬性;以及 基於所述平面方程式的所述係數被確定為恆定,省略對所述基元的所述屬性的內插。
- 一種圖形管線級,包括: 輸入,接收基元的一或多種屬性; 比較器,將所述基元的所述屬性的齊次座標的值與1進行比較,以基於指定為渲染所述基元的線性透視內插技術,判斷所述齊次座標的所述值是否在1的預定臨限值內;以及 內插器,基於所述齊次座標的所述值被確定為在1的所述預定臨限值內,使用線性內插技術來內插所述基元的所述屬性,且基於所述齊次座標的所述值被確定為在1的所述預定臨限值之外,使用所述線性透視內插技術來內插所述基元的所述屬性。
- 如請求項9所述的圖形管線級,其中所述基元的所述屬性與所述基元的頂點相關聯。
- 如請求項9所述的圖形管線級,其中所述屬性與所述基元的頂點相關聯,且 其中所述基元包括三角形及線中的一者。
- 如請求項9所述的圖形管線級,其中所述比較器基於指定為渲染所述基元的所述線性透視內插技術,進一步判斷所述基元的齊次座標的所述值是否是不等於1的常數,且 其中所述內插器進一步基於所述齊次座標的所述值被確定為不等於1的常數,使用所述線性內插技術來內插所述基元的所述屬性,且基於所述齊次座標的所述值不是不等於1的常數,使用所述線性透視內插技術來內插所述基元的所述屬性。
- 如請求項9所述的圖形管線級,其中所述比較器進一步判斷所述基元的屬性的平面方程式的係數是否恆定,且 其中所述內插器進一步基於所述平面方程式的所述係數被確定為不恆定,內插所述基元的所述屬性,且基於所述平面方程式的所述係數被確定為恆定,省略對所述基元的所述屬性的內插。
- 如請求項9所述的圖形管線級,其中圖形管線級包括裁切-剔除-視埠單元、設置單元及內插單元中的一者。
- 一種圖形處理單元,包括: 圖形管線級,包括: 輸入,接收基元的一或多種屬性; 比較器,基於指定為渲染所述基元的線性透視內插技術,判斷所述基元的齊次座標的值是否是不等於1的常數;以及 內插器,基於所述齊次座標的所述值被確定為不等於1的所述常數,使用線性內插技術來內插所述基元的所述屬性,且基於所述齊次座標的所述值不是不等於1的所述常數,使用所述線性透視內插技術來內插所述基元的所述屬性;以及 著色器,接收所述內插器的輸出並渲染所述基元。
- 如請求項15所述的圖形處理單元,其中所述比較器進一步將所述基元的所述屬性的所述齊次座標的所述值與1進行比較,以基於指定為渲染所述基元的線性透視內插技術,判斷所述齊次座標的所述值是否在1的預定臨限值內,且 其中所述內插器進一步基於所述齊次座標的所述值被確定為在1的所述預定臨限值內,使用所述線性內插技術來內插所述基元的所述屬性,且基於所述齊次座標的所述值被確定為在1的所述預定臨限值之外,使用所述線性透視內插技術來內插所述基元的所述屬性。
- 如請求項15所述的圖形處理單元,其中所述基元包括三角形及線中的一者。
- 如請求項15所述的圖形處理單元,其中元素的所述屬性進一步與所述基元的頂點相關聯。
- 如請求項15所述的圖形處理單元,其中所述比較器進一步判斷所述基元的屬性的平面方程式的係數是否恆定,且 其中所述內插器進一步基於所述平面方程式的所述係數被確定為不恆定,內插所述基元的所述屬性,且基於所述平面方程式的所述係數被確定為恆定,省略對所述基元的所述屬性的內插。
- 如請求項15所述的圖形處理單元,其中圖形管線級包括裁切-剔除-視埠單元、設置單元及內插單元中的一者。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962855872P | 2019-05-31 | 2019-05-31 | |
US62/855,872 | 2019-05-31 | ||
US16/559,616 | 2019-09-03 | ||
US16/559,616 US11080924B2 (en) | 2019-05-31 | 2019-09-03 | Optimized computation of perspective interpolants |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202101368A true TW202101368A (zh) | 2021-01-01 |
TWI800727B TWI800727B (zh) | 2023-05-01 |
Family
ID=73550301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109116385A TWI800727B (zh) | 2019-05-31 | 2020-05-18 | 對在圖形管線中所渲染的基元的元素的一或多種屬性進行內插的方法、圖形管線級及圖形處理單元 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11080924B2 (zh) |
KR (1) | KR102673649B1 (zh) |
TW (1) | TWI800727B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12008675B2 (en) * | 2021-03-18 | 2024-06-11 | Samsung Electronics Co., Ltd. | Method and apparatus for isolating 3D draw calls for selective upscaling |
US20230064069A1 (en) * | 2021-07-30 | 2023-03-02 | Intel Corporation | Converting barycentric planes to attribute planes |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5798762A (en) * | 1995-05-10 | 1998-08-25 | Cagent Technologies, Inc. | Controlling a real-time rendering engine using a list-based control mechanism |
US6664960B2 (en) * | 2001-05-10 | 2003-12-16 | Ati Technologies Inc. | Apparatus for processing non-planar video graphics primitives and associated method of operation |
US20030063087A1 (en) * | 2001-09-28 | 2003-04-03 | Doyle Peter L. | Variable-formatable width buffer and method of use |
US7098924B2 (en) * | 2002-10-19 | 2006-08-29 | Via Technologies, Inc. | Method and programmable device for triangle interpolation in homogeneous space |
US20050231533A1 (en) * | 2004-04-20 | 2005-10-20 | Lin Chen | Apparatus and method for performing divide by w operations in a graphics system |
US8432394B1 (en) | 2004-05-14 | 2013-04-30 | Nvidia Corporation | Method and system for implementing clamped z value interpolation in a raster stage of a graphics pipeline |
US7420557B1 (en) * | 2005-08-25 | 2008-09-02 | Nvidia Corporation | Vertex processing when w=0 |
US8134570B1 (en) * | 2006-09-18 | 2012-03-13 | Nvidia Corporation | System and method for graphics attribute packing for pixel shader usage |
US8203564B2 (en) | 2007-02-16 | 2012-06-19 | Qualcomm Incorporated | Efficient 2-D and 3-D graphics processing |
US8441497B1 (en) * | 2007-08-07 | 2013-05-14 | Nvidia Corporation | Interpolation of vertex attributes in a graphics processor |
US20150325032A1 (en) | 2014-05-09 | 2015-11-12 | Samsung Electronics Company, Ltd. | Hybrid mode graphics processing interpolator |
GB2540983B (en) * | 2015-08-03 | 2017-11-29 | Advanced Risc Mach Ltd | Graphics processing |
GB2553293B (en) * | 2016-08-25 | 2022-06-01 | Advanced Risc Mach Ltd | Graphics processing systems and graphics processors |
US10489877B2 (en) * | 2017-04-24 | 2019-11-26 | Intel Corporation | Compute optimization mechanism |
-
2019
- 2019-09-03 US US16/559,616 patent/US11080924B2/en active Active
-
2020
- 2020-05-06 KR KR1020200053991A patent/KR102673649B1/ko active IP Right Grant
- 2020-05-18 TW TW109116385A patent/TWI800727B/zh active
Also Published As
Publication number | Publication date |
---|---|
KR102673649B1 (ko) | 2024-06-12 |
US20200380766A1 (en) | 2020-12-03 |
US11080924B2 (en) | 2021-08-03 |
TWI800727B (zh) | 2023-05-01 |
KR20200137985A (ko) | 2020-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11680803B2 (en) | Rendering operations using sparse volumetric data | |
JP4938850B2 (ja) | 拡張型頂点キャッシュを備えたグラフィック処理装置 | |
US20150379672A1 (en) | Dynamically optimized deferred rendering pipeline | |
TWI512669B (zh) | 用於可規劃揀選單元之編譯技術 | |
US20100042377A1 (en) | Device, system, and method of computer aided design (cad) | |
US8593475B2 (en) | Systems and methods for dynamic procedural texture generation management | |
TW202101368A (zh) | 對在圖形管線中所渲染的基元的元素的一或多種屬性進行內插的方法、圖形管線級及圖形處理單元 | |
EP2945126B1 (en) | Graphics processing method and graphics processing apparatus | |
KR102266962B1 (ko) | 그래픽 파이프라인의 메모리 사용 감소를 위한 컴파일러 지원 기술 | |
US20160078667A1 (en) | Method and apparatus for processing rendering data | |
TW201140500A (en) | Grouping pixels to be textured | |
TW202141416A (zh) | 光線追蹤方法及圖形管線 | |
JP6441963B2 (ja) | グラフィックス処理における加速された複数のポリゴンの単一平面クリッピング | |
EP3355275A1 (en) | Out of order pixel shader exports | |
CN112017103A (zh) | 插值方法、图形管线和图形处理器 | |
US20180101975A1 (en) | Animating a virtual object | |
TWI810458B (zh) | 用於最佳化像素著色器屬性管理的設備、系統及方法 | |
Langerman et al. | Real-time, high-resolution depth upsampling on embedded accelerators | |
US20130328884A1 (en) | Direct opencl graphics rendering | |
US10949990B2 (en) | Geometric area of projection of a multidimensional object in a viewport space | |
WO2023202365A1 (zh) | 图形处理器、系统、装置、设备及方法 | |
CN117063202A (zh) | 通过子通道交错实现无同步交叉通道分格 |