1// Definitions for SurfaceFlinger layers.
2
3syntax = "proto2";
4option optimize_for = LITE_RUNTIME;
5package android.surfaceflinger;
6
7// Contains a list of all layers.
8message LayersProto {
9  repeated LayerProto layers = 1;
10  optional SizeProto resolution = 2;
11  optional string color_mode = 3;
12  optional string color_transform = 4;
13  optional int32 global_transform = 5;
14}
15
16// Information about each layer.
17message LayerProto {
18  // unique id per layer.
19  optional int32 id = 1;
20  // unique name per layer.
21  optional string name = 2;
22  // list of children this layer may have. May be empty.
23  repeated int32 children = 3;
24  // list of layers that are z order relative to this layer.
25  repeated int32 relatives = 4;
26  // The type of layer, ex Color, Layer
27  optional string type = 5;
28  optional RegionProto transparent_region = 6;
29  optional RegionProto visible_region = 7;
30  optional RegionProto damage_region = 8;
31  optional uint32 layer_stack = 9;
32  // The layer's z order. Can be z order in layer stack, relative to parent,
33  // or relative to another layer specified in zOrderRelative.
34  optional int32 z = 10;
35  // The layer's position on the display.
36  optional PositionProto position = 11;
37  // The layer's requested position.
38  optional PositionProto requested_position = 12;
39  // The layer's size.
40  optional SizeProto size = 13;
41  // The layer's crop in it's own bounds.
42  optional RectProto crop = 14;
43  // The layer's crop in it's parent's bounds.
44  optional RectProto final_crop = 15;
45  optional bool is_opaque = 16;
46  optional bool invalidate = 17;
47  optional string dataspace = 18;
48  optional string pixel_format = 19;
49  // The layer's actual color.
50  optional ColorProto color = 20;
51  // The layer's requested color.
52  optional ColorProto requested_color = 21;
53  // Can be any combination of
54  //    hidden = 0x01
55  //    opaque = 0x02,
56  //    secure = 0x80,
57  optional uint32 flags = 22;
58  // The layer's actual transform
59  optional TransformProto transform = 23;
60  // The layer's requested transform.
61  optional TransformProto requested_transform = 24;
62  // The parent layer. This value can be null if there is no parent.
63  optional int32 parent = 25 [default = -1];
64  // The layer that this layer has a z order relative to. This value can be null.
65  optional int32 z_order_relative_of = 26 [default = -1];
66  // This value can be null if there's nothing to draw.
67  optional ActiveBufferProto active_buffer = 27;
68  // The number of frames available.
69  optional int32 queued_frames = 28;
70  optional bool refresh_pending = 29;
71  // The layer's composer backend destination frame
72  optional RectProto hwc_frame = 30;
73  // The layer's composer backend source crop
74  optional FloatRectProto hwc_crop = 31;
75  // The layer's composer backend transform
76  optional int32 hwc_transform = 32;
77  optional int32 window_type = 33;
78  optional int32 app_id = 34;
79  // The layer's composition type
80  optional int32 hwc_composition_type = 35;
81  // If it's a buffer layer, indicate if the content is protected
82  optional bool is_protected = 36;
83}
84
85message PositionProto {
86  optional float x = 1;
87  optional float y = 2;
88}
89
90message SizeProto {
91  optional int32 w = 1;
92  optional int32 h = 2;
93}
94
95message TransformProto {
96  optional float dsdx = 1;
97  optional float dtdx = 2;
98  optional float dsdy = 3;
99  optional float dtdy = 4;
100}
101
102message RegionProto {
103  optional uint64 id = 1;
104  repeated RectProto rect = 2;
105}
106
107message RectProto {
108  optional int32 left   = 1;
109  optional int32 top    = 2;
110  optional int32 right  = 3;
111  optional int32 bottom = 4;
112}
113
114message FloatRectProto {
115  optional float left = 1;
116  optional float top = 2;
117  optional float right = 3;
118  optional float bottom = 4;
119}
120
121message ActiveBufferProto {
122  optional uint32 width = 1;
123  optional uint32 height = 2;
124  optional uint32 stride = 3;
125  optional int32 format = 4;
126}
127
128message ColorProto {
129  optional float r = 1;
130  optional float g = 2;
131  optional float b = 3;
132  optional float a = 4;
133}
134