class BufferCollectionSetConstraintsRequest
Defined at line 9552 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/natural_types.h
Public Methods
void BufferCollectionSetConstraintsRequest (Storage_ storage)
void BufferCollectionSetConstraintsRequest ()
Defined at line 9557 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/natural_types.h
void BufferCollectionSetConstraintsRequest (BufferCollectionSetConstraintsRequest && )
Defined at line 9558 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/natural_types.h
bool IsEmpty ()
const std::optional< ::fuchsia_sysmem2::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`.
::std::optional< ::fuchsia_sysmem2::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`.
BufferCollectionSetConstraintsRequest & constraints (std::optional< ::fuchsia_sysmem2::BufferCollectionConstraints> value)
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`.
const std::optional< ::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.
::std::optional< ::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.
BufferCollectionSetConstraintsRequest & must_match_vmo (std::optional< ::zx::vmo> value)
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.
void BufferCollectionSetConstraintsRequest (::fidl::internal::DefaultConstructPossiblyInvalidObjectTag )
BufferCollectionSetConstraintsRequest & operator= (BufferCollectionSetConstraintsRequest && )
Defined at line 9559 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/natural_types.h
Friends
class MemberVisitor
class NaturalTableCodingTraits