class PresentArgs

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

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

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

Public Members

static const fidl_type_t * FidlType

Public Methods

bool IsEmpty ()

Returns whether no field is set.

const 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.

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

bool has_requested_presentation_time ()

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

int64_t * mutable_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.

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

void clear_requested_presentation_time ()

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

const ::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.

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

bool has_acquire_fences ()

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

::std::vector< ::zx::event> * mutable_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.

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

void clear_acquire_fences ()

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

const ::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.

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

bool has_release_fences ()

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

::std::vector< ::zx::event> * mutable_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.

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

void clear_release_fences ()

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

bool has_unsquashable ()

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

bool * mutable_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.

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

void clear_unsquashable ()

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

const ::std::vector< ::zx::counter> & present_fences ()

Flatland will signal all `present_fences` when the frame corresponding to this `Present`

is reported as displayed by the display hardware. Additionally, each fence will have the

monotonic timestamp of the corresponding vsync written into it.

The default `present_fences` value is the empty vector.

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

bool has_present_fences ()

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

::std::vector< ::zx::counter> * mutable_present_fences ()

Flatland will signal all `present_fences` when the frame corresponding to this `Present`

is reported as displayed by the display hardware. Additionally, each fence will have the

monotonic timestamp of the corresponding vsync written into it.

The default `present_fences` value is the empty vector.

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

void clear_present_fences ()

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

const ::std::vector< ::zx::counter> & release_counters ()

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

longer appear in the local scene graph at the time of the current `Present` (i.e. resources

from the previous present). This is similar to `release_fences` but by using counters

instead of events, counters hold the monotonic timestamp of when resources became safe for

reuse. The event based `release_fences` can be used simultaneously with `release_counters`

for resources that don't care about this timestamp.

The default `release_counters` value is the empty vector.

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

bool has_release_counters ()

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

::std::vector< ::zx::counter> * mutable_release_counters ()

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

longer appear in the local scene graph at the time of the current `Present` (i.e. resources

from the previous present). This is similar to `release_fences` but by using counters

instead of events, counters hold the monotonic timestamp of when resources became safe for

reuse. The event based `release_fences` can be used simultaneously with `release_counters`

for resources that don't care about this timestamp.

The default `release_counters` value is the empty vector.

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

void clear_release_counters ()

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

PresentArgs & set_requested_presentation_time (int64_t _value)
PresentArgs & set_acquire_fences (::std::vector< ::zx::event> _value)
PresentArgs & set_release_fences (::std::vector< ::zx::event> _value)
PresentArgs & set_unsquashable (bool _value)
PresentArgs & set_present_fences (::std::vector< ::zx::counter> _value)
PresentArgs & set_release_counters (::std::vector< ::zx::counter> _value)
void PresentArgs ()
void PresentArgs (PresentArgs && other)
const 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.

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

void ~PresentArgs ()
PresentArgs & operator= (PresentArgs && other)
::std::unique_ptr<PresentArgs> New ()
void Encode (::fidl::Encoder * _encoder, size_t _offset, std::optional< ::fidl::HandleInformation> maybe_handle_info)
void Decode (::fidl::Decoder * _decoder, PresentArgs * _value, size_t _offset)
zx_status_t Clone (PresentArgs * _result)