<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

VSync的起源是什么

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

VSync的起源

顯示屏上一幀畫面的顯示過程,是像素自上而下逐行掃描的過程,如果在上一幀的掃描還沒有結束的情況下,屏幕又開始掃描下一幀的像素,那么就會出現如下圖中撕裂(tearing)的情況。

圖片

這個問題最初是在PC上被重視和解決的,GPU廠商開發出了一種防止屏幕被撕裂的技術方案,全稱Vertical Synchronization(中文名垂直同步,簡稱VSync)?;舅悸肪褪窃谄聊凰⑿轮跋蛲馓峁┮粋€信號,主機端根據此信號選擇合適的策略完成畫面的刷新,避免數據刷新和屏幕掃描不匹配(撕裂)的情況發生。所以VSync信號也叫做TE信號或VBlank信號。

下圖展示了開啟與關閉Vsync的狀態下,屏幕畫面的不同顯示情況。這里需要先說明一下傳統的顯示架構,主要有三部分組成,第一部分負責渲染,包含CPU,GPU及一些系統模塊;第二部分叫做幀緩沖,實質上是一塊內存塊,渲染完的數據會被保存在這塊內存中;第三部分是屏幕,用來繪制幀緩沖上的數據。一般來說幀緩沖會有兩塊,一塊叫做backbuffer,用來寫入渲染數據,一塊叫做frontbuffer,用來把渲染數據送給屏幕。這兩塊buffer的狀態是不斷變化的,也就是說當backbuffer被寫入完數據等待顯示時,它就變成了frontbuffer,而當frontbuffer的數據被顯示完畢之后,它就變成了backbuffer。

VSync off:

圖片

VSync on:

圖片

具體來說,硬件視角中的VSync其實就是一個電平信號,Panel上有一個單獨的引腳,主機端需要有一個單獨的GPIO與之相連,獲取其信號變化;軟件視角中的VSync其實就是一個GPIO的中斷,一般是上升沿的中斷,軟件根據此中斷完成相應的顯示邏輯。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3875

    瀏覽量

    125815
  • PC
    PC
    +關注

    關注

    9

    文章

    1961

    瀏覽量

    152954
  • 信號
    +關注

    關注

    11

    文章

    2660

    瀏覽量

    75537
收藏 人收藏

    評論

    相關推薦

    RISC--V的起源是什么?

    突然有個想法 RISC--V的起源是什么?
    發表于 05-24 08:03

    無鉛焊接的起源

    無鉛焊接的起源:由于環境保護的要求,特別是ISO14000的導入,世界大多數國家開始禁止在焊接材料中使用含鉛的成分。 日本在2004年禁止生產或銷售使用有鉛材料焊接的電子生產設備。歐美在2006年
    發表于 08-11 14:21

    混沌與控制的起源

    一點關于混沌與控制起源的資料與大家分享。
    發表于 03-01 22:06

    如何駕駛所有五個R,G,B,HSYNC和VSYNC?

    你好我打算在sp605中實現sobel邊緣檢測(我有這個開發板)我想去尋找簡單的vga驅動程序我可以將R,G,B和HSYNC連接到J55中可用的四個I / O,但不能連接VGA所需的VSYNC,因為J55只有四個I / O.請建議我如何駕駛所有五個R,G,B,HSYNC和VSYN
    發表于 10-29 08:13

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

    與 LCDIFv2。 這是唯一的變化嗎-VIDEO_MUX->VID_MUX_CTRL.SET = VIDEO_MUX_VID_MUX_CTRL_PARA_LCD_SEL_MASK;VSYNC、HSYNC、DOTCLOCK 是如何計算的?
    發表于 03-14 09:42

    CDMA技術的起源

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

    DIY的歷史起源

    DIY的歷史起源 DIY起源與用法DIY是英文Do It Yourself的縮寫,可以正式譯為自己動手做,但通常不需詳譯人們也大都能理解其意義。DIY原
    發表于 01-21 10:47 ?3284次閱讀

    雙層索引的起源圖查詢方法

    為解決現有的起源圖查詢效率低和資源占用率高的問題,考慮起源信息和數據本身之間的關聯關系以及起源信息內部結構特點,提出了一種基于雙層索引結構的起源圖查詢方法。首先,面向
    發表于 12-07 10:04 ?0次下載
    雙層索引的<b class='flag-5'>起源</b>圖查詢方法

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

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

    PCB經驗分享之噪聲的起源

    PCB經驗分享之噪聲的起源
    發表于 02-11 15:15 ?0次下載

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

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

    Andriod中Vsync的背景

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

    VSync的虛擬化與同步

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

    Andriod中VSync的分發

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

    VSync offset定義的方法

    VSync-offset/duration 虛擬化后的VSync還有一個好處,就是可以對VSync進行一些定制操作,offset就是其中之一。 接下來就是offset的定義,offset 分為兩大類
    的頭像 發表于 11-21 16:57 ?486次閱讀
    <b class='flag-5'>VSync</b> offset定義的方法
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>