欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在幀緩沖器中形成開窗顯示的制作方法

文檔序號:6339066閱讀:402來源:國知局
專利名稱:在幀緩沖器中形成開窗顯示的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)領(lǐng)域。更特別地,本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)內(nèi)的幀緩沖 存儲(chǔ)器中的開窗顯示的形成。
背景技術(shù)
公知的是某些數(shù)據(jù)處理系統(tǒng)使用開窗顯示。開窗顯示被諸如運(yùn)行由微軟公司制 造的Windows XP操作系統(tǒng)和諸如Linux的操作系統(tǒng)的X Windows系統(tǒng)組件的那些系統(tǒng)利 用。在此類系統(tǒng)內(nèi),由應(yīng)用程序或負(fù)責(zé)保持顯示的背景、從而在幀緩沖存儲(chǔ)器內(nèi)形成像素值 的程序來生成繪圖命令,所述像素值在被驅(qū)動(dòng)時(shí)將在產(chǎn)生的期望開窗顯示中顯示結(jié)果。此 類開窗顯示通常包括在背景上的多個(gè)可能重疊的窗口。可以改變窗口的顯示順序,并且可 以在用戶輸入的控制下在尺寸和位置方面修改窗口。當(dāng)進(jìn)行此類修改時(shí),窗口管理程序通 常向應(yīng)用程序或背景繪圖程序發(fā)出開窗控制命令,使得這些隨后又向圖形系統(tǒng)發(fā)出繪圖命 令,以便向幀緩沖存儲(chǔ)器中進(jìn)行要求的新像素值的寫入以進(jìn)行開窗顯示。附圖的圖1和2舉例說明此類系統(tǒng)。圖1舉例說明具有在其上面形成第一窗口 4 和第二窗口 6的背景圖像2的開窗顯示。第二窗口 6在顯示順序方面高于第一窗口 4,因此 當(dāng)?shù)诙翱?6覆蓋第一窗口 4的一部分時(shí),則第一窗口 4的該部分被隱藏。諸如用計(jì)算機(jī) 鼠標(biāo)進(jìn)行的用戶輸入可以將第二窗口 6移動(dòng)至如所示的開窗顯示內(nèi)的不同位置,并且這導(dǎo) 致先前被第二窗口 6覆蓋的那部分第一窗口 4變得暴露,而先前被顯示的第一窗口 4的其 它不同部分現(xiàn)在被第二窗口 6隱藏。圖2示意性地舉例說明對用戶輸入進(jìn)行響應(yīng)已生成開窗控制命令的窗口管理器 8,所述開窗控制命令分別被傳遞至負(fù)責(zé)第二窗口 6的第一應(yīng)用程序12、負(fù)責(zé)第一窗口 4的 第二應(yīng)用程序14和負(fù)責(zé)繪制背景圖像2的背景繪圖程序16。所述開窗控制命令可以例如 指定窗口管理器8命令第一應(yīng)用程序12、第二應(yīng)用程序14或背景繪圖程序16使用其相關(guān) 圖形內(nèi)容進(jìn)行繪圖的屏幕的區(qū)域。然后,第一應(yīng)用程序12、第二應(yīng)用程序14和背景繪圖程 序16生成被傳遞至圖形系統(tǒng)的繪圖命令。這些繪圖命令導(dǎo)致由圖形系統(tǒng)在幀存儲(chǔ)器內(nèi)的 相關(guān)部分處生成必要的像素值。因此,如果第二窗口 6被移動(dòng),使得第一窗口 4現(xiàn)在是完全 可見的,則第一窗口 4的右上方角將要求由第二應(yīng)用程序14進(jìn)行繪制。由窗口管理器8生 成的開窗控制命令發(fā)布開窗控制命令,該開窗控制命令指示第二應(yīng)用程序14現(xiàn)在生成用 于第一窗口 4的右上方角的像素?cái)?shù)據(jù)。第二應(yīng)用程序14對此開窗控制命令進(jìn)行響應(yīng)以向 圖形系統(tǒng)發(fā)布繪圖命令以生成用于其窗口 4的現(xiàn)在暴露的右上方角的像素值。相對于圖1和2舉例說明和討論的系統(tǒng)和機(jī)制是基于這樣的假設(shè),即當(dāng)向圖形系 統(tǒng)發(fā)布繪圖命令時(shí),其基本上被立即遵照執(zhí)行并寫入存儲(chǔ)用于被顯示的當(dāng)前圖像的像素值 的幀緩沖存儲(chǔ)器。圖形系統(tǒng)被假設(shè)為可以在沒有延遲的情況下訪問幀緩沖存儲(chǔ)器,并且在 繪圖命令被圖形系統(tǒng)接收到時(shí)響應(yīng)于該繪圖命令來讀和寫像素值。顯示通常采用的此類布 置利用單緩沖幀緩沖存儲(chǔ)器和立即模式的圖形渲染(rendering)。正在變得普遍的另一種形式的圖形系統(tǒng)利用基于圖塊(tile)的圖形渲染。此類系統(tǒng)非常適合于低成本且低功率的實(shí)施方式,因?yàn)槠湟话阋源鎯?chǔ)器被訪問的方式更加高效。 特別地,基于圖塊的系統(tǒng)通常使用延遲渲染并在雙緩沖模式下操作。在此類系統(tǒng)中,接收繪 圖命令并對其進(jìn)行分析以識別總幀內(nèi)的哪些圖塊包含將被那些繪圖命令改變的像素值。為 此,幀被劃分成多個(gè)圖塊。因此,繪圖命令被“分倉(binned)”到繪圖命令的圖塊列表中,每 個(gè)圖塊列表包含用于將形成的圖像數(shù)據(jù)的新的幀的所有繪圖命令,其改變相關(guān)圖塊內(nèi)的像 素值。當(dāng)已經(jīng)生成用于新的幀的所有繪圖命令并將其分倉到多個(gè)圖塊列表中時(shí),然后單獨(dú) 地處理圖塊列表以生成用于被存儲(chǔ)在圖塊存儲(chǔ)器內(nèi)的那些圖塊的像素值。當(dāng)圖塊的處理完 成時(shí),圖塊存儲(chǔ)器的內(nèi)容被寫出到幀緩沖存儲(chǔ)器。當(dāng)已經(jīng)處理了所有圖塊且相關(guān)圖塊的內(nèi)容被存儲(chǔ)器寫出到幀緩沖器時(shí),然后新的 幀數(shù)據(jù)完成,并且可以通過在雙緩沖布置中交換活動(dòng)幀緩沖器來顯示。此類基于雙緩沖圖 塊的渲染系統(tǒng)不適合于支持開窗顯示。更特別地,在開窗顯示中,當(dāng)用戶輸入要求修改在基于圖塊的系統(tǒng)內(nèi)顯示的像素 值時(shí),通常將要求首先從像素值的當(dāng)前幀讀取每個(gè)圖塊的內(nèi)容,修改像素值的每個(gè)圖塊,并 隨后將像素值的每個(gè)圖塊寫回到幀緩沖器。每個(gè)圖塊的所有像素值的此讀和寫要求不利地 高數(shù)目的存儲(chǔ)器訪問,這降低速度并增加能量消耗。

