Mir

Comment 6 for bug 1267323

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

The blocking of client_acquire is correct behaviour and a critical performance feature. When a surface is invisible, this puts the client rendering to sleep. The client can't stay busy and occupy your CPU time (as easily) while it's out of view. See --> bug 1227739.

Also the blocking of client_acquire for shorter times is what keeps clients well behaved and rendering only at the monitor refresh rate (at most).

So the SwitchingBundle and Occlusion classes are behaving correctly, as designed. And it sounds like we need to be smarter on the front end. Allowing all clients to render continuously without blocking would be a significant performance setback.

One potential solution is to get away from the limitations of the request-response protocol model that led us here. And try to be more asynchronous, even driven. That would also solve related performance issues like bug 1253868.