gfx/layers/ipc/WebRenderMessages.ipdlh
author Bas Schouten <bschouten@mozilla.com>
Thu, 13 Dec 2018 15:59:22 +0100
changeset 509994 4c1fade7ceeb6407592d43ad0276c4b8090c3e7a
parent 505216 9358169404d156136a8fe82ef43fb78523123cc1
child 524835 bca8acc7c8c00b5d5d9be309b6e1a3c890787541
permissions -rw-r--r--
Bug 1501442 - Part 1: Add CompositionPayload type and allow submitting it as part of a transaction. r=mstange

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * vim: sw=2 ts=8 et :
 */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

include "mozilla/layers/WebRenderMessageUtils.h";

include LayersSurfaces;
include LayersMessages;
include protocol PTexture;

using mozilla::layers::CompositableHandle from "mozilla/layers/LayersTypes.h";
using mozilla::wr::LayoutSize from "mozilla/webrender/webrender_ffi.h";
using mozilla::wr::ImageDescriptor from "mozilla/webrender/webrender_ffi.h";
using mozilla::wr::ImageRendering from "mozilla/webrender/webrender_ffi.h";
using mozilla::wr::MixBlendMode from "mozilla/webrender/webrender_ffi.h";
using mozilla::wr::ExternalImageId from "mozilla/webrender/WebRenderTypes.h";
using mozilla::wr::MaybeFontInstanceOptions from "mozilla/webrender/WebRenderTypes.h";
using mozilla::wr::MaybeFontInstancePlatformOptions from "mozilla/webrender/WebRenderTypes.h";
using mozilla::wr::FontInstanceKey from "mozilla/webrender/WebRenderTypes.h";
using mozilla::wr::FontKey from "mozilla/webrender/WebRenderTypes.h";
using mozilla::wr::ImageKey from "mozilla/webrender/WebRenderTypes.h";
using mozilla::wr::BlobImageKey from "mozilla/webrender/WebRenderTypes.h";
using mozilla::wr::PipelineId from "mozilla/webrender/WebRenderTypes.h";
using mozilla::gfx::MaybeIntSize from "mozilla/gfx/Point.h";
using mozilla::LayoutDeviceRect from "Units.h";
using mozilla::ImageIntRect from "Units.h";
using mozilla::gfx::Rect from "mozilla/gfx/Rect.h";
using class mozilla::gfx::Matrix4x4 from "mozilla/gfx/Matrix.h";
using struct mozilla::void_t from "ipc/IPCMessageUtils.h";

namespace mozilla {
namespace layers {

struct RefCountedShmem {
  Shmem buffer;
};

union OptionalTransform {
  Matrix4x4;
  void_t;
};

union OptionalOpacity {
  float;
  void_t;
};

struct OpAddExternalImage {
  ExternalImageId externalImageId;
  ImageKey key;
};

struct OpPushExternalImageForTexture {
  ExternalImageId externalImageId;
  ImageKey key;
  PTexture texture;
  bool isUpdate;
};

struct OpAddCompositorAnimations {
  CompositorAnimations data;
};

struct OpAddPipelineIdForCompositable {
  PipelineId pipelineId;
  CompositableHandle handle;
  bool isAsync;
};

struct OpRemovePipelineIdForCompositable {
  PipelineId pipelineId;
};

struct OpReleaseTextureOfImage {
  ImageKey key;
};

struct OpUpdateAsyncImagePipeline {
  PipelineId pipelineId;
  LayoutDeviceRect scBounds;
  Matrix4x4 scTransform;
  MaybeIntSize scaleToSize;
  ImageRendering filter;
  MixBlendMode mixBlendMode;
};

struct OpUpdatedAsyncImagePipeline {
  PipelineId pipelineId;
};

union WebRenderParentCommand {
  OpAddPipelineIdForCompositable;
  OpRemovePipelineIdForCompositable;
  OpReleaseTextureOfImage;
  OpUpdateAsyncImagePipeline;
  OpUpdatedAsyncImagePipeline;
  CompositableOperation;
  OpAddCompositorAnimations;
};

struct OffsetRange {
  uint32_t source;
  uint32_t start;
  uint32_t length;
};

struct OpAddImage {
  ImageDescriptor descriptor;
  OffsetRange bytes;
  uint16_t tiling;
  ImageKey key;
};

struct OpAddBlobImage {
  ImageDescriptor descriptor;
  OffsetRange bytes;
  uint16_t tiling;
  BlobImageKey key;
};

struct OpUpdateImage {
  ImageDescriptor descriptor;
  OffsetRange bytes;
  ImageKey key;
};

struct OpUpdateBlobImage {
  ImageDescriptor descriptor;
  OffsetRange bytes;
  BlobImageKey key;
  ImageIntRect dirtyRect;
};

struct OpSetImageVisibleArea {
  ImageIntRect area;
  BlobImageKey key;
};

struct OpUpdateExternalImage {
  ExternalImageId externalImageId;
  ImageKey key;
  ImageIntRect dirtyRect;
};

struct OpDeleteImage {
  ImageKey key;
};

struct OpDeleteBlobImage {
  BlobImageKey key;
};

struct OpAddRawFont {
  OffsetRange bytes;
  uint32_t fontIndex;
  FontKey key;
};

struct OpAddFontDescriptor {
  OffsetRange bytes;
  uint32_t fontIndex;
  FontKey key;
};

struct OpDeleteFont {
  FontKey key;
};

struct OpAddFontInstance {
  MaybeFontInstanceOptions options;
  MaybeFontInstancePlatformOptions platformOptions;
  OffsetRange variations;
  FontInstanceKey instanceKey;
  FontKey fontKey;
  float glyphSize;
};

struct OpDeleteFontInstance {
  FontInstanceKey key;
};

union OpUpdateResource {
  OpAddImage;
  OpAddBlobImage;
  OpUpdateImage;
  OpUpdateBlobImage;
  OpSetImageVisibleArea;
  OpDeleteImage;
  OpDeleteBlobImage;
  OpAddRawFont;
  OpAddFontDescriptor;
  OpDeleteFont;
  OpAddFontInstance;
  OpDeleteFontInstance;
  OpAddExternalImage;
  OpPushExternalImageForTexture;
  OpUpdateExternalImage;
};

} // namespace
} // namespace