數據處理系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及數據處理系統(tǒng),并且具體地涉及在圖形處理系統(tǒng)中處理壓縮數據。
【背景技術】
[0002]如本領域中已知的,在圖形處理系統(tǒng)中對幀進行渲染和光柵化之后,幀通常被壓縮以減小存儲器帶寬并且被寫入幀緩沖器中。壓縮的幀然后由執(zhí)行進一步圖像處理(例如圖像縮放、操縱和/或增強)的顯示控制器或圖像處理器解壓縮并讀取,而結果被直接發(fā)送給顯示器(輸出的圖像未被寫回到存儲器或幀緩沖器)。結果,必須按照幀刷新速率以一次操作(pass)執(zhí)行此圖像處理,所述幀刷新速率通常是每秒60幀。
[0003]因為典型的平板當前具有2048X1536個像素的顯示分辨率,并且采用每像素32個比特的數據大小,所以這導致必須每秒處理720MB的數據。預期移動裝置的顯示分辨率繼續(xù)增加,預期在2015年出現(xiàn)4K(3840X2160個像素)平板,并且預期在這樣的移動裝置中執(zhí)行的圖像處理將變得日益復雜并因此更加計算密集,以便在一系列條件下提供改善的圖像質量。
[0004]申請人認為數據處理系統(tǒng)中的處理數據(例如在幀緩沖器與顯示器之間的圖像中)仍然有改進的空間。
【發(fā)明內容】
[0005]當從第一方面看時,本發(fā)明提供了一種數量處理方法,該方法包括以下步驟:
[0006]通過將表示輸出數據陣列的特定區(qū)域的壓縮數據塊寫入輸出緩沖器,將數據存儲在所述輸出緩沖器中;
[0007]從所述輸出緩沖器讀取表示所述輸出數據陣列的特定區(qū)域的壓縮數據塊;
[0008]從所述壓縮數據塊獲取元數據;以及
[0009]對所述數據塊進行處理,
[0010]其中,所述元數據用于影響所述數據塊的處理。
[0011]當從第二方面看時,本發(fā)明提供了一種數據處理系統(tǒng),該數據處理系統(tǒng)包括:
[0012]被布置成生成數據以形成輸出數據陣列的處理電路;
[0013]被布置成通過將表示所述輸出數據陣列的特定區(qū)域的壓縮數據塊寫入輸出緩沖器從而將所生成的數據存儲在所述輸出緩沖器中的處理電路;
[0014]被布置成從所述輸出緩沖器讀取表示所述數據陣列的特定區(qū)域的壓縮數據塊的處理電路;
[0015]被布置成從所述壓縮數據塊獲取元數據的處理電路;以及
[0016]被布置成對所述數據塊進行處理的處理電路,
[0017]其中,所述元數據被用于影響所述數據塊的處理。
[0018]本發(fā)明涉及數據處理系統(tǒng),例如,用于對輸出數據陣列進行處理,并被實現(xiàn)為該數據處理系統(tǒng),并且本發(fā)明涉及一種方法,例如,操作數據處理系統(tǒng)的方法,其中,由所述數據處理系統(tǒng)生成的數據被用于在輸出緩沖器中形成輸出數據陣列,其中,通過將表示所述輸出數據陣列的特定區(qū)域的數據塊寫入輸出緩沖器中,輸出數據陣列(在一個優(yōu)選實施方式中,例如可能是要顯示的幀)被存儲在輸出緩沖器(在一個優(yōu)選實施方式中,例如可以是幀緩沖器)中。各個數據塊表示所述輸出數據陣列的特定區(qū)域,并且因此優(yōu)選地各個數據塊表示由所述數據處理系統(tǒng)生成的渲染拼貼(tile),例如,一起形成要顯示的幀。
[0019]隨后,例如由顯示控制器在顯示之前從所述輸出緩沖器讀取并處理形成被寫入所述輸出緩沖器的所述輸出數據陣列的所述數據塊。
[0020]所述數據塊被以壓縮的形式存儲在所述輸出緩沖器中。因此,在優(yōu)選實施方式中,所述方法包括壓縮所述數據塊并將壓縮的數據塊寫入所述輸出緩沖器的步驟。
[0021]優(yōu)選地,數據塊被個別地壓縮,即,逐塊壓縮,使得各個壓縮數據塊都是它相關的相應數據塊的壓縮表示(由于所述拼貼被優(yōu)選地單獨地渲染并寫出到所述輸出緩沖器的事實)。因此,在優(yōu)選實施方式中,各個壓縮數據塊是特定渲染拼貼的壓縮表示。
[0022]當數據(例如圖像)被壓縮時,元數據常常被創(chuàng)建為壓縮處理的一部分,或者所述數據被按照可從已壓縮數據中提取元數據的這樣的方式壓縮。所述元數據中的至少一些可包含表示原始數據被壓縮之前的特性的信息。所述元數據因此可包含例如由于有損壓縮而不再存在于壓縮數據中和/或能夠被用于更高效地對所述數據進行處理的信息(例如,因為將必須進一步分析所述數據以獲得此信息)。
[0023]因此,通過在所述數據塊的后續(xù)處理期間使用元數據來影響所述數據塊的處理,減小了所需圖像處理的量進而減小了所消耗的電力,或者另選地相同量的電力能夠執(zhí)行更復雜級別的處理。此外,本發(fā)明減少了需要被傳送的數據的量,這是因為元數據能夠被用于推導關于原始數據塊(即,在數據塊被壓縮之前)的信息,因此避免了使用原始數據塊的需要并因此能夠使用壓縮數據塊。
[0024]能夠按照任何期望且適合的方式從所述壓縮數據塊獲取所述元數據。這可取決于所述數據塊被壓縮的方式,即,取決于壓縮方案。在一些壓縮方案中,元數據例如在所述數據的壓縮期間自動地生成,并且例如可形成壓縮數據的一部分,從而使得能夠簡單地連同所述數據塊一起讀取所述元數據。在其它壓縮方案中,可能需要根據壓縮數據確定(例如,生成或計算)所述元數據,在此情況下,所述方法可包括對所述壓縮數據塊進行處理以獲取所述元數據的另一步驟。在任一種情況下,例如通過僅讀取或確定后續(xù)處理所必需的所述元數據,可僅獲取影響所述數據塊的后續(xù)處理所需的所述元數據。
[0025]所述數據塊的處理可在所述壓縮數據塊上進行,即,無需先解壓縮所述數據。例如,所述元數據和所述壓縮數據塊的組合可能是足夠的,無需解壓縮所述數據,如將在下面更詳細地討論的。然而在一個實施方式中,所述壓縮數據塊被解壓縮并且解壓縮的數據塊被處理,其中,所述元數據被用于影響解壓縮的數據塊的處理。
[0026]如將在下面所討論的,可按照任何適合且期望的方式使用所述元數據來影響所述數據塊的處理,例如,在取出或使用壓縮圖像數據的任何時候。然而,在優(yōu)選實施方式中,對所述數據塊進行處理的步驟包括以下步驟:例如使用任何適合且期望的圖像處理算法對所述數據塊執(zhí)行圖像修改(例如,顯示修改),其中,所述元數據被用于影響解壓縮的數據塊的處理。(所述數據塊可不必須被立即發(fā)送給顯示器,而是相反被存儲用于將來顯示,但是仍然可能經歷圖像修改。)
[0027]在一個實施方式中,對所述數據塊執(zhí)行圖像(顯示)修改的步驟包括以下步驟:縮放所述數據塊和/或對所述數據塊執(zhí)行圖像增強,其中,所述元數據被用于影響所述數據塊的縮放和/或所述數據塊的所述圖像增強。如還將在下面所討論的,優(yōu)選地,所述圖像(顯示)修改由顯示控制器或圖像處理器執(zhí)行。
[0028]因此,所述方法優(yōu)選地包括以下步驟:顯示經處理的數據塊,即,利用顯示控制器。因此,用于讀取所述壓縮數據塊的所述處理電路可包括所述顯示控制器。另選地,單獨的組件(例如,圖像處理器)可用于讀取所述壓縮數據塊。所述圖像處理器然后可使用所述元數據來處理所述數據塊,并且所述顯示控制器可顯示經處理的數據塊。
[0029]縮放的處理涉及將所述數據陣列(例如幀)的大小從(壓縮)數據陣列的大小放大或減小為所述輸出數據陣列的大小,例如以用于顯示。當所述顯示器的大小與所生成的幀的大小不同時,此處理頻繁地發(fā)生。
[0030]圖像增強(使用所述元數據)的處理涉及修改例如已被輸出到幀緩沖器中的圖像數據,以便針對顯示而優(yōu)化所述圖像。這通常將涉及修改(例如,增加)所述圖像的對比度或修改所述圖像的亮度。圖像增強通常涉及向原始幀緩沖器數據應用變換功能,以便相對于高閾值和低閾值重新映射像素或子像素的亮度。用于圖像增強(例如,修改對比度)的技術包括對比度增強、直方圖均衡和直方圖拉伸。為了方便起見,將在本文中使用術語圖像增強,但應當理解,這旨在包括并包含所有等效的術語和技術。
[0031]可針對各種不同的用途執(zhí)行圖像增強的處理。例如,如果將在暗的環(huán)境條件下(例如,在變暗的房間內)顯示圖像,則可增加圖像的亮度并且可減小背光功率以減小顯示器的總體功耗。如果例如要在亮的環(huán)境條件下(例如,室外陽光下)顯示圖像,則可以增加亮度,或另選地使用色調映射以使圖像變得更易于觀看。
[0032]可使用的其它圖像增強技術(即,使用元數據執(zhí)行圖像增強)包括自動聚焦、自動白平衡和自動曝光以及創(chuàng)造性圖像處理,例如使圖像看起來像是用老式相機拍攝的。
[0033]使用元數據的圖像增強的處理可能不導致圖像的立即顯示,但是可被執(zhí)行以使得圖像可被用于例如顯示之前的進一步處理。在一個實施方式中,元數據被用于從所述數據塊(例如,圖像)檢測或提取特征。這可用于例如出于自動聚焦的目的而確定圖像中是否存在面部,或為了字符識別或計算機視覺而檢測圖像中的邊緣。
[0034]又一個圖像處理技術包括將數據塊轉碼為另一格式,例如以將使用如US-A1-2013/0034309中描述的ARM幀緩沖壓縮(AFBC)方案壓縮的圖像轉換為MPEG Η.264。
[0035]本發(fā)明可例如作為圖形處理流水線的一部分被實現(xiàn)在數據處理系統(tǒng)內的任何適合且期望的位置,并且適合于每當壓縮圖像數據被取出或使用時(例如,在GPU對壓縮圖像數據執(zhí)行圖像處理的任何時候)被使用,因此圖像(顯示)修改不是必須由圖像處理器或顯示控制器執(zhí)行,而是由系統(tǒng)中的任何適合的組件執(zhí)行。
[0036]然而在優(yōu)選實施方式中,壓縮數據塊(例如,所述數據陣列)被保持在幀緩沖器中,壓縮數據塊可由顯示控制器從幀緩沖器讀出以用于處理和顯示,或者由圖像處理器讀出以用于處理,即,以提供輸出幀以用于顯示。因此,優(yōu)選地,所述方法包括使用所述顯示控制器或所述圖像處理器來處理所述數據塊的步驟。這個步驟后優(yōu)選地跟隨有使用所述顯示控制器來顯示所述數據塊的步驟。
[0037]如果適用的話,顯示數據塊的裝置可不必須存在于包含數據處理系統(tǒng)并且例如包含圖形處理流水線、圖像處理器或顯示處理器的同一個物理設備中。例如,經處理的數據塊例如可使用WiDi (無線顯示)或Miracast無線地發(fā)送到顯示器,或者經處理的圖像可通過網絡發(fā)送并且然后顯示。
[0038]因此,優(yōu)選地,所述方法還包括以下步驟中的一個或更多個步驟:生成所述數據塊,例如優(yōu)選地生成所述數據陣列(包括多個數據塊);將所述數據塊存儲在輸出(幀)緩沖器中,例如優(yōu)選地將所述數據陣列存儲在幀緩沖器中;以及從幀緩沖器讀取所述數據塊以用于處理。
[0039]在這些實施方式中,S卩,在將所述數據陣列存儲在幀緩沖器中的實施方式中,數據陣列(要顯示的幀)可例如通過被適當地渲染和存儲到幀緩沖器中并且通過整個數據處理系統(tǒng)的任何適當的組件(幀生成器)視需要而定生成。在優(yōu)選實施方式中,要顯示的幀是由圖形處理器生成的幀、由視頻處理器(視頻引擎)生成的幀或由組合引擎(或組合器)提供的幀。
[0040]因此,幀生成級優(yōu)選地包括圖形處理器、視頻處理器(視頻引擎)或組合引擎(或組合器)。如果需要,可能存在超過一個幀生成器,并且一個或超過一個(或全部)幀生成器可按照本發(fā)明的方式操作。如果需要,所述幀生成級還可包括其它組件,諸如壓縮級(壓縮引擎)(并且在優(yōu)選實施方式中是這種情況)。
[0041]可以按照許多不同的方式使用元數據來影響數據塊的處理。在一個實施方式中,元數據被用于例如通過確定使用多個處理中的哪一個處理數據塊來影響數據塊的處理。因此,優(yōu)選地,所述方法包括使用所述元數據在用于處理所述數據塊的多個處理之間選擇一個的步驟。因為元數據包含表示原始數據被壓縮之前的特性的信息,所以元數據例如可被用于確定所述數據塊所需的處理的級別,例如以用于顯示。
[0042]例如,元數據可包含涉及在數據塊中(即,在遍及所述數據塊的不同點處)的數據(例如,顏色)的變化,其中,根據由所述元數據指示的所述數據塊中的數據(例如顏色)的變化的級別在不同的處理之間進行選擇以使用。因此,優(yōu)選地,如果數據(顏色)對于數據塊中的全部是相同的,則使用第一處理,如果數據塊在數據值(顏色)方面具有小變化,則使用第二處理,并且如果在整個數據塊的數據值(顏色)方面存在大變化(例如,顏色值中的邊緣),則使用第三處理。
[0043]在另一個不必相互排斥的實施方式中,元數據在數據塊本身的處理中被使用以影響所述處理,即,用于數據塊的處理的處理細節(jié)取決于作為該處理的輸入的元數據,例如,元數據被用作所述處理中的變量。在此實施方式中,可使用自適應算法來基于元數據對數據塊進行處理。
[0044]例如,元數據可包含涉及數據塊中的數據(例如,顏色)的變化的信息,并且可分析所述變化以例如確定要在數據塊中執(zhí)行的平滑的量和/或數據塊中的邊緣的位置和強度(數據值的急劇改變)。如上所述,可以在取決于元數據選擇要用于處理數據塊的特定處理之后使用元數據在自適應算法中的這種用途。
[0045]如上所述,優(yōu)選地,元數據包括表示數據塊中的數據(例如,顏色)的變化的信息。如現(xiàn)在將描述的,在縮放圖像時并且在執(zhí)行圖像增強時,所述信息是特別有用的。除了分析元數據以確定數據塊中的數據值(顏色)的變化之外,可分析(壓縮)數據塊本身中的數據,以及這與使用元數據確定數據塊中的數據值(顏色)的變化的組合。
[0046]例如,如果元數據指示在數據塊中不存在數據(例如,顏色)的變化,即,數據(顏色)全部相同,則在縮放和/或顯示數據塊時,相同的數據(顏色)可被用于整個數據塊的各個點(例如,像素)。因此,優(yōu)選地,所述方法包括使用所述元數據來確定所述數據(顏色)是否在整個所述數據塊中全部相同的步驟。在這樣的情況下,可無需解壓縮數據塊,即,如果已知數據塊的所有點(像素)具有相同的數據值,則無需解壓縮數據塊來確定各個點處的數據值(顏色)。此外,可無需對數據塊中的所有點執(zhí)行縮放,因為在與所述數據塊對應的最終顯示中,對于很多點(像素)而言,可以在要顯示的所述塊上簡單地重復所述數據值(顏色)。因此,減小了顯示或縮放數據塊所需的處理的量。
[0047]在另一示例中,元數據可指示在數據塊中存在數據值(顏色)的大變化,例如,存在“邊緣”,在“邊緣”處,數據塊中的鄰近點(像素)之間存在數據值(顏色)的明顯變化,即,所述方法包括使用所述元數據來確定所述數據塊中是否存在邊緣的步驟。在這種情況下,特別是在縮放數據塊時,重要的是例如使用邊緣或對比度增強算法來仔細地處理所述邊緣,使得當顯示所述數據塊時所述邊緣被保持。
[0048]除了在數據塊內檢測到邊緣之外,在數據陣列(其將下面更詳細地描述)中存在多個數據塊的實施方式中,各個數據塊的邊緣處的點(像素)將與在相鄰數據塊的邊緣處的點相鄰。因此,優(yōu)選地,例如除了對個別的數據塊內的點(像素)執(zhí)行邊緣檢測處理之外,還對各個數據塊的邊緣處的點執(zhí)行邊緣檢測處理,使得可以檢測到數據塊之間的邊緣。
[0049]為了檢測數據塊之間的邊緣,優(yōu)選地分析數據陣列中的相鄰數據塊的元數據,并且對在所述數據塊周邊的點執(zhí)行適當的邊緣增強算法。
[0050]在另一個示例中,元數據可指示數據塊中僅存在數據值(顏色)的小變化,即,并不全部是相同的數據值(顏色)但是不存在邊緣。在這種情況下,平滑算法可用于處理所述數據塊(例如,在縮放期間),不必要執(zhí)行邊緣檢測和增強。
[0051]因此可以看到,元數據包含有關所述數據塊的特性的有用信息,并且因此例如在縮放、圖像增強和/或顯示期間可用于選擇數據塊經歷什么類型的處理。因此,當需要時,例如當元數據指示數據塊中存在邊緣時可以使用更復雜的處理,或當更簡單的處理適用于由元數據指示的數據塊中的數據的類型時(例如,當數據值(顏色)在數據塊中全部相同時)可使用更簡單的處理。
[0052]使用元數據來處理數據塊的步驟可包括生成直方圖(即,從所述元數據生成),以確定所述數據塊的處理信息(參數,例如圖像(顯示)修改信息(參數))。
[0053]如上所述,本發(fā)明被優(yōu)選地實現(xiàn)在一種圖形處理系統(tǒng)中,其中,要顯示的壓縮幀被寫出到幀緩沖器中并且然后由顯示控制器在顯示之前處理。例如,情況將是這樣的,并且如將由本領域技術人員所了解的,在基于拼貼的數據處理系統(tǒng)中,在此情況下按照本發(fā)明的方式處理的各個數據塊可以(并且在一個優(yōu)選實施方式中)對應于圖形處理器的渲染處理產生的“拼貼(tile)”(盡管如將在下面進一步地討論的,但是這不是必須的)。
[0054]如本領域中已知的,在基于拼貼的渲染中,渲染處理的二維數據陣列或幀(“渲染目標(例如,并且通常,其將被顯示來顯示被渲染的場景)被細分或分割成通常被稱為“拼貼”的多個較小區(qū)域以用于渲染處理。拼貼(子區(qū)域)都被單獨地(通常一個接一個地)渲染。然后,經渲染的拼貼(子區(qū)域)被重新組合以提供完整的輸出陣列(幀)(渲染目標)以例如用于顯示。
[0055]通常被用于“拼貼”和“基于拼貼的”渲染的其它術語包括“組塊(chunking) ”渲染(子區(qū)域被稱為“塊”)和“段(bucket)”渲染。為了方便起見,將在本文中使用術語“拼貼”,但是應該理解,這些術語旨在包含所有另選和等效的術語和技術。
[0056]由數據處理系統(tǒng)生成的數據正被用于形成的輸出數據陣列可以是例如圖形處理器可被用于生成的任何適合且期望的這種數據陣列。在一個特別優(yōu)選的實施方式中,它包括用于顯示的輸出幀,但是它還可以或替代地包括圖形處理器的其它輸出,諸如圖形紋理(其中,例如,渲染“目標”是圖形處理器正被用于(例如在“渲染到紋理”操作中)生成的紋理或所述數據處理系統(tǒng)的輸出將被寫入的其它表面)。
[0057]類似地,數據要被寫入的輸出緩沖器可包括任何適合的這種緩沖器,并且可在存儲器中按照任何適合且期望的方式加以配置。例如,所述輸出緩沖器可以是片上緩沖器或者可以是外部緩沖器(并且,實際上,更可能是外部緩沖器(存儲器),如將在下面所討論的)。類似地,所述輸出緩沖器可以是用于此目的的專用存儲器或者也可以是用于其它數據的存儲器的一部分。如以上所討論的,在優(yōu)選實施方式中,所述輸出緩沖器是用于數據處理器系統(tǒng)和/或用于將被提供數據處理系統(tǒng)的輸出的顯示器的幀緩沖器。
[0058]數據塊可以各自表示整個數據陣列的任何適合且期望的區(qū)域,包括最多整個數據陣列,即,可能僅存在單個塊。然而,優(yōu)選地,所述數據陣列包括多個數據塊,即,所述數據塊小于整個數據陣列。在此實施方式中,能夠視需要而定完成所述數據陣列變成數據塊的細分。
[0059]各個生成的數據塊優(yōu)選地表示整個陣列的不同部分(子區(qū)