VSync的起源
顯示屏上一幀畫面的顯示過程,是像素自上而下逐行掃描的過程,如果在上一幀的掃描還沒有結(jié)束的情況下,屏幕又開始掃描下一幀的像素,那么就會出現(xiàn)如下圖中撕裂(tearing)的情況。
這個問題最初是在PC上被重視和解決的,GPU廠商開發(fā)出了一種防止屏幕被撕裂的技術(shù)方案,全稱Vertical Synchronization(中文名垂直同步,簡稱VSync)。基本思路就是在屏幕刷新之前向外提供一個信號,主機(jī)端根據(jù)此信號選擇合適的策略完成畫面的刷新,避免數(shù)據(jù)刷新和屏幕掃描不匹配(撕裂)的情況發(fā)生。所以VSync信號也叫做TE信號或VBlank信號。
下圖展示了開啟與關(guān)閉Vsync的狀態(tài)下,屏幕畫面的不同顯示情況。這里需要先說明一下傳統(tǒng)的顯示架構(gòu),主要有三部分組成,第一部分負(fù)責(zé)渲染,包含CPU,GPU及一些系統(tǒng)模塊;第二部分叫做幀緩沖,實(shí)質(zhì)上是一塊內(nèi)存塊,渲染完的數(shù)據(jù)會被保存在這塊內(nèi)存中;第三部分是屏幕,用來繪制幀緩沖上的數(shù)據(jù)。一般來說幀緩沖會有兩塊,一塊叫做backbuffer,用來寫入渲染數(shù)據(jù),一塊叫做frontbuffer,用來把渲染數(shù)據(jù)送給屏幕。這兩塊buffer的狀態(tài)是不斷變化的,也就是說當(dāng)backbuffer被寫入完數(shù)據(jù)等待顯示時,它就變成了frontbuffer,而當(dāng)frontbuffer的數(shù)據(jù)被顯示完畢之后,它就變成了backbuffer。
VSync off:
VSync on:
具體來說,硬件視角中的VSync其實(shí)就是一個電平信號,Panel上有一個單獨(dú)的引腳,主機(jī)端需要有一個單獨(dú)的GPIO與之相連,獲取其信號變化;軟件視角中的VSync其實(shí)就是一個GPIO的中斷,一般是上升沿的中斷,軟件根據(jù)此中斷完成相應(yīng)的顯示邏輯。
-
Android
+關(guān)注
關(guān)注
12文章
3966瀏覽量
129660 -
PC
+關(guān)注
關(guān)注
9文章
2144瀏覽量
156112 -
信號
+關(guān)注
關(guān)注
11文章
2844瀏覽量
77959
發(fā)布評論請先 登錄
DLPC7541是如何設(shè)定TSTP輸出Vsync訊號?
無鉛焊接的起源:
VSYNC、HSYNC、DOTCLOCK是如何計算的?
CDMA技術(shù)的起源
DIY的歷史起源
雙層索引的起源圖查詢方法

基于圖的服務(wù)起源追蹤機(jī)制

簡述Vsync信號和View繪制流程之間的關(guān)系
Andriod中Vsync的背景

VSync的虛擬化與同步

Andriod中VSync的分發(fā)

VSync offset定義的方法

評論