hwc: Fix tearing with RGB layer rotation

Pass the acquire fence count to driver on a buffer sync ioctl call
for the rotator. The count is always 1 since the ioctl is called
once per rotator session. This also means that the rotator has to
wait for only 1 layer always.

The earlier assumption that in the presence of a session id, the
acquire count would be NOP, does not seem to hold with the driver.

Change-Id: I986a436194c66e8ce2a2afb363627f72dc6e20cd
This commit is contained in:
Saurabh Shah
2014-05-05 10:16:02 -07:00
committed by Gerrit - the friendly Code Review server
parent 1b481cb042
commit 25c04d3869

View File

@@ -1275,6 +1275,9 @@ int hwc_sync(hwc_context_t *ctx, hwc_display_contents_1_t* list, int dpy,
&currLayer->acquireFenceFd;
rotData.rel_fen_fd = &rotReleaseFd; //driver to populate this
rotData.session_id = currRot->getSessId();
if(currLayer->acquireFenceFd >= 0) {
rotData.acq_fen_fd_cnt = 1; //1 ioctl call per rot session
}
int ret = 0;
ret = ioctl(rotFd, MSMFB_BUFFER_SYNC, &rotData);
if(ret < 0) {