[PATCH v3 00/13] drm: Fix color-format selection in fbdev emulation
Thomas Zimmermann
tzimmermann at suse.de
Mon Jan 2 11:29:14 UTC 2023
Fix the selection of the fbdev emulation's color format and make
XRGB8888 the only emulated color format. Resolves the blank screen
in cases where video= specifies an unsupported color format. Also
resolves the issues around current format-conversion helpers.
Version 2 of the patchset fixes the format-helper test cases on
big-endian platforms. This involves some changes to existing tests
as well.
DRM drivers usually pick a default format for their fbdev emulation.
Via the kernel's video= parameter, users can specify a different
format. If the given format is unsupported by the driver, the fbdev
console screen remains dark. As the console is essential to many
systems, not displaying anything is to be avoided.
Patch 1 fixes the detection of the firmware's native color format.
The meaning of several color parameters is inconsistent among Linux
and various standards. Take this into account.
Patches 2 to 5 fix the existing conversion helpers and test cases
for big-endian platforms. These patches are new in version 2 of the
patchset.
As drivers are supposed to provide XRGB8888 as a default fallback
format, provide XRGB8888 conversion helpers in patches 6 to 9. The
new helpers handle cases where the client uses a XRGB8888 framebuffer
and the display scanout buffer uses a different format. All scanout
formats of the simplefb infrastructure should now be covered. The
patchset also extend the Kunit tests for the new formats.
With format conversion in place, patches 10 and 11 fix the single-probe
function's format selection. The helper now goes over the given video=
parameters until it finds a compatible format. If none is found, the
uses driver's default format.
Patches 12 and 13 clean up DRM code in drivers and helpers.
Tested on x86-64 with EFI output and x86 with various VESA color
modes. Also tested on ppc64 with OF output.
v3:
* use endian-specific types in format helpers (Jose, LKP bot)
v2:
* fix problems with big-endian platforms
Thomas Zimmermann (13):
firmware/sysfb: Fix EFI/VESA format selection
drm/format-helper: Comment on RGB888 byte order
drm/format-helper: Fix test-input format conversion
drm/format-helper: Store RGB565 in little-endian order
drm/format-helper: Type fixes in format-helper tests
drm/format-helper: Flip src/dst-format branches in blit helper
drm/format-helper: Add conversion from XRGB8888 to ARGB8888
drm/format-helper: Add conversion from XRGB8888 to ARGB2101010
drm/format-helper: Add conversion from XRGB8888 to 15-bit RGB555
formats
drm/fh-helper: Split fbdev single-probe helper
drm/fb-helper: Fix single-probe color-format selection
drm/format-helper: Simplify drm_fb_build_fourcc_list()
drm/format-helper: Remove unnecessary conversion helpers
drivers/firmware/sysfb_simplefb.c | 43 +-
drivers/gpu/drm/drm_fb_helper.c | 252 ++++++----
drivers/gpu/drm/drm_format_helper.c | 462 +++++++++++++-----
.../gpu/drm/tests/drm_format_helper_test.c | 386 ++++++++++++++-
drivers/gpu/drm/tiny/ofdrm.c | 20 -
drivers/gpu/drm/tiny/simpledrm.c | 21 -
include/drm/drm_format_helper.h | 16 +-
7 files changed, 897 insertions(+), 303 deletions(-)
--
2.39.0
More information about the dri-devel
mailing list