drm/omap: verify that fb plane pitches are the same
The DSS hardware uses the same ROW_INC value for both Y and UV planes for NV12 format. This means that the pitches of the Y and UV planes have to match. omapdrm doesn't check this at the moment, and this can lead into a broken NV12 fb on the screen. This patch adds the check. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
2158f2c7fe
commit
be4f235c43
|
@ -449,6 +449,14 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (i > 0 && pitch != mode_cmd->pitches[i - 1]) {
|
||||||
|
dev_err(dev->dev,
|
||||||
|
"pitches are not the same between framebuffer planes %d != %d\n",
|
||||||
|
pitch, mode_cmd->pitches[i - 1]);
|
||||||
|
ret = -EINVAL;
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
plane->bo = bos[i];
|
plane->bo = bos[i];
|
||||||
plane->offset = mode_cmd->offsets[i];
|
plane->offset = mode_cmd->offsets[i];
|
||||||
plane->pitch = pitch;
|
plane->pitch = pitch;
|
||||||
|
|
Loading…
Reference in New Issue