0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

VSync的起源是什么

麥辣雞腿堡 ? 來源:OPPO內(nèi)核工匠 ? 作者:Phil ? 2023-11-21 16:01 ? 次閱讀

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)系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3940

    瀏覽量

    127649
  • PC
    PC
    +關注

    關注

    9

    文章

    2097

    瀏覽量

    154412
  • 信號
    +關注

    關注

    11

    文章

    2799

    瀏覽量

    76945
收藏 人收藏

    評論

    相關推薦

    RISC--V的起源是什么?

    突然有個想法 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

    VSYNC、HSYNC、DOTCLOCK是如何計算的?

    與 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技術的起源

    CDMA技術的起源 擴頻技術的起源要追溯到二戰(zhàn)時期,這種思想的初衷是防止敵方對己方通訊的干擾。我們知道,由于窄帶通訊采用的帶寬只有幾十kHz,只
    發(fā)表于 06-01 20:25 ?1803次閱讀

    CDMA技術的起源

    CDMA技術的起源 擴頻技術的起源要追溯到二戰(zhàn)時期,這種思想的初衷是防止敵方對己方通訊的干擾。我們知道,由于窄帶通訊采用的帶寬只
    發(fā)表于 06-15 09:40 ?975次閱讀

    DIY的歷史起源

    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次下載
    雙層索引的<b class='flag-5'>起源</b>圖查詢方法

    基于圖的服務起源追蹤機制

    針對服務起源數(shù)據(jù)存儲在關系型數(shù)據(jù)庫和文檔型數(shù)據(jù)庫中無法提供高效的服務追蹤以及采用圖形數(shù)據(jù)庫存儲無法進行快速聚合運算等問題,提出了一種基于圖的服務起源追蹤機制。該機制以圖形數(shù)據(jù)庫存儲服務起源數(shù)據(jù)為
    發(fā)表于 12-17 10:58 ?0次下載
    基于圖的服務<b class='flag-5'>起源</b>追蹤機制

    PCB經(jīng)驗分享之噪聲的起源

    PCB經(jīng)驗分享之噪聲的起源
    發(fā)表于 02-11 15:15 ?0次下載

    簡述Vsync信號和View繪制流程之間的關系

    vsync是有兩個信號的, 一個是vsync-app用于生成當前幀的數(shù)據(jù);(CPU計算和GPU渲染) 一個用于消費數(shù)據(jù)(合成圖像到Display上,vsync-surface) 。
    的頭像 發(fā)表于 02-02 11:18 ?879次閱讀

    Andriod中Vsync的背景

    Android的顯示系統(tǒng)一直使用雙緩沖和VSync來防止屏幕畫面發(fā)生撕裂現(xiàn)象,這也是其他系統(tǒng)的常規(guī)操作。Android的不同之處是將VSync運用到繪制系統(tǒng)中,作為黃油計劃(Project
    的頭像 發(fā)表于 11-21 16:13 ?359次閱讀
    Andriod中<b class='flag-5'>Vsync</b>的背景

    VSync的虛擬化與同步

    VSync的虛擬化 由上面的介紹可以知道,VSync其實起源于顯示屏,但是想想如果每個App和SurfaceFlinger都去從硬件驅(qū)動中直接監(jiān)聽VSync,那未免有點太復雜了,而且耦
    的頭像 發(fā)表于 11-21 16:23 ?737次閱讀
    <b class='flag-5'>VSync</b>的虛擬化與同步

    Andriod中VSync的分發(fā)

    App與SurfaceFlinger是不同的進程,它們之間傳遞VSync的話涉及到進程間通信,而且VSync頻率很高,App很多,所以VSync的分發(fā)效率要很高才行。Linux進程間通信方式總共
    的頭像 發(fā)表于 11-21 16:32 ?902次閱讀
    Andriod中<b class='flag-5'>VSync</b>的分發(fā)

    VSync offset定義的方法

    VSync-offset/duration 虛擬化后的VSync還有一個好處,就是可以對VSync進行一些定制操作,offset就是其中之一。 接下來就是offset的定義,offset 分為兩大類
    的頭像 發(fā)表于 11-21 16:57 ?1161次閱讀
    <b class='flag-5'>VSync</b> offset定義的方法