Skip to content
  • Armin Krezović's avatar
    weston: Port DRM backend to new output handling API · 08368132
    Armin Krezović authored and Pekka Paalanen's avatar Pekka Paalanen committed
    
    
    This is a complete port of the DRM backend that uses
    the recently added output handling API for output
    configuration.
    
    Output can be configured at runtime by passing the
    necessary configuration parameters, which can be
    filled in manually or obtained from the configuration
    file using previously added functionality. It is
    required that the scale and transform values are set
    using the previously added functionality.
    
    After everything has been set, output needs to be
    enabled manually using weston_output_enable().
    
    v2:
    
     - Added missing drmModeFreeCrtc() to drm_output_enable()
       cleanup list in case of failure.
     - Split drm_backend_disable() into drm_backend_deinit()
       to accomodate for changes in the first patch in the
       series. Moved restoring original crtc to
       drm_output_destroy().
    
    v3:
    
     - Moved origcrtc allocation to drm_output_set_mode().
     - Swapped connector_get_current_mode() and
       drm_output_add_mode() calls in drm_output_set_mode()
       to match current weston.
     - Moved crtc_allocator and connector_allocator update
       from drm_output_enable() to create_output_for_connector()
       to avoid problems when more than one monitor is connected
       at startup and crtc allocator wasn't updated before
       create_output_for_connector() was called second time,
       resulting in one screen being turned off.
     - Moved crtc_allocator and connector_allocator update from
       drm_output_deinit() to drm_output_destroy(), as it
       should not be called on drm_output_disable().
     - Use weston_compositor_add_pending_output().
     - Bump weston_drm_backend_config version to 2.
    
    v4:
    
     - Reset output->original_crtc to NULL if drm_output_set_mode()
       fails.
     - Remove unneeded log message when disabling an output when a
       pageflip is pending.
     - Document that create_output_for_connector() takes ownership
       of the connector.
     - Free the connector if create output conditionals are not met
       in create_outputs() and update_outputs().
    
    Signed-off-by: default avatarArmin Krezović <krezovic.armin@gmail.com>
    Reviewed-by: default avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
    08368132