Message ID | 34ad1c1798b37a68ce08cffa8402be497ac2162e.1680273039.git.geert+renesas@glider.be (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm: shmobile: Fixes and enhancements | expand |
Hi Geert, Thank you for the patch. On Fri, Mar 31, 2023 at 04:48:08PM +0200, Geert Uytterhoeven wrote: > DRM_FORMAT_XRGB8888 aka XR24 is the modus francus of DRM, and should be > supported by all drivers. > > The handling for DRM_FORMAT_XRGB8888 is similar to DRM_FORMAT_ARGB8888, > just ignore the alpha channel. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 1 + > drivers/gpu/drm/shmobile/shmob_drm_kms.c | 5 +++++ > drivers/gpu/drm/shmobile/shmob_drm_plane.c | 5 +++++ > 3 files changed, 11 insertions(+) > > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c > index 713a7612244c647a..08dc1428aa16caf0 100644 > --- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c > +++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c > @@ -232,6 +232,7 @@ static void shmob_drm_crtc_start(struct shmob_drm_crtc *scrtc) > value = LDDDSR_LS | LDDDSR_WS | LDDDSR_BS; > break; > case DRM_FORMAT_ARGB8888: > + case DRM_FORMAT_XRGB8888: > default: > value = LDDDSR_LS; > break; > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_kms.c b/drivers/gpu/drm/shmobile/shmob_drm_kms.c > index 3c5fe3bc183c7c13..99381cc0abf3ae1f 100644 > --- a/drivers/gpu/drm/shmobile/shmob_drm_kms.c > +++ b/drivers/gpu/drm/shmobile/shmob_drm_kms.c > @@ -39,6 +39,11 @@ static const struct shmob_drm_format_info shmob_drm_format_infos[] = { > .bpp = 32, > .yuv = false, > .lddfr = LDDFR_PKF_ARGB32, > + }, { > + .fourcc = DRM_FORMAT_XRGB8888, > + .bpp = 32, > + .yuv = false, > + .lddfr = LDDFR_PKF_ARGB32, > }, { > .fourcc = DRM_FORMAT_NV12, > .bpp = 12, > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_plane.c b/drivers/gpu/drm/shmobile/shmob_drm_plane.c > index 604ae23825daaafd..850986cee848226a 100644 > --- a/drivers/gpu/drm/shmobile/shmob_drm_plane.c > +++ b/drivers/gpu/drm/shmobile/shmob_drm_plane.c > @@ -80,6 +80,7 @@ static void __shmob_drm_plane_setup(struct shmob_drm_plane *splane, > format |= LDBBSIFR_SWPL | LDBBSIFR_SWPW | LDBBSIFR_SWPB; > break; > case DRM_FORMAT_ARGB8888: > + case DRM_FORMAT_XRGB8888: > default: > format |= LDBBSIFR_SWPL; > break; > @@ -95,6 +96,9 @@ static void __shmob_drm_plane_setup(struct shmob_drm_plane *splane, > case DRM_FORMAT_ARGB8888: > format |= LDBBSIFR_AL_PK | LDBBSIFR_RY | LDDFR_PKF_ARGB32; > break; > + case DRM_FORMAT_XRGB8888: > + format |= LDBBSIFR_AL_1 | LDBBSIFR_RY | LDDFR_PKF_ARGB32; > + break; > case DRM_FORMAT_NV12: > case DRM_FORMAT_NV21: > format |= LDBBSIFR_AL_1 | LDBBSIFR_CHRR_420; > @@ -231,6 +235,7 @@ static const uint32_t formats[] = { > DRM_FORMAT_RGB565, > DRM_FORMAT_RGB888, > DRM_FORMAT_ARGB8888, > + DRM_FORMAT_XRGB8888, > DRM_FORMAT_NV12, > DRM_FORMAT_NV21, > DRM_FORMAT_NV16,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c index 713a7612244c647a..08dc1428aa16caf0 100644 --- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c +++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c @@ -232,6 +232,7 @@ static void shmob_drm_crtc_start(struct shmob_drm_crtc *scrtc) value = LDDDSR_LS | LDDDSR_WS | LDDDSR_BS; break; case DRM_FORMAT_ARGB8888: + case DRM_FORMAT_XRGB8888: default: value = LDDDSR_LS; break; diff --git a/drivers/gpu/drm/shmobile/shmob_drm_kms.c b/drivers/gpu/drm/shmobile/shmob_drm_kms.c index 3c5fe3bc183c7c13..99381cc0abf3ae1f 100644 --- a/drivers/gpu/drm/shmobile/shmob_drm_kms.c +++ b/drivers/gpu/drm/shmobile/shmob_drm_kms.c @@ -39,6 +39,11 @@ static const struct shmob_drm_format_info shmob_drm_format_infos[] = { .bpp = 32, .yuv = false, .lddfr = LDDFR_PKF_ARGB32, + }, { + .fourcc = DRM_FORMAT_XRGB8888, + .bpp = 32, + .yuv = false, + .lddfr = LDDFR_PKF_ARGB32, }, { .fourcc = DRM_FORMAT_NV12, .bpp = 12, diff --git a/drivers/gpu/drm/shmobile/shmob_drm_plane.c b/drivers/gpu/drm/shmobile/shmob_drm_plane.c index 604ae23825daaafd..850986cee848226a 100644 --- a/drivers/gpu/drm/shmobile/shmob_drm_plane.c +++ b/drivers/gpu/drm/shmobile/shmob_drm_plane.c @@ -80,6 +80,7 @@ static void __shmob_drm_plane_setup(struct shmob_drm_plane *splane, format |= LDBBSIFR_SWPL | LDBBSIFR_SWPW | LDBBSIFR_SWPB; break; case DRM_FORMAT_ARGB8888: + case DRM_FORMAT_XRGB8888: default: format |= LDBBSIFR_SWPL; break; @@ -95,6 +96,9 @@ static void __shmob_drm_plane_setup(struct shmob_drm_plane *splane, case DRM_FORMAT_ARGB8888: format |= LDBBSIFR_AL_PK | LDBBSIFR_RY | LDDFR_PKF_ARGB32; break; + case DRM_FORMAT_XRGB8888: + format |= LDBBSIFR_AL_1 | LDBBSIFR_RY | LDDFR_PKF_ARGB32; + break; case DRM_FORMAT_NV12: case DRM_FORMAT_NV21: format |= LDBBSIFR_AL_1 | LDBBSIFR_CHRR_420; @@ -231,6 +235,7 @@ static const uint32_t formats[] = { DRM_FORMAT_RGB565, DRM_FORMAT_RGB888, DRM_FORMAT_ARGB8888, + DRM_FORMAT_XRGB8888, DRM_FORMAT_NV12, DRM_FORMAT_NV21, DRM_FORMAT_NV16,
DRM_FORMAT_XRGB8888 aka XR24 is the modus francus of DRM, and should be supported by all drivers. The handling for DRM_FORMAT_XRGB8888 is similar to DRM_FORMAT_ARGB8888, just ignore the alpha channel. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> --- drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 1 + drivers/gpu/drm/shmobile/shmob_drm_kms.c | 5 +++++ drivers/gpu/drm/shmobile/shmob_drm_plane.c | 5 +++++ 3 files changed, 11 insertions(+)