class PresentArgs

Defined at line 1340 of file fidling/gen/sdk/fidl/fuchsia.ui.composition/fuchsia.ui.composition/cpp/fidl/fuchsia.ui.composition/cpp/natural_types.h

Arguments passed into [`Present`]. All arguments are optional, and if an

argument is omitted Flatland will use a reasonable default, specified below.

Public Methods

void PresentArgs (Storage_ storage)
bool IsEmpty ()
void PresentArgs ()

Defined at line 1345 of file fidling/gen/sdk/fidl/fuchsia.ui.composition/fuchsia.ui.composition/cpp/fidl/fuchsia.ui.composition/cpp/natural_types.h

void PresentArgs (PresentArgs && )

Defined at line 1346 of file fidling/gen/sdk/fidl/fuchsia.ui.composition/fuchsia.ui.composition/cpp/fidl/fuchsia.ui.composition/cpp/natural_types.h

PresentArgs & operator= (PresentArgs && )

Defined at line 1347 of file fidling/gen/sdk/fidl/fuchsia.ui.composition/fuchsia.ui.composition/cpp/fidl/fuchsia.ui.composition/cpp/natural_types.h

const std::optional<int64_t> & requested_presentation_time ()

`requested_presentation_time` specifies the time on or after which the client would like the

enqueued operations to take visible effect (light up pixels on the screen), expressed in

nanoseconds in the `CLOCK_MONOTONIC` timebase.

The default `requested_presentation_time` is 0.

Using a `requested_presentation_time` in the present or past (such as 0) schedules enqueued

operations to take visible effect as soon as possible, during the next frame to be prepared.

Using a `requested_presentation_time` in the future schedules the enqueued operations to

take visible effect on or as closely as possible after the stated time, but no earlier.

Each rendered frame has a target presentation time. This is when Flatland aims to have the

frame presented to the user. Before rendering a frame, Flatland applies all

enqueued operations associated with all squashable calls to [`Present`] whose

`requested_presentation_time` is on or before the frame's target presentation time.

::std::optional<int64_t> & requested_presentation_time ()

`requested_presentation_time` specifies the time on or after which the client would like the

enqueued operations to take visible effect (light up pixels on the screen), expressed in

nanoseconds in the `CLOCK_MONOTONIC` timebase.

The default `requested_presentation_time` is 0.

Using a `requested_presentation_time` in the present or past (such as 0) schedules enqueued

operations to take visible effect as soon as possible, during the next frame to be prepared.

Using a `requested_presentation_time` in the future schedules the enqueued operations to

take visible effect on or as closely as possible after the stated time, but no earlier.

Each rendered frame has a target presentation time. This is when Flatland aims to have the

frame presented to the user. Before rendering a frame, Flatland applies all

enqueued operations associated with all squashable calls to [`Present`] whose

`requested_presentation_time` is on or before the frame's target presentation time.

PresentArgs & requested_presentation_time (std::optional<int64_t> value)

`requested_presentation_time` specifies the time on or after which the client would like the

enqueued operations to take visible effect (light up pixels on the screen), expressed in

nanoseconds in the `CLOCK_MONOTONIC` timebase.

The default `requested_presentation_time` is 0.

Using a `requested_presentation_time` in the present or past (such as 0) schedules enqueued

operations to take visible effect as soon as possible, during the next frame to be prepared.

Using a `requested_presentation_time` in the future schedules the enqueued operations to

take visible effect on or as closely as possible after the stated time, but no earlier.

Each rendered frame has a target presentation time. This is when Flatland aims to have the

frame presented to the user. Before rendering a frame, Flatland applies all

enqueued operations associated with all squashable calls to [`Present`] whose

`requested_presentation_time` is on or before the frame's target presentation time.

const std::optional< ::std::vector< ::zx::event>> & acquire_fences ()

Flatland will wait until all of a Flatland instance's `acquire_fences` are ready before it

will execute the presented commands. Not signaling `acquire_fences` will block the current

[`Present`] as well as the following ones even if their `acquire_fences` are signaled.

The default `acquire_fences` value is the empty vector.

::std::optional< ::std::vector< ::zx::event>> & acquire_fences ()

Flatland will wait until all of a Flatland instance's `acquire_fences` are ready before it

will execute the presented commands. Not signaling `acquire_fences` will block the current

[`Present`] as well as the following ones even if their `acquire_fences` are signaled.

The default `acquire_fences` value is the empty vector.

PresentArgs & acquire_fences (std::optional< ::std::vector< ::zx::event>> value)

Flatland will wait until all of a Flatland instance's `acquire_fences` are ready before it

will execute the presented commands. Not signaling `acquire_fences` will block the current

[`Present`] as well as the following ones even if their `acquire_fences` are signaled.

The default `acquire_fences` value is the empty vector.

const std::optional< ::std::vector< ::zx::event>> & release_fences ()

Flatland will signal all `release_fences` when it is safe to reuse resources which no longer

appear in the local scene graph at the time of the current [`Present`]. At the latest, this

