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

壓縮和字排列位圖高速塊傳送的方法和裝置的制作方法

文檔序號:2641710閱讀:220來源:國知局
專利名稱:壓縮和字排列位圖高速塊傳送的方法和裝置的制作方法
技術(shù)領域
本發(fā)明涉及在數(shù)字計算機控制下的圖形信息顯示。特別是,它涉及通過壓縮和字排列傳送的數(shù)據(jù)來加速象素數(shù)據(jù)(bitblits)的塊傳送。
背景技術(shù)
顯示圖形信息的數(shù)字系統(tǒng)例如計算機,通常將用戶所見的圖象區(qū)域劃分為圖象元素或象素。顯示的圖象經(jīng)常是一矩形陣列,大小范圍從320象素寬(或象素/行)×240象素高(或行/幀)到1280×1024象素。
如果每個象素為開或關(guān),那么每個象素只需要存儲一比特信息。通常情況下,多顏色或灰度級也可以,其中用到每象素8,16或32bits的幀緩存或顯存。
在適時更新顯存中的象素信息時會出現(xiàn)一個問題。如果主處理器或計算機系統(tǒng)的中央處理單元(CPU)直接對顯存作更新,那么在它們之間必須有一具有一顯著帶寬的數(shù)據(jù)通信信道或總線。例如,如果目標規(guī)格是1280×1024顯示中的每個象素需要在每秒內(nèi)重寫或傳送30次,以便提供平滑移動,那么大約需要42兆比特/秒的傳送帶寬。
如此高的帶寬是昂貴的,不論對于支持它的總線來說,還是對于存儲或產(chǎn)生一直在更新的信息的存儲設備或CPU來說。甚至一個更適度的例子也需要一定量的帶寬一幅640×480每象素用8bit表示的圖象,每1/2秒完全重寫一次,則要用到5兆比特/秒的帶寬?,F(xiàn)有技術(shù)系統(tǒng)試圖降低帶寬需求。
一種降低帶寬需求的方法是不對每個顯示的象素作傳送。例如可能是僅僅傳送發(fā)生改變的象素的數(shù)據(jù)和地址。然而,這種方法常常有一不利點傳送一個單獨象素將需要讀-修改-寫操作。
多個象素常組合起來放在存儲器或總線的單個字中。通常的做法是,將8-bit的象素組合為在每16bit字中放2個或在每32bit字中放4個,將16-bit的象素組合為在每32bit字中放2個。在這些情況下要修改單個象素,顯存中字的前一內(nèi)容必須先被讀取,并且該字中未改變的象素必須隨已改變象素的數(shù)據(jù)而作重寫。
另一種降低帶寬需求的方法是單比特塊傳送或象素數(shù)據(jù)操作。在象素數(shù)據(jù)中,指定顯存中一塊矩形區(qū)域,并傳送該區(qū)域內(nèi)的象素數(shù)據(jù)??墒?,用這種方法時也會有類似的問題出現(xiàn)。
如果象素集中第一個和最后一個象素的傳送,或矩形中的每一行的傳送,沒有在字分界上發(fā)生落差,那么上述的讀-修改-寫過程必須應用于顯存字,該字起止于象素集,或起止于矩形的每行。但是除非象素集的字分界恰巧排在修改象素源和顯存之間,否則即使傳送內(nèi)部字也需要移動字內(nèi)的象素。
另一種可降低帶寬需求的方法是游程編碼(run length encode)。在一游程編碼的位圖中,對象素的計數(shù)由寫入相鄰象素集的某一相同象素數(shù)據(jù)來決定,其中該象素集的長度由象素數(shù)目給出。通過圖形處理器或加速器從主機接收這樣的位圖,并依據(jù)在位圖中已經(jīng)編碼的游程來更新顯存,CPU以及CPU和顯存之間的總線可以減輕解釋和傳送位圖的負擔。
另一種降低帶寬需求的方法是色變鍵編碼(chroma key encode)。在色變鍵編碼的位圖中,不論所傳送的象素數(shù)據(jù)具有什么特定值,寫入某一地址的象素數(shù)據(jù)均不是新顏色。確切地說,寫入顯存的圖象覆蓋對該特定象素來說是透明的。因此,對于位圖中這樣編碼的任何象素來說,圖形加速器不改變顯存中的象素數(shù)據(jù)。通常,用作色變鍵編碼的特定值,由運行在主計算機上并經(jīng)圖形加速器解釋的應用軟件來對其進行編程。
游程編碼和色變鍵編碼兩者都有不利點即使是那些未改變的象素,它們的象素數(shù)據(jù)也被傳送。此外,游程編碼和色變鍵編碼的不利點還有當要傳送的象素數(shù)據(jù)的字分界與顯存中那些對應象素的字分界不一致時,需要增加大量的處理。這些增加的處理包括在被傳送象素集的分界上可能的讀-修改-寫操作,以及對所有被傳送象素的字中象素數(shù)據(jù)可能的重新排列。
還有另一種降低總線和處理器帶寬需求的方法是,顯存要比剛好能保持所顯示的矩形區(qū)域或窗口中象素數(shù)據(jù)的顯存大。顯存中未用來顯示的部分可用來容納位圖。當主機CPU中運行的軟件發(fā)出指令時,圖形加速器將這些位圖移入顯示窗口。可是,這種方法會在顯存中產(chǎn)生瓶頸效應,因為每移動一個字至少需要兩個存取周期。
因此,當僅僅更新顯存中的一些象素時,也有必要降低帶寬和作所需要的處理。
發(fā)明概述本發(fā)明是一種用于將象素數(shù)據(jù)從高速總線上快速傳送到幀存或顯存的方法和裝置。本發(fā)明的圖形顯示性能在現(xiàn)有技術(shù)上有重大提高。這一部份地是由于對傳送的象素信息作了壓縮,一部份是由于按顯存中對應象素對要傳送的象素信息作字排列,和一部份是由于避免顯存內(nèi)的傳送。
要傳送的象素數(shù)據(jù)的壓縮在于,對于那些未被傳送器修改的象素來說不必傳送象素數(shù)據(jù)。確切地說,對略過的未修改象素字節(jié)的計數(shù)優(yōu)于對已修改象素的每個象素信息集的計數(shù)。
要傳送的象素通過排列使得,每個要傳送的相鄰象素集的字間分界與顯存中對應象素的字間分界相匹配,即與傳送器目標地址中的象素的字間分界相匹配。這種字排列大大加速了圖形加速器對顯存中象素數(shù)據(jù)的修改。而加速的完成的代價是將確定排列的任務放到初始化傳送器的應用軟件中。
在靜態(tài)圖象的情況下,例如駕駛艙,所需排列的完成是在軟件用到的圖象信息編譯為位圖的時候。
在動態(tài)圖象的情況下,例如子畫面(sprite),所需排列的完成,是通過將子畫面象素數(shù)據(jù)所有可能的字排列編譯為不同的位圖版本。運行時,應用軟件利用子畫面當前的位置來動態(tài)選擇將傳送子畫面位圖的哪一個版本。
象素數(shù)據(jù)從主要存儲器傳送到顯存,而不是從顯存中的一個位置(例如當前顯示窗口以外的一個位置)傳送到另一個位置(例如當前顯示窗口內(nèi)的一個位置)。顯存內(nèi)的傳送需要顯存被讀和寫--即,每傳送一個字總是需要至少兩個存取周期。從高速總線到顯存的傳送可以更快,如果每傳送一個字只需要一個存取周期。
本發(fā)明的一個實施例包括一圖形加速器,它經(jīng)由高速總線接收壓縮的和預排列的位圖。位圖存放在主要存儲器中,將位圖放到高速總線上,可通過主CPU軟件寫入圖形加速器的先進先出(FIFO)寄存器,也可通過已初始化的直接存儲器訪問(DMA)傳送,但此時的運行獨立于主CPU軟件。圖形加速器的一個實施例包括1MB-4MB的顯存,它是利用流水線結(jié)構(gòu)實現(xiàn)的。
本發(fā)明的另一實施例,在主CPU上執(zhí)行的軟件直接將預排列的象素信息寫到顯存。在該實施例中,圖形加速器是可選的。
附圖簡述本發(fā)明由下列附圖作了圖解說明,為了簡明起見,其中公知的電路以框圖的形式給出。這些附圖是用來解釋和幫助讀者理解的。本發(fā)明不應局限于圖解說明中的優(yōu)選實施例和設計可替選例。


