午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

具有裁入或裁出功能的區(qū)域式位區(qū)域轉(zhuǎn)移方法與裝置的制作方法

文檔序號:2613656閱讀:279來源:國知局
專利名稱:具有裁入或裁出功能的區(qū)域式位區(qū)域轉(zhuǎn)移方法與裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明是有關(guān)于一種具有裁入(clipping-in)或裁出(clipping-out)的區(qū)域式bitblt(位區(qū)域轉(zhuǎn)移,bit block transfer)方法與裝置。
背景技術(shù)
在二維式影像顯示中,bitblt(位區(qū)域轉(zhuǎn)移,bit block transfer)與裁剪(clipping)屬于必要功能。位區(qū)域轉(zhuǎn)移是指,將存儲器某一地址的數(shù)據(jù)移動至另一地址。如圖1a所示,存儲器110的來源地址src_ba的數(shù)據(jù)要利用bitblt功能而移動至目標(biāo)地址dst_ba。圖1b顯示在執(zhí)行bitblt功能后顯示于屏幕120的影像。一般來說,bitblt功能所用到的參數(shù)包括來源地址,目標(biāo)地址,以及影像寬度與影像高度。
甚至,有時可能要連同bitblt功能一起執(zhí)行裁剪功能。裁剪功能可能是裁入或裁出。參考圖2a,其顯示在來源地址src_ba的來源bitblt區(qū)域(region),在目標(biāo)地址dst_ba的目標(biāo)bitblt區(qū)域,以及在目標(biāo)bitblt區(qū)域內(nèi)的裁剪窗口。圖2b顯示執(zhí)行bitblt功能后的結(jié)果。裁入代表要顯示落于裁剪窗口內(nèi)的目標(biāo)bitblt區(qū)域。裁出代表要顯示裁剪窗口外部的目標(biāo)bitblt區(qū)域。圖2c顯示同時執(zhí)行bitblt功能與裁入功能(下面稱為“裁入bitblt(bitblt with clipping-in)”)所得的影像;圖2d顯示同時執(zhí)行bitblt功能與裁出功能(下面稱為“裁出bitblt(bitblt with clipping-out)”)所得的影像。
在現(xiàn)有技術(shù)中,在裁入bitblt或裁出bitblt中,必需檢查來源bitblt區(qū)域內(nèi)的各點(即各像素)以決定是否要移動與顯示。此現(xiàn)有技術(shù)稱為逐點式裁入bitblt或裁出bitblt。
在裁入bitblt中,必需檢查來源bitblt區(qū)域內(nèi)的各點是否位于目標(biāo)bitblt區(qū)域內(nèi)的裁剪窗口的內(nèi)部。如果是,要bitblt此點,否則,不要bitblt此點。
相似地,在裁出bitblt中,必需檢查來源bitblt區(qū)域內(nèi)的各點是否位于目標(biāo)bitblt區(qū)域內(nèi)的裁剪窗口的外部。如果是,要bitblt此點,否則,不要bitblt此點。
然而,此種逐點式裁入bitblt或裁出bitblt的效能不佳且較復(fù)雜。
因而,本發(fā)明提供一種區(qū)域式裁入bitblt或裁出bitblt的方法與裝置,其復(fù)雜度低且效能較佳,也不會額外增加電路面積。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種具有裁入或裁出功能的區(qū)域性位區(qū)域轉(zhuǎn)移(bitblt)裝置與方法。在一第一來源地址的一來源bitblt區(qū)域內(nèi)的數(shù)據(jù)會被選擇性移動至在一第一目標(biāo)地址的一目標(biāo)bitblt區(qū)域內(nèi)。如果要移動上述來源bitblt區(qū)域內(nèi)的一個或多個區(qū)域時,產(chǎn)生一個或多個bitblt指令。暫時儲存上述bitblt指令于多個緩沖存儲器內(nèi)。將各bitblt指令譯碼成一第二來源地址,一第二目標(biāo)地址,一高度參數(shù)與一寬度參數(shù)。根據(jù)上述第二來源地址,上述第二目標(biāo)地址,上述高度參數(shù)與上述寬度參數(shù)將待移動區(qū)域移動至上述目標(biāo)bitblt區(qū)域。
當(dāng)執(zhí)行裁入bitblt時,落于來源bitblt區(qū)域內(nèi)的各區(qū)域要被移動,如果有的話;而且待移動區(qū)域的數(shù)量可為0或1。當(dāng)執(zhí)行裁出bitblt時,落于來源bitblt區(qū)域外部的各區(qū)域要被移動,如果有的話;而且待移動區(qū)域的數(shù)量可為0、1、2、3或4。
為使本發(fā)明的上述和其它目的、特征和優(yōu)點能更明顯易懂,下文特舉本發(fā)明的較佳實施例,并結(jié)合附圖詳細(xì)說明如下。


