From e9289bf5a659da40f94e8a058489e1aefec0a76a Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Tue, 15 Feb 2022 13:00:05 -0800 Subject: [PATCH] Winscope: group surfaceflinger trace properties 1/2 Make it easier to understand surface flinger traces by: - grouping similar properties - adding tooltips demystifying some of the derived properties - cleaning up property names Test: go/winscope load traces Bug: 200284593 Change-Id: Ia8ea55b4b4c2bef1fc38228d3e9738231be403bb --- tools/winscope/src/AccessibilityTraceView.vue | 1 + tools/winscope/src/DataView.vue | 1 + .../src/SurfaceFlingerPropertyGroups.vue | 307 ++++++++++++++++++ .../winscope/src/SurfaceFlingerTraceView.vue | 3 +- tools/winscope/src/TraceView.vue | 15 +- tools/winscope/src/TransformMatrix.vue | 59 ++++ tools/winscope/src/WindowManagerTraceView.vue | 1 + tools/winscope/src/flickerlib/layers/Layer.ts | 15 +- 8 files changed, 396 insertions(+), 6 deletions(-) create mode 100644 tools/winscope/src/SurfaceFlingerPropertyGroups.vue create mode 100644 tools/winscope/src/TransformMatrix.vue diff --git a/tools/winscope/src/AccessibilityTraceView.vue b/tools/winscope/src/AccessibilityTraceView.vue index 5c91bb4f7..a68ef4aa6 100644 --- a/tools/winscope/src/AccessibilityTraceView.vue +++ b/tools/winscope/src/AccessibilityTraceView.vue @@ -20,6 +20,7 @@ :summarizer="summarizer" :presentTags="[]" :presentErrors="[]" + :propertyGroups="false" /> diff --git a/tools/winscope/src/DataView.vue b/tools/winscope/src/DataView.vue index d185f407b..6154fa2cc 100644 --- a/tools/winscope/src/DataView.vue +++ b/tools/winscope/src/DataView.vue @@ -73,6 +73,7 @@ :file="file" :presentTags="[]" :presentErrors="[]" + :propertyGroups="false" ref="view" />
diff --git a/tools/winscope/src/SurfaceFlingerPropertyGroups.vue b/tools/winscope/src/SurfaceFlingerPropertyGroups.vue new file mode 100644 index 000000000..5442d60b8 --- /dev/null +++ b/tools/winscope/src/SurfaceFlingerPropertyGroups.vue @@ -0,0 +1,307 @@ + + + + + + diff --git a/tools/winscope/src/SurfaceFlingerTraceView.vue b/tools/winscope/src/SurfaceFlingerTraceView.vue index 165afb1de..8cd94da07 100644 --- a/tools/winscope/src/SurfaceFlingerTraceView.vue +++ b/tools/winscope/src/SurfaceFlingerTraceView.vue @@ -20,6 +20,7 @@ :summarizer="summarizer" :presentTags="presentTags" :presentErrors="presentErrors" + :propertyGroups="true" /> @@ -36,7 +37,7 @@ export default { summarizer(layer) { const summary = []; - if (layer?.visibilityReason) { + if (layer?.visibilityReason.length > 0) { let reason = ""; if (Array.isArray(layer.visibilityReason)) { reason = layer.visibilityReason.join(", "); diff --git a/tools/winscope/src/TraceView.vue b/tools/winscope/src/TraceView.vue index 59be504c7..a2bbb97a1 100644 --- a/tools/winscope/src/TraceView.vue +++ b/tools/winscope/src/TraceView.vue @@ -111,12 +111,17 @@
-
+
- {{ elem.key }}: {{ elem.value }}
+
+ +
+ + + + + diff --git a/tools/winscope/src/WindowManagerTraceView.vue b/tools/winscope/src/WindowManagerTraceView.vue index d2d709a80..53b23dada 100644 --- a/tools/winscope/src/WindowManagerTraceView.vue +++ b/tools/winscope/src/WindowManagerTraceView.vue @@ -20,6 +20,7 @@ :summarizer="summarizer" :presentTags="presentTags" :presentErrors="presentErrors" + :propertyGroups="false" /> diff --git a/tools/winscope/src/flickerlib/layers/Layer.ts b/tools/winscope/src/flickerlib/layers/Layer.ts index efcf64874..79b80879f 100644 --- a/tools/winscope/src/flickerlib/layers/Layer.ts +++ b/tools/winscope/src/flickerlib/layers/Layer.ts @@ -31,6 +31,14 @@ Layer.fromProto = function (proto: any): Layer { const bufferTransform = Transform.fromProto(proto.bufferTransform, /* position */ null) const hwcCrop = toRectF(proto.hwcCrop) const hwcFrame = toRect(proto.hwcFrame) + const requestedColor = toColor(proto.requestedColor) + const requestedTransform = + Transform.fromProto(proto.requestedTransform, proto.requestedPosition) + const cornerRadiusCrop = toRectF(proto.cornerRadiusCrop) + const inputTransform = + Transform.fromProto(proto.inputWindowInfo ? proto.inputWindowInfo.transform : null) + const inputRegion = + toRegion(proto.inputWindowInfo ? proto.inputWindowInfo.touchableRegion : null) let crop: Rect if (proto.crop) { crop = toRect(proto.crop) @@ -63,7 +71,12 @@ Layer.fromProto = function (proto: any): Layer { crop, proto.isRelativeOf, proto.zOrderRelativeOf, - proto.layerStack + proto.layerStack, + requestedTransform, + requestedColor, + cornerRadiusCrop, + inputTransform, + inputRegion, ); addAttributes(entry, proto);