Loading services/surfaceflinger/SurfaceFlinger.cpp +12 −26 Original line number Diff line number Diff line Loading @@ -1568,8 +1568,7 @@ void SurfaceFlinger::handleMessageRefresh() { getBE().mEndOfFrameCompositionInfo = std::move(getBE().mCompositionInfo); for (const auto& [token, display] : mDisplays) { const auto displayId = display->getId(); for (auto& compositionInfo : getBE().mEndOfFrameCompositionInfo[displayId]) { for (auto& compositionInfo : getBE().mEndOfFrameCompositionInfo[token]) { compositionInfo.hwc.hwcLayer = nullptr; } } Loading Loading @@ -1666,16 +1665,16 @@ void SurfaceFlinger::calculateWorkingSet() { mDrawingState.colorMatrixChanged = false; for (const auto& [token, display] : mDisplays) { const auto displayId = display->getId(); getBE().mCompositionInfo[displayId].clear(); getBE().mCompositionInfo[token].clear(); for (auto& layer : display->getVisibleLayersSortedByZ()) { auto displayId = display->getId(); const auto displayId = display->getId(); layer->getBE().compositionInfo.compositionType = layer->getCompositionType(displayId); if (!layer->setHwcLayer(displayId)) { ALOGV("Need to create HWCLayer for %s", layer->getName().string()); } layer->getBE().compositionInfo.hwc.displayId = displayId; getBE().mCompositionInfo[displayId].push_back(layer->getBE().compositionInfo); getBE().mCompositionInfo[token].push_back(layer->getBE().compositionInfo); layer->getBE().compositionInfo.hwc.hwcLayer = nullptr; } } Loading @@ -1683,7 +1682,6 @@ void SurfaceFlinger::calculateWorkingSet() { void SurfaceFlinger::doDebugFlashRegions(const sp<DisplayDevice>& display, bool repaintEverything) { const auto displayId = display->getId(); // is debugging enabled if (CC_LIKELY(!mDebugRegion)) return; Loading @@ -1709,14 +1707,7 @@ void SurfaceFlinger::doDebugFlashRegions(const sp<DisplayDevice>& display, bool usleep(mDebugRegion * 1000); } if (display->isPoweredOn()) { status_t result = display->prepareFrame( *getBE().mHwc, getBE().mCompositionInfo[displayId]); ALOGE_IF(result != NO_ERROR, "prepareFrame for display %d failed:" " %d (%s)", display->getId(), result, strerror(-result)); } prepareFrame(display); } void SurfaceFlinger::doTracing(const char* where) { Loading Loading @@ -2128,13 +2119,12 @@ void SurfaceFlinger::beginFrame(const sp<DisplayDevice>& display) void SurfaceFlinger::prepareFrame(const sp<DisplayDevice>& display) { const auto displayId = display->getId(); if (!display->isPoweredOn()) { return; } status_t result = display->prepareFrame( *getBE().mHwc, getBE().mCompositionInfo[displayId]); status_t result = display->prepareFrame(getHwComposer(), getBE().mCompositionInfo[display->getDisplayToken()]); ALOGE_IF(result != NO_ERROR, "prepareFrame for display %d failed:" " %d (%s)", Loading Loading @@ -4356,17 +4346,13 @@ void SurfaceFlinger::dumpFrameCompositionInfo(String8& result) const { std::string stringResult; for (const auto& [token, display] : mDisplays) { const auto displayId = display->getId(); if (displayId == DisplayDevice::DISPLAY_ID_INVALID) { const auto it = getBE().mEndOfFrameCompositionInfo.find(token); if (it == getBE().mEndOfFrameCompositionInfo.end()) { continue; } const auto& compositionInfoIt = getBE().mEndOfFrameCompositionInfo.find(displayId); if (compositionInfoIt == getBE().mEndOfFrameCompositionInfo.end()) { break; } const auto& compositionInfoList = compositionInfoIt->second; stringResult += base::StringPrintf("Display: %d\n", displayId); const auto& compositionInfoList = it->second; stringResult += base::StringPrintf("%s\n", display->getDebugName().c_str()); stringResult += base::StringPrintf("numComponents: %zu\n", compositionInfoList.size()); for (const auto& compositionInfo : compositionInfoList) { compositionInfo.dump(stringResult, nullptr); Loading services/surfaceflinger/SurfaceFlinger.h +2 −2 Original line number Diff line number Diff line Loading @@ -222,8 +222,8 @@ public: // instances. Each hardware composer instance gets a different sequence id. int32_t mComposerSequenceId; std::unordered_map<int32_t, std::vector<CompositionInfo>> mCompositionInfo; std::unordered_map<int32_t, std::vector<CompositionInfo>> mEndOfFrameCompositionInfo; std::map<wp<IBinder>, std::vector<CompositionInfo>> mCompositionInfo; std::map<wp<IBinder>, std::vector<CompositionInfo>> mEndOfFrameCompositionInfo; }; Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +12 −26 Original line number Diff line number Diff line Loading @@ -1568,8 +1568,7 @@ void SurfaceFlinger::handleMessageRefresh() { getBE().mEndOfFrameCompositionInfo = std::move(getBE().mCompositionInfo); for (const auto& [token, display] : mDisplays) { const auto displayId = display->getId(); for (auto& compositionInfo : getBE().mEndOfFrameCompositionInfo[displayId]) { for (auto& compositionInfo : getBE().mEndOfFrameCompositionInfo[token]) { compositionInfo.hwc.hwcLayer = nullptr; } } Loading Loading @@ -1666,16 +1665,16 @@ void SurfaceFlinger::calculateWorkingSet() { mDrawingState.colorMatrixChanged = false; for (const auto& [token, display] : mDisplays) { const auto displayId = display->getId(); getBE().mCompositionInfo[displayId].clear(); getBE().mCompositionInfo[token].clear(); for (auto& layer : display->getVisibleLayersSortedByZ()) { auto displayId = display->getId(); const auto displayId = display->getId(); layer->getBE().compositionInfo.compositionType = layer->getCompositionType(displayId); if (!layer->setHwcLayer(displayId)) { ALOGV("Need to create HWCLayer for %s", layer->getName().string()); } layer->getBE().compositionInfo.hwc.displayId = displayId; getBE().mCompositionInfo[displayId].push_back(layer->getBE().compositionInfo); getBE().mCompositionInfo[token].push_back(layer->getBE().compositionInfo); layer->getBE().compositionInfo.hwc.hwcLayer = nullptr; } } Loading @@ -1683,7 +1682,6 @@ void SurfaceFlinger::calculateWorkingSet() { void SurfaceFlinger::doDebugFlashRegions(const sp<DisplayDevice>& display, bool repaintEverything) { const auto displayId = display->getId(); // is debugging enabled if (CC_LIKELY(!mDebugRegion)) return; Loading @@ -1709,14 +1707,7 @@ void SurfaceFlinger::doDebugFlashRegions(const sp<DisplayDevice>& display, bool usleep(mDebugRegion * 1000); } if (display->isPoweredOn()) { status_t result = display->prepareFrame( *getBE().mHwc, getBE().mCompositionInfo[displayId]); ALOGE_IF(result != NO_ERROR, "prepareFrame for display %d failed:" " %d (%s)", display->getId(), result, strerror(-result)); } prepareFrame(display); } void SurfaceFlinger::doTracing(const char* where) { Loading Loading @@ -2128,13 +2119,12 @@ void SurfaceFlinger::beginFrame(const sp<DisplayDevice>& display) void SurfaceFlinger::prepareFrame(const sp<DisplayDevice>& display) { const auto displayId = display->getId(); if (!display->isPoweredOn()) { return; } status_t result = display->prepareFrame( *getBE().mHwc, getBE().mCompositionInfo[displayId]); status_t result = display->prepareFrame(getHwComposer(), getBE().mCompositionInfo[display->getDisplayToken()]); ALOGE_IF(result != NO_ERROR, "prepareFrame for display %d failed:" " %d (%s)", Loading Loading @@ -4356,17 +4346,13 @@ void SurfaceFlinger::dumpFrameCompositionInfo(String8& result) const { std::string stringResult; for (const auto& [token, display] : mDisplays) { const auto displayId = display->getId(); if (displayId == DisplayDevice::DISPLAY_ID_INVALID) { const auto it = getBE().mEndOfFrameCompositionInfo.find(token); if (it == getBE().mEndOfFrameCompositionInfo.end()) { continue; } const auto& compositionInfoIt = getBE().mEndOfFrameCompositionInfo.find(displayId); if (compositionInfoIt == getBE().mEndOfFrameCompositionInfo.end()) { break; } const auto& compositionInfoList = compositionInfoIt->second; stringResult += base::StringPrintf("Display: %d\n", displayId); const auto& compositionInfoList = it->second; stringResult += base::StringPrintf("%s\n", display->getDebugName().c_str()); stringResult += base::StringPrintf("numComponents: %zu\n", compositionInfoList.size()); for (const auto& compositionInfo : compositionInfoList) { compositionInfo.dump(stringResult, nullptr); Loading
services/surfaceflinger/SurfaceFlinger.h +2 −2 Original line number Diff line number Diff line Loading @@ -222,8 +222,8 @@ public: // instances. Each hardware composer instance gets a different sequence id. int32_t mComposerSequenceId; std::unordered_map<int32_t, std::vector<CompositionInfo>> mCompositionInfo; std::unordered_map<int32_t, std::vector<CompositionInfo>> mEndOfFrameCompositionInfo; std::map<wp<IBinder>, std::vector<CompositionInfo>> mCompositionInfo; std::map<wp<IBinder>, std::vector<CompositionInfo>> mEndOfFrameCompositionInfo; }; Loading