圖1a顯示對存儲器數(shù)據(jù)進(jìn)行bitblt功能。
圖1b顯示在執(zhí)行完bitblt功能所得的影像。
圖2a顯示來源bitblt區(qū)域,目標(biāo)bitblt區(qū)域與裁剪窗口。
圖2b顯示在執(zhí)行完bitblt功能所得的影像。
圖2c顯示在執(zhí)行完裁入bitblt功能所得的影像。
圖2d顯示在執(zhí)行完裁出bitblt功能所得的影像。
圖3a至3z,以及圖3a-1至3j-1顯示目標(biāo)bitblt區(qū)域與裁剪窗口間的位置關(guān)系。
圖4顯示在執(zhí)行裁入bitblt過程中,位置碼,待移動區(qū)域數(shù)量與待移動區(qū)域坐標(biāo)。
圖5顯示在執(zhí)行裁出bitblt過程中,位置碼,待移動區(qū)域數(shù)量與待移動區(qū)域坐標(biāo)。
圖6顯示本發(fā)明第一實施例的裁入bitblt與裁出bitblt的電路方塊圖。
圖7顯示第一實施例的處理器如何產(chǎn)生bitblt指令的示意圖。
圖8顯示第一實施例的指令引擎的示意圖。
圖9顯示第一實施例的有限狀態(tài)機(jī)器(FSM)的示意圖。
圖10顯示第二實施例的有限狀態(tài)機(jī)器(FSM)的示意圖。
圖11顯示第二實施例的示意圖。
附圖符號說明110存儲器120屏幕610處理器620圖形單元630指令引擎640區(qū)域性位區(qū)域轉(zhuǎn)移(bitblt)單元801、823觸發(fā)器811~817緩沖存儲器821、831多任務(wù)器825加法器827比較器841指令譯碼單元具體實施方式
為了使本發(fā)明的內(nèi)容更為明了,以下特舉實施例作為本發(fā)明確實能夠據(jù)以實施的范例。
為克服現(xiàn)有技術(shù)的缺點,在此提出具有裁入功能與裁出功能的區(qū)域式bitblt。當(dāng)需要執(zhí)行裁入bitblt時,要移動位于裁剪窗口內(nèi)的來源bitblt區(qū)域內(nèi)的各區(qū)域,如果有的話;而待移動區(qū)域的數(shù)量可能是0或1。當(dāng)需要執(zhí)行裁出bitblt時,要移動位于裁剪窗口外部的來源bitblt區(qū)域內(nèi)的各區(qū)域,如果有的話;而待移動區(qū)域的數(shù)量可能是0、1、2、3或4。
在下面描述中,來源bitblt區(qū)域、目標(biāo)bitblt區(qū)域、裁剪窗口與待移動區(qū)域的形狀是矩形,但本發(fā)明并不受限于此。為方便描述,各矩形區(qū)域由其左上角坐標(biāo)與右下角坐標(biāo)代表。裁剪窗口的左上角坐標(biāo)定為(lt,tp)而其右下角坐標(biāo)定為(rt,bt)。目標(biāo)bitblt區(qū)域的左上角坐標(biāo)定為(x0,y0)而其右下角坐標(biāo)定為(x0+W,y0+H)。W與H代表目標(biāo)bitblt區(qū)域的寬度與高度。
為定義目標(biāo)bitblt區(qū)域與裁剪窗口間的位置關(guān)系,在此定義四個位置碼B1,B0,A1與A0。位置碼的值可為L,M或H。
B1=Llf<x0B1=Mx0≤lf≤x0+WB1=Hx0+W<lfB0=Lrt<x0B0=Mx0≤rt≤x0+WB0=Hx0+W<rtA1=Ltp<y0A1=My0≤tp≤y0+HA1=Hy0+H<tpA0=Lbt<y0A0=My0≤bt≤y0+HA0=Hy0+H<bt請參考圖3a至3z,以及圖3a-1至3j-1,其顯示目標(biāo)bitlt區(qū)域與裁剪窗口間的位置關(guān)系。在圖3a至3z,以及圖3a-1至3j-1中,由實線所框起的區(qū)域是目標(biāo)bitblt區(qū)域,而由虛線所框起的區(qū)域是裁剪窗口。在圖3a至3z,以及圖3a-1至3j-1中,當(dāng)有重迭情況發(fā)生時,目標(biāo)bitblt區(qū)域或裁剪窗口的界線可能不會顯示出,但目標(biāo)bitblt區(qū)域或裁剪窗口的位置仍可由其左上角坐標(biāo)與右下角坐標(biāo)得知。甚至,在圖3a至3z,以及圖3a-1至3j-1中,雖然顯示出目標(biāo)bitblt區(qū)域與裁剪窗口的相對位置,但目標(biāo)bitblt區(qū)域與裁剪窗口的相對大小則不受限于圖示。
從圖3a至3z,以及圖3a-1至3j-1可看出,在裁入bitblt過程中,待移動區(qū)域的數(shù)量是0或1。以圖3a為例,因為目標(biāo)bitblt區(qū)域位于裁剪窗口的外部,所以在裁入bitblt過程中,不需要移動任何區(qū)域。以圖3h為例,在裁入bitblt過程中,有一個區(qū)域需要移動,也就是由坐標(biāo)(x0,y0)與(rt,bt)所標(biāo)出的區(qū)域。
從圖3a至3z,以及圖3a-1至3j-1可看出,在裁出bitblt過程中,待移動區(qū)域的數(shù)量是0、1、2、3或4。以圖3o為例,在裁出bitblt過程中,不需要移動任何區(qū)域。以圖3n為例,在裁出bitblt過程中,有一個區(qū)域需要移動,也就是由坐標(biāo)(rt,y0)與(x0+W,y0+H)所標(biāo)出的區(qū)域。以圖3u為例,在裁出bitblt過程中,有兩個區(qū)域需要移動,也就是由坐標(biāo)(x0,y0)與(x0+W,tp)所標(biāo)出的區(qū)域,以及由坐標(biāo)(x0,bt)與(x0+W,y0+H)所標(biāo)出的區(qū)域。以圖3j為例,在裁出bitblt過程中,有三個區(qū)域需要移動,也就是由坐標(biāo)(x0,y0)與(lf,bt)所標(biāo)出的區(qū)域,由坐標(biāo)(rt,y0)與(x0+W,bt)所標(biāo)出的區(qū)域,以及由坐標(biāo)(x0,bt+1)與(x0+W,y0+H)所標(biāo)出的區(qū)域。以圖3v為例,在裁出bitblt過程中,有四個區(qū)域需要移動,也就是由坐標(biāo)(x0,y0)與(x0+W,pt)所標(biāo)出的區(qū)域,由坐標(biāo)(x0,tp+1)與(lf,bt)所標(biāo)出的區(qū)域,由坐標(biāo)(rt,tp+1)與(x0+W,bt)所標(biāo)出的區(qū)域,以及由坐標(biāo)(x0,bt+1)與(x0+W,y0+H)所標(biāo)出的區(qū)域。
參考圖4以了解顯示在執(zhí)行裁入bitblt過程中,位置碼,待移動區(qū)域數(shù)量與待移動區(qū)域的左上角坐標(biāo)與右下角坐標(biāo)。在圖4中,數(shù)量參數(shù)clip_num代表待移動區(qū)域數(shù)量,其可能是1或0。b_lf與b_tp代表待移動區(qū)域的左上角坐標(biāo);而b_rt與b_bt代表待移動區(qū)域的右下角坐標(biāo)。要注意,當(dāng)沒有待移動區(qū)域時,b_lf、b_tp、b_rt與b_bt的值乃是設(shè)為0。
參考圖5以了解顯示在執(zhí)行裁出bitblt過程中,位置碼,待移動區(qū)域數(shù)量與待移動區(qū)域的左上角坐標(biāo)與右下角坐標(biāo)。在圖4中,數(shù)量參數(shù)clip_num代表待移動區(qū)域數(shù)量,其可能是4、3、2、1或0。b_lf與b_tp代表待移動區(qū)域的左上角坐標(biāo);而b_rt與b_bt代表待移動區(qū)域的右下角坐標(biāo)。要注意,當(dāng)沒有待移動區(qū)域時,b_lf、b_tp、b_rt與b_bt的值乃是設(shè)為0。
下面將描述本發(fā)明第一實施例與第二實施例。
請參考圖6,其顯示本發(fā)明第一實施例的裁入bitblt與裁出bitblt的電路方塊圖。本發(fā)明第一實施例的電路包括處理器610,圖形單元620,指令引擎630與bitblt單元640。在圖6中,處理器610比如是計算機(jī)中的中央處理器(CPU)。處理器610用于產(chǎn)生指令并將指令送至指令引擎630。一旦接收到處理器6l0所送出的指令,指令引擎630對指令進(jìn)行多任務(wù),暫存與譯碼,并將所得到的參數(shù)送至bitblt單元640。bitblt單元640根據(jù)由指令引擎630所送出的參數(shù)進(jìn)行裁入bitlbt或裁出bitlbt。之后,圖形單元620將進(jìn)行裁入bitlbt或裁出bitlbt后所得的影像顯示于屏幕(如個人計算機(jī)的監(jiān)視器)上。
下面將解釋處理器610如何產(chǎn)生指令。從上述描述中可得知,當(dāng)進(jìn)行裁入bitlbt時,待移動區(qū)域的最大數(shù)量是1;而在進(jìn)行裁出bitlbt,待移動區(qū)域的最大數(shù)量是4。因而,在第一實施例中,指令引擎630的深度定為4(也就是其包括4個緩沖存儲器),萬一有四個區(qū)域需要進(jìn)行bitblt時,指令引擎630可儲存4個指令。各指令對應(yīng)于一個待移動區(qū)域。
請參考圖7,其顯示第一實施例的處理器如何產(chǎn)生bitblt指令的示意圖。在圖7中,參數(shù)lf與tp代表裁剪窗口的左上角坐標(biāo);參數(shù)rt與bt代表裁剪窗口的右下角坐標(biāo)。參數(shù)x0與y0代表目標(biāo)bitblt區(qū)域的左上角坐標(biāo);參數(shù)W與H代表目標(biāo)bitblt區(qū)域的寬度與高度。裁剪類型參數(shù)CLIP代表要進(jìn)行裁入或裁出,比如,當(dāng)裁剪類型參數(shù)CLIP為邏輯1時,代表要進(jìn)行裁入;反之則代表要進(jìn)行裁出。參數(shù)dst_ba代表目標(biāo)地址;參數(shù)src_ba代表來源地址。
位置碼B1,B0,A1與A0根據(jù)參數(shù)lp,tp,rt,bt,x0,y0,H與W間的關(guān)系而決定。因為上述描述可得知如何決定位置碼B1,B0,A1與A0,于此不再重述。在決定好位置碼B1,B0,A1與A0后,根據(jù)從圖4的查表(如果進(jìn)行裁入bitlbt時)或圖5的查表(如果進(jìn)行裁出bitlbt時)可得知待移動區(qū)域的左上角坐標(biāo)與右下角坐標(biāo)。在圖7中,b_lf、b_tp、b_rt與b_bt的意義相似于圖4與圖5。因為可能有高達(dá)4個待移動區(qū)域,可使用4組b_lf、b_tp、b_rt與b_bt,也就是b_lf(0)~b_lf(3)、b_tp(0)~b_tp(3)、b_rt(0)~b_rt(3)與b_bt(0)~b_bt(3),來分別代表待移動區(qū)域的坐標(biāo)。
接著,參數(shù)x(i),y(i),W(i)與H(i)可根據(jù)b_lf(i)、b_tp(i)、b_rt(i)與b_bt(i)(i為0,1,2或3)而決定。x(i)與y(i)代表第i個待移動區(qū)域的左上角坐標(biāo);W(i)與H(i)代表第i個待移動區(qū)域的寬度與高度。
x(i)b_lf(i)y(i)=b_tp(i)W(i)=b_rt(i)-b_lf(i)H(i)=b_bt(i)-b_tp(i)(1)此外,第i個待移動區(qū)域的來源地址src_ba(i)仍然為src_ba,而第i個待移動區(qū)域的目標(biāo)地址dst_ba(i)則可用下列公式表示dst_ba(i)=x(i)+y(i)*pitch+dst_ba(2)其中參數(shù)pitch代表來源/目標(biāo)數(shù)據(jù)的寬度,其以來源/目標(biāo)數(shù)據(jù)的每條掃描線的位數(shù)為單元。
因此,可將第i個待移動區(qū)域的參數(shù)x(i),y(i),W(i)與H(i),來源地址src_ba(i),目標(biāo)地址dst_ba(i)與方向參數(shù)dir編碼成第i個bitblt指令,其中方向參數(shù)dir用于避免在裁入bitblt或裁出bitblt時的錯誤覆寫。
此外,從圖4或圖5的查表可看出,參數(shù)clip_num代表待移動區(qū)域的數(shù)量,其值介于0~4之間。如果參數(shù)clip_num的值不為0,則代表需要進(jìn)行裁入bitblt或裁出bitblt,所以致能信號EN將被致能。否則,如果參數(shù)clip_num的值為0,則代表不需要進(jìn)行裁入bitblt或裁出bitblt,所以致能信號EN將被失能。
從上述可知,處理器可將參數(shù)br,rt,tp,lf,x0,y0,H,W,CLPI,dst_ba,src_ba與pitch編碼成多個(最多4個,最少0個)bitblt指令,數(shù)量參數(shù)clip_num與致能信號EN,接著將的送至指令引擎與bitblt單元。
圖8顯示第一實施例的指令引擎的示意圖。如圖8所示,指令引擎630包括觸發(fā)器801,緩沖存儲器811~817,多任務(wù)器821,觸發(fā)器823,加法器825,比較器827,多任務(wù)器831以及指令譯碼單元841。指令引擎630接收由處理器610所送出的致能信號EN、bitblt指令COM與參數(shù)clip_num。
觸發(fā)器801接收致能信號EN,以當(dāng)成控制信號cmode_ctrl。此控制信號cmode_ctrl用于控制指令引擎630是否需要運作。
緩沖存儲器811~817接收由處理器610所送出bitblt指令COM。各bitblt指令COM儲存于緩沖存儲器811~81之一。緩沖存儲器811~817的規(guī)格已如上所述。
多任務(wù)器821由bitblt單元640所回傳的信號bitblt_done所控制。一旦bitblt單元640完成一個bitblt指令,其會回傳一個有效的信號bitblt_done。當(dāng)出現(xiàn)有效的信號bitblt_done時,多任務(wù)器821輸出參數(shù)cmode_pc-1;反之,多任務(wù)器821則輸出參數(shù)clip_num。多任務(wù)器821的輸出信號被設(shè)成參數(shù)cmode_pc。
觸發(fā)器823用于暫存多任務(wù)器821的輸出參數(shù)cmode_pc,并將之輸出至加法器825,比較器827與多任務(wù)器831。
加法器825將參數(shù)cmode_pc減1,并將所得的值當(dāng)成參數(shù)cmode_pc-1回傳至多任務(wù)器821。利用加法器825的操作,當(dāng)有數(shù)個(多于1個)bitblt指令且bitblt單元完成某一個指令時,多任務(wù)器831會選擇存于另一個緩沖存儲器內(nèi)的bitblt指令。亦即,將數(shù)量參數(shù)cmode_pc減去1,以選擇另一緩沖存儲器。
比較器827比較參數(shù)cmode_pc與一參考值(比如0)。如果參數(shù)cmode_pc的值不為0,則輸出一有效的致能信號bitblt_enable以致能該bitblt單元640。當(dāng)參數(shù)cmode_pc的值不為0,代表并非所有的bitblt指令都已被執(zhí)行。如果參數(shù)cmode_pc的值為0,則輸出一無效的致能信號bitblt_enable以失能該bitblt單元640。當(dāng)參數(shù)cmode_pc的值為0,代表所有的bitblt指令都已被執(zhí)行。
多任務(wù)器831根據(jù)參數(shù)cmode_pc而選擇存于緩沖存儲器811~817之一的bitblt指令。比如,當(dāng)參數(shù)cmode_pc為4時,可能可以選擇緩沖存儲器817;其余可依此類推。
指令譯碼單元841將多任務(wù)器831所傳來的bitblt指令譯碼成參數(shù)dir,dst_ba,src_ba,height與weight,并將之送至bitblt單元640。
依上述看來,根據(jù)圖8的架構(gòu),指令引擎630將處理器610所送出的致能信號EN,bitblt指令COM與數(shù)量參數(shù)clip_num處理成bitblt致能信號bitblt_enable以及參數(shù)dir,dst_ba,src_ba,height與weight,并將之送至bitblt單元640。因此,當(dāng)bitblt致能信號bitblt_enable為有效時,bitblt單元640可執(zhí)行bitblt。
圖9顯示第一實施例的有限狀態(tài)機(jī)器(FSM)的示意圖。觸發(fā)指令引擎,并檢查待移動區(qū)域的數(shù)量(也就是參數(shù)clip_num)是否為0。如果是,指令引擎將回至待機(jī)狀態(tài);否則,指令引擎會主動擷取由處理器所準(zhǔn)備好的第一bitblt指令。接著,致能bitblt單元以執(zhí)行此第一bitblt指令。在bitblt單元執(zhí)行完此第一bitblt指令后,bitblt單元會回傳一結(jié)果(圖8的信號bitblt_done)至指令引擎。在執(zhí)行完此第一bitblt指令后,如果更新后參數(shù)comde_pc不為0,這代表還有一個或多個bitblt指令要被執(zhí)行,指令引擎會主動擷取第二bitblt指令。bitblt單元會再度被致能以執(zhí)行第二bitblt指令。直到指令引擎主動擷取完所有bitblt指令,以及bitblt單元執(zhí)行完所有bitblt指令后,即已完成裁入bitblt或裁出bitblt功能。在圖9中,虛線代表軟件組件與硬件組件間的界線,也就是,雖然是由實體處理器來準(zhǔn)備指令,處理器并不需要任何準(zhǔn)備指令的專用電路,因為處理器的內(nèi)部功能或新增功能即已足夠。然而,在本發(fā)明第一實施例中,指令引擎屬于專用電路。
比如,在圖3v中,在裁出bitblt過程中,有四個待移動區(qū)域,也就是由坐標(biāo)(x0,y0)與(x0+W,pt)所標(biāo)出的區(qū)域,由坐標(biāo)(x0,tp+1)與(lf,bt)所標(biāo)出的區(qū)域,由坐標(biāo)(rt,tp+1)與(x0+W,bt)所標(biāo)出的區(qū)域,以及由坐標(biāo)(x0,bt+1)與(x0+W,y0+H)所標(biāo)出的區(qū)域。所以,執(zhí)行第一bitblt指令以移動由坐標(biāo)(x0,y0)與(x0+W,pt)所標(biāo)出的區(qū)域。執(zhí)行第二bitblt指令以移動由坐標(biāo)(x0,tp+1)與(lf,bt)所標(biāo)出的區(qū)域。執(zhí)行第三bitblt指令以移動由坐標(biāo)(rt,tp+1)與(x0+W,bt)所標(biāo)出的區(qū)域。執(zhí)行第四bitblt指令以移動由坐標(biāo)(x0,bt+1)與(x0+W,y0+H)所標(biāo)出的區(qū)域。因此,依序執(zhí)行這四個bitblt指令可完成裁出bitblt功能。
本發(fā)明第二實施例的架構(gòu)示意圖相同或相似于第一實施例的圖6。差異處在于,第二實施例的指令引擎以軟件方式實施。
圖10顯示第二實施例的有限狀態(tài)機(jī)器(FSM)的示意圖。首先,觸發(fā)偽指令引擎,并檢查待移動區(qū)域的量(亦即參數(shù)clip_num)的值是否為0。如果為0,偽指令引擎會回復(fù)至待機(jī)狀態(tài);否則,處理器會主動將第一bitblt指令送至偽指令引擎內(nèi)的某一緩沖存儲器,但bitblt指令仍是由處理器所準(zhǔn)備。接著,致能bitblt單元以執(zhí)行第一bitblt指令。在bitblt單元完成第一bitblt指令的執(zhí)行時,bitblt單元會回傳結(jié)果至指令引擎。接著,處理器會主動將第二bitblt指令送至偽指令引擎內(nèi)的另一緩沖存儲器。再次致能bitblt單元以執(zhí)行第二bitblt指令。直到指令引擎接收所有bitblt指令且bitblt單元已執(zhí)行所有bitblt指令后,即已完成裁入bitblt或裁出bitblt功能。
比如,在圖3v中,在裁出bitblt過程中,有四個待移動區(qū)域,也就是由坐標(biāo)(x0,y0)與(x0+W,pt)所標(biāo)出的區(qū)域,由坐標(biāo)(x0,tp+1)與(lf,bt)所標(biāo)出的區(qū)域,由坐標(biāo)(rt,tp+1)與(x0+W,bt)所標(biāo)出的區(qū)域,以及由坐標(biāo)(x0,bt+1)與(x0+W,y0+H)所標(biāo)出的區(qū)域。所以,第一bitblt指令用于移動由坐標(biāo)(x0,y0)與(x0+W,pt)所標(biāo)出的區(qū)域。第二bitblt指令用于移動由坐標(biāo)(x0,tp+1)與(lf,bt)所標(biāo)出的區(qū)域。第三bitblt指令用于移動由坐標(biāo)(rt,tp+1)與(x0+W,bt)所標(biāo)出的區(qū)域。第四bitblt指令用于移動由坐標(biāo)(x0,bt+1)與(x0+W,y0+H)所標(biāo)出的區(qū)域。因此,可完成裁出bitblt功能。
從圖10的下半部可看出,在第二實施例中,指令準(zhǔn)備與偽指令引擎是由處理器所執(zhí)行,也就是,指令準(zhǔn)備與偽指令引擎是由處理器的原有或新增功能所執(zhí)行。然而,bitblt單元是由硬件實現(xiàn)。在圖10中,虛線代表軟件組件與硬件組件間的界線。
圖11顯示第二實施例的示意圖。bitblt指令由處理器所準(zhǔn)備。接著,處理器會輪詢bitblt單元。如果bitblt單元有響應(yīng)的話,則處理器會將所準(zhǔn)備好的指令送至偽指令引擎,并告知bitblt單元要接收此bitblt指令?;蛘?,藉由主動送出中斷信號至處理器,bitblt單元可要求處理器將所準(zhǔn)備好的指令送至偽指令引擎。
接著,讀取參數(shù)clip_num的值。如果參數(shù)clip_num的值為4,bitblt單元會接收某一緩沖存儲器(比如,第四緩沖存儲器)所存的第四指令。如果參數(shù)clip_num的值為3,bitblt單元會接收第三緩沖存儲器所存的第三指令。如果參數(shù)clip_num的值為2,bitblt單元會接收第二緩沖存儲器所存的第二指令。如果參數(shù)clip_num的值為1,bitblt單元會接收第一緩沖存儲器所存的第一指令。
甚至,偽指令引擎(或處理器)送出參數(shù)clip_num與致能信號EN至bitblt單元。因此,bitblt單元可完成bitblt功能。
本發(fā)明第一與第二實施例中的處理器亦可命名為指令準(zhǔn)備單元。
依此,通過本發(fā)明第一與第二實施例的軟件與硬件架構(gòu),可實現(xiàn)區(qū)域式裁入bitblt與裁出bitblt功能。因此,可降低現(xiàn)有技術(shù)的逐點式檢查法的缺點。
現(xiàn)有逐點式檢查法與本發(fā)明第一與第二實施例的區(qū)域式裁入bitblt與裁出bitblt功能間的比較如下

