blob: edf56abc4a643209783886bf8b08e484c693336d [file] [log] [blame]
// Definitions for SurfaceFlinger layers.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package android.surfaceflinger;
// Contains a list of all layers.
message LayersProto {
repeated LayerProto layers = 1;
optional SizeProto resolution = 2;
optional string color_mode = 3;
optional string color_transform = 4;
optional int32 global_transform = 5;
}
// Information about each layer.
message LayerProto {
// unique id per layer.
optional int32 id = 1;
// unique name per layer.
optional string name = 2;
// list of children this layer may have. May be empty.
repeated int32 children = 3;
// list of layers that are z order relative to this layer.
repeated int32 relatives = 4;
// The type of layer, ex Color, Layer
optional string type = 5;
optional RegionProto transparent_region = 6;
optional RegionProto visible_region = 7;
optional RegionProto damage_region = 8;
optional uint32 layer_stack = 9;
// The layer's z order. Can be z order in layer stack, relative to parent,
// or relative to another layer specified in zOrderRelative.
optional int32 z = 10;
// The layer's position on the display.
optional PositionProto position = 11;
// The layer's requested position.
optional PositionProto requested_position = 12;
// The layer's size.
optional SizeProto size = 13;
// The layer's crop in it's own bounds.
optional RectProto crop = 14;
// The layer's crop in it's parent's bounds.
optional RectProto final_crop = 15;
optional bool is_opaque = 16;
optional bool invalidate = 17;
optional string dataspace = 18;
optional string pixel_format = 19;
// The layer's actual color.
optional ColorProto color = 20;
// The layer's requested color.
optional ColorProto requested_color = 21;
// Can be any combination of
// hidden = 0x01
// opaque = 0x02,
// secure = 0x80,
optional uint32 flags = 22;
// The layer's actual transform
optional TransformProto transform = 23;
// The layer's requested transform.
optional TransformProto requested_transform = 24;
// The parent layer. This value can be null if there is no parent.
optional int32 parent = 25 [default = -1];
// The layer that this layer has a z order relative to. This value can be null.
optional int32 z_order_relative_of = 26 [default = -1];
// This value can be null if there's nothing to draw.
optional ActiveBufferProto active_buffer = 27;
// The number of frames available.
optional int32 queued_frames = 28;
optional bool refresh_pending = 29;
// The layer's composer backend destination frame
optional RectProto hwc_frame = 30;
// The layer's composer backend source crop
optional FloatRectProto hwc_crop = 31;
// The layer's composer backend transform
optional int32 hwc_transform = 32;
optional int32 window_type = 33;
optional int32 app_id = 34;
// The layer's composition type
optional int32 hwc_composition_type = 35;
// If it's a buffer layer, indicate if the content is protected
optional bool is_protected = 36;
// Current frame number being rendered.
optional uint64 curr_frame = 37;
// A list of barriers that the layer is waiting to update state.
repeated BarrierLayerProto barrier_layer = 38;
}
message PositionProto {
optional float x = 1;
optional float y = 2;
}
message SizeProto {
optional int32 w = 1;
optional int32 h = 2;
}
message TransformProto {
optional float dsdx = 1;
optional float dtdx = 2;
optional float dsdy = 3;
optional float dtdy = 4;
}
message RegionProto {
optional uint64 id = 1;
repeated RectProto rect = 2;
}
message RectProto {
optional int32 left = 1;
optional int32 top = 2;
optional int32 right = 3;
optional int32 bottom = 4;
}
message FloatRectProto {
optional float left = 1;
optional float top = 2;
optional float right = 3;
optional float bottom = 4;
}
message ActiveBufferProto {
optional uint32 width = 1;
optional uint32 height = 2;
optional uint32 stride = 3;
optional int32 format = 4;
}
message ColorProto {
optional float r = 1;
optional float g = 2;
optional float b = 3;
optional float a = 4;
}
message BarrierLayerProto {
// layer id the barrier is waiting on.
optional int32 id = 1;
// frame number the barrier is waiting on.
optional uint64 frame_number = 2;
}