drm_hwcomposer: Increase failure time for acquire fences

Increase the acquire timeout to effectively 500ms before failing
a frame. Also log every 100ms so we're still able to track long
fence waits.

BUG=chrome-os-partner:46301
TEST=Tested on smaug with cts test, saw timeout messages, but not
     failures

Change-Id: I28ec8bbf95f4a70bd3e99ea7a3333166c6080788
Signed-off-by: Sean Paul <seanpaul@chromium.org>
diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp
index 5676f1d..3b3deef 100644
--- a/drmdisplaycompositor.cpp
+++ b/drmdisplaycompositor.cpp
@@ -300,7 +300,12 @@
   for (DrmCompositionLayer &layer : *layers) {
     int acquire_fence = layer.acquire_fence.get();
     if (acquire_fence >= 0) {
-      ret = sync_wait(acquire_fence, kAcquireWaitTimeoutMs);
+      for (int i = 0; i < kAcquireWaitTries; ++i) {
+        ret = sync_wait(acquire_fence, kAcquireWaitTimeoutMs);
+        if (ret)
+          ALOGW("Acquire fence %d wait %d failed (%d). Total time %d",
+                acquire_fence, i, ret, (i + 1) * kAcquireWaitTimeoutMs);
+      }
       if (ret) {
         ALOGE("Failed to wait for acquire %d/%d", acquire_fence, ret);
         drmModePropertySetFree(pset);
diff --git a/drmdisplaycompositor.h b/drmdisplaycompositor.h
index 0f3a12f..419960c 100644
--- a/drmdisplaycompositor.h
+++ b/drmdisplaycompositor.h
@@ -51,9 +51,10 @@
  private:
   DrmDisplayCompositor(const DrmDisplayCompositor &) = delete;
 
-  // Set to 83ms (~12fps) which is somewhere between a reasonable amount of
-  // time to wait for a long render and a small enough delay to limit jank.
-  static const int kAcquireWaitTimeoutMs = 83;
+  // We'll wait for acquire fences to fire for kAcquireWaitTimeoutMs,
+  // kAcquireWaitTries times, logging a warning in between.
+  static const int kAcquireWaitTries = 5;
+  static const int kAcquireWaitTimeoutMs = 100;
 
   int ApplyPreComposite(DrmDisplayComposition *display_comp);
   int ApplyFrame(DrmDisplayComposition *display_comp);