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 @@
+
+
+
+
+
+
+
Calculated
+
Transform:
+
+
+
Crop:Raw value read from proto.bounds. This is the buffer size or
+ requested crop cropped by parent bounds.
+
+
{{ layer.bounds }}
+
+
Final Bounds:Raw value read from proto.screenBounds. This is the calculated crop
+ transformed.
+
{{ layer.screenBounds }}
+
+
+
Requested
+
Transform:
+
+
+
Crop:
+
{{ layer.crop ? layer.crop : "[empty]" }}
+
+
+
+
+
+
+
Size:
+
{{ layer.activeBuffer }}
+
+
Frame Number:
+
{{ layer.currFrame }}
+
+
Transform:Rotates or flips the buffer in place. Used with display transform
+ hint to cancel out any buffer transformation when sending to
+ HWC.
+
{{ layer.bufferTransform }}
+
+
+
+
Destination Frame:Scales buffer to the frame by overriding the requested transform
+ for this layer.
+
{{ layer.proto.destinationFrame }}
+
+
Destination Frame ignored because layer has eIgnoreDestinationFrame
+ flag set.
+
+
+ Container layer
+
+
+ Effect layer
+
+
+
+
+
+
+
z-order:
+
{{ layer.z }}
+
+
relative parent:Layer is z-ordered relative to its relative parents but its bounds
+ and other properties are inherited from its parents.
+
{{
+ layer.zOrderRelativeOfId == -1 ? "none" : layer.zOrderRelativeOfId
+ }}
+
+
+
+
+
+
Calculated
+
Color:
+
{{ layer.color }}
+
+
Shadow:
+
{{ layer.shadowRadius }} px
+
+
Corner Radius:
+
radius:{{ formatFloat(layer.cornerRadius) }} px
+
+
Corner Radius Crop:Crop used to define the bounds of the corner radii. If the bounds
+ are greater than the layer bounds then the rounded corner will not
+ be visible.
+
{{ layer.cornerRadiusCrop }}
+
+
Blur:
+
{{
+ layer.proto.backgroundBlurRadius
+ ? layer.proto.backgroundBlurRadius
+ : 0
+ }}
+ px
+
+
+
Requested
+
Color:
+
{{ layer.requestedColor }}
+
+
Shadow:
+
{{
+ layer.proto.requestedShadowRadius
+ ? layer.proto.requestedShadowRadius
+ : 0
+ }}
+ px
+
+
Corner Radius:
+
{{
+ layer.proto.requestedCornerRadius
+ ? formatFloat(layer.proto.requestedCornerRadius)
+ : 0
+ }}
+ px
+
+
+
+
+
+
To Display Transform:
+
+
+
Touchable Region:
+
{{ layer.inputRegion }}
+
+
+
Config:
+
+
+
Focusable:
+
{{ layer.proto.inputWindowInfo.focusable }}
+
+
Crop touch region with layer:
+
{{
+ layer.proto.inputWindowInfo.cropLayerId <= 0
+ ? "none"
+ : layer.proto.inputWindowInfo.cropLayerId
+ }}
+
+
Replace touch region with crop:
+
{{
+ layer.proto.inputWindowInfo.replaceTouchableRegionWithCrop
+ }}
+
+
+
+ No input channel set
+
+
+
+
+
+
+
Flags:
+
{{ layer.flags }}
+
+
+
+ {{ reason.key }}:
+ {{ reason.value }}
+
+
+
+
+
+
+
+
+
+
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 }}
+
+
+
+
+
+
{{ transform.getTypeAsString() }}
+
{{ formatFloat(transform.matrix.dsdx) }}
+
{{ formatFloat(transform.matrix.dsdy) }}
+
+ {{ formatFloat(transform.matrix.tx) }}Translate x
+
+
+
{{ formatFloat(transform.matrix.dtdx) }}
+
{{ formatFloat(transform.matrix.dtdy) }}
+
+ {{ formatFloat(transform.matrix.ty) }}Translate y
+
+
+
0
+
0
+
1
+
+
+
+
+
+
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);