女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

Andriod中Vsync的背景

麥辣雞腿堡 ? 來(lái)源:OPPO內(nèi)核工匠 ? 作者:Phil ? 2023-11-21 16:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Android的顯示系統(tǒng)一直使用雙緩沖和VSync來(lái)防止屏幕畫(huà)面發(fā)生撕裂現(xiàn)象,這也是其他系統(tǒng)的常規(guī)操作。Android的不同之處是將VSync運(yùn)用到繪制系統(tǒng)中,作為黃油計(jì)劃(Project Butter)的一部分,用以提升系統(tǒng)的流暢度。

VSync:

Android中VSync的作用是統(tǒng)一系統(tǒng)繪制與顯示節(jié)奏(Apps和SurfaceFlinger),大家各司其職,確保在VSync來(lái)的時(shí)候干活,這樣系統(tǒng)理論上就絲滑了。

如下圖,在沒(méi)有VSync的情況下,系統(tǒng)渲染的節(jié)奏與屏幕刷新的節(jié)奏不一致,如果某一幀系統(tǒng)渲染的比較晚,那么就會(huì)出現(xiàn)屏幕兩次刷新都顯示同一份內(nèi)容的情況,也就是Jank(掉幀)。

圖片

有了VSync的話,系統(tǒng)會(huì)在VSync到來(lái)時(shí)進(jìn)行繪制,與屏幕的刷新節(jié)奏保持一致,這樣就大大降低了jank的概率。

圖片

那么問(wèn)題來(lái)了,怎么讓Apps根據(jù)VSync的節(jié)奏來(lái)進(jìn)行繪制呢?App依賴系統(tǒng)的繪制系統(tǒng),所以必須讓繪制系統(tǒng)聽(tīng)命令才行,這就是Choreographer出現(xiàn)的原因。

Choreographer:

Choreographer(編舞者)的作用在源碼的注釋中已經(jīng)寫得很明白,是用來(lái)接收定時(shí)脈沖信號(hào)來(lái)控制繪制的模塊。也就是說(shuō),有了Choreographer,apps就能夠根據(jù)Vsync信號(hào)來(lái)進(jìn)行周期性的繪制工作。

圖片

以上兩者配合就基本上完成了Android中VSync的改造,但是還有一個(gè)造成Jank的原因也是不容忽視的,這就是雙buffer機(jī)制帶來(lái)的jank風(fēng)險(xiǎn)。

Triple Buffer:

如下圖,理想情況下的雙buffer是沒(méi)有問(wèn)題的,這個(gè)理想狀態(tài)是指繪制工作(可以粗略地理解為一幀CPUGPU執(zhí)行的總耗時(shí))在一個(gè)VSync周期內(nèi)完成,這樣的情況下,不會(huì)發(fā)生jank。

圖片

遺憾的是,事情的發(fā)展不會(huì)總是按我們的預(yù)期來(lái)進(jìn)行的,如果繪制時(shí)長(zhǎng)超過(guò)了一個(gè)VSync周期,那么就必然會(huì)發(fā)生jank。如下圖所示,有兩幀的繪制超過(guò)了一個(gè)VSync周期,那么就會(huì)發(fā)生兩次Jank。

圖片

三Buffer機(jī)制實(shí)際上就是在上述backbuffer和frontbuffer的基礎(chǔ)上,再添加一塊buffer進(jìn)行輪轉(zhuǎn)。在這樣的情況下,同樣假設(shè)有兩幀的繪制就是大于一個(gè)VSync周期,那么只會(huì)造成一次Jank。

圖片

