Merge "hwc: Push a dummy -1 release fence in case of flush"
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index 380d162..723148b 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -1236,15 +1236,19 @@
// release fences and discard fences from driver
if (swap_interval_zero_ || layer->flags.single_buffer) {
close(layer_buffer->release_fence_fd);
- layer_buffer->release_fence_fd = -1;
} else if (layer->composition != kCompositionGPU) {
hwc_layer->PushReleaseFence(layer_buffer->release_fence_fd);
- layer_buffer->release_fence_fd = -1;
} else {
hwc_layer->PushReleaseFence(-1);
}
+ } else {
+ // In case of flush, we don't return an error to f/w, so it will get a release fence out of
+ // the hwc_layer's release fence queue. We should push a -1 to preserve release fence
+ // circulation semantics.
+ hwc_layer->PushReleaseFence(-1);
}
+ layer_buffer->release_fence_fd = -1;
if (layer_buffer->acquire_fence_fd >= 0) {
close(layer_buffer->acquire_fence_fd);
layer_buffer->acquire_fence_fd = -1;