Skip to content
  • Daniel Stone's avatar
    compositor-drm: Add modes to drm_output_propose_state · f7a2f835
    Daniel Stone authored
    
    
    Add support for multiple modes to drm_output_propose_state. Currently we
    intend to operate in three modes: planes-only (no renderer buffer,
    client buffers in planes only), mixed-mode (promote client buffers to
    planes where possible, falling back to the renderer where not), and
    renderer-only (no plane usage at all).
    
    We want to use the first (planes-only) mode where possible: it can avoid
    us having to allocate buffers for the renderer, and it also gives us the
    best chance of the optimal configuration, with no composition. In this
    mode, we walk the scene looking at all views, trying to put them in
    planes, and failing as soon as we find a view we cannot place in a
    plane.
    
    In the second mode, rather than failing, we assign those views which
    cannot be on a plane to the renderer, and allow the renderer to
    composite them.
    
    In the third mode, planes are not usable, so everything but the cursor
    goes to the renderer. We will use this when we cannot use the planes-only
    mode (because some views cannot be placed in planes), but also cannot
    use the 'mixed' mode because we have no renderer buffer yet. Since we
    walk the scene graph from top to bottom, using atomic modesetting we
    will determine if planes can be promoted in mixed mode by placing a
    renderer buffer at the bottom of the scene, placing a cursor buffer if
    applicable, then testing if we can add overlay planes to this mode.
    
    Without a buffer from the renderer, we cannot do these tests, so we push
    everything through the renderer and then switch to mixed mode on the
    next repaint.
    
    This patch implements the mixed and renderer-only modes (previously
    differentiated only by the sprites_are_broken flag), with the
    planes-only mode being left for a later patch.
    
    Signed-off-by: default avatarDaniel Stone <daniels@collabora.com>
    Reviewed-by: default avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
    f7a2f835