小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Linux framebuffer ---double buffer

 寫意人生 2015-09-28

【什么是FrameBuffer】

FrameBuffer直譯就是,幀緩沖。

Frame幀:你所看到的屏幕的圖像,或者在一個窗口中的圖像,就叫一幀。

Buffer緩沖:一段RAM,用來暫存圖像數(shù)據(jù),這些數(shù)據(jù)會被直接寫入到顯示設(shè)備。

幀緩沖就相當于介于 圖形操作 和 圖像輸出中間的一個中間人。將程序?qū)D形數(shù)據(jù)的處理操作,反饋到顯示輸出上。

顯卡(顯存中的數(shù)據(jù)) <-> 幀緩沖(程序?qū)ζ渲械臄?shù)據(jù)進行處理) <-> 顯示器(輸出圖像)

幀緩沖可用于,實現(xiàn)原先視頻卡并不支持的分辨率。

顯卡可能并不支持你當前某個更大分辨率的顯示器,但是可以通過幀緩沖獲取顯卡的顯存中的數(shù)據(jù),處理之后,實現(xiàn)更大的分辨率的圖像,然后將數(shù)據(jù)直接輸出到顯示器上。

【雙顯示器例子】

一個例子,可能就是雙顯示,最近剛剛看到實際某開發(fā)者的系統(tǒng),就是兩個顯示器,鼠標移動超過單個顯示器,到最右邊的時候,就跑到另一個顯示器了。對于常常用多系統(tǒng)或者需要打開很多東西的開發(fā)人員,這個功能很實用。

幀緩沖可以用于 頁面交換page flipping(也常叫做 雙緩沖double buffering),許多游戲都是采用此技術(shù),以實現(xiàn)更流暢的視頻輸出,以便用戶獲得更好的游戲體驗。此技術(shù)也被用于3D圖形加速。

【雙緩沖的主要實現(xiàn)原理】

假如你的顯示器是VGA模式,640×400,也就是虛擬的分辨率是640X800,也就是800線(每一行的數(shù)據(jù),稱為一條線,也就是640X1 的數(shù)據(jù)了)。800線的數(shù)據(jù)存儲于Framebuffer,而實際的顯示內(nèi)容,只是400線,Linux內(nèi)核中的Framebuffer模型中,對應(yīng)有個變量yoffset,就是表示的這個具體的縱坐標,默認是0,所以顯示的內(nèi)容就是,0-399線,由于和實際顯示頁面大小等同,所以此處可以簡稱為第一幀。如果yoffset改變了,比如此例中變?yōu)?00,那就是顯示剩余的部分,400-799線。此處簡稱為第二幀。

在系統(tǒng)顯示第一幀的時候,系統(tǒng)在后臺悄悄地準備第二幀的數(shù)據(jù),所以,等第一幀顯示完成,多數(shù)時候,第二幀的數(shù)據(jù)也準備好了,就可以直接顯示,同時系統(tǒng)又在準備接下來的一幀的數(shù)據(jù),這樣就可以大大提高顯示效率。

【平滑地滾動頁面的實現(xiàn)原理】

同上,在顯示完第一幀數(shù)據(jù)的時候,也就是0-399線的時候,將yoffset設(shè)置為1,就可以顯示1-400線的數(shù)據(jù)了,顯示完成后,再設(shè)置 yoffset為2,就顯示2-401線的數(shù)據(jù),這樣,就可以一點點地,平滑地顯示整個滾動畫面了。其實也就是畫面在垂直方向的滾動。其中yoffset 的增加,可以使用定時器,各個一段時間,比如10us,增加1,系統(tǒng)自動會更新顯示對應(yīng)的內(nèi)容,這樣我們所看到的內(nèi)容就是滾動的畫面了。

此外,Linux中的Framebuffer模型中,提供了一些ioctl功能,給定一些參數(shù),然后系統(tǒng)可以實現(xiàn)對應(yīng)的功能,其中有個參數(shù)就是FBIOPAN_DISPLAY。具體也就是類似如下調(diào)用:

ioctl (framebuffer_handler, FBIOPAN_DISPLAY, &variable_info);
而這個調(diào)用,如果顯示不支持framebuffer的雙緩沖的話,那么其framebuffer的緩沖大小,就是和物理上的顯示器大小等同,那么對應(yīng)的yoffset也就不會像雙緩沖那樣變化了。

也就是說,如果顯卡/顯示屏控制器不支持雙緩沖,那么yoffset就應(yīng)該一直為0,并且在運行時候,也不應(yīng)該改變,也不應(yīng)該去給FBIOPAN_DISPLAY的參數(shù)調(diào)用ioctl。

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多