class BufferCollectionSetConstraintsRequest
Defined at line 15850 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/wire_types.h
Public Methods
void BufferCollectionSetConstraintsRequest ()
Defined at line 15852 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/wire_types.h
void BufferCollectionSetConstraintsRequest (const BufferCollectionSetConstraintsRequest & other)
Defined at line 15853 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/wire_types.h
bool IsEmpty ()
Returns whether no field is set.
bool HasUnknownData ()
Returns whether the table references unknown fields.
void _CloseHandles ()
::fidl::WireTableBuilder< ::fuchsia_sysmem2::wire::BufferCollectionSetConstraintsRequest> Builder (::fidl::AnyArena & arena)
Return a builder that by defaults allocates of an arena.
::fidl::WireTableExternalBuilder< ::fuchsia_sysmem2::wire::BufferCollectionSetConstraintsRequest> ExternalBuilder (::fidl::ObjectView< ::fidl::WireTableFrame< ::fuchsia_sysmem2::wire::BufferCollectionSetConstraintsRequest>> frame)
Return a builder that relies on explicitly allocating |fidl::ObjectView|s.
::fuchsia_sysmem2::wire::BufferCollectionConstraints & constraints ()
These are the constraints on the buffer collection imposed by the
sending client/participant. The `constraints` field is not required
to be set. If not set, the client is not setting any actual
constraints, but is indicating that the client has no constraints to
set. A client that doesn't set the `constraints` field won't receive
any VMO handles, but can still find out how many buffers were
allocated and can still refer to buffers by their `buffer_index`.
bool has_constraints ()
::zx::vmo & must_match_vmo ()
This field should only be set if a client must force the new buffer
collection to have exactly identical SingleBufferSettings as a
previously-allocated collection, else the allocation must fail.
Setting this field nails down all the constraints except the buffer
count, so clients shouldn't expect this to work unless the overall
set of participants on this logical buffer collection is the same as
for the previous allocation (though this isn't strictly required to
be true). Even then, if any participant indicates different
constraints than for this VMO's collection, the allocation is fairly
likely to fail. For these reasons, clients will want to avoid
setting this field unless it's really needed.
The `must_match_vmo` handle must be a handle to a sysmem-provided
VMO, else the logical buffer collection will fail. To check whether
a VMO handle refers to a sysmem-provided VMO before setting this
field (if not already known), see
`[fuchsia.sysmem2/Allocator.GetVmoInfo]`.
This still ensures that constraints of other participants are
satisfied as well, else the allocation will fail.
This field is a VMO rather than SingleBufferSettings so that adding
a new field to SingleBufferSettings remains compatible with this
mechanism without needing to update/rebuild all clients using this
mechanism to copy the new field.
This field is a VMO rather than a "handle to a SingleBufferSettings"
(or similar) to avoid this field causing allocation failure when
there are zero actual still-existing buffers to match (in which case
not setting this field is better than letting an already-gone buffer
dictate the settings for new buffers).
Clients should avoid keeping a buffer alive just to use it with this
field; instead drop the old buffer when appropriate, and allocate
new buffer(s) like it's the first allocation after boot again.
See also `[fuchsia.sysmem2/BufferCollection.AttachToken]` which is a
substantially different mechanism, but might be a workable
alternative to setting this feild in a few (but not all) situations
that would otherwise need to set this field.
In most cases the constraints field should specify all the necessary
constraints known to the client, and this field should not be set.
bool has_must_match_vmo ()
BufferCollectionSetConstraintsRequest & operator= (const BufferCollectionSetConstraintsRequest & other)
Defined at line 15854 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/wire_types.h
void BufferCollectionSetConstraintsRequest (BufferCollectionSetConstraintsRequest && other)
Defined at line 15855 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/wire_types.h
BufferCollectionSetConstraintsRequest & operator= (BufferCollectionSetConstraintsRequest && other)
Defined at line 15856 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/wire_types.h
BufferCollectionSetConstraintsRequest & set_constraints (::fidl::ObjectView< ::fuchsia_sysmem2::wire::BufferCollectionConstraints> elem)
BufferCollectionSetConstraintsRequest & set_constraints (std::nullptr_t )
BufferCollectionSetConstraintsRequest & clear_constraints ()
BufferCollectionSetConstraintsRequest & set_must_match_vmo (::zx::vmo elem)
BufferCollectionSetConstraintsRequest & clear_must_match_vmo ()
void BufferCollectionSetConstraintsRequest (::fidl::AnyArena & allocator)
void BufferCollectionSetConstraintsRequest (::fidl::ObjectView< ::fidl::WireTableFrame< ::fuchsia_sysmem2::wire::BufferCollectionSetConstraintsRequest>> && frame)
This constructor allows a user controlled allocation (not using a Arena).
It should only be used when performance is key.
As soon as the frame is given to the table, it must not be used directly or for another table.
void Allocate (::fidl::AnyArena & allocator)
void Init (::fidl::ObjectView< ::fidl::WireTableFrame< ::fuchsia_sysmem2::wire::BufferCollectionSetConstraintsRequest>> && frame_ptr)
void ~BufferCollectionSetConstraintsRequest ()
Defined at line 15858 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/wire_types.h
Friends
class WireTableBaseBuilder
class WireTableBaseBuilder