發(fā)明內(nèi)容
從一方面看,本發(fā)明提供一種形成開窗顯示的方法,所述方法包括步驟 處理向幀緩沖存儲(chǔ)器的圖塊寫入的一個(gè)或多個(gè)繪圖命令以形成將被寫入所述圖塊的
一個(gè)或多個(gè)新像素值;
將所述一個(gè)或多個(gè)新像素值存儲(chǔ)在圖塊存儲(chǔ)器內(nèi);
形成臟(dirty)像素?cái)?shù)據(jù),其指示所述圖塊存儲(chǔ)器內(nèi)的哪些像素是存儲(chǔ)所述一個(gè)或多 個(gè)新像素值的臟像素和所述圖塊存儲(chǔ)器中的哪些像素是不存儲(chǔ)所述一個(gè)或多個(gè)新像素值 的干凈像素;以及
根據(jù)所述臟像素?cái)?shù)據(jù),將存儲(chǔ)在所述圖塊存儲(chǔ)器的所述臟像素內(nèi)的所述一個(gè)或多個(gè)新 像素值寫入所述幀緩沖存儲(chǔ)器的相應(yīng)位置,存儲(chǔ)在所述幀緩沖存儲(chǔ)器內(nèi)的與所述圖塊存儲(chǔ) 器內(nèi)的干凈像素相對應(yīng)的像素值被保持不變。本技術(shù)認(rèn)識到在幀緩沖存儲(chǔ)器中的開窗顯示中,如果當(dāng)處理向幀緩沖存儲(chǔ)器內(nèi)的 圖塊進(jìn)行寫入的繪圖命令時(shí),系統(tǒng)還生成指示圖塊內(nèi)的哪些像素已被改變并存儲(chǔ)新像素值 的臟像素?cái)?shù)據(jù),則可以使用此臟像素?cái)?shù)據(jù)來控制新像素值對幀緩沖存儲(chǔ)器的寫入,而不必 首先從幀緩沖存儲(chǔ)器讀出像素值的現(xiàn)有圖塊。臟像素?cái)?shù)據(jù)指示用與被保持不變的圖塊內(nèi)的 干凈像素相對應(yīng)的幀緩沖存儲(chǔ)器內(nèi)的現(xiàn)有像素?cái)?shù)據(jù)向幀緩沖存儲(chǔ)器內(nèi)的要求像素位置進(jìn) 行寫入,因?yàn)槲磳@些干凈像素位置進(jìn)行寫入。這樣,更快且更高效地實(shí)現(xiàn)開窗顯示的支 持。系統(tǒng)仍使用圖塊存儲(chǔ)器,新的像素值在被寫入幀緩沖存儲(chǔ)器之前被寫入該圖塊存儲(chǔ)器 中,并且臟像素?cái)?shù)據(jù)的動(dòng)作用于指示從圖塊存儲(chǔ)器進(jìn)行的寫入,使得只有新像素值被寫入 幀緩沖存儲(chǔ)器,因此,以適當(dāng)?shù)姆绞奖3终婢彌_存儲(chǔ)器內(nèi)的不變像素值。 應(yīng)認(rèn)識到此類系統(tǒng)內(nèi)的圖塊可以具有多種不同的尺寸。在一種極端情況下,圖塊 可以與幀緩沖器一樣大小,并且圖塊存儲(chǔ)器能夠存儲(chǔ)用于幀緩沖存儲(chǔ)器的一整套數(shù)據(jù)。在 另一極端情況下,圖塊的尺寸可以是單個(gè)像素。然而,通常,圖塊是一起對應(yīng)于幀緩沖存儲(chǔ)器中的開窗顯示的多個(gè)圖塊中的一個(gè)。圖塊尺寸的典型值可以是16X16個(gè)像素,雖然將認(rèn) 識到可以選擇不同的圖塊尺寸,并且本技術(shù)適用于所有這些圖塊尺寸。 可以對多個(gè)圖塊中的每一個(gè)單獨(dú)地執(zhí)行處理、存儲(chǔ)、形成和寫入的步驟以形成幀 緩沖存儲(chǔ)器中的開窗顯示的全幀。該處理的基于圖塊的性質(zhì)通過使用并行硬件來執(zhí)行處 理、存儲(chǔ)、形成和寫入的步驟而非常適合于加速??梢源鎯?chǔ)所生成的繪圖命令而不立即在保持一個(gè)或多個(gè)延遲繪圖命令的命令倉 庫內(nèi)遵照執(zhí)行。然后,可以關(guān)于所述多個(gè)圖塊中的每一個(gè)讀取此命令倉庫內(nèi)的延遲繪圖命 令,從而提取向當(dāng)前正在被處理的圖塊進(jìn)行寫入的一個(gè)或多個(gè)延遲繪圖命令。所述一個(gè)或多個(gè)繪圖命令的存儲(chǔ)可以包括通過識別哪些繪圖命令向所述多個(gè)圖 塊中的哪些進(jìn)行寫入并為所述多個(gè)圖塊中的每一個(gè)形成單獨(dú)的分倉倉庫進(jìn)行的繪圖命令 的分倉,向所述圖塊進(jìn)行寫入的延遲命令被存儲(chǔ)到所述單獨(dú)的分倉倉庫中。通過在繪圖命 令正在被延遲時(shí)以這種方式有效地將其分類,形成用于每個(gè)圖塊的分倉倉庫,然后,當(dāng)遇到 繪制圖塊的觸發(fā)事件時(shí),可以從用于該圖塊的相應(yīng)分倉倉庫直接讀取用于每個(gè)圖塊的延遲 繪圖命令并將其渲染(可能用高度并行的硬件)。應(yīng)認(rèn)識到臟數(shù)據(jù)可以采取多種不同的形式,并且在一般意義上可以是用于識別圖 塊內(nèi)的哪些像素已被改變和圖塊內(nèi)的哪些像素未被改變的任何數(shù)據(jù)結(jié)構(gòu)。然而,存儲(chǔ)并操 控臟數(shù)據(jù)的硬件有效方式是使用位字段,該位字段的每個(gè)位與圖塊內(nèi)的像素相對應(yīng)并具有 位值,所述位值指示像素之一是臟像素和像素是干凈像素。在這種意義上,以類似的方式使 用臟和干凈,因?yàn)檫@些術(shù)語在高速緩沖存儲(chǔ)器的領(lǐng)域內(nèi)用來指示已被改變(臟)的值和未被 改變(干凈)的值。臟像素?cái)?shù)據(jù)可以方便地形成用來控制哪些像素值被從圖塊存儲(chǔ)器拷貝到幀緩沖 器的寫掩碼。此類寫掩碼非常適合于控制用于生成要求寫入的專用硬件,所述要求寫入將 新的像素值從存儲(chǔ)器拷貝到幀緩沖存儲(chǔ)器。本技術(shù)可以方便地在其中窗口管理器生成被發(fā)布到一個(gè)或多個(gè)應(yīng)用程序(具有相 應(yīng)窗口)和用于繪制顯示的任何背景區(qū)域的背景繪制程序的開窗控制命令的系統(tǒng)中使用。 然后,該應(yīng)用程序和背景繪制程序?qū)﹂_窗控制命令進(jìn)行響應(yīng)以生成如上文所述地被逐個(gè)圖 塊地處理的繪圖命令??梢杂苫趫D塊的圖形處理單元來執(zhí)行處理、存儲(chǔ)、形成和寫入的步驟。此類專用 軟件非常適合于利用本技術(shù)。然而,應(yīng)認(rèn)識到可以由在適當(dāng)軟件控制下操作的通用處理器 來執(zhí)行本技術(shù)。此外,可以將專用圖形處理硬件和在軟件控制下操作的通用處理器的組合 與任務(wù)被執(zhí)行的劃分一起使用,由此,此類實(shí)施例的一部分按要求根據(jù)相關(guān)系統(tǒng)的優(yōu)先級 而變,例如功率/效率對比靈活性。雖然本技術(shù)在使用合成方案的系統(tǒng)中有用,但其非常適合于其中開窗顯示是非合 成開窗顯示的系統(tǒng)。非合成開窗顯示通常要求硬件具有用于隨著用戶移動(dòng)窗口并改變開窗 顯示而處理必要的繪圖的機(jī)制。從另一方面看,本發(fā)明提供了一種用于形成開窗顯示的裝置,所述裝置包括
處理電路,其對向幀緩沖存儲(chǔ)器的圖塊寫入的一個(gè)或多個(gè)繪圖命令進(jìn)行響應(yīng)以形成將 被寫入所述圖塊的一個(gè)或多個(gè)新像素值;
圖塊存儲(chǔ)器,其被配置為存儲(chǔ)所述一個(gè)或多個(gè)新像素值;臟像素?cái)?shù)據(jù)形成電路,其被配置為形成臟像素?cái)?shù)據(jù),該臟像素?cái)?shù)據(jù)指示所述圖塊存儲(chǔ) 器內(nèi)的哪些像素是存儲(chǔ)所述一個(gè)或多個(gè)新像素值的臟像素和所述圖塊存儲(chǔ)器中的哪些像 素是不存儲(chǔ)所述一個(gè)或多個(gè)新像素值的干凈像素;以及
寫生成電路,其對所述臟像素?cái)?shù)據(jù)進(jìn)行響應(yīng)以將存儲(chǔ)在所述圖塊存儲(chǔ)器的所述臟像素 內(nèi)的所述一個(gè)或多個(gè)新像素值寫入所述幀緩沖存儲(chǔ)器的相應(yīng)位置,存儲(chǔ)在所述幀緩沖存儲(chǔ) 器內(nèi)的與所述圖塊存儲(chǔ)器內(nèi)的干凈像素相對應(yīng)的像素值被保持不變。 從另一方面看,本發(fā)明提供了一種用于形成開窗顯示的裝置,所述裝置包括
處理裝置,其對向幀緩沖存儲(chǔ)器的圖塊寫入的一個(gè)或多個(gè)繪圖命令進(jìn)行響應(yīng)以便形成 將被寫入所述圖塊的一個(gè)或多個(gè)新像素值;
圖塊存儲(chǔ)器裝置,其用于存儲(chǔ)所述一個(gè)或多個(gè)新像素值;
臟像素?cái)?shù)據(jù)形成裝置,其用于形成臟像素?cái)?shù)據(jù),該臟像素?cái)?shù)據(jù)指示所述圖塊存儲(chǔ)器內(nèi) 的哪些像素是存儲(chǔ)所述一個(gè)或多個(gè)新像素值的臟像素和所述圖塊存儲(chǔ)器中的哪些像素是 不存儲(chǔ)所述一個(gè)或多個(gè)新像素值的干凈像素;以及
寫生成裝置,其對所述臟像素?cái)?shù)據(jù)進(jìn)行響應(yīng)以便將存儲(chǔ)在所述圖塊存儲(chǔ)器的所述臟像 素內(nèi)的所述一個(gè)或多個(gè)新像素值寫入所述幀緩沖存儲(chǔ)器的相應(yīng)位置,存儲(chǔ)在所述幀緩沖存 儲(chǔ)器內(nèi)的與所述圖塊存儲(chǔ)器內(nèi)的干凈像素相對應(yīng)的像素值被保持不變。從另一方面看,本發(fā)明提供了一種計(jì)算機(jī)程序存儲(chǔ)介質(zhì),其存儲(chǔ)用于控制用于通 過執(zhí)行包括以下步驟的方法來處理數(shù)據(jù)以形成開窗顯示的裝置的計(jì)算機(jī)程序
處理向幀緩沖存儲(chǔ)器的圖塊寫入的一個(gè)或多個(gè)繪圖命令以形成將被寫入所述圖塊的 一個(gè)或多個(gè)新像素值;
將所述一個(gè)或多個(gè)新像素值存儲(chǔ)在圖塊存儲(chǔ)器內(nèi);
形成臟像素?cái)?shù)據(jù),其指示所述圖塊存儲(chǔ)器內(nèi)的哪些像素是存儲(chǔ)所述一個(gè)或多個(gè)新像素 值的臟像素和所述圖塊存儲(chǔ)器中的哪些像素是不存儲(chǔ)所述一個(gè)或多個(gè)新像素值的干凈像 素;以及
根據(jù)所述臟像素?cái)?shù)據(jù),將存儲(chǔ)在所述圖塊存儲(chǔ)器的所述臟像素內(nèi)的所述一個(gè)或多個(gè)新 像素值寫入所述幀緩沖存儲(chǔ)器的相應(yīng)位置,存儲(chǔ)在所述幀緩沖存儲(chǔ)器內(nèi)的與所述圖塊存儲(chǔ) 器內(nèi)的干凈像素相對應(yīng)的像素值被保持不變。通過應(yīng)結(jié)合附圖來閱讀的說明性實(shí)施例的以下詳細(xì)說明,將清楚本發(fā)明的以上及 其它目的、特征和優(yōu)點(diǎn)。


