Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5434a781 authored by Yiwei Zhang's avatar Yiwei Zhang
Browse files

SurfaceFlinger: Get rid of String8 in dumpsys

Test: build and gui/ui/renderengine/surfaceflinger tests and compare
dumpsys SurfaceFlinger results
Change-Id: Iafdaf73a0acbbbb8fbafc930ad86285106a07e13
parent 161410bc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -122,6 +122,7 @@ cc_library_shared {

    shared_libs: [
        "android.hardware.graphics.common@1.1",
        "libbase",
        "libsync",
        "libbinder",
        "libbufferhub",
+27 −27
Original line number Diff line number Diff line
@@ -18,10 +18,10 @@

#define LOG_TAG "FrameEvents"

#include <android-base/stringprintf.h>
#include <cutils/compiler.h>  // For CC_[UN]LIKELY
#include <inttypes.h>
#include <utils/Log.h>
#include <utils/String8.h>

#include <algorithm>
#include <limits>
@@ -29,6 +29,7 @@

namespace android {

using base::StringAppendF;

// ============================================================================
// FrameEvents
@@ -86,50 +87,49 @@ void FrameEvents::checkFencesForCompletion() {
    releaseFence->getSignalTime();
}

static void dumpFenceTime(String8& outString, const char* name,
        bool pending, const FenceTime& fenceTime) {
    outString.appendFormat("--- %s", name);
static void dumpFenceTime(std::string& outString, const char* name, bool pending,
                          const FenceTime& fenceTime) {
    StringAppendF(&outString, "--- %s", name);
    nsecs_t signalTime = fenceTime.getCachedSignalTime();
    if (Fence::isValidTimestamp(signalTime)) {
        outString.appendFormat("%" PRId64 "\n", signalTime);
        StringAppendF(&outString, "%" PRId64 "\n", signalTime);
    } else if (pending || signalTime == Fence::SIGNAL_TIME_PENDING) {
        outString.appendFormat("Pending\n");
        outString.append("Pending\n");
    } else if (&fenceTime == FenceTime::NO_FENCE.get()){
        outString.appendFormat("N/A\n");
        outString.append("N/A\n");
    } else {
        outString.appendFormat("Error\n");
        outString.append("Error\n");
    }
}

void FrameEvents::dump(String8& outString) const
{
void FrameEvents::dump(std::string& outString) const {
    if (!valid) {
        return;
    }

    outString.appendFormat("-- Frame %" PRIu64 "\n", frameNumber);
    outString.appendFormat("--- Posted      \t%" PRId64 "\n", postedTime);
    outString.appendFormat("--- Req. Present\t%" PRId64 "\n", requestedPresentTime);
    StringAppendF(&outString, "-- Frame %" PRIu64 "\n", frameNumber);
    StringAppendF(&outString, "--- Posted      \t%" PRId64 "\n", postedTime);
    StringAppendF(&outString, "--- Req. Present\t%" PRId64 "\n", requestedPresentTime);

    outString.appendFormat("--- Latched     \t");
    outString.append("--- Latched     \t");
    if (FrameEvents::isValidTimestamp(latchTime)) {
        outString.appendFormat("%" PRId64 "\n", latchTime);
        StringAppendF(&outString, "%" PRId64 "\n", latchTime);
    } else {
        outString.appendFormat("Pending\n");
        outString.append("Pending\n");
    }

    outString.appendFormat("--- Refresh (First)\t");
    outString.append("--- Refresh (First)\t");
    if (FrameEvents::isValidTimestamp(firstRefreshStartTime)) {
        outString.appendFormat("%" PRId64 "\n", firstRefreshStartTime);
        StringAppendF(&outString, "%" PRId64 "\n", firstRefreshStartTime);
    } else {
        outString.appendFormat("Pending\n");
        outString.append("Pending\n");
    }

    outString.appendFormat("--- Refresh (Last)\t");
    outString.append("--- Refresh (Last)\t");
    if (FrameEvents::isValidTimestamp(lastRefreshStartTime)) {
        outString.appendFormat("%" PRId64 "\n", lastRefreshStartTime);
        StringAppendF(&outString, "%" PRId64 "\n", lastRefreshStartTime);
    } else {
        outString.appendFormat("Pending\n");
        outString.append("Pending\n");
    }

    dumpFenceTime(outString, "Acquire           \t",
@@ -139,11 +139,11 @@ void FrameEvents::dump(String8& outString) const
    dumpFenceTime(outString, "Display Present   \t",
            !addPostCompositeCalled, *displayPresentFence);

    outString.appendFormat("--- DequeueReady  \t");
    outString.append("--- DequeueReady  \t");
    if (FrameEvents::isValidTimestamp(dequeueReadyTime)) {
        outString.appendFormat("%" PRId64 "\n", dequeueReadyTime);
        StringAppendF(&outString, "%" PRId64 "\n", dequeueReadyTime);
    } else {
        outString.appendFormat("Pending\n");
        outString.append("Pending\n");
    }

    dumpFenceTime(outString, "Release           \t",
@@ -206,11 +206,11 @@ static bool FrameNumberLessThan(
    return lhs.valid;
}

void FrameEventHistory::dump(String8& outString) const {
void FrameEventHistory::dump(std::string& outString) const {
    auto earliestFrame = std::min_element(
            mFrames.begin(), mFrames.end(), &FrameNumberLessThan);
    if (!earliestFrame->valid) {
        outString.appendFormat("-- N/A\n");
        outString.append("-- N/A\n");
        return;
    }
    for (auto frame = earliestFrame; frame != mFrames.end(); ++frame) {
+1 −2
Original line number Diff line number Diff line
@@ -18,8 +18,7 @@

namespace android {

void appendGuiConfigString(String8& configStr)
{
void appendGuiConfigString(std::string& configStr) {
    static const char* config =
            " [libgui"
#ifdef DONT_USE_FENCE_SYNC
+26 −26
Original line number Diff line number Diff line
@@ -16,13 +16,14 @@

#include <gui/LayerDebugInfo.h>

#include <android-base/stringprintf.h>

#include <ui/DebugUtils.h>

#include <binder/Parcel.h>

#include <utils/String8.h>

using namespace android;
using android::base::StringAppendF;

#define RETURN_ON_ERROR(X) do {status_t res = (X); if (res != NO_ERROR) return res;} while(false)

@@ -108,38 +109,37 @@ status_t LayerDebugInfo::readFromParcel(const Parcel* parcel) {
}

std::string to_string(const LayerDebugInfo& info) {
    String8 result;
    std::string result;

    result.appendFormat("+ %s (%s)\n", info.mType.c_str(), info.mName.c_str());
    StringAppendF(&result, "+ %s (%s)\n", info.mType.c_str(), info.mName.c_str());
    info.mTransparentRegion.dump(result, "TransparentRegion");
    info.mVisibleRegion.dump(result, "VisibleRegion");
    info.mSurfaceDamageRegion.dump(result, "SurfaceDamageRegion");

    result.appendFormat("      layerStack=%4d, z=%9d, pos=(%g,%g), size=(%4d,%4d), ",
            info.mLayerStack, info.mZ, static_cast<double>(info.mX), static_cast<double>(info.mY),
            info.mWidth, info.mHeight);
    StringAppendF(&result, "      layerStack=%4d, z=%9d, pos=(%g,%g), size=(%4d,%4d), ",
                  info.mLayerStack, info.mZ, static_cast<double>(info.mX),
                  static_cast<double>(info.mY), info.mWidth, info.mHeight);

    result.appendFormat("crop=%s, ", to_string(info.mCrop).c_str());
    result.appendFormat("isOpaque=%1d, invalidate=%1d, ", info.mIsOpaque, info.mContentDirty);
    result.appendFormat("dataspace=%s, ", dataspaceDetails(info.mDataSpace).c_str());
    result.appendFormat("pixelformat=%s, ", decodePixelFormat(info.mPixelFormat).c_str());
    result.appendFormat("color=(%.3f,%.3f,%.3f,%.3f), flags=0x%08x, ",
    StringAppendF(&result, "crop=%s, ", to_string(info.mCrop).c_str());
    StringAppendF(&result, "isOpaque=%1d, invalidate=%1d, ", info.mIsOpaque, info.mContentDirty);
    StringAppendF(&result, "dataspace=%s, ", dataspaceDetails(info.mDataSpace).c_str());
    StringAppendF(&result, "pixelformat=%s, ", decodePixelFormat(info.mPixelFormat).c_str());
    StringAppendF(&result, "color=(%.3f,%.3f,%.3f,%.3f), flags=0x%08x, ",
                  static_cast<double>(info.mColor.r), static_cast<double>(info.mColor.g),
                  static_cast<double>(info.mColor.b), static_cast<double>(info.mColor.a),
                  info.mFlags);
    result.appendFormat("tr=[%.2f, %.2f][%.2f, %.2f]",
            static_cast<double>(info.mMatrix[0][0]), static_cast<double>(info.mMatrix[0][1]),
            static_cast<double>(info.mMatrix[1][0]), static_cast<double>(info.mMatrix[1][1]));
    StringAppendF(&result, "tr=[%.2f, %.2f][%.2f, %.2f]", static_cast<double>(info.mMatrix[0][0]),
                  static_cast<double>(info.mMatrix[0][1]), static_cast<double>(info.mMatrix[1][0]),
                  static_cast<double>(info.mMatrix[1][1]));
    result.append("\n");
    result.appendFormat("      parent=%s\n", info.mParentName.c_str());
    result.appendFormat("      activeBuffer=[%4ux%4u:%4u,%s],",
            info.mActiveBufferWidth, info.mActiveBufferHeight,
            info.mActiveBufferStride,
    StringAppendF(&result, "      parent=%s\n", info.mParentName.c_str());
    StringAppendF(&result, "      activeBuffer=[%4ux%4u:%4u,%s],", info.mActiveBufferWidth,
                  info.mActiveBufferHeight, info.mActiveBufferStride,
                  decodePixelFormat(info.mActiveBufferFormat).c_str());
    result.appendFormat(" queued-frames=%d, mRefreshPending=%d",
            info.mNumQueuedFrames, info.mRefreshPending);
    StringAppendF(&result, " queued-frames=%d, mRefreshPending=%d", info.mNumQueuedFrames,
                  info.mRefreshPending);
    result.append("\n");
    return std::string(result.c_str());
    return result;
}

} // android
+2 −3
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@ namespace android {

struct FrameEvents;
class FrameEventHistoryDelta;
class String8;


// Identifiers for all the events that may be recorded or reported.
@@ -72,7 +71,7 @@ struct FrameEvents {
    bool hasDequeueReadyInfo() const;

    void checkFencesForCompletion();
    void dump(String8& outString) const;
    void dump(std::string& outString) const;

    bool valid{false};
    int connectId{0};
@@ -112,7 +111,7 @@ public:
    FrameEvents* getFrame(uint64_t frameNumber);
    FrameEvents* getFrame(uint64_t frameNumber, size_t* iHint);
    void checkFencesForCompletion();
    void dump(String8& outString) const;
    void dump(std::string& outString) const;

    static constexpr size_t MAX_FRAME_HISTORY = 8;

Loading