在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

VSync offset定義的方法

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

VSync-offset/duration

虛擬化后的VSync還有一個(gè)好處,就是可以對(duì)VSync進(jìn)行一些定制操作,offset就是其中之一。

接下來(lái)就是offset的定義,offset 分為兩大類,即phase-app和phase-sf:

phase-app:VSync-app與hw_vsync的相位差;

phase-sf:VSync-sf與hw_vsync的相位差;

還是以trace為例,可以看到,每一個(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即為-3600000.

圖片

綜上,offset表示著vsync-app及vsync-sf與hw_vsync的相位差,這個(gè)值通過(guò)dump sf就可以獲取。

圖片

Offset 的一個(gè)比較難以確定的點(diǎn)就在于 Offset 的時(shí)間該如何設(shè)置,其優(yōu)缺點(diǎn)是動(dòng)態(tài)的,與機(jī)型的性能和使用場(chǎng)景有很大的關(guān)系。

如果 Offset 配置過(guò)短,那么可能 App 收到 Vsync-App 后還沒(méi)有渲染完成,SurfaceFlinger 就收到 Vsync-SF開(kāi)始合成,那么此時(shí)如果 App 的 BufferQueue 中沒(méi)有之前累積的 Buffer,那么 SurfaceFlinger 這次合成就不會(huì)有 App的東西在里面,需要等到下一個(gè) Vsync-SF 才能合成這次 App 的內(nèi)容,時(shí)間相當(dāng)于變成了 Vsync 周期+Offset,而不是我們期待的Offset。

如果 Offset 配置過(guò)長(zhǎng),就沒(méi)有辦法起到其原有的作用了。

圖片

另外,稍微錯(cuò)開(kāi)app和sf的VSync是有好處的,因?yàn)殄e(cuò)開(kāi)后整個(gè)系統(tǒng)同一時(shí)間搶占CPU的task會(huì)減少,理論上會(huì)有點(diǎn)優(yōu)化。一般安卓對(duì)不同幀率有不同的offset默認(rèn)配置。

Android S及之后的版本,Google引入了duration的概念,部分程度上代替了offset。

duration的定義相對(duì)明確

app duration:app繪制一塊buffer到sf消費(fèi)這塊buffer的時(shí)長(zhǎng)(vsync-app與對(duì)應(yīng)vsync-sf的間隔);

sf duration:sf消費(fèi)一塊buffer到這塊buffer上屏的時(shí)長(zhǎng)(vsync-sf到TE的間隔);

也就是說(shuō),app duration和sf duration之和,即為某一幀從開(kāi)始繪制到刷新在屏幕上的總時(shí)長(zhǎng)。

圖片

這種表示相對(duì)直觀,因此在S版本及之后,google默認(rèn)采用配置duration的方式來(lái)決定vsync相位差,但這并不代表offset被棄用,這兩個(gè)值是相互影響的,修改其中一個(gè)值,另外一個(gè)值也會(huì)出現(xiàn)變化。具體的換算關(guān)系為

app phase=n * vsync period - (app duration + sf duration)

sf phase = m * vsync period - sf duration

從duration的概念可以看出,duration越短,給到app繪制和sf合成的時(shí)間就越有限,那么繪制線程和sf線程所需的CPU,GPU頻率就越高,功耗就越高。

duration的長(zhǎng)短會(huì)影響一個(gè)buffer從繪制到上屏的生命周期,進(jìn)而影響到跟手性,duration越短,跟手性越強(qiáng)。其次,duration的配置會(huì)影響bufferqueue里預(yù)先加載的buffer塊數(shù)量,進(jìn)而影響sf占用的內(nèi)存大小,duration越長(zhǎng),buffer塊數(shù)量越多,sf占用內(nèi)存越大。另外,廠商對(duì)CPU和GPU的調(diào)頻策略也會(huì)受到duration的影響,貿(mào)然改短duration可能會(huì)導(dǎo)致特定場(chǎng)景的頻率異常升高。

講了這么多,總結(jié)起來(lái)Andriod中VSync模塊的架構(gòu)就是下圖這樣:

HW_VSync是由屏幕產(chǎn)生的脈沖信號(hào),用來(lái)控制屏幕的刷新。

VSync-app與VSync-sf統(tǒng)稱為軟件VSync,它們是由SurfaceFlinger通過(guò)模擬硬件VSync而產(chǎn)生的VSync信號(hào)量,再分發(fā)給app和sf用來(lái)控制它們的合成節(jié)奏。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    文章

    3958

    瀏覽量

    129077
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5080

    瀏覽量

    88698
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    507

    瀏覽量

    19990
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AD698里面的Gain Error、Output Offset和PSRR Gain等參數(shù)是如何定義的?

    各位工程師好,我在對(duì)AD698進(jìn)行測(cè)試。請(qǐng)問(wèn)AD698里面的Gain Error、Output Offset和PSRR Gain等參數(shù)是如何定義的?為什么Gain Error、Output Offset單位是% of FS,PS
    發(fā)表于 07-04 07:59

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

    量測(cè)/設(shè)定到Vsync訊號(hào), 想請(qǐng)教一下,DLPC7541是如何設(shè)定TSTP輸出Vsync訊號(hào)?或是有其他方法可以量測(cè)到
    發(fā)表于 02-18 08:15

    FPGA時(shí)序約束OFFSET

    時(shí)鐘period約束,對(duì)接口上升沿定義全局OFFSET IN約束,對(duì)接口下降沿定義全局OFFSET IN約束。對(duì)于時(shí)鐘period約束,首先要定義
    發(fā)表于 09-05 21:13

    OFFSET約束問(wèn)題

    嗨,大家好,據(jù)我所知,OFFSET約束強(qiáng)加于所有輸入PAD。在我的設(shè)計(jì)中,使用了兩個(gè)時(shí)鐘輸入。因此,PAD上的輸入信號(hào)應(yīng)分組為:1.需要OFFSET約束時(shí)間值#1,參考時(shí)鐘輸入#12.需要
    發(fā)表于 05-29 13:51

    請(qǐng)問(wèn)設(shè)置OFFSET的約束定義是什么?

    大家好,我在GMII接口中為以太網(wǎng)千兆位的Rx部分設(shè)置約束時(shí)遇到問(wèn)題。首先,我需要找到信號(hào)的實(shí)際細(xì)節(jié):我附上了IEEE規(guī)范的細(xì)節(jié)。設(shè)置時(shí)間為2.0ns,保持時(shí)間為0.5ns。其次,我需要找到如何定義
    發(fā)表于 07-30 11:05

    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

    CDMA Access pn offset與距離的公式測(cè)定

    CDMA Access_pn_offset與距離的公式測(cè)定:本文測(cè)定了Motorola CDMA系統(tǒng)中Access_pn_offset與距離的關(guān)系,解決了長(zhǎng)期以來(lái)困擾無(wú)線工程師的CDMA距離判定問(wèn)題。一、緒論    在移動(dòng)
    發(fā)表于 07-27 21:53 ?40次下載

    Timing Groups and OFFSET Const

    Timing Groups and OFFSET Constraints: •Use the Constraints Editor to create groups of path
    發(fā)表于 01-11 08:55 ?4次下載

    DC Offset Auto-Calibration of

    ABSTRACTThe TRF371x family provides an automatic calibration circuit to minimize the DC offset
    發(fā)表于 07-08 16:23 ?17次下載

    OFFSET約束的寫(xiě)法(OFFSET IN和OFFSET OUT)

    1. OFFSET約束的寫(xiě)法 Offset 約束定義了外部時(shí)鐘pad和與之相關(guān)的輸入、輸出pad之間的相對(duì)關(guān)系。這是一個(gè)基礎(chǔ)的時(shí)序約束。Offset
    發(fā)表于 02-08 13:22 ?2356次閱讀
    <b class='flag-5'>OFFSET</b>約束的寫(xiě)法(<b class='flag-5'>OFFSET</b> IN和<b class='flag-5'>OFFSET</b> OUT)

    簡(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 ?1005次閱讀

    VSync的起源是什么

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

    Andriod中Vsync的背景

    Android的顯示系統(tǒng)一直使用雙緩沖和VSync來(lái)防止屏幕畫(huà)面發(fā)生撕裂現(xiàn)象,這也是其他系統(tǒng)的常規(guī)操作。Android的不同之處是將VSync運(yùn)用到繪制系統(tǒng)中,作為黃油計(jì)劃(Project
    的頭像 發(fā)表于 11-21 16:13 ?452次閱讀
    Andriod中<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 ?900次閱讀
    <b class='flag-5'>VSync</b>的虛擬化與同步

    Andriod中VSync的分發(fā)

    App與SurfaceFlinger是不同的進(jìn)程,它們之間傳遞VSync的話涉及到進(jìn)程間通信,而且VSync頻率很高,App很多,所以VSync的分發(fā)效率要很高才行。Linux進(jìn)程間通信方式總共
    的頭像 發(fā)表于 11-21 16:32 ?1068次閱讀
    Andriod中<b class='flag-5'>VSync</b>的分發(fā)
    主站蜘蛛池模板: 天堂中文在线www | 99色视频在线 | 国内一级野外a一级毛片 | 婷婷丁香色综合狠狠色 | 毛片高清一区二区三区 | 一级特黄特黄xxx视频 | 在线看片地址 | 一女被两男吃奶玩乳尖口述 | 亚洲国产欧美日韩一区二区三区 | 亚洲人成网站999久久久综合 | 五月婷婷婷婷 | 在线视频一二三区 | 生活片毛片| 一本到午夜92版免费福利 | free欧美| 六月婷婷七月丁香 | jzzjlzz亚洲乱熟在线播放 | 精彩视频一区二区三区 | 日本在线一本 | 久久99精品久久久久久久不卡 | 国产成人亚洲精品77 | 国产网站大全 | 亚洲综合色丁香婷婷六月图片 | 日本a级三级三级三级久久 日本a级影院 | 四虎网站最新网址 | 手机看片国产免费现在观看 | 成年人看的黄色 | ggg成人| 欧美性天天影视 | 国产主播在线一区 | 亚洲国内精品自在线影视 | 精品四虎免费观看国产高清 | 色综合一区 | 澳门色视频 | 婷婷99| 天天干狠狠操 | 玖玖草在线观看 | 天天做夜夜爽 | 婷婷97狠狠的狠狠的爱 | 婷婷六月丁| 天天色综合天天 |