曲阜做网站哪家好,asp.net网站打不开html页面,包头土右旗建设局网站,模板建站服务器背景#xff1a;
针对上一篇文章 aosp15上SurfaceFlinger的dump部分新特性-无Layer信息输出如何解决#xff1f; 给大家布置了一个小作业#xff0c;那就是需要实现dumpsys SurfaceFlinger相关输出中可以携带上所有的Layer的详细信息需求#xff0c;今天来带大家详细实现一…背景
针对上一篇文章 aosp15上SurfaceFlinger的dump部分新特性-无Layer信息输出如何解决 给大家布置了一个小作业那就是需要实现dumpsys SurfaceFlinger相关输出中可以携带上所有的Layer的详细信息需求今天来带大家详细实现一下这个需求。
实战踩坑过程
本来想参考以前版本方式直接使用mDrawingState.traverse的相关方法来进行遍历每一个Layer然后输出相关的信息。
std::string compositionLayers;mDrawingState.traverseInReverseZOrder([](Layer* layer) {//输出相关的layer信息auto* compositionState layer-getCompositionState();android::base::StringAppendF(compositionLayers, * Layer %p (%s)\n, layer,layer-getDebugName() ? layer-getDebugName(): unknown);compositionState-dump(compositionLayers);});但是明显发现这个mDrawingState.traverse方法压根就不会进入对应的循环一行代码都不会执行所以自然没有任何输出。
其实从SurfaceFlinger.cpp的相关代码也可以看出相关的痕迹要调用 mDrawingState.traverse相关方法一般都会有一个判断值mLayerLifecycleManagerEnabled
if (!mLayerLifecycleManagerEnabled) {StringAppendF(result, Composition layers\n);mDrawingState.traverseInZOrder([](Layer* layer) {auto* compositionState layer-getCompositionState();if (!compositionState || !compositionState-isVisible) return;android::base::StringAppendF(result, * Layer %p (%s)\n, layer,layer-getDebugName() ? layer-getDebugName(): unknown);compositionState-dump(result);});StringAppendF(result, Offscreen Layers\n);for (Layer* offscreenLayer : mOffscreenLayers) {offscreenLayer-traverse(LayerVector::StateSet::Drawing,[](Layer* layer) { layer-dumpOffscreenDebugInfo(result); });}}但是在aosp15版本上这个mLayerLifecycleManagerEnabled值一直都是true所以根本不会进入执行这块的mDrawingState.traverse也就是说在aosp15版本的SurfaceFlinger已经弃用了这个mDrawingState.traverse。
正确实战实现
代码实现 实现要采用2种方式 方式1–采用dumpsys SurfaceFlinger --带上参数主要是可以单独dump layer数据 代码实现如下 这个dumpsysAllLayer的实现代码如下
方式2采用setprop方式然后控制prop可以整体进行dump 在总的dump方法最后加入如下代码 这样就可以实现通过prop值控制是否在正常dumpsys SurfaceFlinger输出中带上所有Layer的信息。
使用方式 方式1
adb shell dumpsys SurfaceFlinger --all-layer
adb shell dumpsys SurfaceFlinger --all-layerLayer (Display 0 nameBuilt-in Screen#43) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000002, tr[0.00, 0.00][0.00, 0.00]parentnonezOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (WindowedMagnification:0:31#3) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, 0, 0], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentDisplay 0 nameBuilt-in Screen#43zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (HideDisplayCutout:0:14#4) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentWindowedMagnification:0:31#3zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (OneHanded:0:14#5) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentHideDisplayCutout:0:14#4zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (FullscreenMagnification:0:12#6) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentOneHanded:0:14#5zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (Leaf:0:1#7) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentFullscreenMagnification:0:12#6zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (WallpaperWindowToken{970337b tokenandroid.os.Binder2e0df0a}#62) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentLeaf:0:1#7zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, 方式2 先进行prop的设置开启dump所有的layers
adb shell setprop debug.sf.dump_all_layers true然后再执行dumpsys SurfaceFlinger
Window Infos:max send vsync id: -1max send delay (ns): 0 nsunsent messages: 0 #正常情况下的结束地方 Layer (Display 0 nameBuilt-in Screen#43) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000002, tr[0.00, 0.00][0.00, 0.00]parentnonezOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (WindowedMagnification:0:31#3) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, 0, 0], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentDisplay 0 nameBuilt-in Screen#43zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (HideDisplayCutout:0:14#4) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentWindowedMagnification:0:31#3zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (OneHanded:0:14#5) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentHideDisplayCutout:0:14#4zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (FullscreenMagnification:0:12#6) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentOneHanded:0:14#5zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (Leaf:0:1#7) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentFullscreenMagnification:0:12#6zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000, Layer (WallpaperWindowToken{970337b tokenandroid.os.Binder2e0df0a}#62) uid1000Region TransparentRegion (this0 count0)Region VisibleRegion (this0 count0)Region SurfaceDamageRegion (this0 count0)layerStack 0, z 0, pos(0,0), size( 0, 0), crop[ 0, 0, -1, -1], cornerRadius0.000000, isProtected0, isTrustedOverlay0, isOpaque0, invalidate0, dataspaceBT709 sRGB Full range, defaultPixelFormat, backgroundBlurRadius0, color(-1.000,-1.000,-1.000,1.000), flags0x00000000, tr[0.00, 0.00][0.00, 0.00]parentLeaf:0:1#7zOrderRelativeOfnoneactiveBuffer[ 0x 0: 0,Unknown/None], tr[0.00, 0.00][0.00, 0.00] queued-frames0 metadata{9:4bytes}, cornerRadiusCrop[0.00, 0.00, 0.00, 0.00], shadowRadius0.000,
默认情况下debug.sf.dump_all_layers是false所以不会dump 更多framework实战干货请关注下面“千里马学框架”