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

Commit 35798877 authored by Vishnu Nair's avatar Vishnu Nair
Browse files

Support priority based dumpsys in surface flinger

Call dump with no args when called with CRITICAL priority. Register
service with support for critical priority dumps.

BUG: 31774394

Test: lunch mini_emulator_x86-userdebug && make -j56
Test: adb bugreport ~/tmp.zip
Test: adb shell dumpsys --priority CRITICAL
Test: mmm -j32 frameworks/native/services/utils && \
      adb sync data && adb shell /data/nativetest/prioritydumper_test/prioritydumper_test && \
      adb shell /data/nativetest64/prioritydumper_test/prioritydumper_test && \
      printf "\n\n#### ALL TESTS PASSED ####\n"

Change-Id: Iec35ef8026d4d9346c83bab203bed8524c28bf89
parent 3bafe396
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
cc_library_static {
    name: "libsurfaceflingerincludes",
    export_include_dirs: ["."],
    static_libs = ["libserviceutils"],
    export_static_lib_headers = ["libserviceutils"],
}

subdirs = ["tests/fakehwc"]
 No newline at end of file
+6 −2
Original line number Diff line number Diff line
@@ -67,7 +67,10 @@ LOCAL_STATIC_LIBRARIES := \
    libtrace_proto \
    libvkjson \
    libvr_manager \
    libvrflinger
    libvrflinger \
    libserviceutils

LOCAL_EXPORT_STATIC_LIBRARY_HEADERS := libserviceutils

LOCAL_SHARED_LIBRARIES := \
    android.frameworks.vr.composer@1.0 \
@@ -145,7 +148,8 @@ LOCAL_SHARED_LIBRARIES := \
    libdl

LOCAL_WHOLE_STATIC_LIBRARIES := libsigchain
LOCAL_STATIC_LIBRARIES := libtrace_proto
LOCAL_STATIC_LIBRARIES := libtrace_proto \
    libserviceutils

LOCAL_MODULE := surfaceflinger

+1 −2
Original line number Diff line number Diff line
@@ -3459,8 +3459,7 @@ void SurfaceFlinger::setPowerMode(const sp<IBinder>& display, int mode) {

// ---------------------------------------------------------------------------

status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args)
{
status_t SurfaceFlinger::doDump(int fd, const Vector<String16>& args) {
    String8 result;

    IPCThreadState* ipc = IPCThreadState::self();
+12 −1
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@

#include <hardware/hwcomposer_defs.h>

#include <serviceutils/PriorityDumper.h>

#include <system/graphics.h>

#include <private/gui/LayerState.h>
@@ -105,6 +107,7 @@ enum {
};

class SurfaceFlinger : public BnSurfaceComposer,
                       public PriorityDumper,
                       private IBinder::DeathRecipient,
#ifdef USE_HWC2
                       private HWC2::ComposerCallback
@@ -272,7 +275,7 @@ private:
     */
    virtual status_t onTransact(uint32_t code, const Parcel& data,
        Parcel* reply, uint32_t flags);
    virtual status_t dump(int fd, const Vector<String16>& args);
    virtual status_t dump(int fd, const Vector<String16>& args) { return priorityDump(fd, args); }

    /* ------------------------------------------------------------------------
     * ISurfaceComposer interface
@@ -592,6 +595,13 @@ private:
    /* ------------------------------------------------------------------------
     * Debugging & dumpsys
     */
public:
    status_t dumpCritical(int fd, const Vector<String16>& /*args*/) {
        return doDump(fd, Vector<String16>());
    }

    status_t dumpAll(int fd, const Vector<String16>& args) { return doDump(fd, args); }
private:
    void listLayersLocked(const Vector<String16>& args, size_t& index, String8& result) const;
    void dumpStatsLocked(const Vector<String16>& args, size_t& index, String8& result) const;
    void clearStatsLocked(const Vector<String16>& args, size_t& index, String8& result);
@@ -616,6 +626,7 @@ private:
    bool isLayerTripleBufferingDisabled() const {
        return this->mLayerTripleBufferingDisabled;
    }
    status_t doDump(int fd, const Vector<String16>& args);

#ifdef USE_HWC2
    /* ------------------------------------------------------------------------
+1 −1
Original line number Diff line number Diff line
@@ -3005,7 +3005,7 @@ void SurfaceFlinger::setPowerMode(const sp<IBinder>& display, int mode) {

// ---------------------------------------------------------------------------

status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args)
status_t SurfaceFlinger::doDump(int fd, const Vector<String16>& args)
{
    String8 result;

Loading