mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-12 08:48:48 +00:00
drm: rcar-du: Add more formats to DRM_MODE_BLEND_PIXEL_NONE support
Add additional pixel formats for which blending is disabled when 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@igel.co.jp> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
This commit is contained in:
parent
6e6c74a4de
commit
0dfcf80d41
@ -177,6 +177,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;
|
||||
}
|
||||
}
|
||||
|
||||
return fourcc;
|
||||
}
|
||||
|
||||
static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane)
|
||||
{
|
||||
struct rcar_du_vsp_plane_state *state =
|
||||
@ -190,7 +221,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;
|
||||
@ -207,22 +238,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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user