On Tue, Jul 26, 2016 at 03:46:32PM +0800, Mark Yao wrote:Yes, now it's plane hardware specific, maybe others have same design, because this design
>What is share plane:This seems extremely hw specific, why exactly do we need to add a new
>Plane hardware only be used when the display scanout run into plane active
>scanout, that means we can reuse the plane hardware resources on plane
>non-active scanout.
>
> --------------------------------------------------
> | scanout |
> | ------------------ |
> | | parent plane | |
> | | active scanout | |
> | | | ----------------- |
> | ------------------ | share plane 1 | |
> | ----------------- |active scanout | |
> | | share plane 0 | | | |
> | |active scanout | ----------------- |
> | | | |
> | ----------------- |
> --------------------------------------------------
>One plane hardware can be reuse for multi-planes, we assume the first
>plane is parent plane, other planes share the resource with first one.
> parent plane
> |---share plane 0
> |---share plane 1
> ...
>
>Because resource share, There are some limit on share plane: one group
>of share planes need use same zpos, can not overlap, etc.
>
>We assume share plane is a universal plane with some limit flags.
>people who use the share plane need know the limit, should call the ioctl
>DRM_CLIENT_CAP_SHARE_PLANES, and judge the planes limit before use it.
>
>A group of share planes would has same shard id, so userspace can
>group them, judge share plane's limit.
>
>Signed-off-by: Mark Yao<mark.yao@xxxxxxxxxxxxxx>
relationship on planes? What does this buy on_other_ drivers?
Imo this should be solved by virtualizing planes in the driver. Start outI think that is too complex, trying with atomic_check I think it's not a good idea, userspace try planes every commit would be a heavy work.
by assigning planes, and if you can reuse one for sharing then do that,
otherwise allocate a new one. If there's not enough real planes, fail the
atomic_check.
This seems way to hw specific to be useful as a generic concept.
-Daniel