分布式圖形處理的制作方法
【專利說明】分布式圖形處理
【背景技術(shù)】
[0001] 這一般地涉及圖形處理。
[0002] 在某些情況下,將圖形處理任務(wù)從本地設(shè)備卸載到遠程服務(wù)器是有利的。例如,可 以將圖形處理從具有有限的處理能力的本地設(shè)備卸載到云。另外,可以在對等布置中將圖 形處理任務(wù)從一個設(shè)備卸載到其他設(shè)備。
[0003] 遠程圖形處理的質(zhì)量常常取決于客戶端與遠程設(shè)備之間的連接。如果連接停止 (down),則將由于遺漏的圖形數(shù)據(jù)而掉幀。這可能在網(wǎng)絡(luò)降級時或者當遠程服務(wù)器關(guān)閉或 在網(wǎng)絡(luò)之外時發(fā)生。
【附圖說明】
[0004] 相對于以下各圖來描述某些實施例: 圖1示出了根據(jù)本發(fā)明的一個實施例的圖像的分解; 圖2示出了根據(jù)本發(fā)明的一個實施例的圖像恢復; 圖3是本發(fā)明的一個實施例的示意性描述; 圖4是客戶端上的用于本發(fā)明的一個實施例的流程圖; 圖5是用于遠程設(shè)備的服務(wù)器上的用于本發(fā)明的一個實施例的流程圖; 圖6是用于一個實施例的系統(tǒng)描述;以及 圖7是一個實施例的前正視圖(front elevational view)。
【具體實施方式】
[0005] 根據(jù)某些實施例,可以通過將原始高分辨率圖形數(shù)據(jù)處理并行化成在遠程設(shè)備上 處理的多個較低分辨率圖形數(shù)據(jù)來改進遠程圖形處理的穩(wěn)定性。如果某些遠程連接停止, 則客戶端圖形應(yīng)用仍可以從結(jié)果得到的圖像的其余部分以較低的清晰度生成最終屏幕圖 像,以確保不掉幀。
[0006] 可在提及的客戶端中提供分組分派代理和分組恢復代理。分組分派代理將應(yīng)用程 序接口(API)的原始圖像相關(guān)數(shù)據(jù)分解成多個低分辨率圖像。每個遠程設(shè)備對低分辨率圖 像數(shù)據(jù)執(zhí)行圖形應(yīng)用程序接口調(diào)用。然后,將結(jié)果得到的圖像發(fā)送回到分組恢復代理以生 成最終屏幕顯示。原始圖像相關(guān)數(shù)據(jù)的分解可以是原料(raw) RGB數(shù)據(jù)、協(xié)調(diào)數(shù)據(jù)、阿爾法 混合或旋轉(zhuǎn)的分解。
[0007] 參考圖1,客戶端上的分組分派代理攔截客戶端上的圖形API調(diào)用并向服務(wù) 器或遠程設(shè)備集群發(fā)送圖形調(diào)用。用于做這些的典型技術(shù)涉及到DirectFB voodoo和 VirtualGL。在發(fā)送出圖形API調(diào)用之前,分組分派代理將圖像相關(guān)數(shù)據(jù)分解,并將該數(shù)據(jù) 分類到多個(例如四個)單獨的遠程設(shè)備。否則,其可將已分解圖像分類到任何數(shù)目的可用 遠程設(shè)備中。然后分片地向遠程服務(wù)器發(fā)送原始圖像數(shù)據(jù)。
[0008] 如圖1中所示,可以將單元(cell)的6X6陣列分解成四個3X3陣列,每個被發(fā) 送到不同的遠程服務(wù)器或遠程設(shè)備以用于獨立處理。該三乘三陣列的每個可選自規(guī)則間隔 的像素位置。
[0009] 然后每個遠程服務(wù)器只須處理用于四個單元中的每一個的原始數(shù)據(jù)即可。如果一 個單元丟失,則仍可以從其余的三個服務(wù)器甚至以較低的分辨率來重構(gòu)原始圖像。
[0010] 客戶端上的分組恢復代理從由遠程服務(wù)器集群發(fā)送的結(jié)果得到的圖像生成最終 圖像。在分布式圖形處理中,所有API調(diào)用可在服務(wù)器上執(zhí)行。然后將結(jié)果得到的圖像 發(fā)送回到客戶端以用于再現(xiàn)。這是根據(jù)使用VirtualGL的實施例。這是來自分組分派 (distpatch)代理的相反過程。
[0011] 如圖2中所示,將四個結(jié)果得到的圖像重組成原始圖像。
[0012] 如果到服務(wù)器的任何連接斷開,則分組恢復代理基于其他圖像的相鄰像素來恢復 丟失的圖像數(shù)據(jù)。例如,如果服務(wù)器1停機,則圖像1的結(jié)果的估計可以基于來自來自其他 三個服務(wù)器的相鄰像素的值的平均,其在這種情況下為圖像2、3和4。該清晰度可能有些較 低,但是在某些情況下,可避免掉幀。
[0013] 參考圖3,客戶端12可以是系統(tǒng)或片上系統(tǒng)(S0C),其通過網(wǎng)絡(luò)24與同多個遠程 服務(wù)器28中的每一個相關(guān)聯(lián)的分布式處理代理26對接,所述多個遠程服務(wù)器28定義服務(wù) 器集群,在這種情況下編號為1至4,其也可以是芯片上系統(tǒng)。該客戶端包括存儲器14,其 存儲圖形應(yīng)用、分組分派代理20以及分組恢復代理22。將最終圖像18從分組恢復代理22 傳遞到圖形應(yīng)用。將原始圖像16從圖形應(yīng)用傳遞到分組分派代理。
[0014] 在使用OpenGL的示例中,圖形應(yīng)用在客戶端上啟動。分組分派代理攔截API調(diào)用, 諸如gIDrawPixels,以將圖像數(shù)據(jù)分解并將多個已分解圖像分派到遠程服務(wù)器。除圖像數(shù) 據(jù)之外,分組分派代理可以改變諸如協(xié)調(diào)和大小之類的相關(guān)數(shù)據(jù)。分布式處理代理26處理 來自客戶端的API調(diào)用以在服務(wù)器上執(zhí)行API調(diào)用。當gIFinish或eglSwapBuffer被調(diào) 用時,分布式處理代理將結(jié)果得到的圖像發(fā)送到客戶端且特別是分組恢復代理22。當如描 述的那樣將圖像分裂成四路時,在服務(wù)器上接收到的圖像數(shù)據(jù)的大小一般地是原始大小的 四分之一。當然,還可完成其他分裂。
[0015] 分組恢復代理22從遠程服務(wù)器接收結(jié)果得到的圖像并生成最終圖像。如果一個 連接停止,則可基于來自可以在其他結(jié)果得到的圖像中找到的相鄰像素的值的內(nèi)插來恢復 丟失的結(jié)果得到的圖像。
[0016] 例如,如果結(jié)果圖像1出故障,則可以用以下偽代碼將其恢復:
[0017] 然后圖形應(yīng)用14將最終圖像再現(xiàn)到客戶端的屏幕。作為示例,本地客戶端可以是 移動平板電腦,并且遠程設(shè)備可以是云。本地客戶端的其他示例包括平板電腦或其他移動 設(shè)備。
[0018] 因此,參考圖4和5,示出了兩個流程以便圖示客戶端30上的代碼與服務(wù)器36上 的代碼之間的交互。雖然想象了基于軟件的環(huán)境,但還可用固件和/或硬件來實現(xiàn)圖4和 5中所示的序列。在軟件和固件實施例中,可通過存儲在諸如磁、光或半導體存儲之類的一 個或多個非臨時計算機可讀介質(zhì)中的計算機執(zhí)行指令來實現(xiàn)序列。
[0019] 首先參考圖4,客戶端序列30通過啟動圖形應(yīng)用開始,如在框32中所指示的。分 組分派代理攔截API調(diào)用以將圖像分解并分派到遠程服務(wù)器,如在框34中所指示的。如用 短劃線所示,流程然后移動至服務(wù)器36,其接收API調(diào)用,如在框38中所指示的,服務(wù)器集 群在分布式服務(wù)器中執(zhí)行API調(diào)用并且將結(jié)果發(fā)送回到客戶端,如在框40中所指示的。如 短劃線所指示的,流程返回至客戶端30,在那里,分組恢復代理從服務(wù)器接收結(jié)果得到的圖 像,并且然后組裝完整的圖像,如在框42中所指示的。
[0020] 菱形44處的檢查確定是否從所有服務(wù)器接收到所有圖像數(shù)據(jù)。如果是這樣,則如 在框46中所指示的那樣再現(xiàn)最終圖像。否則,使用內(nèi)插、平均或其他技術(shù)來恢復丟失圖像, 如在框48中所指示的,并且在框46處再現(xiàn)最終圖像。
[0021] 圖6圖示出系統(tǒng)700的實施例。在實施例中,系統(tǒng)700可以是介質(zhì)系統(tǒng),雖然系統(tǒng) 700不限于此背景。例如,可將系統(tǒng)700結(jié)合到個人計算機(PC)、膝上型計算機、超級膝上 型計算機、平板電腦、觸控板、便攜式計算機、手持式計算機、掌上型計算機、個人數(shù)字助理 (PDA)、蜂窩式電話、組合蜂窩式電話/PDA、電視、智能設(shè)備(例如,智能電話、智能平板電腦 或智能電視)、移動互聯(lián)網(wǎng)設(shè)備(MID)、消息收發(fā)設(shè)備、數(shù)據(jù)通信設(shè)備等。
[0022] 在實施例中,系統(tǒng)700包括被耦合到顯示器720的平臺702。平臺702可從內(nèi)容設(shè) 備接收內(nèi)容,內(nèi)容設(shè)備諸如一個或多個內(nèi)容服務(wù)設(shè)備730或一個或多個內(nèi)容遞送設(shè)備740 或其他類似內(nèi)容源。可使用包括一個或多個導航特征的導航控制器750來與例如平臺702 和/或顯示器720相交互。下面更詳細地描述這些部件中的每一個。
[0023] 在實施例中,平臺702可包括芯片組705、處理器710、存儲器712、儲存器714、圖 形子系統(tǒng)715、應(yīng)用716、全球定位系統(tǒng)(GPS) 721、照相機723和/或無線電718的任何組 合。芯片組705可提供在處理器710、存儲器712、儲存器714、圖形子系統(tǒng)715、應(yīng)用716和 /或無線電718之間的互通信。例如,芯片組705可包括能夠提供與儲存器714的互通信的 存儲適配器(未描述)。
[0024] 另外,平臺702可包括操作系統(tǒng)770。到處理器772的接口可對接操作系統(tǒng)和處理 器 710〇
[0025] 可提供固件790以實現(xiàn)諸如啟動序列之類的功能。可提供用以使得固件能夠從平 臺702外面更新的更新模塊。例如,更新模塊可包括用以確定對更新的嘗試是否可信并識 別固件790的最近更新以促進何時需要更新的確定的代碼。
[0026] 在某些實施例中,可通過外部電源對平臺702供電。在某些情況下,平