连续抓几次的systrace,每次queueBuffer都有被acquire,看不出
还是得加debug log,顺流程
queueBuffer之后会触发
SurfaceFlinger::handleMessageInvalidate
-> handlePageFlip
-> latchBuffer
-> latchSidebandStream 返回true,直接return,导致没有执行到updateTexImage(预期这里会acquireBuffer),那么也就没有acquireBuffer了
-> updateTexImage 预期执行
-> acquireBuffer
而latchSidebandStream返回true,定位到是因为google在2020年上的一笔commit导致,sideBand不会去acquireBuffer,这属于google的限制,而且sideBand的buffer大小为1*1,不会被acquire,也合理
dequeueBuffer: w=1,h=1 format=0x2,usage=0x930
https://android-review.googlesource.com/c/platform/framework/native/+/1537923
-> solution: 使用non-tunnel mode或者看player那边是否有其它的方案