mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
drm/format-helper: Simplify drm_fb_build_fourcc_list()
The DRM helper drm_fb_build_fourcc_list() creates a list of color formats for primary planes of the generic drivers. Simplify the helper: - It used to mix and filter native and emulated formats as provided by the driver. Now the only emulated format is XRGB8888, which is required as fallback by legacy software. Drop support for emulating any other formats. - Also convert alpha formats to their non-alpha counterparts. Generic drivers don't support primary planes with alpha formats and some DTs incorrectly advertise alpha channels for non-alpha hardware. So only export non-alpha formats for primary planes. With the simplified helper, scrap format lists of the affected generic drivers. All they need is the firmware buffer's native format, from which the helper creates the list of color formats. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230102112927.26565-13-tzimmermann@suse.de
This commit is contained in:
@@ -446,25 +446,6 @@ static int simpledrm_device_init_regulators(struct simpledrm_device *sdev)
|
||||
* Modesetting
|
||||
*/
|
||||
|
||||
/*
|
||||
* Support all formats of simplefb and maybe more; in order
|
||||
* of preference. The display's update function will do any
|
||||
* conversion necessary.
|
||||
*
|
||||
* TODO: Add blit helpers for remaining formats and uncomment
|
||||
* constants.
|
||||
*/
|
||||
static const uint32_t simpledrm_primary_plane_formats[] = {
|
||||
DRM_FORMAT_XRGB8888,
|
||||
DRM_FORMAT_ARGB8888,
|
||||
DRM_FORMAT_RGB565,
|
||||
//DRM_FORMAT_XRGB1555,
|
||||
//DRM_FORMAT_ARGB1555,
|
||||
DRM_FORMAT_RGB888,
|
||||
DRM_FORMAT_XRGB2101010,
|
||||
DRM_FORMAT_ARGB2101010,
|
||||
};
|
||||
|
||||
static const uint64_t simpledrm_primary_plane_format_modifiers[] = {
|
||||
DRM_FORMAT_MOD_LINEAR,
|
||||
DRM_FORMAT_MOD_INVALID
|
||||
@@ -745,8 +726,6 @@ static struct simpledrm_device *simpledrm_device_create(struct drm_driver *drv,
|
||||
/* Primary plane */
|
||||
|
||||
nformats = drm_fb_build_fourcc_list(dev, &format->format, 1,
|
||||
simpledrm_primary_plane_formats,
|
||||
ARRAY_SIZE(simpledrm_primary_plane_formats),
|
||||
sdev->formats, ARRAY_SIZE(sdev->formats));
|
||||
|
||||
primary_plane = &sdev->primary_plane;
|
||||
|
||||
Reference in New Issue
Block a user