summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-09-13 22:57:58 -0700
committerMathias Agopian <mathias@google.com>2010-09-13 23:16:58 -0700
commit35b48d10bc9e064201d3d54d2d476314684a7a05 (patch)
treed02ab13e61841afd584dc00e375909e6240ccc7e /include
parent0e152daec325eff736853fbbc0d1cab0822df2e3 (diff)
downloadframeworks_native-35b48d10bc9e064201d3d54d2d476314684a7a05.zip
frameworks_native-35b48d10bc9e064201d3d54d2d476314684a7a05.tar.gz
frameworks_native-35b48d10bc9e064201d3d54d2d476314684a7a05.tar.bz2
Add logging of various important graphics events
There are 16 events logged in the event log: SF_APP_DEQUEUE_BEFORE SF_APP_DEQUEUE_AFTER SF_APP_LOCK_BEFORE SF_APP_LOCK_AFTER SF_APP_QUEUE SF_REPAINT SF_COMPOSITION_COMPLETE SF_UNLOCK_CLIENTS SF_SWAP_BUFFERS SF_REPAINT_DONE SF_FB_POST_BEFORE SF_FB_POST_AFTER SF_FB_DEQUEUE_BEFORE SF_FB_DEQUEUE_AFTER SF_FB_LOCK_BEFORE SF_FB_LOCK_AFTER all events log the buffer conserned and a timestamp in microseconds. by default the logging is not enabled, to turn it on: adb shell service call SurfaceFlinger 1006 i31 1 adb shell setprop debug.graphic_log 1 The effect is immediate in SurfaceFlinger, but applications need to be restarted. Change-Id: Ifc2e31f7aed072d9a7dede20ff2ce59231edbec1
Diffstat (limited to 'include')
-rw-r--r--include/ui/FramebufferNativeWindow.h4
-rw-r--r--include/ui/GraphicLog.h70
2 files changed, 74 insertions, 0 deletions
diff --git a/include/ui/FramebufferNativeWindow.h b/include/ui/FramebufferNativeWindow.h
index 0f4594f..c913355 100644
--- a/include/ui/FramebufferNativeWindow.h
+++ b/include/ui/FramebufferNativeWindow.h
@@ -56,6 +56,9 @@ public:
status_t setUpdateRectangle(const Rect& updateRect);
status_t compositionComplete();
+ // for debugging only
+ int getCurrentBufferIndex() const;
+
private:
friend class LightRefBase<FramebufferNativeWindow>;
~FramebufferNativeWindow(); // this class cannot be overloaded
@@ -77,6 +80,7 @@ private:
int32_t mNumBuffers;
int32_t mNumFreeBuffers;
int32_t mBufferHead;
+ int32_t mCurrentBufferIndex;
bool mUpdateOnDemand;
};
diff --git a/include/ui/GraphicLog.h b/include/ui/GraphicLog.h
new file mode 100644
index 0000000..f929e6a
--- /dev/null
+++ b/include/ui/GraphicLog.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+
+#ifndef _UI_GRAPHIC_LOG_H
+#define _UI_GRAPHIC_LOG_H
+
+#include <utils/Singleton.h>
+#include <cutils/compiler.h>
+
+namespace android {
+
+class GraphicLog : public Singleton<GraphicLog>
+{
+ int32_t mEnabled;
+ static void logImpl(int32_t tag, int32_t buffer);
+ static void logImpl(int32_t tag, int32_t identity, int32_t buffer);
+
+public:
+ enum {
+ SF_APP_DEQUEUE_BEFORE = 60000,
+ SF_APP_DEQUEUE_AFTER = 60001,
+ SF_APP_LOCK_BEFORE = 60002,
+ SF_APP_LOCK_AFTER = 60003,
+ SF_APP_QUEUE = 60004,
+
+ SF_REPAINT = 60005,
+ SF_COMPOSITION_COMPLETE = 60006,
+ SF_UNLOCK_CLIENTS = 60007,
+ SF_SWAP_BUFFERS = 60008,
+ SF_REPAINT_DONE = 60009,
+
+ SF_FB_POST_BEFORE = 60010,
+ SF_FB_POST_AFTER = 60011,
+ SF_FB_DEQUEUE_BEFORE = 60012,
+ SF_FB_DEQUEUE_AFTER = 60013,
+ SF_FB_LOCK_BEFORE = 60014,
+ SF_FB_LOCK_AFTER = 60015,
+ };
+
+ inline void log(int32_t tag, int32_t buffer) {
+ if (CC_UNLIKELY(mEnabled))
+ logImpl(tag, buffer);
+ }
+ inline void log(int32_t tag, int32_t identity, int32_t buffer) {
+ if (CC_UNLIKELY(mEnabled))
+ logImpl(tag, identity, buffer);
+ }
+
+ GraphicLog();
+
+ void setEnabled(bool enable);
+};
+
+}
+
+#endif // _UI_GRAPHIC_LOG_H
+