Loading libs/gui/BLASTBufferQueue.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -599,6 +599,7 @@ Rect BLASTBufferQueue::computeCrop(const BufferItem& item) { } void BLASTBufferQueue::acquireAndReleaseBuffer() { BBQ_TRACE(); BufferItem bufferItem; status_t status = mBufferItemConsumer->acquireBuffer(&bufferItem, 0 /* expectedPresent */, false); Loading @@ -612,6 +613,7 @@ void BLASTBufferQueue::acquireAndReleaseBuffer() { } void BLASTBufferQueue::flushAndWaitForFreeBuffer(std::unique_lock<std::mutex>& lock) { BBQ_TRACE(); if (!mSyncedFrameNumbers.empty() && mNumFrameAvailable > 0) { // We are waiting on a previous sync's transaction callback so allow another sync // transaction to proceed. Loading Loading @@ -642,8 +644,8 @@ void BLASTBufferQueue::onFrameAvailable(const BufferItem& item) { bool waitForTransactionCallback = !mSyncedFrameNumbers.empty(); { BBQ_TRACE(); std::unique_lock _lock{mMutex}; BBQ_TRACE(); const bool syncTransactionSet = mTransactionReadyCallback != nullptr; BQA_LOGV("onFrameAvailable-start syncTransactionSet=%s", boolToString(syncTransactionSet)); Loading libs/gui/include/gui/TraceUtils.h +16 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #define ATRACE_FORMAT_BEGIN(fmt, ...) TraceUtils::atraceFormatBegin(fmt, ##__VA_ARGS__) #define ATRACE_FORMAT_INSTANT(fmt, ...) TraceUtils::intantFormat(fmt, ##__VA_ARGS__) namespace android { class TraceUtils { Loading @@ -50,6 +52,20 @@ public: ATRACE_BEGIN(buf); } static void intantFormat(const char* fmt, ...) { if (CC_LIKELY(!ATRACE_ENABLED())) return; const int BUFFER_SIZE = 256; va_list ap; char buf[BUFFER_SIZE]; va_start(ap, fmt); vsnprintf(buf, BUFFER_SIZE, fmt, ap); va_end(ap); ATRACE_INSTANT(buf); } }; // class TraceUtils } /* namespace android */ services/surfaceflinger/BufferLayer.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include <gui/GLConsumer.h> #include <gui/LayerDebugInfo.h> #include <gui/Surface.h> #include <gui/TraceUtils.h> #include <renderengine/RenderEngine.h> #include <ui/DebugUtils.h> #include <utils/Errors.h> Loading Loading @@ -456,7 +457,8 @@ bool BufferLayer::shouldPresentNow(nsecs_t expectedPresentTime) const { bool BufferLayer::latchBuffer(bool& recomputeVisibleRegions, nsecs_t latchTime, nsecs_t expectedPresentTime) { ATRACE_CALL(); ATRACE_FORMAT_INSTANT("latchBuffer %s - %" PRIu64, getDebugName(), getDrawingState().frameNumber); bool refreshRequired = latchSidebandStream(recomputeVisibleRegions); Loading services/surfaceflinger/BufferStateLayer.cpp +10 −6 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <renderengine/Image.h> #include "TunnelModeEnabledReporter.h" #include <gui/TraceUtils.h> #include "EffectLayer.h" #include "FrameTracer/FrameTracer.h" #include "TimeStats/TimeStats.h" Loading @@ -39,19 +40,20 @@ namespace android { using PresentState = frametimeline::SurfaceFrame::PresentState; namespace { void callReleaseBufferCallback(const sp<ITransactionCompletedListener>& listener, const sp<GraphicBuffer>& buffer, uint64_t framenumber, void BufferStateLayer::callReleaseBufferCallback(const sp<ITransactionCompletedListener>& listener, const sp<GraphicBuffer>& buffer, uint64_t framenumber, const sp<Fence>& releaseFence, uint32_t currentMaxAcquiredBufferCount) { if (!listener) { return; } ATRACE_FORMAT_INSTANT("callReleaseBufferCallback %s - %" PRIu64, getDebugName(), framenumber); listener->onReleaseBuffer({buffer->getId(), framenumber}, releaseFence ? releaseFence : Fence::NO_FENCE, currentMaxAcquiredBufferCount); } } // namespace BufferStateLayer::BufferStateLayer(const LayerCreationArgs& args) : BufferLayer(args), mHwcSlotGenerator(new HwcSlotGenerator()) { Loading Loading @@ -145,6 +147,8 @@ void BufferStateLayer::releasePendingBuffer(nsecs_t dequeueReadyTime) { handle->dequeueReadyTime = dequeueReadyTime; handle->currentMaxAcquiredBufferCount = mFlinger->getMaxAcquiredBufferCountForCurrentRefreshRate(mOwnerUid); ATRACE_FORMAT_INSTANT("releasePendingBuffer %s - %" PRIu64, getDebugName(), handle->previousReleaseCallbackId.framenumber); } for (auto& handle : mDrawingState.callbackHandles) { Loading services/surfaceflinger/BufferStateLayer.h +5 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,11 @@ private: bool simpleBufferUpdate(const layer_state_t& s) const override; void callReleaseBufferCallback(const sp<ITransactionCompletedListener>& listener, const sp<GraphicBuffer>& buffer, uint64_t framenumber, const sp<Fence>& releaseFence, uint32_t currentMaxAcquiredBufferCount); ReleaseCallbackId mPreviousReleaseCallbackId = ReleaseCallbackId::INVALID_ID; uint64_t mPreviousReleasedFrameNumber = 0; Loading Loading
libs/gui/BLASTBufferQueue.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -599,6 +599,7 @@ Rect BLASTBufferQueue::computeCrop(const BufferItem& item) { } void BLASTBufferQueue::acquireAndReleaseBuffer() { BBQ_TRACE(); BufferItem bufferItem; status_t status = mBufferItemConsumer->acquireBuffer(&bufferItem, 0 /* expectedPresent */, false); Loading @@ -612,6 +613,7 @@ void BLASTBufferQueue::acquireAndReleaseBuffer() { } void BLASTBufferQueue::flushAndWaitForFreeBuffer(std::unique_lock<std::mutex>& lock) { BBQ_TRACE(); if (!mSyncedFrameNumbers.empty() && mNumFrameAvailable > 0) { // We are waiting on a previous sync's transaction callback so allow another sync // transaction to proceed. Loading Loading @@ -642,8 +644,8 @@ void BLASTBufferQueue::onFrameAvailable(const BufferItem& item) { bool waitForTransactionCallback = !mSyncedFrameNumbers.empty(); { BBQ_TRACE(); std::unique_lock _lock{mMutex}; BBQ_TRACE(); const bool syncTransactionSet = mTransactionReadyCallback != nullptr; BQA_LOGV("onFrameAvailable-start syncTransactionSet=%s", boolToString(syncTransactionSet)); Loading
libs/gui/include/gui/TraceUtils.h +16 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #define ATRACE_FORMAT_BEGIN(fmt, ...) TraceUtils::atraceFormatBegin(fmt, ##__VA_ARGS__) #define ATRACE_FORMAT_INSTANT(fmt, ...) TraceUtils::intantFormat(fmt, ##__VA_ARGS__) namespace android { class TraceUtils { Loading @@ -50,6 +52,20 @@ public: ATRACE_BEGIN(buf); } static void intantFormat(const char* fmt, ...) { if (CC_LIKELY(!ATRACE_ENABLED())) return; const int BUFFER_SIZE = 256; va_list ap; char buf[BUFFER_SIZE]; va_start(ap, fmt); vsnprintf(buf, BUFFER_SIZE, fmt, ap); va_end(ap); ATRACE_INSTANT(buf); } }; // class TraceUtils } /* namespace android */
services/surfaceflinger/BufferLayer.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include <gui/GLConsumer.h> #include <gui/LayerDebugInfo.h> #include <gui/Surface.h> #include <gui/TraceUtils.h> #include <renderengine/RenderEngine.h> #include <ui/DebugUtils.h> #include <utils/Errors.h> Loading Loading @@ -456,7 +457,8 @@ bool BufferLayer::shouldPresentNow(nsecs_t expectedPresentTime) const { bool BufferLayer::latchBuffer(bool& recomputeVisibleRegions, nsecs_t latchTime, nsecs_t expectedPresentTime) { ATRACE_CALL(); ATRACE_FORMAT_INSTANT("latchBuffer %s - %" PRIu64, getDebugName(), getDrawingState().frameNumber); bool refreshRequired = latchSidebandStream(recomputeVisibleRegions); Loading
services/surfaceflinger/BufferStateLayer.cpp +10 −6 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <renderengine/Image.h> #include "TunnelModeEnabledReporter.h" #include <gui/TraceUtils.h> #include "EffectLayer.h" #include "FrameTracer/FrameTracer.h" #include "TimeStats/TimeStats.h" Loading @@ -39,19 +40,20 @@ namespace android { using PresentState = frametimeline::SurfaceFrame::PresentState; namespace { void callReleaseBufferCallback(const sp<ITransactionCompletedListener>& listener, const sp<GraphicBuffer>& buffer, uint64_t framenumber, void BufferStateLayer::callReleaseBufferCallback(const sp<ITransactionCompletedListener>& listener, const sp<GraphicBuffer>& buffer, uint64_t framenumber, const sp<Fence>& releaseFence, uint32_t currentMaxAcquiredBufferCount) { if (!listener) { return; } ATRACE_FORMAT_INSTANT("callReleaseBufferCallback %s - %" PRIu64, getDebugName(), framenumber); listener->onReleaseBuffer({buffer->getId(), framenumber}, releaseFence ? releaseFence : Fence::NO_FENCE, currentMaxAcquiredBufferCount); } } // namespace BufferStateLayer::BufferStateLayer(const LayerCreationArgs& args) : BufferLayer(args), mHwcSlotGenerator(new HwcSlotGenerator()) { Loading Loading @@ -145,6 +147,8 @@ void BufferStateLayer::releasePendingBuffer(nsecs_t dequeueReadyTime) { handle->dequeueReadyTime = dequeueReadyTime; handle->currentMaxAcquiredBufferCount = mFlinger->getMaxAcquiredBufferCountForCurrentRefreshRate(mOwnerUid); ATRACE_FORMAT_INSTANT("releasePendingBuffer %s - %" PRIu64, getDebugName(), handle->previousReleaseCallbackId.framenumber); } for (auto& handle : mDrawingState.callbackHandles) { Loading
services/surfaceflinger/BufferStateLayer.h +5 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,11 @@ private: bool simpleBufferUpdate(const layer_state_t& s) const override; void callReleaseBufferCallback(const sp<ITransactionCompletedListener>& listener, const sp<GraphicBuffer>& buffer, uint64_t framenumber, const sp<Fence>& releaseFence, uint32_t currentMaxAcquiredBufferCount); ReleaseCallbackId mPreviousReleaseCallbackId = ReleaseCallbackId::INVALID_ID; uint64_t mPreviousReleasedFrameNumber = 0; Loading