因為我們的螢幕上下顛倒,driver ic是從最後一條線往上更新,但cpu是從第一條線開始寫到driver ic的framebuffer,不論是寫的速度比較快,或是讀的速度比較快,都會在某一點交錯,因此固定在某一點出現tearing!
看起來很難解ㄟ
米其 先試看看...從mdp做上下顛倒 看看會不會一樣
jackdannise: 傑克大人,我有試過把當初解螢幕上下顛倒的設定拿掉,讓畫面上下顛倒去跑測試,結果是不會有tearing的,所以應該推論沒錯。禮拜一再去問Javis怎麼用mdp上下顛倒。
恩 不知道會不會有performance的issue..
當vsync signal開始之後表示他從底下開始往上畫, 這時候 dsi的signal開始update 底圖 從上往下, 一定會有一個地方交叉, 但是 是不是能夠讓他的交叉點 剛好在多出來的那個區域?(不可視的區域)
我有調過類似的東西,就是調整何時送出frame...tearing位置會變...但無法消失...甚至會出現兩條tearing
我想除非clock rate調很高讓寫的速度極快,或是不可視區很大...不然交叉點還是會出現在可視區
要看目前的tearing在哪裡...如果整個framebuffer是1024(不要skip), 前面的1024-960就是不可視...這時候 控制frame輸出的時間 在畫到不可視區的時候送..當然 不知道能不能控制到那麼精細
另一個方法 我正在看 是不是能調整dma的方式..倒著送data...
傑克大人你指的不可視區是V front porch+V back porch+V pulse吧,如果driver ic固定60 FPS不論解析度,這樣我們的確可以試著把driver ic解析度加大(我記的可以到1260),壓縮可視區化的時間,多留些時間給dsi upadte
qHD不管其他overhead,基本的bit clock rate是311Mbps,但是samsung driver ic最高支援的bit clock rate是480Mbps,不知道這樣的來不來的及
因為可視區比較小 driver IC掃的會比dsi送的快 不論如何都會交叉....
因為你一定要設定offset, 這樣不論frame buffer多大, 一個vsync只能掃960條, 這樣除非把driver IC設成30fps, 把dsi衝到最快, 在back porch的時間內把data送完...
剛剛在想 作弊 把vsync的pulse width設成BP + height. 所以他會高很久,然後 把vsync的polarity設成反相, 這時候 dsi會再FP開始的時候送資料, 如果能再FP+BP之內送完 那就大功告成..
報告長官們,解法是mdp轉,雖然傑克大人已經知道了:p
哈哈哈
幹的好!不過還是要注意一下Performance有沒有影響到.
Yes, sir!明天就來跑GLbenchmark測看看
給個performance table...長官會做決定...
那。。。102150 P01的Mic不會動。。米奇。。。。。。。