summaryrefslogtreecommitdiffstats
path: root/gfx/layers/ipc/LayersSurfaces.ipdlh
blob: e38b2c74dcc8a8887cfcf6f9fa825fb6ec00c550 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
/* 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 "gfxipc/ShadowLayerUtils.h";
include "mozilla/GfxMessageUtils.h";
include "mozilla/layers/LayersMessageUtils.h";
include "mozilla/layers/WebRenderMessageUtils.h";

using gfxPoint from "gfxPoint.h";
using nsIntRegion from "nsRegion.h";
using mozilla::StereoMode from "ImageTypes.h";
using struct mozilla::null_t from "mozilla/ipc/IPCCore.h";
using mozilla::WindowsHandle from "mozilla/ipc/IPCTypes.h";
using mozilla::gfx::YUVColorSpace from "mozilla/gfx/Types.h";
using mozilla::gfx::ChromaSubsampling from "mozilla/gfx/Types.h";
using mozilla::gfx::ColorDepth from "mozilla/gfx/Types.h";
using mozilla::gfx::ColorRange from "mozilla/gfx/Types.h";
using mozilla::gfx::ColorSpace2 from "mozilla/gfx/Types.h";
using mozilla::gfx::SurfaceFormat from "mozilla/gfx/Types.h";
using mozilla::gfx::IntRect from "mozilla/gfx/Rect.h";
using mozilla::gfx::IntSize from "mozilla/gfx/Point.h";
using mozilla::gfx::Matrix4x4 from "mozilla/gfx/Matrix.h";
using mozilla::gfx::FenceInfo from "mozilla/gfx/FileHandleWrapper.h";
[RefCounted] using mozilla::gfx::FileHandleWrapper from "mozilla/gfx/FileHandleWrapper.h";
[MoveOnly] using mozilla::ipc::SharedMemoryBasic::Handle from "mozilla/ipc/SharedMemoryBasic.h";
using gfxImageFormat from "gfxTypes.h";
using mozilla::layers::MaybeVideoBridgeSource from "mozilla/layers/VideoBridgeUtils.h";
using mozilla::layers::RemoteTextureId from "mozilla/layers/LayersTypes.h";
using mozilla::layers::RemoteTextureOwnerId from "mozilla/layers/LayersTypes.h";
using mozilla::layers::GpuProcessTextureId from "mozilla/layers/LayersTypes.h";
using mozilla::layers::GpuProcessQueryId from "mozilla/layers/LayersTypes.h";
using mozilla::wr::ExternalImageSource from "mozilla/webrender/WebRenderTypes.h";
using mozilla::wr::ExternalImageId from "mozilla/webrender/WebRenderTypes.h";

namespace mozilla {
namespace layers {

[Comparable] struct SurfaceDescriptorD3D10 {
  nullable FileHandleWrapper handle;
  GpuProcessTextureId? gpuProcessTextureId;
  uint32_t arrayIndex;
  SurfaceFormat format;
  IntSize size;
  ColorSpace2 colorSpace;
  ColorRange colorRange;
  bool hasKeyedMutex;
  FenceInfo? fenceInfo;
  GpuProcessQueryId? gpuProcessQueryId;
};

[Comparable] struct SurfaceDescriptorDXGIYCbCr {
  nullable FileHandleWrapper handleY;
  nullable FileHandleWrapper handleCb;
  nullable FileHandleWrapper handleCr;
  IntSize size;
  IntSize sizeY;
  IntSize sizeCbCr;
  ColorDepth colorDepth;
  YUVColorSpace yUVColorSpace;
  ColorRange colorRange;
};

[Comparable] struct SurfaceDescriptorMacIOSurface {
  uint32_t surfaceId;
  bool isOpaque;
  YUVColorSpace yUVColorSpace;
};

[Comparable] struct SurfaceDescriptorDMABuf {
  uint32_t bufferType;
  uint64_t[] modifier;
  uint32_t flags;
  FileDescriptor[] fds;
  uint32_t[] width;
  uint32_t[] height;
  uint32_t[] widthAligned;
  uint32_t[] heightAligned;
  uint32_t[] format;
  uint32_t[] strides;
  uint32_t[] offsets;
  YUVColorSpace yUVColorSpace;
  ColorRange colorRange;
  FileDescriptor[] fence;
  uint32_t uid;
  FileDescriptor[] refCount;
};

[Comparable] struct SurfaceTextureDescriptor {
  uint64_t handle;
  IntSize size;
  SurfaceFormat format;
  bool continuous;
  bool forceBT709ColorSpace;
  Matrix4x4? transformOverride;
};

[Comparable] struct SurfaceDescriptorAndroidHardwareBuffer {
  uint64_t bufferId;
  IntSize size;
  SurfaceFormat format;
};

[Comparable] struct EGLImageDescriptor {
  uintptr_t image; // `EGLImage` is a `void*`.
  uintptr_t fence;
  IntSize size;
  bool hasAlpha;
};

[Comparable] struct SurfaceDescriptorSharedGLTexture {
  uint32_t texture;
  uint32_t target;
  uintptr_t fence;
  IntSize size;
  bool hasAlpha;
};

[Comparable] struct SurfaceDescriptorDcompSurface {
  FileDescriptor handle;
  IntSize size;
  SurfaceFormat format;
};

[Comparable] union RemoteDecoderVideoSubDescriptor {
  SurfaceDescriptorD3D10;
  SurfaceDescriptorDXGIYCbCr;
  SurfaceDescriptorDMABuf;
  SurfaceDescriptorMacIOSurface;
  SurfaceDescriptorDcompSurface;
  null_t;
};

[Comparable] struct SurfaceDescriptorRemoteDecoder {
  uint64_t handle;
  RemoteDecoderVideoSubDescriptor subdesc;
  MaybeVideoBridgeSource source;
};

[Comparable] union SurfaceDescriptorGPUVideo {
  SurfaceDescriptorRemoteDecoder;
};

[Comparable] struct RGBDescriptor {
  IntSize size;
  SurfaceFormat format;
};

[Comparable] struct YCbCrDescriptor {
  IntRect display;
  IntSize ySize;
  uint32_t yStride;
  IntSize cbCrSize;
  uint32_t cbCrStride;
  uint32_t yOffset;
  uint32_t cbOffset;
  uint32_t crOffset;
  StereoMode stereoMode;
  ColorDepth colorDepth;
  YUVColorSpace yUVColorSpace;
  ColorRange colorRange;
  ChromaSubsampling chromaSubsampling;
};

[Comparable] union BufferDescriptor {
  RGBDescriptor;
  YCbCrDescriptor;
};

[Comparable] union MemoryOrShmem {
  uintptr_t;
  Shmem;
};

[Comparable] struct SurfaceDescriptorBuffer {
  BufferDescriptor desc;
  MemoryOrShmem data;
};

[Comparable] struct SurfaceDescriptorShared
{
  IntSize size;
  int32_t stride;
  SurfaceFormat format;
  Handle handle;
};

[Comparable] struct SurfaceDescriptorExternalImage
{
  ExternalImageSource source;
  ExternalImageId id;
};

[Comparable] struct SurfaceDescriptorRemoteTexture {
  RemoteTextureId textureId;
  RemoteTextureOwnerId ownerId;
};

[Comparable] union SurfaceDescriptor {
  SurfaceDescriptorBuffer;
  SurfaceDescriptorD3D10;
  SurfaceDescriptorDXGIYCbCr;
  SurfaceDescriptorDMABuf;
  SurfaceTextureDescriptor;
  SurfaceDescriptorAndroidHardwareBuffer;
  EGLImageDescriptor;
  SurfaceDescriptorMacIOSurface;
  SurfaceDescriptorSharedGLTexture;
  SurfaceDescriptorGPUVideo;
  SurfaceDescriptorRemoteTexture;
  SurfaceDescriptorDcompSurface;
  SurfaceDescriptorExternalImage;
  null_t;
};

} // namespace
} // namespace