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