blob: e81dd83d3e7549b575176db706a8d2c821f0bb69 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module gfx.mojom;
import "mojo/public/mojom/base/shared_memory.mojom";
import "mojo/public/mojom/base/unguessable_token.mojom";
// gfx::NativePixmapPlane
[EnableIf=supports_native_pixmap, Stable]
struct NativePixmapPlane {
uint32 stride;
uint64 offset;
uint64 size;
// A platform-specific handle the underlying memory object.
handle<platform> buffer_handle;
};
// gfx::NativePixmapHandle
[EnableIf=supports_native_pixmap]
struct NativePixmapHandle {
array<NativePixmapPlane> planes;
[EnableIf=is_linux]
uint64 modifier;
[EnableIf=is_chromeos_ash]
uint64 modifier;
[EnableIf=is_fuchsia]
mojo_base.mojom.UnguessableToken? buffer_collection_id;
[EnableIf=is_fuchsia]
uint32 buffer_index;
[EnableIf=is_fuchsia]
bool ram_coherency;
};
[EnableIf=is_android]
struct AHardwareBufferHandle {
// The actual file descriptor used to wrap the AHardwareBuffer object for
// serialization.
handle<platform> buffer_handle;
// A message pipe handle which tracks the lifetime of this
// AHardwareBufferHandle. The sender may use this to observe the lifetime
// remotely by watching the other end of this pipe. Useful for retaining a
// sender-side AHB ref until the receiver deserializes the AHB and acquires
// its own ref.
handle<message_pipe> tracking_pipe;
};
[EnableIf=is_win]
struct DxgiHandle {
// The actual buffer windows handle.
handle<platform> buffer_handle;
// Shared memory copy of all the data. Valid only if requested by the
// consumer. It is included here because DXGI GMBs are unmappable except in
// the GPU process. So without it the consumer if a CPU readable frame is
// needed would resort to request a copy in the shared memory via GPU process.
mojo_base.mojom.UnsafeSharedMemoryRegion? shared_memory_handle;
};
union GpuMemoryBufferPlatformHandle {
mojo_base.mojom.UnsafeSharedMemoryRegion shared_memory_handle;
[EnableIf=supports_native_pixmap]
NativePixmapHandle native_pixmap_handle;
[EnableIf=is_mac]
handle<platform> mach_port;
[EnableIf=is_win]
DxgiHandle dxgi_handle;
[EnableIf=is_android]
AHardwareBufferHandle android_hardware_buffer_handle;
};