OSDN Git Service

Stop manual tracking of release fences.
authorKalyan Kondapally <kalyan.kondapally@intel.com>
Sun, 19 Feb 2017 02:51:51 +0000 (18:51 -0800)
committerKalyan Kondapally <kalyan.kondapally@intel.com>
Sun, 19 Feb 2017 03:09:46 +0000 (19:09 -0800)
There is no need to do this, NativeSync will increment the
timeline whenever HW has finished with the commit or
immediately if commit has failed for any reason.

Jira: None.
Test: No Regressions on Linux and Android.

Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com>
common/core/nativesync.cpp
common/core/nativesync.h
common/core/overlaylayer.h
common/display/display.cpp
common/display/virtualdisplay.cpp

index f3953ec..654891d 100644 (file)
@@ -52,7 +52,7 @@ NativeSync::NativeSync() {
 
 NativeSync::~NativeSync() {
   if (timeline_fd_.get() >= 0)
-    SignalCompositionDone();
+    IncreaseTimelineToPoint(timeline_);
 }
 
 bool NativeSync::Init() {
index 5c7fc22..ad96331 100644 (file)
@@ -32,16 +32,8 @@ class NativeSync {
 
   int CreateNextTimelineFence();
 
-  int SignalCompositionDone() {
-    return IncreaseTimelineToPoint(timeline_);
-  }
-
   bool Wait(int fence);
 
-  int GetFd() const {
-    return timeline_fd_.get();
-  }
-
  private:
   int IncreaseTimelineToPoint(int point);
   int sw_sync_fence_create(int fd, const char *name, unsigned value);
index 0ca73d4..ec05175 100644 (file)
@@ -28,13 +28,6 @@ namespace hwcomposer {
 
 struct OverlayLayer {
   bool operator!=(const OverlayLayer& rhs) const;
-  void SetReleaseFence(int fd) {
-    release_fence_.Reset(fd);
-  }
-
-  int GetReleaseFence() const {
-    return release_fence_.get();
-  }
 
   void SetAcquireFence(int fd) {
     acquire_fence_.Reset(fd);
index 67d193b..e59d806 100644 (file)
@@ -322,8 +322,11 @@ bool Display::Present(std::vector<HwcLayer *> &source_layers) {
     overlay_layer.SetDisplayFrame(layer->GetDisplayFrame());
     overlay_layer.SetIndex(layer_index);
     overlay_layer.SetAcquireFence(layer->acquire_fence.Release());
-    overlay_layer.SetReleaseFence(layer->release_fence.Release());
     layers_rects.emplace_back(layer->GetDisplayFrame());
+    int ret =
+       layer->release_fence.Reset(sync_object->CreateNextTimelineFence());
+    if (ret < 0)
+      ETRACE("Failed to create fence for layer, error: %s", PRINTERROR());
   }
 
   // Reset any Display Manager and Compositor state.
@@ -362,14 +365,6 @@ bool Display::Present(std::vector<HwcLayer *> &source_layers) {
     return false;
   }
 
-  for (size_t layer_index = 0; layer_index < size; layer_index++) {
-    HwcLayer *layer = source_layers.at(layer_index);
-    int ret =
-        layer->release_fence.Reset(sync_object->CreateNextTimelineFence());
-    if (ret < 0)
-      ETRACE("Failed to create fence for layer, error: %s", PRINTERROR());
-  }
-
   uint64_t fence = 0;
   if (!ApplyPendingModeset(pset.get(), sync_object.get(), &fence)) {
     ETRACE("Failed to Modeset");
@@ -388,15 +383,11 @@ bool Display::Present(std::vector<HwcLayer *> &source_layers) {
     previous_plane_state_.swap(current_composition_planes);
   }
 
-  if (!succesful_commit || needs_modeset) {
-    for (size_t layer_index = 0; layer_index < size; layer_index++) {
-      HwcLayer *layer = source_layers.at(layer_index);
-      layer->release_fence.Reset(-1);
-    }
+  if (!succesful_commit || needs_modeset)
     return succesful_commit;
-  } else {
-    compositor_.InsertFence(dup(fence));
-  }
+
+
+  compositor_.InsertFence(dup(fence));
 
   if (fence > 0)
     out_fence_.Reset(fence);
index e28538d..809eb32 100644 (file)
@@ -70,7 +70,6 @@ bool VirtualDisplay::Present(std::vector<HwcLayer *> &source_layers) {
     overlay_layer.SetDisplayFrame(layer->GetDisplayFrame());
     overlay_layer.SetIndex(layer_index);
     overlay_layer.SetAcquireFence(layer->acquire_fence.Release());
-    overlay_layer.SetReleaseFence(layer->release_fence.Release());
     layers_rects.emplace_back(layer->GetDisplayFrame());
     index.emplace_back(layer_index);
     buffers.emplace_back();