TW201719571A - 經由渲染命令串流器之僅關於位置的著色器背景提交 - Google Patents

經由渲染命令串流器之僅關於位置的著色器背景提交 Download PDF

Info

Publication number
TW201719571A
TW201719571A TW105125941A TW105125941A TW201719571A TW 201719571 A TW201719571 A TW 201719571A TW 105125941 A TW105125941 A TW 105125941A TW 105125941 A TW105125941 A TW 105125941A TW 201719571 A TW201719571 A TW 201719571A
Authority
TW
Taiwan
Prior art keywords
engine
command
pipeline
renderer
processor
Prior art date
Application number
TW105125941A
Other languages
English (en)
Other versions
TWI706374B (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 TW201719571A publication Critical patent/TW201719571A/zh
Application granted granted Critical
Publication of TWI706374B publication Critical patent/TWI706374B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

在部分實施例中,藉由排程/管理至POSH管的工作量提交,能利用平行性而具有對軟體排程器的最小影響。

Description

經由渲染命令串流器之僅關於位置的著色器背景提交
本發明關於經由渲染命令串流器之僅關於位置的著色器背景提交。
顯著數量的基元在圖形處理中受裁剪,因為彼等背對、在視範圍外側、或太小。因為彼等與顯示無關,比所需更多地處理彼等係低效率的。
僅關於位置的著色器(POSH)具有領先習知渲染器管線運行以濾除此等不可見基元的圖形管線(POSH/裁剪管)。POSH管線使用專用引擎以在三維(3D)工作量上操作,以在使可見性資料在習知渲染器管上執行之前產生彼等。由POSH管輸出的可見性資料係由習知渲染器引擎中的頂點提取(VF)邏輯所使用,以藉由拋棄不可見頂點而將工作量執行最佳化。
12‧‧‧頂點提取(VF)單元
14‧‧‧記憶體
16‧‧‧頂點著色器(VS)單元
17‧‧‧外殼著色器
18‧‧‧鑲嵌
19‧‧‧域著色器
20‧‧‧幾何著色器
22‧‧‧基元組合單元
23‧‧‧視埠範圍拋棄
24‧‧‧限幅級
26、80‧‧‧簡單裁剪級
28‧‧‧設定單元
30‧‧‧光柵化單元
32‧‧‧深度
33‧‧‧著色及紋理
34‧‧‧色彩混合
56‧‧‧環狀緩衝器
60‧‧‧軟體(SW)
62‧‧‧渲染器命令串流器(RCS)
63‧‧‧渲染器加POSH管線
64‧‧‧POSH命令串流器(POCS)
66‧‧‧POSH管
68‧‧‧渲染管
70‧‧‧裁剪管
72‧‧‧重播管
74‧‧‧可見性記錄先進先出(FIFO)
76‧‧‧僅關於位置的頂點提取(VF)-頂點著色器(VS)級
77‧‧‧基元組合
78‧‧‧視埠範圍拋棄級
85‧‧‧POSH PPHWSP
86‧‧‧POSH LRCA
87‧‧‧指標器
88、90‧‧‧頭指標器
89‧‧‧POSH環狀背景
91‧‧‧POSH引擎背景
92‧‧‧尾指標器
93‧‧‧渲染器引擎背景
100‧‧‧處理系統
102、200、1030‧‧‧處理器
104‧‧‧快取記憶體
106‧‧‧暫存器檔案
107、202A、202N‧‧‧處理器核心
108、300、500、800、1032、1210‧‧‧圖形處理器
109‧‧‧特定指令集
110‧‧‧處理器匯流排
112‧‧‧外部圖形處理器
116‧‧‧記憶體控制器集線器
120‧‧‧記憶體裝置
121‧‧‧指令
122‧‧‧資料
124‧‧‧儲存裝置
126‧‧‧無線收發器
128‧‧‧韌體介面
130‧‧‧輸入輸出(I/O)控制器集線器
134‧‧‧網路控制器
140‧‧‧傳統I/O控制器
142‧‧‧通用串列匯流排(USB)控制器
144‧‧‧鍵盤及滑鼠
146‧‧‧音訊控制器
204A、204N‧‧‧內部快取記憶體單元
206‧‧‧共享快取記憶體單元
208‧‧‧積集圖形處理器
210‧‧‧系統代理器核心
211、302、843‧‧‧顯示控制器
212‧‧‧環形為基的互連單元
213‧‧‧I/O鏈路
214‧‧‧積集記憶體控制器
216‧‧‧匯流排控制器單元
218‧‧‧高效能嵌入式記憶體模組
304‧‧‧區塊影像轉換(BLIT)引擎
306‧‧‧視訊編碼解碼器引擎
310、410‧‧‧圖形處理引擎(GPE)
312、412、922‧‧‧3D管線
314‧‧‧記憶體介面
315‧‧‧3D/媒體次系統
316、416、830、924‧‧‧媒體管線
320、1245‧‧‧顯示器裝置
403、503、803‧‧‧命令串流器
414‧‧‧執行單元陣列
430‧‧‧取樣引擎
432‧‧‧去雜訊/解交錯模組
434‧‧‧動作估計模組
436‧‧‧影像縮放及過濾模組
444、614、856‧‧‧資料埠
502、802‧‧‧環形互連
504‧‧‧管線前端
530‧‧‧視訊品質引擎(VQE)
533‧‧‧多格式編碼/解碼(MFX)引擎
534、834‧‧‧視訊前端
536‧‧‧幾何管線
537、837‧‧‧媒體引擎
550A、550N、560A、560N‧‧‧次核心
552A、552N、562A、562N、608A、608N、852A、852B‧‧‧執行單元
554A、554N‧‧‧媒體/紋理取樣器
564A、564N、610‧‧‧取樣器
570A、570N‧‧‧共享資源
580A、580N‧‧‧圖形核心
600、850‧‧‧緒執行邏輯
602‧‧‧像素著色器
604、831‧‧‧緒分派器
606‧‧‧指令快取記憶體
612‧‧‧資料快取記憶體
700‧‧‧圖形處理器指令格式
710‧‧‧128-位元格式
712‧‧‧指令運算碼
713‧‧‧索引欄位
714‧‧‧指令控制欄位
716‧‧‧執行尺寸欄位
718‧‧‧目的
720‧‧‧src1
722‧‧‧src0
724‧‧‧SRC2
726‧‧‧存取/定址模式資訊
730‧‧‧64-位元緊湊指令格式
740‧‧‧運算碼解碼
742‧‧‧移動及邏輯運算碼群組
744‧‧‧流程控制指令群組
746‧‧‧雜項指令群組
748‧‧‧平行數學指令群組
750‧‧‧向量數學群組
805‧‧‧頂點提取器
807‧‧‧頂點著色器
811‧‧‧外殼著色器
813‧‧‧鑲嵌器
817‧‧‧域著色器
819‧‧‧幾何著色器
820‧‧‧圖形管線
823‧‧‧串流輸出單元
829‧‧‧限幅器
840‧‧‧顯示引擎
841‧‧‧2D引擎
851‧‧‧L1快取記憶體
854‧‧‧紋理及媒體取樣器
858‧‧‧紋理/取樣器快取記憶體
870‧‧‧渲染輸出管線
873‧‧‧光柵器及深度測試組件
875‧‧‧共享L3快取記憶體
877‧‧‧像素運算組件
878‧‧‧渲染器快取記憶體
879‧‧‧深度快取記憶體
900‧‧‧圖形處理器命令格式
902‧‧‧目標用戶端
904‧‧‧命令運算碼(opcode)
905‧‧‧次運算碼
906‧‧‧相關資料
908‧‧‧命令尺寸
910‧‧‧圖形處理器命令序列
912‧‧‧管線清除命令
913‧‧‧管線選擇命令
914‧‧‧管線控制命令
916‧‧‧回覆緩衝器狀態命令
920‧‧‧管線決定
930‧‧‧3D管線狀態
932‧‧‧3D基元
934‧‧‧執行
940‧‧‧媒體管線狀態
942‧‧‧媒體物件命令
944‧‧‧執行命令
1000‧‧‧資料處理系統
1010‧‧‧3D圖形應用程式
1012‧‧‧著色器指令
1014‧‧‧可執行指令
1016‧‧‧圖形物件
1020‧‧‧作業系統
1024‧‧‧前端著色器編譯器
1026‧‧‧使用者模式圖形驅動程式
1027‧‧‧後端著色器編譯器
1028‧‧‧作業系統核心模式功能
1029‧‧‧核心模式圖形驅動程式
1034‧‧‧通用處理器核心
1050‧‧‧系統記憶體
1100‧‧‧IP核心發展系統
1110‧‧‧軟體模擬
1112‧‧‧模擬模型
1115‧‧‧RTL設計
1120‧‧‧硬體模型
1130‧‧‧設計設施
1140‧‧‧非揮發性記憶體
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧第三方製造設施
1200‧‧‧系統單晶片積體電路
1205‧‧‧應用處理器
1215‧‧‧影像處理器
1220‧‧‧視訊處理器
1225‧‧‧USB控制器
1230‧‧‧UART控制器
1235‧‧‧SPI/SDIO控制器
1240‧‧‧I2S/I2C控制器
1250‧‧‧高解析多媒體介面(HDMI)控制器
1255‧‧‧行動產業處理器介面(MIPI)顯示介面
1260‧‧‧快閃記憶體次系統
1265‧‧‧記憶體控制器
1270‧‧‧嵌入式安全引擎
部分實施例對照下列圖式描述:圖1係根據一實施例之POSH架構的方塊圖;圖2係根據一實施例之渲染器引擎的概要圖;圖3係用於一實施例之渲染器命令處理的流程圖;圖4A係根據另一實施例用於POSH命令處理的流程圖;圖4B係根據另一實施例係圖4A之延續的流程圖;圖5係用於一實施例之批次緩衝器的圖;圖6係根據一實施例之處理系統的方塊圖;圖7係根據一實施例之處理器的方塊圖;圖8係根據一實施例之圖形處理器的方塊圖;圖9係根據一實施例之圖形處理引擎的方塊圖;圖10係圖形處理器之另一實施例的方塊圖;圖11係根據一實施例之緒執行邏輯的圖;圖12係根據部分實施例之圖形處理器指令格式的方塊圖;圖13係圖形處理器之另一實施例的方塊圖;圖14A係根據部分實施例之圖形處理器命令格式的方塊圖;圖14B係根據部分實施例描繪圖形處理器命令序列的方塊圖;圖15係根據部分實施例之例示圖形軟體架構的圖;圖16係根據部分實施例描繪IP核心發展系統的方塊圖;及 圖17係根據部分實施例顯示例示系統單晶片積體電路的方塊圖。
【發明內容及實施方式】
POSH管及渲染器管不係完全獨立的。同時,彼等並未非常緊密地耦接至低至指令層級。部分程度的平行性存在。在部分實施例中,藉由排程/管理至POSH管的工作量提交,能利用此平行性而對軟體排程器具有最小影響。
從軟體觀點,POSH加渲染器管線可係單石引擎。此提供軟體提交工作量至平行的POSH管的單一的統一介面。軟體可使用單一背景以經由修飾的渲染器加POSH管線的關聯環狀緩衝器將工作提交至其。此介面也使佔先簡化。
基於POSH的分塊延遲渲染使用僅關於位置的硬體管以將三角形排序至不同分塊,並針對僅關於位置之著色管中的各分塊產生可見性資訊。在計算可見性資訊的整體渲染目標價值後,重播管有時使用此可見性資訊並渲染一分塊。
通常在三維(3D)圖形管線中實施限幅以拋棄位於視範圍外側的場景部分。限幅級調查輸入頂點的位置並與視範圍比對實施頂點限幅測試。物件中的所有頂點之限幅測試的結果決定更下游的管線如何處理該物件。
拋棄或明顯拒絕(TR)完全在視野容體外側的物件。完全包含在視野容體內側的物件保持不變並直接向下 游傳送至用於進一步處理或明顯接收(TA)的管線。將與視野容體相交的物件傳送至限幅處理級,使得能將彼等分裂為僅位於視野容體內的基元,該操作稱為必須限幅操作(MC)。
圖1根據一實施例顯示基於僅關於位置之著色器的圖形處理單元。POSH實作負責將完全在視範圍(TR)外側的三角形標記為不可見。使用各分塊窗進一步測試完全在內側的三角形,以發現特定三角形是否在每分塊可見,並對應地標記為每分塊可見或不可見。當尚未實施最終限幅操作時,通常將與視範圍相交的三角形處理為對所有分塊可見。
圖1顯示具有二個幾何管-裁剪管70及重播管72之架構的簡化方塊圖。二管執行相同應用程式的不同實例,其中各實例能在完全不同的繪圖呼叫上運作。裁剪管的責任係計算是否拒絕三角形的三角形的可見性資訊。此資訊儲存在可見性記錄先進先出(FIFO)74中,其依次由用於跳過被拋棄三角形的重播管所消耗。再者,裁剪管藉由僅提取及著色位置屬性更快速地產生此關鍵資訊。以此方式,二管共同運作以減少裁剪三角形序列所需要的工作量並也有效率地跳過彼等。
如圖1所示,當與重播管相比時,裁剪管係淺及精簡的。其具有用於著色位置屬性的僅關於位置的頂點提取(VF)-頂點著色器(VS)級76,之後係基元組合77及視埠範圍拋棄級78及簡單裁剪級80。裁剪管中的指令集 僅包括用於計算位置屬性所需的此等指令,且不具有用於計算其他著色器屬性的指令。此淺管線對繪圖呼叫的每個三角形計算可見性資訊,並以時間順序將此資訊記錄在可見性記錄FIFO內側。
在部分實施例中,將記錄資訊保持為逐位元序列,例如,將0用於不合格三角形並將1用於合格三角形,且因此使用小量的儲存區。裁剪管可領先至少一個繪圖呼叫運行,使得重播管不會可見性資訊不足。通常,3D框係以在指定渲染器目標(等)上運作之數目不定的渲染通過構成。框在組成相位中結束,其中將記錄在渲染器目標中的中間資訊混合在一起以產生最終框緩衝器。
其實際上反而係界定物件之形狀的三角剖分表面之集合的各渲染通過具有任意數目的繪圖呼叫。因為裁剪管為繪圖呼叫避免光柵化以及像素的渲染,其能領先運行並以及時方式計算可見性資訊。然而,若用於繪圖呼叫的資訊不可用,則重播管可停頓。相似地,若可見性記錄FIFO中沒有空間,則裁剪管可停頓。
通常,3D場景以三角剖分表面的集合開始,其中三角形的頂點界定物件的形狀。將頂點的此等輸入列表饋送至頂點提取(VF)單元12,其依次從記憶體14提取與頂點關聯的屬性。在頂點著色器(VS)單元16中,使用可程式化著色器轉變提取的頂點屬性。能將此等可程式化著色器視為藉由在頂點屬性上實施數學操作而將頂點映射至螢幕並在3D環境中加入特殊效果至物件的次常式。將此 等著色器分派至緒處理器-稱為執行單元(EU)-其中頂點的屬性(像是位置、顏色、紋理-座標等)受轉變,並針對後續管級的參考將計算值儲存在區域記憶體中。
若可應用或傳送至於其產生三角形的基元組合單元22,VS單元的輸出前進至係外殼著色器17、鑲嵌18、域著色器19、及幾何著色器20的後續管線級。三角形在產生後來到限幅級24,其中將在視埠範圍拋棄23決定為在視埠範圍外側的三角形拋棄。另一方面,接收在視埠範圍平面內的三角形並傳送至後續管級。再者,限幅級也能限幅與視埠範圍之平面相交的三角形。
從視埠範圍拋棄23殘存的三角形再度受簡單裁剪級26調查,以證實三角形是否將係最終影像的一部分,並扔掉此等測試不合格的物件。例如,在此級中拋棄背對、衰減、零面積等的三角形。針對部分應用,多於約80%的三角形為視埠範圍或簡單裁剪級所拋棄。最終,將合格的三角形傳送至設定及光柵化單元28及30。
基線架構的第二部分係包含光柵化30、深度32、著色及紋理33、及色彩混合34的像素管。像素管以光柵化單元30開始,其決定位於由幾何管線傳送的三角形之內側或邊緣上的所有像素的位置。另外,其將三角形分割為傳送至用於深度測試的深度(Z)管32之像素的對稱區塊。當能將3D場景中的多個物件映射至相同位置時,深度管決定嵌入在區塊中的像素是否最接近觀察者或為屬於不同物件的先前觀察像素所隱藏。深度測試合格的像素針 對決定彼等的顏色及相關於彼等的其他屬性受著色(著色及紋理33)。最終,將像素的計算值傳送至色彩管34,其能選擇性地將計算值與先前已知狀態混合或傳送彼等以更新框緩衝器。
參考圖2,軟體(SW)60針對各管66或68分割命令序列,以致能POSH管66領先渲染管68運行。提供基礎架構以(當需要時)經由軟體插入命令將二管同步。POSH命令串流器(POCS)64也管理POSH管線的「平行狀態」,使得習知渲染管線能繼續產生進展。
渲染器加POSH管線63可係不對軟體排程器造成改變、移除包含在排程中之複雜性及延遲的單一單石引擎。一旦將背景提交至渲染器引擎,POSH及渲染器引擎二者平行地執行,導致POSH輸出由渲染器引擎消耗。將POSH硬體管線66建造為係既存渲染器管線68的輔助管線,其能組態成基於在背景層級、命令緩衝器層級、或基元層級的工作量需求階層地致能或除能。
提交至實行POSH功能之渲染器引擎的背景稱為「POSH致能」背景。圖形驅動程式可在背景產生時決定背景係POSH致能的。藉由設定渲染器引擎之暫存器中的「POSH致能」位元,背景可對硬體指示為係POSH致能的。軟體為POSH致能的背景配置額外的分離記憶體空間,POSH LRCA 86。POSH管可將POSH LRCA記憶體空間用於其之背景狀態管理。
至硬體的工作量係以背景粒度提交。將背景描述器提 交為其係指向記憶體之指標器的提交,該記憶體具有硬體執行背景所需之與背景有關的所有細節。渲染器環狀背景72係背景影像的一部分,其具有與用於背景記憶體存取之記憶體設定有關的資訊。渲染器環狀背景也具有陳述背景係POSH致能與否的暫存器86。渲染器環狀背景也具有環狀緩衝器56的細節,其係用於提交命令的主要機構及用於背景之執行的命令緩衝器。
渲染器PPHWSP 74及POSH PPHWSP 85係用於軟體及硬體用途的暫用空間。彼等主要由硬體使用以回報背景的統計。軟體將此空間用於隨時回報圍欄值。
POSH環狀背景89係背景的一部分,其具有環狀緩衝器的細節,其係用於提交命令之主要機構及用於背景之執行的命令緩衝器。RCS及POCS二者共享相同的環狀緩衝器56。環狀緩衝器係使用頭指標器88/90及尾指標器92管理的圓形儲存器,以指示軟體中何處的命令供硬體執行。軟體將命令程式化至環狀緩衝器中,並更新指示待執行的最末指令之位置的尾指標器。硬體執行從頭指標器開始的命令,並保持執行指令直到其到達尾指標器。每當硬體產生向前進度時,其增加頭指標器指示其已產生的進度。即使POCS及RCS共享相同的環狀緩衝器及尾指標器,當彼等各者以自有步調彼此非同步地執行時,彼等具有頭指標器的自有複本。RCS頭指標器88係RCS的頭指標器。POCS頭指標器90係POCS的頭指標器。
工作量係在背景粒度上提交至RCS(隱含地提交至 POCS)。背景能由於各種原因切換出(旗號等待、等待顯示事件、或來自軟體的佔先)。當將背景切換出時,需要將其目前狀態保存至POSH引擎背景91或渲染器引擎背景93,使得當重提交時,其能從其已離開的位置還原及恢復。然而,硬體支援其中POCS及RCS二者能具有自有的獨立環狀緩衝器的基礎架構。
可將背景提交模型視覺化為提交至渲染器命令串流器(RCS)62的背景,其係渲染器引擎之硬體前端63的一部分。硬體前端負責取得命令,設定管線狀態、還原狀態、及將命令傳送至下游管線。RCS設定硬體中的背景定義,並觸發POSH管以執行POSH致能背景,導致相同的環狀緩衝器由渲染器管及POSH管平行的執行。
POSH管具有稱為POCS(POSH命令串流器)64的自有命令串流器。相似地,由於待決背景,例如,由於等待事件、旗號等待、或佔先,當背景在渲染器管切換出時,RCS確保POSH管係佔先的,且其對應邏輯狀態由POCS保存。
軟體60僅直接連接至RCS。在一實施例中,其經由RCS僅連接至POCS。
在POCS及RCS執行相同的環狀緩衝器56的同時,POCS及RCS係彼此不同步地執行相同的環狀緩衝器。在一範例中,軟體60可經由旗號確保POCS及RCS彼此同步。軟體可提供待由RCS及POCS執行的獨立命令緩衝器(批次緩衝器)。
二引擎各者,渲染器管線及POSH管線,具有係引擎的邏輯狀態之稱為邏輯環狀背景(LRC)的自有狀態。
RCS具有指向POSH邏輯環狀背景位址(LRCA)86的指標器87。POSH LRCA 86指向POSH PPHWSP 85的開始。各引擎可獨立地設定命令所儲存的位置、開始指標器、及引擎的狀態。邏輯環狀背景位址對每一個背景係虛擬位址。各引擎具有特殊狀態以開始引擎操作。各引擎從RCS取得最初狀態。RCS知道POSH在何處致能。
POCS從屬於RCS。POCS係由RCS觸發,然後其取得自有狀態並開始操作。
環狀緩衝器56係命令對二引擎程式化之處。有命令緩衝器在環狀緩衝器中。二組不同的命令執行係從環狀緩衝器傳送。二命令串流器從記憶體50中的LRC取得彼等的狀態。二命令串流器以自有步調平行地處理相同操作。然而,環狀緩衝器的執行導致二組不同的命令序列。背景能對RCS及POCS各者組態以具有其自有的環狀緩衝器。
有間接指標器在環狀緩衝器內。第一層級批次緩衝器開始(BBS)指示從環狀緩衝器遵循的方向以執行在記憶體中它處的命令。在批次緩衝器內,有前進至第二層級批次緩衝器,且最終前進至第二層級批次緩衝器結束(BBE)的更間接指標器。然後流程返回至第一層級批次緩衝器。
批次緩衝器結束(BBE)指示停止,並回到流程自其取得批次緩衝器位址(BBA)的先前層級。然後向前進, 界定導致命令信號的批次緩衝器開始(BBS)。
環狀緩衝器命令串流器渲染由軟體封裝的命令串流器命令。環狀緩衝器由RCS執行。
批次緩衝器中的二位元指示POSH致能及POSH開始的一者。POSH致能係對命令串流器之一部分的提示,指示來自特定間接指標器的命令序列。此間接指標器具有意欲由命令串流器的POSH部分執行的命令。來自此間接指標器的POSH開始命令意欲由POSH執行。POSH開始將命令序列不應由RCS執行告知渲染器命令串流器。
圖3係渲染器命令處理的流程圖。圖3所示的序列可用軟體、韌體、及/或硬體實作。在軟體及韌體實施例中,其可能藉由儲存在一或多個非暫時電腦可讀儲存媒體,諸如,磁性、光學、或半導體儲存器中的電腦執行指令實作。例如,作為二範例,指令可儲存在圖形處理單元中或儲存在與圖形處理單元關聯的儲存器中。
POSH開始命令緩衝器係待由POSH管執行的專屬命令緩衝器(批次緩衝器),藉由設定MI_BATCH_BUFFER_START命令標頭中的欄位「POSH開始」指示。一旦將「POSH開始」設定在批次緩衝器中,所有後續鏈接批次緩衝器及次層級批次緩衝器隱含地繼承「POSH開始」欄位值。一旦將「POSH開始」設定在批次緩衝器中,所有後續命令序列將由POCS執行,直到對應的批次緩衝器序列經由批次結束命令終止。在剖析具有「POSH開始」致能的MI_BATCH_BUFFER_START 命令時,RCS不操作(NOOPS)命令,並前進至後續命令。
最初,如方塊94所指示的,從環狀緩衝器提取命令。其次,在菱形96,流程決定MI_BATCH_BUFFER_START命令是否在命令標頭中發現。若為真,在菱形98的檢查決定POSH開始是否設定在MI_BATCH_BUFFER_START命令標頭中。若為真,則如方塊100所指示的,沒有操作(NOOP)。在菱形102的檢查決定此是否係最後命令。若為真,流程結束,否則流程迭代。
若在菱形98的檢查指示POSH開始未設定,則在方塊106將渲染器命令處理實作為以處理MI_BATCH_BUFFER_START命令開始。在菱形108的檢查決定批次緩衝器次層級及批次緩衝器有效是否設定在MI_BATCH_BUFFER_START命令標頭中。若為真,在方塊110中,使用如方塊110中所指示的相關陳述,將批次緩衝器開始位址及相關狀態推至堆疊上。然後流程返回至方塊114。在方塊114,取樣新的批次緩衝器開始位址並設定批次緩衝器有效。
在方塊116,從批次緩衝器提取命令。在菱形118的檢查決定其是否係批次開始命令。若為真,在菱形128,檢查決定POSH開始是否設定在MI_BATCH_BUFFER_START命令標頭中。若為否,流程回到方塊106。否則,流程前進至無操作方塊130,然後返回至方塊116。
其次,在菱形120的檢查決定是否已指示批次結束命 令。若為否,命令在方塊124中執行,且流程返回至方塊116。
然而,若已指示批次結束命令,則在菱形122的檢查決定堆疊是否係空的。針對最早的批次緩衝器處理,批次結束堆疊將係空的。舉在批次緩衝器內將具有次層級的批次緩衝器開始命令設定為已處理的情形為例,儲存目前執行指標器(推至堆疊上)並跳躍至所指向的新地點。在次一執行序列中,當遭遇到批次結束時,硬體基於堆疊狀態知道其必需返回先前未決點或至環狀緩衝器。
在圖5中,當執行流程從第一層級批次緩衝器前進至第二層級批次緩衝器時,將第一層級的執行指標器推至堆疊上。相似地,每當執行從第二層級批次緩衝器前進至第三層級批次緩衝器並至第四層級批次緩衝器,將第二及第三層級批次緩衝器的執行指標器推至堆疊上。當批次結束在任何點執行時,其意謂著取得堆疊上之保持返回追縱路徑的最末值。若菱形122的檢查指示係空的,在方塊124重設批次緩衝器有效指示。否則,在方塊112中,堆疊彈出以更新批次緩衝器提取位址及相關狀態,然後流程返回至方塊114。
POSH致能命令緩衝器如下所示。POCS剖析/偏歷(不執行)環狀緩衝器以找尋程式化有「POSH開始」欄位設定的批次緩衝器。MI_BATCH_BUFFER_START命令中的「POSH致能」欄位係對POCS的提示,以遍歷(剖析,不執行)批次緩衝器以找尋「POSH開始」批次緩衝器 。與「POSH開始」欄位不同,「POSH致能」欄位僅繼承至鏈接批次緩衝器,且不繼承至次層級批次緩衝器。將「POSH致能」欄位明顯地設定在MI_BATCH_BUFFER_START命令中,其呼叫次層級批次緩衝器,以供POCS剖析彼等以找尋「POSH開始」批次緩衝器。在POCS中,「POSH開始」欄位優先於「POSH致能」欄位。由於設定在MI_BATCH_BUFFER_START命令中的「POSH致能」欄位,RCS忽略「POSH致能」欄位且不暗示。
POSH環狀緩衝器操作如下。僅關於位置的著色器命令串流器(POCS)及渲染器命令串流器(RCS)共享相同的環狀緩衝器。POCS剖析環狀緩衝器以找尋具有「POSH致能」或「POSH開始」欄位設定的枇次緩衝器開始命令。其不執行編程在環狀緩衝器中的任何命令。執行相同環狀緩衝器的POCS及RCS基於編程在各種批次緩衝器中的「POSH開始」及「POSH致能」欄位(其中BB代表批次緩衝器)導致二個不同命令序列。
下表總結橫跨鏈接及巢狀(次層級、第一層級至第二層級至第三層級)批次緩衝器(其中BB代表「批次緩衝器」)繼承的「POSH開始」及「POSH致能」批次緩衝器旗標。
下表總結在看到「POSH致能」及「POSH開始」欄 位設定時,POCS及RCS命令剖析器的行為(其中CS代表命令串流器):
圖4A及4B根據一實施例顯示POSH命令處理。圖4A及4B所示的序列可用軟體、韌體、及/或硬體實作。在軟體及韌體實施例中,其可能藉由儲存在一或多個非暫時電腦可讀儲存媒體,諸如,磁性、光學、或半導體儲存器中的電腦執行指令實作。例如,作為二範例,指令可儲存在圖形處理單元中或儲存在與圖形處理單元關聯的儲存器中。
在圖4A中,步驟94、96、98、100、102、及104與已結合圖3描述的步驟相同。然而,在圖4A中,若POSH開始或POSH致能設定在MI_BATCH_BUFFER_START命令中,流程如先前般地繼續,但若不係該情形,則流程前進至圖4B中的POSH命令處理。
首先,處理MI_BATCH_BUFFER_START命令在方塊131中運行(圖4B)。其次,在菱形132的檢查決定POSH致能是否設定在MI_BATCH_BUFFER_START命令中。若為真,如方塊134中所指示的,設定POSH開始旗標。
若為否,則在菱形135的檢查決定POSH開始傳送是否設定在MI_BATCH_BUFFER_START中。若為真,在方塊136中,設定POSH致能旗標。若為否,在菱形137的檢查決定批次緩衝器次層級是否設定在MI_BATCH_BUFFER_START命令中及是否設定批次緩衝器有效。若為真,流程前進至圖4A中的方塊140。將批次緩衝器提取位址推至堆疊並將POSH開始旗標及POSH致能旗標推至堆疊。然後流程在從圖4A或從方塊138的任一情形中返回至方塊142。其次,在菱形144的檢查決定其是否係批次緩衝器開始命令。若為否,在菱形146的檢查決定其是否係批次結束命令。
若為否,在菱形148的檢查決定POSH開始旗標是否等於一。若為真,該命令在150執行,否則沒有操作在方塊152完成,且流程返回至方塊142。然後,在方塊154中重設POSH致能旗標及POSH開始旗標(圖4B)。
其次,在菱形156的檢查決定堆疊是否係空的。若為真,在158重設批次緩衝器有效,否則流程前進至方塊161(圖4A)以彈出堆疊,以更新批次緩衝器提取位址、POSH開始旗標、及POSH致能旗標。然後流程返回至方塊142(圖4B)。
若在菱形144係批次開始命令,流程前進至菱形160。檢查POSH致能是否設定在MI_BATCH_BUFFER_START命令中。若為真,在方塊162中,設定POSH致能旗標。
若在菱形160發現POSH致能未設定,在菱形164的 檢查決定POSH開始是否設定在MI_BATCH_BUFFER_START命令中或POSH開始旗標是否等於一。若為真,在方塊166設定POSH開始旗標。若為否,前進至菱形方塊168。檢查POSH開始旗標或POSH致能旗標是否等於零。若為真,前進至NOOP 170並返回至方塊142。若為否,流程回到方塊131。
一種機制平行地運行對軟體排程器看起來像是單一單石引擎的二個獨立引擎。在部分實施例中,彼等將以最佳方式使用單一環狀緩衝器以提交命令緩衝器給POSH及RCS二者的彈性提供給軟體。其也允許在可致能POSH管領先多遠上的軟體控制,並可提供二執行管之間的同步掛鉤。
本文相關於包含僅關於位置的著色器及渲染器引擎之實施例描述的技術可更通常地施用至在平行於主引擎之管的管中運行的任何從屬引擎,諸如,僅關於位置的著色器,其中該從屬引擎領先主引擎運行。
圖6根據實施例描繪處理系統100的方塊圖。在各種實施例中,系統100包括一或多個處理器102及一或多個圖形處理器108,並可係單處理器桌上型系統、多處理器工作站系統、或具有大量處理器102或處理器核心107的伺服器系統。在一實施例中,系統100係合併在使用在行動、手持、或嵌入式設備中之系統單晶片(SoC)積體電路內的處理平台。
系統100的實施例能包括,或併入基於伺服器的遊戲 平台、遊戲控制台,包括遊戲及媒體控制台、行動遊戲控制台、手持遊戲控制台、或線上遊戲控制台內。在部分實施例中,系統100係行動電話、智慧型手機、平板計算裝置、或行動網際網路裝置。資料處理系統100也能包括可穿戴裝置、與其耦接、或積集於其內,諸如,智慧型手錶可穿戴裝置、智慧型眼鏡裝置、擴增實境裝置、或虛擬實境裝置。在部分實施例中,資料處理系統100係具有一或多個處理器102及藉由一或多個圖形處理器108產生之圖形介面的電視機或機上盒裝置。
在部分實施例中,一或多個處理器102各者包括一或多個處理器核心107以處理當執行時實施用於系統及使用者軟體之操作的指令。在部分實施例中,一或多個處理器核心107各者組態成處理特定指令集109。在部分實施例中,指令集109可協助複雜指令集計算(CISC)、精簡指令集計算(RISC)、或經由極長指令(VLIW)的計算。多個處理器核心107各者可處理不同指令集109,其可包括指令以協助其他指令集的模擬。處理器核心107也可包括其他處理裝置,諸如,數位訊號處理器(DSP)。
在部分實施例中,處理器102可包括快取記憶體104。取決於架構,處理器102能具有單內部快取記憶體或多級內部快取記憶體。在部分實施例中,快取記憶體在處理器102的各種組件之間共享。在部分實施例中,處理器102也使用外部快取記憶體(例如,3級(L3)快取記憶體、或末級快取記憶體(LLC))(未圖示),其可使 用已知快取一致性技術在處理器核心107之間共享。其可包括用於儲存不同種類的資料之不同種類的暫存器(例如,整數暫存器、浮點暫存器、狀態暫存器、及指令指標器暫存器)的暫存器檔案106另外包括在處理器102中。部分暫存器可係通用暫存器,同時其他暫存器對處理器102的設計可係特定的。
在部分實施例中,處理器102耦接至處理器匯流排110,以在處理器102及系統100中的其他組件之間傳輸通訊信號,諸如,位址、資料、或控制信號。在一實施例中,系統100使用例示「集線器」系統架構,包括記憶體控制器集線器116及輸入輸出(I/O)控制器集線器130。記憶體控制器集線器116協助記憶體裝置及系統100的其他組件之間的通訊,同時I/O控制器集線器(ICH)130經由區域I/O匯流排提供至I/O設備的連接。在一實施例中,記憶體控制器集線器116的邏輯積集在處理器內。
記憶體裝置120可係動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、相變記憶體裝置、或具有適當效能以作為處理記憶體的某些其他記憶體裝置。在一實施例中,記憶體裝置120能操作為系統100的系統記憶體,以儲存當一或多個處理器102執行應用程式或處理時使用的資料122及指令121。記憶體控制器集線器116也與選擇性的外部圖形處理器112耦接,其可與處理器102中的一或多個圖形處理器108通訊以實施圖形及媒體操作。
在部分實施例中,ICH 130致能周邊經由高速I/O匯流排連接至記憶體裝置120及處理器102。I/O周邊包括,但未限於,音訊控制器146、韌體介面128、無線收發器126(例如,Wi-Fi、藍牙)、資料儲存裝置124(例如,硬碟驅動器、快閃記憶體等)、及用於耦接傳統(例如,個人系統2(PS/2))裝置至系統的傳統I/O控制器140。一或多個通用串列匯流排(USB)控制器142連接輸入裝置,諸如,鍵盤及滑鼠144組合。網路控制器134也可耦接至ICH 130。在部分實施例中,高效能網路控制器(未圖示)耦接至處理器匯流排110。將理解當也可使用受不同組態的其他種類的資料處理系統時,所示系統100係例示性且非限制性的。例如,I/O控制器集線器130可積集在一或多個處理器102內,或記憶體控制器集線器116及I/O控制器集線器130可積集至散離外部圖形處理器中,諸如,外部圖形處理器112。
圖7係具有一或多個處理器核心202A-202N、積集記憶體控制器214、及積集圖形處理器208的處理器200之實施例的方塊圖。具有與本文任何其他圖式之元件相同的參考數字(或名稱)之圖7的此等元件能以與本文他處描述之方式相似的任何方式操作或運作,但未受限於此。處理器200能包括多達並包括藉由虛線方塊表示之額外核心202N的額外核心。各處理器核心202A-202N包括一或多個內部快取記憶體單元204A-204N。在部分實施例中,各處理器核心也具有對一或多個共享快取記憶體單元206的 存取。
內部快取記憶體單元204A-204N及共享快取單元206代表處理器200內的快取記憶體階層。快取記憶體階層可包括在各處理器核心內的至少一級指令及資料快取記憶體及一或多級共享中級快取記憶體,諸如,2級(L2)、3級(L3)、4級(L4)、或其他級快取記憶體,其中將外部記憶體之前的最高級快取記憶體分類為LLC。在部分實施例中,快取一致性邏輯保持各種快取記憶體單元206及204A-204N之間的一致性。
在部分實施例中,處理器200也可包括一組一或多個匯流排控制器單元216及系統代理器核心210。一或多個匯流排控制器單元216管理一組周邊匯流排,諸如,一或多個週邊組件互連匯流排(例如,PCI、快速PCI)。系統代理器核心210提供用於各種處理器組件的管理功能。在部分實施例中,系統代理器核心210包括一或多個積集記憶體控制器214以管理對各種外部記憶體裝置(未圖示)的存取。
在部分實施例中,處理器核心202A-202N的一或多者包括對同時多執行緒的支援。在此種實施例中,系統代理器核心210包括用於在多執行緒處理期間協調及操作核心202A-202N的組件。系統代理器核心210可額外包括電源控制單元(PCU),其包括邏輯及組件以調節處理器核心202A-202N及圖形處理器208的電源狀態。
在部分實施例中,處理器200額外包括圖形處理器 208以執行圖形處理操作。在部分實施例中,圖形處理器208與該組共享快取記憶體單元206及包括一或多個積集記憶體控制器214的系統代理器核心210耦接。在部分實施例中,顯示控制器211與圖形處理器208耦接以驅動圖形處理器輸出至一或多個耦接的顯示器。在部分實施例中,顯示控制器211可係經由至少一個互連與圖形處理器耦接的分離式模組,或可積集在圖形處理器208或系統代理器核心210內。
在部分實施例中,使用環形為基的互連單元212以耦接處理器200的內部組件。然而,可使用替代互連單元,諸如,點-對-點互連、交換互連、或包括本技術中已為人所熟知之技術的其他技術。在部分實施例中,圖形處理器208經由I/O鏈路213與環形互連212耦接。
例示I/O鏈路213代表I/O互連之多個變化的至少一者,包括協助各種處理器組件及高效能嵌入式記憶體模組218,諸如,eDRAM模組,之間的通訊的封裝上I/O互連。在部分實施例中,各處理器核心202A-202N及圖形處理器208將嵌入式記憶體模組218使用為共享最末級快取記憶體。
在部分實施例中,處理器核心202A-202N係執行相同指令集架構的同質核心。在另一實施例中,處理器核心202A-202N依據指令集架構(ISA)係異質的,其中處理器核心202A-N的一或多者執行第一指令集,同時其他核心的至少一者執行第一指令集的子集或不同指令集。在一 實施例中,處理器核心202A-202N依據微架構係異質的,其中具有相對高功率消耗的一或多個核心與具有低功率消耗的一或多個功率核心耦接。另外,處理器200可實作在一或多個晶片上,或實作為除了具有其他組件外的所說明組件的SoC積體電路。
圖8係可係分離式圖形處理單元或可係與複數個處理核心積集之圖形處理器的圖形處理器300的方塊圖。在部分實施例中,圖形處理器經由記憶體映射I/O介面通訊至圖形處理器上的暫存器及使用放入處理器記憶體中的命令通訊。在部分實施例中,圖形處理器300包括記憶體介面314以存取記憶體。記憶體介面314能係至區域記憶體、一或多個內部快取記憶體、一或多個共享外部快取記憶體、及/或系統記憶體的介面。
在部分實施例中,圖形處理器300也包括顯示控制器302以驅動顯示器輸出資料至顯示器裝置320。顯示控制器302包括用於顯示器及多層視訊或使用者介面元件之組合的一或多個重疊平面的硬體。在部分實施例中,圖形處理器300包括視訊編碼解碼器引擎306以編碼、解碼、或轉碼媒體至一或多個媒體編碼格式、自其編碼、解碼、或轉碼媒體、或在之間編碼、解碼、或轉碼媒體,包括,但未受限於,動畫專家群組(MPEG)格式,諸如,MPEG-2、先進視訊編碼(AVC)格式,諸如,H.264/MPEG-4 AVC,以及電影與電視工程師協會(SMPTE)421M/VC-1、及聯合照相專家群(JPEG)格式,諸如,JPEG、及動 畫JPEG(MJPEG)格式。
在部分實施例中,圖形處理器300包括區塊影像轉換(BLIT)引擎304以實施包括,例如,位元邊界區塊轉換的二維(2D)光柵器操作。然而,在一實施例中,2D圖形操作使用圖形處理引擎(GPE)310的一或多個組件實施。在部分實施例中,圖形處理引擎310係用於實施包括三維(3D)圖形操作及媒體操作之圖形操作的計算引擎。
在部分實施例中,GPE 310包括用於實施3D操作的3D管線312,諸如,使用作用在3D基元形狀上(例如,矩形、三角形等)的處理功能渲染三維影像及場景。3D管線312包括在元件內實施各種工作及/或產生執行緒至3D/媒體次系統315的可程式化及固定功能元件。在3D管線312能用於實施媒體操作的同時,GPE 310的實施例也包括特別用於實施媒體操作,諸如,視訊後續處理及影像強化,的媒體管線316。
在部分實施例中,媒體管線316包括取代或代表視訊編碼解碼器引擎306的固定功能或可程式化邏輯單元以實施一或多個特殊化媒體操作,諸如,視訊解碼加速、視訊解交錯、及視訊編碼加速。在部分實施例中,媒體管線316另外包括緒產生單元以產生用於在3D/媒體次系統315上執行的緒。已產生的緒在包括在3D/媒體次系統315中的一或多個圖形執行單元上實施用於媒體操作的計算。
在部分實施例中,3D/媒體次系統315包括用於執行 由3D管線312及媒體管線316產生之緒的邏輯。在一實施例中,管線傳送緒執行請求至3D/媒體次系統315,其包括用於仲裁及分派各種請求至可用緒執行資源的緒分派邏輯。執行資源包括圖形執行單元的陣列以處理3D及媒體緒。在部分實施例中,3D/媒體次系統315包括用於緒指令及資料的一或多個內部快取記憶體。在部分實施例中,次系統也包括共享記憶體,包括暫存器及可定址記憶體,以在緒之間共享資料及儲存輸出資料。
圖9係根據部分實施例的圖形處理器之圖形處理引擎410的方塊圖。在一實施例中,GPE 410係顯示於圖8中之GPE 310的版本。具有與本文任何其他圖式之元件相同的參考數字(或名稱)之圖9的元件能以與本文他處描述之方式相似的任何方式操作或運作,但未受限於此。
在部分實施例中,GPE 410與命令串流器403耦接,其提供命令串流至GPE的3D及媒體管線412、416。在部分實施例中,命令串流器403耦接至記憶體,其能係系統記憶體,或內部快取記憶體及共享快取記憶體的一或多者。在部分實施例中,命令串流器403從記憶體接收命令並傳送命令至3D管線412及/或媒體管線416。該命令係從儲存用於3D及媒體管線412、416之命令的環形緩衝器提取的指令。在一實施例中,環形緩衝器能另外包括儲存多個命令之批次的批次命令緩衝器。3D及媒體管線412、416藉由經由個別管線內的邏輯實施操作或藉由分派一或多個執行緒至執行單元陣列414而處理命令。在部分實施 例中,執行單元陣列414係可縮放的,使得陣列基於GPE 410的目標電源及效能等級包括可變數量的執行單元。
在部分實施例中,取樣引擎430與記憶體(例如,快取記憶體或系統記憶體)及執行單元陣列414耦接。在部分實施例中,取樣引擎430為執行單元陣列414提供允許執行陣列414從記憶體讀取圖形及媒體資料的記憶體存取機制。在部分實施例中,取樣引擎430包括邏輯以實施用於媒體的特殊化影像取樣操作。
在部分實施例中,取樣引擎430中的特殊化媒體取樣邏輯包括去雜訊/解交錯模組432、動作估計模組434、及影像縮放及過濾模組436。在部分實施例中,去雜訊/解交錯模組432包括邏輯以在已解碼視訊資料上實施去雜訊或解交錯演算法的一或多者。解交錯邏輯將交錯視訊內容的交替場結合成單一視訊框。去雜訊邏輯減少或移除來自視訊及影像資料的資料雜訊。在部分實施例中,去雜訊邏輯及解交錯邏輯係動作調適的,並基於在視訊資料中偵測的動作量使用空間或時間過濾。在部分實施例中,去雜訊/解交錯模組432包括專用動作偵測邏輯(例如,在動作估計引擎434內)。
在部分實施例中,動作估計引擎434藉由實施視訊加速功能,諸如,視訊資料上的動作向量估計及預測,為視訊操作提供硬體加速。動作估計引擎決定描述連續視訊框之間的影像資料之變換的動作向量。在部分實施例中,圖形處理器媒體編碼解碼器使用視訊動作估計引擎434以在 其可係太過計算密集而不能使用通用處理器實施之巨集區塊層級的視訊上實施操作。在部分實施例中,動作估計引擎434通常可用於圖形處理器組件以輔助對視訊資料內之動作的方向或幅度靈敏或適應其的視訊解碼及處理功能。
在部分實施例中,影像縮放及過濾模組436實施影像處理操作以增強所產生之影像及視訊的視覺品質。在部分實施例中,縮放及過濾模組436在將資料提供至執行單元陣列414之前的取樣操作期間處理影像及視訊資料。
在部分實施例中,GPE 410包括資料埠444,其為圖形次系統提供存取記憶體的額外機制。在部分實施例中,資料埠444協助用於操作的記憶體存取,包括渲染目標寫入、固定緩衝器讀取、暫用記憶體空間讀/寫、及媒體表面存取。在部分實施例中,資料埠444包括快取記憶體空間以快取對記憶體的存取。快取記憶體能係單一資料快取記憶體或能分割為用於多個次系統之經由資料埠存取記憶體的多個快取記憶體(例如,渲染緩衝器快取記憶體、固定緩衝器快取記憶體等)。在部分實施例中,在執行單元陣列414中之執行單元上執行的緒藉由經由耦接GPE 410之各次系統的資料分配互連交換訊息而與資料埠通訊。
圖10係圖形處理器500之另一實施例的方塊圖。具有與本文任何其他圖式之元件相同的參考數字(或名稱)之圖10的元件能以與本文他處描述之方式相似的任何方式操作或運作,但未受限於此。
在部分實施例中,圖形處理器500包括環形互連 502、管線前端504、媒體引擎537、及圖形核心580A-580N。在部分實施例中,環形互連502將圖形處理器耦接至其他處理單元,包括其他圖形處理器或一或多個通用處理器核心。在部分實施例中,圖形處理器係積集在多核心處理系統內之許多處理器的一者。
在部分實施例中,圖形處理器500經由環型互連502接收命令的批次。輸入命令係由管線前端504中的命令串流器503解譯。在部分實施例中,圖形處理器500包括可縮放執行邏輯以經由圖形核心(等)580A-580N實施3D幾何處理及媒體處理。針對3D幾何處理命令,命令串流器503供應命令至幾何管線536。針對至少部分的媒體處理命令,命令串流器503供應命令至與媒體引擎537耦接的視訊前端534。在部分實施例中,媒體引擎537包括用於視訊及影像後續處理的視訊品質引擎(VQE)530及多格式編碼/解碼(MFX)533引擎以提供硬體加速媒體資料編碼及解碼。在部分實施例中,幾何管線536及媒體引擎537各者針對由至少一個圖形核心580A提供的緒執行資源產生執行緒。
在部分實施例中,圖形處理器500包括可縮放緒執行資源特性模核心580A-580N(有時稱為核心片),各者具有多個次核心550A-550N、560A-560N(有時稱為核心次片)。在部分實施例中,圖形處理器500能具有任何數目的圖形核心580A至580N。在部分實施例中,圖形處理器500包括具有至少第一次核心550A及第二次核心560A的 圖形核心580A。在其他實施例中,圖形處理器係具有單一次核心(例如,550A)的低功率處理器。在部分實施例中,圖形處理器500包括多個圖形核心580A-580N,各者包括一組第一次核心550A-550N及一組第二次核心560A-560N。在該組第一次核心550A-550N中的各次核心包括至少第一組執行單元552A-552N及媒體/紋理取樣器554A-554N。在該組第二次核心560A-560N中的各次核心包括至少第二組執行單元562A-562N及取樣器564A-564N。在部分實施例中,各次核心550A-550N、560A-560N共享一組共享資源570A-570N。在部分實施例中,共享資源包括共享快取記憶體及像素操作邏輯。其他共享資源也可包括在圖形處理器的各種實施例中。
圖11描繪包括使用在GPE之部分實施例中的處理元件陣列的緒執行邏輯600。具有與本文任何其他圖式之元件相同的參考數字(或名稱)之圖11的元件能以與本文他處描述之方式相似的任何方式操作或運作,但未受限於此。
在部分實施例中,緒執行邏輯600包括像素著色器602、緒分派器604、指令快取記憶體606、包括複數個執行單元608A-608N的可縮放執行單元陣列、取樣器610、資料快取記憶體612、及資料埠614。在一實施例中,經由鏈接至各組件的互連結構將所包括的組件互連。在部分實施例中,緒執行邏輯600包括經由指令快取記憶體606、資料埠614、取樣器610、及執行單元陣列608A- 608N的一或多者至記憶體,諸如,系統記憶體或快取記憶體,的一或多個連接。在部分實施例中,各執行單元(例如,608A)係能執行多個同步緒及為各緒平行地處理多個資料元件的獨立向量處理器。在部分實施例中,執行單元陣列608A-608N包括任何數目的獨立執行單元。
在部分實施例中,執行單元陣列608A-608N主要用於執行「著色器」程式。在部分實施例中,陣列608A-608N中的執行單元執行包括對許多標準3D圖形著色器指令的原生支援的指令集,使得來自圖形程式庫(例如,Direct 3D及OpenGL)的著色器程式使用最小轉譯執行。執行單元支援頂點及幾何處理(例如,頂點程式、幾何程式、頂點著色器)、像素處理(例如,像素著色器、片段著色器)、及通用處理(例如,計算及媒體著色器)。
執行單元陣列608A-608N中的各執行單元在資料元件的陣列上操作。資料元件的數量係「執行尺寸」或該指令的通道數。執行通道係用於指令內的資料元件存取、遮罩、及流程控制之執行的邏輯單元。通道數可與用於特定圖形處理器之實體算術邏輯單元(ALU)或浮點單元(FPU)的數量無關。在部分實施例中,執行單元608A-608N支援整數及浮點資料類別。
執行單元指令集包括單指令多資料(SIMD)指令。各種資料元件能作為封裝資料類別儲存在暫存器中,且執行單元將基於元件的資料尺寸處理各種元件。例如,當在256-位元寬的向量上操作時,向量的256個位元儲存在暫 存器中,且執行單元在作為四個分離的64-位元封裝資料元件(四字組(QW)尺寸資料元件)、八個分離的32-位元封裝資料位元(雙字組(DW)尺寸資料元件)、十六個分離的16-位元封裝資料元件(字組(W)尺寸資料元件)、或三十二個分離的8-位元資料元件(位元組(B)尺寸資料元件)的向量上操作。然而,不同的向量寬度及暫存器尺寸係可能的。
一或多個內部指令快取記憶體(例如,606)包括在緒執行邏輯600中以快取用於執行單元的緒指令。在部分實施例中,包括一或多個資料快取記憶體(例如,612)以在緒執行期間快取緒資料。在部分實施例中,包括取樣器610以提供用於3D操作的紋理取樣及用於媒體操作的媒體取樣。在部分實施例中,取樣器610包括特殊化紋理或媒體取樣功能以在提供已取樣資料至執行單元之前的取樣處理期間處理紋理或媒體資料。
在執行期間,圖形及媒體管線經由緒產生及分派邏輯傳送緒啟始請求至緒執行邏輯600。在部分實施例中,緒執行邏輯600包括仲裁來自圖形及媒體管線之緒啟始請求及在一或多個執行單元608A-608N上將該已請求緒實例化的區域緒分派器604。例如,幾何管線(例如,圖10的536)調度頂點處理、鑲嵌、或幾何處理緒至緒執行邏輯600(圖11)。在部分實施例中,緒分派器604也能處理來自執行著色器程式的運行時緒產生請求。
一旦幾何物件的群組已受處理並光柵化為像素資料, 調用像素著色器602以更計算輸出資訊並導致結果寫至輸出表面(例如,彩色緩衝器、深度緩衝器、模版緩衝器等)。在部分實施例中,像素著色器602計算待橫跨光柵化物件內插之各種頂點屬性的值。在部分實施例中,然後像素著色器602執行應用程式發展介面(API)-支援的像素著色器程式。為執行像素著色器程式,像素著色器602經由緒分派器604分派緒至執行單元(例如,608A)。在部分實施例中,像素著色器602使用取樣器610中的紋理取樣邏輯以存取儲存在記憶體中之紋理映射中的紋理資料。紋理資料及輸入幾何資料上的算術操作計算各幾何片段的像素顏色值,或從進一步處理拋棄一或多個像素。
在部分實施例中,資料埠614提供用於緒執行邏輯600的記憶體存取機制以針對圖形處理器輸出管線上之處理輸出已處理資料至記憶體。在部分實施例中,資料埠614包括或耦接至一或多個快取記憶體(例如,資料快取記憶體612)以經由資料埠快取用於記憶體存取的資料。
圖12係根據部分實施例描繪圖形處理器指令格式700的方塊圖。在一或多個實施例中,圖形處理器執行單元支援具有採用多種格式之指令的指令集。實線框描繪通常包括在執行單元指令中的成分,同時虛線包括其係選擇性的或其僅包括在指令之子集中的成分。在部分實施例中,所描述及說明的指令格式700係巨集指令,其中彼等係供應至執行單元的指令,而非一旦指令受處理從指令解碼產生的微運算。
在部分實施例中,圖形處理器執行單元原生地支援採用128-位元格式710的指令。64-位元緊湊指令格式730可基於所選擇的指令、指令選項、及運算元數對部分指令可用。原生128-位元格式710提供對所有指令選項的存取,同時部分選項及操作在64-位元格式730中受限制。在64-位元格式730中可用的原生指令隨實施例變化。在部分實施例中,指令使用索引欄位713中的一組索引值受部分壓縮。執行單元硬體基於索引值參考一組壓縮表,並使用壓縮表輸出以採用128-位元格式710重構原生指令。
針對各格式,指令運算碼712界定執行單元待實施的操作。執行單元橫跨各運算元的多個資料元件平行地執行各指令。例如,回應於加法指令,執行單元橫跨代表紋理元件或圖片元件的各顏色通道實施同步加法運算。預設執行單元橫跨運算元的所有資料通道實施各指令。在部分實施例中,指令控制欄位714致能特定執行選項上的控制,諸如,通道選擇(例如,推斷)及資料通道層級(例如,交叉混合)。針對128-位元指令710,執行尺寸欄位716限制將平行執行的資料通道數。在部分實施例中,執行尺寸欄位716不可使用在64-位元緊湊指令格式730中。
部分執行單元指令具有多達包括二個來源運算元src0 720、src1 722及一個目的718的三個運算元。在部分實施例中,執行單元支援雙目的指令,其中該目的的一者係隱含的。資料操控指令能具有第三個來源運算元(例如,SRC2 724),其中指令運算碼712決定來源運算元的數 量。指令的最後來源運算元能係隨該指令傳送的立即(例如,硬編碼)值。
在部分實施例中,128-位元指令格式710包括指定,例如,是否使用直接暫存器定址模式或間接暫存器定址模式的存取/定址模式資訊726。當使用直接暫存器定址模式時,一或多個運算元的暫存器位址係藉由指令710中的位元直接提供。
在部分實施例中,128-位元指令格式710包括存取/定址模式欄位726,其指定該指令的定址模式及/或存取模式。在一實施例中,存取模式界定指令的資料存取對準。部分實施例支援包括16-位元組對準存取模式及1-位元組對準存取模式的存取模式,其中存取模式的位元組對準決定指令運算元的存取對準。例如,當在第一模式時,指令710可將位元組對準定址用於來源及目的運算元,且當在第二模式時,指令710可將16-位元組對準定址用於所有來源及目的運算元。
在一實施例中,存取/定址模式欄位726的定址模式部分決定指令使用直接或間接定址。當使用直接暫存器定址模式時,指令710中的位元直接提供一或多個運算元的暫存器位址。當使用間接暫存器定址模式時,一或多個運算元的暫存器位址可基於指令中之位址暫存器值及位址立即欄位計算。
在部分實施例中,指令基於運算碼712位元欄位分組以簡化運算碼解碼740。針對8-位元運算碼,位元4、5、 及6允許執行單元決定運算碼的種類。所顯示的精確運算碼分組僅係範例。在部分實施例中,移動及邏輯運算碼群組742包括資料移動及邏輯指令(例如,移動(mov)、比較(cmp))。在部分實施例中,移動及邏輯群組742分享五個最高有效位元(MSB),其中移動(mov)指令採用0000xxxxb的形式且邏輯指令採用0001xxxxb的形式。流程控制指令群組744(例如,呼叫、跳躍(jmp))包括採用0010xxxxb(例如,0x20)之形式的指令。雜項指令群組746包括指令的混合,包括採用0011xxxxb(例如,0x30)之形式的同步指令(例如,等待、傳送)。平行數學指令群組748包括採用0100xxxxb(例如,0x40)之形式的逐成分算術指令(例如,加法、乘法(mul))。平行數學群組748橫跨資料通道平行地實施算術操作。向量數學群組750包括採用0101xxxxb(例如,0x50)之形式的算術指令(例如,dp4)。向量數學群組在向量運算元上實施算術,諸如,點乘積計算。
圖13係圖形處理器800之另一實施例的方塊圖。具有與本文任何其他圖式之元件相同的參考數字(或名稱)之圖13的元件能以與本文他處描述之方式相似的任何方式操作或運作,但未受限於此。
在部分實施例中,圖形處理器800包括圖形管線820、媒體管線830、顯示引擎840、緒執行邏輯850、及渲染輸出管線870。在部分實施例中,圖形處理器800係在包括一或多個通用處理核心之多核心處理系統內的圖形 處理器。圖形處理器係藉由至一或多個控制暫存器(未圖示)的暫存器寫入或經由環形互連802發佈至圖形處理器800的命令而受控制。在部分實施例中,環形互連802將圖形處理器800耦接至其他處理組件,諸如,其他圖形處理器或通用處理器。來自環形互連802的命令藉由命令串流器803解譯,其供應指令至圖形管線820或媒體管線830的個別組件。
在部分實施例中,命令串流器803指導從記憶體讀取頂點資料並執行由命令串流器803提供的頂點處理命令之頂點提取器805的操作。在部分實施例中,頂點提取器805提供頂點資料至頂點著色器807,其對各頂點實施座標空間變換及照明操作。在部分實施例中,頂點提取器805及頂點著色器807藉由經由緒分派器831分派執行緒至執行單元852A、852B而執行頂點處理指令。
在部分實施例中,執行單元852A、852B係具有用於實施圖形及媒體操作的指令集之向量處理器的陣列。在部分實施例中,執行單元852A、852B具有特別用於各陣列或在陣列間共享的附接LI快取記憶體851。快取記憶體能組態成資料快取記憶體、指令快取記憶體、或分區以在不同分區中包含資料及指令的單一快取記憶體。
在部分實施例中,圖形管線820包括鑲嵌組件以實施3D物件的硬體加速鑲嵌。在部分實施例中,可程式化外殼著色器811組態鑲嵌操作。可程式化域著色器817提供鑲嵌輸出的後端估算。鑲嵌器813在外殼著色器811的方 向上操作並包含專用邏輯以基於作為輸入提供至圖形管線820的粗糙幾何模型產生一組詳細幾何物件。在部分實施例中,若不使用鑲嵌,鑲嵌組件811、813、817能略過。
在部分實施例中,完全幾何物件能經由分派至執行單元852A、852B的一或多個緒而藉由幾何著色器819處理,或能直接進行至限幅器829。在部分實施例中,幾何著色器在全體幾何物件上操作,而非如圖形管線的先前階段,在頂點或頂點的貼片上操作。若將鑲嵌除能,幾何著色器819接收來自頂點著色器807的輸入。在部分實施例中,若將鑲嵌單元除能,幾何著色器819可藉由幾何著色器程式程式化以實施幾何鑲嵌。
限幅器829在光柵化之前處理頂點資料。限幅器829可係固定功能限幅器或具有限幅及幾何著色器功能的可程式化限幅器。在部分實施例中,渲染輸出管線870中的光柵器/深度873調度像素著色器以將幾何物件轉換為彼等的每像素表示。在部分實施例中,像素著色器邏輯包括在緒執行邏輯850中。在部分實施例中,應用程式能略過光柵器873並經由串流輸出單元823存取未光柵化頂點資料。
圖形處理器800具有互連匯流排、互連結構、或允許資料及訊息在處理器的主組件之間傳送的某些其他互連機制。在部分實施例中,執行單元852A、852B及關聯快取記憶體(等)851、紋理及媒體取樣器854、及紋理/取樣器快取記憶體858經由資料埠856互連以實施記憶體存取 及與處理器的渲染輸出管線組件通訊。在部分實施例中,取樣器854、快取記憶體851、858、及執行單元852A、852B各者具有分離的記憶體存取路徑。
在部分實施例中,渲染輸出管線870包含將基於頂點的物件轉換為關聯之基於像素表示的光柵器及深度測試組件873。在部分實施例中,光柵器邏輯包括窗化器/遮罩器單元以實施固定功能三角及線光柵化。關聯渲染器快取記憶體878及深度快取記憶體879也可用在部分實施例中。像素運算組件877在資料上實施基於像素的運算,雖然在部分實例中,與2D運算關聯的像素運算(例如,使用混合的位元區塊影像轉換)係由2D引擎841實施,或使用重疊顯示平面藉由顯示控制器843在顯示時取代。在部分實施例中,共享L3快取記憶體875對所有圖形組件可用,允許資料共享而不需使用主系統記憶體。
在部分實施例中,圖形處理器媒體管線830包括媒體引擎837及視訊前端834。在部分實施例中,視訊前端834從命令串流器803接收管線命令。在部分實施例中,媒體管線830包括分離的命令串流器。在部分實施例中,視訊前端834在傳送媒體命令至媒體引擎837之前處理該命令。在部分實施例中,媒體引擎837包括緒產生功能以產生用於經由緒分派器831分派至緒執行邏輯850的緒。
在部分實施例中,圖形處理器800包括顯示引擎840。在部分實施例中,顯示引擎840在處理器800外部並經由環形互連802,或某些其他互連匯流排或結構與圖 形處理器耦接。在部分實施例中,顯示引擎840包括2D引擎841及顯示控制器843。在部分實施例中,顯示引擎840包含能與3D管線無關地操作的專用邏輯。在部分實施例中,顯示控制器843與顯示器裝置(未圖示)耦接,其可係系統積集顯示器裝置,如在膝上型電腦中,或經由顯示器裝置連接器附接的外部顯示器裝置。
在部分實施例中,圖形管線820及媒體管線830可組態以基於多個圖形及媒體程式化介面實施操作,且不特定於任何一個應用程式發展介面(API)。在部分實施例中,用於圖形處理器的驅動程式軟體將特定於特定圖形或媒體程式庫的API呼叫轉譯為能由圖形處理器處理的命令。在部分實施例中,提供對來自Khronos組織的開放圖形程式庫(OpenGL)及開放計算語言(OpenCL)、來自微軟公司之Direct3D程式庫的支援,或可對OpenGL及D3D二者提供支援。也可對開放原始碼電腦視覺程式庫(OpenCV)提供支援。若能產生從未來API的管線至圖形處理器之管線的映射,也會支援具有相容3D管線的未來API。
圖14A係根據部分實施例描繪圖形處理器命令格式900的方塊圖。圖14B係根據實施例描繪圖形處理器命令序列910的方塊圖。圖14A中的實線框描繪通常包括在圖形命令中的成分,同時虛線包括其係選擇性的或其僅包括在圖形命令之子集中的成分。圖14A之例示圖形處理器命令格式900包括資料欄位以識別命令的目標用戶端902、 命令運算碼(opcode)904、及用於命令的相關資料906。次運算碼905及命令尺寸908也包括在部分命令中。
在部分實施例中,用戶端902指定處理命令資料之圖形裝置的用戶端單元。在部分實施例中,圖形處理器命令剖析器調查各命令的用戶端欄位,以調節命令的進一步處理及將命令資料路由至適當用戶端單元。在部分實施例中,圖形處理器用戶端單元包括記憶體介面單元、渲染單元、2D單元、3D單元、及媒體單元。各用戶端單元具有處理命令的對應處理管線。一旦命令為用戶端單元接收,用戶端單元讀取運算碼904,且若次運算碼905存在,也讀取其,以決定要實施的運算。用戶端單元使用資料欄位906中的資訊實施命令。針對部分命令,預期明顯的命令尺寸908以指定命令的尺寸。在部分實施例中,命令剖析器基於命令運算碼自動地決定至少部分命令的尺寸。在部分實施例中,命令經由雙字組的倍數對準。
圖14B中的流程圖顯示例示圖形處理器命令序列910。在部分實施例中,將圖形處理器的實施例特徵化之資料處理系統的軟體或韌體使用所示之命令序列的版本以設定、執行、及終止一組圖形運算。僅用於範例之目的顯示及描述為實施例的樣本命令序列並未受限於此等特定命令或此命令序列。再者,命令可在命令序列中發佈為命令的批次,使得圖形處理器將以至少部分並行性處理命令序列。
在部分實施例中,圖形處理器命令序列910可使用管 線清除命令912開始以導致任何活動圖形管線完成該管線的目前未決命令。在部分實施例中,3D管線922及媒體管線924不並行地操作。實施管線清除以導致活動圖形管線完成任何未決命令。回應於管線清除,用於圖形處理器的命令剖析器將暫停命令處理,直至活動繪圖引擎完成未決運算並將相關讀取快取記憶體無效化。選擇性地,能將渲染快取記憶體中標示為「修改」的任何資料清除至記憶體。在部分實施例中,管線清除命令912能用於管線同步化或在將圖形處理器置入低功率狀態之前使用。
在部分實施例中,當命令序列需要圖形處理器明顯地在管線間交換時,使用管線選擇命令913。在部分實施例中,除非執行本文對二管線發佈命令,在發佈管線命令之前,管理選擇命令913在本文內僅需要一次。在部分實施例中,管線清除命令912必需緊接在經由管理選擇命令913的管線交換之前。
在部分實施例中,管線控制命令914組態用於運算的圖形管線並用於程式化3D管線922及媒體管線924。在部分實施例中,管線控制命令914組態活動管線的管線狀態。在一實施例中,管線控制命令914用於管線同步化及在處理命令批次之前從活動管線內的一或多個快取記憶體清除資料。
在部分實施例中,使用回覆緩衝器狀態命令916組態用於個別管線的一組回覆緩衝器以寫入資料。部分管線運算需要運算在處理期間將中間資料寫入至其的一或多個回 覆緩衝器的配置、選擇、或組態。在部分實施例中,圖形處理器也使用一或多個回覆緩衝器以儲存輸出資料及實施跨緒通訊。在部分實施例中,回覆緩衝器狀態916包括選擇用於一組管線運算之回覆緩衝器的尺寸及數量。
命令序列中的殘餘命令基於用於運算的活動管線而不同。基於管線決定920,命令序列對以3D管線狀態930開始的3D管線922,或以媒體管線狀態940開始的媒體管線924定制。
用於3D管線狀態930的命令包括用於頂點緩衝器狀態、頂點元素狀態、固定顏色狀態、深度緩衝器狀態、及待在處理3D基元命令之前組態的其他狀態變數的3D狀態設定命令。此等命令的值至少部分基於所使用的特定3D API決定。在部分實施例中,若將不使用特定管線元件,3D管線狀態930命令也能選擇性地除能或略過該等元件。
在部分實施例中,使用3D基元932命令提出待由3D管線處理的3D基元。將經由3D基元932命令傳至圖形處理器的命令及關聯參數轉發至圖形管線中的頂點提取功能。頂點提取功能使用3D基元932命令資料以產生頂點資料結構。頂點資料結構儲存在一或多個回覆緩衝器中。在部分實施例中,使用3D基元932命令以經由頂點著色器在3D基元上實施頂點操作。為處理頂點著色器,3D管線922分派著色器執行緒至圖形處理器執行單元。
在部分實施例中,3D管線922經由執行934命令或 事件觸發。在部分實施例中,暫存器寫入觸發命令執行。在部分實施例中,執行經由命令序列中的「go」或「kick」命令觸發。在一實施例中,命令執行係使用管線同步化命令觸發以經由圖形管線清除命令序列。3D管線將實施用於3D基元的幾何處理。一旦運算完成,所產生的幾何物件受光柵化且像素引擎將所產生的像素上色。也可包括用於此等運算的額外命令以控制像素著色及像素後端運算。
在部分實施例中,當實施媒體運算時,圖形處理器命令序列910遵循媒體管線924路徑。通常,媒體管線924的具體使用及程式化方式相依於待實施的媒體或計算運算。具體媒體解碼運算可在媒體解碼期間卸載至媒體管線。在部分實施例中,媒體管線也能略過,且媒體解碼能完全地或部分地使用由一或多個通用處理核心提供的資源實施。在一實施例中,媒體管線也包括用於通用圖形處理器單元(GPGPU)運算的元件,其中圖形處理器用於實施使用不明顯相關於圖形基元的渲染之計算著色器程式的SIMD向量操作。
在部分實施例中,媒體管線924以與3D管線922相似的方式組態。在媒體物件命令942之前,將一組媒體管線狀態命令940分派或置入命令佇列中。在部分實施例中,媒體管線狀態命令940包括資料以組態將用於處理媒體物件的媒體管線元件。此包括資料,諸如,編碼或解碼格式,以組態媒體管線內的視訊解碼及視訊編碼邏輯。在 部分實施例中,媒體管線狀態命令940也支援一或多個指標器的使用以「間接」指向包含狀態設定批次的狀態元件。
在部分實施例中,媒體物件命令942供應指向藉由媒體管線處理之媒體物件的指標器。媒體物件包括包含待處理之視訊資料的記憶體緩衝器。在部分實施例中,所有媒體管線狀態在發佈媒體物件命令942之前必須係有效的。一旦管線狀態受組態並將媒體物件命令942放入佇列,媒體管線924經由執行命令944或等效執行事件(例如,暫存器寫入)觸發。然後來自媒體管線924的輸出可藉由3D管線922或媒體管線924提供的運算受後續處理。在部分實施例中,GPGPU運算以與媒體運算相似的方式組態及執行。
圖15根據部分實施例描繪用於資料處理系統1000的例示圖形軟體架構。在部分實施例中,軟體架構包括3D圖形應用程式1010、作業系統1020、及至少一個處理器1030。在部分實施例中,處理器1030包括圖形處理器1032及一或多個通用處理器核心(等)1034。圖形應用程式1010及作業系統1020各者在資料處理系統的系統記憶體1050中執行。
在部分實施例中,3D圖形應用程式1010包含包括著色器指令1012的一或多個著色器程式。著色器語言指令可採用高階著色器語言,諸如,高階著色器語言(HLSL)或開放圖形程式庫著色器語言(GLSL)。應用 程式也包括採用適於由通用處理器核心1034執行之機器語言的可執行指令1014。應用程式也包括由頂點資料界定的圖形物件1016。
在部分實施例中,作業系統1020係來自微軟公司的微軟®視窗®作業系統、專屬UNIX-類作業系統、或使用Linux核心之變體的開放原始碼UNIX-類作業系統。當使用Direct3D API時,作業系統1020使用前端著色器編譯器1024以將採用HLSL的任何著色器指令1012編譯為低階著色器語言。編譯可係即時(JIT)編譯或應用程式能實施著色器預編譯。在部分實施例中,高階著色器可在3D圖形應用程式1010的編譯期間編譯為低階著色器。
在部分實施例中,使用者模式圖形驅動程式1026包含後端著色器編譯器1027以將著色器指令1012轉換為硬體特定表示。當使用OpenGL API時,GLSL高階語言中的著色器指令1012傳至用於編譯的使用者模式圖形驅動程式1026。在部分實施例中,使用者模式圖形驅動程式1026使用作業系統核心模式功能1028以與核心模式圖形驅動程式1029通訊。在部分實施例中,核心模式圖形驅動程式1029與圖形處理器1032通訊以分派命令及指令。
至少一個實施例的一或多個樣態可藉由儲存在機器可讀媒體上之代表及/或界定積體電路,諸如,處理器,內之邏輯的代表性碼實作。例如,機器可讀媒體可包括代表處理器內之各種邏輯的指令。當由機器讀取時,該指令可導致機器製造邏輯以實施本文描述的技術。稱為「IP核 心」的此種代表係用於積體電路之可在實體、機器可讀媒體上儲存為描述該積體電路的結構之硬體模型的可重用邏輯單元。可將硬體模型供應至各種客戶或製造設施,其將該硬體模型載入在製造積體電路的製造機器上。可將積體電路製造成使得該電路實施與本文描述之任何實施例關聯地描述的操作。
圖16係根據實施例描繪可用於製造積體電路以實施操作之IP核心發展系統1100的方塊圖。IP核心發展系統1100可用於產生能併入更大設計或用於建構整體積體電路(例如,SOC積體電路)的模組化可重用設計。設計設施1130能以高階程式化語言(例如,C/C++)產生IP核心設計的軟體模擬1110。軟體模擬1110能用於設計、測試、及使用模擬模型1112驗證IP核心的行為。模擬模型1112可包括功能、行為、及/或時序模擬。然後能從模擬模型1112產生或合成暫存器轉移層次(RTL)設計。RTL設計1115係將硬體暫存器之間的數位信號流模型化之積體電路的抽象行為,包括使用模型化數位信號實施的關聯邏輯。除了RTL設計1115外,也可產生、設計、或合成邏輯層級或電晶體層級的低階設計。因此,最初設計及模擬的特定細節可變化。
RTL設計1115或等效設計可更藉由設計設施合成為硬體模型1120,其可採用硬體描述語言(HDL),或實體設計資料的某些其他表示。HDL可受進一步模擬或測試以驗證IP核心設計。IP核心設計能針對遞送至第三方製造 設施1165而使用非揮發性記憶體1140(例如,硬碟、快閃記憶體、或任何非揮發性儲存媒體)儲存。或者,IP核心設計可透過有線連接1150或無線連接1160傳輸(例如,經由網際網路)。然後製造設施1165可製造至少部分基於IP核心設計的積體電路。能將所製造的積體電路組態成實施根據本文描述之至少一個實施例的操作。
圖17係根據實施例描繪可使用一或多個IP核心製造之例示系統單晶片積體電路1200的方塊圖。例示積體電路包括一或多個應用處理器1205(例如,CPU)、至少一個圖形處理器1210、並可另外包括影像處理器1215及/或視訊處理器1220,彼等任一者可係來自相同或多個不同設計設施的模組化IP核心。積體電路包括周邊或匯流排邏輯,其包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235、及I2S/I2C控制器1240。另外,積體電路可包括耦接至高解析多媒體介面(HDMI)控制器1250及行動產業處理器介面(MIPI)顯示介面1255之一或多者的顯示器裝置1245。儲存可藉由包括快閃記憶體及快閃記憶體控制器的快閃記憶體次系統1260提供。記憶體介面可經由用於存取SDRAM或SRAM記憶體裝置的記憶體控制器1265提供。部分積體電路另外包括嵌入式安全引擎1270。
另外,其他邏輯及電路可包括在積體電路1200的處理器中,包括額外的圖形處理器/核心、周邊介面控制器、或通用處理器核心。
以下條款及/或範例關於其他實施例:一範例實施例可係一種方法,包含提供用於提交工作量至在一平行管中運行之從屬引擎的介面,以輔助在另一平行管中運行的主引擎,及針對各平行管分割命令序列,以致能該從屬引擎領先該主引擎運行。該方法也可包括其中該從屬引擎係僅關於位置的著色器,且該主引擎係渲染器引擎。該方法也可包括決定背景是否已被提交至實行僅關於位置的著色功能之渲染器引擎。該方法也可包括設定該渲染器引擎中的位元,以指示僅關於位置的著色為致能的。該方法也可包括僅將該僅關於位置的著色域繼承至鏈接批次緩衝器。該方法也可包括提供用於該渲染器引擎及僅關於位置的著色器之個別命令串流器。該方法也可包括在該僅關於位置的著色器及渲染器引擎之間分享環狀緩衝器。該方法也可包括提供用於渲染器管線及僅關於位置的著色管線之個別命令串流器。該方法也可包括最初提供所有命令至用於該渲染器管線的該命令串流器,然後其將用於該僅關於位置的著色管線之該命令串流器的命令轉發至該命令串流器。該方法也可包括從二管線存取相同的環狀緩衝器。
另一範例實施例可係一或多種儲存指令的非暫態電腦可讀媒體,以實施包含提供用於提交工作量至在一平行管中運行之從屬引擎的介面,以輔助在另一平行管中運行的主引擎,及針對各平行管分割命令序列,以致能該從屬引擎領先該主引擎運行之序列。該方法可包括更儲存指令以 實施序列,其中該從屬引擎係僅關於位置的著色器,且該主引擎係渲染器引擎。該方法可包括更儲存指令以實施包括決定背景是否已被提交至實行僅關於位置的著色功能之渲染器引擎的序列。該方法可包括更儲存指令以實施包括設定該渲染器引擎中的位元,以指示僅關於位置的著色為致能之序列。該方法可包括更儲存指令以實施包括僅將該僅關於位置之著色域繼承至鏈接批次緩衝器的序列。該方法可包括更儲存指令以實施包括提供用於該渲染器引擎及僅關於位置的著色器之個別命令串流器的序列。該方法可包括更儲存指令以實施包括在該僅關於位置的著色器及渲染器引擎之間分享環狀緩衝器的序列。該方法可包括更儲存指令以實施包括提供用於渲染器管線及僅關於位置的著色管線之個別命令串流器的序列。該方法可包括更儲存指令以實施包括最初提供所有命令至用於該渲染器管線的該命令串流器,然後其將用於該僅關於位置的著色管線之該命令串流器的命令轉發至該命令串流器的序列。該方法可包括更儲存指令以實施包括從二管線存取相同的環狀緩衝器的序列。
在另一範例中,實施例可係一種設備,包含處理器,用以提供用於提交工作量至在一平行管中運行之從屬引擎的介面,以輔助在另一平行管中運行的主引擎,針對各平行管分割命令序列,以致能該從屬引擎領先該主引擎運行;及耦接至該處理器的記憶體。該設備可包括其中該從屬引擎係僅關於位置的著色器,且該主引擎係渲染器引 擎。該設備可包括該處理器用以決定背景是否已被提交至實行僅關於位置的著色功能之渲染器引擎。該設備可包括該處理器用以設定該渲染器引擎中的位元,以指示僅關於位置的著色為致能的。該設備可包括該處理器用以僅將該僅關於位置的著色域繼承至鏈接批次緩衝器。該設備可包括該處理器用以提供用於該渲染器引擎及僅關於位置的著色器之個別命令串流器。該設備可包括該處理器用以在該僅關於位置的著色器及渲染器引擎之間分享環狀緩衝器。該設備可包括該處理器用以提供用於渲染器管線及僅關於位置的著色管線之個別命令串流器。該設備可包括該處理器用以最初提供所有命令至用於該渲染器管線的該命令串流器,然後其將用於該僅關於位置的著色管線之該命令串流器的命令轉發至該命令串流器。該設備可包括該處理器用以從二管線存取相同的環狀緩衝器。
可將本文描述的圖形處理技術實作在各種硬體架構中。例如,可將圖形功能積集在晶片組內。或者,可使用獨立圖形處理器。作為另一實施例,圖形功能可藉由通用處理器實作,包括多核心處理器。
在此說明書全文中對「一實施例」的參考意指將相關於該實施例描述的特定特性、結構、或特徵包括在包含於本揭示發明內的至少一實作中。因此,該片語「一實施例」或「在實施例中」的出現不必然指相同實施例。此外,該等特定特性、結構、或特徵可能以與所說明之特定實施例不同的其他合適形式建立,且所有此種形式可能包 含在本申請案的申請專利範圍內。
在已描述有限數量的實施例的同時,熟悉本技術的人士將理解來自其的許多修改及變化。其目的係隨附的申請專利範圍涵蓋落在此揭示發明之真正精神及範圍內的所有此種修改及變化。
12‧‧‧頂點提取(VF)單元
14‧‧‧記憶體
16‧‧‧頂點著色器(VS)單元
17‧‧‧外殼著色器
18‧‧‧鑲嵌
19‧‧‧域著色器
20‧‧‧幾何著色器
22‧‧‧基元組合單元
23‧‧‧視埠範圍拋棄
24‧‧‧限幅級
26、80‧‧‧簡單裁剪級
28‧‧‧設定單元
30‧‧‧光柵化單元
32‧‧‧深度
33‧‧‧著色及紋理
34‧‧‧色彩混合
70‧‧‧裁剪管
72‧‧‧重播管
74‧‧‧可見性記錄先進先出(FIFO)
76‧‧‧僅關於位置的頂點提取(VF)-頂點著色器(VS)級
77‧‧‧基元組合
78‧‧‧視埠範圍拋棄級

Claims (30)

  1. 一種方法,包含:提供用於提交工作量至在一平行管中運行之從屬引擎的介面,以輔助在另一平行管中運行的主引擎;及針對各平行管分割命令序列,以致能該從屬引擎領先該主引擎運行。
  2. 如申請專利範圍第1項的方法,其中該從屬引擎係僅關於位置的著色器,且該主引擎係渲染器引擎。
  3. 如申請專利範圍第2項的方法,包括決定背景是否已被提交至實行僅關於位置的著色功能之渲染器引擎。
  4. 如申請專利範圍第3項的方法,包括設定該渲染器引擎中的位元,以指示僅關於位置的著色為致能的。
  5. 如申請專利範圍第4項的方法,包括僅將該僅關於位置的著色域繼承至鏈接批次緩衝器。
  6. 如申請專利範圍第5項的方法,包括提供用於該渲染器引擎及僅關於位置的著色器之個別命令串流器。
  7. 如申請專利範圍第6項的方法,包括在該僅關於位置的著色器及渲染器引擎之間分享環狀緩衝器。
  8. 如申請專利範圍第2項的方法,包括提供用於渲染器管線及僅關於位置的著色管線之個別命令串流器。
  9. 如申請專利範圍第8項的方法,包括最初提供所有命令至用於該渲染器管線的該命令串流器,然後其將用於該僅關於位置的著色管線之該命令串流器的命令轉發至該命令串流器。
  10. 如申請專利範圍第8項的方法,包括從二管線存取相同的環狀緩衝器。
  11. 一或多種儲存指令以實施包含以下步驟之序列的非暫態電腦可讀媒體:提供用於提交工作量至在一平行管中運行之從屬引擎的介面,以輔助在另一平行管中運行的主引擎;及針對各平行管分割命令序列,以致能該從屬引擎領先該主引擎運行。
  12. 如申請專利範圍第11項的媒體,更儲存指令以實施序列,其中該從屬引擎係僅關於位置的著色器,且該主引擎係渲染器引擎。
  13. 如申請專利範圍第12項的媒體,更儲存指令以實施包括決定背景是否已被提交至實行僅關於位置的著色功能之渲染器引擎的序列。
  14. 如申請專利範圍第13項的媒體,更儲存指令以實施包括設定該渲染器引擎中的位元,以指示僅關於位置的著色為致能之序列。
  15. 如申請專利範圍第14項的媒體,更儲存指令以實施包括僅將該僅關於位置之著色域繼承至鏈接批次緩衝器的序列。
  16. 如申請專利範圍第15項的媒體,更儲存指令以實施包括提供用於該渲染器引擎及僅關於位置的著色器之個別命令串流器的序列。
  17. 如申請專利範圍第16項的媒體,更儲存指令以 實施包括在該僅關於位置的著色器及渲染器引擎之間分享環狀緩衝器的序列。
  18. 如申請專利範圍第12項的媒體,更儲存指令以實施包括提供用於渲染器管線及僅關於位置的著色管線之個別命令串流器的序列。
  19. 如申請專利範圍第18項的媒體,更儲存指令以實施包括最初提供所有命令至用於該渲染器管線的該命令串流器,然後其將用於該僅關於位置的著色管線之該命令串流器的命令轉發至該命令串流器的序列。
  20. 如申請專利範圍第18項的媒體,更儲存指令以實施包括從二管線存取相同的環狀緩衝器的序列。
  21. 一種設備,包含:處理器,用以提供用於提交工作量至在一平行管中運行之從屬引擎的介面,以輔助在另一平行管中運行的主引擎,針對各平行管分割命令序列,以致能該從屬引擎領先該主引擎運行;及記憶體,耦接至該處理器。
  22. 如申請專利範圍第21項的設備,其中該從屬引擎係僅關於位置的著色器,且該主引擎係渲染器引擎。
  23. 如申請專利範圍第22項的設備,該處理器用以決定背景是否已被提交至實行僅關於位置的著色功能之渲染器引擎。
  24. 如申請專利範圍第23項的設備,該處理器用以設定該渲染器引擎中的位元,以指示僅關於位置的著色為 致能的。
  25. 如申請專利範圍第24項的設備,該處理器用以僅將該僅關於位置的著色域繼承至鏈接批次緩衝器。
  26. 如申請專利範圍第25項的設備,該處理器用以提供用於該渲染器引擎及僅關於位置的著色器之個別命令串流器。
  27. 如申請專利範圍第26項的設備,該處理器用以在該僅關於位置的著色器及渲染器引擎之間分享環狀緩衝器。
  28. 如申請專利範圍第22項的設備,該處理器用以提供用於渲染器管線及僅關於位置的著色管線之個別命令串流器。
  29. 如申請專利範圍第28項的設備,該處理器用以最初提供所有命令至用於該渲染器管線的該命令串流器,然後其將用於該僅關於位置的著色管線之該命令串流器的命令轉發至該命令串流器。
  30. 如申請專利範圍第28項的設備,該處理器用以從二管線存取相同的環狀緩衝器。
TW105125941A 2015-09-25 2016-08-15 經由渲染命令串流器之僅關於位置的著色器背景提交 TWI706374B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/865,933 US10210655B2 (en) 2015-09-25 2015-09-25 Position only shader context submission through a render command streamer
US14/865,933 2015-09-25

Publications (2)

Publication Number Publication Date
TW201719571A true TW201719571A (zh) 2017-06-01
TWI706374B TWI706374B (zh) 2020-10-01

Family

ID=58387407

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105125941A TWI706374B (zh) 2015-09-25 2016-08-15 經由渲染命令串流器之僅關於位置的著色器背景提交

Country Status (3)

Country Link
US (2) US10210655B2 (zh)
TW (1) TWI706374B (zh)
WO (1) WO2017052949A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111400024A (zh) * 2019-01-03 2020-07-10 百度在线网络技术(北京)有限公司 渲染过程中的资源调用方法、装置和渲染引擎

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003946B2 (en) * 2016-04-15 2018-06-19 Pitney Bowes Inc. Enhanced spatial index for point in polygon operations
US10068366B2 (en) * 2016-05-05 2018-09-04 Nvidia Corporation Stereo multi-projection implemented using a graphics processing pipeline
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10388056B2 (en) 2017-01-26 2019-08-20 Advanced Micro Devices, Inc. Split frame rendering
US10796472B2 (en) * 2018-06-30 2020-10-06 Intel Corporation Method and apparatus for simultaneously executing multiple contexts on a graphics engine
US11200063B2 (en) 2018-09-27 2021-12-14 Intel Corporation Graphics engine reset and recovery in a multiple graphics context execution environment
US11227430B2 (en) * 2019-06-19 2022-01-18 Samsung Electronics Co., Ltd. Optimized pixel shader attribute management
KR20200145665A (ko) * 2019-06-19 2020-12-30 삼성전자주식회사 최적화된 픽셀 셰이더 속성 관리
GB2616628B (en) * 2022-03-15 2024-03-20 Advanced Risc Mach Ltd Graphics processing

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6727904B2 (en) 2002-03-01 2004-04-27 Hewlett-Packard Development Company, L.P. System and method for rendering graphical data
US7633506B1 (en) 2002-11-27 2009-12-15 Ati Technologies Ulc Parallel pipeline graphics system
US6940515B1 (en) * 2003-04-10 2005-09-06 Nvidia Corporation User programmable primitive engine
US6900810B1 (en) * 2003-04-10 2005-05-31 Nvidia Corporation User programmable geometry engine
US8144156B1 (en) * 2003-12-31 2012-03-27 Zii Labs Inc. Ltd. Sequencer with async SIMD array
US7400325B1 (en) * 2004-08-06 2008-07-15 Nvidia Corporation Culling before setup in viewport and culling unit
US7598958B1 (en) 2004-11-17 2009-10-06 Nvidia Corporation Multi-chip graphics processing unit apparatus, system, and method
US7468726B1 (en) * 2005-12-01 2008-12-23 Nvidia Corporation Culling in a vertex processing unit
DE112007002991B4 (de) * 2006-12-08 2011-09-08 Mental Images Gmbh Computergraphikschattenvolumen unter Verwendung von hierarchischem Okklusions-Culling
US8854381B2 (en) * 2009-09-03 2014-10-07 Advanced Micro Devices, Inc. Processing unit that enables asynchronous task dispatch
US8704835B1 (en) 2009-10-08 2014-04-22 Nvidia Corporation Distributed clip, cull, viewport transform and perspective correction
US20120001905A1 (en) * 2010-06-30 2012-01-05 Ati Technologies, Ulc Seamless Integration of Multi-GPU Rendering
KR101681056B1 (ko) 2010-10-01 2016-12-01 삼성전자주식회사 정점 처리 방법 및 장치
US8830246B2 (en) * 2011-11-30 2014-09-09 Qualcomm Incorporated Switching between direct rendering and binning in graphics processing
US9330495B2 (en) * 2012-08-09 2016-05-03 Qualcomm Incorporated Extending DX11 GPU for programmable vector graphics
US9633230B2 (en) * 2012-10-11 2017-04-25 Intel Corporation Hardware assist for privilege access violation checks
US9292414B2 (en) * 2012-11-26 2016-03-22 Nvidia Corporation System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111400024A (zh) * 2019-01-03 2020-07-10 百度在线网络技术(北京)有限公司 渲染过程中的资源调用方法、装置和渲染引擎
CN111400024B (zh) * 2019-01-03 2023-10-10 百度在线网络技术(北京)有限公司 渲染过程中的资源调用方法、装置和渲染引擎

Also Published As

Publication number Publication date
US10210655B2 (en) 2019-02-19
WO2017052949A1 (en) 2017-03-30
TWI706374B (zh) 2020-10-01
US11145115B2 (en) 2021-10-12
US20190130635A1 (en) 2019-05-02
US20170091989A1 (en) 2017-03-30

Similar Documents

Publication Publication Date Title
US11145115B2 (en) Position only shader context submission through a render command streamer
US9846962B2 (en) Optimizing clipping operations in position only shading tile deferred renderers
US10068307B2 (en) Command processing for graphics tile-based rendering
US10229468B2 (en) Automated conversion of GPGPU workloads to 3D pipeline workloads
US10002455B2 (en) Optimized depth buffer cache apparatus and method
WO2018026482A1 (en) Mechanism to accelerate graphics workloads in a multi-core computing architecture
CN106575451B (zh) 用于对像素区域进行着色的方法、装置、设备及存储介质
US10818054B2 (en) Apparatus and method for asynchronous texel shading
US20200371804A1 (en) Boosting local memory performance in processor graphics
US10789071B2 (en) Dynamic thread splitting having multiple instruction pointers for the same thread
WO2016145632A1 (en) Apparatus and method for software-agnostic multi-gpu processing
US20160379400A1 (en) Three-Dimensional Renderer
WO2018004939A1 (en) Reducing memory latency in graphics operations
WO2017082973A2 (en) Facilitating efficeint centralized rendering of viewpoint-agnostic graphics workloads at computing devices
US20170178278A1 (en) Method and apparatus for updating a shader program based on current state
US9830676B2 (en) Packet processing on graphics processing units using continuous threads
US9601092B2 (en) Dynamically managing memory footprint for tile based rendering
WO2017112155A1 (en) Multiple-patch simd dispatch mode for domain shaders

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees