• Thomas Zimmermann's avatar
    drm/ast: Convert ast to SHMEM · f2fa5a99
    Thomas Zimmermann authored
    Replace GEM VRAM helpers with GEM SHMEM helpers in ast. Avoids OOM
    errors when allocating video memory. Also adds support for dma-buf
    functionality.
    
    Aspeed display hardware supports display resolutions of FullHD and
    higher at 32-bit pixel depth. But the amount of video memory is in
    the range of 8 MiB to 32 MiB, which adds constraints to the actually
    available resolutions. As atomic modesetting with VRAM helpers
    requires double buffering in video memory, ast fails to pageflip
    in some configurations. For example, FullHD with an active cursor
    plane does not work on devices with 16 MiB of video memory.
    
    Resolve this problem by converting the ast driver to GEM SHMEM helpers.
    Keep the buffer objects in system memory and copy to video memory
    on pageflips via shadow-plane helpers. Userspace used to require shadow
    planes for decent performance, but that's now provided by the driver.
    To replace the memory management, the patch also implements damage
    handling for the primary plane.
    
    With GEM SHMEM helpers, dma-buf import and export is now supported
    by ast. This allows easier screen mirroring across devices or with
    an Aspeed-based BMC. A corresponding feature request is available
    at [1].
    
    v2:
    	* fix typos in commit message (Jocelyn)
    Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
    Reviewed-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
    Tested-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
    Link: https://lore.kernel.org/dri-devel/20220901124451.2523077-1-oushixiong@kylinos.cn/ # [1]
    Link: https://patchwork.freedesktop.org/patch/msgid/20221013112923.769-8-tzimmermann@suse.de
    f2fa5a99
ast_drv.h 12.6 KB