will happen when the local scene graph (checkpointed at this [`Present`]) has been

integrated into the global scene graph, and the global scene has been displayed on screen.

(Under some circumstances, the fences may be signaled earlier, but clients do not need to

worry about this: the fences will only be signaled when it is safe to reuse the associated

resources).

These fences are intended to manage the reuse of shared memory resources such as sysmem

buffers. For example, it is undesirable for the client to render into an image which is

currently displayed on screen, because this may result in graphical artifacts such as

tearing.

It is up to the client to maintain the mapping between each fence and the resources which

will become reusable when the fence is signaled. A common strategy is to keep track of

resources which were used by the previous [`Present`] but are no longer used by the current

[`Present`]. For example, if an image is removed from the scene by the current [`Present`],

the client would insert a fence here. When the fence is later signaled, the client knows

that it is safe to render into the image and insert it into the local scene graph in a

subsequent [`Present`].

If an error occurs, Flatland may close the channel without signaling these fences. Clients

may immediately release shared buffers, but they should not immediately modify such buffers,

because they may still be displayed on screen. There is currently no good signal available

to the client about when it is safe to reuse shared buffers.

The default `release_fences` value is the empty vector.

::std::optional< ::std::vector< ::zx::event>> & release_fences ()

Flatland will signal all `release_fences` when it is safe to reuse resources which no longer

appear in the local scene graph at the time of the current [`Present`]. At the latest, this

will happen when the local scene graph (checkpointed at this [`Present`]) has been

integrated into the global scene graph, and the global scene has been displayed on screen.

(Under some circumstances, the fences may be signaled earlier, but clients do not need to

worry about this: the fences will only be signaled when it is safe to reuse the associated

resources).

These fences are intended to manage the reuse of shared memory resources such as sysmem

buffers. For example, it is undesirable for the client to render into an image which is

currently displayed on screen, because this may result in graphical artifacts such as

tearing.

It is up to the client to maintain the mapping between each fence and the resources which

will become reusable when the fence is signaled. A common strategy is to keep track of

resources which were used by the previous [`Present`] but are no longer used by the current

[`Present`]. For example, if an image is removed from the scene by the current [`Present`],

the client would insert a fence here. When the fence is later signaled, the client knows

that it is safe to render into the image and insert it into the local scene graph in a

subsequent [`Present`].

If an error occurs, Flatland may close the channel without signaling these fences. Clients

may immediately release shared buffers, but they should not immediately modify such buffers,

because they may still be displayed on screen. There is currently no good signal available

to the client about when it is safe to reuse shared buffers.

The default `release_fences` value is the empty vector.

PresentArgs & release_fences (std::optional< ::std::vector< ::zx::event>> value)

Flatland will signal all `release_fences` when it is safe to reuse resources which no longer

appear in the local scene graph at the time of the current [`Present`]. At the latest, this

will happen when the local scene graph (checkpointed at this [`Present`]) has been

integrated into the global scene graph, and the global scene has been displayed on screen.

(Under some circumstances, the fences may be signaled earlier, but clients do not need to

worry about this: the fences will only be signaled when it is safe to reuse the associated

resources).

These fences are intended to manage the reuse of shared memory resources such as sysmem

buffers. For example, it is undesirable for the client to render into an image which is

currently displayed on screen, because this may result in graphical artifacts such as

tearing.

It is up to the client to maintain the mapping between each fence and the resources which

will become reusable when the fence is signaled. A common strategy is to keep track of

resources which were used by the previous [`Present`] but are no longer used by the current

[`Present`]. For example, if an image is removed from the scene by the current [`Present`],

the client would insert a fence here. When the fence is later signaled, the client knows

that it is safe to render into the image and insert it into the local scene graph in a

subsequent [`Present`].

If an error occurs, Flatland may close the channel without signaling these fences. Clients

may immediately release shared buffers, but they should not immediately modify such buffers,

because they may still be displayed on screen. There is currently no good signal available

to the client about when it is safe to reuse shared buffers.

The default `release_fences` value is the empty vector.

const std::optional<bool> & unsquashable ()

If `unsquashable` is true, then the update is guaranteed to be uniquely shown for at

least one vsync interval.

If `unsquashable` is false, then the update can be combined with those that come after

it.

If absent, `unsquashable` is false.

::std::optional<bool> & unsquashable ()

If `unsquashable` is true, then the update is guaranteed to be uniquely shown for at

least one vsync interval.

If `unsquashable` is false, then the update can be combined with those that come after

it.

If absent, `unsquashable` is false.

PresentArgs & unsquashable (std::optional<bool> value)

If `unsquashable` is true, then the update is guaranteed to be uniquely shown for at

least one vsync interval.

If `unsquashable` is false, then the update can be combined with those that come after

it.

If absent, `unsquashable` is false.

void PresentArgs (::fidl::internal::DefaultConstructPossiblyInvalidObjectTag )

Friends

class MemberVisitor
class NaturalTableCodingTraits