[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v1 0/2] libxl: add PV display device driver interface



On Thu, Apr 6, 2017 at 4:03 PM, Ian Jackson <ian.jackson@xxxxxxxxxxxxx> wrote:
> Oleksandr Grytsov writes ("Re: [Xen-devel] [PATCH v1 0/2] libxl: add PV 
> display device driver interface"):
>> On Thu, Apr 6, 2017 at 2:17 PM, Ian Jackson <ian.jackson@xxxxxxxxxxxxx> 
>> wrote:
>> > Oleksandr Grytsov writes ("Re: [Xen-devel] [PATCH v1 0/2] libxl: add PV 
>> > display device driver interface"):
>> > I think at the very least the section "doms" there ought to be defined
>> > in the libxl configuration file.
>> >
>> > Is there any way (in the backend) of updating this backend
>> > configuration dynamically ?  If so then your libxl patch could take
>> > the per-domain configuration and update the backend config
>> > appropriately.
>>
>> I see your point. We can keep configuration either in local for
>> backend config file or in Xen store (by libxl/xl) which is more
>> common way. In case Xen store it is more convenient to keep it in
>> per-domain basis. Actually no need to update the config dynamically,
>> the backend can read Xen store configuration as well.
>>
>> We have to think about this approach.
>
> Right.  If this can be done, I think it would be much better.  Having
> the backend read xenstore would remove a layer of configuration
> management and simplify the design.
>
>> > I guess the z order is useful because either (i) the vdisplay protocol
>> > supports transparency, so a "front" vdisplay can decide which bits of
>> > a "rear" vdisplay show through or (ii) "front" vdisplays occlude
>> > "rear" vdisplays when the appropriate connection (backend/frontend) is
>> > in use, but the "rear" one shows through the rest of the time ?
>> >
>> > Am I right ?  If so, is it (i) or (ii) ?
>>
>> I guess it is to (ii). The protocol doesn't support transparency. In
>> case of vdisplays overlapping, z-order indicates which vdisplay
>> should be on top.
>
> Right.
>
> So that would be useful for a static configuration.
>
>> > Ideally, in this use case, one would write in the xl domain config
>> > file something like this:
>> >   vdisplays = ["output=HDMI1"]
>>
>> In DRM case connectors section from example is not relevant. And doms
>> section looks like:
>>     doms = (
>>         { name = "Dom1"; devId = 0; connectors = ["HDMI-A-0", "HDMI-B-0"]; },
>> Where HDMI-A-0, HDMI-B-0 names of physical DRM connectors.
>
> Right.  Sending this information to the backend via xenstore would a
> best I think.
>
>> >> 2. Wayland with Weston compositor:
>> >>
>> >> Weston can be launched with X11 or without. With X11 it is not so
>> >> usable case because Weston looks like a X11 application:
>> >> windowing system inside windowing system but it works.
>> >
>> > Right.  So in that case what is the function of the x/y locations
>> > specified in the backend configuration ?  If you have windowing-system
>> > within windowing-system then the location on the real screen is
>> > determined by the outer (host) windowing system, surely.
>>
>> In this case x/y locations just ignored. Window manager (Weston) decides how
>> to tile the vdisplays.
>
> Right.
>
>> >> So we use Weston without X11. Unfortunately Weston itself doesn't
>> >> allow us to configure
>> >> windows position layouts etc. For this purpose we use
>> >> wayland-ivi-extension and its layer management [1].
>> >> It allows to put windows at any position, order, screen etc.
>> >
>> > So this is for what is sometimes called "seamless" integration, where
>> > the individual guest applications each have their own window on the
>> > host display ?  Again, I don't see how this relates to the example
>> > backend configuration file you showed above.
>> >
>> > I would expect that in this configuration one would write in the xl
>> > domain config file something like
>> >   vdisplays=["output=wayland0,seamless"]
>>
>> Example:
>>
>> - host with backend has one display with 1024х768 resolution;
>> - there two domains (with name "Dom1", "Dom2") with frontends
>>   and they would like to share the screen like this: [][]
>> - in this case the example configuration will look like:
>>
>> doms = (
>>     { name = "Dom1"; devId = 0; connectors = ["display0"]; },
>>     { name = "Dom2"; devId = 0; connectors = ["display1"]; },
>> );
>> connectors = (
>>     { name = "display0"; screen = 0; x = 0; y = 0; w = 512; h = 768; z = 0; 
>> },
>>     { name = "display1"; screen = 0; x = 512; y = 0; w = 512 h = 768; z = 0; 
>> },
>> );
>
> But surely the outer window manager would want to move the individual
> guest windows about ?  How is that done ?  Again, the x/y coordinates
> in the backend configuration seem unhelpful.

We use wayland-ivi-extension in this case.  This is special Weston shell
and surfaces which can move, scale surfaces by ivi layer management.

https://github.com/GENIVI/wayland-ivi-extension
https://at.projects.genivi.org/wiki/display/WIE/01.+Quick+start

>> > Please forgive me if none of this seems to make sense...
>>
>> Your comments are valuable. I really appreciate it.
>
> You're welcome.  I hope that you don't mind me making all these rather
> design-level comments at this stage.
>
> I would suggest that before you go away and rework the code, it would
> be a good idea to come up with a sketch of the configuration flows,
> xenstore layouts, xl config file fragments, etc.
>
> Then we can discuss the best way to configure things, without having
> to iterate on a lot of code.

Great. I will do it in this way.

Thank you.

> Regards,
> Ian.



-- 
Best Regards,
Oleksandr Grytsov.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.