天天看點

雙緩沖 三緩沖

雙緩沖 buffer: a b(front back)

三緩沖 buffer: a b c(front back pending)

cpu 為繪制準備commandbuffer的内容

gpu 往buffer上畫

顯示卡的内容呈現到顯示器 (這裡開了垂直同步需要等垂直同步信号 60 30 20 15.....60hz顯示器)

gpu畫完a,要畫b時,如果b處于畫完了還沒有呈現到顯示器的階段,

雙緩存的GPU隻能wait,(等垂直同步信号

三緩存的GPU可以往c(pendingbuffer)上畫不用等 ,(提升了GPU的使用率

在GPU畫完a時, 垂直信号沒有來,這樣并不能swap,整個pipelilne就被阻塞了,

也就是說這種情況下,你開了垂直同步幀率就會掉過30,變成20,實際關了垂直同步是可以達到28的,但關垂直同步會有tearing,這時就該考慮

開垂直同步,開三緩沖了)這個了解應該是對的了 references:Real time rendering 3rd)

假如一次繪制需要34ms, 在開了垂直同步的情況下(不開會撕裂還有别的顯示問題)

雙緩存的gpu隻能wait FPS掉到20

三緩存的gpu可以往c上畫不用wait

三緩沖缺點是latency是一幀,延遲的厲害

backbuffer 裡面的内容是畫好了 随時等着swap到front的(呈現)

===========

假設有buffer012

cpu在為commandbuffer準備資料

gpu拿到cb往buffer0上畫畫完之後gpu會繼續往buffer1上畫 隻有在同步信号來了之後 才會把buffer裡的内容呈現到顯示器要是信号還沒來 它又不想等就可以繼續往buffer2上畫