summaryrefslogtreecommitdiff
path: root/gfx/layers/ipc/LayersSurfaces.ipdlh
blob: 16689fdcced86ce901119dbeb6af2adfe88390d7 (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
/* 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/. */

using struct gfxPoint from "gfxPoint.h";
using nsIntRegion from "nsRegion.h";
using struct mozilla::layers::SurfaceDescriptorX11 from "gfxipc/ShadowLayerUtils.h";
using mozilla::StereoMode from "ImageTypes.h";
using mozilla::YUVColorSpace from "ImageTypes.h";
using struct mozilla::null_t from "ipc/IPCMessageUtils.h";
using mozilla::WindowsHandle from "ipc/IPCMessageUtils.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 gfxImageFormat from "gfxTypes.h";
using struct mozilla::layers::GonkNativeHandle from "mozilla/layers/GonkNativeHandleUtils.h";

namespace mozilla {
namespace layers {

union OverlayHandle {
  int32_t;
  GonkNativeHandle;
  null_t;
};

struct OverlaySource {
  OverlayHandle handle;
  IntSize size;
};

struct SurfaceDescriptorFileMapping {
  WindowsHandle handle;
  SurfaceFormat format;
  IntSize size;
};

struct SurfaceDescriptorDIB {
  // gfxWindowsSurface*
  uintptr_t surface;
};

struct SurfaceDescriptorD3D10 {
  WindowsHandle handle;
  SurfaceFormat format;
  IntSize size;
};

struct SurfaceDescriptorDXGIYCbCr {
  WindowsHandle handleY;
  WindowsHandle handleCb;
  WindowsHandle handleCr;
  IntSize size;
  IntSize sizeY;
  IntSize sizeCbCr;
};

struct SurfaceDescriptorMacIOSurface {
  uint32_t surfaceId;
  double scaleFactor;
  bool isOpaque;
};

struct SurfaceTextureDescriptor {
  uintptr_t surfTex;
  IntSize size;
};

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

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

struct SurfaceDescriptorGPUVideo {
  uint64_t handle;
};

struct RGBDescriptor {
  IntSize size;
  SurfaceFormat format;
  bool hasIntermediateBuffer;
};

struct YCbCrDescriptor {
  IntSize ySize;
  IntSize cbCrSize;
  uint32_t yOffset;
  uint32_t cbOffset;
  uint32_t crOffset;
  StereoMode stereoMode;
  YUVColorSpace yUVColorSpace;
  bool hasIntermediateBuffer;
};

union BufferDescriptor {
  RGBDescriptor;
  YCbCrDescriptor;
};

union MemoryOrShmem {
  uintptr_t;
  Shmem;
};

struct SurfaceDescriptorBuffer {
  BufferDescriptor desc;
  MemoryOrShmem data;
};

union SurfaceDescriptor {
  SurfaceDescriptorBuffer;
  SurfaceDescriptorDIB;
  SurfaceDescriptorD3D10;
  SurfaceDescriptorFileMapping;
  SurfaceDescriptorDXGIYCbCr;
  SurfaceDescriptorX11;
  SurfaceTextureDescriptor;
  EGLImageDescriptor;
  SurfaceDescriptorMacIOSurface;
  SurfaceDescriptorSharedGLTexture;
  SurfaceDescriptorGPUVideo;
  null_t;
};

} // namespace
} // namespace