VSync的起源
顯示屏上一幀畫面的顯示過程,是像素自上而下逐行掃描的過程,如果在上一幀的掃描還沒有結束的情況下,屏幕又開始掃描下一幀的像素,那么就會出現(xiàn)如下圖中撕裂(tearing)的情況。
這個問題最初是在PC上被重視和解決的,GPU廠商開發(fā)出了一種防止屏幕被撕裂的技術方案,全稱Vertical Synchronization(中文名垂直同步,簡稱VSync)。基本思路就是在屏幕刷新之前向外提供一個信號,主機端根據(jù)此信號選擇合適的策略完成畫面的刷新,避免數(shù)據(jù)刷新和屏幕掃描不匹配(撕裂)的情況發(fā)生。所以VSync信號也叫做TE信號或VBlank信號。
下圖展示了開啟與關閉Vsync的狀態(tài)下,屏幕畫面的不同顯示情況。這里需要先說明一下傳統(tǒng)的顯示架構,主要有三部分組成,第一部分負責渲染,包含CPU,GPU及一些系統(tǒng)模塊;第二部分叫做幀緩沖,實質(zhì)上是一塊內(nèi)存塊,渲染完的數(shù)據(jù)會被保存在這塊內(nèi)存中;第三部分是屏幕,用來繪制幀緩沖上的數(shù)據(jù)。一般來說幀緩沖會有兩塊,一塊叫做backbuffer,用來寫入渲染數(shù)據(jù),一塊叫做frontbuffer,用來把渲染數(shù)據(jù)送給屏幕。這兩塊buffer的狀態(tài)是不斷變化的,也就是說當backbuffer被寫入完數(shù)據(jù)等待顯示時,它就變成了frontbuffer,而當frontbuffer的數(shù)據(jù)被顯示完畢之后,它就變成了backbuffer。
VSync off:
VSync on:
具體來說,硬件視角中的VSync其實就是一個電平信號,Panel上有一個單獨的引腳,主機端需要有一個單獨的GPIO與之相連,獲取其信號變化;軟件視角中的VSync其實就是一個GPIO的中斷,一般是上升沿的中斷,軟件根據(jù)此中斷完成相應的顯示邏輯。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
相關推薦
突然有個想法 RISC--V的起源是什么?
發(fā)表于 05-24 08:03
無鉛焊接的起源:由于環(huán)境保護的要求,特別是ISO14000的導入,世界大多數(shù)國家開始禁止在焊接材料中使用含鉛的成分。 日本在2004年禁止生產(chǎn)或銷售使用有鉛材料焊接的電子生產(chǎn)設備。歐美在2006年
發(fā)表于 08-11 14:21
一點關于混沌與控制起源的資料與大家分享。
發(fā)表于 03-01 22:06
與 LCDIFv2。 這是唯一的變化嗎-VIDEO_MUX->VID_MUX_CTRL.SET = VIDEO_MUX_VID_MUX_CTRL_PARA_LCD_SEL_MASK;VSYNC、HSYNC、DOTCLOCK 是如何計算的?
發(fā)表于 03-14 09:42
CDMA技術的起源
擴頻技術的起源要追溯到二戰(zhàn)時期,這種思想的初衷是防止敵方對己方通訊的干擾。我們知道,由于窄帶通訊采用的帶寬只有幾十kHz,只
發(fā)表于 06-01 20:25
?1803次閱讀
CDMA技術的起源
擴頻技術的起源要追溯到二戰(zhàn)時期,這種思想的初衷是防止敵方對己方通訊的干擾。我們知道,由于窄帶通訊采用的帶寬只
發(fā)表于 06-15 09:40
?975次閱讀
DIY的歷史起源
DIY起源與用法DIY是英文Do It Yourself的縮寫,可以正式譯為自己動手做,但通常不需詳譯人們也大都能理解其意義。DIY原
發(fā)表于 01-21 10:47
?3475次閱讀
為解決現(xiàn)有的起源圖查詢效率低和資源占用率高的問題,考慮起源信息和數(shù)據(jù)本身之間的關聯(lián)關系以及起源信息內(nèi)部結構特點,提出了一種基于雙層索引結構的起源圖查詢方法。首先,面向
發(fā)表于 12-07 10:04
?0次下載
針對服務起源數(shù)據(jù)存儲在關系型數(shù)據(jù)庫和文檔型數(shù)據(jù)庫中無法提供高效的服務追蹤以及采用圖形數(shù)據(jù)庫存儲無法進行快速聚合運算等問題,提出了一種基于圖的服務起源追蹤機制。該機制以圖形數(shù)據(jù)庫存儲服務起源數(shù)據(jù)為
發(fā)表于 12-17 10:58
?0次下載
PCB經(jīng)驗分享之噪聲的起源
發(fā)表于 02-11 15:15
?0次下載
vsync是有兩個信號的,
一個是vsync-app用于生成當前幀的數(shù)據(jù);(CPU計算和GPU渲染)
一個用于消費數(shù)據(jù)(合成圖像到Display上,vsync-surface) 。
發(fā)表于 02-02 11:18
?879次閱讀
Android的顯示系統(tǒng)一直使用雙緩沖和VSync來防止屏幕畫面發(fā)生撕裂現(xiàn)象,這也是其他系統(tǒng)的常規(guī)操作。Android的不同之處是將VSync運用到繪制系統(tǒng)中,作為黃油計劃(Project
發(fā)表于 11-21 16:13
?359次閱讀
VSync的虛擬化 由上面的介紹可以知道,VSync其實起源于顯示屏,但是想想如果每個App和SurfaceFlinger都去從硬件驅(qū)動中直接監(jiān)聽VSync,那未免有點太復雜了,而且耦
發(fā)表于 11-21 16:23
?737次閱讀
App與SurfaceFlinger是不同的進程,它們之間傳遞VSync的話涉及到進程間通信,而且VSync頻率很高,App很多,所以VSync的分發(fā)效率要很高才行。Linux進程間通信方式總共
發(fā)表于 11-21 16:32
?902次閱讀
VSync-offset/duration 虛擬化后的VSync還有一個好處,就是可以對VSync進行一些定制操作,offset就是其中之一。 接下來就是offset的定義,offset 分為兩大類
發(fā)表于 11-21 16:57
?1161次閱讀
評論