三buffer機(jī)制雖然能降低jank的概率,但是也會(huì)帶來(lái)Touch響應(yīng)慢和內(nèi)存消耗高的負(fù)面影響,只不過(guò)相對(duì)于它帶來(lái)的效果,這些負(fù)面影響被忽略了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3973

    瀏覽量

    130221
  • 系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    1032

    瀏覽量

    21816
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DLPC7541是如何設(shè)定TSTP輸出Vsync訊號(hào)?

    目前想確認(rèn)Vsync、CW、PW追轉(zhuǎn)狀態(tài), DDP442X可以從DLP Composer 將TSTP設(shè)定Vsync輸出進(jìn)行訊號(hào)模擬, 但我查看DLPC7541 Composer,無(wú)法知道可以從哪裡
    發(fā)表于 02-18 08:15

    【Raspberry Pi 3申請(qǐng)】andriod系統(tǒng)開(kāi)發(fā)APP

    申請(qǐng)理由:公司項(xiàng)目前期測(cè)試項(xiàng)目描述:主要功能能夠?qū)崿F(xiàn)andriod系統(tǒng),在這個(gè)基礎(chǔ)之上開(kāi)發(fā)一些小的APP功能,通過(guò)有線網(wǎng)絡(luò)或者無(wú)線網(wǎng)絡(luò)與其他設(shè)備或者網(wǎng)頁(yè)進(jìn)行通信等等。
    發(fā)表于 04-05 13:50

    智訊系列培訓(xùn)課程:Andriod事件、數(shù)據(jù)、網(wǎng)絡(luò)

    現(xiàn)將智訊專業(yè)資料《Andriod事件、數(shù)據(jù)、網(wǎng)絡(luò)》分享給大家,僅供參考交流! 智訊(武漢)科技有限公司在移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、嵌入式等技術(shù)領(lǐng)域有近十年的積累,專業(yè)為高校電子類、物聯(lián)網(wǎng)工程、嵌入式、軟件工程等高校院系提供實(shí)驗(yàn)室設(shè)
    發(fā)表于 08-18 10:03

    如何駕駛所有五個(gè)R,G,B,HSYNC和VSYNC

    你好我打算在sp605實(shí)現(xiàn)sobel邊緣檢測(cè)(我有這個(gè)開(kāi)發(fā)板)我想去尋找簡(jiǎn)單的vga驅(qū)動(dòng)程序我可以將R,G,B和HSYNC連接到J55可用的四個(gè)I / O,但不能連接VGA所需的VSYNC,因?yàn)镴55只有四個(gè)I / O.請(qǐng)建
    發(fā)表于 10-29 08:13

    logcat如何查看Andriod log系統(tǒng)日志?

    logcat會(huì)輸出系統(tǒng)哪些信息呢?如何學(xué)習(xí)logcat命令?logcat如何查看Andriod log系統(tǒng)日志?如何查看Andriod log系統(tǒng)日志?
    發(fā)表于 03-03 06:15

    VSYNC、HSYNC、DOTCLOCK是如何計(jì)算的?

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

    三星手機(jī)andriod系統(tǒng)軟件

    三星手機(jī)andriod系統(tǒng)軟件
    發(fā)表于 01-14 14:58 ?18次下載

    背景/蒙太奇,背景/蒙太奇是什么意思

    背景/蒙太奇,背景/蒙太奇是什么意思 背景 畫(huà)面主體背后的景物。背景包括后景、遠(yuǎn)景
    發(fā)表于 04-12 10:26 ?2176次閱讀

    Dragon?Board?410c板基于Andriod?5.1,

    Dragon?Board?410c板基于Andriod?5.1,Linux,Windows10三種操作系統(tǒng)開(kāi)發(fā)特點(diǎn)介紹,我上傳了很多相關(guān)資料,感興趣的可以去我上傳的資料里看看哈。
    發(fā)表于 06-30 15:03 ?4次下載

    Andriod Phone通過(guò)藍(lán)牙控制的機(jī)器人汽車

    電子發(fā)燒友網(wǎng)站提供《由Andriod Phone通過(guò)藍(lán)牙控制的機(jī)器人汽車.zip》資料免費(fèi)下載
    發(fā)表于 11-11 14:48 ?0次下載
    由<b class='flag-5'>Andriod</b> Phone通過(guò)藍(lán)牙控制的機(jī)器人汽車

    簡(jiǎn)述Vsync信號(hào)和View繪制流程之間的關(guān)系

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

    VSync的起源是什么

    VSync的起源 顯示屏上一幀畫(huà)面的顯示過(guò)程,是像素自上而下逐行掃描的過(guò)程,如果在上一幀的掃描還沒(méi)有結(jié)束的情況下,屏幕又開(kāi)始掃描下一幀的像素,那么就會(huì)出現(xiàn)如下圖中撕裂(tearing)的情況。 這個(gè)
    的頭像 發(fā)表于 11-21 16:01 ?2013次閱讀
    <b class='flag-5'>VSync</b>的起源是什么

    VSync的虛擬化與同步

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

    AndriodVSync的分發(fā)

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

    VSync offset定義的方法

    ,可以看到,每一個(gè)vsync-app都比對(duì)應(yīng)的TE信號(hào)晚了1.2ms,因此這份trace的app-offset為+1200000(ns為單位) 同樣的,每一個(gè)vsync-sf都比對(duì)應(yīng)的TE早了3.6ms,因此sf-offset
    的頭像 發(fā)表于 11-21 16:57 ?1732次閱讀
    <b class='flag-5'>VSync</b> offset定義的方法