• Imre Deak's avatar
    drm/i915/adlp/fb: Remove restriction on CCS AUX plane strides · e6d6f689
    Imre Deak authored
    As opposed to other GEN12 platforms ADLP provides a way to program the
    stride of CCS surfaces independently of the main surface stride (within
    the corresponding limit of the preceding and succeeding power-of-two
    values of the main surface stride). Using this HW feature we can remove
    the POT stride restriction on CCS surfaces, making the ADLP CCS FB uAPI
    (FB modifiers) identical to that of TGL.
    
    The HW makes the CCS stride flexible programming possible by deriving
    the stride from the value programmed to the PLANE_STRIDE register. After
    that the HW rounds up this value to the next power-of-two value and uses
    this for walking the pages of the main surface mapped to GTT/DPT.
    
    To align with the above scheme, introduce a scanout_stride view
    parameter which will be programmed to the PLANE_STRIDE register and use
    the mapping_stride view param to store the POT aligned value of the
    same. By requiring userspace to pass in FBs with a CCS stride that
    aligns with the main surface stride (matching the requirement of all
    GEN12 platforms), the scanout_stride will be the userspace main surface
    stride and the mapping_stride will be the POT rounded value of the same.
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
    Cc: Nanley G Chery <nanley.g.chery@intel.com>
    Cc: Sameer Lattannavar <sameer.lattannavar@intel.com>
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Reviewed-by: default avatarJuha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211026225105.2783797-8-imre.deak@intel.com
    e6d6f689
skl_universal_plane.c 63.5 KB