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 Original line Diff line number Diff line
@@ -1438,15 +1438,18 @@ LayerDebugInfo Layer::getLayerDebugInfo() const {
}
}


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


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


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


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


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


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


message PositionProto {
message PositionProto {