Skip to content
  • Daniel Stone's avatar
    compositor-drm: Only check final co-ordinates for overlay scaling · ce137472
    Daniel Stone authored
    
    
    When considering a view for placement into an overlay plane, we
    previously checked that the buffer's transform and scale were identical
    to the output's, and that there were no transformations applied.
    
    We now use a more consistent set of checks through
    drm_plane_state_coords_for_view. This checks the complete transformation
    chain, allowing only translation and scaling; at the end, we check if
    the total buffer -> surface -> view -> output chain requires scaling or
    rotation, and disallow it if so.
    
    This allows scaling in the cases where the transformation chain cancels
    itself out to produce a 1:1 buffer -> output pixel scale.
    
    An erroneously disallowed case is where buffer -> view -> output
    rotations cancel each other out; we prevent a view from being on an
    overlay plane if rotation is involved at all. Fixing this would require
    a complete analysis of the overall transformation matrix.
    
    Signed-off-by: default avatarDaniel Stone <daniels@collabora.com>
    Reviewed-by: default avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
    Tested-by: default avatarEmre Ucan <eucan@de.adit-jv.com>
    ce137472