diff options
author | Mathias Agopian <mathias@google.com> | 2010-09-13 22:57:58 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2010-09-13 23:16:58 -0700 |
commit | 35b48d10bc9e064201d3d54d2d476314684a7a05 (patch) | |
tree | d02ab13e61841afd584dc00e375909e6240ccc7e /include | |
parent | 0e152daec325eff736853fbbc0d1cab0822df2e3 (diff) | |
download | frameworks_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.h | 4 | ||||
-rw-r--r-- | include/ui/GraphicLog.h | 70 |
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 + |