TWI381328B - 用於三維圖像管線之自動負載平衡之方法、器件、裝置、處理器及非暫時性電腦可讀儲存媒體 - Google Patents
用於三維圖像管線之自動負載平衡之方法、器件、裝置、處理器及非暫時性電腦可讀儲存媒體 Download PDFInfo
- Publication number
- TWI381328B TWI381328B TW097101010A TW97101010A TWI381328B TW I381328 B TWI381328 B TW I381328B TW 097101010 A TW097101010 A TW 097101010A TW 97101010 A TW97101010 A TW 97101010A TW I381328 B TWI381328 B TW I381328B
- Authority
- TW
- Taiwan
- Prior art keywords
- sub
- processing
- vertex
- screen
- operations
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Description
本揭示案大體而言係關於影像處理,且更具體言之,係關於用於負載平衡三維(3D)圖像管線以用於由一交錯多執行緒處理器處理之快速像素呈現處理之技術。
將關於3D物件之資訊轉換成一可被顯示之點陣圖被稱為像素呈現,且需要相當大的記憶體及處理能力。在過去,3D圖像僅可用於強大的工作站上,但現在通常在個人電腦(PC)中發現3D圖像加速器。硬體圖像加速器含有記憶體(例如,指令隨機存取記憶體(IRAM))及一專用微處理器以處理許多3D呈現操作。用於桌上型電腦之Open GL(開放圖像程式庫)定義一用於寫入產生3D及2D電腦圖像之應用程式之應用程式設計介面(API)。該API包括用於自原始物件(primitive)繪製複雜三維場景之數百個函式。
OpenGLES為桌上型電腦OpenGL之一子集,其在軟體與圖像之間產生介面。3D圖像引擎(OpenGLES)實施成通常兩個部分。第一部分包括處理頂點之彼等函式,且通常實施於數位信號處理(DSP)韌體中。第二部分包括用於像素呈現之彼等函式,且實施於一專用硬體圖像加速器中。執行像素呈現之第二部分為一習知3D圖像引擎之最後管線階段。最後管線階段處理輸入三角形集合以產生圖像影像之一像素表示。然而,最後管線階段通常為引擎中整個3D圖像管線之效能瓶頸。因此,改良用於像素呈現之最
後管線階段之效能(以每秒像素來計)非常重要。
通常,在像素呈現操作期間,需要以與三角形經輸入之次序相同之次序依序地處理每一輸入三角形。因此,一具有多執行緒之處理器得以防止利用交錯並列處理以處理一輸入三角形。
此外,硬體圖像加速器通常不為靈活的或容易縮放的。因此,硬體圖像加速器不可容易地添加新特徵,支援3D圖像標準之較高版本(諸如,OpenGLES 1.0、1.1...),支援不同應用程式組態及定製要求。此外,硬體圖像加速器不容易縮放以用於不同的效能要求(訊框速率、螢幕大小、像素速率、三角形速率等...),從而最佳化矽成本及系統功率消耗。
如可容易地看見的,一專用硬體圖像加速器佔據一小的掌上型計算器件(諸如,一行動或蜂巢式電話)中之矽區域。因此,一專用硬體圖像加速器藉由包括所使用之專用硬體圖像加速器及IRAM而增加一掌上型計算器件之總成本。一專用硬體圖像加速器之使用亦產生與DSP之資料訊務,此添加額外負擔且消耗功率。
因此在此項技術中需要用於負載平衡三維(3D)圖像管線以提供較快速之像素呈現處理之技術。
本文中描述用於三維(3D)圖像管線之在沒有專用硬體圖像加速器之情況下提供較快速之像素呈現處理的技術。在一態樣中,實施一包含複數個處理執行緒之處理器。每一
處理執行緒確定一用於像素呈現操作之子螢幕任務在任務清單中是否可用。若子螢幕任務可用,則每一處理執行緒進一步執行子螢幕任務上之像素呈現操作。然而,若子螢幕任務不可用,則每一處理執行緒執行一頂點處理操作以平衡三維(3D)圖像管線之工作負載。
在另一態樣中,實施一包含一具有複數個處理執行緒之處理器之無線器件。當資料係可取得以用於像素呈現操作時,每一處理執行緒使三維圖像管線之像素呈現操作優先於頂點處理操作。該處理器耦接於記憶體。
在下文中進一步詳細地描述本揭示案之各種態樣及實施例。
用於本文中之字"例示性"意謂"充當一實例、例子或說明"。本文中作為"例示性"加以描述之任何實施例或設計不必被解釋為較其他實施例或設計較佳或有利。
許多遊戲應用程式需要在兩維(2D)空間中顯示三維(3D)物件之3D圖像應用程式(例如,顯示螢幕)。2D圖像中之像素具有位置、顏色及亮度之性質,而3D像素添加一深度性質,該深度性質指示點位於虛Z軸上之哪個位置。當組合3D像素時產生紋理,每一3D像素具有其本身之深度值。
現參看圖1,展示一通常以10來指定之3D成像裝置之一實施例。3D成像裝置10包括一通信單元12、一數位信號處理器(DSP)20、一具有顯示區域18之螢幕16、一記憶體24及輸入/輸出(I/O)單元45。共用記憶體24可視使用者需要
而儲存遊戲應用程式或其他應用程式(亦即,用於與有線或無線網路之雙向通信,及其他軟體應用程式)或用以支援裝置10之特徵集合。I/O單元45可包括一小鍵盤、鍵盤或資料通信埠。螢幕16可操作以在顯示區域18中顯示2D資訊以及3D圖像。
3D成像裝置10可包括個人數位助理(PDA)及行動、蜂巢式或無線電話、一膝上型電腦、筆記型電腦、平板(Tablet)PC、掌上型電腦(Palm Pilot)、無線通信器件或其類似物中之一者。
現參看圖2至圖5,在例示性實施例中,DSP 20包括一交錯多執行緒處理器22。該交錯多執行緒處理器22具有複數個處理執行緒(PT)PT1、PT2,...PTX。每一處理執行緒(PT)PT1、PT2、...PTX共用經表示為共用記憶體24之相同記憶體。每一處理執行緒PT1、PT2、...PTX包括指令261
...26X
之各別一個集合、一核心271
...27X
(處理單元)及一暫存器檔案281
...28X
。每一核心271
...27X
之輸出與共用記憶體24通信。指令261
...26X
包括用於執行下文中所定義之操作之程式設計碼及用於執行特徵集合(諸如,3D成像裝置10之多媒體)之其他操作。核心271
...27X
執行指令261
...26X
。
暫存器檔案281
...28X
為一組通用暫存器且為DSP 20或微處理器之中心階段。此等暫存器檔案281
...28X
保持所有運算元(通常自記憶體載入),亦即,在將結果儲存至共用記憶體24中之前保持來自所有運算(諸如,算術運算、邏輯
運算等)之所有結果。
一些DSP架構具有四個執行緒。儘管如此,DSP 20仍可具有四個以上執行緒,諸如(並非限制)具有並列執行之六個處理執行緒。在例示性實施例中,每一執行緒(PT)PT1、PT2、...PTX並列提供每秒100百萬個指令封包(MIPS)。每一指令封包可為四(4)個指令、兩(2)個指令(亞純量)或僅一個指令。然而,出於效率起見,不推薦一個指令,因為DSP 20之架構消除由於指令間資料相依性而造成之低效率。
術語執行緒或多執行緒用於描述同時存在之任務執行。代替單一執行路徑,可將程式(操作)分裂成同時執行之多個執行緒。在例示性實施例中,存在一起始執行緒,其需要函式呼叫(或指令),且通常需要至少兩個引數:(1)起始指令之位址;及(2)內容引數(context argument)。雖然一執行緒在操作及/或存在,但需要該執行緒能夠進行關於其他處理執行緒之兩個基本工作:(1)獲取一共用資源及阻止其他執行緒使用該資源;及(2)將訊息安全地發送至其他執行緒(例如,已完成、準備好等)。
現參看圖4,展示交錯多執行緒並列處理之圖表。在此實例中,存在六(6)個處理執行緒PT1、PT2、PT3、PT4、PT5及PT6。第一處理執行緒PT1處理第一指令集合1。此藉由用於核心管線之執行時間線之第一(頂部)列來表示。核心管線藉由核心271
、...27X
來表示。雖然第一指令集合1由第一處理執行緒PT1處理,但第二處理執行緒PT2處理
其第一指令集合1。此藉由執行時間線之第二列來表示。因此,第一指令集合1經並列處理。
當第一及第二處理線程PT1及PT2處理其第一指令組1時,第三處理執行緒PT3處理其第一指令集合1。此藉由用於核心管線之執行時間線之第三列來表示。第四處理執行緒PT4處理其第一指令集合1。其間,第一、第二及第三處理執行緒PT1、PT2及PT3繼續處理其相關聯之第一指令集合1。此藉由用於核心管線之執行時間線之第四列來表示。
當第一、第二、第三及第四處理執行緒PT1、PT2、PT3及PT4繼續處理其第一指令集合1時,第五處理執行緒PT5處理其第一指令集合1。此藉由用於核心管線之執行時間線之第五列來表示。當第一、第二、第三、第四及第五處理執行緒PT1、PT2、PT3、PT4及PT5繼續處理其第一指令集合1時,第六處理執行緒PT6處理其第一指令集合1。此藉由用於核心管線之執行時間線之第六列來表示。因此,處理執行緒之指令之處理經交錯。
現參看圖4之第七(底部)列,假定:第一處理執行緒PT1已完成其第一指令集合1,當第二、第三、第四、第五及第六處理執行緒PT2、PT3、PT4、PT5及PT6繼續處理其第一指令集合1時,第一處理執行緒PT1開始處理第二指令集合2。因此,處理執行緒PT1、PT2、...PTX中之每一者之處理經並列及交錯。
描述用於所有處理執行緒之交錯處理係禁止的。因此,
出於說明性目的,圖5中展示使用指令261
及262
之交錯處理,因為交錯處理涉及一互斥(mutex)。互斥為一次僅由一個處理執行緒"擁有"之工具。當處理執行緒試圖獲取互斥時,其鎖定(LOCK)該互斥。然而,若互斥已被鎖定(LOCKED),則彼處理執行緒暫停。當擁有執行緒解鎖(UNLOCK)互斥時,被暫停之執行緒得以重新起始且獲取互斥之擁有權。此過程展示於圖5中。
以第一處理執行緒PT1起始,用步驟S22A開始指令261
,在步驟S22A中執行非關鍵程式碼。繼步驟S22A之後為步驟S24A,在步驟S24A中,第一處理執行緒PT1執行一鎖定互斥1指令(假定互斥1為解鎖的)。因此,第一處理執行緒PT1現在擁有互斥1。繼步驟S24A之後為步驟S26A,在步驟S26A中執行關鍵程式碼。繼步驟S26A之後為步驟S28A,在步驟S28A中,在完成關鍵程式碼之後,第一處理執行緒PT1執行一解鎖互斥1指令。此後,第一處理執行緒PT1重新開始執行步驟S30A處之非關鍵程式碼。
與第一處理執行緒PT1並列地,第二處理執行緒PT2在步驟S22B開始指令262
,在步驟S22B中執行非關鍵程式碼。繼步驟S22B之後為步驟S24B,在步驟S24B中,第二處理執行緒PT2想要在步驟S24B處鎖定互斥1。然而,互斥1在一鎖定狀態中。因此,第二處理執行緒PT2之操作被暫停,直至第一處理執行緒PT1在步驟S28A處解鎖互斥1為止。接著步驟26B開始,在步驟26B中執行關鍵程式碼。繼步驟S26B之後為步驟S28B,在步驟S28B中,在完
成關鍵程式碼之後,第二處理執行緒PT2執行一解鎖互斥1指令。其他指令可據此繼續。
互斥工具或另一符記工具係用於僅視需要而保證不同處理執行緒中之關鍵區段之串列執行。此亦為串列化執行,其意謂當某一程式碼可能與其他執行緒之程式碼之執行衝突時,不可並列地執行其。互斥工具係有用的,因為使用一共用記憶體24(共用資源)。
現參看圖6及圖7,展示通常以100來指定之3D圖像管線之通用流程圖及方塊圖的實施例。3D圖像管線100將螢幕16之顯示區域18中之3D表示的整個任務劃分成通常三(3)個管線階段:一頂點處理(VP)階段110、一螢幕細分(SSD)階段130及一像素呈現(PR)階段140。在操作中,頂點處理(VP)階段110包括所有函式或當前在OpenGL或OpenGLES中實施之函式之一子集,且由一數位信號處理器(DSP)20來處理。因為螢幕16並非3D圖像管線100之部分,所以圖中以幻影展示至螢幕16之線。
VP階段110包括模型視圖變換操作112、投影操作114、揀選(culling)操作116、照明與著色操作118、原始物件組合操作120、裁剪(clipping)(亦即,使用者定義之裁剪)操作122及透視除法(perspective division)與檢視區(viewport)操作124。VP階段110之此等操作中之每一者良好地定義於OpenGL或OpenGLES中。
一般而言,模型視圖變換操作112使用數學運算將物件模型置放於所要位置及方位中。投影操作114使用數學運
算使近的事物大且遠的事物較小。遮擋(occlusion)繪製近物件於遠物件前方。揀選操作116及裁剪操作122廢棄看不見的事物。照明操作118計算光在表面上之效應。
在例示性實施例中,可用一個處理執行緒來實施VP階段110(圖2及圖3)。頂點輸出資訊包括用於定義三角形及其在顯示區域16中之位置之頂點資訊。頂點輸出資訊疊加於顯示區域16上,因為顯示區域16之像素包括用於根據OpenGL、OpenGLES或其他圖像程式庫定義三角形之頂點輸出資訊。
螢幕細分(SSD)階段130包括將顯示區域18劃分成M * N個子螢幕之螢幕細分操作132。顯示區域18係由具有疊加之頂點輸出資訊之複數個像素P(圖11)所構成。來自VP階段110之頂點資訊提供定義三角形(諸如,圖8A之T1及T2)之用於疊加於顯示區域18中之頂點資訊(諸如,圖11之V1、V2及V3)。頂點資訊可包括頂點座標及邊緣資訊。一般而言,用於各個三角形之頂點輸出資訊僅為用於定義一閉合區域之一組數學描述。此組數學描述儲存於共用記憶體24中,使得每一處理執行緒(PT1、PT2、...PTX)可在其本身之子螢幕任務內使用該組數學描述來計算每一像素P(圖11)且判定像素是否在三角形內部。
圖8A說明疊加於顯示區域18上之頂點輸出資訊。在螢幕細分(SSD)階段130期間,藉由將構成顯示區域18之像素劃分或分組成M×N個子螢幕任務而將顯示區域18細分,如最佳見於圖8B中。M×N個子螢幕任務儲存於任務清單135(圖
6及圖8B)中。M×N個子螢幕任務為儲存於共用記憶體24中之M×N個獨立任務。可使用一與VP階段110期間所使用之處理執行緒分開的處理執行緒來實施SSD階段130之操作。或者,可在相同處理執行緒上組合SSD階段130之操作與VP階段110之操作。
在圖8A中所展示之實施例中,將顯示區域18劃分成M×N個子螢幕以產生一柵格,其中M>1且N>1。出於說明性目的,圖9展示經劃分成M×N個子螢幕之顯示區域18',其中M=1且N>1。箭頭說明掃描或工作流程方向。參看圖10,顯示區域18"經劃分成Mx×N個子螢幕,其中M>1且N=1。因此,顯示區域18"之子螢幕形成一系列行。
像素呈現(PR)階段140包括柵格化、混合及紋理應用操作142及隱藏表面移除操作144。儘管如此,像素呈現階段140仍可包括由OpenGL或OpenGLES定義之其他操作。PR階段140將來自VP階段110之關於3D物件之資訊轉換成一可在螢幕16之顯示區域18中顯示之點陣圖。PR階段140處理輸入三角形集合以產生一3D圖像影像之像素表示。
一典型像素呈現(PR)階段可首先自頂點輸出資訊之清單中取出三角形。接著PR階段將自顯示區域中取出一像素,且相抵於該三角形計算該像素以查看該像素是否在該三角形內部。若所評估像素在三角形之內部,則PR階段可用來自三角形之相應顏色執行像素之著色。若所評估像素不在三角形之內部,則跳過該像素。PR階段將接著拾取顯示區域18中之下一像素。PR階段對顯示區域18中之其他像素重
複上述過程,直至已對於三角形評估或處理所有像素為止。因此,一次一個地對像素進行處理。
接著,典型PR階段將移至頂點輸出資訊之清單中之下一個三角形,且對當前三角形重複像素之評估。
PR階段140以一與多個子螢幕或子螢幕任務類似之方式工作。差別在於:子螢幕具有較小數目之像素待評估或處理,且多個子螢幕可由處理執行緒(PT1、PT2、...PTX)獨立及並列地處理。因此,用於PR階段140之處理時間比一典型PR階段之處理時間快得多,因為較少像素在每一子螢幕中,且多個子螢幕可經並列地處理(每一處理執行緒朝著處理各別一個子螢幕中之像素之方向而獨立地工作)。
在例示性實施例中,使用交錯多執行緒處理器22之多個處理執行緒PR1、PR2、...PRX中之一組來處理PR階段140。用於PR階段140之該組中之執行緒的數目可為2個或2個以上,最大X個執行緒。
在操作中,指派給像素呈現階段140之每一處理執行緒PR1、PR2、...PRX自任務清單135中抓取一可用子螢幕任務,且將其自任務清單135中移除。該組處理執行緒PR1、PR2、...PRX在交錯並列操作中處理輸入三角形,以在子螢幕中呈現該等像素(將輸入三角形資訊轉換成一用於顯示於子螢幕中之點陣圖)。之後,各別一個處理執行緒已完成用於經抓取之子螢幕任務之像素呈現操作,處理執行緒移至任務清單135中之下一可用子螢幕任務。重複此操作,直至已處理所有子螢幕且完成像素呈現階段140為
止。
參看圖1、圖2及圖12,交錯多執行緒處理器22允許多執行緒處理為可縮放及均勻的。運算可藉由以下來定義
在圖12中,展示用於像素呈現之一具有單個三角形T之具四個子螢幕之區塊。運算處理經表示為四(i)個子螢幕之子螢幕任務S11
、S12
、S21
及S22
,每一子螢幕具有三角形T之細分部分(i)。運算因此等於子螢幕S11
之運算加上子螢幕S12
之運算加上子螢幕S21
之運算加上子螢幕S22
之運算。若所有運算、、及經並列處理,則用於處理像素呈現階段140之總的峰值效能因此為用於一處理執行緒之峰值效能乘以所使用之處理執行緒之數目。子螢幕S11
具有用於三角形T之像素之細分部分T1
。子螢幕S12
具有用於三角形T之像素之細分部分T2
。子螢幕S21
具有用於三角形T之像素之細分部分T3
。子螢幕S22
具有用於三角形T之像素之細分部分T4
。出於說明性目的,執行緒之數目為四(4)。因此,在此實例中,效能將為用於一個處理執行緒之效能乘以處理執行緒之數目。因此,PR階段140由於其並列處理來自多個子螢幕之像素之能力而為一快速像素呈現階段。
此外,可在用真實應用整形之後組態數目M及N,使得可對不同情形進一步最佳化效能。組態M及N為另一尺寸
提供較大靈活性及可縮放性。整形包括識別處理執行緒之負載(滴答數)或操作任務之大小或複雜性。整形亦可包括評估其他分量,諸如與資料之傳送及來自共用記憶體24之記憶體容量相關聯之參數。在整形及調整之情況下,可使用訊框速率、螢幕大小、像素速率、三角形速率等來改變或變化M及N及/或變化用於PR階段140中之處理執行緒PR1、PR2、...PRX之數目。在整形及調整之情況下,可平衡3D管線階段110、130及140以最佳化整個效能。剩餘處理執行緒PR1、PR2、...PRX用於同時執行之其他應用程式(諸如,遊戲音訊)。
現參看圖13,展示用於由3D圖像管線100使用之3D圖像管線方法200之流程圖。方法200以步驟S202開始,在步驟S202中,執行頂點處理以產生頂點輸出資訊。繼步驟S202之後為步驟S204,在步驟S204中,將其中具有疊加之頂點輸出資訊之顯示區域18細分成M×N個子螢幕。舉例而言,如最佳見於圖8A中,三角形T1在子螢幕S11
、S21
及S22
上擴展且經細分成圖8B中所展示之其各別細分部分T11
、T12
、T13
。因此,圖8B中之任務清單135說明三角形T1及T2之細分部分(出於說明性目的僅展示兩個三角形)。如可瞭解的,任務清單135中來自不與三角形相關聯或具有三角形之較小細分部分之頂點輸出資訊的彼等項目可得到較快處理。因此,在像素呈現階段140在顯示區域18上顯示三角形之3D影像表示之前,應完成用於三角形之所有細分部分之處理。
繼步驟S204之後為步驟S206,在步驟S206中,產生具有或不具有三角形之子部分之子螢幕任務且將其置放於任務清單135中。繼步驟S206之後為步驟S2081
、2082
及208Y
,其中Y為用於像素呈現階段140之組中之處理執行緒的數目(2個或2個以上)。在步驟S2081
處,第一處理執行緒(在下文中被稱作"執行緒1")獲得(第一)可用子螢幕任務(圖8B),且在步驟S2101
處處理子螢幕任務中之每一像素,尤其係經確定在三角形或與任務相關聯之三角形部分內或內部之彼等像素。繼步驟S2101
之後為步驟S2121
,在步驟S2121
中,確定其是否為任務清單135之末尾。若確定為"是",則結束執行緒1之處理。否則,若確定為"否",則步驟S2121
返回步驟S2081
。第二處理執行緒(在下文中被稱作"執行緒2")之操作基本上相同。執行緒2獲得或抓取任務清單135中之下一可用子螢幕任務。繼步驟S2082
之後為步驟S2102
,在步驟S2102
中處理子螢幕任務。繼步驟S2082
之後為步驟S2102
。繼步驟S2102
之後為步驟S2122
。在步驟S2122
處,確定任務清單135中是否還存在任務。若步驟S2122
處之確定為"否",則方法結束。否則,若確定為"是",則步驟S2122
返回步驟S2082
。
步驟S208Y
藉由執行緒Y獲得或抓取第Y個可用子螢幕任務。繼步驟S208Y
之後為步驟S210Y
,在步驟S210Y
中處理子螢幕任務。繼步驟S210Y
之後為步驟S212Y
,在步驟S212Y
中,確定任務清單135中是否還存在任務。若確定為"否",則方法結束。否則,若確定為"是",則步驟S212Y
返
回步驟S208Y
。
步驟S2101
、S2102
及S210Y
期間所執行之處理執行柵格化、混合、紋理應用操作142及隱藏表面移除操作144。特定參看圖11,具有一中心圓點之正方形表示像素P。像素P中之一些在三角形T11之內部,而一些像素在三角形T11之外部。每一頂點V1、V2及V3具有一與平滑陰影附著之顏色值。使用線性內插來計算每一像素P處之顏色值。頂點V1、V2及V3用於形成三角形T11,且將該三角形定位於顯示區域18內。計算藉由正方形之中心中之黑色圓點表示之每一像素中心處的顏色。內插包括Z深度、α、霧及紋理之各種參數。
再次參看圖2至圖4,在此實例中,存在六(6)個執行緒PT1、PT2、PT3、PT4、PT5及PT6。第一執行緒PT1可用於處理VP階段110。第二執行緒PT2可用於處理SSD階段130。剩餘的四個執行緒PT3、PT4、PT5及PT6將用於並列地處理來自任務清單135之子螢幕任務。在此,處理執行緒PT3將獲得第一可用子螢幕任務1,1,且處理經抓取之第一子螢幕任務1,1中之像素。處理執行緒PT4將獲得下一(第2)可用子螢幕任務1,2,且處理經抓取之子螢幕任務1,2中之像素。處理執行緒PT5將獲得下一(第3)可用子螢幕任務1,3,且處理經抓取之子螢幕任務1,3中之像素(假定M大於3)。
假定M為4,處理執行緒PT6將獲得下一(第4)可用子螢幕任務1,M,且處理經抓取之子螢幕任務1,M中之像素。當處
理執行緒PT3、PT4、PT5及PT6完成其各自之子螢幕任務時,將並列地抓取及處理額外子螢幕任務,直至任務清單135為空為止。
在圖13中所描述之實施例中,為了負載平衡3D圖像管線100之操作,可使用由3D圖像管線100使用之處理執行緒之至少一者來處理所有三個3D管線階段110、130及140。僅出於說明性目的,可使用執行緒1執行步驟S202、S204、S206以及步驟S2081
、2101
及2121
。
若一個處理執行緒執行3M像素/秒(MIPS)呈現,則其將採用大致30個指令封包來處理一個像素。此為平均每一像素約100個指令。保留六個執行緒中之兩者用於VP階段110及SSD階段130,及剩餘四個處理執行緒用於PR階段140將支援一為專用硬體圖像加速器之效能(12 M像素/秒)之四倍的VGA解析度。
因為所有處理執行緒共用相同記憶體24,所以該等處理執行緒均可使用互斥工具非常有效地(沒有重複)處理輸入三角形資料之相同集合(子螢幕任務)。
像素呈現階段140為3D圖像管線100之最後管線階段。PR階段140處理輸入三角形清單以產生一3D圖像影像之像素表示。上述3D圖像管線100改良PR階段140之效能(以每秒像素來計)。交錯多執行緒處理器22將效能增加並列執行以處理任務清單135之處理執行緒之數目的倍數。
3D圖像管線架構之一優點為其在允許調整數目M及N中之靈活性。藉由增加數目M及N,減少了用於像素呈現階
段140之MIPS要求。因為每一子螢幕變得較小,所以呈現任務變得較簡單。此有助於增加多個處理執行緒之效能。該等處理執行緒亦可用於其他同時存在之應用程式(諸如,音訊)。
如可容易地看見的,本文中所描述之用於呈現3D圖像影像之軟體實施例具有一比專用圖像加速器之硬體實施例之效能高的效能。與一圖像加速器之硬體實施例相比,本文中所描述之實施例靈活且可縮放。因為實施例為靈活的,所以容易擴展軟體程式碼用於添加新特徵,支援3D圖像標準(諸如,OpenGL ES 1.0、1.1...)之較高版本,且支援不同的應用程式組態及定製要求。該實施例之可縮放特徵考慮不同的效能要求(訊框速率、螢幕大小、像素速率、三角形速率等...),以最佳化矽成本及系統功率消耗。
此實施例亦使得軟體實施例能夠與一低成本及低功率處理器一起使用,代替使用一具有多個GHz時鐘速度之高端處理器來達到相同效能。
現參看圖14,共用記憶體24包括用於3D圖像管線100之多種佇列。該等佇列包括一頂點陣列25、一原始物件佇列26及一任務佇列27。儘管如此,仍可提供額外佇列或緩衝區以用於VP階段140之階層(tier)或層(layer)。如先前關於圖7所描述,VP階段110包括模型視圖變換操作112、投影操作114、揀選操作116、照明與著色操作118、原始物件組合操作120、裁剪(亦即,使用者定義之裁剪)操作122及透視除法與檢視區操作124。VP階段110中之操作經分階層
或分層以使得一較低層或階層(諸如,原始物件組合操作120及裁剪操作122)依一較高階層或層(諸如,模型視圖變換操作112)而定。
頂點陣列25包括來自模型視圖變換操作112之頂點座標。頂點陣列25含有用於每一頂點之屬性,諸如,模型座標中之頂點位置、用於每一頂點之顏色及紋理座標。由原始物件組合操作120填充原始物件佇列26。任務佇列27以來自SSD階段130之任務清單135填充。然而,VP階段110之在原始物件組合操作120以下之階層或層依填充於原始物件佇列26中之資料而產生SSD階段130所需之頂點輸出資訊。SSD階段130產生由PR階段140使用之必要任務清單135。然而,同時,原始物件組合操作120依來自較高階層或層(諸如,模型視圖變換操作112)之資料而定。上述與原始物件組合操作120及模型視圖變換操作112有關之描述僅係出於說明性目的,且適用於VP階段110中之其他階層或層。
現參看圖15,展示一用於在每一處理執行緒基礎上負載平衡3D圖像管線100之方法300的流程圖。在此實施例中,對由處理執行緒PT1、PT2、...PTX中之一或多者處理的PR階段140經給定優於3D圖像管線100中之VP及SSD階段110及130之優先權。處理執行緒PT1、PT2、...PTX或處理執行緒PT1、PT2、...PTX之一經指派以處理3D圖像管線100之操作的子集可操作以並列及獨立地處理3D圖像管線100之操作。方法300將由處理執行緒PT1、PT2、...PTX中
之一或多者或處理執行緒之經指派以用於3D圖像管線100之操作的子集個別地及獨立地執行。
方法300以步驟S302開始,在步驟S302中,處理執行緒PT1、PT2、...PTX中之一者最初檢查共用記憶體24之任務佇列27中之在SSD階段130期間產生的任務清單135中之子螢幕任務之數目。SSD階段130之操作對應於圖13之步驟S204及S206。繼步驟S302之後為步驟S304,在步驟S304中,確定任務佇列27是否為空或任務清單135中之所有剩餘子螢幕任務是否被其他處理執行緒鎖定。若步驟S304處之確定為"否",則繼步驟S304之後為步驟S306,在步驟S306中,處理執行緒執行PR階段140之操作(諸如,步驟S2081
、2101
及2121
)以消耗或處理一個子螢幕任務。此後,步驟S306循環回至步驟S302。
然而,若步驟S304處之確定為"是",則繼步驟S304之後為步驟S308,在步驟S308中,確定是否還存在3D圖像操作。若步驟S308處之確定為"否"且任務佇列27為空或由於最後管線階段(PR階段140)而為空(步驟S304),則3D圖像管線100之操作基本上完成。因此,方法300結束。步驟S308僅為用於結束方法300之準則之一項實例。因此,可使用其他準則且相應地置放在方法300中。
若步驟S308處之確定為"是",則繼步驟S308之後為步驟S310,在步驟S310中,執行VP階段110中之頂點處理以產生表示至少一個三角形之頂點輸出資訊。繼步驟S310之後為步驟S312,在步驟S312中,將步驟S310處所產生之頂點
資訊發送至SSD階段130以用於添加至任務佇列27中之任務清單135中。步驟S312接著循環回至步驟S302,在步驟S302中,處理執行緒再次檢查任務佇列27。通常,在步驟S310處,處理執行緒將呼叫VP階段110之一函式。
作為另一註解,可變化步驟S304處之評估準則。舉例而言,開始時,步驟S304處之評估準則可比較子螢幕任務之數目與指示任務佇列27中用於由PR階段140使用之子螢幕任務之數目的水印(圖6)或臨限值。若子螢幕任務之數目低於該水印或在該水印以下(亦即,指示任務佇列中不存在用於像素呈現之許多子螢幕任務),則繼步驟S304之後為步驟S308。然而,若子螢幕任務之數目大於該水印或在該水印以上,則處理執行緒將在步驟S306處執行PR階段140之操作。
然而,當在預定數目之循環之後任務佇列27中之子螢幕任務之數目仍在水印位準以下時,可改變(降低)評估準則。舉例而言,可將評估準則設定為空及/或鎖定所有子螢幕任務。因此,可來回地變化S304之評估準則以參考PR階段140而平衡PR階段140與VP階段110之間的負載。
關於VP階段110之階層或層,或者在圖15之步驟S310處,可評估用於各種佇列中之資料之階層檢查。以實例說明,處理執行緒在步驟S310期間可在檢查VP階段110中之其他較高階層或層之任一者之前首先檢查原始物件佇列26或其他中間階層或層。若一中間階層或層中之資料在一對應佇列中,則處理執行緒可處理來自該階層或層之資料,
以用於由較低階層或層使用以產生頂點輸出資訊。
對於VP階段平衡,一處理執行緒將以一與上述關於圖13所描述之方式類似之方式抓取及鎖定該等佇列之任一者中之資料。
方法300允許每個處理執行緒PT1、PT2、...PTX被產生為相等的且執行較容易維護及添加特徵之相同程式碼。方法300亦可避免處理執行緒之間的切換額外負擔。
方法300以用於PR階段140之優先權自動地平衡3D圖像管線100之階段之間的工作負載。此外,負載平衡在沒有一管理者執行緒之情況下自動地平衡管線階段110、130及140中之每一者之間的工作負載。負載平衡可藉由添加或移除來自3D圖像管線100之處理操作之執行緒來縮放。負載平衡需要具有最小額外負擔之處理執行緒中之每一者之間的較少通信。
在例示性實施例中,方法300可以包含一或多個電腦可執行指令之電腦程式產品的形式以硬體、軟體、韌體或其任何組合來實施。當以軟體來實施時,可將電腦程式產品儲存於一電腦可讀媒體上或使用一電腦可讀媒體來傳輸電腦程式產品,該電腦可讀媒體包括電腦儲存媒體及電腦通信媒體。
術語"電腦儲存媒體"在本文中係指用以儲存使電腦執行該方法之指令之任何媒體。以實例說明但不限制,電腦儲存媒體可包含包括電子記憶體器件(例如,RAM、ROM、EEPROM及其類似物)之固態記憶體器件、光學記憶體器件
(例如,緊密光碟(CD)、數位化通用光碟(DVD)及其類似物),或磁性記憶體器件(例如,硬碟、快閃驅動器、磁帶驅動器及其類似物),或用以儲存電腦程式產品之其他記憶體器件,或該等記憶體器件之組合。
術語"電腦通信媒體"在本文中係指用以使用(例如)調變載波、光學信號、DC或AC電流及其類似方式將電腦程式產品自一個地方傳輸至另一地方之任何實體介面。以實例說明且不限制,電腦通信媒體可包含雙絞線對、印刷電纜或扁平電纜、同軸電纜、光纖電纜、數位用戶線(DSL),或其他有線、無線或光學串列或並列介面,或其組合。
提供所揭示實施例之先前描述以使熟習此項技術者能夠作出或使用本揭示案。對於此等實施例之各種修改對於熟習此項技術者而言將顯而易見,且本文中所定義之一般原理在不脫離本揭示案之精神或範疇之情況下可適用於其他實施例。因此,本揭示案並不意欲限於本文中所展示之實施例而應符合與本文中所揭示之原理及新穎特徵一致之最寬範疇。
10‧‧‧3D成像裝置
12‧‧‧通信單元
16‧‧‧螢幕
18‧‧‧顯示區域
18'‧‧‧顯示區域
18"‧‧‧顯示區域
20‧‧‧數位信號處理器(DSP)
22‧‧‧交錯多執行緒處理器
24‧‧‧記憶體
25‧‧‧頂點陣列
26‧‧‧原始物件佇列
27‧‧‧任務佇列
261
...26X
‧‧‧指令
271
...27X
‧‧‧核心
281
...28X
‧‧‧暫存器檔案
45‧‧‧輸入/輸出(I/O)單元
100‧‧‧3D圖像管線
110‧‧‧頂點處理(VP)階段、3D管線階段
112‧‧‧模型視圖變換操作
114‧‧‧投影操作
116‧‧‧揀選操作
118‧‧‧照明與著色操作
120‧‧‧原始物件組合操作
122‧‧‧裁剪操作
124‧‧‧透視除法與檢視區操作
130‧‧‧螢幕細分(SSD)階段、3D管線階段
132‧‧‧螢幕細分操作
135‧‧‧任務清單
140‧‧‧像素呈現(PR)階段、3D管線階段
142‧‧‧柵格化、混合及紋理應用操作
144‧‧‧隱藏表面移除操作
M‧‧‧數目
N‧‧‧數目
P‧‧‧像素
PT1‧‧‧處理執行緒
PT2‧‧‧處理執行緒
PT3‧‧‧處理執行緒
PT4‧‧‧處理執行緒
PT5‧‧‧處理執行緒
PT6‧‧‧處理執行緒
PT‧‧‧處理執行緒
PTX‧‧‧處理執行緒
S11
‧‧‧子螢幕任務
S12
‧‧‧子螢幕任務
S21
‧‧‧子螢幕任務
S22
‧‧‧子螢幕任務
T1
‧‧‧細分部分
T2
‧‧‧細分部分
T3
‧‧‧細分部分
T4
‧‧‧細分部分
T1‧‧‧三角形
T11
‧‧‧細分部分
T12
‧‧‧細分部分
T13
‧‧‧細分部分
T2‧‧‧三角形
T11‧‧‧三角形
T‧‧‧三角形
V1‧‧‧頂點
V2‧‧‧頂點
V3‧‧‧頂點
圖1說明一3D成像裝置之通用方塊圖。
圖2說明一與共用記憶體建立介面之交錯多執行緒處理器。
圖3說明該交錯多執行緒處理器之細節,其中展示每一執行緒之細節。
圖4說明由具有六個執行緒之多執行緒處理器處理之交
錯指令的執行時間對核心管線的圖表。
圖5說明由兩個執行緒處理之兩個並列指令集合。
圖6說明一例示性3D成像裝置中之3D圖像管線之通用流程圖。
圖7說明3D圖像管線之處理之通用方塊圖。
圖8A說明經細分成M×N柵格之顯示空間,其中M>1且N>1。
圖8B說明用於處理圖8A之經細分之顯示空間的任務(TASK)清單。
圖9說明經細分成M×N柵格之顯示空間,其中M=1且N>1。
圖10說明經細分成M×N柵格之顯示空間,其中M>1且N=1。
圖11說明一藉由具有複數個像素之頂點座標定義之三角形。
圖12說明用於處理一經細分成一組四個細分區域之區域中之三角形的指令操作之圖像表示。
圖13說明使用一多執行緒處理器之3D圖像管線方法之流程圖。
圖14說明共用記憶體中之管線佇列之通用方塊圖。
圖15說明一用於在每一執行緒基礎上負載平衡3D圖像管線之方法的流程圖。
22‧‧‧交錯多執行緒處理器
24‧‧‧記憶體
PT1‧‧‧處理執行緒
PT2‧‧‧處理執行緒
PTX‧‧‧處理執行緒
Claims (28)
- 一種用於影像處理的處理器,其包含:複數個處理執行緒,其經組態以:執行頂點處理操作,以產生頂點輸出資訊;劃分一顯示區域為複數個子螢幕;在一子螢幕任務清單中儲存該頂點輸出資訊為複數個子螢幕任務,其中一子螢幕任務包含複數個頂點輸出資訊,其用於該複數個子螢幕中之一特定子螢幕;當在該子螢幕任務清單中的該等子螢幕任務之其中一者係可取得以用於像素呈現操作時,使該等像素呈現操作優先於該等頂點處理操作。
- 如請求項1之處理器,其中該複數個處理執行緒並列地及獨立地操作。
- 如請求項1之處理器,其中當每一處理執行緒執行該等頂點處理操作時,該處理執行緒產生用於一3D圖像影像之頂點輸出資訊。
- 如請求項1之處理器,其中每一處理執行緒在執行該等像素呈現操作時,執行該子螢幕任務之像素上之柵格化、該等像素之混合及該等像素之紋理化。
- 如請求項1之處理器,其中每一處理執行緒在執行該等頂點處理操作時檢查一佇列是否有該等頂點處理操作之一中間階層之資料,且若該佇列具有該資料,則處理該中間階層之該資料。
- 如請求項5之處理器,其中該處理執行緒在執行該等頂 點處理操作時,若該中間階層之該佇列為空,則處理來自該等頂點處理操作之一較高階層之一佇列的資料。
- 如請求項1之處理器,其中該處理器嵌入於一個人數位助理(PDA)、一掌上型電腦、一行動電話、一蜂巢式電話、一衛星電話、一膝上型電腦、一筆記型電腦、一平板PC及一無線通信器件中之一者中。
- 一種用於影像處理的器件,其包含:一處理器,其具有複數個處理執行緒,其經組態以:執行頂點處理操作,以產生頂點輸出資訊;劃分一顯示區域為複數個子螢幕;在一子螢幕任務清單中儲存該頂點輸出資訊為複數個子螢幕任務,其中一子螢幕任務包含複數個頂點輸出資訊,其用於該複數個子螢幕中之一特定子螢幕;當在該子螢幕任務清單中的該等子螢幕任務之其中一者係可取得以用於像素呈現操作時,使該等像素呈現操作優先於該等頂點處理操作;及一記憶體,其耦接至該處理器。
- 如請求項8之器件,其中該複數個處理執行緒並列地及獨立地操作。
- 如請求項8之器件,其中當每一處理執行緒執行該等頂點處理操作時,該處理執行緒產生用於一3D圖像影像之頂點輸出資訊。
- 如請求項8之器件,其中該器件為一無線器件。
- 如請求項10之器件,其中每一處理執行緒在執行該等像 素呈現操作時,執行該子螢幕任務之像素上之柵格化、該等像素之混合及該等像素之紋理化。
- 一種用於影像處理的方法,其包含:執行頂點處理操作,以產生頂點輸出資訊;劃分一顯示區域為複數個子螢幕;在一子螢幕任務清單中儲存該頂點輸出資訊為複數個子螢幕任務,其中一子螢幕任務包含複數個頂點輸出資訊,其用於該複數個子螢幕中之一特定子螢幕;當在該子螢幕任務清單中的該等子螢幕任務之其中一者係可取得以用於像素呈現操作時,使該等像素呈現操作優先於該等頂點處理操作。
- 如請求項13之方法,其中該頂點輸出資訊係用於一3D圖像影像。
- 如請求項13之方法,其進一步包含:執行該子螢幕任務之像素上之柵格化、該等像素之混合及該等像素之紋理化。
- 如請求項13之方法,其進一步包含:檢查一佇列是否有該等頂點處理操作之一中間階層之資料;且若該佇列具有該資料,則處理該中間階層之該資料。
- 如請求項16之方法,其進一步包含:若該中間階層之該佇列為空,則處理來自該等頂點處理操作之一較高階層之一佇列的資料。
- 一種非暫時性電腦可讀儲存媒體,其包含指令,其當執 行時致使一處理器的複數個執行緒以:執行頂點處理操作,以產生頂點輸出資訊;劃分一顯示區域為複數個子螢幕;在一子螢幕任務清單中儲存該頂點輸出資訊為複數個子螢幕任務,其中一子螢幕任務包含複數個頂點輸出資訊,其用於該複數個子螢幕中之一特定子螢幕;當在該子螢幕任務清單中的該等子螢幕任務之其中一者係可取得以用於像素呈現操作時,使該等像素呈現操作優先於該等頂點處理操作。
- 如請求項18之非暫時性電腦可讀儲存媒體,其中當每一處理執行緒執行該等頂點處理操作時,該處理執行緒產生用於一3D圖像影像之頂點輸出資訊。
- 如請求項18之非暫時性電腦可讀儲存媒體,其中每一處理執行緒在執行該等像素呈現操作時,執行該子螢幕任務之像素上之柵格化、該等像素之混合及該等像素之紋理化。
- 如請求項18之非暫時性電腦可讀儲存媒體,其中每一處理執行緒在執行該等頂點處理操作時,檢查一佇列是否有該等頂點處理操作之一中間階層之資料,且若該佇列具有該資料,則處理該中間階層之該資料。
- 如請求項21之非暫時性電腦可讀儲存媒體,其中每一處理執行緒在執行該等頂點處理操作時,若該中間階層之該佇列為空,則處理來自該等頂點處理操作之一較高階層之一佇列的資料。
- 一種用於影像處理的裝置,其包含具有複數個執行緒的一處理器,其中該等執行緒包含:用於執行頂點處理操作,以產生頂點輸出資訊的構件;用於劃分一顯示區域為複數個子螢幕的構件;用於在一子螢幕任務清單中儲存該頂點輸出資訊為複數個子螢幕任務的構件,其中一子螢幕任務包含複數個頂點輸出資訊,其用於該複數個子螢幕中之一特定子螢幕;當在該子螢幕任務清單中的該等子螢幕任務之其中一者係可取得以用於像素呈現操作時,用於使該等像素呈現操作優先於該等頂點處理操作的構件。
- 如請求項23之裝置,其中該複數個處理執行緒並列地及獨立地操作。
- 如請求項23之裝置,其中當每一處理執行緒執行該等頂點處理操作時,該處理執行緒產生用於一3D圖像影像之頂點輸出資訊。
- 如請求項23之裝置,其中每一處理執行緒在執行該等像素呈現操作時,執行該子螢幕任務之像素上之柵格化、該等像素之混合及該等像素之紋理化。
- 如請求項23之裝置,其中每一處理執行緒在執行該等頂點處理操作時,檢查一佇列是否有該等頂點處理操作之一中間階層之資料,且若該佇列具有該資料,則處理該中間階層之該資料。
- 如請求項27之裝置,其中每一處理執行緒在執行該等頂點處理操作時,若該中間階層之該佇列為空,則處理來自該等頂點處理操作之一較高階層之一佇列的資料。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/621,917 US7940261B2 (en) | 2007-01-10 | 2007-01-10 | Automatic load balancing of a 3D graphics pipeline |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW200842756A TW200842756A (en) | 2008-11-01 |
| TWI381328B true TWI381328B (zh) | 2013-01-01 |
Family
ID=39273141
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW097101010A TWI381328B (zh) | 2007-01-10 | 2008-01-10 | 用於三維圖像管線之自動負載平衡之方法、器件、裝置、處理器及非暫時性電腦可讀儲存媒體 |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US7940261B2 (zh) |
| EP (1) | EP2102808A1 (zh) |
| JP (1) | JP5032588B2 (zh) |
| KR (1) | KR101087520B1 (zh) |
| CN (1) | CN101578629B (zh) |
| CA (1) | CA2674227C (zh) |
| TW (1) | TWI381328B (zh) |
| WO (1) | WO2008086432A1 (zh) |
Families Citing this family (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8477143B2 (en) | 2008-03-04 | 2013-07-02 | Apple Inc. | Buffers for display acceleration |
| US8289333B2 (en) * | 2008-03-04 | 2012-10-16 | Apple Inc. | Multi-context graphics processing |
| KR101474478B1 (ko) * | 2008-05-30 | 2014-12-19 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 로컬 및 글로벌 데이터 공유 |
| US8972870B2 (en) * | 2009-08-27 | 2015-03-03 | International Business Machines Corporation | Providing alternative representations of virtual content in a virtual universe |
| CN102736947A (zh) * | 2011-05-06 | 2012-10-17 | 新奥特(北京)视频技术有限公司 | 一种图形渲染中光栅化阶段的多线程实现方法 |
| KR20140099295A (ko) * | 2011-12-28 | 2014-08-11 | 인텔 코포레이션 | 파이프라인 이미지 프로세싱 시퀀서 |
| KR101869939B1 (ko) | 2012-01-05 | 2018-06-21 | 삼성전자주식회사 | 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치 |
| KR101399472B1 (ko) * | 2012-08-13 | 2014-06-27 | (주)투비소프트 | 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법 |
| KR101399473B1 (ko) * | 2012-08-13 | 2014-05-28 | (주)투비소프트 | 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법 |
| KR101393793B1 (ko) | 2012-10-05 | 2014-05-12 | (주)디지엔터테인먼트 | 3차원 그래픽 구현 기반의 cpu 부하 최적화 방법 및 3차원 그래픽 구현 기반의 cpu 부하 최적화 장치 |
| CN103024583A (zh) * | 2012-12-26 | 2013-04-03 | 新奥特(北京)视频技术有限公司 | 一种数据显示的方法和装置 |
| US10078911B2 (en) * | 2013-03-15 | 2018-09-18 | Nvidia Corporation | System, method, and computer program product for executing processes involving at least one primitive in a graphics processor, utilizing a data structure |
| EP3995952A1 (en) * | 2013-04-19 | 2022-05-11 | Huawei Technologies Co., Ltd. | Method for displaying a 3d scene graph on a screen |
| US9348602B1 (en) * | 2013-09-03 | 2016-05-24 | Amazon Technologies, Inc. | Resource allocation for staged execution pipelining |
| CN103942823B (zh) * | 2014-02-27 | 2018-07-24 | 广州爱九游信息技术有限公司 | 一种游戏引擎渲染方法及装置 |
| US9710881B2 (en) * | 2014-04-05 | 2017-07-18 | Sony Interactive Entertainment America Llc | Varying effective resolution by screen location by altering rasterization parameters |
| US9767602B2 (en) * | 2014-06-30 | 2017-09-19 | Intel Corporation | Techniques for reduced pixel shading |
| KR102252374B1 (ko) | 2014-09-05 | 2021-05-14 | 삼성전자주식회사 | 광선 추적 유닛 및 광선 데이터를 처리하는 방법 |
| US9824413B2 (en) * | 2014-11-15 | 2017-11-21 | Intel Corporation | Sort-free threading model for a multi-threaded graphics pipeline |
| KR20170014617A (ko) * | 2015-07-30 | 2017-02-08 | 삼성에스디에스 주식회사 | 3차원 모델의 비트맵 생성 방법과 이를 수행하기 위한 장치 및 시스템 |
| CN105118089B (zh) * | 2015-08-19 | 2018-03-20 | 上海兆芯集成电路有限公司 | 三维图形管道中的可程序化像素设定方法及使用其的装置 |
| US12141614B2 (en) * | 2021-10-12 | 2024-11-12 | Square Enix Ltd. | Scene entity processing using flattened list of sub-items in computer game |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6640299B1 (en) * | 2000-04-21 | 2003-10-28 | Ati International Srl | Method and apparatus for arbitrating access to a computational engine for use in a video graphics controller |
| US7038685B1 (en) * | 2003-06-30 | 2006-05-02 | Nvidia Corporation | Programmable graphics processor for multithreaded execution of programs |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5136664A (en) * | 1988-02-23 | 1992-08-04 | Bersack Bret B | Pixel rendering |
| US5230064A (en) * | 1991-03-11 | 1993-07-20 | Industrial Technology Research Institute | High resolution graphic display organization |
| US6343309B1 (en) * | 1996-09-30 | 2002-01-29 | International Business Machines Corporaton | Method and apparatus for parallelizing a graphics pipeline |
| US6111582A (en) * | 1996-12-20 | 2000-08-29 | Jenkins; Barry L. | System and method of image generation and encoding using primitive reprojection |
| JP3763136B2 (ja) * | 1996-12-27 | 2006-04-05 | ソニー株式会社 | 描画方法および描画装置 |
| US6525737B1 (en) * | 1998-08-20 | 2003-02-25 | Apple Computer, Inc. | Graphics processor with pipeline state storage and retrieval |
| US6222550B1 (en) * | 1998-12-17 | 2001-04-24 | Neomagic Corp. | Multiple triangle pixel-pipelines with span-range pixel interlock for processing separate non-overlapping triangles for superscalar 3D graphics engine |
| US6198488B1 (en) * | 1999-12-06 | 2001-03-06 | Nvidia | Transform, lighting and rasterization system embodied on a single semiconductor platform |
| US7436979B2 (en) * | 2001-03-30 | 2008-10-14 | Siemens Energy & Automation | Method and system for image processing |
| JP4158413B2 (ja) * | 2002-05-22 | 2008-10-01 | ソニー株式会社 | 画像処理装置 |
| US7075541B2 (en) * | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
| US7239322B2 (en) * | 2003-09-29 | 2007-07-03 | Ati Technologies Inc | Multi-thread graphic processing system |
| US7154500B2 (en) * | 2004-04-20 | 2006-12-26 | The Chinese University Of Hong Kong | Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer |
| CN101849227A (zh) * | 2005-01-25 | 2010-09-29 | 透明信息技术有限公司 | 在单片构造的硅芯片上采用多个图形核心的图形处理和显示系统 |
| TWI326428B (en) * | 2005-03-18 | 2010-06-21 | Marvell World Trade Ltd | Real-time control apparatus having a multi-thread processor |
| JP4637640B2 (ja) * | 2005-05-16 | 2011-02-23 | 三菱電機株式会社 | 図形描画装置 |
| US7659899B2 (en) * | 2005-08-08 | 2010-02-09 | Via Technologies, Inc. | System and method to manage data processing stages of a logical graphics pipeline |
-
2007
- 2007-01-10 US US11/621,917 patent/US7940261B2/en active Active
-
2008
- 2008-01-09 KR KR1020097014397A patent/KR101087520B1/ko not_active Expired - Fee Related
- 2008-01-09 JP JP2009545664A patent/JP5032588B2/ja not_active Expired - Fee Related
- 2008-01-09 EP EP08705816A patent/EP2102808A1/en not_active Withdrawn
- 2008-01-09 CA CA2674227A patent/CA2674227C/en not_active Expired - Fee Related
- 2008-01-09 WO PCT/US2008/050654 patent/WO2008086432A1/en not_active Ceased
- 2008-01-09 CN CN2008800017698A patent/CN101578629B/zh not_active Expired - Fee Related
- 2008-01-10 TW TW097101010A patent/TWI381328B/zh not_active IP Right Cessation
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6640299B1 (en) * | 2000-04-21 | 2003-10-28 | Ati International Srl | Method and apparatus for arbitrating access to a computational engine for use in a video graphics controller |
| US7038685B1 (en) * | 2003-06-30 | 2006-05-02 | Nvidia Corporation | Programmable graphics processor for multithreaded execution of programs |
Also Published As
| Publication number | Publication date |
|---|---|
| US7940261B2 (en) | 2011-05-10 |
| WO2008086432A1 (en) | 2008-07-17 |
| TW200842756A (en) | 2008-11-01 |
| US20080165199A1 (en) | 2008-07-10 |
| KR20090096717A (ko) | 2009-09-14 |
| CA2674227A1 (en) | 2008-07-17 |
| CN101578629A (zh) | 2009-11-11 |
| KR101087520B1 (ko) | 2011-11-28 |
| CA2674227C (en) | 2012-05-29 |
| EP2102808A1 (en) | 2009-09-23 |
| JP5032588B2 (ja) | 2012-09-26 |
| CN101578629B (zh) | 2013-05-01 |
| JP2010516001A (ja) | 2010-05-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI381328B (zh) | 用於三維圖像管線之自動負載平衡之方法、器件、裝置、處理器及非暫時性電腦可讀儲存媒體 | |
| JP4981923B2 (ja) | 高速ピクセル・レンダリング処理 | |
| EP3471059B1 (en) | Geometry to tiling arbiter for tile-based rendering system | |
| EP3185217B1 (en) | Allocation of tiles to processing engines in a graphics processing system | |
| US10229529B2 (en) | System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table | |
| US7634637B1 (en) | Execution of parallel groups of threads with per-instruction serialization | |
| CN104823215A (zh) | 子画面图形渲染系统 | |
| US9269179B2 (en) | System, method, and computer program product for generating primitive specific attributes | |
| US20150054827A1 (en) | System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline | |
| KR102644276B1 (ko) | 그래픽 처리 장치 및 방법 | |
| US8363059B2 (en) | Rendering processing apparatus, parallel processing apparatus, and exclusive control method | |
| US11099685B2 (en) | Selective touch sensor activation for power savings | |
| CN116308995A (zh) | OpenCL与OpenGL混合的图像计算显示方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |