HWC Multimonitor work
Daniel van Vugt
daniel.van.vugt at canonical.com
Fri Dec 12 01:16:23 UTC 2014
So if you need separate display buffers but a single thread then what if
you just replaced MultiThreadedCompositor with a
SingleThreadedCompositor which does:
while (running)
{
wait for frame(s)
for each display buffer db
db->composite()
}
That will work providing you employ parallelism like in Mesa such that
you're never waiting on the next page flip inside composite(); only
waiting on the page flip of the previous frame. Although I think you're
pointing out already that Android isn't that flexible?...
Yet another option would be the compromise we have in X/Compiz right
now. Just sync to vblank on one output only (and accept tearing on all
the others).
On 12/12/14 03:03, Kevin DuBois wrote:
> @OverlappingOutputGroup
> The first goal is to have a clone mode, so the OverlappingOutputGroup
> could be a good trick. (We can't designate scanout of a sub-rectangle of
> a larger framebuffer surface in HWC though, so might be difficult)
>
> If we try to have different-content monitors that really don't overlap
> though, I'd want to present the DisplayBuffers as separate, so at some
> point in the future we'd have to give some hint or requirement from the
> platform to the server about what's the best way to drive the
> composition loop.
>
> Expounding on point 3) a bit more, a bit more input from the platform
> about how to run the loop would help robustify against drivers with
> weird fencing problems (which we've hit in bringup), as it aligns the
> compositor-drive-model that the drivers are best-tested with. We can
> also properly implement the HWC invalidate() callback (which, isnt used
> very often, but we currently just drop the request)
>
> @different refresh rate,
> If there are 2 sets inbetween the pageflips, the last one sticks for
> that display. IMO Mesa has thought about multimonitor better in its api,
> and 'don't break mesa's goodness" is a goal in accommodating HWC.
>
> On Wed, Dec 10, 2014 at 9:50 PM, Daniel van Vugt
> <daniel.van.vugt at canonical.com <mailto:daniel.van.vugt at canonical.com>>
> wrote:
>
> Even displays of the same refresh rate are a problem (see in
> X/Compiz where all but one of your displays will tear).
>
> In Mir (the DRM platform) we've solved this with parallel rendering
> while waiting for the previous page flips. Because if you have
> multiple monitors at the same refresh rate, the upper limit on time
> to wait for vsync on all of them is (asymptotically) double that of
> a single monitor.
>
> It's possible HWC could support such an approach, so long as we have
> the required triple-buffering in the compositor.
>
>
>
> On 11/12/14 10:31, Christopher James Halse Rogers wrote:
>
> On Thu, Dec 11, 2014 at 7:59 AM, Kevin DuBois
> <kevin.dubois at canonical.com <mailto:kevin.dubois at canonical.com>>
> wrote:
> …
>
>
> Details of why:
>
> HWC's prepare() and set() functions post to all the displays
> in one call.
>
>
> Incidentally, how does this work with displays of different refresh
> rate? Does HWC drop pending flips when a new flip is scheduled?
>
>
>
> --
> Mir-devel mailing list
> Mir-devel at lists.ubuntu.com <mailto:Mir-devel at lists.ubuntu.com>
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/__mailman/listinfo/mir-devel
> <https://lists.ubuntu.com/mailman/listinfo/mir-devel>
>
>
More information about the Mir-devel
mailing list