gfx/layers/ipc/LayersMessages.ipdlh

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
     2  * vim: sw=2 ts=8 et :
     3  */
     4 /* This Source Code Form is subject to the terms of the Mozilla Public
     5  * License, v. 2.0. If a copy of the MPL was not distributed with this
     6  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     8 include LayersSurfaces;
     9 include protocol PCompositable;
    10 include protocol PCompositor;
    11 include protocol PGrallocBuffer;
    12 include protocol PLayer;
    13 include protocol PRenderFrame;
    14 include protocol PTexture;
    16 include "gfxipc/ShadowLayerUtils.h";
    17 include "mozilla/GfxMessageUtils.h";
    18 include "ImageLayers.h";
    20 using mozilla::GraphicsFilterType from "mozilla/GfxMessageUtils.h";
    21 using struct gfxRGBA from "gfxColor.h";
    22 using struct gfxPoint3D from "gfxPoint3D.h";
    23 using class mozilla::gfx::Matrix4x4 from "mozilla/gfx/Matrix.h";
    24 using class gfx3DMatrix from "gfx3DMatrix.h";
    25 using nscoord from "nsCoord.h";
    26 using struct nsIntPoint from "nsPoint.h";
    27 using struct nsRect from "nsRect.h";
    28 using struct nsPoint from "nsPoint.h";
    29 using class mozilla::TimeDuration from "mozilla/TimeStamp.h";
    30 using class mozilla::TimeStamp from "mozilla/TimeStamp.h";
    31 using mozilla::ScreenRotation from "mozilla/WidgetUtils.h";
    32 using nsCSSProperty from "nsCSSProperty.h";
    33 using mozilla::dom::ScreenOrientation from "mozilla/dom/ScreenOrientation.h";
    34 using struct mozilla::layers::TextureInfo from "mozilla/layers/CompositorTypes.h";
    35 using mozilla::LayerMargin from "Units.h";
    36 using mozilla::LayerPoint from "Units.h";
    37 using mozilla::LayerRect from "Units.h";
    38 using mozilla::layers::ScaleMode from "mozilla/layers/LayersTypes.h";
    39 using mozilla::layers::EventRegions from "mozilla/layers/LayersTypes.h";
    40 using mozilla::layers::DiagnosticTypes from "mozilla/layers/CompositorTypes.h";
    41 using struct mozilla::layers::FrameMetrics from "FrameMetrics.h";
    42 using mozilla::layers::FrameMetrics::ViewID from "FrameMetrics.h";
    43 using struct mozilla::layers::FenceHandle from "mozilla/layers/FenceUtils.h";
    45 namespace mozilla {
    46 namespace layers {
    48 struct TargetConfig {
    49   nsIntRect naturalBounds;
    50   ScreenRotation rotation;
    51   nsIntRect clientBounds;
    52   ScreenOrientation orientation;
    53   nsIntRegion clearRegion;
    54 };
    56 // Create a shadow layer for |layer|
    57 struct OpCreateThebesLayer     { PLayer layer; };
    58 struct OpCreateContainerLayer  { PLayer layer; };
    59 struct OpCreateImageLayer      { PLayer layer; };
    60 struct OpCreateColorLayer      { PLayer layer; };
    61 struct OpCreateCanvasLayer     { PLayer layer; };
    62 struct OpCreateRefLayer        { PLayer layer; };
    64 struct OpAttachCompositable {
    65   PLayer layer;
    66   PCompositable compositable;
    67 };
    69 struct OpAttachAsyncCompositable {
    70   PLayer layer;
    71   uint64_t containerID;
    72 };
    74 struct ThebesBufferData {
    75   nsIntRect rect;
    76   nsIntPoint rotation;
    77 };
    79 struct CubicBezierFunction {
    80   float x1;
    81   float y1;
    82   float x2;
    83   float y2;
    84 };
    86 struct StepFunction {
    87   int steps;
    88   // 1 = nsTimingFunction::StepStart, 2 = nsTimingFunction::StepEnd
    89   int type;
    90 };
    92 union TimingFunction {
    93   CubicBezierFunction;
    94   StepFunction;
    95 };
    97 struct LayerColor { gfxRGBA value; };
    98 struct Perspective { float value; };
    99 struct RotationX { float radians; };
   100 struct RotationY { float radians; };
   101 struct RotationZ { float radians; };
   102 struct Rotation { float radians; };
   103 struct Rotation3D {
   104   float x;
   105   float y;
   106   float z;
   107   float radians;
   108 };
   109 struct Scale {
   110   float x;
   111   float y;
   112   float z;
   113 };
   114 struct Skew { float x; float y; };
   115 struct SkewX { float x; };
   116 struct SkewY { float y; };
   117 struct TransformMatrix { Matrix4x4 value; };
   118 struct Translation {
   119   float x;
   120   float y;
   121   float z;
   122 };
   124 union TransformFunction {
   125   Perspective;
   126   RotationX;
   127   RotationY;
   128   RotationZ;
   129   Rotation;
   130   Rotation3D;
   131   Scale;
   132   Skew;
   133   SkewX;
   134   SkewY;
   135   Translation;
   136   TransformMatrix;
   137 };
   139 union Animatable {
   140   float;
   141   TransformFunction[];
   142 };
   144 struct AnimationSegment {
   145   Animatable startState;
   146   Animatable endState;
   147   float startPortion;
   148   float endPortion;
   149   TimingFunction sampleFn;
   150 };
   152 // Transforms need extra information to correctly convert the list of transform
   153 // functions to a gfx3DMatrix that can be applied directly to the layer.
   154 struct TransformData {
   155   // the origin of the frame being transformed in app units
   156   nsPoint origin;
   157   // the transform-origin property for the transform in css pixels
   158   gfxPoint3D transformOrigin;
   159   // the perspective-origin property for the transform in css pixels
   160   gfxPoint3D perspectiveOrigin;
   161   nsRect bounds;
   162   nscoord perspective;
   163   int32_t appUnitsPerDevPixel;
   164 };
   166 union AnimationData {
   167   null_t;
   168   TransformData;
   169 };
   171 struct Animation {
   172   // Unlike in nsAnimationManager, this start time is at the end of the
   173   // delay.  If the delay is changed dynamically, the layer's data will
   174   // be updated.
   175   TimeStamp startTime;
   176   TimeDuration duration;
   177   // For each frame, the interpolation point is computed based on the
   178   // startTime, the direction, the duration, and the current time.
   179   // The segments must uniquely cover the portion from 0.0 to 1.0
   180   AnimationSegment[] segments;
   181   // How many times to repeat the animation.  -1 means "forever".
   182   float numIterations;
   183   // This uses the NS_STYLE_ANIMATION_DIRECTION_* constants.
   184   int32_t direction;
   185   nsCSSProperty property;
   186   AnimationData data;
   187 };
   189 // Change a layer's attributes
   190 struct CommonLayerAttributes {
   191   nsIntRegion visibleRegion;
   192   EventRegions eventRegions;
   193   TransformMatrix transform;
   194   float postXScale;
   195   float postYScale;
   196   uint32_t contentFlags;
   197   float opacity;
   198   bool useClipRect;
   199   nsIntRect clipRect;
   200   bool isFixedPosition;
   201   LayerPoint fixedPositionAnchor;
   202   LayerMargin fixedPositionMargin;
   203   bool isStickyPosition;
   204   uint64_t stickyScrollContainerId;
   205   LayerRect stickyScrollRangeOuter;
   206   LayerRect stickyScrollRangeInner;
   207   uint64_t scrollbarTargetContainerId;
   208   uint32_t scrollbarDirection;
   209   nullable PLayer maskLayer;
   210   // Animated colors will only honored for ColorLayers.
   211   Animation[] animations;
   212   nsIntRegion invalidRegion;
   213 };
   215 struct ThebesLayerAttributes {
   216   nsIntRegion validRegion;
   217 };
   218 struct ContainerLayerAttributes {
   219   FrameMetrics metrics;
   220   ViewID scrollParentId;
   221   float preXScale;
   222   float preYScale;
   223   float inheritedXScale;
   224   float inheritedYScale;
   225 };
   226 struct ColorLayerAttributes     { LayerColor color; nsIntRect bounds; };
   227 struct CanvasLayerAttributes    { GraphicsFilterType filter; nsIntRect bounds; };
   228 struct RefLayerAttributes       { int64_t id; };
   229 struct ImageLayerAttributes     { GraphicsFilterType filter; IntSize scaleToSize; ScaleMode scaleMode; };
   231 union SpecificLayerAttributes {
   232   null_t;
   233   ThebesLayerAttributes;
   234   ContainerLayerAttributes;
   235   ColorLayerAttributes;
   236   CanvasLayerAttributes;
   237   RefLayerAttributes;
   238   ImageLayerAttributes;
   239 };
   241 struct LayerAttributes {
   242   CommonLayerAttributes common;
   243   SpecificLayerAttributes specific;
   244 };
   246 struct OpSetLayerAttributes {
   247   PLayer layer;
   248   LayerAttributes attrs;
   249 };
   251 // Monkey with the tree structure
   252 struct OpSetRoot          { PLayer root; };
   253 struct OpInsertAfter      { PLayer container; PLayer childLayer; PLayer after; };
   254 struct OpPrependChild     { PLayer container; PLayer childLayer; };
   255 struct OpRemoveChild      { PLayer container; PLayer childLayer; };
   256 struct OpRepositionChild  { PLayer container; PLayer childLayer; PLayer after; };
   257 struct OpRaiseToTopChild  { PLayer container; PLayer childLayer; };
   259 struct OpSetDiagnosticTypes { DiagnosticTypes diagnostics; };
   261 struct ShmemSection {
   262   Shmem shmem;
   263   uint32_t offset;
   264   size_t size;
   265 };
   267 union TileLock {
   268   ShmemSection;
   269   uintptr_t;
   270 };
   272 struct TexturedTileDescriptor {
   273   PTexture texture;
   274   TileLock sharedLock;
   275 };
   277 struct PlaceholderTileDescriptor {
   278 };
   280 union TileDescriptor {
   281   TexturedTileDescriptor;
   282   PlaceholderTileDescriptor;
   283 };
   285 struct SurfaceDescriptorTiles {
   286   nsIntRegion validRegion;
   287   nsIntRegion paintedRegion;
   288   TileDescriptor[] tiles;
   289   int         retainedWidth;
   290   int         retainedHeight;
   291   float       resolution;
   292   float       frameResolution;
   293 };
   295 struct OpUseTiledLayerBuffer {
   296   PCompositable compositable;
   297   SurfaceDescriptorTiles tileLayerDescriptor;
   298 };
   300 struct OpCreatedIncrementalTexture {
   301   PCompositable compositable;
   302   TextureInfo textureInfo;
   303   nsIntRect bufferRect;
   304 };
   306 struct OpPaintTextureRegion {
   307   PCompositable compositable;
   308   ThebesBufferData bufferData;
   309   nsIntRegion updatedRegion;
   310 };
   312 struct OpPaintTextureIncremental {
   313   PCompositable compositable;
   314   uint32_t textureId;
   315   SurfaceDescriptor image;
   316   nsIntRegion updatedRegion;
   317   nsIntRect bufferRect;
   318   nsIntPoint bufferRotation;
   319 };
   321 struct OpUpdatePictureRect {
   322   PCompositable compositable;
   323   nsIntRect picture;
   324 };
   326 /**
   327  * Tells the CompositableHost to remove the corresponding TextureHost
   328  */
   329 struct OpRemoveTexture {
   330   PCompositable compositable;
   331   PTexture texture;
   332 };
   334 /**
   335  * Tells the compositor-side which texture to use (for example, as front buffer
   336  * if there is several textures for double buffering)
   337  */
   338 struct OpUseTexture {
   339   PCompositable compositable;
   340   PTexture texture;
   341 };
   343 struct OpUseComponentAlphaTextures {
   344   PCompositable compositable;
   345   PTexture textureOnBlack;
   346   PTexture textureOnWhite;
   347 };
   349 union MaybeRegion {
   350   nsIntRegion;
   351   null_t;
   352 };
   354 struct OpUpdateTexture {
   355   PCompositable compositable;
   356   PTexture texture;
   357   MaybeRegion region;
   358 };
   360 union CompositableOperation {
   361   OpUpdatePictureRect;
   363   OpCreatedIncrementalTexture;
   365   OpPaintTextureRegion;
   366   OpPaintTextureIncremental;
   368   OpUseTiledLayerBuffer;
   370   OpRemoveTexture;
   372   OpUpdateTexture;
   373   OpUseTexture;
   374   OpUseComponentAlphaTextures;
   375 };
   377 // A unit of a changeset; a set of these comprise a changeset
   378 union Edit {
   379   OpCreateThebesLayer;
   380   OpCreateContainerLayer;
   381   OpCreateImageLayer;
   382   OpCreateColorLayer;
   383   OpCreateCanvasLayer;
   384   OpCreateRefLayer;
   386   OpSetLayerAttributes;
   387   OpSetDiagnosticTypes;
   389   OpSetRoot;
   390   OpInsertAfter;
   391   OpPrependChild;
   392   OpRemoveChild;
   393   OpRepositionChild;
   394   OpRaiseToTopChild;
   396   OpAttachCompositable;
   397   OpAttachAsyncCompositable;
   399   CompositableOperation;
   400 };
   403 // Replies to operations
   405 struct OpContentBufferSwap {
   406   PCompositable compositable;
   407   nsIntRegion frontUpdatedRegion;
   408 };
   410 struct OpTextureSwap {
   411   PCompositable compositable;
   412   uint32_t textureId;
   413   SurfaceDescriptor image;
   414 };
   416 struct ReturnReleaseFence {
   417   PCompositable compositable;
   418   PTexture texture;
   419   FenceHandle fence;
   420 };
   422 // Unit of a "changeset reply".  This is a weird abstraction, probably
   423 // only to be used for buffer swapping.
   424 union EditReply {
   425   OpContentBufferSwap;
   426   OpTextureSwap;
   428   ReturnReleaseFence;
   429 };
   431 } // namespace
   432 } // namespace

mercurial