Skip to content

drm_hwcomposer: Add blocking SetConfig

The QueueConfig mechanism is currently used for all calls to SetConfig(WithConstraints). This is appropriate for config changes that are expected to be seamless (i.e. they are in the same config group), but is not a great fit for config changes that may result in a full modeset. For example, config changes that change the display size could take several hundred milliseconds to complete depending on the external display topology and SoC. With support for an arbitrary number of hotpluggable displays, there will be cases where there are not sufficient resource to support any combination of configs, and the atomic commit may fail.

This MR introduces a SetConfig method that handles config changes that may require a full modeset. This work paves the way for:

  • implementing support for the seamlessRequired contraint
  • being more intentional about setting the DRM_MODE_ATOMIC_ALLOW_MODESET flag such that Validate/Present can ensure that a commit does not introduce visual artifacts
  • synchronous error feedback for cases where SetConfig fails due to lack of resources, which is a case that needs to be handled for arbitrary external displays.

Merge request reports

Loading