diff options
Diffstat (limited to 'gfx/layers/protobuf/LayerScopePacket.proto')
-rw-r--r-- | gfx/layers/protobuf/LayerScopePacket.proto | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/gfx/layers/protobuf/LayerScopePacket.proto b/gfx/layers/protobuf/LayerScopePacket.proto new file mode 100644 index 000000000..9b4306b2a --- /dev/null +++ b/gfx/layers/protobuf/LayerScopePacket.proto @@ -0,0 +1,218 @@ +/* vim:set ts=2 sw=2 sts=2 et: */ + +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 = 7; + ReadbackLayer = 8; + } + 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; +} |