Den 08.08.2022 14.53, skrev Thomas Zimmermann: > Change format-conversion helpers to use struct iosys_map for source > and destination buffers. Update all users. Also prepare interface for > multi-plane color formats. > > The format-conversion helpers mostly used to convert to I/O memory > or system memory. To actual memory type depended on the usecase. We > now have drivers upcomming that do the conversion entirely in system > memory. It's a good opportunity to stream-line the interface of the > conversion helpers to use struct iosys_map. Source and destination > buffers can now be either in system or in I/O memory. Note that the > implementation still only supports source buffers in system memory. > > This patchset also changes the interface to support multi-plane > color formats, where the values for each component are stored in > distinct memory locations. Converting from RGBRGBRGB to RRRGGGBBB > would require a single source buffer with RGB values and 3 destination > buffers for the R, G and B values. Conversion-helper interfaces now > support this. > > v2: > * add IOSYS_MAP_INIT_VADDR_IOMEM (Sam) > * use drm_format_info_bpp() (Sam) > * update documentation (Sam) > * rename 'vmap' to 'src' (Sam) > * many smaller cleanups and fixes (Sam, Jose) > > Thomas Zimmermann (14): > iosys-map: Add IOSYS_MAP_INIT_VADDR_IOMEM() > drm/format-helper: Provide drm_fb_blit() > drm/format-helper: Merge drm_fb_memcpy() and drm_fb_memcpy_toio() > drm/format-helper: Convert drm_fb_swab() to struct iosys_map > drm/format-helper: Rework XRGB8888-to-RGBG332 conversion > drm/format-helper: Rework XRGB8888-to-RGBG565 conversion > drm/format-helper: Rework XRGB8888-to-RGB888 conversion > drm/format-helper: Rework RGB565-to-XRGB8888 conversion > drm/format-helper: Rework RGB888-to-XRGB8888 conversion > drm/format-helper: Rework XRGB8888-to-XRGB2101010 conversion > drm/format-helper: Rework XRGB8888-to-GRAY8 conversion > drm/format-helper: Rework XRGB8888-to-MONO conversion > drm/format-helper: Move destination-buffer handling into internal > helper > drm/format-helper: Rename parameter vmap to src > Tested-by: Noralf Trønnes <noralf@xxxxxxxxxxx> * gud: XRGB8888-to-{MONO,GRAY8,RGB332,RGB565} * mi0283qt (drm_mipi_dbi): XRGB8888-to-RGB565 with swap=true, drm_fb_memcpy, drm_fb_swab > drivers/gpu/drm/drm_format_helper.c | 509 ++++++++++-------- > drivers/gpu/drm/drm_mipi_dbi.c | 9 +- > drivers/gpu/drm/gud/gud_pipe.c | 20 +- > drivers/gpu/drm/hyperv/hyperv_drm_modeset.c | 9 +- > drivers/gpu/drm/mgag200/mgag200_mode.c | 9 +- > drivers/gpu/drm/solomon/ssd130x.c | 7 +- > .../gpu/drm/tests/drm_format_helper_test.c | 45 +- > drivers/gpu/drm/tiny/cirrus.c | 19 +- > drivers/gpu/drm/tiny/repaper.c | 6 +- > drivers/gpu/drm/tiny/simpledrm.c | 8 +- > drivers/gpu/drm/tiny/st7586.c | 5 +- > include/drm/drm_format_helper.h | 56 +- > include/linux/iosys-map.h | 15 +- > 13 files changed, 416 insertions(+), 301 deletions(-) > > > base-commit: 2bdae66c9988dd0f07633629c0a85383cfc05940 > prerequisite-patch-id: c2b2f08f0eccc9f5df0c0da49fa1d36267deb11d > prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24 > prerequisite-patch-id: 3f204510fcbf9530d6540bd8e6128cce598988b6