圖1說明了本發(fā)明有效支持的兩種圖形對象或位圖,一個移動的子畫面和一個靜止的駕駛艙。
圖2a表示依據(jù)本發(fā)明,一個示例性位圖是怎樣顯示給用戶的。
圖2b表示當用本發(fā)明解釋時,導致示例性位圖顯示的對應數(shù)據(jù)結(jié)構(gòu)。
圖3(a)表示32-bit顯存內(nèi)一個相鄰16-bit象素集的兩種可能排列。
圖3(b)表示32-bit顯存內(nèi)一個相鄰8-bit象素集的四種可能排列。
圖4表示應用軟件例如計算機游戲必須執(zhí)行的步驟,目的是根據(jù)移動子畫面的當前位置來選擇傳送哪一個位圖版本到圖形加速器。
圖5表示能實現(xiàn)本發(fā)明的一個圖形加速器中的主要組件。
圖6表示利用本發(fā)明的一個計算機系統(tǒng)中的主要組件。
發(fā)明詳述概述此處公開的內(nèi)容是本發(fā)明的各種可替選實施例和設計變通方法,但不應認為本發(fā)明僅僅局限于描述的這些實施例和變通方法。在本領域的技術(shù)人員可以認出那些可替選實施例以及在形式和細節(jié)上的各種改變,只要它們在實現(xiàn)本發(fā)明時沒有背離本發(fā)明的原理、精神或范圍。
特別是,這里給出的本發(fā)明的實施例是為個人計算機系統(tǒng)設計的,該系統(tǒng)有一高速總線,特定情況下即32-bit工業(yè)標準外設接口(PCI),該系統(tǒng)還有一個Intel兼容的Pentium(或更高的)主CPU。PCI總線將主CPU與一個或多個輸入設備鏈接,與一個或多個存儲設備鏈接,與圖形加速器或幀緩沖顯存鏈接。每個象素可以用8,16或32bits的象素深度級表示。設計細節(jié)已經(jīng)優(yōu)化,可支持游戲應用軟件。本領域的技術(shù)人員清楚地知道,有許多未偏離本發(fā)明精神或范圍的其它可替選設計。
圖1表示駕駛艙101和子畫面102是怎樣在屏幕100上顯示給計算機系統(tǒng)用戶的。“駕駛艙”是靜止呆在顯示屏幕上的位圖的名稱?!白赢嬅妗笔浅霈F(xiàn)在顯示屏幕各個不同位置上的位圖的名稱。
圖1所示的特定駕駛艙,它有三個透明的帶角區(qū)域和三個透明的圓形區(qū)域。當把駕駛艙101寫到一圖形顯存,駕駛艙101中這些透明象素的當前值必須保持不變。類似地,子畫面102由在約束窗口103中的彩色或不透明的象素和透明的象素組成。同樣,當把子畫面102寫到顯存時,透明象素必須保持不變。
快速傳送位圖的格式圖2a表示一幅特定的示例性位圖是怎樣顯示在屏幕上的。位圖的第一個象素位于(4,5),即第4行,第5象素。注意在該特定例子中,顯示屏幕從左上角的第0行,第0象素開始,一直到右上角的第0行,第99象素,每行共有100個象素。圖2a所示的示例性位圖是一個矩形,它高為4行,寬為10象素。在矩形中偏離中心的是一個透明的區(qū)域,它高為2行,寬為4象素。
圖2b表示快速位圖數(shù)據(jù)結(jié)構(gòu)299,它代表了圖2a所示的子畫面或駕駛艙。位圖數(shù)據(jù)結(jié)構(gòu)299假定象素深度級為8bits,或者說每象素1byte,每個字的大小為32bits。圖2b中的每一行代表一個32-bit的字,它可以分為兩個16-bit的數(shù)值,也可以分為四個8-bit的象素值。
位圖數(shù)據(jù)結(jié)構(gòu)299起始于一個命令字,即傳送快速位圖200,它指定了下列信息的格式是快速位圖格式。通常,應用本發(fā)明的圖形系統(tǒng)還支持其它的命令和格式,例如傳統(tǒng)的矩形象素數(shù)據(jù),即把矩形區(qū)域內(nèi)的每個象素都寫入顯存。傳送快速位圖200通知圖形加速器或主軟件怎樣解釋后面的位圖。該傳送快速位圖命令占據(jù)數(shù)據(jù)結(jié)構(gòu)299中的一個32-bit字。
位圖299的第二個字,即字201,包含初始象素地址,位圖的右上角在該地址提出。初始地址可由行列地址即(4,5)表示,也可由象素計數(shù)地址,即405表示,還可由存儲器字節(jié)地址表示,本例中存儲器字節(jié)地址也是405,因為數(shù)據(jù)結(jié)構(gòu)是基于每象素一個字節(jié)的顯存的。
如果正在顯示的位圖是一個可在屏幕上移動的子畫面,那么僅通過改變字201中的值,子畫面就可在不同的地址顯示,只要新地址在顯存字中具有相同的象素排列。
如果正在顯示的位圖是一個靜止的駕駛艙,那么位圖字中象素的排列與顯存字中目標象素的排列之間的匹配,是在圖象數(shù)據(jù)編譯為位圖時靜態(tài)地完成的。對于一些駕駛艙來說,位圖中的象素排列代表了駕駛艙,它需要通過調(diào)整來確保滿足本發(fā)明規(guī)定的排列。
在命令字200和初始象素地址201之后,位圖數(shù)據(jù)結(jié)構(gòu)299將要提出的象素按需分為許多相鄰象素的集合。數(shù)據(jù)結(jié)構(gòu)299的末尾由標記值指出,例如0值,它表示接下來將重復開始另一個象素偏移量或象素集大小。
圖2a所示的象素集210是例子位圖的頂行。它由位圖數(shù)據(jù)結(jié)構(gòu)中的四個字來表示,也就是圖2b所示的位圖299的節(jié)210。節(jié)210的第一個字被分為首地址偏移量211和首象素集大小212。在該例子位圖的情況下,首地址偏移量211為0,因為初始象素地址201就是例子位圖要顯示的地址。首象素集大小212為10,因為例子位圖頂行的長為10象素。在本發(fā)明的可替選實施例中,地址偏移量和象素集大小可以用字節(jié)或象素計數(shù)指定。在位圖299的情況下,這些可替選的表示法產(chǎn)生相同的位圖數(shù)據(jù)結(jié)構(gòu),因為每個象素都由一個字節(jié)表示。
節(jié)210余下的三個字為例子位圖頂行的象素值。它們在位圖299的字中的排列方式與目標地址(即在該地址它們被寫入或提出,或它們將被傳送到的地址)在顯存的字中的排列方式是相同的。
在本發(fā)明的一個實施例中,每行均開始于一字分界。因此,任何一行中的象素5位于該行第二個字的第二個象素位置。當位圖數(shù)據(jù)結(jié)構(gòu)299被解釋時,字節(jié)213的內(nèi)容被忽略,字節(jié)213在圖2b中表示一個無關(guān)值。類似地,字節(jié)214也被忽略并表示為一個無關(guān)值。因此,圖2a所示的象素集210在位圖數(shù)據(jù)結(jié)構(gòu)299的節(jié)210中作了編碼。
類似地,例子位圖中第二行的第一個象素集由數(shù)據(jù)結(jié)構(gòu)299的節(jié)220表示。后繼地址偏移量221指定了要略過的象素數(shù)目,就是說這些象素保持不變,因為例子位圖在那些象素上是透明的。本例中有90個象素被略過(每行減少10個象素)。后繼象素集大小222指定了象素集220的長度(即多少個相鄰的象素將被提出)。本例中三個象素被提出。這三個象素的數(shù)據(jù)由數(shù)據(jù)結(jié)構(gòu)299的節(jié)220的下一個字給出。這些象素值是按顯存中目標象素的字分界來排列的,因此字節(jié)223是一個無關(guān)值。
數(shù)據(jù)結(jié)構(gòu)299的節(jié)230的后繼地址偏移量231指定,在下一個象素集被修改前,五個象素被略過或保持透明。后繼象素集大小232指定兩個象素將被修改,這樣就形成了例子位圖中透明區(qū)域的頂行。這些象素值由數(shù)據(jù)結(jié)構(gòu)節(jié)230的第二個字給出,該節(jié)也是按顯存中目標象素的字分界來排列的,字節(jié)233和234為無關(guān)值。
類似地,數(shù)據(jù)結(jié)構(gòu)節(jié)240指定,90個象素被略過,三個象素將被寫入。數(shù)據(jù)結(jié)構(gòu)節(jié)240的第二個字指定了要寫入的字排列象素值。數(shù)據(jù)結(jié)構(gòu)節(jié)250指定,在寫一個兩象素的集合之前五個透明象素被略過,該節(jié)的第二個字包含了要寫入的排列象素值。數(shù)據(jù)結(jié)構(gòu)節(jié)260在后繼地址偏移量261中指定90個象素將被略過,然后在后繼象素集大小262中指定要寫入10個象素。要寫入的字排列象素值由數(shù)據(jù)結(jié)構(gòu)段260接下來的三個字給出。
象素集260完成了例子位圖。在數(shù)據(jù)結(jié)構(gòu)299中位圖的結(jié)束用后繼象素偏移量202為0值和后繼象素集大小203為0值來表示(即一個0字)。
和基于矩形象素數(shù)據(jù)、游程編碼、或色變鍵編碼等現(xiàn)有技術(shù)相比,位圖數(shù)據(jù)結(jié)構(gòu)299作了更大的壓縮。壓縮的發(fā)生,是因為要傳送的位圖被分為相鄰象素的集合,而每個集合通過偏移量分別給出它們的地址,即通過初始偏移量211和在位圖中不論多少次重復發(fā)生的后繼偏移量例如221,231,241,251和261等。位圖數(shù)據(jù)結(jié)構(gòu)的這種壓縮提高了圖形顯示的性能。
存儲器和位圖字中的象素數(shù)據(jù)排列圖3表示在32-bit字中16-bit象素和8-bit象素可能的排列。本領域的技術(shù)人員清楚,本發(fā)明的排列特性適用于任何字大小和任何象素大小,只要一個字包含2個或更多的象素。
圖3a表示把16-bit象素放入32-bit字的可能情形。情形310時,位圖或象素集的第一個象素恰巧占據(jù)字的第一個16bits。情形311時,位圖或象素集的第一個象素恰巧占據(jù)字的第二個16bits。情形310和311是把16-bit象素放入32-bit字時僅有的兩種可能。
圖3b表示把8-bit象素放入32-bit字時的可能情形。情形320時,位圖或象素集的第一個象素恰巧排列在32-bit字的開始。在該情形中,第一個字包含了象素集的首先四個象素,象素5從第二個字開始。
情形321時,象素集的第一個象素是字1即301的第二個象素。在該情形中,象素1,2,3是第一個字的后面幾個象素,象素4和5為字2即302的前兩個象素。
類似地,情形322時,象素集的第一個象素是一個字的第三個象素。在該情形中,字301的后兩個象素為象素1和象素2,字302的前三個象素分別為象素3,4和5。
情形323時,象素集的第一個象素是一個字的最后一個象素。在該情形中,字301將象素1作為它的最后一個象素,字302包含象素2至5。情形320,321,322,323是把8-bit象素放入32-bit字時僅有的可能情形。
軟件在子畫面位圖版本中動態(tài)選擇圖4表示一應用軟件所用的流程框圖,應用軟件如游戲可用來動態(tài)選擇哪一個位圖版本將用于子畫面。這種應用軟件通常在主CPU處理器上執(zhí)行,例如圖6所示的CPU601。
圖4所示的流程假定子畫面可以移動到屏幕的任何位置,且4個8-bit的象素放入顯存中的每個32-bit字。由這些給定條件,需要四個位圖版本,分別對應于圖3中的情形320,321,322和323。如果子畫面只能每隔一個象素位置被提出,或者16-bit的象素被放入32-bit的字,那么僅需要兩個位圖版本來表示子畫面。
流程起始于401,然后計算顯示子畫面的位置(步驟402)。接著,檢驗計算所得位置的后兩比特位(步驟403)。該檢驗根據(jù)這兩比特位的四種不同可能值,將控制傳送到四個不同的步驟一一步驟404,405,406或407中的哪一個接收控制要根據(jù)計算所得位置的后兩比特位的值而定。
這些步驟中的每一個都選擇對應的子畫面位圖版本,作為應用于該位置的子畫面。四個位圖版本的不同之處僅在于每個版本中象素數(shù)據(jù)的字排列。這些步驟中的每一個然后將控制傳送到步驟408,該步驟將選中的位圖版本寫入或傳送到顯存中的計算所得位置。流程結(jié)束于409。
當編譯時靜止駕駛艙必須進行預排列依照本發(fā)明,甚至靜止位圖或者說駕駛艙,也需要按目標顯存中的字進行象素排列。如果位圖是靜止的,它只需要一個版本,但是在應用軟件或它的數(shù)據(jù)文件被編譯時該位圖必須進行預排列。如果位圖的“自然”排列,即不會導致無關(guān)象素的排列,沒有提供所需的字排列,那么當位圖被編譯時,位圖的排列必須作調(diào)整。
圖形加速器體系結(jié)構(gòu)圖5表示在本發(fā)明的一個實施例中應用的圖形加速器500的體系結(jié)構(gòu)。圖形加速器500從一PCI總線(此處未畫出)上經(jīng)由PCI接口560接收快速位圖數(shù)據(jù)結(jié)構(gòu),例如圖2所示的數(shù)據(jù)結(jié)構(gòu)299。
PCI接口560對從PCI總線接收到的信息進行判斷,如果它是圖形加速器命令則由RISC處理器510進行解釋,如果它是視頻圖形陣列(VGA)命令則由VGA控制器570進行解釋。
VGA控制器570與在主CPU上執(zhí)行的基于VGA的軟件兼容。然而VGA控制器對于本發(fā)明的操作不是必須的,它增加了圖形加速器570的花費。
通過指令高速緩存540和數(shù)據(jù)高速緩存530,RISC處理器510的性能得到了增強,這在本技術(shù)領域是眾所周知的。RISC處理器510基于一個微指令文件來對各種圖形加速器命令作解釋,該文件存儲在電可編程只讀存儲器(EPROM)593中,并經(jīng)由指令高速緩存540和動態(tài)隨機存儲器(DRAM)控制550送給RISC處理器510。
由RISC處理器510解釋的命令包括了本發(fā)明的傳送快速位圖命令。RISC處理器510還可訪問象素引擎520,該引擎包括剪刀、圖案和紋理電路521,模糊混合、顏色空間和Z緩沖電路522,和繪圖電路523,用來高速轉(zhuǎn)換某個象素的信息。
陰極射線管(CRT)控制器(CRTC)551,視頻先進先出(FIFO)552,和數(shù)模轉(zhuǎn)換器(DAC)591都是在本技術(shù)領域眾所周知的。
動態(tài)只讀存儲器(DRAM)592包含幀緩存或顯存,其中有要顯示的象素值。通常,DRAM592的容量比需要用來顯示當前象素值所需容量大,即用來顯示象素值的部分為DRAM592中取出的一個窗口。本發(fā)明不涉及DRAM592內(nèi)的任何象素數(shù)據(jù)傳送,因為這種傳送在每傳送一個字時總需要DRAM592的兩個存取周期,而從PCI總線到DRAM592的傳輸只需要一個周期,除非是在相鄰象素集的結(jié)尾,此時根據(jù)象素排列的情況,可能需要一個DRAM592的讀-修改-寫周期。
帶圖形加速器的計算機系統(tǒng)體系結(jié)構(gòu)圖6是一個示例性的可編程計算機系統(tǒng)611的體系結(jié)構(gòu)框圖,在這里本發(fā)明的各種實施例都可進行操作。
計算機系統(tǒng)611通常包含一用于通信的總線609,例如可在上面?zhèn)魉椭噶詈蛿?shù)據(jù)。在本發(fā)明的一個實施例中,總線609是PCI總線。計算機系統(tǒng)611通常還包含一主中央處理單元(CPU)601,它與總線609相連,依據(jù)編程指令來處理信息,一個與總線609相連的主要存儲器602,為主CPU601存儲信息,一個與總線609相連的數(shù)據(jù)存儲設備608,也用來存儲信息。對于計算機系統(tǒng)611的臺式設計來說,上述的組件通常位于一個底板(未畫出)上。
主CPU601可以是Intel公司或其它公司制造的386,486,Pentium或兼容處理器。主要存儲器602可以是隨機存取存儲器(RAM),為主CPU601存儲動態(tài)信息,也可以是只讀存儲器(ROM),用來為主CPU 601存儲靜態(tài)信息和指令,或者是兩種存儲器的組合。
在計算機系統(tǒng)611的可替選設計中,數(shù)據(jù)存儲設備608可以是任何媒體,用來存儲計算機的只讀信息。合適的候選設計包括只讀存儲器(ROM),硬盤驅(qū)動器,可移動媒體磁盤驅(qū)動器(例如軟磁盤或光盤),或可移動媒體磁帶驅(qū)動器(例如磁帶),或閃速存儲器(即用閃速半導體存儲器實現(xiàn)的類似磁盤的存儲設備)。也可以采用以上這些的組合,或者是支持讀或?qū)懹嬎銠C可讀媒體的其它設備。
計算機系統(tǒng)611的輸入/輸出設備通常包含顯示設備605,字母數(shù)字輸入設備606,位置輸入設備607和通信接口603,它們都與總線609相連。如果數(shù)據(jù)存儲設備608支持可移動媒體,例如軟盤,那它也可被認為是一種輸入/輸出設備。通信接口603在其它計算機系統(tǒng)604和主CPU601或主要存儲器602之間通信信息。
字母數(shù)字輸入設備606通常是一個含字母,數(shù)字和功能鍵的鍵盤,但它也可以是一個可觸摸屏或用來輸入字母或數(shù)字符的其它可操作設備。
位置輸入設備607允許計算機用戶輸入命令選擇,例如摁按鈕和作二維方向的移動,例如在顯示設備605上的一個可視符號、指針或光標。位置輸入設備607通常是鼠標或軌跡球,但也可以是其它設備,只要它們支持用戶想做的指定方向和移動量的移動,例如游戲桿或字母數(shù)字輸入設備606上的特定鍵或鍵序列命令。顯示設備605可以是液晶顯示,陰極射線管,或任何其它能產(chǎn)生為用戶所認知的圖形圖象或字母數(shù)字符的設備。
在圖6所示的本發(fā)明的實施例中,顯示設備605由圖5所示的圖形加速器500控制。圖形加速器500中包含顯存612,而顯存中則保留了顯示設備605上顯示的象素的值。
圖形加速器500可快速運行、執(zhí)行或解釋各種命令,對象素值進行操作、改變或傳送。例如,它解釋位圖數(shù)據(jù)結(jié)構(gòu)299,修改顯存612中的象素值。如果快速位圖中每個相鄰象素集內(nèi)的初始和最后的象素沒有按存儲字分界進行排列,那么主CPU會運行一個讀-修改-寫周期。這讓那些位圖中為透明的象素仍保持不變。
本領域的技術(shù)人員清楚,本發(fā)明可在寬范圍的可編程計算機系統(tǒng)上執(zhí)行,而不僅限于示例的計算機系統(tǒng)611。本發(fā)明的軟件實施例本發(fā)明的一個可替選實施例(未畫出)省略了圖形加速器500。確切地說,主CPU601直接控制、操縱和管理顯存612中的象素數(shù)據(jù)。顯存612中當前顯示窗口的內(nèi)容出現(xiàn)在顯示設備605上。
舉例來說,在主CPU601上運行的軟件解釋位圖數(shù)據(jù)結(jié)構(gòu)299,相應地修改顯存612中的象素值。如果快速位圖中每個相鄰象素集內(nèi)的初始和最后的象素沒有按存儲字分界進行排列,那么主CPU會運行一個讀-修改-寫周期。這讓那些位圖中為透明的象素仍保持不變。
與圖6所示的實施例相比,該軟件的實施例在費用上更低,但消耗了更多的主CPU帶寬和處理功耗。與上面討論過的現(xiàn)有技術(shù)相比,該可替選軟件實施例具有更好的性能。結(jié)論由上面的舉例說明可知,本發(fā)明提供了一種新奇的和有利的方法和裝置,用來高速塊傳送壓縮的和字排列的位圖。本領域的技術(shù)人員知道,當實現(xiàn)本發(fā)明而不偏離它的原理、精神和范圍時,可以采用一些可替選實施例、設計和在形式與細節(jié)上作各種改變。例如,對于位圖數(shù)據(jù)結(jié)構(gòu)299和圖形加速器500就存在寬范圍的可替選設計。
下列的權(quán)利要求指出了本發(fā)明的范圍。那些由權(quán)利要求中任何一條的意義、或相同范圍而引出的任何變化,都在本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種顯示包含象素的圖象的裝置,它包含一個可按字訪問的存儲器,它具有與象素相對應的地址,在所述每個象素地址中包含一個值,該值指出對應的象素是怎樣顯示的;和一個處理器,它依據(jù)初始象素地址和位圖來修改上述存儲器中的象素值,該位圖包含a)首地址偏移量;b)首象素集大小,它是一個非零值;c)首象素集的象素值,由所述首象素集大小指出所述首象素集長度,由所述初始象素地址和首地址偏移量給出所述首象素集的起始,以及上述位圖的首象素集的字分界是按上述存儲器中對應象素集內(nèi)的字分界來進行排列的;d)后繼地址偏移量,它是一個非零值;e)后繼象素集大小,它是一個非零值;以及f)后繼象素集的象素值,由所述后繼象素集大小指出所述后繼象素集長度,按所述后繼地址偏移量逐漸增加而給出所述后繼象素集的起始,以及上述位圖的后繼象素集內(nèi)的字分界是按上述存儲器中對應象素集內(nèi)的字分界來進行排列的。
2.依據(jù)權(quán)利要求1的裝置,其中所述位圖還包含至少另一組所述后繼地址偏移量,所述后繼象素集大小和所述后繼象素值的副本。
3.依據(jù)權(quán)利要求2的裝置,其中上述副本的結(jié)尾由所述后繼地址偏移量的值指出,它是一個標記值。
4.依據(jù)權(quán)利要求2的裝置,其中上述副本的結(jié)尾由所述后繼象素集大小的值指出,它是一個標記值。
5.依據(jù)權(quán)利要求1的裝置,還包含用戶輸入設備,用來提供用戶輸入的指令;包含所述位圖的存儲設備;和中央處理單元,用來從所述用戶輸入設備接收所述用戶輸入指令和從所述存儲設備接收所述位圖,并將所述位圖提供給所述處理器。
6.依據(jù)權(quán)利要求1的裝置,還包含用戶輸入設備,用來提供用戶輸入的指令;和用于保留所述位圖的存儲設備;其中上述的處理器還從所述用戶輸入設備接收所述用戶輸入指令和從所述存儲設備接收所述位圖。
7.依據(jù)權(quán)利要求1的裝置,還包含用來執(zhí)行軟件的中央處理單元,所述軟件中包含許多在字排列上不同的位圖,軟件選擇哪幅位圖以便所述處理器對其進行操作,這要基于所述存儲器中象素的字排列,而象素則是依據(jù)所述位圖來作修改的。
8.依據(jù)權(quán)利要求1的裝置,其中所述處理器還可執(zhí)行包含許多在字排列上不同的位圖的軟件,所述軟件選擇哪幅位圖來對其進行操作,這要基于所述存儲器中象素的字排列,而象素則是依據(jù)上述許多所述位圖來作修改的。
9.依據(jù)權(quán)利要求1的裝置,其中,當所述位圖被編譯,則位圖的象素排列要作調(diào)整,以便所述位圖中象素集的字分界可按所述存儲器中對應的象素集的字分界進行排列時。
10.一種顯示包含象素的圖象的方法,它包含依據(jù)象素值顯示象素,每個象素值在存儲器中與所述每個象素對應的地址處;以及處理位圖,依據(jù)所述位圖來修改所述存儲器中的所述象素值,該位圖包含a)首地址偏移量;b)首象素集大小,它是一個非零值;c)首象素集的象素值,由所述首象素集大小指出所述首象素集長度,由所述初始象素地址和首地址偏移量給出所述首象素集的起始,以及上述位圖的首象素集的字分界是按上述存儲器中對應象素集內(nèi)的字分界來進行排列的;d)后繼地址偏移量,它是一個非零值;e)后繼象素集大小,它是一個非零值;以及f)后繼象素集的象素值,由所述后繼象素集大小指出所述后繼象素集長度,按所述后繼地址偏移量逐漸增加而給出所述后繼象素集的起始,以及上述位圖的后繼象素集內(nèi)的字分界是按上述存儲器中對應象素集內(nèi)的字分界來進行排列的。
11.依據(jù)權(quán)利要求10的方法,其中所述位圖還包含至少另一組所述后繼地址偏移量,所述后繼象素集大小和所述后繼象素值的副本。
12.依據(jù)權(quán)利要求10的方法,其中上述副本的結(jié)尾由所述后繼地址偏移量的值指出,它是一個標記值。
13.依據(jù)權(quán)利要求10的方法,其中上述副本的結(jié)尾由所述后繼象素集大小的值指出,它是一個標記值。
14.依據(jù)權(quán)利要求10的方法,還包含用戶輸入設備提供用戶輸入的指令;存儲設備提供所述位圖;和中央處理單元從所述用戶輸入設備接收所述用戶輸入指令和從所述存儲設備接收位圖,并將所述位圖提供給所述處理器。
15.依據(jù)權(quán)利要求10的方法,還包含用戶輸入設備提供用戶輸入指令;和存儲設備提供所述位圖;處理器從所述用戶輸入設備接收所述用戶輸入指令和從所述存儲設備接收所述位圖。
16.依據(jù)權(quán)利要求10的方法,還包含選擇許多位圖中的哪一幅來對其進行處理,這要基于所述存儲器中象素的字排列,而象素則是依據(jù)上述許多位圖來作修改的,這些位圖在它們的字排列上不同。
17.依據(jù)權(quán)利要求10的方法,其中,當所述位圖被編譯,則所述位圖的象素排列要作調(diào)整,以便所述位圖中象素集的字分界可按所述存儲器中對應的象素集的字分界進行排列時。
18.寫在計算機可讀媒體上的軟件,用于對顯示的象素作修改,它包含可在中央處理單元上執(zhí)行的指令,這些指令可以計算位圖將傳送到存儲器中的什么位置選擇傳送許多位圖中的哪一幅,這要基于所述存儲器中上述位置的字排列情況,而這所述許多位圖在它們的字排列上是不同的;并將所述選中的位圖提供給位圖處理器,位圖處理器依據(jù)所述選中的位圖來修改存儲器中的象素值。
19.寫在計算機可讀媒體上的軟件,用于對顯示的象素作修改,它包含可在中央處理單元上執(zhí)行的指令,這些指令可以計算位圖將傳送到存儲器中的什么位置選擇傳送許多位圖中的哪一幅,這要基于所述存儲器中上述位置的字排列情況,而這所述許多位圖在它們的字排列上是不同的;依據(jù)所述選中的位圖來修改存儲器中的象素值。
20.寫在計算機可讀媒體上的軟件,用于對顯示的象素作修改,它包含可在中央處理單元上執(zhí)行的指令,這些指令可以將位圖提供給位圖處理器,位圖處理器依據(jù)該位圖來修改存儲器中的象素值,當所述位圖被編譯,則所述位圖的象素排列要作調(diào)整,以便所述位圖中象素集的字分界可按所述存儲器中對應的象素集的字分界進行排列時。
21.顯示包含象素的圖象的一種裝置,它包含一個可按字訪問的存儲器,它具有與象素相對應的地址,在每個象素地址中包含一個值,該值指出對應的象素是怎樣顯示的,每個字包含許多象素值;和一個處理器,它依據(jù)包含字的位圖來修改上述存儲器中的象素值,所述位圖的象素排列要作調(diào)整,以便所述位圖中象素集的字分界可按存儲器中對應的象素集的字分界進行排列。
22.顯示包含象素的圖象的一種裝置,它包含一個可按字訪問的存儲器,它具有與象素相對應的地址,在每個象素地址中包含一個值,該值指出對應的象素是怎樣顯示的,每個字包含許多象素值;一個處理器,它依據(jù)包含字的位圖來修改上述存儲器中的象素值;一個存儲設備,它保留了上述位圖的許多版本,所述位圖版本在它們的字排列上不同;和一個中央處理單元,它從所述存儲設備接收位圖版本,選擇將哪個所述位圖版本提供給所述處理器,以便所述位圖中象素集的字分界可按所述存儲器中對應的象素集的字分界進行排列。
23.顯示包含象素的圖象的一種裝置,它包含一個可按字訪問的存儲器,它具有與象素相對應的地址,在每個象素地址中包含一個值,該值指出對應的象素是怎樣顯示的,每個字包含許多象素值;一個存儲設備,它含有許多包含字的位圖的版本,所述位圖版本在它們的字排列上不同;一個處理器,它從所述存儲設備接收所述位圖版本,然后選擇一個版本,以便選中位圖內(nèi)象素集的字分界可按存儲器中對應的象素集的字分界進行排列,并依據(jù)選中位圖來修改存儲器中的象素值。
24.一種顯示包含象素的圖象的方法,它包含依據(jù)該象素值顯示象素,每個象素值在存儲器中與每個所述象素對應的地址處,存儲器可按字訪問,每個字包含許多象素;依據(jù)包含字的位圖來修改所述存儲器中的所述象素值,所述位圖中象素集的字分界按所述存儲器中對應的象素集的字分界進行排列。
25.依據(jù)權(quán)利要求24的方法,其中,當所述位圖被編譯,則所述位圖的象素排列要作調(diào)整,以便所述位圖中象素集的字分界可按所述存儲器中對應的象素集的字分界進行排列時。
26.依據(jù)權(quán)利要求24的方法,還包含選擇許多位圖版本中的一個,以便所述選中位圖版本內(nèi)象素集的字分界可按所述存儲器中對應的象素集的字分界進行排列,這些位圖版本在它們的字排列上不同,所述選中位圖版本在所述修改步驟中會被用到。
27.一種依據(jù)權(quán)利要求26的方法,其中所述選擇一個所述位圖版本的工作由中央處理單元完成;而依據(jù)所述位圖修改所述象素值的工作由圖形加速器完成。
28.一種依據(jù)權(quán)利要求26的方法,其中所述選擇一個所述位圖版本和依據(jù)所述位圖修改所述象素值的工作是由一中央處理單元完成的。
29.一種顯示包含象素的圖象的方法,它包含依據(jù)象素值顯示象素,每個象素值在存儲器中與每個所述象素對應的地址;和依據(jù)所述位圖修改所述存儲器中的所述象素值,該位圖包含至少兩個象素集的初始地址信息和象素值,對于所述位圖中每個象素集的值的所述修改包含a)決定所述存儲器中當前象素集的第一個象素的字地址以及它在所述第一個字中的位置;b)決定所述存儲器中當前象素集的最后一個象素的字地址以及它在所述最后一個字中的位置;c)如果所述第一個象素不是所述第一個字中的第一個象素,那么從所述存儲器中讀取所述第一個字的所述第一個象素之前的那些象素,修改所述第一個字,將所述第一個字中的所述第一個象素和任何后繼象素替換為所述位圖中對應字的對應比特位上的值,然后把所述修改后的第一個字寫回存儲器。d)把字從所述位圖依次寫入存儲器中,直到將要寫入的字包含上述的最后一個象素為止;e)如果所述最后一個象素是所述最后一個字的最后一個象素,那么以所述位圖中的對應字來寫入所述最后一個字;f)如果所述最后一個象素不是所述最后一個字的最后一個象素,那么從所述存儲器中讀取所述最后一個字的所述最后一個象素之后的那些象素,修改所述最后一個字,將所述最后一個字中的所述最后一個象素和任何在它前面的象素替換為所述位圖中對應字的對應比特位上的值,然后把所述修改后的最后一個字寫回所述存儲器。
全文摘要
圖形顯示是通過壓縮象素信息,排列經(jīng)32-bit外設接口(PCI)總線(609)傳送的8,16,32bit象素使象素處于顯存(612)中,避免顯存(612)中象素數(shù)據(jù)的移動來實現(xiàn)的。壓縮的完成是通過不傳送那些未被傳送器修改的象素數(shù)據(jù)。確切地說,對略過的未修改象素數(shù)據(jù)字節(jié)的計數(shù)要優(yōu)于對每個已修改的相鄰象素數(shù)據(jù)集的計數(shù)。排列的完成,是通過確定傳送的象素集內(nèi)的字間分界與顯存(612)中對應的大量象素的字間分界相匹配。這種排列能大大加速修改顯存(612)中的象素數(shù)據(jù)。確定這種排列的任務放在初始化傳送器的應用軟件中。
文檔編號G09G5/39GK1220754SQ97194573
公開日1999年6月23日 申請日期1997年2月27日 優(yōu)先權(quán)日1996年3月15日
發(fā)明者A·A·蒙施 申請人:微米技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
图木舒克市| 克拉玛依市| 敦化市| 时尚| 永德县| 田林县| 同德县| 集安市| 信阳市| 乐陵市| 荣昌县| 泰和县| 南丰县| 开原市| 图们市| 岳池县| 天台县| 喜德县| 上栗县| 孟村| 蒙城县| 吴江市| 德钦县| 土默特右旗| 化隆| 修武县| 商城县| 乡宁县| 镇赉县| 达日县| 徐闻县| 漳州市| 南宫市| 白河县| 桂阳县| 宝鸡市| 库尔勒市| 丹阳市| 六枝特区| 和田市| 九龙城区|