デバッグでよく使うコマンド dumpsys編 その4 SurfaceFlinger
前回はdumpsysのActivity系情報を紹介しましたが今回はSurface情報を紹介します。
Surfaceの情報を取得するには、SurfaceをまとめるSurfaceFlingerというサービスのdumpを取得する必要があります。
いつも通りのdumpsysコマンドですが、SurfaceFlingerの情報のみを取得する場合は下記のようなコマンドになります。
$ adb shell dumpsys SurfaceFlinger
取得できる情報は下記”SurfaceFlingerのdump”となります。
よく使う情報としては"Visible layers"以下にならぶLayerの情報です。
このLayer一つがSurface一枚を表しています。
よく見る値としては下記になります。
・z:Surfaceのz orderを表す。
Surfaceの重なり方を確認する際に使用する。
・visibleRegion:Surfaceが表示される領域を表す。
[左、上、右、下]の座標を確認する際に使用する。
・alpha:Surfaceの透明度を表す。
0に近い値であるほど透明になる。
このほかにもDisplayの情報やWindowのdumpとの連携等紹介したいことは他にもあるのですが、今回はここまでとします。
次回も引き続きSurfaceFlingerの情報を紹介します。
ちなみに以下のSurfaceFlingerのdumpはエミュレータ起動後キーガード表示時に取得したdumpとなっています。
●SurfaceFlingerのdump
Build configuration: [sf] [libui] [libgui] Sync configuration: [using: EGL_KHR_fence_sync] Visible layers (count = 9) + LayerDim 0xb72deb50 (DimLayer) Region transparentRegion (this=0xb72decb4, count=1) [ 0, 0, 0, 0] Region visibleRegion (this=0xb72deb58, count=1) [ 0, 0, 0, 0] layerStack= 0, z= 0, pos=(0,0), size=( 16, 16), crop=( 0, 0, -1, -1), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000001, tr=[1.00, 0.00][0.00, 1.00] client=0xb72de248 format= 0, activeBuffer=[ 0x 0: 0, 0], queued-frames=0, mRefreshPending=0 mTexName=3 mCurrentTexture=-1 mCurrentCrop=[0,0,0,0] mCurrentTransform=0 mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[1x1], default-format=1, transform-hint=00, FIFO(0)={} + LayerDim 0xb72e0a58 (DimLayer) Region transparentRegion (this=0xb72e0bbc, count=1) [ 0, 0, 0, 0] Region visibleRegion (this=0xb72e0a60, count=1) [ 0, 0, 0, 0] layerStack= 0, z= 0, pos=(0,0), size=( 16, 16), crop=( 0, 0, -1, -1), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000001, tr=[1.00, 0.00][0.00, 1.00] client=0xb72de248 format= 0, activeBuffer=[ 0x 0: 0, 0], queued-frames=0, mRefreshPending=0 mTexName=4 mCurrentTexture=-1 mCurrentCrop=[0,0,0,0] mCurrentTransform=0 mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[1x1], default-format=1, transform-hint=00, FIFO(0)={} + Layer 0xb72e2ec0 (FocusedStackFrame) Region transparentRegion (this=0xb72e3024, count=1) [ 0, 0, 0, 0] Region visibleRegion (this=0xb72e2ec8, count=1) [ 0, 0, 0, 0] layerStack= 0, z= 0, pos=(0,0), size=( 1, 1), crop=( 0, 0, -1, -1), isOpaque=0, invalidate=0, alpha=0x4d, flags=0x00000001, tr=[1.00, 0.00][0.00, 1.00] client=0xb72de248 format= 1, activeBuffer=[ 0x 0: 0, 0], queued-frames=0, mRefreshPending=0 mTexName=5 mCurrentTexture=-1 mCurrentCrop=[0,0,0,0] mCurrentTransform=0 mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[1x1], default-format=1, transform-hint=00, FIFO(0)={} + Layer 0xb72db960 (com.android.launcher/com.android.launcher2.Launcher) Region transparentRegion (this=0xb72dbac4, count=1) [ 0, 0, 0, 0] Region visibleRegion (this=0xb72db968, count=1) [ 0, 0, 0, 0] layerStack= 0, z= 21000, pos=(0,0), size=( 800,1216), crop=( 0, 0, 800,1216), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000001, tr=[1.00, 0.00][0.00, 1.00] client=0xb72e6fa8 format= 1, activeBuffer=[ 800x1216: 800, 1], queued-frames=0, mRefreshPending=0 mTexName=2 mCurrentTexture=2 mCurrentCrop=[0,0,0,0] mCurrentTransform=0 mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[800x1216], default-format=1, transform-hint=00, FIFO(0)={} [00:0xb72d81d8] state=FREE , 0xb72e7690 [ 800x1216: 800, 1] [01:0xb72f09c0] state=FREE , 0xb72f0b00 [ 800x1216: 800, 1] >[02:0xb72f0d40] state=ACQUIRED, 0xb72f0f58 [ 800x1216: 800, 1] + Layer 0xb72e76c8 (com.android.systemui.ImageWallpaper) Region transparentRegion (this=0xb72e782c, count=1) [ 0, 0, 0, 0] Region visibleRegion (this=0xb72e76d0, count=1) [ 0, 0, 800, 1280] layerStack= 0, z= 21005, pos=(0,0), size=(1406,1280), crop=( 0, 0, 800,1280), isOpaque=1, invalidate=0, alpha=0xff, flags=0x00000000, tr=[1.00, 0.00][0.00, 1.00] client=0xb72ddc18 format= 2, activeBuffer=[1406x1280:1406, 2], queued-frames=0, mRefreshPending=0 mTexName=8 mCurrentTexture=0 mCurrentCrop=[0,0,0,0] mCurrentTransform=0 mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[1406x1280], default-format=2, transform-hint=00, FIFO(0)={} >[00:0xb72db870] state=ACQUIRED, 0xb72f0990 [1406x1280:1406, 2] + Layer 0xb72f2998 (Keyguard) Region transparentRegion (this=0xb72f2afc, count=1) [ 0, 0, 0, 0] Region visibleRegion (this=0xb72f29a0, count=1) [ 0, 0, 800, 1280] layerStack= 0, z= 131000, pos=(0,0), size=( 800,1280), crop=( 0, 0, 800,1280), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000000, tr=[1.00, 0.00][0.00, 1.00] client=0xb72ddc18 format= 1, activeBuffer=[ 800x1280: 800, 1], queued-frames=0, mRefreshPending=0 mTexName=11 mCurrentTexture=2 mCurrentCrop=[0,0,0,0] mCurrentTransform=0 mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[800x1280], default-format=1, transform-hint=00, FIFO(0)={} [00:0xb72f04d8] state=FREE , 0xb72ee580 [ 800x1280: 800, 1] [01:0xb72e4da0] state=FREE , 0xb72db4d8 [ 800x1280: 800, 1] >[02:0xb72eee30] state=ACQUIRED, 0xb72f00e8 [ 800x1280: 800, 1] + Layer 0xb72ec178 (StatusBar) Region transparentRegion (this=0xb72ec2dc, count=1) [ 0, 0, 0, 0] Region visibleRegion (this=0xb72ec180, count=1) [ 0, 0, 800, 33] layerStack= 0, z= 161000, pos=(0,0), size=( 800, 33), crop=( 0, 0, 800, 33), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000000, tr=[1.00, 0.00][0.00, 1.00] client=0xb72ddc18 format= 1, activeBuffer=[ 800x 33: 800, 1], queued-frames=0, mRefreshPending=0 mTexName=9 mCurrentTexture=2 mCurrentCrop=[0,0,0,0] mCurrentTransform=0 mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[800x33], default-format=1, transform-hint=00, FIFO(0)={} [00:0xb72e9670] state=FREE , 0xb72e2e78 [ 800x 33: 800, 1] [01:0xb72e4e38] state=FREE , 0xb72e9900 [ 800x 33: 800, 1] >[02:0xb72e75b0] state=ACQUIRED, 0xb72ee5b0 [ 800x 33: 800, 1] + Layer 0xb72f1710 (NavigationBar) Region transparentRegion (this=0xb72f1874, count=1) [ 0, 0, 0, 0] Region visibleRegion (this=0xb72f1718, count=1) [ 0, 1216, 800, 1280] layerStack= 0, z= 201000, pos=(0,1216), size=( 800, 64), crop=( 0, 0, 800, 64), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000000, tr=[1.00, 0.00][0.00, 1.00] client=0xb72ddc18 format= 1, activeBuffer=[ 800x 64: 800, 1], queued-frames=0, mRefreshPending=0 mTexName=10 mCurrentTexture=0 mCurrentCrop=[0,0,0,0] mCurrentTransform=0 mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[800x64], default-format=1, transform-hint=00, FIFO(0)={} >[00:0xb72e96f0] state=ACQUIRED, 0xb72db158 [ 800x 64: 800, 1] + Layer 0xb72e5088 (StrictModeFlash) Region transparentRegion (this=0xb72e51ec, count=1) [ 0, 0, 0, 0] Region visibleRegion (this=0xb72e5090, count=1) [ 0, 0, 0, 0] layerStack= 0, z= 1010000, pos=(0,0), size=( 800,1280), crop=( 0, 0, -1, -1), isOpaque=0, invalidate=0, alpha=0xff, flags=0x00000001, tr=[1.00, 0.00][0.00, 1.00] client=0xb72de248 format= 1, activeBuffer=[ 800x1280: 800, 1], queued-frames=0, mRefreshPending=0 mTexName=6 mCurrentTexture=1 mCurrentCrop=[0,0,0,0] mCurrentTransform=0 mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[800x1280], default-format=1, transform-hint=00, FIFO(0)={} [00:0xb72e7010] state=FREE , 0xb72e7090 [ 1x 1: 1, 1] >[01:0xb72e4cb0] state=ACQUIRED, 0xb72d9ef8 [ 800x1280: 800, 1] Displays (1 entries) + DisplayDevice: Built-in Screen type=0, hwcId=0, layerStack=0, ( 800x1280), ANativeWindow=0xb72d8d40, orient= 0 (type=00000000), flips=1108, isSecure=1, secureVis=0, acquired=1, numLayers=4 v:[0,0,800,1280], f:[0,0,800,1280], s:[0,0,800,1280],transform:[[1.000,0.000,0.000][0.000,1.000,0.000][0.000,0.000,1.000]] mAbandoned=0 -BufferQueue mMaxAcquiredBufferCount=1, mDequeueBufferCannotBlock=0, default-size=[800x1280], default-format=4, transform-hint=00, FIFO(0)={} [00:0xb72d9dc0] state=DEQUEUED, 0xb72d9ec8 [ 800x1280: 800, 4] >[01:0xb72db0c8] state=ACQUIRED, 0xb72dae50 [ 800x1280: 800, 4] SurfaceFlinger global state: EGL implementation : 1.2 Android Driver 1.2.0 EGL_KHR_fence_sync EGL_KHR_image_base EGL_ANDROID_image_native_buffer EGL_ANDROID_swap_rectangle GLES: Android, Android PixelFlinger 1.4, OpenGL ES-CM 1.0 GL_EXT_debug_marker GL_OES_byte_coordinates GL_OES_fixed_point GL_OES_single_precision GL_OES_read_format GL_OES_compressed_paletted_texture GL_OES_draw_texture GL_OES_matrix_get GL_OES_query_matrix GL_OES_EGL_image GL_OES_EGL_sync GL_OES_compressed_ETC1_RGB8_texture GL_ARB_texture_compression GL_ARB_texture_non_power_of_two GL_ANDROID_user_clip_plane GL_ANDROID_vertex_buffer_object GL_ANDROID_generate_mipmap Region undefinedRegion (this=0xb72d8b54, count=1) [ 0, 0, 0, 0] orientation=0, canDraw=1 last eglSwapBuffers() time: 69.977000 us last transaction time : 507.097000 us transaction-flags : 00000000 refresh-rate : 97.656002 fps x-dpi : 165.203247 y-dpi : 165.035538 EGL_NATIVE_VISUAL_ID : 4 gpu_to_cpu_unsupported : 0 eglSwapBuffers time: 0.000000 us transaction time: 0.000000 us VSYNC state: disabled soft-vsync: disabled numListeners=6, events-delivered: 238 0xb72d9f50: count=-1 0xb72de1d8: count=-1 0xb72de6a0: count=-1 0xb72de9c8: count=-1 0xb72e5050: count=-1 0xb72e6fe8: count=-1 h/w composer state: h/w composer not present and enabled Allocated buffers: 0xb72d9ec8: 2000.00 KiB | 800 ( 800) x 1280 | 4 | 0x00001a33 0xb72d9ef8: 4000.00 KiB | 800 ( 800) x 1280 | 1 | 0x00000933 0xb72dae50: 2000.00 KiB | 800 ( 800) x 1280 | 4 | 0x00001a33 0xb72db158: 200.00 KiB | 800 ( 800) x 64 | 1 | 0x00000933 0xb72db4d8: 4000.00 KiB | 800 ( 800) x 1280 | 1 | 0x00000933 0xb72e2e78: 103.12 KiB | 800 ( 800) x 33 | 1 | 0x00000933 0xb72e7090: 0.00 KiB | 1 ( 1) x 1 | 1 | 0x00000933 0xb72e7690: 3800.00 KiB | 800 ( 800) x 1216 | 1 | 0x00000933 0xb72e9900: 103.12 KiB | 800 ( 800) x 33 | 1 | 0x00000933 0xb72ee580: 4000.00 KiB | 800 ( 800) x 1280 | 1 | 0x00000933 0xb72ee5b0: 103.12 KiB | 800 ( 800) x 33 | 1 | 0x00000933 0xb72f00e8: 4000.00 KiB | 800 ( 800) x 1280 | 1 | 0x00000933 0xb72f0990: 7030.00 KiB | 1406 (1406) x 1280 | 2 | 0x00000933 0xb72f0b00: 3800.00 KiB | 800 ( 800) x 1216 | 1 | 0x00000933 0xb72f0f58: 3800.00 KiB | 800 ( 800) x 1216 | 1 | 0x00000933 Total allocated (estimate): 38939.38 KB