hwc: Get the retire fence from the MDP driver
Get the retire fence separately instead of duplicating the
release fence.
Bug: 9319776
Change-Id: Iacb773c2d94f635e27a7b355d399cb2e36dac2a5
diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index fa021cc..ed81316 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -1160,6 +1160,7 @@
int acquireFd[MAX_NUM_APP_LAYERS];
int count = 0;
int releaseFd = -1;
+ int retireFd = -1;
int fbFd = -1;
bool swapzero = false;
int mdpVersion = qdutils::MDPVersion::getInstance().getMDPVersion();
@@ -1168,6 +1169,8 @@
memset(&data, 0, sizeof(data));
data.acq_fen_fd = acquireFd;
data.rel_fen_fd = &releaseFd;
+ data.retire_fen_fd = &retireFd;
+ data.flags = MDP_BUF_SYNC_FLAG_RETIRE_FENCE;
char property[PROPERTY_VALUE_MAX];
if(property_get("debug.egl.swapinterval", property, "1") > 0) {
@@ -1277,20 +1280,14 @@
//Signals when MDP finishes reading rotator buffers.
ctx->mLayerRotMap[dpy]->setReleaseFd(releaseFd);
+ close(releaseFd);
+ releaseFd = -1;
- // if external is animating, close the relaseFd
- if(isExtAnimating) {
- close(releaseFd);
- releaseFd = -1;
- }
-
- if(UNLIKELY(swapzero)){
+ if(UNLIKELY(swapzero)) {
list->retireFenceFd = -1;
- close(releaseFd);
} else {
- list->retireFenceFd = releaseFd;
+ list->retireFenceFd = retireFd;
}
-
return ret;
}