Namespaces

Enumerations

enum class HeapType : uint64_t
Name Value Comments
kSystemRam 0u --
kAmlogicSecure 1152921504606912512u

Heap used for amlogic protected memory.

kAmlogicSecureVdec 1152921504606912513u

Heap used for amlogic protected memory between decrypt and video decode.

kGoldfishDeviceLocal 1152921504606978048u

Heap used by goldfish vulkan for device-local memory.

kGoldfishHostVisible 1152921504606978049u

Heap used by goldfish vulkan for host-visible memory.

kFramebuffer 1152921504607043585u

Heap used for display framebuffer. This is used by display drivers
limited to a single framebuffer located at a specific physical address.
The framebuffer heap makes it possible to create buffer collections
for the framebuffer and enables sysmem support in these drivers.

Known heap types.

Device specific types should have bit 60 set. Top order bit is reserved

and should not be set.

This type is deprecated for new code, but is still used by some camera code.

Defined at line 22 of file fidling/gen/sdk/fidl/fuchsia.sysmem/fuchsia.sysmem/cpp/fidl/fuchsia.sysmem/cpp/common_types.h

enum class CoherencyDomain : uint32_t
Name Value
kCpu 0u
kRam 1u
kInaccessible 2u

Inaccessible is only for cases where there is no CPU-based access to the

buffers. A secure_required buffer can still have CoherencyDomain Cpu or

Ram even if the secure_required buffer can only be accessed by the CPU when

the CPU is running in secure mode (or similar). In contrast, device-local

memory that isn't reachable from the CPU is CoherencyDomain Inaccessible,

even if it's possible to cause a device (physical or virtual) to copy the

data from the Inaccessible buffers to buffers that are visible to the CPU.

Defined at line 62 of file fidling/gen/sdk/fidl/fuchsia.sysmem/fuchsia.sysmem/cpp/fidl/fuchsia.sysmem/cpp/common_types.h

enum class PixelFormatType : uint32_t
Name Value Comments
kInvalid 0u --
kR8G8B8A8 1u

RGB only, 8 bits per each of R/G/B/A sample
Compatible with VK_FORMAT_R8G8B8A8_UNORM.

kBgra32 101u

32bpp BGRA, 1 plane. RGB only, 8 bits per each of B/G/R/A sample.
Compatible with VK_FORMAT_B8G8R8A8_UNORM.

kI420 102u

YUV only, 8 bits per Y sample
Compatible with VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM.

kM420 103u

YUV only, 8 bits per Y sample
Not compatible with any vulkan format.

kNv12 104u

YUV only, 8 bits per Y sample
Compatible with VK_FORMAT_G8_B8R8_2PLANE_420_UNORM.

kYuy2 105u

YUV only, 8 bits per Y sample
Compatible with VK_FORMAT_G8B8G8R8_422_UNORM.

kMjpeg 106u

YUV only, 8 bits per Y sample
Compatible with VK_FORMAT_G8B8G8R8_422_UNORM.

kYv12 107u

YUV only, 8 bits per Y sample
Compatible with VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM. The U plane may be located in either
the B or R plane for the image (and likewise for the V plane); the ordering may be
determined by looking at the members of
`VkBufferCollectionPropertiesFUCHSIA.samplerYcbcrConversionComponents`.

kBgr24 108u

24bpp BGR, 1 plane. RGB only, 8 bits per each of B/G/R sample
Compatible with VK_FORMAT_B8G8R8_UNORM.

kRgb565 109u

16bpp RGB, 1 plane. 5 bits R, 6 bits G, 5 bits B
Compatible with VK_FORMAT_R5G6B5_UNORM_PACK16.

kRgb332 110u

8bpp RGB, 1 plane. 3 bits R, 3 bits G, 2 bits B
Not compatible with any vulkan format.

kRgb2220 111u

8bpp RGB, 1 plane. 2 bits R, 2 bits G, 2 bits B
Not compatible with any vulkan format.

kL8 112u

8bpp, Luminance-only (red, green and blue have identical values.)
Compatible with VK_FORMAT_R8_UNORM.

kR8 113u

8bpp, Red-only (Green and Blue are to be interpreted as 0).
Compatible with VK_FORMAT_R8_UNORM.

kR8G8 114u

16bpp RG, 1 plane. 8 bits R, 8 bits G.
Compatible with VK_FORMAT_R8G8_UNORM.

kA2R10G10B10 115u

32bpp RGBA, 1 plane. 2 bits A, 10 bits R/G/B.
Compatible with VK_FORMAT_A2R10G10B10_UNORM_PACK32.

kA2B10G10R10 116u

32bpp BGRA, 1 plane. 2 bits A, 10 bits R/G/B.
Compatible with VK_FORMAT_A2B10G10R10_UNORM_PACK32.

kDoNotCare 4294967294u

The sysmem client is explicitly indicating that the sysmem client does
not care which pixel format is chosen / used. When setting this value,
the sysmem client must not set format_modifier_value.

The ordering of the channels in the format name reflects how

the actual layout of the channel.

Each of these values is opinionated re. the color spaces that can be

contained within (in contrast with Vulkan).

This should be kept in sync with fuchsia.sysmem2.PixelFormatType.

This type is deprecated for new code, but is still used by some camera code.

Defined at line 96 of file fidling/gen/sdk/fidl/fuchsia.sysmem/fuchsia.sysmem/cpp/fidl/fuchsia.sysmem/cpp/common_types.h

