xref: /aosp_15_r20/development/tools/winscope/protos/surfaceflinger/udc/layers.proto (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
1*90c8c64dSAndroid Build Coastguard Worker// Definitions for SurfaceFlinger layers.
2*90c8c64dSAndroid Build Coastguard Worker
3*90c8c64dSAndroid Build Coastguard Workersyntax = "proto3";
4*90c8c64dSAndroid Build Coastguard Workeroption optimize_for = LITE_RUNTIME;
5*90c8c64dSAndroid Build Coastguard Worker
6*90c8c64dSAndroid Build Coastguard Workerimport "protos/surfaceflinger/udc/common.proto";
7*90c8c64dSAndroid Build Coastguard Worker
8*90c8c64dSAndroid Build Coastguard Workerpackage android.surfaceflinger;
9*90c8c64dSAndroid Build Coastguard Worker
10*90c8c64dSAndroid Build Coastguard Worker// Contains a list of all layers.
11*90c8c64dSAndroid Build Coastguard Workermessage LayersProto {
12*90c8c64dSAndroid Build Coastguard Worker  repeated LayerProto layers = 1;
13*90c8c64dSAndroid Build Coastguard Worker}
14*90c8c64dSAndroid Build Coastguard Worker
15*90c8c64dSAndroid Build Coastguard Worker// Must match definition in the IComposerClient HAL
16*90c8c64dSAndroid Build Coastguard Workerenum HwcCompositionType {
17*90c8c64dSAndroid Build Coastguard Worker    // Invalid composition type
18*90c8c64dSAndroid Build Coastguard Worker    INVALID = 0;
19*90c8c64dSAndroid Build Coastguard Worker    // Layer was composited by the client into the client target buffer
20*90c8c64dSAndroid Build Coastguard Worker    CLIENT = 1;
21*90c8c64dSAndroid Build Coastguard Worker    // Layer was composited by the device through hardware overlays
22*90c8c64dSAndroid Build Coastguard Worker    DEVICE = 2;
23*90c8c64dSAndroid Build Coastguard Worker    // Layer was composited by the device using a color
24*90c8c64dSAndroid Build Coastguard Worker    SOLID_COLOR = 3;
25*90c8c64dSAndroid Build Coastguard Worker    // Similar to DEVICE, but the layer position may have been asynchronously set
26*90c8c64dSAndroid Build Coastguard Worker    // through setCursorPosition
27*90c8c64dSAndroid Build Coastguard Worker    CURSOR = 4;
28*90c8c64dSAndroid Build Coastguard Worker    // Layer was composited by the device via a sideband stream
29*90c8c64dSAndroid Build Coastguard Worker    SIDEBAND = 5;
30*90c8c64dSAndroid Build Coastguard Worker    // Layer was composited by hardware optimized for display decoration
31*90c8c64dSAndroid Build Coastguard Worker    DISPLAY_DECORATION = 6;
32*90c8c64dSAndroid Build Coastguard Worker}
33*90c8c64dSAndroid Build Coastguard Worker
34*90c8c64dSAndroid Build Coastguard Worker// Information about each layer.
35*90c8c64dSAndroid Build Coastguard Workermessage LayerProto {
36*90c8c64dSAndroid Build Coastguard Worker  // unique id per layer.
37*90c8c64dSAndroid Build Coastguard Worker  int32 id = 1;
38*90c8c64dSAndroid Build Coastguard Worker  // unique name per layer.
39*90c8c64dSAndroid Build Coastguard Worker  string name = 2;
40*90c8c64dSAndroid Build Coastguard Worker  // list of children this layer may have. May be empty.
41*90c8c64dSAndroid Build Coastguard Worker  repeated int32 children = 3;
42*90c8c64dSAndroid Build Coastguard Worker  // list of layers that are z order relative to this layer.
43*90c8c64dSAndroid Build Coastguard Worker  repeated int32 relatives = 4;
44*90c8c64dSAndroid Build Coastguard Worker  // The type of layer, ex Color, Layer
45*90c8c64dSAndroid Build Coastguard Worker  string type = 5;
46*90c8c64dSAndroid Build Coastguard Worker  RegionProto transparent_region = 6;
47*90c8c64dSAndroid Build Coastguard Worker  RegionProto visible_region = 7;
48*90c8c64dSAndroid Build Coastguard Worker  RegionProto damage_region = 8;
49*90c8c64dSAndroid Build Coastguard Worker  uint32 layer_stack = 9;
50*90c8c64dSAndroid Build Coastguard Worker  // The layer's z order. Can be z order in layer stack, relative to parent,
51*90c8c64dSAndroid Build Coastguard Worker  // or relative to another layer specified in zOrderRelative.
52*90c8c64dSAndroid Build Coastguard Worker  int32 z = 10;
53*90c8c64dSAndroid Build Coastguard Worker  // The layer's position on the display.
54*90c8c64dSAndroid Build Coastguard Worker  PositionProto position = 11;
55*90c8c64dSAndroid Build Coastguard Worker  // The layer's requested position.
56*90c8c64dSAndroid Build Coastguard Worker  PositionProto requested_position = 12;
57*90c8c64dSAndroid Build Coastguard Worker  // The layer's size.
58*90c8c64dSAndroid Build Coastguard Worker  SizeProto size = 13;
59*90c8c64dSAndroid Build Coastguard Worker  // The layer's crop in it's own bounds.
60*90c8c64dSAndroid Build Coastguard Worker  RectProto crop = 14;
61*90c8c64dSAndroid Build Coastguard Worker  // The layer's crop in it's parent's bounds.
62*90c8c64dSAndroid Build Coastguard Worker  RectProto final_crop = 15 [deprecated=true];
63*90c8c64dSAndroid Build Coastguard Worker  bool is_opaque = 16;
64*90c8c64dSAndroid Build Coastguard Worker  bool invalidate = 17;
65*90c8c64dSAndroid Build Coastguard Worker  string dataspace = 18;
66*90c8c64dSAndroid Build Coastguard Worker  string pixel_format = 19;
67*90c8c64dSAndroid Build Coastguard Worker  // The layer's actual color.
68*90c8c64dSAndroid Build Coastguard Worker  ColorProto color = 20;
69*90c8c64dSAndroid Build Coastguard Worker  // The layer's requested color.
70*90c8c64dSAndroid Build Coastguard Worker  ColorProto requested_color = 21;
71*90c8c64dSAndroid Build Coastguard Worker  // Can be any combination of
72*90c8c64dSAndroid Build Coastguard Worker  //    hidden = 0x01
73*90c8c64dSAndroid Build Coastguard Worker  //    opaque = 0x02,
74*90c8c64dSAndroid Build Coastguard Worker  //    secure = 0x80,
75*90c8c64dSAndroid Build Coastguard Worker  uint32 flags = 22;
76*90c8c64dSAndroid Build Coastguard Worker  // The layer's actual transform
77*90c8c64dSAndroid Build Coastguard Worker  TransformProto transform = 23;
78*90c8c64dSAndroid Build Coastguard Worker  // The layer's requested transform.
79*90c8c64dSAndroid Build Coastguard Worker  TransformProto requested_transform = 24;
80*90c8c64dSAndroid Build Coastguard Worker  // The parent layer. This value can be null if there is no parent.
81*90c8c64dSAndroid Build Coastguard Worker  int32 parent = 25;
82*90c8c64dSAndroid Build Coastguard Worker  // The layer that this layer has a z order relative to. This value can be null.
83*90c8c64dSAndroid Build Coastguard Worker  int32 z_order_relative_of = 26;
84*90c8c64dSAndroid Build Coastguard Worker  // This value can be null if there's nothing to draw.
85*90c8c64dSAndroid Build Coastguard Worker  ActiveBufferProto active_buffer = 27;
86*90c8c64dSAndroid Build Coastguard Worker  // The number of frames available.
87*90c8c64dSAndroid Build Coastguard Worker  int32 queued_frames = 28;
88*90c8c64dSAndroid Build Coastguard Worker  bool refresh_pending = 29;
89*90c8c64dSAndroid Build Coastguard Worker  // The layer's composer backend destination frame
90*90c8c64dSAndroid Build Coastguard Worker  RectProto hwc_frame = 30;
91*90c8c64dSAndroid Build Coastguard Worker  // The layer's composer backend source crop
92*90c8c64dSAndroid Build Coastguard Worker  FloatRectProto hwc_crop = 31;
93*90c8c64dSAndroid Build Coastguard Worker  // The layer's composer backend transform
94*90c8c64dSAndroid Build Coastguard Worker  int32 hwc_transform = 32;
95*90c8c64dSAndroid Build Coastguard Worker  int32 window_type = 33 [deprecated=true];
96*90c8c64dSAndroid Build Coastguard Worker  int32 app_id = 34 [deprecated=true];
97*90c8c64dSAndroid Build Coastguard Worker  // The layer's composition type
98*90c8c64dSAndroid Build Coastguard Worker  HwcCompositionType hwc_composition_type = 35;
99*90c8c64dSAndroid Build Coastguard Worker  // If it's a buffer layer, indicate if the content is protected
100*90c8c64dSAndroid Build Coastguard Worker  bool is_protected = 36;
101*90c8c64dSAndroid Build Coastguard Worker  // Current frame number being rendered.
102*90c8c64dSAndroid Build Coastguard Worker  uint64 curr_frame = 37;
103*90c8c64dSAndroid Build Coastguard Worker  // A list of barriers that the layer is waiting to update state.
104*90c8c64dSAndroid Build Coastguard Worker  repeated BarrierLayerProto barrier_layer = 38;
105*90c8c64dSAndroid Build Coastguard Worker  // If active_buffer is not null, record its transform.
106*90c8c64dSAndroid Build Coastguard Worker  TransformProto buffer_transform = 39;
107*90c8c64dSAndroid Build Coastguard Worker  int32 effective_scaling_mode = 40;
108*90c8c64dSAndroid Build Coastguard Worker  // Layer's corner radius.
109*90c8c64dSAndroid Build Coastguard Worker  float corner_radius = 41;
110*90c8c64dSAndroid Build Coastguard Worker  // Metadata map. May be empty.
111*90c8c64dSAndroid Build Coastguard Worker  map<int32, bytes> metadata = 42;
112*90c8c64dSAndroid Build Coastguard Worker
113*90c8c64dSAndroid Build Coastguard Worker  TransformProto effective_transform = 43;
114*90c8c64dSAndroid Build Coastguard Worker  FloatRectProto source_bounds = 44;
115*90c8c64dSAndroid Build Coastguard Worker  FloatRectProto bounds = 45;
116*90c8c64dSAndroid Build Coastguard Worker  FloatRectProto screen_bounds = 46;
117*90c8c64dSAndroid Build Coastguard Worker
118*90c8c64dSAndroid Build Coastguard Worker  InputWindowInfoProto input_window_info = 47;
119*90c8c64dSAndroid Build Coastguard Worker
120*90c8c64dSAndroid Build Coastguard Worker  // Crop used to draw the rounded corner.
121*90c8c64dSAndroid Build Coastguard Worker  FloatRectProto corner_radius_crop = 48;
122*90c8c64dSAndroid Build Coastguard Worker
123*90c8c64dSAndroid Build Coastguard Worker  // length of the shadow to draw around the layer, it may be set on the
124*90c8c64dSAndroid Build Coastguard Worker  // layer or set by a parent layer.
125*90c8c64dSAndroid Build Coastguard Worker  float shadow_radius = 49;
126*90c8c64dSAndroid Build Coastguard Worker  ColorTransformProto color_transform = 50;
127*90c8c64dSAndroid Build Coastguard Worker
128*90c8c64dSAndroid Build Coastguard Worker  bool is_relative_of = 51;
129*90c8c64dSAndroid Build Coastguard Worker  // Layer's background blur radius in pixels.
130*90c8c64dSAndroid Build Coastguard Worker  int32 background_blur_radius = 52;
131*90c8c64dSAndroid Build Coastguard Worker
132*90c8c64dSAndroid Build Coastguard Worker  uint32 owner_uid = 53;
133*90c8c64dSAndroid Build Coastguard Worker
134*90c8c64dSAndroid Build Coastguard Worker  // Regions of a layer, where blur should be applied.
135*90c8c64dSAndroid Build Coastguard Worker  repeated BlurRegion blur_regions = 54;
136*90c8c64dSAndroid Build Coastguard Worker
137*90c8c64dSAndroid Build Coastguard Worker  bool is_trusted_overlay = 55;
138*90c8c64dSAndroid Build Coastguard Worker
139*90c8c64dSAndroid Build Coastguard Worker  // Corner radius explicitly set on layer rather than inherited
140*90c8c64dSAndroid Build Coastguard Worker  float requested_corner_radius = 56;
141*90c8c64dSAndroid Build Coastguard Worker
142*90c8c64dSAndroid Build Coastguard Worker  RectProto destination_frame = 57;
143*90c8c64dSAndroid Build Coastguard Worker
144*90c8c64dSAndroid Build Coastguard Worker  uint32 original_id = 58;
145*90c8c64dSAndroid Build Coastguard Worker}
146*90c8c64dSAndroid Build Coastguard Worker
147*90c8c64dSAndroid Build Coastguard Workermessage PositionProto {
148*90c8c64dSAndroid Build Coastguard Worker  float x = 1;
149*90c8c64dSAndroid Build Coastguard Worker  float y = 2;
150*90c8c64dSAndroid Build Coastguard Worker}
151*90c8c64dSAndroid Build Coastguard Worker
152*90c8c64dSAndroid Build Coastguard Workermessage FloatRectProto {
153*90c8c64dSAndroid Build Coastguard Worker  float left = 1;
154*90c8c64dSAndroid Build Coastguard Worker  float top = 2;
155*90c8c64dSAndroid Build Coastguard Worker  float right = 3;
156*90c8c64dSAndroid Build Coastguard Worker  float bottom = 4;
157*90c8c64dSAndroid Build Coastguard Worker}
158*90c8c64dSAndroid Build Coastguard Worker
159*90c8c64dSAndroid Build Coastguard Workermessage ActiveBufferProto {
160*90c8c64dSAndroid Build Coastguard Worker  uint32 width = 1;
161*90c8c64dSAndroid Build Coastguard Worker  uint32 height = 2;
162*90c8c64dSAndroid Build Coastguard Worker  uint32 stride = 3;
163*90c8c64dSAndroid Build Coastguard Worker  int32 format = 4;
164*90c8c64dSAndroid Build Coastguard Worker  uint64 usage = 5;
165*90c8c64dSAndroid Build Coastguard Worker}
166*90c8c64dSAndroid Build Coastguard Worker
167*90c8c64dSAndroid Build Coastguard Workermessage BarrierLayerProto {
168*90c8c64dSAndroid Build Coastguard Worker  // layer id the barrier is waiting on.
169*90c8c64dSAndroid Build Coastguard Worker  int32 id = 1;
170*90c8c64dSAndroid Build Coastguard Worker  // frame number the barrier is waiting on.
171*90c8c64dSAndroid Build Coastguard Worker  uint64 frame_number = 2;
172*90c8c64dSAndroid Build Coastguard Worker}
173*90c8c64dSAndroid Build Coastguard Worker
174