Display Configuration

Clients can configure the display to present one or more buffers with a certain configuration for each buffer. Due to the pipelined nature of the driver these operations will normally be linked to synchronization fences that allow the configuration request to be queued but not enacted until required (e.g. when the GPU has finished a render). The Services server handles all knowledge of synchronization and will only issue the configuration request when the operation is allowed to run, i.e. the synchronisation fence is met and the display is able to process a new command.

The third-party display driver must support multiple commands in flight; that is, configuration requests that have been sent to it but have not yet been retired. This is due to the fact that the display driver is not allowed to retire the active configuration until a new request has been issued and is on the display. When a configuration has been finished, it has been displayed for the specified period and is no longer being used by the display, it is retired. This is notified to Services server from the display driver to ensure that any required synchronisation signalling is done.

A number of these configuration requests can be issued by the client without having to wait until they have been retired ensuring that Services can keep all hardware devices running by having operations queued, minimizing the system idle time.
Figure 1. Configuration Flow