VESA provides a wide range of 8-bit palette modes. Add support to vesadrm. For compatibility with common userspace the driver also provides XRGB8888 on top of the palettized output.
Patches 1 to 3 prepare screen_info and struct pixel_format for indexed formats. This cleans up the code for other sysfb drivers as well. The pixel-format compare functions will be helpful in various places. Patches 4 to 6 prepare for using RGB332 as intermediate format between XRGB8888 and C8. This requires support for format conversion and RGB332 hardware palettes. Patches 7 to 9 update vesadrm. Patches 7 and 8 prepare the driver without adding new functionality. Patch 9 adds support for the color formats C8 and XRGB888. It adjusts output color formats in the plane's atomic_check helper as needed. Palette setup happens in atomic_flush as usual. Tested on VGA hardware. Besides supporting odd use cases, this feature can also help with testing support for low-end displays. Such displays often have similar limitations. v2: - improve commenting (Javier) Thomas Zimmermann (9): video: pixel_format: Add compare helpers video: screen_info: Add pixel-format helper for linear framebuffers drm/sysfb: Find screen_info format with helpers drm/sysfb: Blit to CRTC destination format drm/color-mgmt: Prepare for RGB332 palettes drm/format-helper: Add XRGB8888-to-RGB332 to drm_fb_blit() drm/vesadrm: Rename vesadrm_set_gamma_lut() to vesadrm_set_color_lut() drm/vesadrm: Prepare color management for palette-based framebuffers drm/vesadrm: Support DRM_FORMAT_C8 drivers/gpu/drm/drm_color_mgmt.c | 34 ++++ drivers/gpu/drm/drm_format_helper.c | 3 + drivers/gpu/drm/sysfb/drm_sysfb_helper.h | 2 +- drivers/gpu/drm/sysfb/drm_sysfb_modeset.c | 29 ++-- drivers/gpu/drm/sysfb/drm_sysfb_screen_info.c | 21 ++- drivers/gpu/drm/sysfb/vesadrm.c | 153 ++++++++++++++++-- drivers/video/screen_info_generic.c | 55 +++++++ include/drm/drm_color_mgmt.h | 1 + include/linux/screen_info.h | 2 + include/video/pixel_format.h | 61 +++++++ 10 files changed, 321 insertions(+), 40 deletions(-) -- 2.50.0