Skip to content
  • Leandro Ribeiro's avatar
    backend-drm: add KMS plane's formats to per-surface dma-buf feedback · 5429302e
    Leandro Ribeiro authored
    
    
    In commit "libweston: add initial dma-buf feedback implementation" we've
    added initial support to dma-buf feedback, but it was not using the
    feedback from DRM-backend to add useful per-surface feedback.
    
    In this patch we add this. The scanout tranche of the per-surface
    feedback is based on the union of formats/modifiers of the primary and
    overlay planes available. These are intersected with the
    formats/modifiers supported by the renderer device.
    
    Also, it's important to mention that the scene can change a lot and we
    can't predict much. So this patch also adds hysteresis to the dma-buf
    feedback. We wait a few seconds to be sure that we reached stability
    before adding or removing the scanout tranche from dma-buf feedback and
    resending them. This help us to avoid spamming clients and leading to
    unnecessary buffer reallocations on their end.
    
    Here's an example of what we want to avoid:
    
    1. We detect that a view was not placed in a plane only because its
       format is not supported by the plane, so we add the scanout tranche
       to the feedback and send the events.
    
    2. A few milliseconds after, the view gets occluded. So now the view
       can't be placed in a plane anymore. We need to remove the scanout
       tranche and resend the feedback with formats/modifiers optimal for
       the renderer device. The client will then reallocate its buffers.
    
    3. A few milliseconds after, the view that was causing the occlusion
       gets minimized. So we got back to the first situation, in which the
       format of the view is not compatible with the plane. Then we need to
       add a scanout tranche and resend the feedback...
    
    This patch is based on previous work of Scott Anderson (@ascent).
    
    Signed-off-by: default avatarLeandro Ribeiro <leandro.ribeiro@collabora.com>
    Signed-off-by: default avatarScott Anderson <scott.anderson@collabora.com>
    Reviewed-by: default avatarDaniel Stone <daniels@collabora.com>
    5429302e
Loading