On Fri, Aug 04, 2023 at 02:53:17AM +0300, Laurent Pinchart wrote: > On Fri, Aug 04, 2023 at 02:47:04AM +0300, Laurent Pinchart wrote: > > Hi Damian, > > > > Thank you for the patch. > > > > On Fri, Jul 28, 2023 at 04:07:13PM -0400, Damian Hobson-Garcia wrote: > > > Add additional pixel formats for which blending is disabling when > > > > Did you mean "disabled" instead of "disabling" ? > > > > > DRM_MODE_BLEND_PIXEL_NONE is set. > > > > > > Refactor the fourcc selection into a separate function to handle the > > > increased number of formats. > > > > > > Signed-off-by: Damian Hobson-Garcia <dhobsong@xxxxxxxxxx> > > > --- > > > drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c | 49 ++++++++++++------- > > > 1 file changed, 32 insertions(+), 17 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c b/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c > > > index 45c05d0ffc70..96241c03b60f 100644 > > > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c > > > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_vsp.c > > > @@ -176,6 +176,37 @@ static const u32 rcar_du_vsp_formats_gen4[] = { > > > DRM_FORMAT_Y212, > > > }; > > > > > > +static u32 rcar_du_vsp_state_get_format(struct rcar_du_vsp_plane_state *state) > > > +{ > > > + u32 fourcc = state->format->fourcc; > > > + > > > + if (state->state.pixel_blend_mode == DRM_MODE_BLEND_PIXEL_NONE) { > > > + switch (fourcc) { > > > + case DRM_FORMAT_ARGB1555: > > > + fourcc = DRM_FORMAT_XRGB1555; > > > + break; > > > + > > > + case DRM_FORMAT_ARGB4444: > > > + fourcc = DRM_FORMAT_XRGB4444; > > > + break; > > > + > > > + case DRM_FORMAT_ARGB8888: > > > + fourcc = DRM_FORMAT_XRGB8888; > > > + break; > > > + > > > + case DRM_FORMAT_BGRA8888: > > > + fourcc = DRM_FORMAT_BGRX8888; > > > + break; > > > + > > > + case DRM_FORMAT_RGBA1010102: > > > + fourcc = DRM_FORMAT_RGBX1010102; > > > + break; > > > > Should DRM_FORMAT_ARGB2101010 be added as well, or did you leave it out > > intentionally ? > > It looks like DRM_FORMAT_ARGB2101010 will require a bit more work, as > DRM_FORMAT_XRGB2101010 is not handled by the DU driver at the moment. > Let's do so with a patch on top of this series. Replying to myself again, the datasheet doesn't explicitly list DRM_FORMAT_XRGB2101010 as supported, but the generic mechanism to specify the location of the components should work fine for that format. Is this something you would be able to test ? > There's no need to send > a v2, I can handle the simple change in the commit message if you let me > know whether my comment is right or wrong. > > > > + } > > > + } > > > + > > > + return fourcc; > > > +} > > > + > > > static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane) > > > { > > > struct rcar_du_vsp_plane_state *state = > > > @@ -189,7 +220,7 @@ static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane) > > > .alpha = state->state.alpha >> 8, > > > .zpos = state->state.zpos, > > > }; > > > - u32 fourcc = state->format->fourcc; > > > + u32 fourcc = rcar_du_vsp_state_get_format(state); > > > unsigned int i; > > > > > > cfg.src.left = state->state.src.x1 >> 16; > > > @@ -206,22 +237,6 @@ static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane) > > > cfg.mem[i] = sg_dma_address(state->sg_tables[i].sgl) > > > + fb->offsets[i]; > > > > > > - if (state->state.pixel_blend_mode == DRM_MODE_BLEND_PIXEL_NONE) { > > > - switch (fourcc) { > > > - case DRM_FORMAT_ARGB1555: > > > - fourcc = DRM_FORMAT_XRGB1555; > > > - break; > > > - > > > - case DRM_FORMAT_ARGB4444: > > > - fourcc = DRM_FORMAT_XRGB4444; > > > - break; > > > - > > > - case DRM_FORMAT_ARGB8888: > > > - fourcc = DRM_FORMAT_XRGB8888; > > > - break; > > > - } > > > - } > > > - > > > format = rcar_du_format_info(fourcc); > > > cfg.pixelformat = format->v4l2; > > > -- Regards, Laurent Pinchart