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

Commit 6ca3519c authored by Yichi Chen's avatar Yichi Chen
Browse files

Surfaceflinger: Add transform info into dumpsys

The minor dumpsys SurfaceFlinger enhancement explicitly exposes the
transform info of active buffers and HWC layers. It helps developers
understand more about when and why HWC layers are rotated.

Bug: b/80267683
Test: Keep dumpsys SurfaceFlinger during monkey test
Change-Id: Ia0d78170129346891cb6834736f7eff7d13c32d3
parent cf50ab96
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -1438,15 +1438,18 @@ LayerDebugInfo Layer::getLayerDebugInfo() const {
}

void Layer::miniDumpHeader(String8& result) {
    result.append("----------------------------------------");
    result.append("---------------------------------------\n");
    result.append("-------------------------------");
    result.append("-------------------------------");
    result.append("-----------------------------\n");
    result.append(" Layer name\n");
    result.append("           Z | ");
    result.append(" Comp Type | ");
    result.append(" Transform | ");
    result.append("  Disp Frame (LTRB) | ");
    result.append("         Source Crop (LTRB)\n");
    result.append("----------------------------------------");
    result.append("---------------------------------------\n");
    result.append("-------------------------------");
    result.append("-------------------------------");
    result.append("-----------------------------\n");
}

void Layer::miniDump(String8& result, int32_t displayId) const {
@@ -1475,13 +1478,15 @@ void Layer::miniDump(String8& result, int32_t displayId) const {
        result.appendFormat("  %10d | ", layerState.z);
    }
    result.appendFormat("%10s | ", to_string(getCompositionType(displayId)).c_str());
    result.appendFormat("%10s | ", to_string(hwcInfo.transform).c_str());
    const Rect& frame = hwcInfo.displayFrame;
    result.appendFormat("%4d %4d %4d %4d | ", frame.left, frame.top, frame.right, frame.bottom);
    const FloatRect& crop = hwcInfo.sourceCrop;
    result.appendFormat("%6.1f %6.1f %6.1f %6.1f\n", crop.left, crop.top, crop.right, crop.bottom);

    result.append("- - - - - - - - - - - - - - - - - - - - ");
    result.append("- - - - - - - - - - - - - - - - - - - -\n");
    result.append("- - - - - - - - - - - - - - - -");
    result.append("- - - - - - - - - - - - - - - -");
    result.append("- - - - - - - - - - - - - - -\n");
}

void Layer::dumpFrameStats(String8& result) const {
@@ -1964,6 +1969,8 @@ void Layer::writeToProto(LayerProto* layerInfo, LayerVector::StateSet stateSet)
    auto buffer = getBE().compositionInfo.mBuffer;
    if (buffer != nullptr) {
        LayerProtoHelper::writeToProto(buffer, layerInfo->mutable_active_buffer());
        LayerProtoHelper::writeToProto(Transform(mCurrentTransform),
                                       layerInfo->mutable_buffer_transform());
    }

    layerInfo->set_queued_frames(getQueuedFrameCount());
+2 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ LayerProtoParser::Layer* LayerProtoParser::generateLayer(const LayerProto& layer
    layer->transform = generateTransform(layerProto.transform());
    layer->requestedTransform = generateTransform(layerProto.requested_transform());
    layer->activeBuffer = generateActiveBuffer(layerProto.active_buffer());
    layer->bufferTransform = generateTransform(layerProto.buffer_transform());
    layer->queuedFrames = layerProto.queued_frames();
    layer->refreshPending = layerProto.refresh_pending();
    layer->hwcFrame = generateRect(layerProto.hwc_frame());
@@ -312,6 +313,7 @@ std::string LayerProtoParser::Layer::to_string() const {
    StringAppendF(&result, "      zOrderRelativeOf=%s\n",
                  zOrderRelativeOf == nullptr ? "none" : zOrderRelativeOf->name.c_str());
    StringAppendF(&result, "      activeBuffer=%s,", activeBuffer.to_string().c_str());
    StringAppendF(&result, " tr=%s", bufferTransform.to_string().c_str());
    StringAppendF(&result, " queued-frames=%d, mRefreshPending=%d,", queuedFrames, refreshPending);
    StringAppendF(&result, " windowType=%d, appId=%d", windowType, appId);

+1 −0
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ public:
        Layer* parent = 0;
        Layer* zOrderRelativeOf = 0;
        LayerProtoParser::ActiveBuffer activeBuffer;
        Transform bufferTransform;
        int32_t queuedFrames;
        bool refreshPending;
        LayerProtoParser::Rect hwcFrame;
+2 −0
Original line number Diff line number Diff line
@@ -80,6 +80,8 @@ message LayerProto {
  optional int32 hwc_composition_type = 35;
  // If it's a buffer layer, indicate if the content is protected
  optional bool is_protected = 36;
  // If active_buffer is not null, record its transform
  optional TransformProto buffer_transform = 37;
}

message PositionProto {