圖1示意性地舉例說明開窗顯示;
圖2示意性地舉例說明用于生成開窗控制命令的窗口管理器程序與用于向圖形系統(tǒng) 生成繪圖命令的背景繪圖程序之間的關(guān)系;
圖3舉例說明如何可以將開窗顯示內(nèi)的幀分成用于用臟像素?cái)?shù)據(jù)的相關(guān)形成來渲染 的圖塊;
圖4示意性地舉例說明用于使用基于圖塊的渲染來執(zhí)行開窗顯示的生成的圖形處理 單元;
圖5示意性地舉例說明圖形處理單元的光柵化部分;圖6示意性地舉例說明使用新像素值和臟像素?cái)?shù)據(jù)來生成到幀存儲(chǔ)器的寫入;
圖7是示意性地舉例說明控制到基于圖塊的窗口顯示系統(tǒng)內(nèi)的幀存儲(chǔ)器的寫入時(shí)的 臟像素?cái)?shù)據(jù)的形成和使用的流程圖;以及
圖8示意性地舉例說明在開窗顯示系統(tǒng)內(nèi)的幀緩沖存儲(chǔ)器與應(yīng)用程序之間擴(kuò)展的不 同功能層;以及
圖9示意性地舉例說明本技術(shù)到合成開窗顯示系統(tǒng)的應(yīng)用。
具體實(shí)施例方式圖3示意性地舉例說明包括由應(yīng)用程序繪制的窗口 20和形成幀的其余部分的背 景區(qū)域的開窗顯示的幀18。幀被分成八個(gè)圖塊22。應(yīng)認(rèn)識到在實(shí)踐中,可以將幀分成較大數(shù)目的圖塊。此外, 還可以在幀包括單個(gè)圖塊或每個(gè)圖塊僅包括一個(gè)像素時(shí)使用本技術(shù)。圖3的下部分舉例說明如何處理一個(gè)圖塊。此圖塊被示為具有16X16像素的大 小,雖然這僅僅是可能的圖塊尺寸的一個(gè)示例。由稍后將描述的分倉的過程來識別生成用 于該圖塊的新像素值的繪圖命令。當(dāng)已識別了這些繪圖命令時(shí),關(guān)于當(dāng)前選擇的圖塊對其 進(jìn)行處理并將所生成的新像素值寫入圖形處理單元內(nèi)的圖塊存儲(chǔ)器。因此,圖塊由此經(jīng)受 處理其繪圖命令的繪制操作和將相關(guān)的新像素值存儲(chǔ)到圖塊存儲(chǔ)器中的存儲(chǔ)操作。同時(shí), 由于每個(gè)新像素值被寫入圖塊存儲(chǔ)器中,所以臟像素?cái)?shù)據(jù)內(nèi)的相應(yīng)位被設(shè)置為指示相關(guān)的 像素位置包含新的像素值。用指示未被改變的所有干凈像素的位值對臟像素?cái)?shù)據(jù)進(jìn)行初始 化。因此,在已處理了用于相關(guān)圖塊的所有繪圖命令之后,臟像素?cái)?shù)據(jù)將包含被設(shè)置為指示 已被寫入新像素值的所有位置處的臟像素的位值。如圖3所示,與幀內(nèi)的窗口 20的左下方 角相對應(yīng)的新像素值被寫入圖塊的右上方角中的像素位置,并且臟像素?cái)?shù)據(jù)內(nèi)的相應(yīng)位置 被寫入以指示那些像素位置是臟的。在圖3中以二維的形式示出臟像素?cái)?shù)據(jù),并且將其示為256臟位字段。應(yīng)認(rèn)識到 在二維形式內(nèi)的像素與256位字段之間存在一對一映射,并且臟像素?cái)?shù)據(jù)的這些表示是等 效的。圖4示意性地舉例說明生成繪圖命令的應(yīng)用程序24、用于使用基于圖塊的渲染來 處理那些繪圖命令的圖形處理單元26、存儲(chǔ)關(guān)于存儲(chǔ)器內(nèi)的不同圖塊的分倉繪圖命令的圖 塊列表28和表示開窗顯示的新像素值被寫入其中的幀緩沖存儲(chǔ)器30(在不同的架構(gòu)中,幀 緩沖器(30)也可以在GPU中,或在系統(tǒng)存儲(chǔ)器中)之間的關(guān)系。應(yīng)認(rèn)識到在圖4中舉例說 明的圖形處理器單元26周圍的虛線描繪圖形處理單元26內(nèi)的元件。實(shí)際上,在其它實(shí)施 例中,可以由其它硬件組件或在軟件中提供這些元件中的某些或全部。例如,可以使用經(jīng)適 當(dāng)編程的通用計(jì)算機(jī)來執(zhí)行圖形處理單元26的所有任務(wù),并且此類實(shí)施例將具有所執(zhí)行 的處理的靈活性和可見性方面的某些優(yōu)點(diǎn)。然而,在圖4中舉例說明的圖形處理單元26的 內(nèi)容非常適合于快速且低功率的基于圖塊的圖形渲染。圖4的圖形處理單元26包含用于對接收到的繪圖命令執(zhí)行諸如平移、縮放、旋轉(zhuǎn) 等變換操作的變換單元32。分倉單元34接收經(jīng)變換的繪圖命令并對其進(jìn)行分倉,在分倉 中,識別哪些繪圖命令向多個(gè)圖塊22中的哪些中進(jìn)行寫入,例如是將繪制點(diǎn)、線還是三角 形,然后該識別確定其是否至少部分地與給定圖塊22交叉。如果由該繪圖命令生成的新像素的至少一部分在給定圖塊內(nèi),則繪圖命令被“分倉”到該圖塊中并存儲(chǔ)在相應(yīng)的關(guān)聯(lián)分倉 倉庫36內(nèi)。每個(gè)分倉倉庫36對應(yīng)于圖塊22并包含繪圖命令,在繪圖命令在被光柵化時(shí)將 促使新的像素值被寫入該圖塊內(nèi)。應(yīng)認(rèn)識到此分倉可能不是精確的,并且可以采取謹(jǐn)慎的 方法,其中,如果不能絕對地確定哪些新像素值將被設(shè)置,但存在這些新像素值中的某些將 在圖塊內(nèi)的任何可能,則可以將繪圖命令分倉到該圖塊。當(dāng)繪圖命令實(shí)際上被光柵化(處理 /渲染)時(shí),然后將進(jìn)行新像素值及其位置的絕對確定。如果這些新像素值中沒有一個(gè)碰巧 在相關(guān)圖塊內(nèi),則某些處理努力將已被浪費(fèi),但是所產(chǎn)生的最終結(jié)果將是正確的。分倉倉庫36共同地形成存 儲(chǔ)將由光柵化單元38來處理的繪圖命令的命令倉庫。 如果需要,可以將分倉倉庫36存儲(chǔ)在通用存儲(chǔ)器中??梢杂|發(fā)光柵化單元38在其從變換單元32接收到幀結(jié)束(EOF)信號時(shí)開始處理 來自分倉倉庫36的繪圖命令,所述幀結(jié)束信號指示已接收到生成開窗顯示的新幀的所有 繪圖命令并將其放置在適當(dāng)?shù)姆謧}倉庫36中。實(shí)際上,圖形處理單元26將從多個(gè)不同的 應(yīng)用程序和背景繪制程序接收繪圖命令。窗口管理器8通常將生成幀結(jié)束命令并將其直接 傳遞至圖形處理單元36。如圖4所示,并行地提供多個(gè)光柵化單元38。光柵化單元38適合于并行操作,因 為其每個(gè)具有包括當(dāng)前正在被處理的分倉倉庫36的獨(dú)立輸入源且每個(gè)生成與用于其正在 處理的圖塊22的像素值相對應(yīng)的獨(dú)立輸出數(shù)據(jù)。因此,光柵化操作合適地縮放至并行操 作。每個(gè)光柵化單元38包含圖塊存儲(chǔ)器40,新像素值隨著處理該圖塊的分倉倉庫36內(nèi)的 繪圖命令而被寫入其中。同時(shí),光柵化單元38形成指示圖塊存儲(chǔ)器40內(nèi)的哪些像素包含 新像素值(即包含需要在幀緩沖存儲(chǔ)器30內(nèi)更新的像素值)的臟像素?cái)?shù)據(jù)。當(dāng)已經(jīng)處理了 分倉倉庫36內(nèi)的繪圖命令時(shí),然后,光柵化單元38根據(jù)臟像素?cái)?shù)據(jù)形成寫命令序列以僅將 其位置處的新像素值寫入幀緩沖存儲(chǔ)器30中。臟像素?cái)?shù)據(jù)指示那些像素是干凈像素(即未 被改變)的圖塊存儲(chǔ)器40內(nèi)的像素未被寫入幀緩沖存儲(chǔ)器30,因此,在那些位置處的已被 存儲(chǔ)在幀緩沖存儲(chǔ)器內(nèi)的像素保持不變。因此,臟像素?cái)?shù)據(jù)充當(dāng)用于生成從圖塊存儲(chǔ)器40 到幀緩沖存儲(chǔ)器30的寫事務(wù)的寫掩碼,使得這些寫被局限于已經(jīng)由從用于相關(guān)圖塊22的 分倉倉庫36處理的繪圖命令更新的像素值。圖5更詳細(xì)地示意性地舉例說明光柵化單元38。光柵化引擎42從分倉倉庫36接 收分倉繪圖命令。光柵化引擎42還接收用于形成新像素值的紋理及其它數(shù)據(jù)。應(yīng)認(rèn)識到 此紋理及其它數(shù)據(jù)可以采取多種不同形式。其可以由專用于特定應(yīng)用或使用的著色器程序 和/或著色器硬件為單獨(dú)圖塊自定義地生成的。結(jié)合繪圖命令用來生成新像素值的這種形 式的紋理數(shù)據(jù)及其它數(shù)據(jù)對于本領(lǐng)域的技術(shù)人員來說將是熟知的。光柵化引擎42生成其新像素值并將其存儲(chǔ)到圖塊存儲(chǔ)器40??梢詫D塊存儲(chǔ)器 40視為被光柵化單元38用于存儲(chǔ)已經(jīng)生成的新像素值的一種本地高速暫存存儲(chǔ)器。每當(dāng) 新像素值被光柵化引擎42寫入圖塊存儲(chǔ)器40時(shí),設(shè)置臟像素?cái)?shù)據(jù)內(nèi)的相應(yīng)位。此臟像素 數(shù)據(jù)被寫入臟位字段44內(nèi)。當(dāng)光柵化引擎42已處理了用于相關(guān)圖塊的分倉倉庫36內(nèi)的所有繪圖命令時(shí),其 向?qū)懯聞?wù)發(fā)生器46發(fā)布圖塊結(jié)束(eot)信號。寫事務(wù)發(fā)生器46對存儲(chǔ)在臟像素?cái)?shù)據(jù)字段 44內(nèi)的臟像素?cái)?shù)據(jù)進(jìn)行響應(yīng)并將其用作寫事務(wù)掩碼以生成到幀緩沖存儲(chǔ)器30的寫序列, 其僅從圖塊存儲(chǔ)器40讀取新像素值并將其寫入幀緩沖存儲(chǔ)器30內(nèi)的相應(yīng)位置。指示相關(guān)數(shù)據(jù)是干凈的(未改變)的臟像素?cái)?shù)據(jù)內(nèi)的未被寫出到幀緩沖器30。 圖6示意性地舉例說明新像素值到幀緩沖存儲(chǔ)器30中的寫入。如所示,圖塊存儲(chǔ) 器40內(nèi)的新像素值被寫事務(wù)發(fā)生器46在存儲(chǔ)在臟數(shù)據(jù)字段44中的臟像素?cái)?shù)據(jù)內(nèi)的臟像 素的控制下讀取,并被寫入幀緩沖存儲(chǔ)器30的相應(yīng)部分。幀緩沖存儲(chǔ)器30已包含來自開 窗顯示的前一幀的現(xiàn)有像素值。未被已被針對圖塊進(jìn)行處理以生成開窗顯示的當(dāng)前幀的繪 圖命令改變的那些現(xiàn)有像素值在幀緩沖存儲(chǔ)器30內(nèi)保持不變,并且只有新像素值被寫入 如所示的適當(dāng)位置。圖7是示意性地舉例說明依照本技術(shù)的處理的流程圖。在步驟48處,選擇要繪制 的第一圖塊。步驟50從用于被處理的當(dāng)前圖塊的分倉倉庫36讀取第一繪圖命令。步驟52 處理所讀取的繪圖命令并生成被存儲(chǔ)在光柵化單元38的圖塊存儲(chǔ)器40內(nèi)的新像素值。然 后,步驟54通過將與由步驟52處的處理寫入的所有新像素值的位置相對應(yīng)的位值設(shè)置為 指示包含臟像素?cái)?shù)據(jù)的那些位置的值來形成用于在步驟52處處理的繪圖命令的臟像素?cái)?shù) 據(jù)。步驟56確定用于當(dāng)前圖塊的分倉倉庫36內(nèi)的最后一個(gè)繪圖命令是否已被處理。 如果對于該圖塊而言仍有要處理的其它繪圖命令,則在步驟58處選擇其中的下一個(gè),并且 處理返回到步驟52。如果用于當(dāng)前被處理的圖塊的所有繪圖命令已在步驟52處被渲染/ 光柵化/處理,則處理前進(jìn)至步驟58。步驟58讀取臟像素?cái)?shù)據(jù)并形成存儲(chǔ)在存儲(chǔ)器40內(nèi) 的新像素值到幀緩沖存儲(chǔ)器30的寫入。然后,步驟60確定開窗顯示的新幀內(nèi)的最后一個(gè) 圖塊是否已被處理。如果存在要處理的其它圖塊,則在步驟62處選擇這些中的下一個(gè),并 且處理返回到步驟50。如果所有圖塊已被處理,則圖7的操作終止。圖8示意性地舉例說明在形成開窗顯示時(shí)涉及的各種硬件和軟件元件。按照本領(lǐng) 域的技術(shù)人員所熟知的分級順序來舉例說明這些元件。在此分級結(jié)構(gòu)的一端處,所述元件 是軟件。在此分級結(jié)構(gòu)的另一端處,所述元件是硬件。硬件元件和軟件元件之間的精確劃 分對于不同的實(shí)施方式可以是不同的。例如,可以在硬件中提供或在軟件中提供圖8所示 的加速器元件??赡艿氖峭ㄓ锰幚砥鲌?zhí)行硬件可以執(zhí)行先前用局限于幀緩沖存儲(chǔ)器的硬件 元件描述的所有處理,開窗顯示的幀被寫入所述幀緩沖存儲(chǔ)器中。在其它實(shí)施例中,可以更 多地信賴硬件加速器和硬件元件,因?yàn)槠渫ǔ?zhí)行更快且更加能量高效的圖形處理。圖9示意性地舉例說明合成開窗顯示系統(tǒng)中的本技術(shù)的使用。在此系統(tǒng)中,第一 應(yīng)用程序62發(fā)布如上文所述在使用臟像素?cái)?shù)據(jù)的控制被寫入第一幀緩沖存儲(chǔ)器68中之前 經(jīng)歷基于圖塊的處理的繪圖命令。第二應(yīng)用程序64同樣地將其像素值寫入第二幀緩沖存 儲(chǔ)器70且背景繪圖程序66將其像素值寫入第三幀緩沖存儲(chǔ)器72。上文結(jié)合在每個(gè)圖塊被 處理時(shí)針對每個(gè)圖塊生成的臟像素?cái)?shù)據(jù)的使用所討論的基于圖塊的處理技術(shù)幫助減少對 幀緩沖存儲(chǔ)器68、70和72的訪問操作的數(shù)目。這加快操作速度并減少功率消耗。應(yīng)用程 序62、64和66中的每一個(gè)可以使用本技術(shù)來在產(chǎn)生隨后被合成的其各幀緩沖器68、70、72 時(shí)占有優(yōu)勢。單獨(dú)的應(yīng)用程序62、64、66受益于臟數(shù)據(jù)在更高效地生成其各幀時(shí)的使用。第一、第二和第三幀緩沖存儲(chǔ)器68、70和72是系統(tǒng)的通用存儲(chǔ)器內(nèi)的動(dòng)態(tài)分配區(qū) 域??梢允怯布蜍浖暮铣蓹C(jī)制74用于根據(jù)定義形成開窗顯示的窗口的當(dāng)前尺寸、位 置、顯示排序等開窗數(shù)據(jù)將幀存儲(chǔ)器68、70和72內(nèi)的像素?cái)?shù)據(jù)組合。合成機(jī)制74生成用 于經(jīng)由顯示驅(qū)動(dòng)器78來驅(qū)動(dòng)顯示器80的像素?cái)?shù)據(jù)值并將其存儲(chǔ)在顯示幀緩沖存儲(chǔ)器76內(nèi)。 雖然在本文中已參照附圖詳細(xì)地描述了本發(fā)明的說明性實(shí)施例,但應(yīng)理解的是本 發(fā)明不限于那些精確的實(shí)施例,并且在不脫離隨附權(quán)利要求所定義的本發(fā)明的范圍和精神 的情況下 ,本領(lǐng)域的技術(shù)人員可以對其進(jìn)行各種變更和修改。
權(quán)利要求
1.一種形成開窗顯示的方法,所述方法包括步驟處理向幀緩沖存儲(chǔ)器的圖塊寫入的一個(gè)或多個(gè)繪圖命令以形成將被寫入所述圖塊的 一個(gè)或多個(gè)新像素值;將所述一個(gè)或多個(gè)新像素值存儲(chǔ)在圖塊存儲(chǔ)器內(nèi);形成臟像素?cái)?shù)據(jù),其指示所述圖塊存儲(chǔ)器內(nèi)的哪些像素是存儲(chǔ)所述一個(gè)或多個(gè)新像素 值的臟像素和所述圖塊存儲(chǔ)器中的哪些像素是不存儲(chǔ)所述一個(gè)或多個(gè)新像素值的干凈像 素;以及根據(jù)所述臟像素?cái)?shù)據(jù),將存儲(chǔ)在所述圖塊存儲(chǔ)器的所述臟像素內(nèi)的所述一個(gè)或多個(gè)新 像素值寫入所述幀緩沖存儲(chǔ)器的相應(yīng)位置,存儲(chǔ)在所述幀緩沖存儲(chǔ)器內(nèi)的與所述圖塊存儲(chǔ) 器內(nèi)的干凈像素相對應(yīng)的像素值被保持不變。
2.如權(quán)利要求1所述的方法,其中,所述圖塊是一起對應(yīng)于所述幀緩沖存儲(chǔ)器中的所 述開窗顯示的多個(gè)圖塊中的一個(gè)。
3.如權(quán)利要求2所述的方法,其中,對所述多個(gè)圖塊中的每一個(gè)單獨(dú)地執(zhí)行所述處理、 存儲(chǔ)、形成和寫入步驟以在所述幀緩沖存儲(chǔ)器中形成所述開窗顯示的全幀。
4.如權(quán)利要求3所述的方法,還包括步驟生成一個(gè)或多個(gè)繪圖命令;以及存儲(chǔ)所述一個(gè)或多個(gè)繪圖命令以形成一個(gè)或多個(gè)延遲繪圖命令的命令倉庫;以及針對所述多個(gè)圖塊中的每一個(gè),從所述命令倉庫讀取向當(dāng)前被處理的圖塊進(jìn)行寫入的 一個(gè)或多個(gè)延遲繪圖命令并處理向當(dāng)前被渲染的所述圖塊進(jìn)行寫入的所述一個(gè)或多個(gè)延 遲繪圖命令。
5.如權(quán)利要求4所述的方法,其中,存儲(chǔ)所述一個(gè)或多個(gè)繪圖命令的所述步驟包括通 過識別所述一個(gè)或多個(gè)繪圖命令中的哪一個(gè)向所述多個(gè)圖塊中的哪一個(gè)進(jìn)行寫入并形成 包括用于所述多個(gè)圖塊中的每一個(gè)的分倉倉庫的命令倉庫來將所述一個(gè)或多個(gè)繪圖命令 分倉,每個(gè)所述分倉倉庫存儲(chǔ)向所述多個(gè)圖塊中的相應(yīng)圖塊進(jìn)行寫入的一個(gè)或多個(gè)延遲命 令。
6.如權(quán)利要求1所述的方法,其中,所述臟數(shù)據(jù)包括位字段,該位字段的每個(gè)位與所述 圖塊內(nèi)的像素相對應(yīng)并具有指示(i )所述像素是所述臟像素之一;以及(i i )所述像素是所 述干凈像素之一中的一個(gè)的位值。
7.如權(quán)利要求1所述的方法,其中,所述臟數(shù)據(jù)形成用來控制哪些像素值被從所述圖 塊存儲(chǔ)器拷貝到所述幀緩沖存儲(chǔ)器的寫掩碼。
8.如權(quán)利要求1所述的方法,還包括步驟用窗口管理器生成開窗控制命令;向與所述開窗顯示內(nèi)的一個(gè)或多個(gè)窗口中的一些相對應(yīng)的一個(gè)或多個(gè)應(yīng)用程序和被 配置為繪制所述顯示的任何背景區(qū)域的背景繪制程序發(fā)布所述開窗控制命令;響應(yīng)于所述開窗控制命令,用所述更多應(yīng)用程序中的一個(gè)和所述背景繪制程序形成所 述更多繪圖命令中的一個(gè)。
9.如權(quán)利要求1所述的方法,其中,由基于圖塊的圖形處理單元來執(zhí)行所述處理、存 儲(chǔ)、形成和寫入的步驟。
10.如權(quán)利要求1所述的方法,其中,所述開窗顯示是非合成開窗顯示。
11.一種用于在幀緩沖存儲(chǔ)器中形成開窗顯示的裝置,所述裝置包括處理電路,其對向所述幀緩沖存儲(chǔ)器的圖塊寫入的一個(gè)或多個(gè)繪圖命令進(jìn)行響應(yīng)以形 成將被寫入所述圖塊的一個(gè)或多個(gè)新像素值;圖塊存儲(chǔ)器,其被配置為存儲(chǔ)所述一個(gè)或多個(gè)新像素值;臟像素?cái)?shù)據(jù)形成電路,其被配置為形成臟像素?cái)?shù)據(jù),該臟像素?cái)?shù)據(jù)指示所述圖塊存儲(chǔ) 器內(nèi)的哪些像素是存儲(chǔ)所述一個(gè)或多個(gè)新像素值的臟像素和所述圖塊存儲(chǔ)器中的哪些像 素是不存儲(chǔ)所述一個(gè)或多個(gè)新像素值的干凈像素;以及寫生成電路,其對所述臟像素?cái)?shù)據(jù)進(jìn)行響應(yīng)以將存儲(chǔ)在所述圖塊存儲(chǔ)器的所述臟像素 內(nèi)的所述一個(gè)或多個(gè)新像素值寫入所述幀緩沖存儲(chǔ)器的相應(yīng)位置,存儲(chǔ)在所述幀緩沖存儲(chǔ) 器內(nèi)的與所述圖塊存儲(chǔ)器內(nèi)的干凈像素相對應(yīng)的像素值被保持不變。
12.一種用于形成開窗顯示的裝置,所述裝置包括處理裝置,其對向幀緩沖存儲(chǔ)器的圖塊寫入的一個(gè)或多個(gè)繪圖命令進(jìn)行響應(yīng)以便形成 將被寫入所述圖塊的一個(gè)或多個(gè)新像素值;圖塊存儲(chǔ)器裝置,其用于存儲(chǔ)所述一個(gè)或多個(gè)新像素值;臟像素?cái)?shù)據(jù)形成裝置,其用于形成臟像素?cái)?shù)據(jù),該臟像素?cái)?shù)據(jù)指示所述圖塊存儲(chǔ)器內(nèi) 的哪些像素是存儲(chǔ)所述一個(gè)或多個(gè)新像素值的臟像素和所述圖塊存儲(chǔ)器中的哪些像素是 不存儲(chǔ)所述一個(gè)或多個(gè)新像素值的干凈像素;以及寫生成裝置,其對所述臟像素?cái)?shù)據(jù)進(jìn)行響應(yīng)以便將存儲(chǔ)在所述圖塊存儲(chǔ)器的所述臟像 素內(nèi)的所述一個(gè)或多個(gè)新像素值寫入所述幀緩沖存儲(chǔ)器的相應(yīng)位置,存儲(chǔ)在所述幀緩沖存 儲(chǔ)器內(nèi)的與所述圖塊存儲(chǔ)器內(nèi)的干凈像素相對應(yīng)的像素值被保持不變。
13.一種計(jì)算機(jī)程序存儲(chǔ)介質(zhì),其存儲(chǔ)用于控制用于通過執(zhí)行包括以下步驟的方法來 處理數(shù)據(jù)以形成開窗顯示的裝置的計(jì)算機(jī)程序處理向幀緩沖存儲(chǔ)器的圖塊寫入的一個(gè)或多個(gè)繪圖命令以形成將被寫入所述圖塊的 一個(gè)或多個(gè)新像素值;將所述一個(gè)或多個(gè)新像素值存儲(chǔ)在圖塊存儲(chǔ)器內(nèi);形成臟像素?cái)?shù)據(jù),其指示所述圖塊存儲(chǔ)器內(nèi)的哪些像素是存儲(chǔ)所述一個(gè)或多個(gè)新像素 值的臟像素和所述圖塊存儲(chǔ)器中的哪些像素是不存儲(chǔ)所述一個(gè)或多個(gè)新像素值的干凈像 素;以及根據(jù)所述臟像素?cái)?shù)據(jù),將存儲(chǔ)在所述圖塊存儲(chǔ)器的所述臟像素內(nèi)的所述一個(gè)或多個(gè)新 像素值寫入所述幀緩沖存儲(chǔ)器的相應(yīng)位置,存儲(chǔ)在所述幀緩沖存儲(chǔ)器內(nèi)的與所述圖塊存儲(chǔ) 器內(nèi)的干凈像素相對應(yīng)的像素值被保持不變。
全文摘要
本發(fā)明涉及在幀緩沖器中形成開窗顯示。一種使用延遲繪圖命令的開窗顯示通過處理向幀緩沖器(30)的圖塊(22)進(jìn)行寫入的繪圖命令以形成被存儲(chǔ)在圖塊存儲(chǔ)器(40)內(nèi)的一個(gè)或多個(gè)新像素值而進(jìn)行操作。還形成臟像素?cái)?shù)據(jù),其指示圖塊存儲(chǔ)器內(nèi)的哪些像素是存儲(chǔ)新像素值的臟像素和圖塊存儲(chǔ)器中的哪些像素是不存儲(chǔ)新像素值的干凈像素。根據(jù)臟像素?cái)?shù)據(jù),存儲(chǔ)在圖塊存儲(chǔ)器內(nèi)的新像素值被寫入幀緩沖存儲(chǔ)器。存儲(chǔ)在幀緩沖器存儲(chǔ)器內(nèi)的與圖塊存儲(chǔ)器內(nèi)的干凈像素相對應(yīng)的像素保持不變,因?yàn)槠湮幢粚懭搿?br> 文檔編號G06F9/44GK102103499SQ201010593960
公開日2011年6月22日 申請日期2010年12月17日 優(yōu)先權(quán)日2009年12月17日
發(fā)明者R. 什雷納 D., 索爾加德 E., V. 德弗羅 I., J. 奧爾森 T. 申請人:Arm有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
滦南县| 长岭县| 嘉定区| 双辽市| 双峰县| 信阳市| 平乐县| 玛纳斯县| 烟台市| 右玉县| 咸宁市| 信阳市| 巢湖市| 滨海县| 凤城市| 石屏县| 宜昌市| 时尚| 建宁县| 菏泽市| 于都县| 积石山| 惠安县| 梁河县| 大荔县| 荔浦县| 崇礼县| 长丰县| 乐业县| 公安县| 辽中县| 江陵县| 东山县| 玉林市| 法库县| 彰武县| 固始县| 绿春县| 南充市| 惠水县| 临潭县|