背景技術(shù):
本文所描述的技術(shù)涉及用于在數(shù)據(jù)處理系統(tǒng)中提供輸出表面(surface)(如要顯示的幀)的方法和系統(tǒng),并且具體地說,涉及在數(shù)據(jù)處理系統(tǒng)中提供根據(jù)從一個或更多個輸入表面(如輸入窗口)合成(生成)的輸出表面。
許多電子裝置和系統(tǒng)使用窗口來在顯示屏上向用戶顯示諸如圖形用戶接口、游戲、演示等這樣的信息(并且允許用戶與正被執(zhí)行的一應(yīng)用或多個應(yīng)用進行交互)。
提供這種窗口的常見方法是:使用合成窗口系統(tǒng),其中,單個輸入窗口例如通過合成引擎而恰當(dāng)?shù)亟M合(即,合成),并將結(jié)果寫出至幀緩沖區(qū),其接著由用于所討論的顯示的顯示控制器來讀取,以便向用戶顯示該窗口。因為這種系統(tǒng)寫出至幀緩沖區(qū),并接著讀取該緩沖區(qū)以供顯示,所以它們通常被稱為幀緩沖區(qū)合成系統(tǒng)。
除了這種幀緩沖區(qū)合成系統(tǒng)之外,還存在直接合成系統(tǒng),其中,根據(jù)輸入表面(窗口)生成合成幀,并接著直接(即,不經(jīng)由幀緩沖區(qū)中的中間存儲)輸出至顯示器,例如,通過合成顯示控制器。
在這樣的合成系統(tǒng)中,許多硬件資源(包括例如存儲針對存儲器中的幀緩沖區(qū)的指針的專用寄存器、幀緩沖區(qū)大小、裁剪和格式信息、以及專用輸入fifo)通常針如下各個輸入表面而被提供:合成系統(tǒng)可以合成到一輸出表面中。由于針對每個輸入表面所需的硬件資源相當(dāng)可觀,因而,大多數(shù)合成引擎或合成顯示控制器僅支持有限數(shù)量的輸入表面,如在三個至八個輸入表面之間。
然而,對于可能需要合成的輸入表面數(shù)量來說通常沒有上限。在要合成的輸入表面的數(shù)量超過組合系統(tǒng)的硬件資源可以支持的輸入表面的數(shù)量的情況下,可以將一些組合操作卸載到分離的處理器,如圖形處理單元(gpu)或cpu,但這并不總是可能或者在理想上是可取的。
因此,申請人認為,合成系統(tǒng)仍有改進的余地。
附圖說明
下面,參照附圖,僅通過示例的方式對本文所描述的技術(shù)的實施方式進行描述,其中:
圖1是根據(jù)本文所描述的技術(shù)的所描述實施方式的、由多個輸入表面合成的一輸出表面的示例;
圖2示意性地示出了可以根據(jù)本文所描述的技術(shù)的所描述實施方式來操作的數(shù)據(jù)處理系統(tǒng);
圖3示意性地示出了可以根據(jù)本文所描述的技術(shù)的所描述實施方式來操作的合成顯示控制器;
圖4示意性地示出了可以根據(jù)本文所描述的技術(shù)的所描述實施方式來操作的合成顯示控制器的硬件模塊;
圖5、圖6、圖7a以及圖7b示出了可以根據(jù)本文所描述的技術(shù)的所描述實施方式來使用的數(shù)據(jù)結(jié)構(gòu);
圖8、圖9a以及圖9b示出了可以根據(jù)本文所描述的技術(shù)的所描述實施方式來合成的次級表面(secondarysurface)的示例;
圖10a、圖10b以及圖10c示出了例示根據(jù)本文所描述的技術(shù)的實施方式的系統(tǒng)的操作的流程圖;
圖11示出了例示根據(jù)本文所描述的技術(shù)的實施方式的顯示控制器的操作的流程圖;
圖12示意性地示出了可以根據(jù)本文所描述的技術(shù)的另一實施方式來操作的合成顯示控制器的硬件模塊;
圖13a和圖13b示出了例示根據(jù)圖12所示實施方式的系統(tǒng)的操作的流程圖;
圖14示出了例示圖12所示實施方式的顯示控制器的操作的流程圖;以及
圖15示意性地示出了可以根據(jù)本文所描述的技術(shù)的所描述實施方式來操作的另一數(shù)據(jù)處理系統(tǒng)。
貫穿附圖,相同標(biāo)號在合適情況下被用于相同特征。
具體實施方式
本文所述的技術(shù)的實施方式包括一種方法,該方法包括以下步驟:
當(dāng)要通過合成處理器從多個輸入表面合成輸出表面時,進行如下操作:
確定所述多個輸入表面中的兩個或更多個輸入表面是否能夠被組合成用于提供給所述合成處理器的單個次級表面;以及
當(dāng)確定了所述多個輸入表面中的兩個或更多個輸入表面可以被組合成用于提供給所述合成處理器的單個次級表面時,進行如下操作:
將表示所述次級表面的數(shù)據(jù)提供給所述合成處理器,所述數(shù)據(jù)指示對所述次級表面有貢獻的所述輸入表面。
本文所描述的技術(shù)的另一實施方式包括一種裝置,該裝置包括處理電路,該處理電路被配置成:
當(dāng)要通過合成處理器從多個輸入表面來合成輸出表面時,該處理電路能夠進行如下操作:
確定所述多個輸入表面中的兩個或更多個輸入表面是否能夠被組合成用于提供給所述合成處理器的單個次級表面;并且
如果確定所述多個輸入表面中的兩個或更多個輸入表面能夠被組合成用于提供給所述合成處理器的單個次級表面,則進行如下操作:
將表示所述次級表面的數(shù)據(jù)提供給所述合成處理器,所述數(shù)據(jù)指示對所述次級表面有貢獻的所述輸入表面。
本文所描述的技術(shù)涉及一種合成系統(tǒng),其中,利用合成處理器(如合成顯示控制器或合成引擎)將多個輸入表面合成(組合),以提供輸出表面(其例如可以接著被顯示和/或?qū)懗鲋链鎯ζ鳎缬糜陲@示)。然而,在本文所描述的技術(shù)中,不是簡單地將所有輸入表面直接提供給組合處理,而是兩個或更多個輸入表面實際上首先被組合成單個次級(中間)表面,接著在合成輸出表面時使用該次級表面。
如下將進一步討論的,通過將多個輸入表面標(biāo)識并組合成次級表面,然后可以將該次級表面作為相當(dāng)于任何其它輸入表面的單一表面提供給合成處理。因而,這實際上可以允許合成更多輸入表面,來提供輸出表面,但不需要單獨針對每一個輸入表面提供明確的硬件支持(例如,fifo緩沖區(qū)),或者利用諸如gpu這樣的另一處理器來合成一些或全部輸入表面。
因此,可以在例如合成引擎或合成顯示控制器中容納更大數(shù)量的輸入表面,而不會顯著增加所需硬件資源,因為在將單個表面合成以形成該輸出表面時,該合成處理可以將該次級表面處理為單一表面。
本文所描述的技術(shù)中的輸入表面和輸出表面可以是任何合適和期望的這種表面。如將根據(jù)上述清楚,在一個實施方式中,本文所描述的技術(shù)用于合成窗口系統(tǒng),因此輸入表面是輸入窗口(待顯示),并且輸出表面是用于顯示的輸出幀(合成窗口)。在合成窗口系統(tǒng)中,輸入表面窗口例如可以用于游戲、演示、圖形用戶接口(gui)、具有視頻數(shù)據(jù)(例如,具有圖形“回放”和“暫?!眻D標(biāo)的視頻幀)的gui等。
然而,其它布置也是可以的。例如,輸出表面可以是一些中間窗口,接著本身將與其它窗口合成為最終輸出窗口(幀),或者輸出表面例如可以是某種形式的數(shù)據(jù)結(jié)構(gòu),如圖形紋理(graphicstexture),其旨在被用于進一步(例如,圖形)處理。
在實施方式中,輸入表面和輸出表面都是圖像,例如。用于顯示的幀。
輸入表面可以具有相同或不同的大小,并且輸出表面與輸入表面可以大小相同或大小不同。
輸入表面可以根據(jù)需要生成,例如,通過諸如圖形處理系統(tǒng)(圖形處理器)、視頻處理器、cpu等這樣的表面(幀)生成器適當(dāng)?shù)劁秩尽?/p>
在實施方式中,所生成的輸入表面存儲在適當(dāng)?shù)拇鎯ζ髦?,例如,存儲在主存儲器中的相?yīng)幀緩沖區(qū)中,從那里它們可以被檢索以供使用。在實施方式中,還生成并存儲指示輸入表面數(shù)據(jù)的位置的數(shù)據(jù)。
可以按任何合適和希望的方式來執(zhí)行與是否可以使用要合成以形成輸出表面的任何輸入表面以形成次級表面有關(guān)的確定。在實施方式中,所述確定的步驟還確定哪些輸入表面(若有的話)用于次級表面(例如,作為同一確定處理的一部分)。
在一個實施方式中,確定是否以及哪些輸入表面可以在次級表面中組合的步驟包括:確定來自所述多個輸入表面的任何輸入表面是否彼此不交疊(例如和來自所述多個輸入表面中的任何其它輸入表面),接著利用所確定的未交疊(non-overlappinginputsurfaces)的輸入表面(若有的話)中的兩個或更多個來形成次級表面。由此,在實施方式中,該次級表面由兩個或更多個未交疊輸入表面形成。
申請人已經(jīng)認識到,未交疊輸入表面(無論如何選擇的)更直接組合成次級表面,因為不考慮接著需要假設(shè)有關(guān)輸入表面的大小或位置,即,在記住其它輸入表面的同時,輸入表面的哪個部分是可見的,例如,由于交疊輸入表面或者由于輸入表面的透明度(即α(alpha)值)。
在這些布置中,次級表面可以僅由所述多個輸入表面中的、不與所述多個輸入表面中的任何其它輸入表面交疊的輸入表面來形成。另選的是,次級表面可以由輸入表面的這樣的子集形成,即,該子集本身彼此不交疊(即,不交疊形成輸入表面的次級表面子集中的任何其它輸入表面),但是在輸入表面子集內(nèi)的輸入表面接著(潛在地)交疊不包括在用于形成次級表面的輸入表面子集中的其它輸入表面。
由此,在這種情況下,次級表面將由彼此根本不交疊的一組輸入表面形成,但是在要合成的全部多個輸入表面中可能存在與用于次級表面的輸入表面子集中的一個或多個輸入表面交疊的其它輸入表面。
在實施方式中,特別是在次級表面由可以交疊或不交疊所述多個輸入表面中的、未包括在次級表面中的其它輸入表面的輸入表面形成的情況下,檢查被用于次級表面的輸入表面是否不具有交疊它們之間(在被用于次級表面的任何兩個輸入表面之間)的非(完全)透明輸入表面的任何中間體(就深度而言),并且僅不具有交疊它們之間的非(完全)透明的輸入表面的任何中間體(就深度而言)的輸入表面被用于形成次級表面。
次級表面可以僅由未交疊輸入表面形成,并且在這種情況下,每個輸入表面的整體可以包括在次級表面中。
然而,申請人進一步認識到,也可以或者代替地將交疊輸入表面組合成單個次級表面,因此在實施方式中,這就是所要做的。在這種情況下,次級表面可以僅包括所討論輸入表面中的至少一個的一部分或多部分(但不是全部)。
在考慮交疊輸入表面以包含在次級表面中的情況下,接著在實施方式中,當(dāng)最前面(畫面空間)(表面交疊的地方)(完全)不透明時,在次級表面中僅包括一對交疊輸入表面。
由此,在實施方式中,確定是否以及哪些輸入表面可以在次級表面中組合的步驟包括:針對所述多個輸入表面中的、至少部分交疊的輸入表面,確定所確定的交疊的輸入表面的畫面空間中的最前面輸入表面在表面交疊的地方是否不透明的,并且,在實施方式中,如果是這樣,則將所確定的交疊的輸入表面包括在次級表面中。
在一個實施方式中,次級表面僅由不透明輸入表面形成,但這不是必需的,并且若希望的話,可以包括一個或更多個非不透明輸入表面(例如,不交疊和/或位于次級表面中的其它輸入表面后面)。次級表面對于位于其后面的表面來說,可以整體或部分地非不透明(半透明)。
在實施方式中,輸入表面在畫面空間中按深度次序加以考慮,例如,從畫面空間中的最前面的輸入表面開始。由此,在實施方式中,首先通過增加畫面空間中的深度來對所述多個輸入表面進行排序。
由此,在實施方式中,當(dāng)確定是否以及哪些輸入表面包括在次級表面中時,首先考慮按它們在畫面空間中的深度次序的第一對輸入表面(例如,查看它們是否完全交疊),接著考慮按深度次序的下一個輸入表面(例如,查看其是否與已經(jīng)選擇以形成次級表面的任何輸入表面交疊)等等,直到確定用于形成次級表面的一組輸入表面為止。
考慮到按深度次序的輸入表面(例如,確定給定輸入表面與已經(jīng)選擇的輸入表面是否存在任何交疊)是確定可以使用哪些輸入表面來形成次級表面的特別便利的方式。
在實施方式中,操作系統(tǒng)或應(yīng)用例如還可以或代替地指定要包括在次級表面中的一個輸入表面或多個輸入表面,即,輸入表面可以通過例如本文所描述的技術(shù)的操作之外的處理器或應(yīng)用而被預(yù)定為包括在次級表面中。
在實施方式中,在確定要用于形成次級表面的那些輸入表面之前,完全透明的任何輸入表面都被丟棄。如將清楚,處理這些透明表面沒有意義,因為它們不會對輸出表面有貢獻。
類似的是,在實施方式中,在確定用于形成次級表面的那些輸入表面之前,丟棄完全被其它輸入表面的不透明區(qū)域(或完全不透明的其它輸入表面)覆蓋的任何輸入表面。如將清楚,處理這種輸入表面沒有意義,因為它們不會對輸出表面有貢獻。
如將清楚,輸入表面的次序(例如,根據(jù)在畫面空間中的深度)連同畫面空間中的所述多個輸入表面的大小和位置一起,對于確定哪些輸入表面用于形成次級表面來說特別有用。由此,在實施方式中,所述多個輸入表面的一個或更多個屬性,例如,以下中的一個或更多個(并且例如,全部):輸入表面的排序、每個輸入表面的大小、每個輸入表面的位置、以及每個輸入表面的透明度,被用于確定如下事項:任何輸入表面是否能夠被組合以形成次級表面,和/或哪些所述輸入表面應(yīng)當(dāng)組合以形成次級表面。
可以按任何合適和希望的方式提供所述多個輸入表面的屬性。在一個實施方式中,處理器(例如,gpu或運行操作系統(tǒng)的cpu)被配置成,將所述多個輸入表面的一個或更多個屬性提供給次級表面確定處理。
所述多個輸入表面中的所有輸入表面能夠被組合在單個次級表面中,即,確定哪些輸入表面用于形成次級表面可以導(dǎo)致所有輸入表面被選擇。然而,在實施方式中,從所述多個輸入表面中的輸入表面子集生成次級表面。由此,在實施方式中,次級表面是輸出表面處理中的“中間”表面,其接著與其它輸入表面和/或按本文所描述的技術(shù)的方式生成的次級表面進行合成,以形成合成輸出表面。
還應(yīng)清楚,可以有不止一個的輸入表面組合,其滿足用于形成次級表面的標(biāo)準(zhǔn),例如,不交疊的一組輸入表面。在這種情況下,可以僅形成一個次級表面,但在實施方式中,形成兩個或更多個次級表面,例如每個由輸入表面的不同子集組成。
由此,在實施方式中,存在兩個或更多個次級表面,其接著彼此和任何剩余的輸入表面合成以提供合成輸出表面。
一旦確定了要組合成次級表面以供給合成處理器的輸入表面,就將表示次級表面的數(shù)據(jù)提供給合成處理器。
該數(shù)據(jù)可以按任何合適和希望的方式提供給合成處理器。在實施方式中,其被存儲在(寫入)合成處理器的或合成處理器可訪問的合適存儲器中,例如,合成處理器的或合成處理器可訪問的一個本地存儲器或多個本地存儲器中。由此,表示次級表面的數(shù)據(jù)例如可以被寫入與合成處理器相關(guān)聯(lián)的一組寄存器(并且在一個實施方式中,這就是所做的),和/或可以將其寫入合成處理器的或與合成處理器相關(guān)聯(lián)的合適高速緩沖存儲器。
將表示次級表面的數(shù)據(jù)提供給合成處理器的處理可以簡單地包括:向合成處理器提供已經(jīng)存在的關(guān)于輸入表面的數(shù)據(jù)(例如,通過將該數(shù)據(jù)存儲在與合成處理器相關(guān)聯(lián)的寄存器中),或者若希望的話,其可以包括導(dǎo)出新數(shù)據(jù)(和新數(shù)據(jù)結(jié)構(gòu))以指示對次級表面有貢獻的輸入表面。由此,在實施方式中,本文所描述的技術(shù)包括生成表示次級表面的數(shù)據(jù),該數(shù)據(jù)指示對次級表面有貢獻的輸入表面,接著將該數(shù)據(jù)提供給合成處理器,例如,通過將其存儲在與合成處理器相關(guān)聯(lián)的或合成處理器可訪問的合適存儲(部存儲器)中。
指示對次級表面有貢獻的輸入表面并且提供給合成處理器的、表示次級表面的數(shù)據(jù)可以采取任何希望和合適的形式。
例如,其可以簡單地指示要對次級表面有貢獻的輸入表面(例如,不另外指示那些輸入表面如何布置在次級表面內(nèi))。由此,在一個實施方式中,包括對次級表面有貢獻的輸入表面的標(biāo)識,例如,所確定的輸入表面的列表。這在例如次級表面由完全未交疊的輸入表面形成的情況下可能是恰當(dāng)?shù)?,如在這種情況下,簡單地指示哪些輸入表面對次級表面有貢獻可能足以允許合成處理器確定在次級表面內(nèi)的任何給定位置處使用哪個輸入表面。
在這種布置的一個實施方式中(和例如在其它方面)要用于形成次級表面的輸入表面按特定(例如,選定)次序布置,并且指示給合成處理器。在實施方式中,要形成次級表面的輸入表面基于它們的水平位置坐標(biāo)(它們的x坐標(biāo))(例如它們的左邊緣)來分類(排序)。在實施方式中,次級表面中的輸入表面按它們的左邊緣的x坐標(biāo)來分類。這因而易于合成處理/處理器簡單地通過輸入表面(這些輸入表面要針對次級表面的每個水平線從左到右形成次級表面)進行工作,以確定哪個輸入表面用于次級表面內(nèi)的每個相應(yīng)位置(例如,在如下布置中,其中要形成次級表面的輸入表面在該次級表面內(nèi)不彼此交疊)。
在實施方式中,提供給合成處理器的、指示對次級表面有貢獻的輸入表面的數(shù)據(jù)包括:指示存儲針對所討論的輸入表面的數(shù)據(jù)的地方的數(shù)據(jù)。該數(shù)據(jù)可以采取任何希望和合適的形式,但在實施方式中,包括以下中的一個或更多個并且例如包括全部:針對用于輸入表面的數(shù)據(jù)存儲在存儲器中的地方的指針,和存儲器中輸入表面的大小的指示。這可以是在對次級表面有貢獻的輸入表面被簡單地標(biāo)識的情況下需要提供給合成處理器的所有數(shù)據(jù),例如,其中次級表面僅由未交疊的輸入表面形成。
在實施方式中,提供給合成處理器的表示次級表面的數(shù)據(jù)至少在有限的程度上指示如何將輸入表面布置在次級表面中。這在次級表面包括交疊輸入表面的情況下可能特別合適,并且將例如有助于減少或避免需要合成處理器本身確定哪個輸入表面存在于次級表面內(nèi)的任何給定位置。
由此,在實施方式中,表示次級表面的數(shù)據(jù)針對次級表面的兩個或更多個區(qū)域中的每一個區(qū)域,標(biāo)識要形成次級表面的所述區(qū)域的輸入表面。
由此,在實施方式中,將表示次級表面的數(shù)據(jù)提供給合成處理器的步驟包括(并處理電路被配置成):
針對所述次級表面的兩個或更多個區(qū)域中的每一個區(qū)域,確定所述第一個輸入表面中的所述兩個或更多個輸入表面中的哪個輸入表面要形成所述次級表面的所述區(qū)域;并且
針對所述次級表面的兩個或更多個區(qū)域中的每一個區(qū)域,向所述合成處理器提供如下數(shù)據(jù),該數(shù)據(jù)標(biāo)識要形成所述次級表面的所述區(qū)域的所述輸入表面。
在這些實施方式中,因此,針對所述次級表面的所述兩個或更多個區(qū)域中的每一個區(qū)域,包括標(biāo)識要形成次級表面區(qū)域的輸入表面的信息的數(shù)據(jù)結(jié)構(gòu)例如被寫入合成處理器的存儲部或合成處理器可訪問的存儲部。
在本文所描述的技術(shù)的這些實施方式中,基于具有多個區(qū)域的次級表面來指示次級表面內(nèi)的輸入表面的布置,每個都對應(yīng)于次級表面的、由輸入表面形成的區(qū)域。
以每個區(qū)域為基礎(chǔ)指示對次級表面有貢獻的輸入表面的布置易于具有對次級表面有貢獻的輸入表面的更復(fù)雜布置,如彼此交疊的輸入表面和/或具有不規(guī)則形狀的輸入表面。
可以按任何合適和希望的方式來確定要在所述兩個或更多個區(qū)域處形成次級表面的輸入表面。例如,可以確定針對每個區(qū)域的最前面的輸入表面,并由此在數(shù)據(jù)結(jié)構(gòu)中為該區(qū)域指示。然而,在實施方式中,首先通過應(yīng)用一個或更多個上述標(biāo)準(zhǔn)來確定要用于形成次級表面的輸入表面,這些標(biāo)準(zhǔn)整體上適用于輸入表面,例如,它們的交疊、透明度、不透明度、排序等。
因此,預(yù)先選擇適于形成次級表面的多個輸入表面,接著確定要用于在所述兩個或更多個區(qū)域中的每一個處形成次級表面的輸入表面,例如,通過從針對每個區(qū)域的預(yù)選輸入表面集合中確定最前面的輸入表面。
在這些實施方式中的布置中,以逐條線為基礎(chǔ)來確定要形成次級表面的每個區(qū)域的輸入表面,即,次級表面的這些區(qū)域包括橫貫(traversing)次級表面的一個或更多個組一條或更多條線。
通過以逐條線(或一組線)為基礎(chǔ)來確定輸入表面的布置,合成處理器不需要自己確定橫跨穿過整個次級表面的輸入表面的布置,例如,它們的大小和位置。
每條線的寬度(即,沿垂直于橫貫次級表面的線的長度的方向)可以采取適合和希望的任何值。在實施方式中,每條線的寬度是一個點,例如,采樣點,(如存儲在存儲器中),但這可以針對最終顯示加以縮放。
橫貫次級表面的線可以按任何合適和希望的方式來定義。在實施方式中,線是直的,并且例如,線水平地橫貫次級表面。然而,次級表面(和包括次級表面的幀架)可以在合成之后旋轉(zhuǎn)以供顯示。在實施方式中,線橫貫次級表面的整個(寬度)(但這不是必需的)。由此,在實施方式中,從最上面的線開始,垂直地處理這些線(既用于確定表示次級表面的數(shù)據(jù),又用于合成次級表面),并且每條水平線從左到右考慮。
在本文所描述的技術(shù)的這些實施方式中,在次級表面內(nèi)的輸入表面的布置以逐條線(一組線)為基礎(chǔ)加以確定。在實施方式中,這通過以下方式來實現(xiàn),既,將線(或線組)劃分成段(其例如沿平行于線的長度方向的方向限定),并且針對每個點或點組(一段),沿著該線(或線組)來確定輸入表面中的哪一個將用于形成次級表面。由此,在實施方式中,一線組所述一條或更多條線包括具有一個或更多個點的一個或更多個段。
由此,在實施方式中,生成次級表面的處理包括(和用于生成次級表面的處理電路被配置成):
針對橫貫所述次級表面的一個或更多個組一條或更多條線中的每一組,確定所述組的所述一條或更多條線包括具有一個或更多個點的一個或更多個段,該輸入表面要在沿著所述組的所述一條或更多條線的每一點處形成所述次級表面;并且該方法還包括以下步驟(并且該處理電路被配置成):
針對每一組一條或更多條線,向所述合成處理器提供(例如,數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包括)標(biāo)識要在所述組的所述一條或更多條線的每一段處形成所述次級表面的輸入表面的信息。
在其中以逐條線為基礎(chǔ)(即,針對每一條“線段”)確定用于形成次級表面的輸入表面的實施方式中,這些點可以表示任何類型的點,如所需和適合的。例如,這些點可以直接對應(yīng)于次級表面要(潛在地)顯示于其上的顯示器的像素,或者針對輸入表面存儲數(shù)據(jù)的點。然而,在實施方式中,這些點對應(yīng)于在合成次級表面時使用的采樣點,其接著可以針對最終顯示而加以縮放。
在這些實施方式中,每組線都可以簡單地由橫貫次級表面的單個線組成,其中用于在線的每個點處形成次級表面的輸入表面被單獨確定,并針對每條線而寫出至存儲介質(zhì)。然而,申請人已經(jīng)清楚,因為沿著某條線的輸入表面的相同布置通常將針對多條連續(xù)線重復(fù),所特別是在輸入表面為矩形時(如根據(jù)圖1中的輸入表面的布置將會看出)將這些線分組在一起是有益的。
因此,在實施方式中,每組線可以包含一條或更多條連續(xù)線(例如,沿與線的長度方向正交的方向),其具有用于在沿著線的每一段處形成次級表面的輸入表面的相同布置。對應(yīng)地,在實施方式中,存在至少一組線,其包含多條連續(xù)線,所述多條連續(xù)線具有與沿著線的每一段形成次級表面的輸入表面相同的布置。
由此,在實施方式中,該方法包括以下步驟(并且對應(yīng)地,處理電路被配置成):針對一條線,確定用于在該條線的每一段處形成次級表面的輸入表面的布置是否與前一條線相同。一旦確定了一條線與上一條線相同,就可以向合成處理器提供:標(biāo)識用于在該條線的每一段形成次級表面的所確定輸入表面的相同信息。
然而,申請人已經(jīng)清楚,所需信息可以在這樣的時候減少,即,在針對所重復(fù)的線,僅存儲一次標(biāo)識用于在所述多條線的每一段處形成次級表面的所確定輸入表面的信息,然后例如利用行程編碼(runlengthencoding)指定該組所重復(fù)的線中的線數(shù)的時候。由此,在實施方式中,該方法包括以下步驟(并且對應(yīng)地,處理電路被配置成):針對一組多條連續(xù)重復(fù)線,確定該組中有多少條線,并接著向合成處理器提供標(biāo)識該線數(shù)的信息,連同標(biāo)識用于在所述多條線的每一段處形成次級表面的所確定輸入表面的信息。
可以按任何合適和希望的方式來指定標(biāo)識被用于在一組線的每一段處形成次級表面的所確定輸入表面的信息。該信息可以在沿該線的每一個單獨點處指定,即,每一段可以簡單地由單個點(例如,采樣點)組成。
然而,按與線組相似的方式,其中,采取重復(fù)線組的優(yōu)勢,以便縮減信息的大小,申請人已經(jīng)清楚,由通常針對沿著一段的多個點(例如,采樣點)重復(fù)相同的輸入表面,即,一段將包括多個點(例如,采樣點),由于被用于形成次級表面的輸入表面的區(qū)域通常具有大于單個點的面積,因而,有益的是,針對整個一段(即,不是單獨針對每一點)來指定被用于形成次級表面的輸入表面。應(yīng)當(dāng)清楚,這可能導(dǎo)致為存儲數(shù)據(jù)結(jié)構(gòu)所需的存儲空間的量,以及為確定針對每一段的輸入表面所需的處理量(例如,與每一點相對)顯著縮減,由此,縮減了該處理的等待時間和功耗。
因此,在實施方式中,一段包括一個或更多個連續(xù)點(例如,采樣點或像素),對此,使用同一輸入表面沿著一條線形成次級表面,并且該方法包括以下步驟:(并且對應(yīng)地,處理電路被配置成),針對所述一條或更多條線的每一段,確定該段包括多少點。在實施方式中,一旦確定了這個信息,該方法還包括以下步驟(并且對應(yīng)地,處理電路被配置成):針對所述一條或更多條線中的每一段,向合成處理器提供如下信息,其標(biāo)識用于形成針對該段的次級表面的所確定的輸入表面和該段的長度,例如,點數(shù)(例如,采樣點或像素)。這可以利用行程編碼來進行,其編碼從給定輸入表面獲取每個段中的多少點。
可以按任何希望和合適的方式來存儲標(biāo)識要在次級表面的每個區(qū)域或者(線)的每一段處用于次級表面的所確定的輸入表面的數(shù)據(jù),包括如上所述利用行程編碼。在一個實施方式中,該信息包括標(biāo)識要針對相應(yīng)區(qū)域或段進行顯示的輸入表面的一個或更多個標(biāo)簽,例如,其接著可以用于查尋要針對各個輸入表面顯示的數(shù)據(jù)。然而,在實施方式中,該信息包括一個或更多個指針,即,其指向要針對相應(yīng)輸入表面顯示的數(shù)據(jù),并因此在由合成處理器讀取該信息時被跟隨。
在這些實施方式中,針對次級表面線中的這些段的數(shù)據(jù),無論作為標(biāo)簽還是指針,例如都可以在單個數(shù)據(jù)條目中被指示,例如,以每條線為基礎(chǔ)。然而,在實施方式中,數(shù)據(jù)被組織成,使得標(biāo)識用于在一組一條或更多條線的每一段處形成次級表面的輸入表面的信息包括第一數(shù)據(jù)條目,第一數(shù)據(jù)條目包括針對該組一條或更多條線的指針(或其它標(biāo)識符),該指針(或其它標(biāo)識符)指向針對該組一條或更多條線的一組第二數(shù)據(jù)條目,在每個第二數(shù)據(jù)條目內(nèi),接著包括標(biāo)識要在該組線的相應(yīng)段處用于次級表面的輸入表面的信息。
由此,在實施方式中,存在一組第一數(shù)據(jù)條目(“頭部”),該一組第一數(shù)據(jù)條目(“頭部”)針對次級表面中的該組線例如包含指針,其為整個次級表面提供總體數(shù)據(jù)結(jié)構(gòu),并且為每組線提供第一數(shù)據(jù)條目。例如,來自第一數(shù)據(jù)條目、接著指向各組第二數(shù)據(jù)條目的所述指針(針對每組線一個)接著詳細說明每組線如何布置,即,該輸入表面要針對該組線中的線的哪個段來顯示。
因此,每組第二數(shù)據(jù)條目提供用于各組線的數(shù)據(jù)結(jié)構(gòu),并且詳細說明每組線如何被布置成段。針對沿著(一組)線的每一段提供第二數(shù)據(jù)條目,并標(biāo)識要針對該段顯示的輸入表面。
如前所述,在實施方式中,將這些線分組在一起,例如,針對重復(fù)的線。由此,類似的是,針對給定的一組線的該組第二數(shù)據(jù)條目可以針對該組線中的每條線分別寫出,但是,在實施方式中,該組第二數(shù)據(jù)條目僅針對一組線被寫出一次。針對給定組中的所述多條線中的每條線可以存在分離的第一數(shù)據(jù)條目(例如包括針對用于所述組的該組第二數(shù)據(jù)條目的指針),但是,在實施方式中,針對一組線中的第一條線寫入單個指針(針對該組第二數(shù)據(jù)條目的第一數(shù)據(jù)條目),連同表示該組中的線數(shù)的信息,即,重復(fù)該線的次數(shù),并由此跟隨初始指針多少次來提供必需的重復(fù)。因此,在實施方式中,該組第一數(shù)據(jù)條目包括:針對每組線的指針(針對一組第二數(shù)據(jù)條目),和表示每個組中的線數(shù)的信息。
而且,類似的是,第二數(shù)據(jù)條目可以包括針對一段中的每個點的標(biāo)簽和指針,例如。標(biāo)識針對為次級表面顯示哪個輸入表面的數(shù)據(jù)。然而,如前討論的,在實施方式中,第二數(shù)據(jù)條目包括:標(biāo)識用于形成針對該組線的所述段的次級表面的輸入表面的信息,和表示該段的長度的信息。因此,在實施方式中,每組第二數(shù)據(jù)條目包括:標(biāo)識用于形成針對該組線的每一段的次級表面的輸入表面的信息,和表示每一段的長度的信息。
在實施方式中,隨著新線段的到達而生成標(biāo)識針對特定線段的所確定的輸入表面的信息(例如存儲在第二數(shù)據(jù)條目中)。這縮減了系統(tǒng)中存儲的持久性數(shù)據(jù)的量,由此,縮減了所需寄存器的數(shù)量。
在實施方式中,一個(和每個)第二數(shù)據(jù)條目包括指向(存儲的)數(shù)據(jù)的指針,該指針指示要用于針對所討論的次級表面的區(qū)域形成次級表面的輸入表面被存儲在哪里。由此,在實施方式中,第二數(shù)據(jù)條目指向一組第三數(shù)據(jù)條目,其中,每個第三數(shù)據(jù)條目指示針對相應(yīng)輸入表面的數(shù)據(jù)存儲在哪里。在實施方式中,這些第三數(shù)據(jù)條目具有上述形式,即,包括以下中的一個或更多個:針對所討論的輸入表面的數(shù)據(jù)存儲在存儲器中哪里的指針,和存儲器中的輸入表面的大小的指示。
如針對上述實施方式闡述的,在實施方式中,次級表面因此將由一組第一數(shù)據(jù)條目和對應(yīng)組的第二數(shù)據(jù)條目和第三數(shù)據(jù)條目來限定,其中第二數(shù)據(jù)條目和第三數(shù)據(jù)條目被方便地作為數(shù)據(jù)結(jié)構(gòu)在存儲介質(zhì)中而提供。在一些實施方式中,數(shù)據(jù)結(jié)構(gòu)還可以包括進一步的信息,例如,以下中的一個或更多個:輸入幀緩沖區(qū)格式信息、旋轉(zhuǎn)信息、縮放信息等。
雖然在一些實施方式中,次級表面完全填充有輸入表面,并由此對其后面的一切是不透明或半透明的,即,次級表面的每一條線都完全填充有所顯示的輸入表面的段,但在其它實施方式中,次級表面包括未被任何輸入表面覆蓋的區(qū)域。因此,例如,每組線都可以包括未限定針對其的輸入表面(被用于形成次級表面)的多個部分,即,多段。
在實施方式中,當(dāng)一組線包括未呈現(xiàn)針對其的輸入表面的一部分時,那么同樣針對該線的那一部分(或多個部分)限定一線段。由此,在實施方式中,標(biāo)識用于形成次級表面的輸入表面的數(shù)據(jù)還指示:次級表面的、實際上未呈現(xiàn)輸入表面的任何區(qū)域(例如,所述段)。這樣的區(qū)域例如可以適當(dāng)?shù)丶右詷?biāo)記,例如,通過指示其的數(shù)據(jù),如空代碼。
次級表面的、未被輸入表面覆蓋的區(qū)域可以按任何希望和合適的方式進行處理。例如,這樣的區(qū)域可以被限定為具有默認顏色(具有恰當(dāng)?shù)摩林?或被限定為透明的。由此,當(dāng)通過控制器讀取標(biāo)識用于形成次級表面的輸入表面的數(shù)據(jù),并且遇到?jīng)]有輸入表面的區(qū)域(例如,通過使用空代碼標(biāo)識的)時,合成處理/處理器能夠恰當(dāng)?shù)靥幚砟切┒?,例如,通過利用針對該區(qū)域的默認顏色或者簡單地將其處理為透明的。
次級表面可以是不透明的,或者次級表面作為整體可以具有半透明性。在后一種情況下,一旦針對次級表面的所有輸入表面已被確定,就可以確定次級表面的半透明度。次級表面的半透明度可以針對整個表面來限定(這可以被定義為使得α值橫跨該表面變化的函數(shù)),或者可以針對每個區(qū)域、線組、段和/或橫跨次級表面的點來單獨定義α值。
次級表面可以覆蓋整個輸出表面,例如,填充包含顯示幀的整個畫面。然而,在一個實施方式中,次級表面不覆蓋整個輸出表面(例如,顯示幀),而僅覆蓋其一部分。在這種情況下,在實施方式中,輸出表面的、被次級表面覆蓋(需要加以考慮的)的區(qū)域也被指示給合成處理器。在實施方式中,包含次級表面的邊界框被限定并提供給合成處理器(例如,合成處理器然后僅在由該邊界框指示的區(qū)域內(nèi)合成次級表面)。
可以通過整個數(shù)據(jù)處理系統(tǒng)的任何合適和希望的處理器或處理部件(如cpu或gpu)來生成次級表面,即,確定哪些輸入表面用于形成次級表面,/或哪些輸入表面形成次級表面的不同區(qū)域(輸入表面要如何布置在次級表面內(nèi))的步驟。
在實施方式中,次級表面確定和“構(gòu)造”,以及向合成處理器提供數(shù)據(jù),由用于合成處理器的驅(qū)動器(driver)(例如、合成引擎和/或合成顯示控制器)來執(zhí)行,其要合成輸入表面以生成合成輸出表面。該驅(qū)動器例如可以在整個數(shù)據(jù)處理系統(tǒng)的主機處理器上運行,并且響應(yīng)于來自應(yīng)用的命令,例如,合成多個輸入表面,接著在向合成處理器發(fā)出命令和數(shù)據(jù)以生成合成輸出表面之前,按上述方式評估輸入表面并制備次級表面。
在實施方式中,像將表示該次級表面或多個次級表面的數(shù)據(jù)提供給合成處理器一樣,針對不是次級表面的一部分的任何剩余輸入表面,也向合成處理器提供對應(yīng)數(shù)據(jù)。
一旦要組合成一個次級表面(或多個表面)的輸入表面已被確定,并且與該次級表面或多個次級表面(以及任何剩余輸入表面)有關(guān)的數(shù)據(jù)已經(jīng)被提供給合成處理器,合成處理器接著就可以執(zhí)行其合成操作,以合成該次級表面或多個次級表面與任何剩余輸入表面中的一個或更多個,以形成希望的輸出表面。
在這方面,合成處理器可以包括可以合成多個輸入表面以形成輸出表面的任何合適的處理器。
由此,其例如可以并且在一個實施方式中包括合成引擎,該合成引擎可以合成輸入表面以形成合成輸出表面(并接著將該合成輸出表面例如存儲在幀緩沖區(qū)中,以供使用)。在這種情況下,接著,分離的顯示控制器例如可以從幀緩沖區(qū)讀取并顯示合成輸出表面。
合成處理器同樣可以采用合成顯示控制器的形式,其可操作以合成和顯示輸出表面(幀)。在這種情況下,合成顯示控制部將從輸入表面讀取相關(guān)數(shù)據(jù),合成那些表面,然后將其提供給顯示器以供顯示,而不必例如將合成輸出表面寫出至分離的幀緩沖區(qū)。
合成處理器也可以采用合成顯示控制器的形式,其可操作以合成和顯示輸出幀,而且若希望的話,同樣也將這樣的輸出幀寫入至幀緩沖區(qū)以供其它使用。
而且,合成處理器可以采用以下形式:視頻引擎、攝像機圖像信號處理器、圖像信號處理器、gpu或其它處理器,其可操作以合成表面來提供合成輸出幀。
可以按任何希望和合適的方式來執(zhí)行次級表面和任何剩余輸入表面的合成。例如,可以通過混合或以其它方式組合次級和輸入表面,而由次級表面和輸入表面生成合成輸出表面。若希望的話,該處理還可以涉及將變換(歪斜、旋轉(zhuǎn)、縮放等)應(yīng)用至次級和輸入表面或多個表面。
合成處理器可以在其執(zhí)行合成操作時,按任何合適和希望的方式使用提供給其的、指示對次級表面有貢獻的輸入表面的信息。
在實施方式中,合成處理器使用該信息來確定提取什么表面數(shù)據(jù)用于次級表面,并且具體來說,針對次級表面內(nèi)的任何給定位置(例如,針對次級表面的該區(qū)域內(nèi)的每個位置(例如,采樣點或像素))確定使用(并且提取)哪個輸入表面數(shù)據(jù)。在實施方式中,合成處理器接著將該輸入表面數(shù)據(jù)用于次級表面,其中輸入表面數(shù)據(jù)用于對應(yīng)數(shù)據(jù)位置,或者來自任何其它次級或輸入表面的、次級表面要與其合成(并且例如,交疊)的位置,以生成針對所討論數(shù)據(jù)位置的合成輸出表面。
由此,在實施方式中,本文所描述的技術(shù)還包括(并且所述裝置還包括合成處理器,其被配置成),至少利用次級表面來合成輸出表面,其中,至少利用所述次級表面合成所述輸出表面的步驟包括以下步驟:從由指示對所述次級表面有貢獻的所述輸入表面的數(shù)據(jù)所指示的所述輸入表面,來提取要用于形成所述次級表面的數(shù)據(jù)。
由此,在實施方式中,合成處理器使用標(biāo)識要對次級表面有貢獻的輸入表面的信息,來確定要在(例如,每個)要被合成到輸出表面中的次級表面位置處使用的輸入表面(并且用于提取針對所確定輸入表面的數(shù)據(jù))。
要做到這一點,在實施方式中,合成處理/處理器讀取標(biāo)識要形成次級表面的輸入表面的信息,接著使用該數(shù)據(jù)來從所標(biāo)識輸入表面提取要用于形成次級表面的每個區(qū)域的數(shù)據(jù),以利用次級表面來合成輸出表面。
由此,在實施方式中,該合成處理包括以下步驟(并且該合成處理器被配置成):針對所述次級表面的兩個或更多個區(qū)域中的每一個區(qū)域,進行如下操作:
讀取標(biāo)識要形成所述次級表面的所述區(qū)域的所述輸入表面的所存儲數(shù)據(jù);并且
從要用于形成所述次級表面的所述區(qū)域的標(biāo)識的所述輸入表面來提取數(shù)據(jù)。
由此,本文所描述的技術(shù)的另一實施方式包括一種從多個輸入表面來合成輸出表面的方法,該方法包括以下步驟:
至少利用次級表面來合成所述輸出表面,所述次級表面由要被合成以形成所述輸出表面的兩個或更多個輸入表面的相應(yīng)至少一部分或多個部分形成;其中,合成所述輸出表面的步驟包括以下步驟:針對所述次級表面的兩個或更多個區(qū)域中的每一個區(qū)域,進行如下操作:
讀取標(biāo)識要形成所述次級表面的所述區(qū)域的所述輸入表面的數(shù)據(jù);
從要用于形成所述次級表面的所述區(qū)域的標(biāo)識的所述輸入表面來提取數(shù)據(jù);以及
利用所提取的輸入表面數(shù)據(jù)來合成所述輸出表面。
本文所描述的技術(shù)的另一實施方式包括一種用于從多個輸入表面來合成輸出表面的合成處理器,所述合成處理器包括處理電路,該處理電路被配置成進行如下操作:
至少利用次級表面合成輸出表面,所述次級表面由要被合成以形成所述輸出表面的兩個或更多個輸入表面的相應(yīng)至少一部分或多個部分來形成;其中,為了合成所述輸出表面,所述合成處理器被配置成,針對所述次級表面的兩個或更多個區(qū)域中的每一個區(qū)域,進行如下操作:
讀取要形成所述次級表面的所述區(qū)域的所述輸入表面的數(shù)據(jù);
從要用于形成所述次級表面的所述區(qū)域的標(biāo)識的所述輸入表面來提取數(shù)據(jù);以及
利用所提取的輸入表面數(shù)據(jù)來合成所述輸出表面。
標(biāo)識要形成次級表面的一區(qū)域的輸入表面的信息可以用于按任何合適和希望的方式從所標(biāo)識輸入表面提取數(shù)據(jù)。這例如取決于所提供的、標(biāo)識要形成次級表面的輸入表面數(shù)據(jù)的性質(zhì)。
例如,在該數(shù)據(jù)簡單地指示輸入表面存儲在存儲器中哪里的情況下,接著可以提取相關(guān)輸入表面數(shù)據(jù)。在這種情況下,合成處理/處理器接著還可以操作以確定針對次級表面的每個區(qū)域要使用哪個輸入表面。在實施方式中,如上所述,在這種情況下,所確定的輸入表面被排序(分類),例如根據(jù)每個輸入表面的最左邊緣的水平坐標(biāo),并接著依次由合成處理/處理器加以考慮。
另選的是,在指示要形成次級表面的輸入表面的數(shù)據(jù)是更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(例如,包括如上所述第一數(shù)據(jù)條目、第二數(shù)據(jù)條目以及第三數(shù)據(jù)條目)的情況下,接著,在實施方式中,依次讀取相關(guān)數(shù)據(jù)條目,跟著允許提取針對該輸入表面的數(shù)據(jù)。
由此,在一個實施方式中,該方法還包括以下步驟(并且該合成處理器被配置成):
針對所述次級表面的每組一條或更多條線進行如下操作:
讀取標(biāo)識要在沿著所述組的所述一條或更多條線的每一段處形成所述次級表面的輸入表面的信息;并且
針對每一段,從要在所述段處用于形成所述次級表面的標(biāo)識的所述輸入表面來提取數(shù)據(jù)。
由此,在這種情況下,合成處理/處理器將沿著次級表面的線,確定哪些輸入表面將要用于形成次級表面,并且該信息接著用于提取針對相應(yīng)輸入表面的數(shù)據(jù)。
在這些實施方式中,標(biāo)識用于在每一段處形成次級表面的輸入表面的數(shù)據(jù)在實施方式中由合成處理器讀取到緩沖區(qū)中,其中,其可以用于合成次級表面。在一個實施方式中,該組第一數(shù)據(jù)條目,(即,關(guān)于次級表面中的線組如何布置的信息)被提取到緩沖區(qū)中,例如,“頭部”緩沖區(qū)。因此,該方法包括以下步驟(并且合成處理器被配置成):將一組第一數(shù)據(jù)條目讀取到緩沖區(qū)中。這使得能夠在本地引用該組第一數(shù)據(jù)條目,而不必在每次需要其時都從例如主存儲器提取該數(shù)據(jù)。
在實施方式中,接著讀取針對該組線的第一數(shù)據(jù)條目,并將所指示的該組第二數(shù)據(jù)條目(即,關(guān)于該線組中的段如何布置的信息)提取到緩沖區(qū)中,例如,“線段”緩沖區(qū)。因此,該方法還包括以下步驟(并且合成處理器還被配置成):讀取針對一組線的第一數(shù)據(jù)條目,并且將所指示的該組第二數(shù)據(jù)條目提取到緩沖區(qū)中,該組第二數(shù)據(jù)條目標(biāo)識用于在該組線的相應(yīng)段處形成次級表面的輸入表面。這意味著,針對給定的一組線的該組第二數(shù)據(jù)條目不需要分別針對該組線中的每一條線(在其中一組線包括多條重復(fù)線的實施方式中)從例如主存儲器中讀取,而是可以在本地從緩沖區(qū)讀取。
一旦已經(jīng)讀取了標(biāo)識用于在每一段處形成次級表面的輸入表面的信息,在實施方式中,就接著將其用于提取要針對所標(biāo)識輸入表面顯示的數(shù)據(jù)。
在實施方式中,該操作針對該組線中的每一段加以重復(fù),以便合成由該組線描述的次級表面的一部分。接著,該操作可以針對次級表面中的每組線加以重復(fù),以便合成次級表面。
在實施方式中,所提取的輸入表面數(shù)據(jù)被本地高速緩存至合成處理/處理器,以使在可能情況下,可以更快速重復(fù)使用其。
因此,針對給定的標(biāo)識輸入表面,在實施方式中,首先查詢高速緩存與其是否包含要用于所標(biāo)識輸入表面有關(guān)的數(shù)據(jù)。如果要用于所標(biāo)識輸入表面的數(shù)據(jù)存在于高速緩存(高速緩存“命中”)中,則其可以用于合成次級表面,如果不是,則該數(shù)據(jù)需要從例如主存儲器提取到高速緩存中。
當(dāng)需要要用于輸入表面(例如,用于特定次級表面段)的數(shù)據(jù)時,可以針對合成操作讀取針對整個輸入表面的數(shù)據(jù),并接著確定并選擇針對例如所需段(其通常小于整個輸入表面)的希望數(shù)據(jù)。然而,在實施方式中,僅將必需輸入表面數(shù)據(jù)從例如高速緩存讀入。
由此,在實施方式中,合成處理(并且對應(yīng)地,合成處理器被配置成)包括以下步驟:針對每一段,確定所述段的位置和長度,并且僅提取要針對所確定的輸入表面顯示的數(shù)據(jù),確定輸入表面要用于針對該段的長度來形成次級表面。(然而,當(dāng)輸入表面被提取到高速緩存中(若使用的話)時,在實施方式中,整個輸入表面被提取,因為很可能的是,輸入表面的、除了最初所需的特定段以外的不同部分將需要用于次級表面的不同部分。)
接著,用于次級表面(或次級表面部分)的所提取輸入表面數(shù)據(jù)例如可以被合成為輸出表面的一部分,并且寫入至存儲介質(zhì)(例如,幀緩沖區(qū))以供后續(xù)使用(例如,顯示),和/或直接提供給顯示器以供顯示等。
輸入表面數(shù)據(jù)、次級表面數(shù)據(jù)以及輸出表面數(shù)據(jù)中的一個或更多個可以按壓縮形式存儲和/或使用。被處理的數(shù)據(jù)最初例如可以按壓縮形式存儲,但是按未壓縮形式處理,在這種情況下,在實施方式中,所述裝置包括解壓縮器。所處理的數(shù)據(jù)隨后被壓縮,在這種情況下,在實施方式中,所述裝置包括壓縮器。具體來說,當(dāng)合成次級表面,和/或要用于形成輸出和/或輸出表面的任何剩余輸入表面被寫出至例如幀緩沖區(qū)時,它們可能在這個階段被壓縮。
由此,在實施方式中,如合適和所希望的,要用于次級表面的所提取輸入表面數(shù)據(jù)與其它次級表面和/或剩余輸入表面組合,以形成輸出表面,即,在實施方式中,該方法包括以下步驟(并且合成處理器被配置成):將次級表面與一個或更多個其它次級表面,和/或與任何剩余輸入表面中的一個或多個一起組合成輸出表面。然后,該輸出表面可以作為幀本身或者作為幀的一部分,準(zhǔn)備顯示,如上所述。
對應(yīng)地,在實施方式中,該方法包括以下步驟(并且對應(yīng)于,合成處理器被配置成):寫出輸出表面以供顯示。這可以是去往用于顯示的幀緩沖區(qū)、去往系統(tǒng)的另一部分(例如,以供進一步處理),或者去往系統(tǒng)外部的裝置。
在實施方式中,接著,針對要合成的下一個輸出表面(例如,下一個顯示幀)重復(fù)該操作,等等。
本文所描述的技術(shù)可以在任何合適的數(shù)據(jù)和/或媒體處理系統(tǒng)中實現(xiàn),如基于適當(dāng)配置的微處理器的系統(tǒng)。在一些實施方式中,本文所描述的技術(shù)在基于計算機和/或微處理器的系統(tǒng)中實現(xiàn)。
實現(xiàn)本文所描述的技術(shù)的數(shù)據(jù)處理系統(tǒng)可以包含任何希望和恰當(dāng)以及合適的部件和組件。由此,其可以包括以下各項中的一個或更多個:cpu、gpu、合成處理器(例如,合成顯示控制器,或者合成引擎和顯示控制器)、顯示器、以及用于存儲所需的各種表面(幀)和其它數(shù)據(jù)(例如,與哪些輸入表面要用于形成次級表面有關(guān)的信息)的恰當(dāng)存儲介質(zhì)(存儲器)。另外,或另選的是,對于gpu來說,該數(shù)據(jù)處理系統(tǒng)可以包括:視頻引擎、攝像機圖像信號處理器和/或圖像信號處理器。
在本文所描述的技術(shù)的實施方式中,合成處理/處理器可以按本文所描述的技術(shù)的方式來支持使用僅單個次級表面,或者多個(例如,兩個)這種次級表面。在實施方式中,其還支持使用至少一個(例如,多個)單個輸入表面與次級表面或多個次級表面組合。
與合成處理/處理器可以按單個操作合成(即使按本文所描述的技術(shù)的方式使用次級表面或多個次級表面)相比,在輸出表面要針對更多輸入表面加以合成的情況下,那么在實施方式中,一些或全部“過量”輸入表面的合成被卸載至另一處理器(如系統(tǒng)的gpu或cpu)并且在其上執(zhí)行。
用于合成輸出表面的合成處理器和/或裝置可以,并且在實施方式中還包括:和/或與之通信的存儲本文所述數(shù)據(jù)和/或存儲用于執(zhí)行本文所述處理的軟件的一個或更多個存儲器和/或存儲器裝置。該合成處理器和/或裝置可以與主機微處理器和/或與用于基于所生成數(shù)據(jù)來顯示圖像的顯示器通信。
本文所描述的技術(shù)的各種功能可以按任何希望和合適方式來執(zhí)行。例如,本文所描述的技術(shù)的功能可以如所希望地按硬件或軟件來實現(xiàn)。由此,例如,本文所描述的技術(shù)的各種功能性部件和“裝置”可以包括合適的處理器或多個處理器、控制器或多個控制器、功能性單元、電路、處理邏輯、微處理器布置等,其可操作以執(zhí)行各種功能等,如可以被編程成按希望方式操作的適當(dāng)專用的硬件部件(處理電路)和/或可編程硬件部件(處理電路)。類似的是,要顯示這些表面的顯示器可以是任何合適的這種顯示器,如電子裝置的顯示屏,計算機的監(jiān)視器等。
在此,還應(yīng)注意到,如本領(lǐng)域技術(shù)人員應(yīng)當(dāng)清楚,本文所描述的技術(shù)的各種功能等可以在給定處理器上復(fù)制和/或并行執(zhí)行。等同地,若希望的話,各種處理級可以共用處理電路等。
本領(lǐng)域技術(shù)人員還應(yīng)清楚,本文所描述的技術(shù)的全部描述實施方式在合適時候,可以包括本文所述可選特征中的任一個或更多個或者全部。
根據(jù)本文所描述的技術(shù)的方法可以至少部分地利用軟件(例如,計算機程序)來實現(xiàn)。由此,可以看到,當(dāng)從另一些實施方式觀看時,本文所描述的技術(shù)包括:計算機軟件,當(dāng)安裝在數(shù)據(jù)處理器上時該計算機軟件具體適于執(zhí)行本文所述方法;計算機程序部件,該計算機程序部件包括計算機軟件代碼部分,當(dāng)在數(shù)據(jù)處理器上運行該程序部件時該計算機軟件代碼部分用于執(zhí)行本文所述方法;以及計算機程序,該計算機程序包括如下代碼,當(dāng)在數(shù)據(jù)處理系統(tǒng)上運行該程序時,該代碼適于執(zhí)行本文所述方法或多個方法的全部步驟。所述數(shù)據(jù)處理系統(tǒng)可以是微處理器、可編程fpga(現(xiàn)場可編程門陣列)等。
本文所描述的技術(shù)還擴展至包括這樣的軟件的計算機軟件載體,即,當(dāng)該軟件用于操作圖形處理器、渲染器、合成顯示控制器、或包括數(shù)據(jù)處理器的其它系統(tǒng)時,使與所述數(shù)據(jù)處理器、所述處理器、渲染器、控制器或系統(tǒng)結(jié)合地執(zhí)行本文所描述的技術(shù)的方法的步驟。這種計算機軟件載體可以是物理存儲介質(zhì),如rom芯片、cdrom、ram、閃速存儲器或磁盤。
還應(yīng)清楚,并不是本文所描述的技術(shù)的方法的所有步驟都需要通過計算機軟件來執(zhí)行,并由此,根據(jù)另一寬泛的實施方式,本文所描述的技術(shù)包括用于執(zhí)行本文所述方法的步驟中的至少一個步驟的計算機軟件和安裝在計算機軟件載體上的這種軟件。
本文所描述的技術(shù)可以適當(dāng)?shù)鼐唧w實施為,供與計算機系統(tǒng)一起使用的計算機程序產(chǎn)品。這種實現(xiàn)可以包括:在諸如計算機可讀介質(zhì)(例如,軟盤、cdrom、rom、ram、閃速存儲器或硬盤)這樣的有形非暫時介質(zhì)上固定的一系列計算機可讀指令。該系列計算機可讀指令具體實施本文所述全部或部分功能。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)清楚,這種計算機可讀指令可以采用許多編程語言來編寫,以供隨許多計算機架構(gòu)或操作系統(tǒng)一起使用。而且,這種指令可以利用當(dāng)前或?qū)淼娜魏未鎯ζ骷夹g(shù)來存儲,包括但不限于半導(dǎo)體、磁性或光學(xué),或者利用當(dāng)前或?qū)淼娜魏瓮ㄐ偶夹g(shù)來傳送,包括但不限于光學(xué)、紅外線或微波。可以設(shè)想的是,這種計算機程序產(chǎn)品可以部署為具有附隨打印或電子文檔(例如,收縮包裝軟件)的可去除介質(zhì),利用計算機系統(tǒng)預(yù)先加載(例如,預(yù)先加載在系統(tǒng)rom或固定盤上),或者通過網(wǎng)絡(luò)(例如,因特網(wǎng)或萬維網(wǎng))從服務(wù)器或電子公告板部署。
如圖1所示,合成輸出表面(例如,顯示幀)10的典型示例包括四個分離的輸入表面1、2、3、4,其中每個輸入表面都包含要顯示的矩形。表面4不交疊任何其它表面,但表面1、2以及3皆彼此交疊并且α-混合,即,表面1和3是半透明的,并且表面1位于表面3的前方,表面3在畫面空間中又位于表面2的前方。
圖2示意性地示出了可以執(zhí)行本文所描述的技術(shù)的基本操作的示例性數(shù)據(jù)處理系統(tǒng)21。
如圖2所示,數(shù)據(jù)處理系統(tǒng)21包括芯片上系統(tǒng)(soc)22,其包括:cpu23、gpu24以及顯示控制器25,這些經(jīng)由互連部27通信,并且可以經(jīng)由存儲器控制器26使用芯片-外存儲器28。在這個實施方式中,顯示控制器25是本身有能力并且操作以從多個輸入表面合成顯示幀的合成顯示控制器。顯示控制器25具有用于與顯示器19進行數(shù)據(jù)通信的顯示接口29。用于顯示控制器25的驅(qū)動器140在cpu23上運行。
若希望的話,該系統(tǒng)還可以或者代替(例如,代替gpu24)地包括:視頻引擎(處理器)、攝像機圖像信號處理器、和/或圖像信號處理器。
根據(jù)本實施方式,要合成到輸出表面中的輸入表面根據(jù)需要生成,例如通過由gpu24適當(dāng)?shù)劁秩?。接著,將所生成的輸入表面寫入至芯片外存儲?8。
為了縮減數(shù)據(jù)處理系統(tǒng)對硬件資源的需求,在本實施方式中,用于顯示控制器25的驅(qū)動器140將多個輸入表面組合成中間次級表面。該次級表面接著可以在合成輸出表面(例如,與其它次級表面和任何剩余輸入表面,如適于合成輸出表面的)時使用。
要做到這一點,如下所述,驅(qū)動器140首先選擇要哪些輸入表面用于形成次級表面。根據(jù)這樣選擇的輸入表面,驅(qū)動器140接著確定如何將這些輸入表面布置成形成次級表面。接著,按恰當(dāng)?shù)姆绞缴芍甘据斎氡砻娴牟贾玫男畔?,例如,通過使用寫出至一個或更多個緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)。然后可以使用該次級表面連同如必需的其它表面,來合成輸出表面。
圖3示意性地示出了可以根據(jù)本文所描述的技術(shù)的所描述的實施方式來操作的示例性合成顯示控制器25。
如圖3所示,合成顯示控制器25包括總線接口30,經(jīng)由該總線接口30可以讀取由gpu24生成的輸入表面,如下所述??偩€接口30與多個(這里是三個)硬件模塊31、32、33進行數(shù)據(jù)通信,其中的兩個模塊(硬件模塊32和33)可操作以(至少部分地)從多個輸入表面來生成次級表面,以供在最終輸出幀中合成。另一硬件模塊31被配置成,處理用于與另外兩個次級表面合成到最終顯示幀中的輸入表面。
硬件模塊31、32、33中的每一個都包括一些控制邏輯34、35、36以及輸入fifo緩沖區(qū)37、38、39,并將其輸出發(fā)送至合成塊40,合成塊40將來自硬件模塊31中的一個的輸入表面和來自其它硬件模塊32、33的次級表面組合成輸出顯示幀。來自合成塊40的輸出顯示幀,連同來自顯示定時模塊41的顯示定時信息一起,被發(fā)送至顯示接口29。
對于如圖1所示的顯示幀10來說,例如,次級表面(例如根據(jù)輸入表面1和4形成的)將需要與其它輸入表面2、3進行α混合,以形成最終顯示幀。由此,次級表面可以保持在合成顯示控制器25的一個硬件模塊32中,并且每個輸入表面被保持在其它硬件模塊31、33中,從那里,通過合成塊40將它們組合起來,并輸出至顯示接口29。
圖4示意性地示出了可以根據(jù)本文所描述的技術(shù)的所描述實施方式來操作的合成顯示控制器25的示例性硬件模塊32或33。
如圖4所示,硬件模塊32包括內(nèi)部總線接口42,其與顯示控制器的總線接口30(如圖3所示)進行通信,以讀入由gpu24生成的、與輸入表面有關(guān)并且用于輸入表面的數(shù)據(jù)。內(nèi)部總線接口42與判優(yōu)器(arbiter)43進行數(shù)據(jù)通信,判優(yōu)器43(如將在下面更詳細地描述的)確定該輸入表面要任何在次級表面中使用。
判優(yōu)器43使用如將描述的、根據(jù)本文所描述的技術(shù)的實施方式生成的信息,其被存儲在頭部緩沖區(qū)44、線段緩沖區(qū)46以及表面高速緩存45中,以根據(jù)該輸入表面形成次級表面。還如圖3所示,硬件模塊32還包括輸入fifo38,fifo38接收由判優(yōu)器43集合的像素數(shù)據(jù),以輸出至顯示控制器25的合成塊40(如圖3所示)。硬件模塊32還包括形成硬件模塊32的控制邏輯35的狀態(tài)機48。
下面,將參照圖5、6以及7所示的數(shù)據(jù)結(jié)構(gòu),對頭部緩沖區(qū)44、表面高速緩存45以及線段緩沖區(qū)46進行更詳細描述。
圖5示出了數(shù)據(jù)結(jié)構(gòu)49,其中,該數(shù)據(jù)結(jié)構(gòu)49由用于合成顯示控制器25的驅(qū)動器140生成,并且隨后被讀入合成顯示控制器25的硬件模塊32的頭部緩沖區(qū)44和線段緩沖區(qū)46中,以便詳細說明次級表面中的輸入表面的布局。數(shù)據(jù)結(jié)構(gòu)49包括由頭部指針51引用的“頭部”數(shù)據(jù)結(jié)構(gòu)50,并且包括包含針對“線”數(shù)據(jù)結(jié)構(gòu)53的指針52的多條線,以及重復(fù)計數(shù)器54,重復(fù)計數(shù)器54指定在次級表面中連續(xù)重復(fù)每條線多少次,即,每個指針52要被跟隨多少次。在圖6中更詳細地示出了“線”數(shù)據(jù)結(jié)構(gòu)53。
圖6示出了針對次級表面的一條線的數(shù)據(jù)結(jié)構(gòu)53。該線被分成多段,沿著其,將同一輸入表面用于形成次級表面,并且每一段在線數(shù)據(jù)結(jié)構(gòu)53中被分配一條目55。在需要時,將這些條目55被讀入硬件模塊32的線段緩沖區(qū)46中。在該實施方式中,每一段條目55是16位寬,并且針對被用于形成針對該線段的次級表面的輸入表面的id56分配位0-6,并且針對該線段的長度57分配位7-15,即,該線段中的像素數(shù)。輸入表面id56允許在需要時提取針對每條線段的輸入表面的細節(jié)。
圖7a中示出了針對輸入表面的示例數(shù)據(jù)結(jié)構(gòu)58。針對輸入表面的數(shù)據(jù)結(jié)構(gòu)58由皆為32位寬的三個數(shù)據(jù)字描述。用于該輸入表面的這些數(shù)據(jù)結(jié)構(gòu)58隨著需要它們和在需要它們時被提取到硬件模塊32的表面高速緩存45中。數(shù)據(jù)結(jié)構(gòu)58包括:針對用于輸入表面的實際數(shù)據(jù)的指針59(第一個字)、陣列的步幅60(第二個字)、以及輸入表面的水平和垂直大小61、62(第三個字)。若希望的話,輸入表面數(shù)據(jù)結(jié)構(gòu)58還可以包含其它信息,如幀緩沖區(qū)格式信息、旋轉(zhuǎn)信息和/或縮放信息等。
圖7b示出了用于多個輸入表面的示例數(shù)據(jù)結(jié)構(gòu)63。該數(shù)據(jù)結(jié)構(gòu)包括多個條目64,其中每一個條目都表示一輸入表面,并且具有與圖7a所示的單個數(shù)據(jù)結(jié)構(gòu)58相同的格式。由此,用于輸入表面的各個數(shù)據(jù)結(jié)構(gòu)以背對背方式存儲在存儲器中。針對一特定輸入表面的數(shù)據(jù)結(jié)構(gòu)的地址,即,其在整個數(shù)據(jù)結(jié)構(gòu)63中的行號,可以通過獲知所述多個輸入表面的數(shù)據(jù)結(jié)構(gòu)63的開始處的地址,以及總體數(shù)據(jù)結(jié)構(gòu)63內(nèi)的單個數(shù)據(jù)結(jié)構(gòu)的位置來容易地計算。該輸入表面例如可以根據(jù)其在次級表面中的深度而在總體數(shù)據(jù)結(jié)構(gòu)63中排序,盡管這不是必要的。
圖8示出了可以利用本文所描述的技術(shù)的一實施方式,從多個輸入表面來合成的次級表面65的示例。次級表面65包括三個輸入表面66、67、68,它們在形狀上都是矩形的并且不交疊。次級表面的其余部分不被任何輸入表面覆蓋,因此是空白的。通常來說,這意味著次級表面的這些部分對于背后的任何次級表面來說將是透明的,和/或被設(shè)置為成默認背景顏色。
圖9a示出了可以利用本文所描述的技術(shù)來合成的次級表面70的另一示例。次級表面70包括五個輸入表面71、72、73、74、75,其中四個數(shù)目表面71、72、73、74彼此具有一定程度的不透明交疊,并且一個輸入表面75與其它四個輸入表面71、72、73、74完全不交疊。
圖9b顯示了根據(jù)本文所描述的技術(shù)的實施方式,如何將次級表面70劃分成多條線76,為清楚起見,將其中之一77分離地示出。(而且為清楚起見,這些線皆具有幾個像素的厚度,而至少在本文所描述的技術(shù)的實施方式中,每條線可能僅有一個像素厚。)如分離線77所示,每條線76因此由輸入表面的段78、79組成,使得可以由各段78、79的長度和要在相應(yīng)段中顯示的輸入表面、以及空白的部分80(即,不被輸入表面覆蓋(并因此透明)來限定每個線76。
下面,參照圖1至11,對根據(jù)本文所描述的技術(shù)的實施方式的、圖2的數(shù)據(jù)處理系統(tǒng)21的操作進行描述。圖10a、圖10b以及圖10c示出了例示根據(jù)本文所描述的技術(shù)的實施方式的系統(tǒng)的操作的流程圖。
為了生成輸出幀(步驟201,圖10a),舉例來說,如圖1所示(顯示幀10a),首先,要形成顯示幀10的多個輸入表面1、2、3、4被數(shù)據(jù)處理系統(tǒng)21的gpu24渲染,并存儲在主存儲器28中的相應(yīng)幀緩沖區(qū)中。表面4不交疊任何其它表面,但表面1、2以及3皆彼此交疊并且α-混合,即,在畫面空間中位于表面2的前方的表面1和3是半透明的。輸入表面1、2、3、4的、由gpu24在渲染它們時生成的屬性(例如,它們的大小、位置、深度排序(在畫面空間中從前至后)以及半透明度(α值))也與輸入表面相關(guān)聯(lián)地存儲。
合成顯示控制器25的驅(qū)動器140(即,例如,在cpu23上執(zhí)行)使用輸入表面1、2、3、4的屬性信息,并創(chuàng)建輸入表面1、2、3、4的“層列表”(步驟202,圖10a)。從層列表中的第一輸入表面開始(步驟203,圖10a),針對該輸入表面的α值被用于確定該輸入表面何時完全透明,即,當(dāng)α等于0時(步驟204,圖10a)。例如,這是直接確定何時針對整個輸入表面來設(shè)置輸入表面的α值。在更復(fù)雜的情況下,例如,當(dāng)每像素存儲該α值時,若希望的話,(否則)可能跳過該步驟。當(dāng)該輸入表面完全透明時,將其從層列表中丟棄(步驟205,圖10a),否則將它保留在層列表中。
接著,驅(qū)動器140檢查是否考慮了層列表中的所有輸入表面(步驟206,圖10a),而如果不是這樣,則處理層列表中的下一個輸入表面(步驟207,圖10a),并且其α值用于確定該輸入表面何時完全透明(步驟203,圖10a)。處理繼續(xù),直到驅(qū)動器140考慮了層列表中的所有輸入表面為止。(從圖1可以看出,輸入表面1、2、3、4都不是完全透明的,所以在這個階段,將它們?nèi)勘A粼趯恿斜碇小?
在這個階段,驅(qū)動器140現(xiàn)在具有:不包括任何完全透明的輸入表面的更新層列表。從更新層列表中的第一輸入表面開始(步驟208,圖10a),該輸入表面的大小和位置,連同針對更新層列表中的其它輸入表面的大小、位置以及α值,被驅(qū)動器140用于確定第一輸入表面何時被完全不透明的輸入表面完全覆蓋(步驟209,圖10a)。當(dāng)該輸入表面被完全遮蓋時,將其從層列表中丟棄(步驟210,圖10a),否則將它保留在層列表中。
接著,驅(qū)動器140檢查是否考慮了層列表中的所有輸入表面(步驟211,圖10a),而如果不是這樣,則處理層列表中的下一個輸入表面(步驟212,圖10a),以確定其是否被其它不透明的輸入表面完全覆蓋(步驟209,圖10a)。處理繼續(xù),直到驅(qū)動器140考慮了更新層列表中的所有輸入表面為止。(從圖1可以看出,輸入表面1、2、3、4都沒有被完全遮蓋,所以在這個階段,將它們?nèi)勘A粼趯恿斜碇小?
在這個階段,驅(qū)動器140現(xiàn)在具有更新的層列表,該更新的層列表不包括任何完全透明的輸入表面,或被其它不透明輸入表面完全遮蓋的輸入表面。為了執(zhí)行下一步,首先將輸入表面根據(jù)它們在畫面空間中的深度加以重新排序,即,從最前面開始并且按深度增加(步驟213,圖10b)。接著,從更新并重新排序的層列表中的第一輸入表面開始(步驟214,圖10b),針對更新層列表中的該輸入表面的α值被驅(qū)動器140用于確定該輸入表面(即,最前面)何時是半透明的(步驟215,圖10b),即,具有在0與1之間但不包括0與1的α值。當(dāng)輸入表面是半透明時,利用最前面的輸入表面的大小和位置,連同更新層列表中的其它輸入表面的大小和位置,將更新層列表中的、其至少部分交疊的任何其它輸入表面從層列表中丟棄(步驟216,圖10b),否則將這些輸入層保留在層列表中。
接著,驅(qū)動器140檢查是否考慮了層列表中的所有輸入表面(步驟217,圖10b),而如果不是這樣,則處理層列表中的下一個輸入表面(按照重排序?qū)恿斜碇械纳疃?(步驟218,圖10b),以確定其是否是半透明的(步驟215,圖10b),并接著確定其是否與更新層列表中的任何其它輸入表面交疊(步驟216,圖10b)。處理繼續(xù),直到驅(qū)動器140考慮了更新層列表中的所有輸入表面為止。(從圖1可以看出,輸入表面1是半透明的,并且交疊輸入表面2和3并處于輸入表面2和3的前方。從層列表中移除表面2和3,因此更新層列表包含表面1和4。)
在這個階段,更新層列表現(xiàn)在包含輸入表面,即,輸入表面1和4,其可能適于組合成次級表面。
一旦確定了可能適于組合成次級表面的輸入表面的列表,(即,輸入表面1和4),正在cpu上執(zhí)行的、用于合成顯示控制器25的驅(qū)動器140就接著確定是否和如何將層列表中的輸入表面組合成次級表面。
下面,參照圖10c和圖11,對根據(jù)這些輸入表面來生成并合成次級表面進行描述。
為了生成要用作圖1所示的顯示幀10的一部分的次級表面,用于合成顯示控制器25的驅(qū)動器140確定更新層列表中的輸入表面1、4哪些對次級表面有貢獻和如何貢獻,即,確定輸入表面1、4在次級表面的平面中以及其內(nèi)的深度次序方面兩者相對于彼此的定位。這通過將次級表面分割成橫跨顯示幀10水平行進的分離線來完成。
對于次級表面的每一條線來說,從次級表面中的第一垂直線開始(步驟219,圖10c),用于合成顯示控制器25的驅(qū)動器140確定輸入表面1、4中的哪個要用于形成針對沿著該線的所有點的次級表面,以及是否存在沒有輸入表面要用于形成次級表面的任何點,例如,次級表面是空白且透明的。
從該線中的第一水平像素開始(步驟220,圖10c),在更新層列表中剩余的輸入層1、4中,針對該像素確定最前面的輸入表面(在畫面空間中)(步驟221,圖10c)。將針對該像素的輸入表面與針對先前像素的輸入表面進行比較,以查看其是否不同(步驟222,圖10c)。如果這些像素具有相同的輸入表面,則驅(qū)動器確定是否已經(jīng)達到水平線的末端(步驟224,圖10c)。如果沒有,則水平坐標(biāo)遞增(步驟225,圖10c),并且考慮下一像素關(guān)于其最前面的輸入表面(即,重復(fù)步驟221,圖10c)。
如果相鄰像素具有不同的輸入表面,即,已經(jīng)達到一段的結(jié)尾,則包含針對先前考慮段的條目55的數(shù)據(jù)條目53(指示該段的長度57和要針對該段顯示的輸入表面56,或者該段是空白的(例如,利用空代碼)),被驅(qū)動器寫出至適當(dāng)?shù)拇鎯Σ?步驟223,圖10c)。
參照圖1,可以看出,在第一條垂直線中,輸入表面1是針對整個水平線的最前面的輸入表面,并由此被用于形成次級表面。
一旦達到水平線的末端,驅(qū)動器就確定是否已經(jīng)達到垂直線的末端,即,考慮了所有的水平線(步驟226,圖10c)。如果沒有,則垂直坐標(biāo)遞增(步驟227,圖10c),并且考慮下一水平線(即,回到步驟220,圖10c)。
返回參照圖1,可以看出,針對第一組水平線,輸入表面1是最前面的輸入表面,并由此用于形成次級表面。一旦達到了輸入表面1的垂直范圍,就可以看出,針對下一組水平線,在針對次級表面的更新層列表中不存在輸入表面,即,對于被半透明輸入表面1交疊來說,將輸入表面2和3丟棄。最后,在顯示幀10的底部,輸入表面4是最前面的輸入表面,并由此用于形成次級表面。
一旦考慮了所有的垂直線,該數(shù)據(jù)結(jié)構(gòu)就完全了(步驟228,圖10c)。圖1中的次級表面由此根據(jù)輸入表面1和4(連同中部沒有使用輸入表面的區(qū)域)形成,并且寫出必要的信息,以形成該數(shù)據(jù)結(jié)構(gòu)。
由于被確定為形成次級表面的輸入表面1、4中的每一個都自始至終橫跨顯示幀10水平延伸,即,它們用于形成針對沿著橫跨次級表面的每條線的多個連續(xù)點的次級表面,每條線都由針對使用同一輸入表面1或4來形成次級表面的單個段形成。
用于合成顯示控制器25的驅(qū)動器140,根據(jù)表面屬性信息(即,由gpu24提供給驅(qū)動器140的、如圖1所示的輸入表面的大小、位置以及排序)來確定針對次級表面的每條線的段信息。接著,由驅(qū)動器140將針對每條線的段信息寫出至存儲器,從該存儲器中,其可以被合成顯示控制器25的硬件模塊32讀取并按圖6所示格式存儲在線段緩沖區(qū)46中,即,針對每條線,分離的數(shù)據(jù)條目53包含針對每一段的條目55,其指示該段的長度57以及要針對該段顯示的輸入表面56,或者該段是否是空白的(例如,使用空代碼)。
連同由驅(qū)動器寫出針對每條線的“線段”數(shù)據(jù)條目53,針對次級表面的“頭部”數(shù)據(jù)條目50(如圖5所示)也被寫出并存儲。為了確定要寫出至該數(shù)據(jù)條目50的信息,合成數(shù)據(jù)控制器25的驅(qū)動器必須確定一條線的布局是否與前一條線的布局相同,即,該段信息是否相同,如果是,則重復(fù)布局多少次。這導(dǎo)致針對次級表面的數(shù)據(jù)條目50能夠被作為一系列重復(fù)計數(shù)器54和線指針52而寫入至針對每條線的數(shù)據(jù)條目53,使得線指針52可以跟隨正確數(shù)量的重復(fù)次數(shù)。由此,在該分析之后,只有彼此不同的線段作為“線段”數(shù)據(jù)條目53的一部分被寫出。
在圖1所示的示例顯示幀10中,可以看出,針對多條水平線重復(fù)輸入表面1,接著,針對大量水平線重復(fù)沒有輸入表面的區(qū)域,然后針對較少數(shù)量的水平線重復(fù)輸入表面4。
一旦生成并存儲了針對次級表面的數(shù)據(jù)結(jié)構(gòu),即,針對輸入表面1和4的數(shù)據(jù)結(jié)構(gòu)58、63,針對次級表面的數(shù)據(jù)條目50以及針對每條線的數(shù)據(jù)條目53,就可以利用該次級表面合成輸出表面。下面,參照圖11,對其進行描述,該圖示出了例示根據(jù)本文所描述的技術(shù)的實施方式的顯示控制器的操作的流程圖。
首先,啟動繪制新的輸出表面(幀)(步驟101,圖11)。
為了在合成輸出表面時確定要用于次級表面的像素數(shù)據(jù),用于次級表面的“頭部”數(shù)據(jù)條目50被提取到頭部緩沖區(qū)44中(步驟102,圖11)。在“頭部”數(shù)據(jù)條目50中,跟隨針對第一條線(線0)的線指針52(步驟103,圖11),以檢索針對第一條線的數(shù)據(jù)條目53,包含針對要沿著該條線顯示的每一段55的條目55。該數(shù)據(jù)條目53被提取到線段緩沖區(qū)46中(步驟104,圖11)。
從第一條線(線0)的第一段(段0)開始,查詢表面高速緩存45有關(guān)指示要針對該段顯示的輸入表面存儲在哪里的數(shù)據(jù)(即,具有表面id56的輸入表面,該表面id56在數(shù)據(jù)條目55的位0至6中指定,該數(shù)據(jù)條目55針對用于第一條線的數(shù)據(jù)條目53的第一段)是否存在于高速緩存45中(步驟105,圖11)。如果指示輸入表面存儲在哪里的數(shù)據(jù)不存在(高速緩存未命中),則將指示存儲輸入表面數(shù)據(jù)的地方的所需數(shù)據(jù)提取到表面高速緩存45中(步驟106,圖11)。
當(dāng)指示要針對該段顯示的輸入表面存儲在哪里的所需數(shù)據(jù)被存儲在表面高速緩存45中時,計算要針對該段提取的輸入表面中的像素數(shù)據(jù)的地址和長度(步驟107,圖11),即,利用線位置、段位置以及段長度,并且從該地址提取像素數(shù)據(jù)(步驟108,圖11)。
另選的是,當(dāng)該段為空白的時,讀取空代碼,而不需要獲取要針對輸入表面顯示的數(shù)據(jù),即,合成顯示控制器25獲知將次級表面的該部分設(shè)置為透明或默認顏色。
一旦已經(jīng)提取了針對用于所討論次級表面的區(qū)域(段)的輸入表面的像素數(shù)據(jù),接著,可以將該數(shù)據(jù)讀入硬件模塊32、33的輸入fifo38、39,用于所討論的次級表面,并從那里提供給合成顯示控制器25的合成塊40,以與其它表面合成,如來自硬件模塊33的另次級表面和來自硬件模塊34的另一輸入表面,從而提供針對所討論的像素位置的總體合成輸出表面。如本領(lǐng)域所已知的,該合成處理可以包括混合或以其它方式組合次級表面和/或輸入表面。接著,將該合成輸出表面像素提供給顯示器以供顯示。
針對次級表面中的所有線的所有段重復(fù)該處理,直到合成了針對次級表面的所有像素數(shù)據(jù)為止。
詳細地說,這通過確定是否已經(jīng)處理了所討論的線中的所有段來完成(步驟109,圖11),而如果沒有,則處理下一段(步驟110,圖11),即,通過重復(fù)圖11的步驟105–108。
一旦已經(jīng)處理了該線中的所有段,就確定是否已經(jīng)處理了次級表面中的所有線(步驟111,圖11),而如果沒有,則確定該線是否是前一條線的重復(fù)(步驟112,圖11),即,來自頭部數(shù)據(jù)條目50中的重復(fù)計數(shù)器54。當(dāng)該線是重復(fù)的時,通過從該線中的第一段開始(步驟113,圖11),重復(fù)針對該線的步驟(步驟105–111,圖11)。應(yīng)當(dāng)注意,在重復(fù)該線時,所需輸入表面數(shù)據(jù)通常已經(jīng)存在于表面高速緩存45中,因此可能不需要步驟106。同樣地,所需線數(shù)據(jù)結(jié)構(gòu)53通常已經(jīng)存在于線段緩沖區(qū)46中,并由此可能不需要重新提取。
重復(fù)這些步驟達重復(fù)計數(shù)器54所指定的多少次,即,直到步驟112確定該線未被重復(fù)為止。針對新線(步驟114,圖11),需要將新的線數(shù)據(jù)結(jié)構(gòu)53提取到線段緩沖區(qū)46中(步驟104,圖11),并接著可以根據(jù)需要針對該新線中的段重復(fù)步驟105–110。此外,確定該線是否被重復(fù)(步驟112,圖11),直到確定已經(jīng)處理了次級表面中的所有線為止(步驟111,圖11)。在這點上,對次級表面的處理是完全的(步驟115,圖11)。
接著,通過顯示控制器25將該次級表面與其它輸入表面組合。在圖1所示的顯示幀10中,由輸入表面1和4形成的次級表面與輸入表面2和3進行α混合,即,該次級表面的頂部部分被輸入表面1覆蓋,并且交疊的輸入表面2和3本身彼此進行了α混合,以便形成顯示幀10,顯示幀10接著經(jīng)由顯示接口29發(fā)送至顯示器19。
然后,根據(jù)需要,針對下一個輸出幀重復(fù)整個處理。(所有緩沖區(qū)和高速緩存對于每一個幀來說都無效。)
下面,參考已經(jīng)被選擇成適于組合成圖9a所示的次級表面70的該組輸入表面71、72、73、74、75(即,根據(jù)參照圖10a和10b描述的處理),尤其是參照圖9a、9b、10c以及11,對生成次級表面的操作的另一示例進行描述。
為了生成圖9a所示的次級表面70,用于合成顯示控制器25的驅(qū)動器140確定輸入表面71、72、73、74、75哪些對次級表面70有貢獻和如何貢獻,即,確定輸入表面71、72、73、74、75在次級表面70的平面中以及其內(nèi)的深度次序方面兩者,相對于彼此的定位。這通過將次級表面70分成分離的線76來完成,如圖9b所示,并且將參照圖10c進行描述。
針對次級表面70的每一條線76,從次級表面70中的第一垂直線開始(步驟219,圖10c),用于合成顯示控制器25的驅(qū)動器確定輸入表面71、72、73、74、75中的哪個要用于形成針對沿著該線的所有點的次級表面,以及是否存在沒有輸入表面要用于形成次級表面的任何點,例如,次級表面是空白且透明的。
從該線中的第一水平像素開始(步驟220,圖10c),在更新層列表中剩余的輸入層71、72、73、74、75中,針對該像素確定最前面的輸入表面(在畫面空間中)(步驟221,圖10c)。將針對該像素的輸入表面與針對先前像素的輸入表面進行比較,以查看它們是否不同(步驟222,圖10c)。如果這些像素具有相同的輸入表面,則驅(qū)動器確定何時達到水平線的末端(步驟224,圖10c)。如果沒有,則水平坐標(biāo)遞增(步驟225,圖10c),并且關(guān)于下一像素最前面的輸入表面來考慮該下一像素(即,重復(fù)步驟221,圖10c)。
當(dāng)相鄰像素具有不同的輸入表面時(即,已經(jīng)達到一段的結(jié)尾),包含針對先前考慮段的條目55的數(shù)據(jù)條目53(指示該段的長度57和要針對該段顯示的輸入表面56,或者該段是空白的(例如,利用空代碼)),被驅(qū)動器寫出至確定存儲部(步驟223,圖10c)。
一旦達到水平線的末端,驅(qū)動器就確定何時達到垂直線的末端,即,考慮了所有的水平線(步驟226,圖10c)。如果沒有,則垂直坐標(biāo)遞增(步驟227,圖10c),并且考慮下一水平線(即,回到步驟220,圖10c)。一旦考慮了所有的垂直線,該數(shù)據(jù)結(jié)構(gòu)就完全了(步驟228,圖10c)。
通常來說,由于輸入表面71、72、73、74、75將用于形成針對沿著橫跨次級表面70的線76的多個連續(xù)點的次級表面,因而,該線76被分成段78、79(對于其來說,將同一輸入表面71、72、73、74、75用于形成次級表面),和空白的段80。以線77之一為例(參見圖9b),可以看出,可見次級表面70包括空白段80,跟著是其中一個輸入表面71用于形成次級表面的段78,之后是另一空白段80,接著是其中另一個輸入表面74用于形成次級表面的段79,并由空白段80完成。
用于合成顯示控制器25的驅(qū)動器,根據(jù)表面屬性信息(即,由gpu24提供給驅(qū)動器的、如圖7b所示的輸入表面的大小、位置以及排序)來確定針對次級表面70的每條線76的段信息。接著,由驅(qū)動器將針對每條線76的段信息寫出至存儲器,從該存儲器中,該段信息可以被合成顯示控制器25的硬件模塊32讀取并按圖6所示格式存儲在線段緩沖區(qū)46中,即,針對每條線,分離的數(shù)據(jù)條目53包含針對每一段的條目55,該條目55指示該段的長度57以及要針對該段顯示的輸入表面56,或者該段是否是空白的(例如,使用空代碼)。
連同由驅(qū)動器寫出的針對每條線76的“線段”數(shù)據(jù)條目53,針對次級表面70的“頭部”數(shù)據(jù)條目50(如圖5所示)也被寫出并存儲。為了確定要寫出至該數(shù)據(jù)條目50的信息,合成數(shù)據(jù)控制器25的驅(qū)動器必須確定一條線的布局是否與前一條線的布局相同,即,該段信息是否相同,如果是,則重復(fù)布局多少次。這導(dǎo)致針對次級表面70的數(shù)據(jù)條目50能夠被作為一系列重復(fù)計數(shù)器54和線指針52寫入至針對每條線76的數(shù)據(jù)條目53,使得線指針52可以被跟隨正確數(shù)量的重復(fù)次數(shù)。
在圖9a所示的示例次級表面70中,可以看出,第四和第五條線76,連同倒數(shù)兩條線被重復(fù)。然而,通常來說,次級表面(合成線是單個采樣點或像素寬,而非出于例示目的的圖9a所示的非常粗的線)可能有許多重復(fù)的線。
一旦生成并存儲了針對次級表面的數(shù)據(jù)結(jié)構(gòu),即,針對輸入表面71、72、73、74、75的數(shù)據(jù)結(jié)構(gòu)58、63,針對次級表面70的數(shù)據(jù)條目50以及針對每條線76的數(shù)據(jù)條目53,就可以利用該次級表面70來合成輸出表面。下面,這將參照圖11進行描述。
首先,啟動繪制新的輸出表面(幀)(步驟101,圖11)。
為了在合成輸出表面時確定要用于次級表面70的像素數(shù)據(jù),用于次級表面70的“頭部”數(shù)據(jù)條目50被提取到頭部緩沖區(qū)44中(步驟102,圖11)。在“頭部”數(shù)據(jù)條目50中,跟隨針對第一條線(線0)的線指針52(步驟103,圖11),以檢索針對第一條線的數(shù)據(jù)條目53,包含針對要沿著該條線76顯示的每一段55的條目55。該數(shù)據(jù)條目53被提取到線段緩沖區(qū)46中(步驟104,圖11)。
從第一條線(線0)的第一段(段0)開始,查詢表面高速緩存45有關(guān)指示要針對該段78顯示的輸入表面存儲在哪里的數(shù)據(jù)(即,具有表面id56的輸入表面,該表面id56在數(shù)據(jù)條目55的位0至6中被指定,該數(shù)據(jù)條目55針對用于第一條線的數(shù)據(jù)條目53的第一段)是否存在于高速緩存45中(步驟105,圖11)。如果指示輸入表面存儲在哪里的數(shù)據(jù)不存在(高速緩存未命中),則將指示存儲輸入表面數(shù)據(jù)的地方的所需數(shù)據(jù)提取到表面高速緩存45中(步驟106,圖11)。
如果指示要針對所述段78顯示的輸入表面存儲在哪里的所需數(shù)據(jù)被存儲在表面高速緩存45中,則計算要針對該段提取的輸入表面中的像素數(shù)據(jù)的地址和長度(步驟107,圖11),即,利用線位置,段位置以及段長度,并且從該地址提取像素數(shù)據(jù)(步驟108,圖11)。
另選的是,當(dāng)該段為空白的使,讀取空代碼,而不需要獲取要針對輸入表面顯示的數(shù)據(jù),即,合成顯示控制器25獲知將次級表面的該部分設(shè)置為透明或默認顏色。
一旦已經(jīng)提取了針對用于所討論的次級表面的區(qū)域(段)的輸入表面的像素數(shù)據(jù),接著,可以將該數(shù)據(jù)讀入硬件模塊32、33的輸入fifo38、39,用于所討論的次級表面,并從那里提供給合成顯示控制器25的合成塊40,以與其它表面合成,如來自硬件模塊33的另一次級表面和來自硬件模塊34的另一輸入表面,從而提供針對所討論的像素位置的總體合成輸出表面。如本領(lǐng)域所已知的,該合成處理可以包括混合或以其它方式組合次級表面和/或輸入表面。接著,將該合成輸出表面像素提供給顯示器以供顯示。
針對次級表面70中的所有線76的所有段78、79、80重復(fù)該處理,直到合成了針對次級表面的所有像素數(shù)據(jù)為止。
詳細地說,這通過確定是否已經(jīng)處理了所討論的線中的所有段78來完成(步驟109,圖11),而如果沒有,則處理下一段(步驟110,圖11),即,通過重復(fù)圖11的步驟105–108。
一旦已經(jīng)處理了該線中的所有段,就確定是否已經(jīng)處理了次級表面70中的所有線(步驟111,圖11),而如果沒有,則確定該線是否是前一條線的重復(fù)(步驟112,圖11),即,來自頭部數(shù)據(jù)條目50中的重復(fù)計數(shù)器54。當(dāng)該線是重復(fù)的時,則重復(fù)針對該線的步驟(步驟105–111,圖11),通過從該線中的第一段開始(步驟113,圖11)。應(yīng)當(dāng)注意,在重復(fù)該線時,所需輸入表面數(shù)據(jù)通常已經(jīng)存在于表面高速緩存45中,因此可能不需要步驟106。
重復(fù)這些步驟達重復(fù)計數(shù)器54所指定的多少次,即,直到步驟112確定該線未被重復(fù)為止。針對新線(步驟114,圖11),需要將新的線數(shù)據(jù)結(jié)構(gòu)53提取到線段緩沖區(qū)46中(步驟104,圖11),并接著可以根據(jù)需要針對該新線中的段重復(fù)步驟105–110。此外,確定該線是否被重復(fù)(步驟112,圖11),直到確定已經(jīng)處理了次級表面70中的所有線76為止(步驟111,圖11)。在這點上,對次級表面的處理是完全的(步驟115,圖11)。
然后通過顯示控制器25,將該次級表面與要形成顯示幀但未被選擇以形成次級表面的任何其它輸入表面組合。接著,將該顯示幀經(jīng)由顯示接口29發(fā)送至顯示器19。
然后,根據(jù)需要,針對下一個輸出幀重復(fù)整個處理。(所有緩沖區(qū)和高速緩存對于每一個幀來說都無效。)
在上述實施方式中,將描述次級表面內(nèi)的輸入表面的布局的特定數(shù)據(jù)結(jié)構(gòu)提供給合成處理。
在另一實施方式中,不是提供詳細描述次級表面內(nèi)的輸入表面的布局的這種數(shù)據(jù)結(jié)構(gòu),而相反,將簡單地指示對次級表面有貢獻的輸入表面和輸入表面的數(shù)據(jù)存儲在哪里的數(shù)據(jù)提供給合成處理。這種布置具體在例如次級表面由完全未-交疊的輸入表面形成的情況下使用。
在這個實施方式中,合成顯示控制器25的基本配置如圖3所示。然而,可以處理次級表面的每個硬件模塊32、33具有與上述實施方式所描述的略微不同的配置。
圖12示意性地示出了可以根據(jù)本文所描述的技術(shù)的該實施方式來操作的合成顯示控制器25的示例性硬件模塊32或33。
如圖12所示,在這個實施方式中,硬件模塊32包括內(nèi)部總線接口242,其與顯示控制器的總線接口30(如圖3所示)進行通信,以讀入用于對次級表面有貢獻的輸入表面的數(shù)據(jù)。
次級表面處理硬件模塊32還包括多個輸入表面(子層)寄存器244、245以及246。這些寄存器被用于存儲指示要形成次級表面的輸入表面被存儲在哪里的數(shù)據(jù),采用針對存儲器中的輸入表面數(shù)據(jù)的指針的形式和其它指示,如存儲器中的輸入表面的大小。
內(nèi)部總線接口242也與硬件模塊32的判優(yōu)器243進行數(shù)據(jù)通信,其確定如何將輸入表面形成為次級表面。
判優(yōu)器243確定哪個輸入表面要用于次級表面的任何給定區(qū)域,提取輸入表面像素數(shù)據(jù),并將對應(yīng)像素數(shù)據(jù)提供給輸入fifo247,以供輸出至顯示控制器25的合成塊40(如圖3所示)。
硬件模塊32還包括狀態(tài)機248,狀態(tài)機248被配置成控制硬件模塊的操作。
下面,參照圖1、8以及12至14,對本文所描述的技術(shù)的這個實施方式的操作進行描述。
此外,為了生成合成輸出幀(步驟301,圖13a),合成顯示控制器25的驅(qū)動器首先使用要被合成的輸入表面的屬性信息,來創(chuàng)建輸入表面的“層列表”(步驟302,圖13a)。
從層列表中的第一輸入表面開始(步驟303,圖13a),針對該輸入表面的α值用于確定該輸入表面何時完全透明,即,當(dāng)α等于0時(步驟304,圖13a)。例如,這是直接確定何時針對整個輸入表面來設(shè)置一輸入表面的α值。由此,在更復(fù)雜的情況下,例如,當(dāng)每像素存儲該α值時,該步驟可能被跳過。當(dāng)該輸入表面完全透明時,將其從層列表中丟棄(步驟305,圖13a),否則將它保留在層列表中。
接著,驅(qū)動器140檢查是否考慮了層列表中的所有輸入表面(步驟306,圖13a),而如果不是這樣,則處理層列表中的下一個輸入表面(步驟307,圖13a),并且其α值用于確定該輸入表面何時完全透明(步驟303,圖13a)。處理繼續(xù),直到驅(qū)動器考慮了層列表中的所有輸入表面為止。
在這個階段,驅(qū)動器140現(xiàn)在具有不包括任何完全透明的輸入表面的更新層列表。從更新層列表中的第一輸入表面開始(步驟308,圖13a),該輸入表面的大小和位置,連同針對更新層列表中的其它輸入表面的大小、位置以及α值被驅(qū)動器140用于確定第一輸入表面何時被完全不透明的輸入表面完全覆蓋(步驟309,圖13a)。如果該輸入表面被完全遮蓋,則將其從層列表中丟棄(步驟310,圖13a),否則將它保留在層列表中。
接著,驅(qū)動器140檢查是否考慮了層列表中的所有輸入表面(步驟311,圖13a),而如果不是這樣,則處理層列表中的下一個輸入表面(步驟312,圖13a),以確定其是否被其它不透明的輸入表面完全覆蓋(步驟309,圖13a)。處理繼續(xù),直到驅(qū)動器考慮了更新層列表中的所有輸入表面為止。
在這個階段,驅(qū)動器140現(xiàn)在具有其他更新層列表,其不包括任何完全透明的輸入表面或被其它不透明輸入表面完全遮蓋的輸入表面。從更新層列表中的第一輸入表面開始(步驟313,圖13b),該輸入表面的大小和位置,連同針對更新層列表中的其它輸入表面的大小、位置,被驅(qū)動器140用于確定第一輸入表面何時被任何其它輸入表面覆蓋(步驟314,圖13b)。當(dāng)考慮的輸入表面不與任何其它輸入表面交疊時,則將其添加至用于形成次級表面(“智能層”)的輸入表面列表中,并從被處理以供在次級表面中考慮的輸入表面的“層列表”中移除(步驟315,圖13b)。
接著,驅(qū)動器140檢查是否考慮了層列表中的所有輸入表面(步驟316,圖13b),而如果不是這樣,則處理層列表中的下一個輸入表面(步驟317,圖13b),以確定其是否交疊任何其它輸入表面(步驟314,圖13b)。處理繼續(xù),直到驅(qū)動器140考慮了更新層列表中的所有輸入表面為止,在其結(jié)束時,“智能層”次級表面列表已經(jīng)開始由不與任何其它輸入表面交疊的所有輸入表面形成。
該處理中的下一步是,將由一應(yīng)用或操作系統(tǒng)指定的、要被包括在次級表面中的任何輸入層添加至“智能層”列表,并從“層列表”中移除(步驟318,圖13b)。
下面,考慮輸入表面的更新層列表,從更新層列表中的最前面輸入表面開始(步驟319,圖13b),該輸入表面的大小、位置以及深度次序,連同針對先前已經(jīng)添加至“智能層”次級表面列表中的其它輸入表面的大小、位置以及深度次序,被驅(qū)動器140用于確定最前面輸入表面何時被“智能層”列表中的任何其它輸入表面覆蓋(步驟320,圖13b)。當(dāng)所考慮的輸入表面未被已經(jīng)處于“智能層”次級表面列表中的任何其它輸入表面覆蓋時,則將其添加至用于形成次級表面(“智能層”)的輸入表面列表(步驟321,圖13b)。
接著,驅(qū)動器檢查是否考慮了更新層列表中的所有輸入表面(步驟322,圖13b),而如果不是這樣,則處理層列表中的下一個輸入表面(按照深度)(步驟323,圖13b),以確定其是否被更新“智能層”次級表面列表中的任何其它輸入表面覆蓋(步驟320,圖13b)。處理繼續(xù),直到驅(qū)動器考慮了更新層列表中的所有輸入表面為止,在其結(jié)束時,已經(jīng)由不與任何其它輸入表面交疊的所有輸入表面形成“智能層”次級表面列表(步驟324,圖13b)。
(可以看出,在圖1所示的輸入表面的情況下,該處理將導(dǎo)致包含輸入表面1和4的“智能層”次級表面列表,因為輸入表面4不與而任何其它輸入表面1、2、3交疊,并且輸入表面1是最前面的輸入表面,且不被輸入表面4覆蓋。輸入表面2和3被輸入表面4覆蓋,因此這些輸入表面2、3不被添加至“智能層”列表。)(應(yīng)當(dāng)清楚,如果初始層列表上的輸入表面1、2、3、4的排序不同,則輸入表面2和4,或者3和4可以另選地被選擇為被包括在更新層列表中。)
在這個階段,“智能層”列表現(xiàn)在包含適于組合成次級表面的輸入表面。下面,尤其參照圖1、圖12以及圖14,對利用由圖1中的輸入表面1和4形成的次級表面來合成輸出表面的處理進行描述。
首先,啟動合成新的輸出幀(或其窗口)(步驟401,圖14),即,換句話說,該輸出表面要被合成。使用由驅(qū)動器制備的針對次級表面的輸入表面1、4的列表,該輸入表面根據(jù)其左邊緣的水平坐標(biāo)來排序,該排序列表中的第一輸入表面具有最小水平坐標(biāo)(步驟402,圖14)。因此,在圖1中,輸入表面1、4被排序為1、4(即使輸入表面1和4具有相同的最小水平坐標(biāo),也首先任意選擇表面1)。
指示用于所確定輸入表面的數(shù)據(jù)被存儲在哪里的數(shù)據(jù)接著按其左邊緣的確定次序,被加載到硬件模塊32的寄存器244、245、246中(因此針對最-左表面1的數(shù)據(jù)被加載到第一個寄存器244中,等等)。
為了形成次級表面,判優(yōu)器243考慮幀中的第一垂直坐標(biāo)(步驟403,圖14),并且考慮所排序的“智能層”列表中的第一輸入表面(步驟404,圖14)。如果該輸入表面在第一垂直坐標(biāo)的水平線上具有任何像素(步驟405,圖14)(可以看出,圖1中的輸入表面1具有針對從第一垂直坐標(biāo)起行進的整個水平線的像素),則利用相應(yīng)寄存器244中的數(shù)據(jù)來提取針對該輸入表面的像素數(shù)據(jù)244(步驟406,圖14)。
接著,判優(yōu)器243確定所排序的“智能層”列表中的最后一個輸入表面是否已被處理(步驟407,圖14)。如果沒有,則考慮所排序的“智能層”列表中的下一個輸入表面(步驟408,圖14)。接著,判優(yōu)器243確定下一個輸入表面是否水平地具有沿該水平線的任何像素(步驟405,圖14),直到“智能層”次級表面列表中的所有輸入層已經(jīng)被處理為止(可以看出,僅圖1中的輸入表面1具有沿著從第一垂直坐標(biāo)起行進的水平線的任何像素)。
一旦“智能層”次級表面列表中的所有輸入表面被考慮用于第一垂直坐標(biāo),就確定是否已經(jīng)達到垂直線的末端,即,幀的底部(步驟409,圖14)。如果沒有,則垂直坐標(biāo)增加(步驟410,圖14),以便考慮橫跨該幀的下一條水平線。
重復(fù)其,直到在該幀完成時,考慮了所有的水平線為止(直到達到垂直線的終點為止)(步驟411,圖14)。
按這種方式,應(yīng)當(dāng)看出,將達到圖1中的輸入表面1和4(輸入表面4在多條中間水平線的間隙之后到達),并且針對它們的像素數(shù)據(jù)由判優(yōu)器243提取并提供給合成塊40(其將在恰當(dāng)時候,將該次級表面與其它次級表面和/或剩余輸入表面組合,即,利用α混合,將由圖1中的輸入表面1和4形成的次級表面與輸入表面2和3組合)。
下面,參照圖8,對利用次級表面來合成輸出表面的操作的另一示例進行描述,圖8示出了已經(jīng)通過上述標(biāo)準(zhǔn)選擇成適于組合成次級表面65的另一示例性組的輸入表面66、67、68(即,根據(jù)參照圖13a和圖13b描述的處理)。下面,尤其參照圖8、12以及14,對利用包括這些輸入表面66、67、68的次級表面來合成輸出表面進行描述。
首先,啟動合成新的輸出幀(或其窗口)(步驟401,圖14),即,換句話說,該輸出表面要被合成。利用由驅(qū)動器制備的針對次級表面的輸入表面的列表,該輸入表面根據(jù)其左邊緣的水平坐標(biāo)來排序,該排序列表中的第一輸入表面具有最小水平坐標(biāo)(步驟402,圖14)。因此,在圖8中,輸入表面66、67、68被排序為68、66、67。
指示用于所確定輸入表面的數(shù)據(jù)被存儲在哪里的數(shù)據(jù)接著按其左邊緣的確定次序而被加載到硬件模塊32的寄存器244、245、246中(因此,針對最-左表面68的數(shù)據(jù)被加載到第一個寄存器244中,等等)。
為了形成次級表面65,由判優(yōu)器243考慮幀中的第一垂直坐標(biāo)(步驟403,圖14),并且考慮排序的“智能層”列表中的第一輸入表面(步驟404,圖14)。如果該輸入表面在第一垂直坐標(biāo)的水平線上具有任何像素(步驟405,圖14)(可以看出,圖8中的輸入表面68沒有沿從第一垂直坐標(biāo)起行進的水平線的任何像素),則利用相應(yīng)寄存器244中的數(shù)據(jù)來提取針對該輸入表面的像素數(shù)據(jù)244(步驟406,圖14)。
接著,判優(yōu)器243確定排序的“智能層”列表中的最后一個輸入表面是否已被處理(步驟407,圖14)。如果沒有,則考慮排序的“智能層”列表中的下一個輸入表面(步驟408,圖14)。接著,判優(yōu)器243確定下一個輸入表面是否水平地具有沿該水平線的任何像素(步驟405,圖14),直到“智能層”次級表面列表中的所有輸入層已經(jīng)被處理為止(可以看出,圖8中的其它輸入表面66、67都沒有沿著從第一垂直坐標(biāo)起行進的水平線的任何像素)。
一旦“智能層”次級表面列表中的所有輸入表面被考慮用于第一垂直坐標(biāo),就確定是否已經(jīng)達到垂直線的末端,即,幀的底部(步驟409,圖14)。如果沒有,則垂直坐標(biāo)增加(步驟410,圖14),以便考慮橫跨該幀的下一條水平線。
重復(fù)其,直到在該幀完成時,考慮了所有的水平線為止(直到達到垂直線的終點為止)(步驟411,圖14)。
按這種方式,應(yīng)當(dāng)看出,最終將達到圖8中的輸入表面67,接著是66,然后是68,并且針對它們的像素數(shù)據(jù)由判優(yōu)器243提取并提供給合成塊40(其將在恰當(dāng)時候,將該次級表面65與其它次級表面和/或剩余輸入表面組合(例如,利用α混合))。
圖15示意性地示出了針對圖2所示的數(shù)據(jù)處理系統(tǒng)的、也可以按本實施方式的方式操作的另一示例性數(shù)據(jù)處理系統(tǒng)121。
此外,圖15所示的數(shù)據(jù)處理系統(tǒng)121在芯片上系統(tǒng)122上包括經(jīng)由互連部127通信的cpu123和gpu124,cpu123和gpu124都可以經(jīng)由存儲器控制器126使用芯片-外存儲器128。然而,在這種情況下,數(shù)據(jù)處理系統(tǒng)121包括合成引擎130和分離的顯示控制器125,而非組合的合成顯示控制器。如在圖2的數(shù)據(jù)處理系統(tǒng)21中,針對圖15的數(shù)據(jù)處理系統(tǒng)121,顯示控制器125具有用于與顯示器131通信的顯示接口129。用于合成引擎的驅(qū)動器141在cpu123上運行。
圖15所示的實施方式的操作與上面參照圖2-14針對圖2的實施方式描述的操作非常相似。唯一的差別是,分離的合成引擎130處理和合成次級和輸入表面,然后將所合成的輸出表面寫入至存儲器128中的幀緩沖區(qū),從那里,顯示控制器125提取所合成的輸出表面以供顯示。
針對上述處理的變化和修改是可能的。例如,不需要檢測和去除完全透明或被完全覆蓋的層(輸入表面),和/或可以在其它地方執(zhí)行那些處理。而且,可以使用用于確定對次級表面有貢獻的輸入表面的步驟的不同集合或次序。
該輸入、次級和/或輸出表面可以被壓縮、旋轉(zhuǎn)和/或縮放等。
從上面可以看出,至少在其實施方式中,本文所描述的技術(shù)包括如下步驟,其中,多個輸入表面可以被合成成輸出表面,同時需要更少的硬件資源。還能夠合成可能交疊和/或具有任何任意形狀的輸入表面。
在本文所描述的技術(shù)的實施方式中,這至少通過將要合成的一些或全部輸入表面組合成中間次級表面,然后將其提供給合成處理/處理器來實現(xiàn)。這避免了需要合成處理/處理器必須彼此獨立地處理那些輸入表面。多個輸入表面能夠被組合成中間次級表面(例如以逐條線為基礎(chǔ)確定的),使得合成處理不需要了解橫跨整個次級表面的輸入表面的總體布置。
次級表面可以由可以交疊的和具有任何形狀和布局的大量輸入表面形成。因此,本文所描述的技術(shù)的方法和系統(tǒng)可以適應(yīng)任何任意數(shù)量的輸入表面、任何形狀的輸入表面、以及交疊的輸入表面等。
已經(jīng)出于例示和描述的目的呈現(xiàn)了前述詳細描述。不是旨在排它或?qū)⒈疚乃枋龅募夹g(shù)限制成所公開的精確形式。鑒于上述教導(dǎo),許多修改和變化都是可行的。選擇所述實施方式,以便最佳地說明本文所描述的技術(shù)的原理及其實踐應(yīng)用,由此使得本領(lǐng)域其它技術(shù)人員能夠在各種實施方式中最佳地利用本文所描述的技術(shù),并且具有如適于預(yù)期特定用途的各種修改例。本文所描述的技術(shù)的范圍旨在通過所附的權(quán)利要求書來限定。