/* vim:set ts=2 sw=2 sts=2 et: */ syntax = "proto2"; option optimize_for = LITE_RUNTIME; package mozilla.layers.layerscope; // =============================== // Server to Client messages // =============================== message FramePacket { optional uint64 value = 1; optional float scale = 2; } message ColorPacket { required uint64 layerref = 1; optional uint32 width = 2; optional uint32 height = 3; optional uint32 color = 4; } message TexturePacket { enum Filter { GOOD = 0; LINEAR = 1; POINT = 2; } message Rect { optional float x = 1; optional float y = 2; optional float w = 3; optional float h = 4; } message Size { optional int32 w = 1; optional int32 h = 2; } message Matrix { optional bool is2D = 1; optional bool isId = 2; repeated float m = 3; } message EffectMask { optional bool mIs3D = 1; optional Size mSize = 2; optional Matrix mMaskTransform = 3; } // Basic info required uint64 layerref = 1; optional uint32 width = 2; optional uint32 height = 3; optional uint32 stride = 4; optional uint32 name = 5; optional uint32 target = 6; optional uint32 dataformat = 7; optional uint64 glcontext = 8; optional bytes data = 9; // TextureEffect attributes optional Rect mTextureCoords = 10; optional bool mPremultiplied = 11; optional Filter mFilter = 12; // Mask attributes optional bool isMask = 20; optional EffectMask mask = 21; } message LayersPacket { message Layer { enum LayerType { UnknownLayer = 0; LayerManager = 1; ContainerLayer = 2; PaintedLayer = 3; CanvasLayer = 4; ImageLayer = 5; ColorLayer = 6; RefLayer = 8; ReadbackLayer = 9; DisplayItemLayer = 10; } enum ScrollingDirect { VERTICAL = 1; HORIZONTAL = 2; } enum Filter { FILTER_FAST = 0; // deprecated FILTER_GOOD = 1; FILTER_BEST = 2; // deprecated FILTER_NEAREST = 3; //deprecated FILTER_BILINEAR = 4; //deprecated FILTER_GAUSSIAN = 5; //deprecated FILTER_SENTINEL = 6; //deprecated FILTER_LINEAR = 7; FILTER_POINT = 8; } message Size { optional int32 w = 1; optional int32 h = 2; } message Rect { optional int32 x = 1; optional int32 y = 2; optional int32 w = 3; optional int32 h = 4; } message Region { repeated Rect r = 1; } message Matrix { optional bool is2D = 1; optional bool isId = 2; repeated float m = 3; } message Shadow { optional Rect clip = 1; optional Matrix transform = 2; optional Region vRegion = 3; } // Basic info // Note: Parent's pointer is used to recontruct the layer tree required LayerType type = 1; required uint64 ptr = 2; required uint64 parentPtr = 3; // Common info (10 to 99) optional Rect clip = 10; optional Matrix transform = 11; optional Region vRegion = 12; // visible region optional Shadow shadow = 13; // shadow info optional float opacity = 14; optional bool cOpaque = 15; // content opaque optional bool cAlpha = 16; // component alpha optional ScrollingDirect direct = 17; optional uint64 barID = 18; optional uint64 mask = 19; // mask layer optional Region hitRegion = 20; optional Region dispatchRegion = 21; optional Region noActionRegion = 22; optional Region hPanRegion = 23; optional Region vPanRegion = 24; // Specific info (100 to max) // Painted Layer optional Region valid = 100; // Color Layer optional uint32 color = 101; // Canvas & Image Layer optional Filter filter = 102; // Ref Layer optional uint64 refID = 103; // Readback Layer optional Size size = 104; optional uint32 displayListLogLength = 105; optional bytes displayListLog = 106; } repeated Layer layer = 1; } message MetaPacket { optional bool composedByHwc = 1; } message DrawPacket { message Rect { required float x = 1; required float y = 2; required float w = 3; required float h = 4; } required float offsetX = 1; required float offsetY = 2; repeated float mvMatrix = 3; required uint32 totalRects = 4; repeated Rect layerRect = 5; required uint64 layerref = 6; repeated uint32 texIDs = 7; repeated Rect textureRect = 8; } // We only need to use this Packet. // Other packet definitions are just type defines message Packet { enum DataType { FRAMESTART = 1; FRAMEEND = 2; COLOR = 3; TEXTURE = 4; LAYERS = 5; META = 6; DRAW = 7; } required DataType type = 1; optional FramePacket frame = 2; optional ColorPacket color = 3; optional TexturePacket texture = 4; optional LayersPacket layers = 5; optional MetaPacket meta = 6; optional DrawPacket draw = 7; } // =============================== // Client to Server messages // =============================== message CommandPacket { enum CmdType { NO_OP = 0; LAYERS_TREE = 1; LAYERS_BUFFER = 2; } required CmdType type = 1; optional bool value = 2; }