OSDN Git Service

drm_hwcomposer: Increase fence timeout upto 5x
authorDavid Ung <davidu@nvidia.com>
Wed, 20 Jan 2016 01:24:49 +0000 (17:24 -0800)
committerDavid Ung <davidu@nvidia.com>
Wed, 20 Jan 2016 20:31:50 +0000 (12:31 -0800)
Increase the fence wait value each time by a factor of 2.

Bug: chrome-os-partner:48289
Test: Run apps and see no frame drops

Change-Id: I9b7b910e5a8c9d287ea69b13dca0d4c1194ac86c
Signed-off-by: David Ung <davidu@nvidia.com>
drmdisplaycompositor.cpp

index 29ecc75..1012828 100644 (file)
@@ -664,11 +664,14 @@ int DrmDisplayCompositor::CommitFrame(DrmDisplayComposition *display_comp,
         DrmHwcLayer &layer = layers[comp_plane.source_layer];
         if (!test_only && layer.acquire_fence.get() >= 0) {
           int acquire_fence = layer.acquire_fence.get();
+          int total_fence_timeout = 0;
           for (int i = 0; i < kAcquireWaitTries; ++i) {
-            ret = sync_wait(acquire_fence, kAcquireWaitTimeoutMs);
+            int fence_timeout = kAcquireWaitTimeoutMs * (1 << i);
+            total_fence_timeout += fence_timeout;
+            ret = sync_wait(acquire_fence, fence_timeout);
             if (ret)
               ALOGW("Acquire fence %d wait %d failed (%d). Total time %d",
-                    acquire_fence, i, ret, (i + 1) * kAcquireWaitTimeoutMs);
+                    acquire_fence, i, ret, total_fence_timeout);
           }
           if (ret) {
             ALOGE("Failed to wait for acquire %d/%d", acquire_fence, ret);