enum class ColorSpaceType : uint32_t
Name Value Comments
kInvalid 0u

Not a valid color space type.

kSrgb 1u

sRGB

kRec601Ntsc 2u

601 NTSC ("525 line") YCbCr primaries, narrow

kRec601NtscFullRange 3u

601 NTSC ("525 line") YCbCr primaries, wide

kRec601Pal 4u

601 PAL ("625 line") YCbCr primaries, narrow

kRec601PalFullRange 5u

601 PAL ("625 line") YCbCr primaries, wide

kRec709 6u

709 YCbCr (not RGB)

kRec2020 7u

2020 YCbCr (not RGB, not YcCbcCrc)

kRec2100 8u

2100 YCbCr (not RGB, not ICtCp)

kPassThrough 9u

Either the pixel format doesn't represent a color, or it's in an
application-specific colorspace that isn't describable by another entry
in this enum.

kDoNotCare 4294967294u

The sysmem client is explicitly indicating that the sysmem client does
not care which color space is chosen / used.

This list has a separate entry for each variant of a color space standard.

For this reason, should we ever add support for the RGB variant of 709, for

example, we'd add a separate entry to this list for that variant. Similarly

for the RGB variants of 2020 or 2100. Similarly for the YcCbcCrc variant of

2020. Similarly for the ICtCp variant of 2100.

A given ColorSpaceType may permit usage with a PixelFormatType(s) that

provides a bits-per-sample that's compatible with the ColorSpaceType's

official spec. Not all spec-valid combinations are necessarily supported.

See ImageFormatIsSupportedColorSpaceForPixelFormat() for the best-case degree

of support, but a "true" from that function doesn't guarantee that any given

combination of participants will all support the desired combination of

ColorSpaceType and PixelFormatType.

The sysmem service helps find a mutually supported combination and allocate

suitable buffers.

A ColorSpaceType's spec is not implicitly extended to support

outside-the-standard bits-per-sample (R, G, B, or Y sample). For example,

for 2020 and 2100, 8 bits-per-Y-sample is not supported (by sysmem), because

8 bits-per-Y-sample is not in the spec for 2020 or 2100. A sysmem

participant that attempts to advertise support for a PixelFormat + ColorSpace

that's non-standard will cause sysmem to reject the combo and fail to

allocate (intentionally, to strongly discourage specifying

insufficiently-defined combos).

This type is deprecated for new code, but is still used by some camera code.

Defined at line 219 of file fidling/gen/sdk/fidl/fuchsia.sysmem/fuchsia.sysmem/cpp/fidl/fuchsia.sysmem/cpp/common_types.h

Records

Functions

  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::AllocatorAllocateNonSharedCollectionRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::AllocatorAllocateSharedCollectionRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::AllocatorBindSharedCollectionRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::AllocatorValidateBufferCollectionTokenRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::AllocatorValidateBufferCollectionTokenResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::AllocatorSetDebugClientInfoRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::AllocatorConnectToSysmem2AllocatorRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::NodeSetNameRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::NodeSetDebugClientInfoRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::NodeSetDebugTimeoutLogDeadlineRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::NodeGetNodeRefResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::NodeIsAlternateForRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::NodeIsAlternateForResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::NodeIsAlternateForResult & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionTokenDuplicateSyncRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionTokenDuplicateSyncResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionTokenDuplicateRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionTokenCreateBufferCollectionTokenGroupRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionCheckBuffersAllocatedResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionAttachTokenRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionAttachLifetimeTrackingRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionTokenGroupCreateChildRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionTokenGroupCreateChildrenSyncRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionTokenGroupCreateChildrenSyncResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::VmoBuffer & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::HeapType & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferMemoryConstraints & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::CoherencyDomain & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferMemorySettings & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::FormatModifier & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::PixelFormatType & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::PixelFormat & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::ColorSpaceType & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::ColorSpace & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::ImageFormatConstraints & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SingleBufferSettings & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionInfo2 & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionWaitForBuffersAllocatedResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SingleBufferInfo & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::ImageFormat2 & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::ImagePlane & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::ImageFormat & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferFormat & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionInfo & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::ImageSpec & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemAddSecureHeapPhysicalRangeResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemAddSecureHeapPhysicalRangeResult & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemDeleteSecureHeapPhysicalRangeResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemDeleteSecureHeapPhysicalRangeResult & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemModifySecureHeapPhysicalRangeResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemModifySecureHeapPhysicalRangeResult & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemZeroSubRangeResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemZeroSubRangeResult & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureHeapProperties & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemGetPhysicalSecureHeapPropertiesResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemGetPhysicalSecureHeapPropertiesResult & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureHeapRange & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureHeapAndRanges & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureHeapsAndRanges & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemGetPhysicalSecureHeapsResponse & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemGetPhysicalSecureHeapsResult & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureHeapAndRange & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemGetPhysicalSecureHeapPropertiesRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemAddSecureHeapPhysicalRangeRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemDeleteSecureHeapPhysicalRangeRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemZeroSubRangeRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureHeapAndRangeModification & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::SecureMemModifySecureHeapPhysicalRangeRequest & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferUsage & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionConstraints & value)
  • std::ostream & operator<< (std::ostream & os, const ::fuchsia_sysmem::BufferCollectionSetConstraintsRequest & value)