SF: Add FenceTracker
FenceTracker tracks all fences in SurfaceFlinger. These timestamps
could be used for debugging, profiling, or be exposed to the
application.
Change-Id: I4297a661c0a7530e744168ac7a2a66c4bca92fd5
diff --git a/services/surfaceflinger/DisplayHardware/DisplaySurface.h b/services/surfaceflinger/DisplayHardware/DisplaySurface.h
index d819f83..d801bb3 100644
--- a/services/surfaceflinger/DisplayHardware/DisplaySurface.h
+++ b/services/surfaceflinger/DisplayHardware/DisplaySurface.h
@@ -76,9 +76,7 @@
virtual void resizeBuffers(const uint32_t w, const uint32_t h) = 0;
-#ifdef USE_HWC2
virtual const sp<Fence>& getClientTargetAcquireFence() const = 0;
-#endif
protected:
DisplaySurface() {}
diff --git a/services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp b/services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp
index 29e0766..7368d77 100644
--- a/services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp
+++ b/services/surfaceflinger/DisplayHardware/FramebufferSurface.cpp
@@ -60,15 +60,14 @@
ConsumerBase(consumer),
mDisplayType(disp),
mCurrentBufferSlot(-1),
-#ifdef USE_HWC2
mCurrentBuffer(),
mCurrentFence(Fence::NO_FENCE),
+#ifdef USE_HWC2
mHwc(hwc),
mHasPendingRelease(false),
mPreviousBufferSlot(BufferQueue::INVALID_BUFFER_SLOT),
mPreviousBuffer()
#else
- mCurrentBuffer(0),
mHwc(hwc)
#endif
{
@@ -168,9 +167,7 @@
}
mCurrentBufferSlot = item.mSlot;
mCurrentBuffer = mSlots[mCurrentBufferSlot].mGraphicBuffer;
-#ifdef USE_HWC2
mCurrentFence = item.mFence;
-#endif
outFence = item.mFence;
outBuffer = mCurrentBuffer;
@@ -254,11 +251,9 @@
ConsumerBase::dumpLocked(result, prefix);
}
-#ifdef USE_HWC2
const sp<Fence>& FramebufferSurface::getClientTargetAcquireFence() const {
return mCurrentFence;
}
-#endif
// ----------------------------------------------------------------------------
}; // namespace android
diff --git a/services/surfaceflinger/DisplayHardware/FramebufferSurface.h b/services/surfaceflinger/DisplayHardware/FramebufferSurface.h
index 0605602..439435a 100644
--- a/services/surfaceflinger/DisplayHardware/FramebufferSurface.h
+++ b/services/surfaceflinger/DisplayHardware/FramebufferSurface.h
@@ -52,9 +52,7 @@
// displays.
virtual void resizeBuffers(const uint32_t /*w*/, const uint32_t /*h*/) { };
-#ifdef USE_HWC2
virtual const sp<Fence>& getClientTargetAcquireFence() const override;
-#endif
private:
virtual ~FramebufferSurface() { }; // this class cannot be overloaded
@@ -88,10 +86,8 @@
// no current buffer.
sp<GraphicBuffer> mCurrentBuffer;
-#ifdef USE_HWC2
// mCurrentFence is the current buffer's acquire fence
sp<Fence> mCurrentFence;
-#endif
// Hardware composer, owned by SurfaceFlinger.
HWComposer& mHwc;
diff --git a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp
index 1afed36..ee4bf02 100644
--- a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp
+++ b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp
@@ -311,11 +311,9 @@
mSinkBufferHeight = h;
}
-#ifdef USE_HWC2
const sp<Fence>& VirtualDisplaySurface::getClientTargetAcquireFence() const {
return mFbFence;
}
-#endif
status_t VirtualDisplaySurface::requestBuffer(int pslot,
sp<GraphicBuffer>* outBuf) {
diff --git a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.h b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.h
index fe187c2..cfa4e4c 100644
--- a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.h
+++ b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.h
@@ -90,9 +90,7 @@
virtual void onFrameCommitted();
virtual void dumpAsString(String8& result) const;
virtual void resizeBuffers(const uint32_t w, const uint32_t h);
-#ifdef USE_HWC2
virtual const sp<Fence>& getClientTargetAcquireFence() const override;
-#endif
private:
enum Source {SOURCE_SINK = 0, SOURCE_SCRATCH = 1};