Mir

Comment 1 for bug 1352883

Revision history for this message
Kevin DuBois (kdub) wrote :

So what is happening is:

hwc::commit ({layer1, layer2})
and then
hwc::commit({layer2, layer1}).

Since both layer 1 and layer 2 are already onscreen, the hwc has already accepted their acquireFenceFd's and programmed them with new releaseFenceFd's after the 1st commit.

When the 2nd commit comes around, the mir code fails to recognize that the layers have already been accepted by hwc and copies the releaseFenceFd into the acquireFenceFd for the 2nd commit. Since the 2nd commit is the precipitating event that signals the releaseFenceFd's from the 1st commit, the second commit hangs (pausing the renderloop).

The reason why this is intermittent is that the fences will time out after a device-specific time interval, at which point the timeout unblocks the renderloop and the system will continue.