デバッグでよく使うコマンド 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