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

Commit a64ca00e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "SF: Add dumpsys flag to dump raw EDID"

parents 1e0a03cf b6e54371
Loading
Loading
Loading
Loading
+16 −10
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@

#include <cutils/compiler.h>

#include "android-base/parseint.h"
#include "android-base/stringprintf.h"

#include <android/hardware/configstore/1.0/ISurfaceFlingerConfigs.h>
@@ -4056,6 +4057,7 @@ status_t SurfaceFlinger::doDump(int fd, const DumpArgs& args,
                {"--display-id"s, dumper(&SurfaceFlinger::dumpDisplayIdentificationData)},
                {"--dispsync"s,
                 dumper([this](std::string& s) { mScheduler->getPrimaryDispSync().dump(s); })},
                {"--edid"s, argsDumper(&SurfaceFlinger::dumpRawDisplayIdentificationData)},
                {"--frame-events"s, dumper(&SurfaceFlinger::dumpFrameEventsLocked)},
                {"--latency"s, argsDumper(&SurfaceFlinger::dumpStatsLocked)},
                {"--latency-clear"s, argsDumper(&SurfaceFlinger::clearStatsLocked)},
@@ -4284,21 +4286,13 @@ void SurfaceFlinger::dumpDisplayIdentificationData(std::string& result) const {
        }

        if (!isEdid(data)) {
            result.append("unknown identification data: ");
            for (uint8_t byte : data) {
                StringAppendF(&result, "%x ", byte);
            }
            result.append("\n");
            result.append("unknown identification data\n");
            continue;
        }

        const auto edid = parseEdid(data);
        if (!edid) {
            result.append("invalid EDID: ");
            for (uint8_t byte : data) {
                StringAppendF(&result, "%x ", byte);
            }
            result.append("\n");
            result.append("invalid EDID\n");
            continue;
        }

@@ -4308,6 +4302,18 @@ void SurfaceFlinger::dumpDisplayIdentificationData(std::string& result) const {
    }
}

void SurfaceFlinger::dumpRawDisplayIdentificationData(const DumpArgs& args,
                                                      std::string& result) const {
    hwc2_display_t hwcDisplayId;
    uint8_t port;
    DisplayIdentificationData data;

    if (args.size() > 1 && base::ParseUint(String8(args[1]), &hwcDisplayId) &&
        getHwComposer().getDisplayIdentificationData(hwcDisplayId, &port, &data)) {
        result.append(reinterpret_cast<const char*>(data.data()), data.size());
    }
}

void SurfaceFlinger::dumpWideColorInfo(std::string& result) const {
    StringAppendF(&result, "Device has wide color built-in display: %d\n", hasWideColorDisplay);
    StringAppendF(&result, "Device uses color management: %d\n", useColorManagement);
+1 −0
Original line number Diff line number Diff line
@@ -865,6 +865,7 @@ private:
            std::vector<OccupancyTracker::Segment>&& history);
    void dumpBufferingStats(std::string& result) const;
    void dumpDisplayIdentificationData(std::string& result) const;
    void dumpRawDisplayIdentificationData(const DumpArgs&, std::string& result) const;
    void dumpWideColorInfo(std::string& result) const;
    LayersProto dumpDrawingStateProto(uint32_t traceFlags = SurfaceTracing::TRACE_ALL) const;
    void dumpOffscreenLayersProto(LayersProto& layersProto,