Transfer HWC release fences to BufferQueue

After a HWC set, each SurfaceFlinger Layer retrieves the release fence
HWC returned and gives it to the layer's SurfaceTexture. The
SurfaceTexture accumulates the fences into a merged fence until the
next updateTexImage, then passes the merged fence to the BufferQueue
in releaseBuffer.

In a follow-on change, BufferQueue will return the fence along with
the buffer slot in dequeueBuffer. For now, dequeueBuffer waits for the
fence to signal before returning.

The releaseFence default value for BufferQueue::releaseBuffer() is
temporary to avoid transient build breaks with a multi-project
checkin. It'll disappear in the next change.

Change-Id: Iaa9a0d5775235585d9cbf453d3a64623d08013d9
diff --git a/libs/ui/Fence.cpp b/libs/ui/Fence.cpp
index 993585b..5c17d10 100644
--- a/libs/ui/Fence.cpp
+++ b/libs/ui/Fence.cpp
@@ -26,6 +26,8 @@
 
 namespace android {
 
+const sp<Fence> Fence::NO_FENCE = sp<Fence>();
+
 Fence::Fence() :
     mFenceFd(-1) {
 }
@@ -55,7 +57,7 @@
     if (result == -1) {
         ALOGE("merge: sync_merge returned an error: %s (%d)", strerror(-errno),
                 errno);
-        return sp<Fence>();
+        return NO_FENCE;
     }
     return sp<Fence>(new Fence(result));
 }