I added some code that just reallocates a buffer periodically in SwithingBundle (basically simulating a resize but without any size changes) and it seems that introducing a new buffer is what causes the nexus10 driver to hiccup.
Using the eglcounter example with a 120FPs camera, I see the following patter every time a new allocated buffer is returned to the client:
1, 2, 3, 1, 2, 3, 7 - instead of 1,2,3,4,5,6,7
Also it seems to happen only when rendering is close to display rate - if I lower the rendering rate of the client app, I don't see the issue.
Another curious fact is that if I keep reallocating buffers ALL the time, I will only see the out-of-order sequence the first time a new buffer is introduced then it just chugs along without any frame order issues after that.
I added some code that just reallocates a buffer periodically in SwithingBundle (basically simulating a resize but without any size changes) and it seems that introducing a new buffer is what causes the nexus10 driver to hiccup.
Using the eglcounter example with a 120FPs camera, I see the following patter every time a new allocated buffer is returned to the client:
1, 2, 3, 1, 2, 3, 7 - instead of 1,2,3,4,5,6,7
Also it seems to happen only when rendering is close to display rate - if I lower the rendering rate of the client app, I don't see the issue.
Another curious fact is that if I keep reallocating buffers ALL the time, I will only see the out-of-order sequence the first time a new buffer is introduced then it just chugs along without any frame order issues after that.
This seems to alude to an issue with Mali -(does not guarantee flush order across contexts) which is what we would like to have in our case: /chromium. googlesource. com/chromium/ src/gpu/ +/master% 5E/config/ gpu_driver_ bug_list_ json.cc
https:/
Since I'm convinced this is a driver bug and there's no sane workaround I'm declaring this as "won't fix".