Home | History | Annotate | Download | only in layerproto
      1 // Definitions for SurfaceFlinger layers.
      2 
      3 syntax = "proto3";
      4 option optimize_for = LITE_RUNTIME;
      5 package android.surfaceflinger;
      6 
      7 // Contains a list of all layers.
      8 message LayersProto {
      9   repeated LayerProto layers = 1;
     10   SizeProto resolution = 2;
     11   string color_mode = 3;
     12   string color_transform = 4;
     13   int32 global_transform = 5;
     14 }
     15 
     16 // Information about each layer.
     17 message LayerProto {
     18   // unique id per layer.
     19   int32 id = 1;
     20   // unique name per layer.
     21   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   string type = 5;
     28   RegionProto transparent_region = 6;
     29   RegionProto visible_region = 7;
     30   RegionProto damage_region = 8;
     31   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   int32 z = 10;
     35   // The layer's position on the display.
     36   PositionProto position = 11;
     37   // The layer's requested position.
     38   PositionProto requested_position = 12;
     39   // The layer's size.
     40   SizeProto size = 13;
     41   // The layer's crop in it's own bounds.
     42   RectProto crop = 14;
     43   // The layer's crop in it's parent's bounds.
     44   RectProto final_crop = 15 [deprecated=true];
     45   bool is_opaque = 16;
     46   bool invalidate = 17;
     47   string dataspace = 18;
     48   string pixel_format = 19;
     49   // The layer's actual color.
     50   ColorProto color = 20;
     51   // The layer's requested color.
     52   ColorProto requested_color = 21;
     53   // Can be any combination of
     54   //    hidden = 0x01
     55   //    opaque = 0x02,
     56   //    secure = 0x80,
     57   uint32 flags = 22;
     58   // The layer's actual transform
     59   TransformProto transform = 23;
     60   // The layer's requested transform.
     61   TransformProto requested_transform = 24;
     62   // The parent layer. This value can be null if there is no parent.
     63   int32 parent = 25;
     64   // The layer that this layer has a z order relative to. This value can be null.
     65   int32 z_order_relative_of = 26;
     66   // This value can be null if there's nothing to draw.
     67   ActiveBufferProto active_buffer = 27;
     68   // The number of frames available.
     69   int32 queued_frames = 28;
     70   bool refresh_pending = 29;
     71   // The layer's composer backend destination frame
     72   RectProto hwc_frame = 30;
     73   // The layer's composer backend source crop
     74   FloatRectProto hwc_crop = 31;
     75   // The layer's composer backend transform
     76   int32 hwc_transform = 32;
     77   int32 window_type = 33 [deprecated=true];
     78   int32 app_id = 34 [deprecated=true];
     79   // The layer's composition type
     80   int32 hwc_composition_type = 35;
     81   // If it's a buffer layer, indicate if the content is protected
     82   bool is_protected = 36;
     83   // Current frame number being rendered.
     84   uint64 curr_frame = 37;
     85   // A list of barriers that the layer is waiting to update state.
     86   repeated BarrierLayerProto barrier_layer = 38;
     87   // If active_buffer is not null, record its transform.
     88   TransformProto buffer_transform = 39;
     89   int32 effective_scaling_mode = 40;
     90   // Layer's corner radius.
     91   float corner_radius = 41;
     92   // Metadata map. May be empty.
     93   map<int32, bytes> metadata = 42;
     94 
     95   TransformProto effective_transform = 43;
     96   FloatRectProto source_bounds = 44;
     97   FloatRectProto bounds = 45;
     98   FloatRectProto screen_bounds = 46;
     99 
    100   InputWindowInfoProto input_window_info = 47;
    101 }
    102 
    103 message PositionProto {
    104   float x = 1;
    105   float y = 2;
    106 }
    107 
    108 message SizeProto {
    109   int32 w = 1;
    110   int32 h = 2;
    111 }
    112 
    113 message TransformProto {
    114   float dsdx = 1;
    115   float dtdx = 2;
    116   float dsdy = 3;
    117   float dtdy = 4;
    118   int32 type = 5;
    119 }
    120 
    121 message RegionProto {
    122   reserved 1;  // Previously: uint64 id
    123   repeated RectProto rect = 2;
    124 }
    125 
    126 message RectProto {
    127   int32 left   = 1;
    128   int32 top    = 2;
    129   int32 right  = 3;
    130   int32 bottom = 4;
    131 }
    132 
    133 message FloatRectProto {
    134   float left = 1;
    135   float top = 2;
    136   float right = 3;
    137   float bottom = 4;
    138 }
    139 
    140 message ActiveBufferProto {
    141   uint32 width = 1;
    142   uint32 height = 2;
    143   uint32 stride = 3;
    144   int32 format = 4;
    145 }
    146 
    147 message ColorProto {
    148   float r = 1;
    149   float g = 2;
    150   float b = 3;
    151   float a = 4;
    152 }
    153 
    154 message BarrierLayerProto {
    155   // layer id the barrier is waiting on.
    156   int32 id = 1;
    157   // frame number the barrier is waiting on.
    158   uint64 frame_number = 2;
    159 }
    160 
    161 message InputWindowInfoProto {
    162     uint32 layout_params_flags = 1;
    163     uint32 layout_params_type = 2;
    164     RectProto frame = 3;
    165     RegionProto touchable_region = 4;
    166 
    167     uint32 surface_inset = 5;
    168     bool visible = 6;
    169     bool can_receive_keys = 7;
    170     bool has_focus = 8;
    171     bool has_wallpaper = 9;
    172 
    173     float global_scale_factor = 10;
    174     float window_x_scale = 11;
    175     float window_y_scale = 12;
    176 
    177     uint32 crop_layer_id = 13;
    178     bool replace_touchable_region_with_crop = 14;
    179     RectProto touchable_region_crop = 15;
    180 }
    181