Loading services/surfaceflinger/SurfaceFlinger.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #define ATRACE_TAG ATRACE_TAG_GRAPHICS #include "SurfaceFlinger.h" #include "TraceUtils.h" #include <android-base/properties.h> #include <android/configuration.h> Loading Loading @@ -79,7 +80,6 @@ #include <utils/String16.h> #include <utils/String8.h> #include <utils/Timers.h> #include <utils/Trace.h> #include <utils/misc.h> #include <algorithm> Loading Loading @@ -1689,7 +1689,12 @@ nsecs_t SurfaceFlinger::calculateExpectedPresentTime(DisplayStatInfo stats) cons } void SurfaceFlinger::onMessageReceived(int32_t what, int64_t vsyncId, nsecs_t expectedVSyncTime) { ATRACE_CALL(); const auto vsyncIn = [&] { if (!ATRACE_ENABLED()) return 0.f; return (expectedVSyncTime - systemTime()) / 1e6f; }(); ATRACE_FORMAT("onMessageReceived %" PRId64 " vsyncIn %.2fms", vsyncId, vsyncIn); switch (what) { case MessageQueue::INVALIDATE: { onMessageInvalidate(vsyncId, expectedVSyncTime); Loading services/surfaceflinger/TraceUtils.h 0 → 100644 +56 −0 Original line number Diff line number Diff line /* * Copyright 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // TODO(b/183120308): This file is a copy of f/b/libs/hwui/utils/TraceUtils.h // It should be migrated to a common place where both SF and hwui could use it. #pragma once #include <cutils/trace.h> #include <utils/Trace.h> #define ATRACE_FORMAT(fmt, ...) \ TraceUtils::TraceEnder __traceEnder = \ (TraceUtils::atraceFormatBegin(fmt, ##__VA_ARGS__), TraceUtils::TraceEnder()) #define ATRACE_FORMAT_BEGIN(fmt, ...) TraceUtils::atraceFormatBegin(fmt, ##__VA_ARGS__) namespace android { class TraceUtils { public: class TraceEnder { public: ~TraceEnder() { ATRACE_END(); } }; static void atraceFormatBegin(const char* fmt, ...) { if (CC_LIKELY(!ATRACE_ENABLED())) return; const int BUFFER_SIZE = 256; va_list ap; char buf[BUFFER_SIZE]; va_start(ap, fmt); vsnprintf(buf, BUFFER_SIZE, fmt, ap); va_end(ap); ATRACE_BEGIN(buf); } }; // class TraceUtils } /* namespace android */ Loading
services/surfaceflinger/SurfaceFlinger.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #define ATRACE_TAG ATRACE_TAG_GRAPHICS #include "SurfaceFlinger.h" #include "TraceUtils.h" #include <android-base/properties.h> #include <android/configuration.h> Loading Loading @@ -79,7 +80,6 @@ #include <utils/String16.h> #include <utils/String8.h> #include <utils/Timers.h> #include <utils/Trace.h> #include <utils/misc.h> #include <algorithm> Loading Loading @@ -1689,7 +1689,12 @@ nsecs_t SurfaceFlinger::calculateExpectedPresentTime(DisplayStatInfo stats) cons } void SurfaceFlinger::onMessageReceived(int32_t what, int64_t vsyncId, nsecs_t expectedVSyncTime) { ATRACE_CALL(); const auto vsyncIn = [&] { if (!ATRACE_ENABLED()) return 0.f; return (expectedVSyncTime - systemTime()) / 1e6f; }(); ATRACE_FORMAT("onMessageReceived %" PRId64 " vsyncIn %.2fms", vsyncId, vsyncIn); switch (what) { case MessageQueue::INVALIDATE: { onMessageInvalidate(vsyncId, expectedVSyncTime); Loading
services/surfaceflinger/TraceUtils.h 0 → 100644 +56 −0 Original line number Diff line number Diff line /* * Copyright 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // TODO(b/183120308): This file is a copy of f/b/libs/hwui/utils/TraceUtils.h // It should be migrated to a common place where both SF and hwui could use it. #pragma once #include <cutils/trace.h> #include <utils/Trace.h> #define ATRACE_FORMAT(fmt, ...) \ TraceUtils::TraceEnder __traceEnder = \ (TraceUtils::atraceFormatBegin(fmt, ##__VA_ARGS__), TraceUtils::TraceEnder()) #define ATRACE_FORMAT_BEGIN(fmt, ...) TraceUtils::atraceFormatBegin(fmt, ##__VA_ARGS__) namespace android { class TraceUtils { public: class TraceEnder { public: ~TraceEnder() { ATRACE_END(); } }; static void atraceFormatBegin(const char* fmt, ...) { if (CC_LIKELY(!ATRACE_ENABLED())) return; const int BUFFER_SIZE = 256; va_list ap; char buf[BUFFER_SIZE]; va_start(ap, fmt); vsnprintf(buf, BUFFER_SIZE, fmt, ap); va_end(ap); ATRACE_BEGIN(buf); } }; // class TraceUtils } /* namespace android */