On 05/30/2012 04:45 PM, Lars-Peter Clausen wrote:
On 05/30/2012 02:32 PM, Laurent Pinchart wrote:
[...]
- for (i = 0; i < (format->yuv ? 2 : 1); ++i) {
obj = drm_gem_object_lookup(dev, file_priv,
mode_cmd->handles[i]);
if (obj == NULL) {
dev_dbg(dev->dev, "GEM object %u not found\n",
mode_cmd->handles[i]);
ret = -ENOENT;
goto error;
}
sfb->sobj[i] = to_shmob_gem_object(obj);
- }
I added multi-plane support the cma fb helper functions and it seems to work. But all other DRM drivers seem to assume that multi-plane formats still only have a single buffer, while yours seems to assume that there is a plane for each buffer. The exception is the Exynos driver, but it added a new set of formats which are identical to the other formats, but use one buffer per plane.
So I'm not sure how to implement this correctly in a generic fashion.
This post by Ville Syrjälä seems to explain it quite well: http://lists.freedesktop.org/archives/dri-devel/2012-April/021044.html