class Controller

Defined at line 59 of file ../../src/graphics/display/drivers/coordinator/controller.h

Multiplexes between display controller clients and display engine drivers.

Instances are not thread-safe, and must only be used on the driver

dispatcher.

Public Methods

void Controller (const Controller & )

Defined at line 85 of file ../../src/graphics/display/drivers/coordinator/controller.h

Controller & operator= (const Controller & )

Defined at line 86 of file ../../src/graphics/display/drivers/coordinator/controller.h

EngineDriverClient * engine_driver_client ()

Defined at line 133 of file ../../src/graphics/display/drivers/coordinator/controller.h

const display::EngineInfo & engine_info ()

May only be called after the display engine driver is connected.

Defined at line 139 of file ../../src/graphics/display/drivers/coordinator/controller.h

zx::result<std::unique_ptr<Controller>> Create (std::unique_ptr<EngineDriverClient> engine_driver_client, fdf::UnownedSynchronizedDispatcher driver_dispatcher)

Factory method for production use.

Creates and initializes a Controller instance.

Asynchronous work that manages the state of the display clients and

coordinates the display state between clients and engine drivers runs on

`driver_dispatcher`.

`engine_driver_client` must not be null.

`driver_dispatcher` must be running until `PrepareStop()` is called.

`driver_dispatcher` must be shut down when `Stop()` is called.

Defined at line 722 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void Controller (std::unique_ptr<EngineDriverClient> engine_driver_client, fdf::UnownedSynchronizedDispatcher driver_dispatcher)

Creates a new coordinator Controller instance. It creates a new Inspector

which will be solely owned by the Controller instance.

`engine_driver_client` must not be null.

Defined at line 795 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void ~Controller ()

Defined at line 813 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void PrepareStop ()

References the `PrepareStop()` method in the DFv2 (fdf::DriverBase) driver

lifecycle.

Defined at line 765 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void OnDisplayAdded (std::unique_ptr<AddedDisplayInfo> added_display_info)

`EngineListener`:

Must run on `driver_dispatcher_`.

Defined at line 133 of file ../../src/graphics/display/drivers/coordinator/controller.cc

bool supports_capture ()

May only be called after the display engine driver is connected.

Defined at line 136 of file ../../src/graphics/display/drivers/coordinator/controller.h

fdf::UnownedSynchronizedDispatcher driver_dispatcher ()

Defined at line 141 of file ../../src/graphics/display/drivers/coordinator/controller.h

bool IsRunningOnDriverDispatcher ()

Defined at line 144 of file ../../src/graphics/display/drivers/coordinator/controller.h

const inspect::Inspector & inspector ()

Defined at line 148 of file ../../src/graphics/display/drivers/coordinator/controller.h

void OnDisplayRemoved (display::DisplayId removed_display_id)

Defined at line 148 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void OnCaptureComplete ()

Defined at line 161 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void OnDisplayVsync (display::DisplayId display_id, zx::time_monotonic timestamp, display::DriverConfigStamp driver_config_stamp)

Defined at line 196 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void OnClientDead (ClientProxy * client)

Defined at line 497 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void SetVirtconMode (fuchsia_hardware_display::wire::VirtconMode virtcon_mode)

Defined at line 468 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void ApplyConfig (DisplayConfig & display_config, display::ConfigStamp client_config_stamp, ClientId client_id)

Defined at line 342 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void ImageWillBeDestroyed (display::DriverImageId driver_image_id)

ImageLifecycleListener:

Defined at line 444 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void ReleaseCaptureImage (display::DriverCaptureImageId driver_capture_image_id)

Defined at line 448 of file ../../src/graphics/display/drivers/coordinator/controller.cc

zx::result<std::span<const display::ModeAndId>> GetDisplayPreferredModes (display::DisplayId display_id)

The display modes are guaranteed to be valid as long as the display with

`display_id` is valid.

For a valid display, it's guaranteed that `GetDisplayPreferredModes()` is

non-empty.

Defined at line 528 of file ../../src/graphics/display/drivers/coordinator/controller.cc

zx::result<fbl::Vector<display::PixelFormat>> GetSupportedPixelFormats (display::DisplayId display_id)

Defined at line 544 of file ../../src/graphics/display/drivers/coordinator/controller.cc

template <typename Callback>
bool FindDisplayInfo (display::DisplayId display_id, Callback callback)

Calls `callback` with a const DisplayInfo

&

matching the given `display_id`.

Returns true iff a DisplayInfo with `display_id` was found and `callback`

was called.

The controller mutex is guaranteed to be held while `callback` is called.

Defined at line 239 of file ../../src/graphics/display/drivers/coordinator/controller.h

zx_status_t CreateClient (ClientPriority client_priority, fidl::ServerEnd<fuchsia_hardware_display::Coordinator> coordinator_server_end, fidl::ClientEnd<fuchsia_hardware_display::CoordinatorListener> coordinator_listener_client_end)

Typically called by OpenController/OpenVirtconController. However, this is made public

for use by testing services which provide a fake display controller.

Defined at line 583 of file ../../src/graphics/display/drivers/coordinator/controller.cc

display::DriverBufferCollectionId GetNextDriverBufferCollectionId ()

Defined at line 681 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void OpenCoordinatorWithListenerForVirtcon (OpenCoordinatorWithListenerForVirtconRequestView request, OpenCoordinatorWithListenerForVirtconCompleter::Sync & completer)

`fidl::WireServer

<fuchsia

_hardware_display::Provider>`:

Defined at line 687 of file ../../src/graphics/display/drivers/coordinator/controller.cc

void OpenCoordinatorWithListenerForPrimary (OpenCoordinatorWithListenerForPrimaryRequestView request, OpenCoordinatorWithListenerForPrimaryCompleter::Sync & completer)

Defined at line 704 of file ../../src/graphics/display/drivers/coordinator/controller.cc