/* 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"; 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"; [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"; namespace mozilla { namespace layers { [Comparable] struct SurfaceDescriptorD3D10 { WindowsHandle handle; GpuProcessTextureId? gpuProcessTextureId; uint32_t arrayIndex; SurfaceFormat format; IntSize size; ColorSpace2 colorSpace; ColorRange colorRange; }; [Comparable] struct SurfaceDescriptorDXGIYCbCr { WindowsHandle handleY; WindowsHandle handleCb; WindowsHandle 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; 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 SurfaceDescriptorRecorded { int64_t textureId; }; [Comparable] struct SurfaceDescriptorRemoteTexture { RemoteTextureId textureId; RemoteTextureOwnerId ownerId; }; [Comparable] union SurfaceDescriptor { SurfaceDescriptorBuffer; SurfaceDescriptorD3D10; SurfaceDescriptorDXGIYCbCr; SurfaceDescriptorDMABuf; SurfaceTextureDescriptor; SurfaceDescriptorAndroidHardwareBuffer; EGLImageDescriptor; SurfaceDescriptorMacIOSurface; SurfaceDescriptorSharedGLTexture; SurfaceDescriptorGPUVideo; SurfaceDescriptorRecorded; SurfaceDescriptorRemoteTexture; SurfaceDescriptorDcompSurface; null_t; }; } // namespace } // namespace