從上表與實施例描述可得知,現(xiàn)有的逐點式裁入bitblt或裁出bitblt功能只能以硬件方式實現(xiàn),但本發(fā)明實施例可用硬件或軟件實現(xiàn)之。第一實施例的性能略差于第二實施例的原因在于,當(dāng)處理器輪詢bitblt單元或bitblt單元中斷處理器時,可能會浪費某些時鐘周期。
雖然本發(fā)明已以較佳實施例披露如上,然其并非用以限定本發(fā)明,本領(lǐng)域的技術(shù)人員在不脫離本發(fā)明的精神和范圍的前提下可作若干的更動與潤飾,因此本發(fā)明的保護(hù)范圍以本發(fā)明的權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種具有裁入或裁出功能的區(qū)域性位區(qū)域轉(zhuǎn)移裝置,在一第一來源地址的一來源位區(qū)域轉(zhuǎn)移區(qū)域內(nèi)的數(shù)據(jù)被選擇性移動至在一第一目標(biāo)地址的一目標(biāo)位區(qū)域轉(zhuǎn)移區(qū)域內(nèi),上述裝置包括一指令準(zhǔn)備單元,如果在上述來源位區(qū)域轉(zhuǎn)移區(qū)域內(nèi)的一個或多個區(qū)域要被移動時,上述指令指備單元產(chǎn)生一個或多個位區(qū)域轉(zhuǎn)移指令;一指令引擎,包括多個緩沖存儲器以儲存上述位區(qū)域轉(zhuǎn)移指令,將各位區(qū)域轉(zhuǎn)移指令譯碼成一第二來源地址,一第二目標(biāo)地址,一高度參數(shù)與一寬度參數(shù);以及一位區(qū)域轉(zhuǎn)移單元,根據(jù)上述第二來源地址,上述第二目標(biāo)地址,上述高度參數(shù)與上述寬度參數(shù)將待移動區(qū)域移動至上述目標(biāo)位區(qū)域轉(zhuǎn)移區(qū)域。
2.如權(quán)利要求1所述的裝置,其中上述指令準(zhǔn)備單元根據(jù)一裁剪窗口與上述目標(biāo)位區(qū)域轉(zhuǎn)移區(qū)域間的一位置關(guān)系而決定第一至第四位置碼。
3.如權(quán)利要求2所述的裝置,其中上述指令準(zhǔn)備單元根據(jù)上述第一至第四位置碼及一裁剪類型,決定一第一數(shù)量參數(shù)與上述待移動區(qū)域的坐標(biāo)參數(shù),上述第一數(shù)量參數(shù)代表上述待移動區(qū)域的數(shù)量。
4.如權(quán)利要求3所述的裝置,其中如果上述來源位區(qū)域轉(zhuǎn)移區(qū)域的至少一區(qū)域需要位區(qū)域轉(zhuǎn)移時,上述指令準(zhǔn)備單元產(chǎn)生一指令致能信號。
5.如權(quán)利要求4所述的裝置,其中上述指令引擎還包括一第一觸發(fā)器,暫存上述指令致能信號。
6.如權(quán)利要求4所述的裝置,其中上述指令引擎還包括一第一多任務(wù)器,由上述位區(qū)域轉(zhuǎn)移單元所回傳的一結(jié)果信號所控制,以選擇上述第一數(shù)量參數(shù)或一第二數(shù)量參數(shù)為一第三數(shù)量參數(shù);一第二觸發(fā)器,暫存與輸出上述第三數(shù)量參數(shù);一加法器,減少上述第三數(shù)量參數(shù)以產(chǎn)生上述第二數(shù)量參數(shù),并將上述第二數(shù)量參數(shù)回饋至上述第一多任務(wù)器;以及一比較器,比較上述第三數(shù)量參數(shù)與一參考值以決定是否上述來源位區(qū)域轉(zhuǎn)移區(qū)域的至少一區(qū)域需要位區(qū)域轉(zhuǎn)移。
7.如權(quán)利要求6所述的裝置,其中上述指令引擎還包括一第二多任務(wù)器,耦合至上述緩沖存儲器,根據(jù)上述第三數(shù)量參數(shù)以選擇上述緩沖存儲器的一所存的上述位區(qū)域轉(zhuǎn)移指令之一。
8.如權(quán)利要求7所述的裝置,其中上述指令引擎還包括一指令譯碼單元,接收并譯碼由上述第二多任務(wù)器所選擇的上述位區(qū)域轉(zhuǎn)移指令,并將一譯碼結(jié)果送至上述位區(qū)域轉(zhuǎn)移單元。
9.如權(quán)利要求1所述的裝置,其中上述緩沖存儲器的數(shù)量等于位區(qū)域轉(zhuǎn)移指令的數(shù)量上限。
10.一種具有裁入或裁出功能的區(qū)域性位區(qū)域轉(zhuǎn)移方法,在一第一來源地址的一來源位區(qū)域轉(zhuǎn)移區(qū)域內(nèi)的數(shù)據(jù)會選擇性移動至在一第一目標(biāo)地址的一目標(biāo)位區(qū)域轉(zhuǎn)移區(qū)域內(nèi),上述方法包括如果在上述來源位區(qū)域轉(zhuǎn)移區(qū)域內(nèi)的一個或多個區(qū)域要被移動時,產(chǎn)生一個或多個位區(qū)域轉(zhuǎn)移指令;儲存上述位區(qū)域轉(zhuǎn)移指令;將各位區(qū)域轉(zhuǎn)移指令譯碼成一第二來源地址,一第二目標(biāo)地址,一高度參數(shù)與一寬度參數(shù);以及根據(jù)上述第二來源地址,上述第二目標(biāo)地址,上述高度參數(shù)與上述寬度參數(shù)將待移動區(qū)域移動至上述目標(biāo)位區(qū)域轉(zhuǎn)移區(qū)域。
11.如權(quán)利要求10所述的方法,其中產(chǎn)生上述位區(qū)域轉(zhuǎn)移指令的上述步驟還包括根據(jù)一裁剪窗口與上述目標(biāo)位區(qū)域轉(zhuǎn)移區(qū)域間的一位置關(guān)系而決定第一至第四位置碼;根據(jù)上述第一至第四位置碼及一裁剪類型,決定一數(shù)量參數(shù)與上述待移動區(qū)域的坐標(biāo)參數(shù),上述數(shù)量參數(shù)代表上述待移動區(qū)域的數(shù)量;以及位區(qū)域轉(zhuǎn)移指令。
12.如權(quán)利要求11所述的方法,其中如果上述來源位區(qū)域轉(zhuǎn)移區(qū)域的至少一區(qū)域需要位區(qū)域轉(zhuǎn)移時,致能上述位區(qū)域轉(zhuǎn)移步驟。
13.如權(quán)利要求10所述的方法,其中上述解碼步驟還包括(a)將上述位區(qū)域轉(zhuǎn)移指令加載至復(fù)數(shù)緩沖存儲器中;(b)依序選擇一位區(qū)域轉(zhuǎn)移指令;以及(c)從上述位區(qū)域轉(zhuǎn)移指令取出上述第二來源地址,上述第二目標(biāo)地址,上述高度參數(shù)與上述寬度參數(shù)。
14.如權(quán)利要求13所述的方法,其中上述緩沖存儲器的數(shù)量足夠儲存上述位區(qū)域轉(zhuǎn)移指令的數(shù)量上限。
全文摘要
本發(fā)明披露一種具有裁入或裁出功能的區(qū)域性位區(qū)域轉(zhuǎn)移(bitblt)裝置與方法。在一第一來源地址的一來源bitblt區(qū)域內(nèi)的數(shù)據(jù)會被選擇性移動至在一第一目標(biāo)地址的一目標(biāo)bitblt區(qū)域內(nèi)。如果要移動上述來源bitblt區(qū)域內(nèi)的一個或多個區(qū)域時,產(chǎn)生一個或多個bitblt指令。暫時儲存上述bitblt指令于多個緩沖存儲器內(nèi)。將各bitblt指令譯碼成一第二來源地址,一第二目標(biāo)地址,一高度參數(shù)與一寬度參數(shù)。根據(jù)上述第二來源地址,上述第二目標(biāo)地址,上述高度參數(shù)與上述寬度參數(shù)將待移動區(qū)域移動至上述目標(biāo)bitblt區(qū)域。
文檔編號G09G5/393GK101086836SQ20061015439
公開日2007年12月12日 申請日期2006年9月25日 優(yōu)先權(quán)日2006年6月6日
發(fā)明者蔡周良, 蔡偉鵬, 王宗仁 申請人:奇景光電股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1