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